@agent-native/core 0.103.1 → 0.104.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +30 -0
- package/corpus/core/package.json +9 -2
- package/corpus/core/src/agent/engine/credential-errors.ts +2 -2
- package/corpus/core/src/agent/production-agent.ts +30 -0
- package/corpus/core/src/agent/run-store.ts +12 -2
- package/corpus/core/src/cli/create.ts +1 -0
- package/corpus/core/src/cli/skills-content/visual-plan-skill.ts +30 -11
- package/corpus/core/src/cli/templates-meta.ts +4 -3
- package/corpus/core/src/client/AgentAskPopover.tsx +89 -0
- package/corpus/core/src/client/AgentChatHome.tsx +4 -0
- package/corpus/core/src/client/AgentPanel.tsx +321 -223
- package/corpus/core/src/client/AssistantChat.tsx +6 -10
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +53 -372
- package/corpus/core/src/client/agent-chat-adapter.ts +13 -1
- package/corpus/core/src/client/agent-page/AgentContextTab.tsx +133 -149
- package/corpus/core/src/client/agent-page/AgentEmptyState.tsx +44 -0
- package/corpus/core/src/client/agent-page/AgentJobsTab.tsx +153 -82
- package/corpus/core/src/client/agent-page/AgentTabFrame.tsx +39 -0
- package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +368 -356
- package/corpus/core/src/client/agent-page/types.ts +1 -1
- package/corpus/core/src/client/analytics.ts +51 -5
- package/corpus/core/src/client/chat/run-recovery.tsx +12 -4
- package/corpus/core/src/client/composer/PromptComposer.tsx +5 -15
- package/corpus/core/src/client/composer/TiptapComposer.tsx +32 -3
- package/corpus/core/src/client/dynamic-suggestions.ts +3 -3
- package/corpus/core/src/client/index.ts +16 -1
- package/corpus/core/src/client/resources/ResourceTree.tsx +249 -38
- package/corpus/core/src/client/resources/ResourcesPanel.tsx +307 -140
- package/corpus/core/src/client/session-replay.ts +158 -5
- package/corpus/core/src/client/settings/AutomationsSection.tsx +30 -10
- package/corpus/core/src/client/settings/SettingsPanel.tsx +3 -2
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +2 -0
- package/corpus/core/src/client/settings/agent-settings-search.ts +2 -2
- package/corpus/core/src/client/use-chat-threads.ts +2 -0
- package/corpus/core/src/connections/catalog.ts +49 -7
- package/corpus/core/src/db/index.ts +6 -1
- package/corpus/core/src/extensions/actions.ts +106 -16
- package/corpus/core/src/extensions/content-patch.ts +22 -0
- package/corpus/core/src/extensions/routes.ts +18 -0
- package/corpus/core/src/extensions/store.ts +8 -0
- package/corpus/core/src/index.ts +3 -0
- package/corpus/core/src/ingestion/docx.ts +158 -0
- package/corpus/core/src/ingestion/figma-node-to-html.ts +1860 -0
- package/corpus/core/src/ingestion/figma.ts +548 -0
- package/corpus/core/src/ingestion/index.ts +107 -0
- package/corpus/core/src/ingestion/media.ts +264 -0
- package/corpus/core/src/ingestion/notion.ts +121 -0
- package/corpus/core/src/ingestion/office.ts +214 -0
- package/corpus/core/src/ingestion/orchestration.ts +160 -0
- package/corpus/core/src/ingestion/pptx.ts +333 -0
- package/corpus/core/src/ingestion/selection.ts +81 -0
- package/corpus/core/src/ingestion/website.ts +151 -0
- package/corpus/core/src/integrations/plugin.ts +45 -37
- package/corpus/core/src/localization/default-messages.ts +35 -12
- package/corpus/core/src/observability/hosted-model-experiment.ts +118 -0
- package/corpus/core/src/observability/traces.ts +5 -3
- package/corpus/core/src/provider-api/index.ts +452 -8
- package/corpus/core/src/scripts/agent-engines/list-agent-engines.ts +18 -1
- package/corpus/core/src/search-utils/index.ts +112 -0
- package/corpus/core/src/secrets/register-framework-secrets.ts +61 -0
- package/corpus/core/src/server/action-discovery.ts +33 -8
- package/corpus/core/src/server/agent-chat/framework-prompts.ts +2 -2
- package/corpus/core/src/server/agent-chat/prompt-resources.ts +144 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +6 -0
- package/corpus/core/src/server/core-routes-plugin.ts +12 -0
- package/corpus/core/src/server/index.ts +30 -0
- package/corpus/core/src/server/workspace-provider-oauth.ts +583 -0
- package/corpus/core/src/styles/agent-native.css +9 -0
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +3 -3
- package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +14 -5
- package/corpus/core/src/templates/workspace-root/.env.example +12 -0
- package/corpus/core/src/workspace-connections/index.ts +6 -0
- package/corpus/core/src/workspace-connections/lifecycle.ts +43 -0
- package/corpus/core/src/workspace-connections/store.ts +16 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +46 -3
- package/corpus/templates/analytics/AGENTS.md +9 -0
- package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +120 -6
- package/corpus/templates/analytics/actions/mutate-dashboard.ts +92 -30
- package/corpus/templates/analytics/actions/update-dashboard.ts +5 -5
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +313 -220
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +2 -2
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +9 -6
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +90 -64
- package/corpus/templates/analytics/app/i18n-data.ts +3 -3
- package/corpus/templates/analytics/app/lib/dashboard-list-loading.ts +25 -0
- package/corpus/templates/analytics/app/lib/item-popularity.ts +13 -4
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/pivot.ts +8 -3
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +1 -0
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +15 -3
- package/corpus/templates/analytics/changelog/2026-07-16-dashboard-filter-defaults-can-now-be-changed-reliably-withou.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-16-dashboard-lists-load-in-one-stable-order-without-popping-bet.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-16-fixed-dashboard-filter-dropdown-text-alignment.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-16-recurring-signed-in-users-can-now-be-viewed-as-weekly-bars-b.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-16-the-analytics-agent-can-now-duplicate-a-chart-and-place-the-.md +6 -0
- package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +41 -1
- package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +1 -1
- package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +47 -1
- package/corpus/templates/analytics/server/lib/session-replay.ts +68 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +1 -0
- package/corpus/templates/analytics/server/routes/sessions/lookup.get.ts +47 -0
- package/corpus/templates/assets/.agents/skills/asset-generation/SKILL.md +16 -9
- package/corpus/templates/assets/.agents/skills/creative-context/SKILL.md +86 -0
- package/corpus/templates/assets/AGENTS.md +10 -0
- package/corpus/templates/assets/actions/create-generation-session.ts +59 -1
- package/corpus/templates/assets/actions/edit-image.ts +2 -0
- package/corpus/templates/assets/actions/generate-asset.ts +52 -0
- package/corpus/templates/assets/actions/generate-image-batch.ts +55 -0
- package/corpus/templates/assets/actions/generate-image.ts +219 -1
- package/corpus/templates/assets/actions/open-asset-picker.ts +14 -0
- package/corpus/templates/assets/actions/refine-image.ts +3 -0
- package/corpus/templates/assets/actions/restyle-image.ts +2 -0
- package/corpus/templates/assets/agent-native.app-skill.json +4 -0
- package/corpus/templates/assets/app/components/layout/Layout.tsx +2 -0
- package/corpus/templates/assets/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/assets/app/i18n-data.ts +29 -13
- package/corpus/templates/assets/app/routes/agent.tsx +7 -1
- package/corpus/templates/assets/app/routes/library.tsx +9 -0
- package/corpus/templates/assets/app/routes/settings.tsx +3 -0
- package/corpus/templates/assets/changelog/2026-07-16-creative-context-library.md +6 -0
- package/corpus/templates/assets/package.json +1 -0
- package/corpus/templates/assets/server/lib/image-processing.ts +1 -22
- package/corpus/templates/assets/server/plugins/creative-context.ts +205 -0
- package/corpus/templates/brain/app/i18n-data.ts +3 -3
- package/corpus/templates/brain/app/lib/brain.ts +1 -1
- package/corpus/templates/brain/server/lib/search.ts +17 -67
- package/corpus/templates/calendar/app/i18n-data.ts +3 -3
- package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +19 -18
- package/corpus/templates/chat/app/i18n/en-US.ts +3 -3
- package/corpus/templates/chat/app/lib/agent-page.tsx +10 -1
- package/corpus/templates/clips/.agents/skills/meetings/SKILL.md +1 -1
- package/corpus/templates/clips/AGENTS.md +4 -0
- package/corpus/templates/clips/actions/cleanup-transcript.ts +35 -4
- package/corpus/templates/clips/actions/create-meeting.ts +6 -2
- package/corpus/templates/clips/actions/create-organization.ts +3 -2
- package/corpus/templates/clips/actions/create-recording.ts +4 -1
- package/corpus/templates/clips/actions/finalize-recording.ts +44 -7
- package/corpus/templates/clips/actions/import-loom-recording.ts +4 -1
- package/corpus/templates/clips/actions/lib/create-recording-schema.ts +2 -2
- package/corpus/templates/clips/actions/list-meetings.ts +23 -5
- package/corpus/templates/clips/actions/list-organization-state.ts +1 -1
- package/corpus/templates/clips/actions/remove-silences.ts +10 -1
- package/corpus/templates/clips/actions/request-transcript.ts +53 -11
- package/corpus/templates/clips/actions/search-recordings-utils.ts +7 -0
- package/corpus/templates/clips/actions/search-recordings.ts +5 -8
- package/corpus/templates/clips/actions/set-organization-branding.ts +2 -2
- package/corpus/templates/clips/actions/stitch-recordings.ts +10 -5
- package/corpus/templates/clips/actions/update-ai-request-status.ts +38 -0
- package/corpus/templates/clips/app/components/editor/editor-layout.tsx +3 -4
- package/corpus/templates/clips/app/components/editor/editor-selection.ts +19 -0
- package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +10 -10
- package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +1 -2
- package/corpus/templates/clips/app/components/library/library-grid.tsx +101 -93
- package/corpus/templates/clips/app/components/player/video-player.tsx +11 -0
- package/corpus/templates/clips/app/components/workspace/branding-editor.tsx +53 -1
- package/corpus/templates/clips/app/i18n/ar-SA.ts +7 -1
- package/corpus/templates/clips/app/i18n/de-DE.ts +7 -1
- package/corpus/templates/clips/app/i18n/en-US.ts +10 -4
- package/corpus/templates/clips/app/i18n/es-ES.ts +7 -1
- package/corpus/templates/clips/app/i18n/fr-FR.ts +7 -1
- package/corpus/templates/clips/app/i18n/hi-IN.ts +7 -1
- package/corpus/templates/clips/app/i18n/ja-JP.ts +7 -1
- package/corpus/templates/clips/app/i18n/ko-KR.ts +7 -1
- package/corpus/templates/clips/app/i18n/pt-BR.ts +7 -1
- package/corpus/templates/clips/app/i18n/zh-CN.ts +6 -1
- package/corpus/templates/clips/app/i18n/zh-TW.ts +6 -1
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +5 -9
- package/corpus/templates/clips/app/routes/_app.settings.organization.tsx +6 -2
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +129 -27
- package/corpus/templates/clips/app/routes/record.tsx +23 -2
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +6 -2
- package/corpus/templates/clips/changelog/2026-07-16-authorized-viewers-can-open-shared-private-clips-without-a-m.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-camera-bubble-hover-controls-appear-above-the-face.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-chrome-extension-recovers-stale-recorder-state.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-clips-agent-chat-no-longer-shows-a-separate-workspace-header.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-clips-search-now-matches-recording-content-without-requiring.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-declined-meetings-no-longer-show-desktop-reminders.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-failed-desktop-saves-now-show-their-local-recovery-copy.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-long-desktop-clips-now-preserve-complete-playback-synced-aud.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-long-recording-lists-keep-stitch-and-library-actions-visible.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-organization-admins-can-choose-new-recording-visibility.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-remove-silences-now-shows-queued-active-completed-and-failed.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-settings-no-longer-repeats-the-builder-connection-status-in-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-transcripts-now-appear-from-native-browser-speech-sooner-wit.md +6 -0
- package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -1
- package/corpus/templates/clips/chrome-extension/src/background.ts +73 -1
- package/corpus/templates/clips/chrome-extension/src/native-recording-state.ts +32 -0
- package/corpus/templates/clips/chrome-extension/src/native-transcription.ts +248 -0
- package/corpus/templates/clips/chrome-extension/src/offscreen.ts +106 -0
- package/corpus/templates/clips/desktop/src/app.tsx +66 -28
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +335 -285
- package/corpus/templates/clips/desktop/src/lib/single-flight.ts +7 -0
- package/corpus/templates/clips/desktop/src/lib/upload-verification.ts +51 -0
- package/corpus/templates/clips/desktop/src/overlays/bubble.tsx +2 -2
- package/corpus/templates/clips/desktop/src/overlays/finalizing.tsx +10 -2
- package/corpus/templates/clips/desktop/src/styles.css +13 -11
- package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +8 -9
- package/corpus/templates/clips/desktop/src-tauri/src/meetings_watcher.rs +1 -0
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen/custom_capture.rs +88 -13
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen/live_upload.rs +13 -2
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +241 -6
- package/corpus/templates/clips/server/db/schema.ts +2 -2
- package/corpus/templates/clips/server/lib/builder-media-compression.ts +64 -67
- package/corpus/templates/clips/server/lib/calendar-event-classification.ts +19 -0
- package/corpus/templates/clips/server/lib/google-calendar-client.ts +1 -0
- package/corpus/templates/clips/server/lib/recordings.ts +40 -1
- package/corpus/templates/clips/server/plugins/agent-chat.ts +1 -0
- package/corpus/templates/clips/server/plugins/db.ts +2 -2
- package/corpus/templates/clips/server/routes/api/auth/google-calendar.get.ts +1 -1
- package/corpus/templates/clips/server/routes/api/public-recording.get.ts +14 -5
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +51 -1
- package/corpus/templates/clips/server/routes/api/video/[recordingId].get.ts +1 -64
- package/corpus/templates/clips/shared/media-worker-contract.ts +32 -15
- package/corpus/templates/content/.agents/skills/content/SKILL.md +16 -0
- package/corpus/templates/content/.agents/skills/creative-context/SKILL.md +85 -0
- package/corpus/templates/content/.agents/skills/notion-integration/SKILL.md +8 -0
- package/corpus/templates/content/AGENTS.md +9 -0
- package/corpus/templates/content/actions/create-document.ts +94 -0
- package/corpus/templates/content/actions/edit-document.ts +144 -4
- package/corpus/templates/content/actions/update-document.ts +138 -0
- package/corpus/templates/content/agent-native.app-skill.json +4 -0
- package/corpus/templates/content/app/components/layout/Layout.tsx +2 -0
- package/corpus/templates/content/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/content/app/i18n-data.ts +13 -4
- package/corpus/templates/content/app/routes/_app.agent.tsx +2 -1
- package/corpus/templates/content/app/routes/_app.settings.tsx +3 -0
- package/corpus/templates/content/changelog/2026-07-16-creative-context-library.md +6 -0
- package/corpus/templates/content/package.json +1 -0
- package/corpus/templates/content/server/plugins/creative-context.ts +31 -0
- package/corpus/templates/design/.agents/skills/creative-context/SKILL.md +116 -0
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +16 -0
- package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +8 -0
- package/corpus/templates/design/AGENTS.md +6 -0
- package/corpus/templates/design/actions/clone-creative-context-design.ts +176 -0
- package/corpus/templates/design/actions/edit-design.ts +128 -0
- package/corpus/templates/design/actions/generate-design.ts +278 -14
- package/corpus/templates/design/actions/generate-screens.ts +42 -1
- package/corpus/templates/design/agent-native.app-skill.json +4 -0
- package/corpus/templates/design/app/components/layout/Layout.tsx +7 -3
- package/corpus/templates/design/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/design/app/i18n-data.ts +10 -4
- package/corpus/templates/design/app/routes/agent.tsx +2 -1
- package/corpus/templates/design/app/routes/settings.tsx +3 -0
- package/corpus/templates/design/changelog/2026-07-16-creative-context-library.md +6 -0
- package/corpus/templates/design/changelog/2026-07-16-design-agent-chat-no-longer-shows-a-separate-workspace-header.md +6 -0
- package/corpus/templates/design/package.json +1 -0
- package/corpus/templates/design/server/lib/figma-design-context.ts +5 -335
- package/corpus/templates/design/server/lib/figma-node-to-html.ts +1 -1859
- package/corpus/templates/design/server/lib/import-design-files.ts +6 -8
- package/corpus/templates/design/server/plugins/creative-context.ts +31 -0
- package/corpus/templates/design/shared/generation-session.ts +7 -0
- package/corpus/templates/dispatch/app/i18n-data.ts +3 -3
- package/corpus/templates/forms/app/i18n/en-US.ts +3 -3
- package/corpus/templates/macros/app/i18n/en-US.ts +3 -3
- package/corpus/templates/mail/app/components/email/EmailThread.tsx +35 -5
- package/corpus/templates/mail/app/i18n/en-US.ts +3 -3
- package/corpus/templates/mail/changelog/2026-07-16-mail-previews-now-expand-to-show-the-full-message-without-an.md +6 -0
- package/corpus/templates/plan/.agents/skills/visual-plan/SKILL.md +30 -11
- package/corpus/templates/plan/AGENTS.md +21 -1
- package/corpus/templates/plan/actions/get-visual-plan.ts +1 -1
- package/corpus/templates/plan/actions/patch-visual-plan-source.ts +161 -0
- package/corpus/templates/plan/actions/read-visual-plan-source.ts +1 -1
- package/corpus/templates/plan/actions/update-visual-plan.ts +126 -10
- package/corpus/templates/plan/app/hooks/use-plans.ts +2 -0
- package/corpus/templates/plan/app/i18n/en-US.ts +3 -3
- package/corpus/templates/plan/app/pages/PlansPage.tsx +65 -62
- package/corpus/templates/plan/changelog/2026-07-16-local-plan-previews-now-load-annotations-containing-html-lik.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-16-plan-agents-now-prevent-stale-edits-from-overwriting-newer-p.md +6 -0
- package/corpus/templates/plan/server/plan-mdx.ts +75 -2
- package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +21 -4
- package/corpus/templates/slides/.agents/skills/creative-context/SKILL.md +122 -0
- package/corpus/templates/slides/.agents/skills/design-systems/SKILL.md +11 -0
- package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +12 -3
- package/corpus/templates/slides/AGENTS.md +6 -0
- package/corpus/templates/slides/actions/add-slide.ts +230 -14
- package/corpus/templates/slides/actions/clone-context-slide.ts +302 -0
- package/corpus/templates/slides/actions/create-deck.ts +130 -0
- package/corpus/templates/slides/actions/extract-pdf.ts +6 -2
- package/corpus/templates/slides/actions/import-file.ts +5 -4
- package/corpus/templates/slides/actions/patch-deck.ts +200 -10
- package/corpus/templates/slides/actions/update-slide.ts +208 -15
- package/corpus/templates/slides/app/components/layout/Layout.tsx +2 -0
- package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +16 -1
- package/corpus/templates/slides/app/i18n/ar-SA.ts +3 -0
- package/corpus/templates/slides/app/i18n/de-DE.ts +3 -0
- package/corpus/templates/slides/app/i18n/en-US.ts +6 -3
- package/corpus/templates/slides/app/i18n/es-ES.ts +3 -0
- package/corpus/templates/slides/app/i18n/fr-FR.ts +3 -0
- package/corpus/templates/slides/app/i18n/hi-IN.ts +3 -0
- package/corpus/templates/slides/app/i18n/ja-JP.ts +3 -0
- package/corpus/templates/slides/app/i18n/ko-KR.ts +3 -0
- package/corpus/templates/slides/app/i18n/pt-BR.ts +3 -0
- package/corpus/templates/slides/app/i18n/zh-CN.ts +3 -0
- package/corpus/templates/slides/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/slides/app/lib/validate-native-slide-html.ts +176 -0
- package/corpus/templates/slides/app/routes/agent.tsx +7 -1
- package/corpus/templates/slides/app/routes/settings.tsx +3 -0
- package/corpus/templates/slides/changelog/2026-07-16-creative-context-library.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-16-google-slides-native-cloning.md +6 -0
- package/corpus/templates/slides/package.json +1 -0
- package/corpus/templates/slides/server/handlers/import/docx-parser.ts +4 -85
- package/corpus/templates/slides/server/handlers/import/pptx-parser.ts +7 -421
- package/corpus/templates/slides/server/plugins/creative-context.ts +166 -0
- package/dist/agent/engine/credential-errors.d.ts +1 -1
- package/dist/agent/engine/credential-errors.d.ts.map +1 -1
- package/dist/agent/engine/credential-errors.js +2 -2
- package/dist/agent/engine/credential-errors.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +25 -0
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +12 -2
- package/dist/agent/run-store.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +1 -0
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/skills-content/visual-plan-skill.d.ts +1 -1
- package/dist/cli/skills-content/visual-plan-skill.d.ts.map +1 -1
- package/dist/cli/skills-content/visual-plan-skill.js +30 -11
- package/dist/cli/skills-content/visual-plan-skill.js.map +1 -1
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +4 -3
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/client/AgentAskPopover.d.ts +11 -0
- package/dist/client/AgentAskPopover.d.ts.map +1 -0
- package/dist/client/AgentAskPopover.js +30 -0
- package/dist/client/AgentAskPopover.js.map +1 -0
- package/dist/client/AgentChatHome.d.ts +1 -1
- package/dist/client/AgentChatHome.d.ts.map +1 -1
- package/dist/client/AgentChatHome.js +2 -2
- package/dist/client/AgentChatHome.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +9 -19
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +119 -80
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +4 -4
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts +3 -9
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +49 -189
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +12 -1
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/agent-page/AgentContextTab.d.ts.map +1 -1
- package/dist/client/agent-page/AgentContextTab.js +26 -28
- package/dist/client/agent-page/AgentContextTab.js.map +1 -1
- package/dist/client/agent-page/AgentEmptyState.d.ts +13 -0
- package/dist/client/agent-page/AgentEmptyState.d.ts.map +1 -0
- package/dist/client/agent-page/AgentEmptyState.js +6 -0
- package/dist/client/agent-page/AgentEmptyState.js.map +1 -0
- package/dist/client/agent-page/AgentJobsTab.d.ts +1 -1
- package/dist/client/agent-page/AgentJobsTab.d.ts.map +1 -1
- package/dist/client/agent-page/AgentJobsTab.js +90 -58
- package/dist/client/agent-page/AgentJobsTab.js.map +1 -1
- package/dist/client/agent-page/AgentTabFrame.d.ts +12 -0
- package/dist/client/agent-page/AgentTabFrame.d.ts.map +1 -0
- package/dist/client/agent-page/AgentTabFrame.js +7 -0
- package/dist/client/agent-page/AgentTabFrame.js.map +1 -0
- package/dist/client/agent-page/AgentTabsPage.d.ts +9 -1
- package/dist/client/agent-page/AgentTabsPage.d.ts.map +1 -1
- package/dist/client/agent-page/AgentTabsPage.js +135 -99
- package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
- package/dist/client/agent-page/types.d.ts +1 -1
- package/dist/client/agent-page/types.d.ts.map +1 -1
- package/dist/client/agent-page/types.js.map +1 -1
- package/dist/client/analytics.d.ts +10 -3
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +37 -2
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/chat/run-recovery.d.ts.map +1 -1
- package/dist/client/chat/run-recovery.js +10 -3
- package/dist/client/chat/run-recovery.js.map +1 -1
- package/dist/client/composer/PromptComposer.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.js +2 -2
- package/dist/client/composer/PromptComposer.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +15 -3
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/dynamic-suggestions.js +3 -3
- package/dist/client/dynamic-suggestions.js.map +1 -1
- package/dist/client/index.d.ts +4 -3
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +3 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/resources/ResourceTree.d.ts +5 -1
- package/dist/client/resources/ResourceTree.d.ts.map +1 -1
- package/dist/client/resources/ResourceTree.js +74 -5
- package/dist/client/resources/ResourceTree.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts +11 -2
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +105 -31
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/session-replay.d.ts +28 -0
- package/dist/client/session-replay.d.ts.map +1 -1
- package/dist/client/session-replay.js +122 -8
- package/dist/client/session-replay.js.map +1 -1
- package/dist/client/settings/AutomationsSection.d.ts +3 -1
- package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
- package/dist/client/settings/AutomationsSection.js +16 -6
- package/dist/client/settings/AutomationsSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +3 -3
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts +2 -0
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/client/settings/agent-settings-search.js +2 -2
- package/dist/client/settings/agent-settings-search.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts +2 -0
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/connections/catalog.d.ts +41 -7
- package/dist/connections/catalog.d.ts.map +1 -1
- package/dist/connections/catalog.js +40 -7
- package/dist/connections/catalog.js.map +1 -1
- package/dist/db/index.d.ts +2 -2
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +2 -2
- package/dist/db/index.js.map +1 -1
- package/dist/extensions/actions.d.ts.map +1 -1
- package/dist/extensions/actions.js +85 -15
- package/dist/extensions/actions.js.map +1 -1
- package/dist/extensions/content-patch.d.ts +4 -0
- package/dist/extensions/content-patch.d.ts.map +1 -1
- package/dist/extensions/content-patch.js +18 -0
- package/dist/extensions/content-patch.js.map +1 -1
- package/dist/extensions/routes.d.ts.map +1 -1
- package/dist/extensions/routes.js +14 -0
- package/dist/extensions/routes.js.map +1 -1
- package/dist/extensions/store.d.ts +1 -0
- package/dist/extensions/store.d.ts.map +1 -1
- package/dist/extensions/store.js +4 -1
- package/dist/extensions/store.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ingestion/docx.d.ts +16 -0
- package/dist/ingestion/docx.d.ts.map +1 -0
- package/dist/ingestion/docx.js +129 -0
- package/dist/ingestion/docx.js.map +1 -0
- package/dist/ingestion/figma-node-to-html.d.ts +304 -0
- package/dist/ingestion/figma-node-to-html.d.ts.map +1 -0
- package/dist/ingestion/figma-node-to-html.js +1292 -0
- package/dist/ingestion/figma-node-to-html.js.map +1 -0
- package/dist/ingestion/figma.d.ts +115 -0
- package/dist/ingestion/figma.d.ts.map +1 -0
- package/dist/ingestion/figma.js +399 -0
- package/dist/ingestion/figma.js.map +1 -0
- package/dist/ingestion/index.d.ts +11 -0
- package/dist/ingestion/index.d.ts.map +1 -0
- package/dist/ingestion/index.js +11 -0
- package/dist/ingestion/index.js.map +1 -0
- package/dist/ingestion/media.d.ts +36 -0
- package/dist/ingestion/media.d.ts.map +1 -0
- package/dist/ingestion/media.js +178 -0
- package/dist/ingestion/media.js.map +1 -0
- package/dist/ingestion/notion.d.ts +12 -0
- package/dist/ingestion/notion.d.ts.map +1 -0
- package/dist/ingestion/notion.js +104 -0
- package/dist/ingestion/notion.js.map +1 -0
- package/dist/ingestion/office.d.ts +45 -0
- package/dist/ingestion/office.d.ts.map +1 -0
- package/dist/ingestion/office.js +141 -0
- package/dist/ingestion/office.js.map +1 -0
- package/dist/ingestion/orchestration.d.ts +52 -0
- package/dist/ingestion/orchestration.d.ts.map +1 -0
- package/dist/ingestion/orchestration.js +89 -0
- package/dist/ingestion/orchestration.js.map +1 -0
- package/dist/ingestion/pptx.d.ts +28 -0
- package/dist/ingestion/pptx.d.ts.map +1 -0
- package/dist/ingestion/pptx.js +255 -0
- package/dist/ingestion/pptx.js.map +1 -0
- package/dist/ingestion/selection.d.ts +20 -0
- package/dist/ingestion/selection.d.ts.map +1 -0
- package/dist/ingestion/selection.js +52 -0
- package/dist/ingestion/selection.js.map +1 -0
- package/dist/ingestion/website.d.ts +27 -0
- package/dist/ingestion/website.d.ts.map +1 -0
- package/dist/ingestion/website.js +100 -0
- package/dist/ingestion/website.js.map +1 -0
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +32 -27
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/localization/default-messages.d.ts +22 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +31 -9
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/observability/hosted-model-experiment.d.ts +39 -0
- package/dist/observability/hosted-model-experiment.d.ts.map +1 -0
- package/dist/observability/hosted-model-experiment.js +90 -0
- package/dist/observability/hosted-model-experiment.js.map +1 -0
- package/dist/observability/traces.d.ts.map +1 -1
- package/dist/observability/traces.js +5 -3
- package/dist/observability/traces.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/index.d.ts +35 -4
- package/dist/provider-api/index.d.ts.map +1 -1
- package/dist/provider-api/index.js +339 -8
- package/dist/provider-api/index.js.map +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.js +18 -1
- package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
- package/dist/search-utils/index.d.ts +12 -0
- package/dist/search-utils/index.d.ts.map +1 -0
- package/dist/search-utils/index.js +95 -0
- package/dist/search-utils/index.js.map +1 -0
- package/dist/secrets/register-framework-secrets.d.ts.map +1 -1
- package/dist/secrets/register-framework-secrets.js +57 -0
- package/dist/secrets/register-framework-secrets.js.map +1 -1
- package/dist/server/action-discovery.d.ts +8 -0
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +26 -9
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/agent-chat/framework-prompts.js +2 -2
- package/dist/server/agent-chat/framework-prompts.js.map +1 -1
- package/dist/server/agent-chat/prompt-resources.d.ts +19 -0
- package/dist/server/agent-chat/prompt-resources.d.ts.map +1 -1
- package/dist/server/agent-chat/prompt-resources.js +95 -0
- package/dist/server/agent-chat/prompt-resources.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +7 -0
- 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/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +5 -0
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/index.d.ts +5 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +5 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/workspace-provider-oauth.d.ts +48 -0
- package/dist/server/workspace-provider-oauth.d.ts.map +1 -0
- package/dist/server/workspace-provider-oauth.js +415 -0
- package/dist/server/workspace-provider-oauth.js.map +1 -0
- package/dist/styles/agent-native.css +9 -0
- package/dist/templates/chat/app/i18n/en-US.ts +3 -3
- package/dist/templates/chat/app/lib/agent-page.tsx +10 -1
- package/dist/templates/default/app/i18n/en-US.ts +3 -3
- package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +14 -5
- package/dist/templates/workspace-root/.env.example +12 -0
- package/dist/workspace-connections/index.d.ts +1 -0
- package/dist/workspace-connections/index.d.ts.map +1 -1
- package/dist/workspace-connections/index.js +1 -0
- package/dist/workspace-connections/index.js.map +1 -1
- package/dist/workspace-connections/lifecycle.d.ts +16 -0
- package/dist/workspace-connections/lifecycle.d.ts.map +1 -0
- package/dist/workspace-connections/lifecycle.js +14 -0
- package/dist/workspace-connections/lifecycle.js.map +1 -0
- package/dist/workspace-connections/store.d.ts.map +1 -1
- package/dist/workspace-connections/store.js +16 -0
- package/dist/workspace-connections/store.js.map +1 -1
- package/package.json +10 -3
- package/src/templates/chat/app/i18n/en-US.ts +3 -3
- package/src/templates/chat/app/lib/agent-page.spec.tsx +10 -1
- package/src/templates/chat/app/lib/agent-page.tsx +10 -1
- package/src/templates/default/app/i18n/en-US.ts +3 -3
- package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +14 -5
- package/src/templates/workspace-root/.env.example +12 -0
|
@@ -117,6 +117,56 @@ const CHART_LEGEND_PROPS = {
|
|
|
117
117
|
wrapperStyle: CHART_LEGEND_WRAPPER_STYLE,
|
|
118
118
|
} as const;
|
|
119
119
|
|
|
120
|
+
const CHART_RESIZE_DEBOUNCE_MS = 50;
|
|
121
|
+
|
|
122
|
+
type ChartSize = {
|
|
123
|
+
width: number;
|
|
124
|
+
height: number;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
export function hasChartSizeChanged(
|
|
128
|
+
previous: ChartSize | null,
|
|
129
|
+
next: ChartSize,
|
|
130
|
+
): boolean {
|
|
131
|
+
return (
|
|
132
|
+
previous !== null &&
|
|
133
|
+
(previous.width !== next.width || previous.height !== next.height)
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function useChartResizeAnimation() {
|
|
138
|
+
const [isAnimationActive, setIsAnimationActive] = useState(true);
|
|
139
|
+
const firstSizeRef = useRef<ChartSize | null>(null);
|
|
140
|
+
const handleResize = useCallback((width: number, height: number) => {
|
|
141
|
+
const nextSize = { width, height };
|
|
142
|
+
if (hasChartSizeChanged(firstSizeRef.current, nextSize)) {
|
|
143
|
+
setIsAnimationActive(false);
|
|
144
|
+
}
|
|
145
|
+
firstSizeRef.current = nextSize;
|
|
146
|
+
}, []);
|
|
147
|
+
|
|
148
|
+
return { isAnimationActive, handleResize };
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function ChartResponsiveContainer({
|
|
152
|
+
children,
|
|
153
|
+
}: {
|
|
154
|
+
children: (isAnimationActive: boolean) => ReactNode;
|
|
155
|
+
}) {
|
|
156
|
+
const { isAnimationActive, handleResize } = useChartResizeAnimation();
|
|
157
|
+
|
|
158
|
+
return (
|
|
159
|
+
<ResponsiveContainer
|
|
160
|
+
width="100%"
|
|
161
|
+
height="100%"
|
|
162
|
+
debounce={CHART_RESIZE_DEBOUNCE_MS}
|
|
163
|
+
onResize={handleResize}
|
|
164
|
+
>
|
|
165
|
+
{children(isAnimationActive)}
|
|
166
|
+
</ResponsiveContainer>
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
120
170
|
const PARTIAL_DAY_TIME_ZONE = "America/Los_Angeles";
|
|
121
171
|
const PARTIAL_DAY_DASH = "3 5";
|
|
122
172
|
const PARTIAL_DAY_KEY_PREFIX = "__sql_chart_partial_day";
|
|
@@ -515,6 +565,7 @@ export function SeriesLegend({
|
|
|
515
565
|
const hasLegendActions = Boolean(onToggleKey || onFilterKey);
|
|
516
566
|
const [openKey, setOpenKey] = useState<string | null>(null);
|
|
517
567
|
const closeTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
568
|
+
const skipNextTouchToggleRef = useRef(false);
|
|
518
569
|
|
|
519
570
|
const clearCloseTimeout = useCallback(() => {
|
|
520
571
|
if (closeTimeoutRef.current) {
|
|
@@ -536,7 +587,7 @@ export function SeriesLegend({
|
|
|
536
587
|
closeTimeoutRef.current = setTimeout(() => {
|
|
537
588
|
setOpenKey(null);
|
|
538
589
|
closeTimeoutRef.current = null;
|
|
539
|
-
},
|
|
590
|
+
}, 200);
|
|
540
591
|
}, [clearCloseTimeout]);
|
|
541
592
|
|
|
542
593
|
useEffect(() => () => clearCloseTimeout(), [clearCloseTimeout]);
|
|
@@ -558,13 +609,27 @@ export function SeriesLegend({
|
|
|
558
609
|
>
|
|
559
610
|
<PopoverAnchor asChild>
|
|
560
611
|
<div
|
|
561
|
-
className="inline-flex max-w-[14rem]"
|
|
562
|
-
|
|
563
|
-
hasLegendActions
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
612
|
+
className="inline-flex min-h-10 max-w-[14rem] items-center"
|
|
613
|
+
onPointerDown={(event) => {
|
|
614
|
+
if (!hasLegendActions || event.pointerType === "mouse") {
|
|
615
|
+
return;
|
|
616
|
+
}
|
|
617
|
+
skipNextTouchToggleRef.current = true;
|
|
618
|
+
openLegendActions(key);
|
|
619
|
+
}}
|
|
620
|
+
onPointerCancel={() => {
|
|
621
|
+
skipNextTouchToggleRef.current = false;
|
|
622
|
+
}}
|
|
623
|
+
onPointerEnter={(event) => {
|
|
624
|
+
if (hasLegendActions && event.pointerType !== "touch") {
|
|
625
|
+
openLegendActions(key);
|
|
626
|
+
}
|
|
627
|
+
}}
|
|
628
|
+
onPointerLeave={(event) => {
|
|
629
|
+
if (hasLegendActions && event.pointerType !== "touch") {
|
|
630
|
+
scheduleCloseLegendActions();
|
|
631
|
+
}
|
|
632
|
+
}}
|
|
568
633
|
onFocusCapture={
|
|
569
634
|
hasLegendActions ? () => openLegendActions(key) : undefined
|
|
570
635
|
}
|
|
@@ -575,11 +640,22 @@ export function SeriesLegend({
|
|
|
575
640
|
<button
|
|
576
641
|
type="button"
|
|
577
642
|
aria-pressed={!hidden}
|
|
578
|
-
|
|
643
|
+
aria-expanded={
|
|
644
|
+
hasLegendActions ? openKey === key : undefined
|
|
645
|
+
}
|
|
646
|
+
aria-haspopup={hasLegendActions ? "menu" : undefined}
|
|
647
|
+
data-chart-legend-item={key}
|
|
648
|
+
className={`inline-flex min-h-10 max-w-[14rem] min-w-0 items-center gap-1.5 rounded-md px-1.5 text-left transition-[opacity,color] touch-manipulation hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring ${
|
|
579
649
|
hidden ? "opacity-35" : "opacity-100"
|
|
580
650
|
} ${onToggleKey ? "cursor-pointer" : "cursor-default"}`}
|
|
581
651
|
title={label}
|
|
582
|
-
onClick={() =>
|
|
652
|
+
onClick={() => {
|
|
653
|
+
if (skipNextTouchToggleRef.current) {
|
|
654
|
+
skipNextTouchToggleRef.current = false;
|
|
655
|
+
return;
|
|
656
|
+
}
|
|
657
|
+
onToggleKey?.(key);
|
|
658
|
+
}}
|
|
583
659
|
>
|
|
584
660
|
<span className="relative h-2.5 w-3 shrink-0">
|
|
585
661
|
<span
|
|
@@ -598,20 +674,21 @@ export function SeriesLegend({
|
|
|
598
674
|
{hasLegendActions && (
|
|
599
675
|
<PopoverContent
|
|
600
676
|
side="top"
|
|
601
|
-
align="
|
|
602
|
-
sideOffset={
|
|
603
|
-
|
|
677
|
+
align="center"
|
|
678
|
+
sideOffset={8}
|
|
679
|
+
collisionPadding={12}
|
|
680
|
+
className="w-56 max-w-[calc(100vw-1.5rem)] rounded-lg p-1.5 shadow-lg"
|
|
604
681
|
onPointerEnter={clearCloseTimeout}
|
|
605
682
|
onPointerLeave={scheduleCloseLegendActions}
|
|
606
683
|
onFocusCapture={clearCloseTimeout}
|
|
607
684
|
>
|
|
608
|
-
<div className="flex items-center gap-
|
|
685
|
+
<div className="flex w-full items-center gap-1">
|
|
609
686
|
{onFilterKey && (
|
|
610
687
|
<button
|
|
611
688
|
type="button"
|
|
612
689
|
data-chart-legend-action="filter"
|
|
613
690
|
aria-label={`${t("sqlDashboard.filterSeries")} ${label}`}
|
|
614
|
-
className="rounded-
|
|
691
|
+
className="min-h-11 min-w-0 flex-1 rounded-md px-3 py-2 text-xs font-medium whitespace-nowrap text-popover-foreground outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground"
|
|
615
692
|
onClick={() => {
|
|
616
693
|
onFilterKey(key);
|
|
617
694
|
setOpenKey(null);
|
|
@@ -626,7 +703,7 @@ export function SeriesLegend({
|
|
|
626
703
|
data-chart-legend-action="hide"
|
|
627
704
|
aria-label={`${t("sqlDashboard.hide")} ${label}`}
|
|
628
705
|
disabled={hidden}
|
|
629
|
-
className="rounded-
|
|
706
|
+
className="min-h-11 min-w-0 flex-1 rounded-md px-3 py-2 text-xs font-medium whitespace-nowrap text-popover-foreground outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground disabled:pointer-events-none disabled:opacity-40"
|
|
630
707
|
onClick={() => {
|
|
631
708
|
onToggleKey(key);
|
|
632
709
|
setOpenKey(null);
|
|
@@ -1150,11 +1227,13 @@ export function SqlChart({
|
|
|
1150
1227
|
|
|
1151
1228
|
const { rows: queryRows, forcedYKeys } = useMemo(() => {
|
|
1152
1229
|
if (panel.config?.pivot && rawRows.length) {
|
|
1153
|
-
const pivoted = pivotRows(rawRows, panel.config.pivot
|
|
1230
|
+
const pivoted = pivotRows(rawRows, panel.config.pivot, {
|
|
1231
|
+
fillDateGaps: panel.chartType !== "bar",
|
|
1232
|
+
});
|
|
1154
1233
|
return { rows: pivoted.rows, forcedYKeys: pivoted.seriesKeys };
|
|
1155
1234
|
}
|
|
1156
1235
|
return { rows: rawRows, forcedYKeys: undefined };
|
|
1157
|
-
}, [rawRows, panel.config?.pivot]);
|
|
1236
|
+
}, [rawRows, panel.chartType, panel.config?.pivot]);
|
|
1158
1237
|
|
|
1159
1238
|
const { xKey, yKeys } = useMemo(
|
|
1160
1239
|
() => detectKeys(queryRows, panel.config, forcedYKeys),
|
|
@@ -1792,41 +1871,44 @@ function PieRenderer({
|
|
|
1792
1871
|
|
|
1793
1872
|
return (
|
|
1794
1873
|
<ChartFrame panel={panel} legendKeys={legendKeys} colors={colors}>
|
|
1795
|
-
<
|
|
1796
|
-
|
|
1797
|
-
<
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1874
|
+
<ChartResponsiveContainer>
|
|
1875
|
+
{(isAnimationActive) => (
|
|
1876
|
+
<PieChart>
|
|
1877
|
+
<Pie
|
|
1878
|
+
data={rows}
|
|
1879
|
+
dataKey={yKey}
|
|
1880
|
+
nameKey={xKey}
|
|
1881
|
+
cx="50%"
|
|
1882
|
+
cy="50%"
|
|
1883
|
+
outerRadius={80}
|
|
1884
|
+
label={(props: any) =>
|
|
1885
|
+
`${seriesNameFormatter(String(props.name))} ${((props.percent ?? 0) * 100).toFixed(0)}%`
|
|
1886
|
+
}
|
|
1887
|
+
labelLine={false}
|
|
1888
|
+
isAnimationActive={isAnimationActive}
|
|
1889
|
+
>
|
|
1890
|
+
{rows.map((_, i) => (
|
|
1891
|
+
<Cell key={i} fill={colors[i % colors.length]} />
|
|
1892
|
+
))}
|
|
1893
|
+
</Pie>
|
|
1894
|
+
<Tooltip
|
|
1895
|
+
{...CHART_TOOLTIP_PROPS}
|
|
1896
|
+
content={
|
|
1897
|
+
<ChartTooltip
|
|
1898
|
+
seriesNameFormatter={seriesNameFormatter}
|
|
1899
|
+
valueFormatter={(v) =>
|
|
1900
|
+
formatYValue(v, panel.config?.yFormatter)
|
|
1901
|
+
}
|
|
1902
|
+
/>
|
|
1903
|
+
}
|
|
1904
|
+
/>
|
|
1905
|
+
{!usesPrometheusPresentation(panel) &&
|
|
1906
|
+
shouldShowLegend(panel, rows.length) && (
|
|
1907
|
+
<Legend {...CHART_LEGEND_PROPS} />
|
|
1908
|
+
)}
|
|
1909
|
+
</PieChart>
|
|
1910
|
+
)}
|
|
1911
|
+
</ChartResponsiveContainer>
|
|
1830
1912
|
</ChartFrame>
|
|
1831
1913
|
);
|
|
1832
1914
|
}
|
|
@@ -1864,56 +1946,59 @@ function BarRenderer({
|
|
|
1864
1946
|
onFilterLegendKey={filterSeries}
|
|
1865
1947
|
showCustomLegend
|
|
1866
1948
|
>
|
|
1867
|
-
<
|
|
1868
|
-
|
|
1869
|
-
<
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
itemSorter={(item) => -(Number(item.value) || 0)}
|
|
1901
|
-
/>
|
|
1902
|
-
{yKeys.map((key, i) => (
|
|
1903
|
-
<Bar
|
|
1904
|
-
key={key}
|
|
1905
|
-
dataKey={key}
|
|
1906
|
-
name={seriesNameFormatter(key)}
|
|
1907
|
-
fill={colors[i % colors.length]}
|
|
1908
|
-
radius={
|
|
1909
|
-
stacked && i < yKeys.length - 1 ? [0, 0, 0, 0] : [4, 4, 0, 0]
|
|
1949
|
+
<ChartResponsiveContainer>
|
|
1950
|
+
{(isAnimationActive) => (
|
|
1951
|
+
<BarChart data={rows}>
|
|
1952
|
+
<XAxis
|
|
1953
|
+
dataKey={xKey}
|
|
1954
|
+
stroke="hsl(var(--muted-foreground))"
|
|
1955
|
+
fontSize={12}
|
|
1956
|
+
tickLine={false}
|
|
1957
|
+
axisLine={false}
|
|
1958
|
+
tickFormatter={xLabelFormatter}
|
|
1959
|
+
/>
|
|
1960
|
+
<YAxis
|
|
1961
|
+
stroke="hsl(var(--muted-foreground))"
|
|
1962
|
+
fontSize={12}
|
|
1963
|
+
tickLine={false}
|
|
1964
|
+
axisLine={false}
|
|
1965
|
+
tickFormatter={(v) => formatYValue(v, yFormatter)}
|
|
1966
|
+
/>
|
|
1967
|
+
<CartesianGrid
|
|
1968
|
+
strokeDasharray="3 3"
|
|
1969
|
+
stroke="hsl(var(--border))"
|
|
1970
|
+
vertical={false}
|
|
1971
|
+
/>
|
|
1972
|
+
<Tooltip
|
|
1973
|
+
{...CHART_TOOLTIP_PROPS}
|
|
1974
|
+
cursor={BAR_TOOLTIP_CURSOR_PROPS}
|
|
1975
|
+
labelFormatter={xLabelFormatter}
|
|
1976
|
+
content={
|
|
1977
|
+
<ChartTooltip
|
|
1978
|
+
labelFormatter={xLabelFormatter}
|
|
1979
|
+
seriesNameFormatter={seriesNameFormatter}
|
|
1980
|
+
valueFormatter={(v) => formatYValue(v, yFormatter)}
|
|
1981
|
+
/>
|
|
1910
1982
|
}
|
|
1911
|
-
|
|
1912
|
-
hide={hiddenKeys.has(key)}
|
|
1983
|
+
itemSorter={(item) => -(Number(item.value) || 0)}
|
|
1913
1984
|
/>
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1985
|
+
{yKeys.map((key, i) => (
|
|
1986
|
+
<Bar
|
|
1987
|
+
key={key}
|
|
1988
|
+
dataKey={key}
|
|
1989
|
+
name={seriesNameFormatter(key)}
|
|
1990
|
+
fill={colors[i % colors.length]}
|
|
1991
|
+
radius={
|
|
1992
|
+
stacked && i < yKeys.length - 1 ? [0, 0, 0, 0] : [4, 4, 0, 0]
|
|
1993
|
+
}
|
|
1994
|
+
stackId={stacked ? "stack" : undefined}
|
|
1995
|
+
hide={hiddenKeys.has(key)}
|
|
1996
|
+
isAnimationActive={isAnimationActive}
|
|
1997
|
+
/>
|
|
1998
|
+
))}
|
|
1999
|
+
</BarChart>
|
|
2000
|
+
)}
|
|
2001
|
+
</ChartResponsiveContainer>
|
|
1917
2002
|
</ChartFrame>
|
|
1918
2003
|
);
|
|
1919
2004
|
}
|
|
@@ -1970,8 +2055,120 @@ function TimeSeriesRenderer({
|
|
|
1970
2055
|
onFilterLegendKey={filterSeries}
|
|
1971
2056
|
showCustomLegend
|
|
1972
2057
|
>
|
|
1973
|
-
<
|
|
1974
|
-
|
|
2058
|
+
<ChartResponsiveContainer>
|
|
2059
|
+
{(isAnimationActive) => (
|
|
2060
|
+
<LineChart data={chartRows}>
|
|
2061
|
+
<XAxis
|
|
2062
|
+
dataKey={xKey}
|
|
2063
|
+
stroke="hsl(var(--muted-foreground))"
|
|
2064
|
+
fontSize={12}
|
|
2065
|
+
tickLine={false}
|
|
2066
|
+
axisLine={false}
|
|
2067
|
+
tickFormatter={xLabelFormatter}
|
|
2068
|
+
/>
|
|
2069
|
+
<YAxis
|
|
2070
|
+
stroke="hsl(var(--muted-foreground))"
|
|
2071
|
+
fontSize={12}
|
|
2072
|
+
tickLine={false}
|
|
2073
|
+
axisLine={false}
|
|
2074
|
+
tickFormatter={(v) => formatYValue(v, yFormatter)}
|
|
2075
|
+
/>
|
|
2076
|
+
<CartesianGrid
|
|
2077
|
+
strokeDasharray="3 3"
|
|
2078
|
+
stroke="hsl(var(--border))"
|
|
2079
|
+
vertical={false}
|
|
2080
|
+
/>
|
|
2081
|
+
<Tooltip
|
|
2082
|
+
{...CHART_TOOLTIP_PROPS}
|
|
2083
|
+
labelFormatter={xLabelFormatter}
|
|
2084
|
+
content={
|
|
2085
|
+
<ChartTooltip
|
|
2086
|
+
labelFormatter={xLabelFormatter}
|
|
2087
|
+
seriesNameFormatter={seriesNameFormatter}
|
|
2088
|
+
valueFormatter={(v) => formatYValue(v, yFormatter)}
|
|
2089
|
+
/>
|
|
2090
|
+
}
|
|
2091
|
+
itemSorter={(item) => -(Number(item.value) || 0)}
|
|
2092
|
+
/>
|
|
2093
|
+
{series.map((item, i) => (
|
|
2094
|
+
<Line
|
|
2095
|
+
key={item.solidKey}
|
|
2096
|
+
type="monotone"
|
|
2097
|
+
dataKey={item.solidKey}
|
|
2098
|
+
name={seriesNameFormatter(item.key)}
|
|
2099
|
+
stroke={colors[i % colors.length]}
|
|
2100
|
+
strokeWidth={2}
|
|
2101
|
+
dot={false}
|
|
2102
|
+
hide={hiddenKeys.has(item.key)}
|
|
2103
|
+
isAnimationActive={isAnimationActive}
|
|
2104
|
+
/>
|
|
2105
|
+
))}
|
|
2106
|
+
{series.map((item, i) =>
|
|
2107
|
+
item.partialKey ? (
|
|
2108
|
+
<Line
|
|
2109
|
+
key={item.partialKey}
|
|
2110
|
+
type="monotone"
|
|
2111
|
+
dataKey={item.partialKey}
|
|
2112
|
+
name={seriesNameFormatter(item.key)}
|
|
2113
|
+
stroke={colors[i % colors.length]}
|
|
2114
|
+
strokeWidth={2}
|
|
2115
|
+
strokeDasharray={PARTIAL_DAY_DASH}
|
|
2116
|
+
dot={false}
|
|
2117
|
+
hide={hiddenKeys.has(item.key)}
|
|
2118
|
+
isAnimationActive={isAnimationActive}
|
|
2119
|
+
/>
|
|
2120
|
+
) : null,
|
|
2121
|
+
)}
|
|
2122
|
+
</LineChart>
|
|
2123
|
+
)}
|
|
2124
|
+
</ChartResponsiveContainer>
|
|
2125
|
+
</ChartFrame>
|
|
2126
|
+
);
|
|
2127
|
+
}
|
|
2128
|
+
|
|
2129
|
+
// With multiple series, filled areas stack and obscure lines behind them,
|
|
2130
|
+
// so only draw the gradient fill when there's a single series — unless
|
|
2131
|
+
// the caller asked for an explicit stacked area.
|
|
2132
|
+
const showFill = visibleKeys.length === 1 || stacked;
|
|
2133
|
+
|
|
2134
|
+
return (
|
|
2135
|
+
<ChartFrame
|
|
2136
|
+
panel={panel}
|
|
2137
|
+
legendKeys={yKeys}
|
|
2138
|
+
colors={colors}
|
|
2139
|
+
hiddenKeys={hiddenKeys}
|
|
2140
|
+
onToggleLegendKey={toggleSeries}
|
|
2141
|
+
onFilterLegendKey={filterSeries}
|
|
2142
|
+
showCustomLegend
|
|
2143
|
+
>
|
|
2144
|
+
<ChartResponsiveContainer>
|
|
2145
|
+
{(isAnimationActive) => (
|
|
2146
|
+
<AreaChart data={chartRows}>
|
|
2147
|
+
{showFill && (
|
|
2148
|
+
<defs>
|
|
2149
|
+
{yKeys.map((key, i) => (
|
|
2150
|
+
<linearGradient
|
|
2151
|
+
key={key}
|
|
2152
|
+
id={`sql-gradient-${key}`}
|
|
2153
|
+
x1="0"
|
|
2154
|
+
y1="0"
|
|
2155
|
+
x2="0"
|
|
2156
|
+
y2="1"
|
|
2157
|
+
>
|
|
2158
|
+
<stop
|
|
2159
|
+
offset="5%"
|
|
2160
|
+
stopColor={colors[i % colors.length]}
|
|
2161
|
+
stopOpacity={0.3}
|
|
2162
|
+
/>
|
|
2163
|
+
<stop
|
|
2164
|
+
offset="95%"
|
|
2165
|
+
stopColor={colors[i % colors.length]}
|
|
2166
|
+
stopOpacity={0}
|
|
2167
|
+
/>
|
|
2168
|
+
</linearGradient>
|
|
2169
|
+
))}
|
|
2170
|
+
</defs>
|
|
2171
|
+
)}
|
|
1975
2172
|
<XAxis
|
|
1976
2173
|
dataKey={xKey}
|
|
1977
2174
|
stroke="hsl(var(--muted-foreground))"
|
|
@@ -2005,20 +2202,23 @@ function TimeSeriesRenderer({
|
|
|
2005
2202
|
itemSorter={(item) => -(Number(item.value) || 0)}
|
|
2006
2203
|
/>
|
|
2007
2204
|
{series.map((item, i) => (
|
|
2008
|
-
<
|
|
2205
|
+
<Area
|
|
2009
2206
|
key={item.solidKey}
|
|
2010
2207
|
type="monotone"
|
|
2011
2208
|
dataKey={item.solidKey}
|
|
2012
2209
|
name={seriesNameFormatter(item.key)}
|
|
2013
2210
|
stroke={colors[i % colors.length]}
|
|
2014
2211
|
strokeWidth={2}
|
|
2015
|
-
|
|
2212
|
+
fillOpacity={showFill ? 1 : 0}
|
|
2213
|
+
fill={showFill ? `url(#sql-gradient-${item.key})` : "none"}
|
|
2214
|
+
stackId={stacked ? "stack" : undefined}
|
|
2016
2215
|
hide={hiddenKeys.has(item.key)}
|
|
2216
|
+
isAnimationActive={isAnimationActive}
|
|
2017
2217
|
/>
|
|
2018
2218
|
))}
|
|
2019
2219
|
{series.map((item, i) =>
|
|
2020
2220
|
item.partialKey ? (
|
|
2021
|
-
<
|
|
2221
|
+
<Area
|
|
2022
2222
|
key={item.partialKey}
|
|
2023
2223
|
type="monotone"
|
|
2024
2224
|
dataKey={item.partialKey}
|
|
@@ -2026,124 +2226,17 @@ function TimeSeriesRenderer({
|
|
|
2026
2226
|
stroke={colors[i % colors.length]}
|
|
2027
2227
|
strokeWidth={2}
|
|
2028
2228
|
strokeDasharray={PARTIAL_DAY_DASH}
|
|
2029
|
-
|
|
2229
|
+
fill="none"
|
|
2230
|
+
fillOpacity={0}
|
|
2231
|
+
stackId={stacked ? "partial-stack" : undefined}
|
|
2030
2232
|
hide={hiddenKeys.has(item.key)}
|
|
2233
|
+
isAnimationActive={isAnimationActive}
|
|
2031
2234
|
/>
|
|
2032
2235
|
) : null,
|
|
2033
2236
|
)}
|
|
2034
|
-
</
|
|
2035
|
-
|
|
2036
|
-
</
|
|
2037
|
-
);
|
|
2038
|
-
}
|
|
2039
|
-
|
|
2040
|
-
// With multiple series, filled areas stack and obscure lines behind them,
|
|
2041
|
-
// so only draw the gradient fill when there's a single series — unless
|
|
2042
|
-
// the caller asked for an explicit stacked area.
|
|
2043
|
-
const showFill = visibleKeys.length === 1 || stacked;
|
|
2044
|
-
|
|
2045
|
-
return (
|
|
2046
|
-
<ChartFrame
|
|
2047
|
-
panel={panel}
|
|
2048
|
-
legendKeys={yKeys}
|
|
2049
|
-
colors={colors}
|
|
2050
|
-
hiddenKeys={hiddenKeys}
|
|
2051
|
-
onToggleLegendKey={toggleSeries}
|
|
2052
|
-
onFilterLegendKey={filterSeries}
|
|
2053
|
-
showCustomLegend
|
|
2054
|
-
>
|
|
2055
|
-
<ResponsiveContainer width="100%" height="100%">
|
|
2056
|
-
<AreaChart data={chartRows}>
|
|
2057
|
-
{showFill && (
|
|
2058
|
-
<defs>
|
|
2059
|
-
{yKeys.map((key, i) => (
|
|
2060
|
-
<linearGradient
|
|
2061
|
-
key={key}
|
|
2062
|
-
id={`sql-gradient-${key}`}
|
|
2063
|
-
x1="0"
|
|
2064
|
-
y1="0"
|
|
2065
|
-
x2="0"
|
|
2066
|
-
y2="1"
|
|
2067
|
-
>
|
|
2068
|
-
<stop
|
|
2069
|
-
offset="5%"
|
|
2070
|
-
stopColor={colors[i % colors.length]}
|
|
2071
|
-
stopOpacity={0.3}
|
|
2072
|
-
/>
|
|
2073
|
-
<stop
|
|
2074
|
-
offset="95%"
|
|
2075
|
-
stopColor={colors[i % colors.length]}
|
|
2076
|
-
stopOpacity={0}
|
|
2077
|
-
/>
|
|
2078
|
-
</linearGradient>
|
|
2079
|
-
))}
|
|
2080
|
-
</defs>
|
|
2081
|
-
)}
|
|
2082
|
-
<XAxis
|
|
2083
|
-
dataKey={xKey}
|
|
2084
|
-
stroke="hsl(var(--muted-foreground))"
|
|
2085
|
-
fontSize={12}
|
|
2086
|
-
tickLine={false}
|
|
2087
|
-
axisLine={false}
|
|
2088
|
-
tickFormatter={xLabelFormatter}
|
|
2089
|
-
/>
|
|
2090
|
-
<YAxis
|
|
2091
|
-
stroke="hsl(var(--muted-foreground))"
|
|
2092
|
-
fontSize={12}
|
|
2093
|
-
tickLine={false}
|
|
2094
|
-
axisLine={false}
|
|
2095
|
-
tickFormatter={(v) => formatYValue(v, yFormatter)}
|
|
2096
|
-
/>
|
|
2097
|
-
<CartesianGrid
|
|
2098
|
-
strokeDasharray="3 3"
|
|
2099
|
-
stroke="hsl(var(--border))"
|
|
2100
|
-
vertical={false}
|
|
2101
|
-
/>
|
|
2102
|
-
<Tooltip
|
|
2103
|
-
{...CHART_TOOLTIP_PROPS}
|
|
2104
|
-
labelFormatter={xLabelFormatter}
|
|
2105
|
-
content={
|
|
2106
|
-
<ChartTooltip
|
|
2107
|
-
labelFormatter={xLabelFormatter}
|
|
2108
|
-
seriesNameFormatter={seriesNameFormatter}
|
|
2109
|
-
valueFormatter={(v) => formatYValue(v, yFormatter)}
|
|
2110
|
-
/>
|
|
2111
|
-
}
|
|
2112
|
-
itemSorter={(item) => -(Number(item.value) || 0)}
|
|
2113
|
-
/>
|
|
2114
|
-
{series.map((item, i) => (
|
|
2115
|
-
<Area
|
|
2116
|
-
key={item.solidKey}
|
|
2117
|
-
type="monotone"
|
|
2118
|
-
dataKey={item.solidKey}
|
|
2119
|
-
name={seriesNameFormatter(item.key)}
|
|
2120
|
-
stroke={colors[i % colors.length]}
|
|
2121
|
-
strokeWidth={2}
|
|
2122
|
-
fillOpacity={showFill ? 1 : 0}
|
|
2123
|
-
fill={showFill ? `url(#sql-gradient-${item.key})` : "none"}
|
|
2124
|
-
stackId={stacked ? "stack" : undefined}
|
|
2125
|
-
hide={hiddenKeys.has(item.key)}
|
|
2126
|
-
/>
|
|
2127
|
-
))}
|
|
2128
|
-
{series.map((item, i) =>
|
|
2129
|
-
item.partialKey ? (
|
|
2130
|
-
<Area
|
|
2131
|
-
key={item.partialKey}
|
|
2132
|
-
type="monotone"
|
|
2133
|
-
dataKey={item.partialKey}
|
|
2134
|
-
name={seriesNameFormatter(item.key)}
|
|
2135
|
-
stroke={colors[i % colors.length]}
|
|
2136
|
-
strokeWidth={2}
|
|
2137
|
-
strokeDasharray={PARTIAL_DAY_DASH}
|
|
2138
|
-
fill="none"
|
|
2139
|
-
fillOpacity={0}
|
|
2140
|
-
stackId={stacked ? "partial-stack" : undefined}
|
|
2141
|
-
hide={hiddenKeys.has(item.key)}
|
|
2142
|
-
/>
|
|
2143
|
-
) : null,
|
|
2144
|
-
)}
|
|
2145
|
-
</AreaChart>
|
|
2146
|
-
</ResponsiveContainer>
|
|
2237
|
+
</AreaChart>
|
|
2238
|
+
)}
|
|
2239
|
+
</ChartResponsiveContainer>
|
|
2147
2240
|
</ChartFrame>
|
|
2148
2241
|
);
|
|
2149
2242
|
}
|
|
@@ -17,9 +17,9 @@ import {
|
|
|
17
17
|
IconSun,
|
|
18
18
|
IconMoon,
|
|
19
19
|
IconHistory,
|
|
20
|
+
IconHierarchy2,
|
|
20
21
|
IconLanguage,
|
|
21
22
|
IconRefresh,
|
|
22
|
-
IconBrain,
|
|
23
23
|
IconSettings,
|
|
24
24
|
} from "@tabler/icons-react";
|
|
25
25
|
import { useQuery } from "@tanstack/react-query";
|
|
@@ -598,7 +598,7 @@ export function CommandPalette() {
|
|
|
598
598
|
"access",
|
|
599
599
|
)}
|
|
600
600
|
>
|
|
601
|
-
<
|
|
601
|
+
<IconHierarchy2 className="me-2 h-4 w-4 text-muted-foreground" />
|
|
602
602
|
<span className="truncate">{t("settings.agentTitle")}</span>
|
|
603
603
|
</CommandItem>
|
|
604
604
|
{settingsCommands.map((setting) => (
|