drizzle-cube 0.5.7 → 0.6.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/README.md +2 -0
- package/dist/adapters/adapters/hono/agent-handler.d.ts +9 -0
- package/dist/adapters/adapters/hono/mcp-handler.d.ts +37 -0
- package/dist/adapters/adapters/mcp-tools-handlers.d.ts +18 -0
- package/dist/adapters/adapters/nextjs/mcp-handler.d.ts +36 -0
- package/dist/adapters/{utils.d.ts → adapters/utils.d.ts} +6 -81
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +50 -50
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.js +78 -78
- package/dist/adapters/google-BOnRIN1w.cjs +2 -0
- package/dist/{server/google-CFYljAOF.js → adapters/google-CvKM9yVM.js} +83 -71
- package/dist/adapters/{handler-Dz1F4iwf.js → handler-CfgE0JSL.js} +515 -578
- package/dist/adapters/handler-Cn0dOctE.cjs +25 -0
- package/dist/adapters/hono/index.cjs +2 -2
- package/dist/adapters/hono/index.js +208 -178
- package/dist/adapters/locale-DDvZDFVn.js +8114 -0
- package/dist/adapters/locale-ZLUUNUxr.cjs +166 -0
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +49 -38
- package/dist/adapters/mcp-transport-Chiaj4ll.cjs +40 -0
- package/dist/adapters/mcp-transport-H96VG3WY.js +591 -0
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +190 -197
- package/dist/{server/openai-y7GhJNdn.js → adapters/openai-B5jEiqiB.js} +776 -719
- package/dist/adapters/openai-D0musiYP.cjs +17 -0
- package/dist/{server/openai-DiVskd89.js → adapters/openai-cDlFSTk6.js} +61 -59
- package/dist/adapters/openai-vXvLni8v.cjs +1 -0
- package/dist/adapters/{utils-DosuoabY.js → utils-BPWZsX7k.js} +1285 -1220
- package/dist/adapters/utils-_whV4fXL.cjs +128 -0
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.js +2 -2
- package/dist/client/charts/ChartLoader.d.ts +3 -17
- package/dist/client/charts/chartComponentRegistry.d.ts +46 -0
- package/dist/client/charts/chartConfigHelpers.d.ts +38 -0
- package/dist/client/charts.js +14 -13
- package/dist/client/chunks/{DashboardEditModal-6KRE36mm.js → DashboardEditModal-okVfH8ZK.js} +5446 -4486
- package/dist/client/chunks/DashboardEditModal-okVfH8ZK.js.map +1 -0
- package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js → RetentionCombinedChart-BgbDhsPz.js} +10 -10
- package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js.map → RetentionCombinedChart-BgbDhsPz.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js → RetentionHeatmap-DjXZaTPq.js} +5 -5
- package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js.map → RetentionHeatmap-DjXZaTPq.js.map} +1 -1
- package/dist/client/chunks/analysis-builder-DB88FojM.js +5674 -0
- package/dist/client/chunks/analysis-builder-DB88FojM.js.map +1 -0
- package/dist/client/chunks/{analysis-builder-shared-x576-O5p.js → analysis-builder-shared-BVK4TYfR.js} +1578 -1292
- package/dist/client/chunks/analysis-builder-shared-BVK4TYfR.js.map +1 -0
- package/dist/client/chunks/{chart-activity-grid-CiHrLH6Y.js → chart-activity-grid-DX0SJbxs.js} +642 -494
- package/dist/client/chunks/chart-activity-grid-DX0SJbxs.js.map +1 -0
- package/dist/client/chunks/chart-area-of01_62R.js +775 -0
- package/dist/client/chunks/chart-area-of01_62R.js.map +1 -0
- package/dist/client/chunks/chart-bar-BqelQE_I.js +194 -0
- package/dist/client/chunks/chart-bar-BqelQE_I.js.map +1 -0
- package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js → chart-box-plot-kkBixZ27.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js.map → chart-box-plot-kkBixZ27.js.map} +1 -1
- package/dist/client/chunks/chart-bubble-B2he1--4.js +221 -0
- package/dist/client/chunks/chart-bubble-B2he1--4.js.map +1 -0
- package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js → chart-candlestick-DZp19Tzh.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js.map → chart-candlestick-DZp19Tzh.js.map} +1 -1
- package/dist/client/chunks/chart-config-area-BNigHUy8.js +124 -0
- package/dist/client/chunks/chart-config-area-BNigHUy8.js.map +1 -0
- package/dist/client/chunks/chart-config-bar-DSO_LRTx.js +54 -0
- package/dist/client/chunks/chart-config-bar-DSO_LRTx.js.map +1 -0
- package/dist/client/chunks/{chart-config-box-plot-DJ-dWWXA.js → chart-config-box-plot-oW8axV2q.js} +5 -10
- package/dist/client/chunks/chart-config-box-plot-oW8axV2q.js.map +1 -0
- package/dist/client/chunks/{chart-config-gauge-DSwC04l0.js → chart-config-gauge-Dq-_H9UN.js} +5 -7
- package/dist/client/chunks/chart-config-gauge-Dq-_H9UN.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-delta-D6BIkHL3.js → chart-config-kpi-delta-DSQbvqu_.js} +5 -10
- package/dist/client/chunks/chart-config-kpi-delta-DSQbvqu_.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-number-Bx-V9a62.js → chart-config-kpi-number-EFSWY1We.js} +5 -7
- package/dist/client/chunks/chart-config-kpi-number-EFSWY1We.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-text-CcqC1u-8.js → chart-config-kpi-text-KM3V5X2u.js} +5 -7
- package/dist/client/chunks/chart-config-kpi-text-KM3V5X2u.js.map +1 -0
- package/dist/client/chunks/{chart-config-line-Db3jDsWc.js → chart-config-line-D6jG8PCH.js} +9 -36
- package/dist/client/chunks/chart-config-line-D6jG8PCH.js.map +1 -0
- package/dist/client/chunks/{chart-config-pie-DD4SmRTF.js → chart-config-pie-BhzW-fdn.js} +6 -16
- package/dist/client/chunks/chart-config-pie-BhzW-fdn.js.map +1 -0
- package/dist/client/chunks/{chart-config-radar-CC2XAaGr.js → chart-config-radar-D7REP1q_.js} +6 -16
- package/dist/client/chunks/chart-config-radar-D7REP1q_.js.map +1 -0
- package/dist/client/chunks/{chart-config-radial-bar-DmxKx1R0.js → chart-config-radial-bar-Byx6qOPU.js} +6 -16
- package/dist/client/chunks/chart-config-radial-bar-Byx6qOPU.js.map +1 -0
- package/dist/client/chunks/{chart-config-tree-map-BI-oQStO.js → chart-config-tree-map-DVrvf3yQ.js} +6 -16
- package/dist/client/chunks/chart-config-tree-map-DVrvf3yQ.js.map +1 -0
- package/dist/client/chunks/{chart-config-waterfall-DSnyixbI.js → chart-config-waterfall-DmFeQdIk.js} +5 -10
- package/dist/client/chunks/chart-config-waterfall-DmFeQdIk.js.map +1 -0
- package/dist/client/chunks/{chart-data-table-Cm5jrpaw.js → chart-data-table-CKauQXme.js} +1046 -1121
- package/dist/client/chunks/chart-data-table-CKauQXme.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-Eke8IPtG.js → chart-funnel-CToKSBaL.js} +184 -222
- package/dist/client/chunks/chart-funnel-CToKSBaL.js.map +1 -0
- package/dist/client/chunks/chart-gauge-DTVezSk7.js +403 -0
- package/dist/client/chunks/chart-gauge-DTVezSk7.js.map +1 -0
- package/dist/client/chunks/chart-heat-map-DTuUl0BR.js +236 -0
- package/dist/client/chunks/chart-heat-map-DTuUl0BR.js.map +1 -0
- package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js +408 -0
- package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js.map +1 -0
- package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js +244 -0
- package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js.map +1 -0
- package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js +185 -0
- package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js.map +1 -0
- package/dist/client/chunks/chart-line-DKgrQA6c.js +101 -0
- package/dist/client/chunks/chart-line-DKgrQA6c.js.map +1 -0
- package/dist/client/chunks/{chart-markdown-BPW-EAm9.js → chart-markdown-CV75S_zL.js} +1359 -1240
- package/dist/client/chunks/chart-markdown-CV75S_zL.js.map +1 -0
- package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js → chart-measure-profile-Ket8fJyf.js} +7 -7
- package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js.map → chart-measure-profile-Ket8fJyf.js.map} +1 -1
- package/dist/client/chunks/chart-pie-ByieAX5H.js +119 -0
- package/dist/client/chunks/chart-pie-ByieAX5H.js.map +1 -0
- package/dist/client/chunks/chart-radar-CiSwHWp4.js +138 -0
- package/dist/client/chunks/chart-radar-CiSwHWp4.js.map +1 -0
- package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js +122 -0
- package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js.map +1 -0
- package/dist/client/chunks/{chart-sankey-CFzjGvZX.js → chart-sankey-DjrvKw6K.js} +36 -39
- package/dist/client/chunks/{chart-sankey-CFzjGvZX.js.map → chart-sankey-DjrvKw6K.js.map} +1 -1
- package/dist/client/chunks/chart-scatter-Dd9WFqnS.js +258 -0
- package/dist/client/chunks/chart-scatter-Dd9WFqnS.js.map +1 -0
- package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js → chart-sunburst-leGpuDj7.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js.map → chart-sunburst-leGpuDj7.js.map} +1 -1
- package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js +323 -0
- package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js.map +1 -0
- package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js → chart-waterfall-DyvQReN5.js} +7 -7
- package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js.map → chart-waterfall-DyvQReN5.js.map} +1 -1
- package/dist/client/chunks/{charts-core-CrBDYN6N.js → charts-core-DaXSt1Dd.js} +2 -2
- package/dist/client/chunks/{charts-core-CrBDYN6N.js.map → charts-core-DaXSt1Dd.js.map} +1 -1
- package/dist/client/chunks/charts-loader-DdTeCeNo.js +84 -0
- package/dist/client/chunks/charts-loader-DdTeCeNo.js.map +1 -0
- package/dist/client/chunks/{core-DsAWNRRv.js → core-D7vPfUIe.js} +2 -2
- package/dist/client/chunks/{core-DsAWNRRv.js.map → core-D7vPfUIe.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-oyr2wENY.js → nl-NL-2zTAWTej.js} +8 -2
- package/dist/client/chunks/{nl-NL-oyr2wENY.js.map → nl-NL-2zTAWTej.js.map} +1 -1
- package/dist/client/chunks/retention-ChW9jYdy.js.map +1 -1
- package/dist/client/chunks/{schema-visualization-BszcrmZX.js → schema-visualization-Cb_E9_Gd.js} +12 -12
- package/dist/client/chunks/{schema-visualization-BszcrmZX.js.map → schema-visualization-Cb_E9_Gd.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-B5wCDJSj.js → useDirtyStateTracking-MbpxH_v6.js} +95 -84
- package/dist/client/chunks/useDirtyStateTracking-MbpxH_v6.js.map +1 -0
- package/dist/client/chunks/{useExplainAI-CCeCYzDm.js → useExplainAI-evnZkjCY.js} +14 -14
- package/dist/client/chunks/{useExplainAI-CCeCYzDm.js.map → useExplainAI-evnZkjCY.js.map} +1 -1
- package/dist/client/chunks/{utils-kqa-JIMg.js → utils-3P6z1vz5.js} +3 -3
- package/dist/client/chunks/{utils-kqa-JIMg.js.map → utils-3P6z1vz5.js.map} +1 -1
- package/dist/client/chunks/{vendor-0hJNlZXQ.js → vendor-DSpR0IW6.js} +43 -43
- package/dist/client/chunks/{vendor-0hJNlZXQ.js.map → vendor-DSpR0IW6.js.map} +1 -1
- package/dist/client/components/AgenticNotebook/agentChatParts.d.ts +34 -0
- package/dist/client/components/AgenticNotebook/chatMessageParts.d.ts +39 -0
- package/dist/client/components/AgenticNotebook/useAgentChatController.d.ts +25 -0
- package/dist/client/components/AgenticNotebook/useNotebookAutosave.d.ts +12 -0
- package/dist/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisQueryPanelParts.d.ts +64 -0
- package/dist/client/components/AnalysisBuilder/AnalysisResultsHeader.d.ts +67 -0
- package/dist/client/components/AnalysisBuilder/BreakdownComparisonToggle.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/BreakdownRow.d.ts +26 -0
- package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/ExecutionPlanPanelParts.d.ts +22 -0
- package/dist/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +2 -1
- package/dist/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchItem.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchModal.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchResults.d.ts +16 -0
- package/dist/client/components/AnalysisBuilder/FilterConfigModal.d.ts +2 -1
- package/dist/client/components/AnalysisBuilder/FilterValueInput.d.ts +63 -0
- package/dist/client/components/AnalysisBuilder/FlowDepthControls.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/FlowVisualizationPicker.d.ts +7 -0
- package/dist/client/components/AnalysisBuilder/LegacyBooleanOptions.d.ts +8 -0
- package/dist/client/components/AnalysisBuilder/LimitSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/MetricRow.d.ts +23 -0
- package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/SortToggleButton.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/StringArrayInput.d.ts +17 -0
- package/dist/client/components/AnalysisBuilder/filterConfigModalUtils.d.ts +30 -0
- package/dist/client/components/AnalysisBuilder/hooks/useAnalysisBuilderImperativeHandle.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/hooks/useDragReorder.d.ts +25 -0
- package/dist/client/components/AnalysisBuilder/hooks/useFieldSearchKeyboard.d.ts +11 -0
- package/dist/client/components/AnalysisBuilder/utils/axisConfigUtils.d.ts +23 -0
- package/dist/client/components/AnalysisBuilder/utils/executionPlanMarkdown.d.ts +8 -0
- package/dist/client/components/AnalysisBuilder/utils/fieldUtils.d.ts +5 -0
- package/dist/client/components/AnalysisBuilder/utils/resultsPanelDerive.d.ts +68 -0
- package/dist/client/components/AnalysisBuilder/utils/shareStateUtils.d.ts +68 -0
- package/dist/client/components/AnalysisBuilder/utils/sortUtils.d.ts +7 -0
- package/dist/client/components/AnalyticsDashboard.d.ts +1 -1
- package/dist/client/components/AnalyticsPage.d.ts +1 -1
- package/dist/client/components/ChartErrorBoundary.d.ts +1 -1
- package/dist/client/components/ChartTypeSelector.d.ts +1 -1
- package/dist/client/components/ColorPaletteSelector.d.ts +1 -1
- package/dist/client/components/DashboardEditModal.d.ts +2 -1
- package/dist/client/components/DashboardFilters/CompactFilterBarParts.d.ts +26 -0
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +1 -1
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModalParts.d.ts +27 -0
- package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +1 -1
- package/dist/client/components/DashboardFilters/DashboardFilterValueInput.d.ts +39 -0
- package/dist/client/components/DashboardFilters/dashboardFilterConfigModalUtils.d.ts +21 -0
- package/dist/client/components/DashboardFilters/useCompactFilterBar.d.ts +19 -0
- package/dist/client/components/DashboardFilters/useDashboardFilterConfigModal.d.ts +69 -0
- package/dist/client/components/DashboardFilters/useDateRangeState.d.ts +19 -0
- package/dist/client/components/DashboardFilters/useFilterDropdowns.d.ts +21 -0
- package/dist/client/components/DashboardFilters/useFilterValueFetch.d.ts +23 -0
- package/dist/client/components/DashboardGrid.d.ts +1 -1
- package/dist/client/components/DashboardPortletCard.d.ts +2 -57
- package/dist/client/components/DashboardThumbnailPlaceholder.d.ts +1 -1
- package/dist/client/components/DataBrowser/DataBrowserSidebar.d.ts +1 -1
- package/dist/client/components/DataBrowser/DataBrowserToolbar.d.ts +1 -1
- package/dist/client/components/DataBrowser/index.d.ts +1 -1
- package/dist/client/components/DataHistogram.d.ts +1 -1
- package/dist/client/components/DebugModal.d.ts +1 -1
- package/dist/client/components/DrillBreadcrumb.d.ts +2 -1
- package/dist/client/components/LoadingIndicator.d.ts +1 -1
- package/dist/client/components/MobileStackedLayout.d.ts +1 -1
- package/dist/client/components/PortletAnalysisModal.d.ts +1 -1
- package/dist/client/components/PortletContainer.d.ts +1 -1
- package/dist/client/components/PortletFilterConfigModal.d.ts +6 -4
- package/dist/client/components/RowManagedLayout.d.ts +1 -1
- package/dist/client/components/ScaledGridWrapper.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/CubeNode.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/RelationshipEdge.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/index.d.ts +1 -1
- package/dist/client/components/TextPortletModal.d.ts +1 -1
- package/dist/client/components/analyticsPortlet/PortletChart.d.ts +31 -0
- package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +35 -0
- package/dist/client/components/analyticsPortlet/PortletStates.d.ts +65 -0
- package/dist/client/components/analyticsPortlet/parsePortletQuery.d.ts +22 -0
- package/dist/client/components/analyticsPortlet/portletRenderState.d.ts +31 -0
- package/dist/client/components/analyticsPortlet/usePortletDebugData.d.ts +37 -0
- package/dist/client/components/analyticsPortlet/usePortletDrillState.d.ts +17 -0
- package/dist/client/components/analyticsPortlet/usePortletQueryResults.d.ts +37 -0
- package/dist/client/components/charts/ActivityGridChart.helpers.d.ts +33 -0
- package/dist/client/components/charts/ActivityGridChart.render.d.ts +31 -0
- package/dist/client/components/charts/AxisFormatControls.d.ts +5 -3
- package/dist/client/components/charts/BarChart.helpers.d.ts +23 -0
- package/dist/client/components/charts/BarSeries.d.ts +29 -0
- package/dist/client/components/charts/BubbleChart.helpers.d.ts +43 -0
- package/dist/client/components/charts/BubbleChart.render.d.ts +21 -0
- package/dist/client/components/charts/ChartContainer.d.ts +1 -1
- package/dist/client/components/charts/ChartLegend.d.ts +1 -1
- package/dist/client/components/charts/ChartStates.d.ts +38 -0
- package/dist/client/components/charts/ChartTooltip.d.ts +1 -1
- package/dist/client/components/charts/FunnelChart.helpers.d.ts +25 -0
- package/dist/client/components/charts/FunnelViews.d.ts +16 -0
- package/dist/client/components/charts/HeatMapCanvas.d.ts +25 -0
- package/dist/client/components/charts/HeatMapChart.helpers.d.ts +64 -0
- package/dist/client/components/charts/KpiDelta.helpers.d.ts +20 -0
- package/dist/client/components/charts/KpiNumber.helpers.d.ts +30 -0
- package/dist/client/components/charts/KpiStates.d.ts +19 -0
- package/dist/client/components/charts/MissingDependencyFallback.d.ts +1 -1
- package/dist/client/components/charts/ScatterChart.helpers.d.ts +43 -0
- package/dist/client/components/charts/ScatterSeries.d.ts +17 -0
- package/dist/client/components/charts/ScatterTooltip.d.ts +21 -0
- package/dist/client/components/charts/TreeMapChart.helpers.d.ts +37 -0
- package/dist/client/components/charts/TreeMapContent.d.ts +24 -0
- package/dist/client/components/charts/TreeMapLegend.d.ts +13 -0
- package/dist/client/components/charts/cartesianChartHelpers.d.ts +126 -0
- package/dist/client/components/charts/chartAxisResolution.d.ts +32 -0
- package/dist/client/components/charts/chartScaffolding.d.ts +77 -0
- package/dist/client/components/charts/gaugeChartHelpers.d.ts +36 -0
- package/dist/client/components/charts/kpiTextHelpers.d.ts +46 -0
- package/dist/client/components/charts/radarChartHelpers.d.ts +14 -0
- package/dist/client/components/charts/radialBarChartHelpers.d.ts +22 -0
- package/dist/client/components/charts/useChartDimensions.d.ts +20 -0
- package/dist/client/components/charts/useKpiDimensions.d.ts +30 -0
- package/dist/client/components/dashboard/DashboardContext.d.ts +2 -2
- package/dist/client/components/dashboard/DashboardCoordinator.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardEditBar.d.ts +5 -0
- package/dist/client/components/dashboard/DashboardFilterBar.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardGridSurface.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardModals.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardProvider.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardToolbar.d.ts +1 -1
- package/dist/client/components/dashboard/LayoutModeToggle.d.ts +10 -0
- package/dist/client/components/dashboard/dashboardGridUtils.d.ts +1 -1
- package/dist/client/components/dashboardPortletCard/FilterFieldChip.d.ts +12 -0
- package/dist/client/components/dashboardPortletCard/PortletCardHeader.d.ts +43 -0
- package/dist/client/components/dashboardPortletCard/cardStyles.d.ts +33 -0
- package/dist/client/components/dashboardPortletCard/filterField.d.ts +12 -0
- package/dist/client/components/dashboardPortletCard/propsEqual.d.ts +55 -0
- package/dist/client/components/dashboardPortletCard/usePortletCardActions.d.ts +16 -0
- package/dist/client/components/portletAnalysisModal/saveValidation.d.ts +8 -0
- package/dist/client/components/shared/dateRangeUtils.d.ts +40 -0
- package/dist/client/components/shared/filterDisplayUtils.d.ts +10 -0
- package/dist/client/components/shared/filterItem/FilterDateRangeSelector.d.ts +17 -0
- package/dist/client/components/shared/filterItem/FilterFieldDropdown.d.ts +16 -0
- package/dist/client/components/shared/filterItem/dateRangeSync.d.ts +14 -0
- package/dist/client/components/shared/filterItem/fieldVisuals.d.ts +5 -0
- package/dist/client/components/shared/filterValueSelector/FilterValueInputs.d.ts +55 -0
- package/dist/client/components/shared/filterValueSelector/useFilterValueSelectorState.d.ts +25 -0
- package/dist/client/components/shared/queryFieldUtils.d.ts +21 -0
- package/dist/client/components/shared/utils.d.ts +4 -43
- package/dist/client/components.js +3 -3
- package/dist/client/hooks/agentChatStream.d.ts +39 -0
- package/dist/client/hooks/analysisQueryExecutionModes.d.ts +133 -0
- package/dist/client/hooks/dashboard/useDashboardController.d.ts +2 -2
- package/dist/client/hooks/drillNavigation.d.ts +25 -0
- package/dist/client/hooks/useDashboardHook.d.ts +2 -2
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.d.ts +1 -1
- package/dist/client/icons.js +2 -2
- package/dist/client/index.js +816 -669
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers/CubeApiProvider.d.ts +1 -1
- package/dist/client/providers/CubeFeaturesProvider.d.ts +1 -1
- package/dist/client/providers/CubeMetaProvider.d.ts +1 -1
- package/dist/client/providers/CubeProvider.d.ts +1 -1
- package/dist/client/providers/I18nProvider.d.ts +1 -1
- package/dist/client/providers.js +3 -3
- package/dist/client/schema.js +1 -1
- package/dist/client/shared/chartConfigBuilders.d.ts +18 -0
- package/dist/client/shared/components/QueryAnalysisPanel.sections.d.ts +41 -0
- package/dist/client/shared/queryTransforms.d.ts +20 -0
- package/dist/client/shared/utils.d.ts +2 -4
- package/dist/client/stores/analysisBuilderStore.d.ts +1 -1
- package/dist/client/stores/dashboardStore.d.ts +1 -1
- package/dist/client/stores/dataBrowserStore.d.ts +1 -1
- package/dist/client/stores/notebookStore.d.ts +1 -1
- package/dist/client/stores/optionsToAnalysisConfig.d.ts +17 -0
- package/dist/client/styles.css +1 -1
- package/dist/client/types/drill.d.ts +1 -1
- package/dist/client/types.d.ts +7 -2
- package/dist/client/utils/axisValueFormatting.d.ts +32 -0
- package/dist/client/utils/drillQueryBuilder.d.ts +2 -2
- package/dist/client/utils/filterUtils.d.ts +33 -5
- package/dist/client/utils/joinReachability.d.ts +27 -0
- package/dist/client/utils/timeValueFormatting.d.ts +32 -0
- package/dist/client/utils.js +6 -6
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +55 -55
- package/dist/server/google-BOnRIN1w.cjs +2 -0
- package/dist/{adapters/google-CFYljAOF.js → server/google-CvKM9yVM.js} +83 -71
- package/dist/server/index.cjs +179 -211
- package/dist/server/index.d.ts +2 -5050
- package/dist/server/index.js +6360 -6462
- package/dist/{adapters/openai-y7GhJNdn.js → server/openai-B5jEiqiB.js} +776 -719
- package/dist/server/openai-D0musiYP.cjs +17 -0
- package/dist/{adapters/openai-DiVskd89.js → server/openai-cDlFSTk6.js} +61 -59
- package/dist/server/openai-vXvLni8v.cjs +1 -0
- package/dist/server/server/adapters/base-adapter.d.ts +332 -0
- package/dist/server/server/adapters/databend-adapter.d.ts +63 -0
- package/dist/server/server/adapters/duckdb-adapter.d.ts +68 -0
- package/dist/server/server/adapters/mysql-adapter.d.ts +65 -0
- package/dist/server/server/adapters/postgres-adapter.d.ts +55 -0
- package/dist/server/server/adapters/singlestore-adapter.d.ts +4 -0
- package/dist/server/server/adapters/snowflake-adapter.d.ts +53 -0
- package/dist/server/server/adapters/sqlite-adapter.d.ts +120 -0
- package/dist/server/server/adapters/window-function-builder.d.ts +11 -0
- package/dist/server/server/agent/chart-validation.d.ts +22 -0
- package/dist/server/server/agent/handler-steps.d.ts +37 -0
- package/dist/server/server/agent/handler.d.ts +25 -0
- package/dist/server/server/agent/index.d.ts +11 -0
- package/dist/server/server/agent/providers/anthropic.d.ts +24 -0
- package/dist/server/server/agent/providers/factory.d.ts +12 -0
- package/dist/server/server/agent/providers/google.d.ts +23 -0
- package/dist/server/server/agent/providers/index.d.ts +6 -0
- package/dist/server/server/agent/providers/openai.d.ts +26 -0
- package/dist/server/server/agent/providers/types.d.ts +95 -0
- package/dist/server/server/agent/system-prompt.d.ts +5 -0
- package/dist/server/server/agent/tools.d.ts +28 -0
- package/dist/server/server/agent/types.d.ts +192 -0
- package/dist/server/server/ai/discovery-helpers.d.ts +29 -0
- package/dist/server/server/ai/discovery.d.ts +66 -0
- package/dist/server/server/ai/index.d.ts +10 -0
- package/dist/server/server/ai/mcp-prompts.d.ts +83 -0
- package/dist/server/server/ai/query-schema.d.ts +258 -0
- package/dist/server/server/ai/schemas.d.ts +63 -0
- package/dist/server/server/ai/suggestion-helpers.d.ts +33 -0
- package/dist/server/server/ai/suggestion.d.ts +16 -0
- package/dist/server/server/ai/validation-helpers.d.ts +21 -0
- package/dist/server/server/ai/validation.d.ts +31 -0
- package/dist/server/server/builders/analysis-utils.d.ts +106 -0
- package/dist/server/server/builders/comparison-query-builder.d.ts +70 -0
- package/dist/server/server/builders/cte-builder.d.ts +108 -0
- package/dist/server/server/builders/date-time-builder.d.ts +34 -0
- package/dist/server/server/builders/date-time-helpers.d.ts +34 -0
- package/dist/server/server/builders/filter-builder.d.ts +25 -0
- package/dist/server/server/builders/filter-operators.d.ts +23 -0
- package/dist/server/server/builders/flow-query-builder.d.ts +136 -0
- package/dist/server/server/builders/funnel-query-builder.d.ts +145 -0
- package/dist/server/server/builders/group-by-builder.d.ts +38 -0
- package/dist/server/server/builders/index.d.ts +13 -0
- package/dist/server/server/builders/measure-builder.d.ts +185 -0
- package/dist/server/server/builders/retention-query-builder.d.ts +98 -0
- package/dist/server/server/cache-providers/index.d.ts +5 -0
- package/dist/server/server/cache-providers/memory.d.ts +105 -0
- package/dist/server/server/cache-utils.d.ts +85 -0
- package/dist/server/server/compiler-metadata.d.ts +11 -0
- package/dist/server/server/compiler.d.ts +212 -0
- package/dist/server/server/cube-utils.d.ts +158 -0
- package/dist/server/server/database-utils.d.ts +18 -0
- package/dist/server/server/execution/annotation-builder.d.ts +12 -0
- package/dist/server/server/execution/filter-cache-preloader.d.ts +19 -0
- package/dist/server/server/execution/mode-router.d.ts +25 -0
- package/dist/server/server/execution/query-result-cache.d.ts +21 -0
- package/dist/server/server/execution/result-post-processor.d.ts +10 -0
- package/dist/server/server/executor.d.ts +186 -0
- package/dist/server/server/executors/base-executor.d.ts +16 -0
- package/dist/server/server/executors/databend-executor.d.ts +33 -0
- package/dist/server/server/executors/duckdb-executor.d.ts +33 -0
- package/dist/server/server/executors/explain-utils.d.ts +28 -0
- package/dist/server/server/executors/index.d.ts +21 -0
- package/dist/server/server/executors/mysql-executor.d.ts +27 -0
- package/dist/server/server/executors/postgres-executor.d.ts +27 -0
- package/dist/server/server/executors/singlestore-executor.d.ts +9 -0
- package/dist/server/server/executors/snowflake-executor.d.ts +33 -0
- package/dist/server/server/executors/sqlite-executor.d.ts +28 -0
- package/dist/server/server/explain/databend-parser.d.ts +16 -0
- package/dist/server/server/explain/duckdb-parser.d.ts +28 -0
- package/dist/server/server/explain/explain-tree.d.ts +20 -0
- package/dist/server/server/explain/index.d.ts +9 -0
- package/dist/server/server/explain/mysql-parser.d.ts +38 -0
- package/dist/server/server/explain/postgres-parser.d.ts +18 -0
- package/dist/server/server/explain/snowflake-parser.d.ts +17 -0
- package/dist/server/server/explain/sqlite-parser.d.ts +23 -0
- package/dist/server/server/filter-cache.d.ts +73 -0
- package/dist/server/server/gap-filler.d.ts +48 -0
- package/dist/server/server/index.d.ts +38 -0
- package/dist/server/server/logical-plan/cte-planner-helpers.d.ts +37 -0
- package/dist/server/server/logical-plan/cte-planner.d.ts +104 -0
- package/dist/server/server/logical-plan/filter-propagation.d.ts +44 -0
- package/dist/server/server/logical-plan/index.d.ts +19 -0
- package/dist/server/server/logical-plan/join-planner.d.ts +27 -0
- package/dist/server/server/logical-plan/logical-plan-builder.d.ts +58 -0
- package/dist/server/server/logical-plan/logical-planner.d.ts +39 -0
- package/dist/server/server/logical-plan/optimiser.d.ts +34 -0
- package/dist/server/server/logical-plan/plan-analysis-reporter.d.ts +59 -0
- package/dist/server/server/logical-plan/planner-utils.d.ts +20 -0
- package/dist/server/server/logical-plan/types.d.ts +199 -0
- package/dist/server/server/measure-classification.d.ts +40 -0
- package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
- package/dist/server/server/physical-plan/drizzle-sql-builder.d.ts +118 -0
- package/dist/server/server/physical-plan/index.d.ts +2 -0
- package/dist/server/server/physical-plan/processors/cte-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/index.d.ts +8 -0
- package/dist/server/server/physical-plan/processors/joins-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/keys-dedup-processor.d.ts +13 -0
- package/dist/server/server/physical-plan/processors/multi-fact-processor.d.ts +13 -0
- package/dist/server/server/physical-plan/processors/predicates-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/selection-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/shared.d.ts +38 -0
- package/dist/server/server/physical-plan/processors/window-processor.d.ts +6 -0
- package/dist/server/server/prompts/explain-analysis-prompt.d.ts +47 -0
- package/dist/server/server/prompts/index.d.ts +27 -0
- package/dist/server/server/prompts/single-step-prompt.d.ts +31 -0
- package/dist/server/server/prompts/step0-validation-prompt.d.ts +39 -0
- package/dist/server/server/prompts/step1-shape-prompt.d.ts +29 -0
- package/dist/server/server/prompts/step2-complete-prompt.d.ts +19 -0
- package/dist/server/server/prompts/types.d.ts +37 -0
- package/dist/server/server/query-handlers.d.ts +79 -0
- package/dist/server/server/query-modes.d.ts +28 -0
- package/dist/server/server/query-validator.d.ts +9 -0
- package/dist/server/server/resolvers/calculated-measure-resolver.d.ts +98 -0
- package/dist/server/server/resolvers/index.d.ts +6 -0
- package/dist/server/server/resolvers/join-path-resolver.d.ts +158 -0
- package/dist/server/server/sql-format.d.ts +11 -0
- package/dist/server/server/template-substitution.d.ts +57 -0
- package/dist/server/server/types/analysis.d.ts +189 -0
- package/dist/server/server/types/cache.d.ts +132 -0
- package/dist/server/server/types/core.d.ts +164 -0
- package/dist/server/server/types/cube.d.ts +544 -0
- package/dist/server/server/types/executor.d.ts +156 -0
- package/dist/server/server/types/flow.d.ts +144 -0
- package/dist/server/server/types/funnel.d.ts +118 -0
- package/dist/server/server/types/index.d.ts +11 -0
- package/dist/server/server/types/metadata.d.ts +113 -0
- package/dist/server/server/types/query.d.ts +153 -0
- package/dist/server/server/types/retention.d.ts +141 -0
- package/dist/server/server/types/utils.d.ts +11 -0
- package/dist/server/server/types/validation.d.ts +14 -0
- package/package.json +15 -8
- package/dist/adapters/google-DUlXeeDA.cjs +0 -2
- package/dist/adapters/handler-C63rJUUK.cjs +0 -25
- package/dist/adapters/locale-CTNwPVZI.cjs +0 -198
- package/dist/adapters/locale-gU_d1Wja.js +0 -8249
- package/dist/adapters/mcp-transport-C4J4SAcn.cjs +0 -40
- package/dist/adapters/mcp-transport-CVUiifEc.js +0 -579
- package/dist/adapters/openai-6wrBvAnv.cjs +0 -1
- package/dist/adapters/openai-BDwb2u7y.cjs +0 -17
- package/dist/adapters/utils-CkEkU8Bo.cjs +0 -128
- package/dist/client/chunks/DashboardEditModal-6KRE36mm.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-x576-O5p.js.map +0 -1
- package/dist/client/chunks/analysis-builder-zd48FVJO.js +0 -5367
- package/dist/client/chunks/analysis-builder-zd48FVJO.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-CiHrLH6Y.js.map +0 -1
- package/dist/client/chunks/chart-area-CXFK-Grv.js +0 -450
- package/dist/client/chunks/chart-area-CXFK-Grv.js.map +0 -1
- package/dist/client/chunks/chart-bar-DKXfLoGG.js +0 -271
- package/dist/client/chunks/chart-bar-DKXfLoGG.js.map +0 -1
- package/dist/client/chunks/chart-bubble-DGkTQlxM.js +0 -273
- package/dist/client/chunks/chart-bubble-DGkTQlxM.js.map +0 -1
- package/dist/client/chunks/chart-config-area-Bq_UsW3x.js +0 -101
- package/dist/client/chunks/chart-config-area-Bq_UsW3x.js.map +0 -1
- package/dist/client/chunks/chart-config-bar-_JEGZnAu.js +0 -95
- package/dist/client/chunks/chart-config-bar-_JEGZnAu.js.map +0 -1
- package/dist/client/chunks/chart-config-box-plot-DJ-dWWXA.js.map +0 -1
- package/dist/client/chunks/chart-config-gauge-DSwC04l0.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-delta-D6BIkHL3.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-number-Bx-V9a62.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-text-CcqC1u-8.js.map +0 -1
- package/dist/client/chunks/chart-config-line-Db3jDsWc.js.map +0 -1
- package/dist/client/chunks/chart-config-pie-DD4SmRTF.js.map +0 -1
- package/dist/client/chunks/chart-config-radar-CC2XAaGr.js.map +0 -1
- package/dist/client/chunks/chart-config-radial-bar-DmxKx1R0.js.map +0 -1
- package/dist/client/chunks/chart-config-tree-map-BI-oQStO.js.map +0 -1
- package/dist/client/chunks/chart-config-waterfall-DSnyixbI.js.map +0 -1
- package/dist/client/chunks/chart-data-table-Cm5jrpaw.js.map +0 -1
- package/dist/client/chunks/chart-funnel-Eke8IPtG.js.map +0 -1
- package/dist/client/chunks/chart-gauge-DeRZNsyl.js +0 -424
- package/dist/client/chunks/chart-gauge-DeRZNsyl.js.map +0 -1
- package/dist/client/chunks/chart-heat-map-C86thSJ4.js +0 -231
- package/dist/client/chunks/chart-heat-map-C86thSJ4.js.map +0 -1
- package/dist/client/chunks/chart-kpi-delta-CxOYD2f1.js +0 -343
- package/dist/client/chunks/chart-kpi-delta-CxOYD2f1.js.map +0 -1
- package/dist/client/chunks/chart-kpi-number-C6gWz-x4.js +0 -322
- package/dist/client/chunks/chart-kpi-number-C6gWz-x4.js.map +0 -1
- package/dist/client/chunks/chart-kpi-text-dDONrhS-.js +0 -149
- package/dist/client/chunks/chart-kpi-text-dDONrhS-.js.map +0 -1
- package/dist/client/chunks/chart-line-r4iWevKZ.js +0 -433
- package/dist/client/chunks/chart-line-r4iWevKZ.js.map +0 -1
- package/dist/client/chunks/chart-markdown-BPW-EAm9.js.map +0 -1
- package/dist/client/chunks/chart-pie-yqH2YVEI.js +0 -172
- package/dist/client/chunks/chart-pie-yqH2YVEI.js.map +0 -1
- package/dist/client/chunks/chart-radar-B-_3v-rE.js +0 -154
- package/dist/client/chunks/chart-radar-B-_3v-rE.js.map +0 -1
- package/dist/client/chunks/chart-radial-bar-C0EgzfAF.js +0 -148
- package/dist/client/chunks/chart-radial-bar-C0EgzfAF.js.map +0 -1
- package/dist/client/chunks/chart-scatter-DZPirzwX.js +0 -255
- package/dist/client/chunks/chart-scatter-DZPirzwX.js.map +0 -1
- package/dist/client/chunks/chart-tree-map-Bi4axCvh.js +0 -298
- package/dist/client/chunks/chart-tree-map-Bi4axCvh.js.map +0 -1
- package/dist/client/chunks/useDirtyStateTracking-B5wCDJSj.js.map +0 -1
- package/dist/server/google-DUlXeeDA.cjs +0 -2
- package/dist/server/openai-6wrBvAnv.cjs +0 -1
- package/dist/server/openai-BDwb2u7y.cjs +0 -17
- /package/dist/adapters/{express → adapters/express}/index.d.ts +0 -0
- /package/dist/adapters/{fastify → adapters/fastify}/index.d.ts +0 -0
- /package/dist/adapters/{hono → adapters/hono}/index.d.ts +0 -0
- /package/dist/adapters/{locale.d.ts → adapters/locale.d.ts} +0 -0
- /package/dist/adapters/{mcp-tools.d.ts → adapters/mcp-tools.d.ts} +0 -0
- /package/dist/adapters/{mcp-transport.d.ts → adapters/mcp-transport.d.ts} +0 -0
- /package/dist/adapters/{nextjs → adapters/nextjs}/index.d.ts +0 -0
- /package/dist/adapters/{types.d.ts → adapters/types.d.ts} +0 -0
package/dist/client/index.js
CHANGED
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
import { a as e, n as t, o as n, r, s as i } from "./chunks/vendor-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { r as Dn } from "./chunks/
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
17
|
-
import {
|
|
1
|
+
import { a as e, n as t, o as n, r, s as i } from "./chunks/vendor-DSpR0IW6.js";
|
|
2
|
+
import { n as a, t as o } from "./chunks/providers-DwQCKdGW.js";
|
|
3
|
+
import { A as s, B as c, C as l, E as u, I as d, L as f, M as p, N as m, R as h, S as g, T as _, V as v, _ as y, b, c as x, g as S, j as C, k as w, l as T, s as E, v as D, w as O, x as k, y as A, z as j } from "./chunks/chart-data-table-CKauQXme.js";
|
|
4
|
+
import { n as M, r as N } from "./chunks/chart-sankey-DjrvKw6K.js";
|
|
5
|
+
import { $ as P, B as F, C as I, D as L, E as ee, F as te, G as R, H as ne, I as re, J as ie, K as ae, L as oe, M as se, N as ce, O as le, P as ue, Q as de, R as fe, T as pe, U as me, V as he, W as ge, X as _e, Y as ve, Z as ye, _ as be, _t as xe, a as Se, at as Ce, c as we, ct as Te, dt as Ee, f as De, ft as Oe, gt as ke, h as Ae, ht as je, i as Me, it as Ne, j as Pe, k as Fe, lt as Ie, m as Le, mt as Re, n as ze, nt as Be, o as Ve, ot as He, p as Ue, pt as We, q as Ge, r as Ke, rt as qe, st as Je, t as Ye, tt as Xe, ut as Ze, vt as Qe, yt as $e, z as et } from "./chunks/DashboardEditModal-okVfH8ZK.js";
|
|
6
|
+
import { P as z, S as tt, _ as nt, b as rt, g as it, h as at, m as ot, p as st, v as ct, x as lt, y as ut, z as dt } from "./chunks/chart-activity-grid-DX0SJbxs.js";
|
|
7
|
+
import { S as ft, _ as pt, b as mt, c as ht, d as gt, f as _t, g as vt, h as yt, l as bt, m as xt, o as St, p as Ct, s as wt, v as Tt, y as Et } from "./chunks/useDirtyStateTracking-MbpxH_v6.js";
|
|
8
|
+
import { a as Dt, i as Ot, n as kt, o as At, r as jt, t as Mt } from "./chunks/useExplainAI-evnZkjCY.js";
|
|
9
|
+
import { a as Nt, c as Pt, i as Ft, l as It, o as Lt, r as Rt, s as zt } from "./chunks/chart-funnel-CToKSBaL.js";
|
|
10
|
+
import { a as Bt, i as Vt, n as Ht, o as Ut, r as Wt, s as Gt, t as Kt } from "./chunks/charts-loader-DdTeCeNo.js";
|
|
11
|
+
import { F as B } from "./chunks/chart-area-of01_62R.js";
|
|
12
|
+
import { f as qt, i as Jt, t as Yt } from "./chunks/utils-3P6z1vz5.js";
|
|
13
|
+
import { A as Xt, D as Zt, E as Qt, F as $t, I as en, M as tn, O as nn, P as rn, S as an, T as on, _ as sn, a as cn, b as ln, c as un, d as dn, f as fn, g as pn, h as mn, i as hn, j as gn, k as _n, l as vn, n as yn, o as bn, p as xn, r as Sn, s as Cn, t as wn, v as Tn, w as En, x as Dn, y as On } from "./chunks/analysis-builder-shared-BVK4TYfR.js";
|
|
14
|
+
import { r as kn } from "./chunks/chart-markdown-CV75S_zL.js";
|
|
15
|
+
import { t as An } from "./chunks/useNotebookLayout-Ck3Z3uzg.js";
|
|
16
|
+
import { n as jn } from "./chunks/chart-bubble-B2he1--4.js";
|
|
17
|
+
import V, { createContext as Mn, useCallback as H, useContext as Nn, useEffect as U, useMemo as W, useRef as G, useState as K } from "react";
|
|
18
|
+
import { Fragment as q, jsx as J, jsxs as Y } from "react/jsx-runtime";
|
|
18
19
|
//#region src/client/stores/notebookStore.tsx
|
|
19
|
-
var
|
|
20
|
+
var Pn = () => ({
|
|
20
21
|
blocks: [],
|
|
21
22
|
messages: [],
|
|
22
23
|
isStreaming: !1,
|
|
23
24
|
sessionId: null,
|
|
24
25
|
inputValue: ""
|
|
25
26
|
});
|
|
26
|
-
function
|
|
27
|
+
function Fn(e, t) {
|
|
27
28
|
return {
|
|
28
29
|
addBlock: (t) => e((e) => ({ blocks: [...e.blocks, t] })),
|
|
29
30
|
removeBlock: (t) => e((e) => ({ blocks: e.blocks.filter((e) => e.id !== t) })),
|
|
@@ -87,38 +88,38 @@ function Nn(e, t) {
|
|
|
87
88
|
blocks: t.blocks || [],
|
|
88
89
|
messages: t.messages || []
|
|
89
90
|
}),
|
|
90
|
-
reset: () => e(
|
|
91
|
+
reset: () => e(Pn())
|
|
91
92
|
};
|
|
92
93
|
}
|
|
93
|
-
function
|
|
94
|
-
let t =
|
|
94
|
+
function In() {
|
|
95
|
+
let t = Pn();
|
|
95
96
|
return i()(r(e((e, n) => ({
|
|
96
97
|
...t,
|
|
97
|
-
...
|
|
98
|
+
...Fn(e, n)
|
|
98
99
|
})), { name: "NotebookStore" }));
|
|
99
100
|
}
|
|
100
|
-
var
|
|
101
|
-
function
|
|
102
|
-
let n =
|
|
101
|
+
var Ln = Mn(null);
|
|
102
|
+
function Rn({ children: e, initialConfig: t }) {
|
|
103
|
+
let n = G(null);
|
|
103
104
|
if (!n.current) {
|
|
104
|
-
let e =
|
|
105
|
+
let e = In();
|
|
105
106
|
t && e.getState().load(t), n.current = e;
|
|
106
107
|
}
|
|
107
|
-
return /* @__PURE__ */
|
|
108
|
+
return /* @__PURE__ */ J(Ln.Provider, {
|
|
108
109
|
value: n.current,
|
|
109
110
|
children: e
|
|
110
111
|
});
|
|
111
112
|
}
|
|
112
|
-
function
|
|
113
|
-
let t =
|
|
113
|
+
function X(e) {
|
|
114
|
+
let t = Nn(Ln);
|
|
114
115
|
if (!t) throw Error("useNotebookStore must be used within NotebookStoreProvider");
|
|
115
116
|
return n(t, e);
|
|
116
117
|
}
|
|
117
|
-
var
|
|
118
|
+
var zn = (e) => e.blocks, Bn = (e) => e.messages, Vn = (e) => e.isStreaming, Hn = (e) => e.sessionId, Un = (e) => e.inputValue, Wn = (e) => ({
|
|
118
119
|
messages: e.messages,
|
|
119
120
|
isStreaming: e.isStreaming,
|
|
120
121
|
inputValue: e.inputValue
|
|
121
|
-
}),
|
|
122
|
+
}), Gn = (e) => ({
|
|
122
123
|
addMessage: e.addMessage,
|
|
123
124
|
appendToLastAssistantMessage: e.appendToLastAssistantMessage,
|
|
124
125
|
setLastAssistantError: e.setLastAssistantError,
|
|
@@ -127,29 +128,29 @@ var Ln = (e) => e.blocks, Rn = (e) => e.messages, zn = (e) => e.isStreaming, Bn
|
|
|
127
128
|
setIsStreaming: e.setIsStreaming,
|
|
128
129
|
setInputValue: e.setInputValue,
|
|
129
130
|
setSessionId: e.setSessionId
|
|
130
|
-
}),
|
|
131
|
+
}), Kn = (e) => ({
|
|
131
132
|
addBlock: e.addBlock,
|
|
132
133
|
removeBlock: e.removeBlock,
|
|
133
134
|
moveBlock: e.moveBlock,
|
|
134
135
|
updateBlock: e.updateBlock
|
|
135
|
-
}),
|
|
136
|
+
}), Z = {
|
|
136
137
|
width: "16px",
|
|
137
138
|
height: "16px",
|
|
138
139
|
color: "currentColor"
|
|
139
|
-
},
|
|
140
|
-
let [c, l] =
|
|
140
|
+
}, qn = D("chevronUp"), Jn = D("chevronDown"), Yn = D("edit"), Xn = D("delete"), Zn = V.memo(function({ block: e, colorPalette: t, onRemove: n, onMoveUp: r, onMoveDown: i, onEdit: a, isFirst: o, isLast: s }) {
|
|
141
|
+
let [c, l] = K(null), u = H((e) => {
|
|
141
142
|
l(e);
|
|
142
143
|
}, []);
|
|
143
|
-
return /* @__PURE__ */
|
|
144
|
+
return /* @__PURE__ */ Y("div", {
|
|
144
145
|
className: "dc:relative dc:mb-4 bg-dc-surface dc:border border-dc-border dc:rounded-lg dc:flex dc:flex-col",
|
|
145
|
-
children: [/* @__PURE__ */
|
|
146
|
+
children: [/* @__PURE__ */ Y("div", {
|
|
146
147
|
className: "dc:flex dc:items-center dc:justify-between dc:px-3 dc:py-1.5 dc:border-b border-dc-border dc:shrink-0 bg-dc-surface-secondary dc:rounded-t-lg",
|
|
147
|
-
children: [/* @__PURE__ */
|
|
148
|
+
children: [/* @__PURE__ */ Y("div", {
|
|
148
149
|
className: "dc:flex dc:items-center dc:gap-2 dc:flex-1 dc:min-w-0",
|
|
149
|
-
children: [/* @__PURE__ */
|
|
150
|
+
children: [/* @__PURE__ */ J("h3", {
|
|
150
151
|
className: "dc:font-semibold dc:text-sm text-dc-text dc:truncate",
|
|
151
152
|
children: e.title || "Untitled"
|
|
152
|
-
}), c && /* @__PURE__ */
|
|
153
|
+
}), c && /* @__PURE__ */ J(Fe, {
|
|
153
154
|
chartConfig: c.chartConfig,
|
|
154
155
|
displayConfig: c.displayConfig,
|
|
155
156
|
queryObject: c.queryObject,
|
|
@@ -157,38 +158,38 @@ var Ln = (e) => e.blocks, Rn = (e) => e.messages, zn = (e) => e.isStreaming, Bn
|
|
|
157
158
|
chartType: c.chartType,
|
|
158
159
|
cacheInfo: c.cacheInfo ?? void 0
|
|
159
160
|
})]
|
|
160
|
-
}), /* @__PURE__ */
|
|
161
|
+
}), /* @__PURE__ */ Y("div", {
|
|
161
162
|
className: "dc:flex dc:items-center dc:gap-1 dc:shrink-0 dc:ml-4 dc:-mr-2",
|
|
162
163
|
children: [
|
|
163
|
-
!o && /* @__PURE__ */
|
|
164
|
+
!o && /* @__PURE__ */ J("button", {
|
|
164
165
|
onClick: () => r(e.id),
|
|
165
166
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
166
167
|
title: "Move up",
|
|
167
|
-
children: /* @__PURE__ */
|
|
168
|
+
children: /* @__PURE__ */ J(qn, { style: Z })
|
|
168
169
|
}),
|
|
169
|
-
!s && /* @__PURE__ */
|
|
170
|
+
!s && /* @__PURE__ */ J("button", {
|
|
170
171
|
onClick: () => i(e.id),
|
|
171
172
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
172
173
|
title: "Move down",
|
|
173
|
-
children: /* @__PURE__ */
|
|
174
|
+
children: /* @__PURE__ */ J(Jn, { style: Z })
|
|
174
175
|
}),
|
|
175
|
-
/* @__PURE__ */
|
|
176
|
+
/* @__PURE__ */ J("button", {
|
|
176
177
|
onClick: () => a(e),
|
|
177
178
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
178
179
|
title: "Edit visualization",
|
|
179
|
-
children: /* @__PURE__ */
|
|
180
|
+
children: /* @__PURE__ */ J(Yn, { style: Z })
|
|
180
181
|
}),
|
|
181
|
-
/* @__PURE__ */
|
|
182
|
+
/* @__PURE__ */ J("button", {
|
|
182
183
|
onClick: () => n(e.id),
|
|
183
184
|
className: "dc:p-1 dc:mr-0.5 dc:bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer dc:hover:bg-dc-danger-bg text-dc-danger dc:transition-colors",
|
|
184
185
|
title: "Remove",
|
|
185
|
-
children: /* @__PURE__ */
|
|
186
|
+
children: /* @__PURE__ */ J(Xn, { style: Z })
|
|
186
187
|
})
|
|
187
188
|
]
|
|
188
189
|
})]
|
|
189
|
-
}), /* @__PURE__ */
|
|
190
|
+
}), /* @__PURE__ */ J("div", {
|
|
190
191
|
className: "dc:flex-1 dc:min-h-0",
|
|
191
|
-
children: /* @__PURE__ */
|
|
192
|
+
children: /* @__PURE__ */ J(ve, {
|
|
192
193
|
query: e.query,
|
|
193
194
|
chartType: e.chartType,
|
|
194
195
|
chartConfig: e.chartConfig,
|
|
@@ -200,15 +201,15 @@ var Ln = (e) => e.blocks, Rn = (e) => e.messages, zn = (e) => e.isStreaming, Bn
|
|
|
200
201
|
})
|
|
201
202
|
})]
|
|
202
203
|
});
|
|
203
|
-
}),
|
|
204
|
+
}), Q = {
|
|
204
205
|
width: "16px",
|
|
205
206
|
height: "16px",
|
|
206
207
|
color: "currentColor"
|
|
207
|
-
}, Qn =
|
|
208
|
+
}, Qn = D("documentText"), $n = D("chevronUp"), er = D("chevronDown"), tr = D("delete");
|
|
208
209
|
function nr({ children: e, ...t }) {
|
|
209
|
-
return /* @__PURE__ */
|
|
210
|
+
return /* @__PURE__ */ J("div", {
|
|
210
211
|
className: "dc:overflow-x-auto dc:my-2",
|
|
211
|
-
children: /* @__PURE__ */
|
|
212
|
+
children: /* @__PURE__ */ J("table", {
|
|
212
213
|
...t,
|
|
213
214
|
children: e
|
|
214
215
|
})
|
|
@@ -240,86 +241,91 @@ var rr = { overrides: {
|
|
|
240
241
|
th: { props: { className: "dc:px-3 dc:py-2 dc:text-left dc:font-semibold dc:text-xs text-dc-text-secondary dc:uppercase dc:tracking-wider border-dc-border dc:border-b" } },
|
|
241
242
|
td: { props: { className: "dc:px-3 dc:py-2 dc:text-sm text-dc-text border-dc-border dc:border-b" } },
|
|
242
243
|
tr: { props: { className: "dc:hover:opacity-80" } }
|
|
243
|
-
} }, ir =
|
|
244
|
-
return /* @__PURE__ */
|
|
244
|
+
} }, ir = V.memo(function({ block: e, onRemove: t, onMoveUp: n, onMoveDown: r, isFirst: i, isLast: a }) {
|
|
245
|
+
return /* @__PURE__ */ Y("div", {
|
|
245
246
|
className: "dc:relative dc:mb-4 bg-dc-surface dc:border border-dc-border dc:rounded-lg dc:flex dc:flex-col",
|
|
246
|
-
children: [/* @__PURE__ */
|
|
247
|
+
children: [/* @__PURE__ */ Y("div", {
|
|
247
248
|
className: "dc:flex dc:items-center dc:justify-between dc:px-3 dc:py-1.5 dc:border-b border-dc-border dc:shrink-0 bg-dc-surface-secondary dc:rounded-t-lg",
|
|
248
|
-
children: [/* @__PURE__ */
|
|
249
|
+
children: [/* @__PURE__ */ Y("div", {
|
|
249
250
|
className: "dc:flex dc:items-center dc:gap-2 dc:flex-1 dc:min-w-0",
|
|
250
|
-
children: [/* @__PURE__ */
|
|
251
|
+
children: [/* @__PURE__ */ J(Qn, { style: Q }), /* @__PURE__ */ J("h3", {
|
|
251
252
|
className: "dc:font-semibold dc:text-sm text-dc-text dc:truncate",
|
|
252
253
|
children: e.title || "Markdown"
|
|
253
254
|
})]
|
|
254
|
-
}), /* @__PURE__ */
|
|
255
|
+
}), /* @__PURE__ */ Y("div", {
|
|
255
256
|
className: "dc:flex dc:items-center dc:gap-1 dc:shrink-0 dc:ml-4 dc:-mr-2",
|
|
256
257
|
children: [
|
|
257
|
-
!i && /* @__PURE__ */
|
|
258
|
+
!i && /* @__PURE__ */ J("button", {
|
|
258
259
|
onClick: () => n(e.id),
|
|
259
260
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
260
261
|
title: "Move up",
|
|
261
|
-
children: /* @__PURE__ */
|
|
262
|
+
children: /* @__PURE__ */ J($n, { style: Q })
|
|
262
263
|
}),
|
|
263
|
-
!a && /* @__PURE__ */
|
|
264
|
+
!a && /* @__PURE__ */ J("button", {
|
|
264
265
|
onClick: () => r(e.id),
|
|
265
266
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
266
267
|
title: "Move down",
|
|
267
|
-
children: /* @__PURE__ */
|
|
268
|
+
children: /* @__PURE__ */ J(er, { style: Q })
|
|
268
269
|
}),
|
|
269
|
-
/* @__PURE__ */
|
|
270
|
+
/* @__PURE__ */ J("button", {
|
|
270
271
|
onClick: () => t(e.id),
|
|
271
272
|
className: "dc:p-1 dc:mr-0.5 dc:bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer dc:hover:bg-dc-danger-bg text-dc-danger dc:transition-colors",
|
|
272
273
|
title: "Remove",
|
|
273
|
-
children: /* @__PURE__ */
|
|
274
|
+
children: /* @__PURE__ */ J(tr, { style: Q })
|
|
274
275
|
})
|
|
275
276
|
]
|
|
276
277
|
})]
|
|
277
|
-
}), /* @__PURE__ */
|
|
278
|
+
}), /* @__PURE__ */ J("div", {
|
|
278
279
|
className: "dc:p-4 dc:min-w-0 dc:overflow-hidden",
|
|
279
|
-
children: /* @__PURE__ */
|
|
280
|
+
children: /* @__PURE__ */ J(kn, {
|
|
280
281
|
options: rr,
|
|
281
282
|
children: e.content
|
|
282
283
|
})
|
|
283
284
|
})]
|
|
284
285
|
});
|
|
285
|
-
})
|
|
286
|
-
|
|
287
|
-
|
|
286
|
+
});
|
|
287
|
+
//#endregion
|
|
288
|
+
//#region src/client/components/AgenticNotebook/NotebookCanvas.tsx
|
|
289
|
+
function ar(e) {
|
|
290
|
+
let { analysisConfig: t } = Xe(e);
|
|
291
|
+
if (!t) return null;
|
|
292
|
+
let n = t.charts[t.analysisType];
|
|
293
|
+
return {
|
|
294
|
+
title: e.title,
|
|
295
|
+
query: JSON.stringify(t.query),
|
|
296
|
+
chartType: n?.chartType || "bar",
|
|
297
|
+
chartConfig: n?.chartConfig,
|
|
298
|
+
displayConfig: n?.displayConfig
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
var or = V.memo(function({ colorPalette: e }) {
|
|
302
|
+
let { t: n } = z(), r = e ?? pe(), i = X(zn), { removeBlock: a, moveBlock: o, updateBlock: s } = X(t(Kn)), c = G(null), [l, u] = K(null), d = G(i.length);
|
|
303
|
+
U(() => {
|
|
288
304
|
i.length > d.current && c.current?.scrollIntoView({ behavior: "smooth" }), d.current = i.length;
|
|
289
305
|
}, [i.length]);
|
|
290
|
-
let f =
|
|
306
|
+
let f = H((e) => a(e), [a]), p = H((e) => o(e, "up"), [o]), m = H((e) => o(e, "down"), [o]), h = H((e) => u(e), []), g = H((e) => {
|
|
291
307
|
if (!l) return;
|
|
292
|
-
let
|
|
293
|
-
|
|
294
|
-
let n = t.charts[t.analysisType];
|
|
295
|
-
s(l.id, {
|
|
296
|
-
title: e.title,
|
|
297
|
-
query: JSON.stringify(t.query),
|
|
298
|
-
chartType: n?.chartType || "bar",
|
|
299
|
-
chartConfig: n?.chartConfig,
|
|
300
|
-
displayConfig: n?.displayConfig
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
u(null);
|
|
308
|
+
let t = ar(e);
|
|
309
|
+
t && s(l.id, t), u(null);
|
|
304
310
|
}, [l, s]);
|
|
305
|
-
return i.length === 0 ? /* @__PURE__ */
|
|
311
|
+
return i.length === 0 ? /* @__PURE__ */ J("div", {
|
|
306
312
|
className: "dc:flex dc:items-center dc:justify-center dc:h-full",
|
|
307
|
-
children: /* @__PURE__ */
|
|
313
|
+
children: /* @__PURE__ */ Y("div", {
|
|
308
314
|
className: "dc:text-center dc:max-w-sm dc:px-6",
|
|
309
|
-
children: [/* @__PURE__ */
|
|
315
|
+
children: [/* @__PURE__ */ J("h3", {
|
|
310
316
|
className: "dc:text-base dc:font-semibold text-dc-text dc:mb-2",
|
|
311
317
|
children: n("notebook.canvas.emptyTitle")
|
|
312
|
-
}), /* @__PURE__ */
|
|
318
|
+
}), /* @__PURE__ */ J("p", {
|
|
313
319
|
className: "dc:text-sm text-dc-text-secondary",
|
|
314
320
|
children: n("notebook.canvas.emptyDescription")
|
|
315
321
|
})]
|
|
316
322
|
})
|
|
317
|
-
}) : /* @__PURE__ */
|
|
323
|
+
}) : /* @__PURE__ */ Y("div", {
|
|
318
324
|
className: "dc:h-full dc:overflow-y-auto dc:p-4",
|
|
319
325
|
children: [
|
|
320
326
|
i.map((e, t) => {
|
|
321
327
|
let n = t === 0, a = t === i.length - 1;
|
|
322
|
-
return e.type === "portlet" ? /* @__PURE__ */
|
|
328
|
+
return e.type === "portlet" ? /* @__PURE__ */ J(Zn, {
|
|
323
329
|
block: e,
|
|
324
330
|
colorPalette: r,
|
|
325
331
|
onRemove: f,
|
|
@@ -328,7 +334,7 @@ var rr = { overrides: {
|
|
|
328
334
|
onEdit: h,
|
|
329
335
|
isFirst: n,
|
|
330
336
|
isLast: a
|
|
331
|
-
}, e.id) : e.type === "markdown" ? /* @__PURE__ */
|
|
337
|
+
}, e.id) : e.type === "markdown" ? /* @__PURE__ */ J(ir, {
|
|
332
338
|
block: e,
|
|
333
339
|
onRemove: f,
|
|
334
340
|
onMoveUp: p,
|
|
@@ -337,8 +343,8 @@ var rr = { overrides: {
|
|
|
337
343
|
isLast: a
|
|
338
344
|
}, e.id) : null;
|
|
339
345
|
}),
|
|
340
|
-
/* @__PURE__ */
|
|
341
|
-
/* @__PURE__ */
|
|
346
|
+
/* @__PURE__ */ J("div", { ref: c }),
|
|
347
|
+
/* @__PURE__ */ J(we, {
|
|
342
348
|
isOpen: !!l,
|
|
343
349
|
onClose: () => u(null),
|
|
344
350
|
onSave: g,
|
|
@@ -362,143 +368,14 @@ var rr = { overrides: {
|
|
|
362
368
|
});
|
|
363
369
|
});
|
|
364
370
|
//#endregion
|
|
365
|
-
//#region src/client/
|
|
366
|
-
function or(e) {
|
|
367
|
-
if (e.startsWith("{") || e.includes("\"type\":\"error\"")) try {
|
|
368
|
-
let t = JSON.parse(e.replace(/^Error:\s*/, ""));
|
|
369
|
-
return {
|
|
370
|
-
overloaded_error: "The AI service is temporarily busy. Please try again in a moment.",
|
|
371
|
-
rate_limit_error: "Too many requests. Please wait a moment and try again.",
|
|
372
|
-
api_error: "The AI service encountered an error. Please try again.",
|
|
373
|
-
authentication_error: "Authentication failed. Please check your configuration."
|
|
374
|
-
}[t.error?.type || t.type || ""] || "The AI service encountered an error. Please try again.";
|
|
375
|
-
} catch {
|
|
376
|
-
return "The AI service encountered an error. Please try again.";
|
|
377
|
-
}
|
|
378
|
-
if (e.startsWith("Agent request failed:")) {
|
|
379
|
-
let t = e.match(/\d+/)?.[0];
|
|
380
|
-
return t === "429" ? "Too many requests. Please wait a moment and try again." : t === "503" || t === "529" ? "The AI service is temporarily busy. Please try again in a moment." : "The AI service is temporarily unavailable. Please try again.";
|
|
381
|
-
}
|
|
382
|
-
return e;
|
|
383
|
-
}
|
|
371
|
+
//#region src/client/components/AgenticNotebook/chatMessageParts.tsx
|
|
384
372
|
function sr(e) {
|
|
385
|
-
let { agentEndpoint: t, agentApiKey: n, agentProvider: r, agentModel: i, agentProviderEndpoint: a } = e, { cubeApi: o } = p(), s = q(null), [c, l] = J(!1), u = q(e);
|
|
386
|
-
return u.current = e, {
|
|
387
|
-
sendMessage: W(async (e, c, d) => {
|
|
388
|
-
function f(e) {
|
|
389
|
-
let t = u.current;
|
|
390
|
-
switch (e.type) {
|
|
391
|
-
case "text_delta":
|
|
392
|
-
t.onTextDelta(e.data);
|
|
393
|
-
break;
|
|
394
|
-
case "tool_use_start":
|
|
395
|
-
t.onToolStart(e.data.id, e.data.name, e.data.input);
|
|
396
|
-
break;
|
|
397
|
-
case "tool_use_result":
|
|
398
|
-
t.onToolResult(e.data.id, e.data.name, e.data.result, e.data.isError);
|
|
399
|
-
break;
|
|
400
|
-
case "add_portlet":
|
|
401
|
-
t.onAddPortlet({
|
|
402
|
-
...e.data,
|
|
403
|
-
type: "portlet"
|
|
404
|
-
});
|
|
405
|
-
break;
|
|
406
|
-
case "add_markdown":
|
|
407
|
-
t.onAddMarkdown({
|
|
408
|
-
...e.data,
|
|
409
|
-
type: "markdown"
|
|
410
|
-
});
|
|
411
|
-
break;
|
|
412
|
-
case "dashboard_saved":
|
|
413
|
-
t.onDashboardSaved?.(e.data);
|
|
414
|
-
break;
|
|
415
|
-
case "turn_complete":
|
|
416
|
-
t.onTurnComplete?.();
|
|
417
|
-
break;
|
|
418
|
-
case "done":
|
|
419
|
-
t.onDone(e.data.sessionId, e.data.traceId);
|
|
420
|
-
break;
|
|
421
|
-
case "error":
|
|
422
|
-
t.onError(e.data.message);
|
|
423
|
-
break;
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
s.current && s.current.abort();
|
|
427
|
-
let p = new AbortController();
|
|
428
|
-
s.current = p, l(!0);
|
|
429
|
-
try {
|
|
430
|
-
let s = t || `${o.apiUrl || "/cubejs-api/v1"}/agent/chat`, l = {
|
|
431
|
-
"Content-Type": "application/json",
|
|
432
|
-
...o.headers
|
|
433
|
-
};
|
|
434
|
-
n && (l["X-Agent-Api-Key"] = n), r && (l["X-Agent-Provider"] = r), i && (l["X-Agent-Model"] = i), a && (l["X-Agent-Provider-Endpoint"] = a);
|
|
435
|
-
let u = await fetch(s, {
|
|
436
|
-
method: "POST",
|
|
437
|
-
headers: l,
|
|
438
|
-
credentials: o.credentials ?? "include",
|
|
439
|
-
body: JSON.stringify({
|
|
440
|
-
message: e,
|
|
441
|
-
...c ? { sessionId: c } : {},
|
|
442
|
-
...d && d.length > 0 ? { history: d } : {}
|
|
443
|
-
}),
|
|
444
|
-
signal: p.signal
|
|
445
|
-
});
|
|
446
|
-
if (!u.ok) {
|
|
447
|
-
let e = await u.json().catch(() => ({}));
|
|
448
|
-
throw Error(e.error || `Agent request failed: ${u.status}`);
|
|
449
|
-
}
|
|
450
|
-
if (!u.body) throw Error("No response body received");
|
|
451
|
-
let m = u.body.getReader(), h = new TextDecoder(), g = "";
|
|
452
|
-
for (;;) {
|
|
453
|
-
let { done: e, value: t } = await m.read();
|
|
454
|
-
if (e) break;
|
|
455
|
-
g += h.decode(t, { stream: !0 });
|
|
456
|
-
let n = g.split("\n\n");
|
|
457
|
-
g = n.pop() || "";
|
|
458
|
-
for (let e of n) {
|
|
459
|
-
let t = e.trim().split("\n");
|
|
460
|
-
for (let e of t) if (e.startsWith("data: ")) try {
|
|
461
|
-
f(JSON.parse(e.slice(6)));
|
|
462
|
-
} catch {}
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
if (g.trim()) {
|
|
466
|
-
let e = g.trim().split("\n");
|
|
467
|
-
for (let t of e) if (t.startsWith("data: ")) try {
|
|
468
|
-
f(JSON.parse(t.slice(6)));
|
|
469
|
-
} catch {}
|
|
470
|
-
}
|
|
471
|
-
} catch (e) {
|
|
472
|
-
if (e.name !== "AbortError") {
|
|
473
|
-
let t = e instanceof Error ? e.message : "Stream failed";
|
|
474
|
-
u.current.onError(or(t));
|
|
475
|
-
}
|
|
476
|
-
} finally {
|
|
477
|
-
l(!1), s.current = null;
|
|
478
|
-
}
|
|
479
|
-
}, [
|
|
480
|
-
o,
|
|
481
|
-
t,
|
|
482
|
-
n,
|
|
483
|
-
r,
|
|
484
|
-
i,
|
|
485
|
-
a
|
|
486
|
-
]),
|
|
487
|
-
isStreaming: c,
|
|
488
|
-
abort: W(() => {
|
|
489
|
-
s.current && (s.current.abort(), s.current = null, l(!1));
|
|
490
|
-
}, [])
|
|
491
|
-
};
|
|
492
|
-
}
|
|
493
|
-
//#endregion
|
|
494
|
-
//#region src/client/components/AgenticNotebook/ChatMessage.tsx
|
|
495
|
-
function cr(e) {
|
|
496
373
|
let t = [], n = e, r = 0;
|
|
497
374
|
for (; n;) {
|
|
498
375
|
let e = n.match(/^(.*?)`([^`]+)`(.*)$/);
|
|
499
376
|
if (e) {
|
|
500
377
|
let [, i, a, o] = e;
|
|
501
|
-
i && t.push(/* @__PURE__ */
|
|
378
|
+
i && t.push(/* @__PURE__ */ J("span", { children: i }, r++)), t.push(/* @__PURE__ */ J("code", {
|
|
502
379
|
className: "dc:px-1 dc:py-0.5 dc:rounded dc:text-xs bg-dc-surface dc:font-mono",
|
|
503
380
|
children: a
|
|
504
381
|
}, r++)), n = o;
|
|
@@ -507,95 +384,146 @@ function cr(e) {
|
|
|
507
384
|
let i = n.match(/^(.*?)\*\*([^*]+)\*\*(.*)$/);
|
|
508
385
|
if (i) {
|
|
509
386
|
let [, e, a, o] = i;
|
|
510
|
-
e && t.push(/* @__PURE__ */
|
|
387
|
+
e && t.push(/* @__PURE__ */ J("span", { children: e }, r++)), t.push(/* @__PURE__ */ J("strong", {
|
|
511
388
|
className: "dc:font-semibold",
|
|
512
389
|
children: a
|
|
513
390
|
}, r++)), n = o;
|
|
514
391
|
continue;
|
|
515
392
|
}
|
|
516
|
-
t.push(/* @__PURE__ */
|
|
393
|
+
t.push(/* @__PURE__ */ J("span", { children: n }, r));
|
|
517
394
|
break;
|
|
518
395
|
}
|
|
519
396
|
return t;
|
|
520
397
|
}
|
|
521
|
-
var
|
|
398
|
+
var cr = {
|
|
522
399
|
discover_cubes: "Discovering cubes",
|
|
523
400
|
get_cube_metadata: "Reading metadata",
|
|
524
401
|
execute_query: "Executing query",
|
|
525
402
|
add_portlet: "Adding visualization",
|
|
526
403
|
add_markdown: "Adding explanation"
|
|
527
404
|
};
|
|
405
|
+
function lr(e, t, n) {
|
|
406
|
+
return e ? "bg-dc-accent text-dc-accent-text dc:rounded-br-sm" : t && !n ? "bg-dc-warning-bg text-dc-text dc:rounded-bl-sm" : "bg-dc-surface-secondary text-dc-text dc:rounded-bl-sm";
|
|
407
|
+
}
|
|
528
408
|
function ur({ toolCall: e, loadingComponent: t }) {
|
|
529
|
-
|
|
530
|
-
|
|
409
|
+
return e.status === "running" ? t ? /* @__PURE__ */ J("span", {
|
|
410
|
+
className: "dc:inline-flex dc:items-center dc:justify-center dc:h-3 dc:w-3",
|
|
411
|
+
children: t
|
|
412
|
+
}) : /* @__PURE__ */ J(B, { size: "xs" }) : /* @__PURE__ */ J("span", {
|
|
413
|
+
className: "dc:text-xs",
|
|
414
|
+
children: e.status === "error" ? "✗" : "✓"
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
function dr(e) {
|
|
418
|
+
return typeof e == "string" ? e : JSON.stringify(e, null, 2);
|
|
419
|
+
}
|
|
420
|
+
function fr({ result: e }) {
|
|
421
|
+
return e == null ? null : /* @__PURE__ */ J("pre", {
|
|
422
|
+
className: "dc:mt-1 dc:p-2 dc:rounded dc:text-[11px] dc:overflow-x-auto dc:max-h-32 dc:overflow-y-auto bg-dc-surface-secondary text-dc-text-secondary",
|
|
423
|
+
children: dr(e)
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
function pr({ toolCall: e, loadingComponent: t }) {
|
|
427
|
+
let [n, r] = K(!1), i = cr[e.name] || e.name, a = e.status === "running";
|
|
428
|
+
return /* @__PURE__ */ Y("div", {
|
|
531
429
|
className: "dc:my-1 dc:text-xs",
|
|
532
|
-
children: [/* @__PURE__ */
|
|
430
|
+
children: [/* @__PURE__ */ Y("button", {
|
|
533
431
|
onClick: () => r(!n),
|
|
534
432
|
className: "dc:flex dc:items-center dc:gap-1.5 text-dc-text-secondary dc:hover:opacity-80 dc:transition-opacity",
|
|
535
433
|
children: [
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
}) : /* @__PURE__ */ X(Wt, { size: "xs" }) : /* @__PURE__ */ X("span", {
|
|
540
|
-
className: "dc:text-xs",
|
|
541
|
-
children: e.status === "error" ? "✗" : "✓"
|
|
434
|
+
/* @__PURE__ */ J(ur, {
|
|
435
|
+
toolCall: e,
|
|
436
|
+
loadingComponent: t
|
|
542
437
|
}),
|
|
543
|
-
/* @__PURE__ */
|
|
544
|
-
!a && /* @__PURE__ */
|
|
438
|
+
/* @__PURE__ */ Y("span", { children: [i, a ? "..." : ""] }),
|
|
439
|
+
!a && /* @__PURE__ */ J("span", {
|
|
545
440
|
className: "dc:text-[10px] dc:opacity-60",
|
|
546
441
|
children: n ? "▲" : "▼"
|
|
547
442
|
})
|
|
548
443
|
]
|
|
549
|
-
}), n &&
|
|
550
|
-
|
|
551
|
-
|
|
444
|
+
}), n && /* @__PURE__ */ J(fr, { result: e.result })]
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
function mr({ error: e, hasContent: t }) {
|
|
448
|
+
return /* @__PURE__ */ Y("div", {
|
|
449
|
+
className: `dc:flex dc:items-start dc:gap-2 ${t ? "dc:mt-2 dc:pt-2 dc:border-t dc:border-current dc:border-opacity-10" : ""}`,
|
|
450
|
+
children: [/* @__PURE__ */ J("span", {
|
|
451
|
+
className: "dc:text-base dc:leading-none dc:mt-0.5 text-dc-warning dc:flex-shrink-0",
|
|
452
|
+
children: "⚠"
|
|
453
|
+
}), /* @__PURE__ */ J("span", {
|
|
454
|
+
className: "text-dc-text-secondary",
|
|
455
|
+
children: e
|
|
552
456
|
})]
|
|
553
457
|
});
|
|
554
458
|
}
|
|
555
|
-
|
|
556
|
-
let
|
|
557
|
-
return
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
459
|
+
function hr(e) {
|
|
460
|
+
let t = e.role === "user", n = !!e.content?.trim(), r = !!e.error, i = e.toolCalls ?? [], a = i.length > 0;
|
|
461
|
+
return {
|
|
462
|
+
isUser: t,
|
|
463
|
+
hasContent: n,
|
|
464
|
+
hasError: r,
|
|
465
|
+
hasToolCalls: a,
|
|
466
|
+
toolCalls: i,
|
|
467
|
+
shouldRender: t || n || r || a
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
function gr({ message: e, flags: t, loadingComponent: n }) {
|
|
471
|
+
let { isUser: r, hasContent: i, hasError: a, hasToolCalls: o, toolCalls: s } = t;
|
|
472
|
+
return /* @__PURE__ */ Y(q, { children: [
|
|
473
|
+
i && /* @__PURE__ */ J("div", {
|
|
474
|
+
className: "dc:whitespace-pre-wrap dc:break-words",
|
|
475
|
+
children: r ? e.content : sr(e.content)
|
|
476
|
+
}),
|
|
477
|
+
a && /* @__PURE__ */ J(mr, {
|
|
478
|
+
error: e.error,
|
|
479
|
+
hasContent: i
|
|
480
|
+
}),
|
|
481
|
+
o && /* @__PURE__ */ J(_r, {
|
|
482
|
+
toolCalls: s,
|
|
483
|
+
loadingComponent: n,
|
|
484
|
+
separated: i || a
|
|
485
|
+
})
|
|
486
|
+
] });
|
|
487
|
+
}
|
|
488
|
+
function _r({ toolCalls: e, loadingComponent: t, separated: n }) {
|
|
489
|
+
return /* @__PURE__ */ J("div", {
|
|
490
|
+
className: n ? "dc:mt-1 dc:border-t dc:border-current dc:border-opacity-10 dc:pt-1" : "",
|
|
491
|
+
children: e.map((e, n) => /* @__PURE__ */ J(pr, {
|
|
492
|
+
toolCall: e,
|
|
493
|
+
loadingComponent: t
|
|
494
|
+
}, e.id || n))
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
//#endregion
|
|
498
|
+
//#region src/client/components/AgenticNotebook/ChatMessage.tsx
|
|
499
|
+
var vr = { animation: "dc-msg-in 100ms ease-out" }, yr = V.memo(function({ message: e, loadingComponent: t }) {
|
|
500
|
+
let n = hr(e);
|
|
501
|
+
if (!n.shouldRender) return null;
|
|
502
|
+
let { isUser: r, hasContent: i, hasError: a } = n;
|
|
503
|
+
return /* @__PURE__ */ J("div", {
|
|
504
|
+
className: `dc:flex dc:mb-3 ${r ? "dc:justify-end" : "dc:justify-start"}`,
|
|
505
|
+
style: vr,
|
|
506
|
+
children: /* @__PURE__ */ J("div", {
|
|
507
|
+
className: `dc:max-w-[85%] dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm ${lr(r, a, i)}`,
|
|
508
|
+
children: /* @__PURE__ */ J(gr, {
|
|
509
|
+
message: e,
|
|
510
|
+
flags: n,
|
|
511
|
+
loadingComponent: t
|
|
512
|
+
})
|
|
585
513
|
})
|
|
586
514
|
});
|
|
587
|
-
}),
|
|
588
|
-
let { t: l } =
|
|
589
|
-
return
|
|
515
|
+
}), br = V.memo(function({ value: e, onChange: t, onSend: n, onStop: r, onContinue: i, isStreaming: a = !1, showContinue: o = !1, disabled: s = !1, placeholder: c }) {
|
|
516
|
+
let { t: l } = z(), u = c ?? l("notebook.chatInput.placeholder"), d = G(null);
|
|
517
|
+
return U(() => {
|
|
590
518
|
let e = d.current;
|
|
591
519
|
e && (e.style.height = "auto", e.style.height = `${Math.min(e.scrollHeight, 150)}px`);
|
|
592
|
-
}, [e]), /* @__PURE__ */
|
|
520
|
+
}, [e]), /* @__PURE__ */ Y("div", {
|
|
593
521
|
className: "dc:flex dc:gap-2 dc:items-end dc:p-3 border-dc-border dc:border-t",
|
|
594
|
-
children: [/* @__PURE__ */
|
|
522
|
+
children: [/* @__PURE__ */ J("textarea", {
|
|
595
523
|
ref: d,
|
|
596
524
|
value: e,
|
|
597
525
|
onChange: (e) => t(e.target.value),
|
|
598
|
-
onKeyDown:
|
|
526
|
+
onKeyDown: H((t) => {
|
|
599
527
|
t.key === "Enter" && !t.shiftKey && (t.preventDefault(), !s && e.trim() && n());
|
|
600
528
|
}, [
|
|
601
529
|
s,
|
|
@@ -606,253 +534,356 @@ var dr = { animation: "dc-msg-in 100ms ease-out" }, fr = U.memo(function({ messa
|
|
|
606
534
|
disabled: s,
|
|
607
535
|
rows: 1,
|
|
608
536
|
className: "dc:flex-1 dc:resize-none dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm bg-dc-surface-secondary text-dc-text border-dc-border dc:border dc:outline-none dc:focus:ring-1 focus:ring-dc-accent dc:disabled:opacity-50"
|
|
609
|
-
}), a ? /* @__PURE__ */
|
|
537
|
+
}), a ? /* @__PURE__ */ J("button", {
|
|
610
538
|
onClick: r,
|
|
611
539
|
className: "dc:px-4 dc:py-2 dc:rounded-lg dc:text-sm dc:font-medium dc:transition-colors text-dc-error border-dc-border dc:border dc:hover:opacity-80 dc:shrink-0",
|
|
612
540
|
children: l("notebook.chatInput.stop")
|
|
613
|
-
}) : /* @__PURE__ */
|
|
541
|
+
}) : /* @__PURE__ */ Y(q, { children: [o && !e.trim() && /* @__PURE__ */ J("button", {
|
|
614
542
|
onClick: () => {
|
|
615
543
|
i?.(), d.current?.focus();
|
|
616
544
|
},
|
|
617
545
|
className: "dc:px-4 dc:py-2 dc:rounded-lg dc:text-sm dc:font-medium dc:transition-colors border-dc-border dc:border text-dc-text-secondary dc:hover:opacity-80 dc:shrink-0",
|
|
618
546
|
children: l("notebook.chatInput.continue")
|
|
619
|
-
}), /* @__PURE__ */
|
|
547
|
+
}), /* @__PURE__ */ J("button", {
|
|
620
548
|
onClick: n,
|
|
621
549
|
disabled: s || !e.trim(),
|
|
622
550
|
className: "dc:px-4 dc:py-2 dc:rounded-lg dc:text-sm dc:font-medium dc:transition-colors bg-dc-accent text-dc-accent-text dc:hover:opacity-90 dc:disabled:opacity-40 dc:disabled:cursor-not-allowed dc:shrink-0",
|
|
623
551
|
children: l("notebook.chatInput.send")
|
|
624
552
|
})] })]
|
|
625
553
|
});
|
|
626
|
-
})
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
554
|
+
});
|
|
555
|
+
//#endregion
|
|
556
|
+
//#region src/client/hooks/agentChatStream.ts
|
|
557
|
+
function xr(e) {
|
|
558
|
+
if (e.startsWith("{") || e.includes("\"type\":\"error\"")) try {
|
|
559
|
+
let t = JSON.parse(e.replace(/^Error:\s*/, ""));
|
|
560
|
+
return {
|
|
561
|
+
overloaded_error: "The AI service is temporarily busy. Please try again in a moment.",
|
|
562
|
+
rate_limit_error: "Too many requests. Please wait a moment and try again.",
|
|
563
|
+
api_error: "The AI service encountered an error. Please try again.",
|
|
564
|
+
authentication_error: "Authentication failed. Please check your configuration."
|
|
565
|
+
}[t.error?.type || t.type || ""] || "The AI service encountered an error. Please try again.";
|
|
566
|
+
} catch {
|
|
567
|
+
return "The AI service encountered an error. Please try again.";
|
|
568
|
+
}
|
|
569
|
+
if (e.startsWith("Agent request failed:")) {
|
|
570
|
+
let t = e.match(/\d+/)?.[0];
|
|
571
|
+
return t === "429" ? "Too many requests. Please wait a moment and try again." : t === "503" || t === "529" ? "The AI service is temporarily busy. Please try again in a moment." : "The AI service is temporarily unavailable. Please try again.";
|
|
572
|
+
}
|
|
573
|
+
return e;
|
|
574
|
+
}
|
|
575
|
+
function Sr(e, t) {
|
|
576
|
+
switch (e.type) {
|
|
577
|
+
case "text_delta":
|
|
578
|
+
t.onTextDelta(e.data);
|
|
579
|
+
break;
|
|
580
|
+
case "tool_use_start":
|
|
581
|
+
t.onToolStart(e.data.id, e.data.name, e.data.input);
|
|
582
|
+
break;
|
|
583
|
+
case "tool_use_result":
|
|
584
|
+
t.onToolResult(e.data.id, e.data.name, e.data.result, e.data.isError);
|
|
585
|
+
break;
|
|
586
|
+
case "add_portlet":
|
|
587
|
+
t.onAddPortlet({
|
|
588
|
+
...e.data,
|
|
589
|
+
type: "portlet"
|
|
590
|
+
});
|
|
591
|
+
break;
|
|
592
|
+
case "add_markdown":
|
|
593
|
+
t.onAddMarkdown({
|
|
594
|
+
...e.data,
|
|
595
|
+
type: "markdown"
|
|
596
|
+
});
|
|
597
|
+
break;
|
|
598
|
+
case "dashboard_saved":
|
|
599
|
+
t.onDashboardSaved?.(e.data);
|
|
600
|
+
break;
|
|
601
|
+
case "turn_complete":
|
|
602
|
+
t.onTurnComplete?.();
|
|
603
|
+
break;
|
|
604
|
+
case "done":
|
|
605
|
+
t.onDone(e.data.sessionId, e.data.traceId);
|
|
606
|
+
break;
|
|
607
|
+
case "error":
|
|
608
|
+
t.onError(e.data.message);
|
|
609
|
+
break;
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
function Cr(e, t) {
|
|
613
|
+
let n = e.trim().split("\n");
|
|
614
|
+
for (let e of n) if (e.startsWith("data: ")) try {
|
|
615
|
+
t(JSON.parse(e.slice(6)));
|
|
616
|
+
} catch {}
|
|
617
|
+
}
|
|
618
|
+
function wr(e) {
|
|
619
|
+
let t = {
|
|
620
|
+
"Content-Type": "application/json",
|
|
621
|
+
...e.baseHeaders
|
|
622
|
+
};
|
|
623
|
+
return e.agentApiKey && (t["X-Agent-Api-Key"] = e.agentApiKey), e.agentProvider && (t["X-Agent-Provider"] = e.agentProvider), e.agentModel && (t["X-Agent-Model"] = e.agentModel), e.agentProviderEndpoint && (t["X-Agent-Provider-Endpoint"] = e.agentProviderEndpoint), t;
|
|
624
|
+
}
|
|
625
|
+
//#endregion
|
|
626
|
+
//#region src/client/hooks/useAgentChat.ts
|
|
627
|
+
function Tr(e) {
|
|
628
|
+
let { agentEndpoint: t, agentApiKey: n, agentProvider: r, agentModel: i, agentProviderEndpoint: a } = e, { cubeApi: o } = j(), s = G(null), [c, l] = K(!1), u = G(e);
|
|
629
|
+
return u.current = e, {
|
|
630
|
+
sendMessage: H(async (e, c, d) => {
|
|
631
|
+
let f = (e) => Sr(e, u.current);
|
|
632
|
+
s.current && s.current.abort();
|
|
633
|
+
let p = new AbortController();
|
|
634
|
+
s.current = p, l(!0);
|
|
635
|
+
try {
|
|
636
|
+
let s = t || `${o.apiUrl || "/cubejs-api/v1"}/agent/chat`, l = wr({
|
|
637
|
+
baseHeaders: o.headers,
|
|
638
|
+
agentApiKey: n,
|
|
639
|
+
agentProvider: r,
|
|
640
|
+
agentModel: i,
|
|
641
|
+
agentProviderEndpoint: a
|
|
642
|
+
}), u = await fetch(s, {
|
|
643
|
+
method: "POST",
|
|
644
|
+
headers: l,
|
|
645
|
+
credentials: o.credentials ?? "include",
|
|
646
|
+
body: JSON.stringify({
|
|
647
|
+
message: e,
|
|
648
|
+
...c ? { sessionId: c } : {},
|
|
649
|
+
...d && d.length > 0 ? { history: d } : {}
|
|
650
|
+
}),
|
|
651
|
+
signal: p.signal
|
|
652
|
+
});
|
|
653
|
+
if (!u.ok) {
|
|
654
|
+
let e = await u.json().catch(() => ({}));
|
|
655
|
+
throw Error(e.error || `Agent request failed: ${u.status}`);
|
|
656
|
+
}
|
|
657
|
+
if (!u.body) throw Error("No response body received");
|
|
658
|
+
let m = u.body.getReader(), h = new TextDecoder(), g = "";
|
|
659
|
+
for (;;) {
|
|
660
|
+
let { done: e, value: t } = await m.read();
|
|
661
|
+
if (e) break;
|
|
662
|
+
g += h.decode(t, { stream: !0 });
|
|
663
|
+
let n = g.split("\n\n");
|
|
664
|
+
g = n.pop() || "";
|
|
665
|
+
for (let e of n) Cr(e, f);
|
|
666
|
+
}
|
|
667
|
+
g.trim() && Cr(g, f);
|
|
668
|
+
} catch (e) {
|
|
669
|
+
if (e.name !== "AbortError") {
|
|
670
|
+
let t = e instanceof Error ? e.message : "Stream failed";
|
|
671
|
+
u.current.onError(xr(t));
|
|
672
|
+
}
|
|
673
|
+
} finally {
|
|
674
|
+
l(!1), s.current = null;
|
|
675
|
+
}
|
|
676
|
+
}, [
|
|
677
|
+
o,
|
|
678
|
+
t,
|
|
679
|
+
n,
|
|
680
|
+
r,
|
|
681
|
+
i,
|
|
682
|
+
a
|
|
683
|
+
]),
|
|
684
|
+
isStreaming: c,
|
|
685
|
+
abort: H(() => {
|
|
686
|
+
s.current && (s.current.abort(), s.current = null, l(!1));
|
|
687
|
+
}, [])
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
//#endregion
|
|
691
|
+
//#region src/client/components/AgenticNotebook/useAgentChatController.ts
|
|
692
|
+
function Er({ agentEndpoint: e, agentApiKey: n, agentProvider: r, agentModel: i, agentProviderEndpoint: a, onDashboardSaved: o, messages: s, isStreaming: c }) {
|
|
693
|
+
let [l, u] = K(!1), [d, f] = K(null), p = G(!1), { addMessage: m, appendToLastAssistantMessage: h, setLastAssistantError: g, addToolCallToLastAssistant: _, updateLastToolCall: v, setIsStreaming: y, setInputValue: b, setSessionId: x } = X(t(Gn)), S = X((e) => e.sessionId), C = X((e) => e.addBlock), w = G(s);
|
|
694
|
+
w.current = s;
|
|
695
|
+
let T = G(c);
|
|
696
|
+
T.current = c;
|
|
697
|
+
let E = G(S);
|
|
698
|
+
E.current = S;
|
|
699
|
+
let D = H(() => {
|
|
700
|
+
p.current && (p.current = !1, m({
|
|
635
701
|
id: `msg-${Date.now()}`,
|
|
636
702
|
role: "assistant",
|
|
637
703
|
content: "",
|
|
638
704
|
toolCalls: [],
|
|
639
705
|
timestamp: Date.now()
|
|
640
706
|
}));
|
|
641
|
-
}, [
|
|
642
|
-
G(() => {
|
|
643
|
-
x.length > ee.current && f.current?.scrollIntoView({ behavior: "smooth" }), ee.current = x.length;
|
|
644
|
-
}, [x]), G(() => {
|
|
645
|
-
v && f.current?.scrollIntoView({ behavior: "smooth" });
|
|
646
|
-
}, [v]);
|
|
647
|
-
let { sendMessage: B, abort: te } = sr({
|
|
707
|
+
}, [m]), { sendMessage: O, abort: k } = Tr({
|
|
648
708
|
agentEndpoint: e,
|
|
649
709
|
agentApiKey: n,
|
|
650
710
|
agentProvider: r,
|
|
651
711
|
agentModel: i,
|
|
652
712
|
agentProviderEndpoint: a,
|
|
653
|
-
onTextDelta:
|
|
654
|
-
|
|
655
|
-
}, [
|
|
656
|
-
onToolStart:
|
|
657
|
-
|
|
713
|
+
onTextDelta: H((e) => {
|
|
714
|
+
u(!1), D(), h(e);
|
|
715
|
+
}, [D, h]),
|
|
716
|
+
onToolStart: H((e, t, n) => {
|
|
717
|
+
u(!1), D(), _({
|
|
658
718
|
id: e,
|
|
659
719
|
name: t,
|
|
660
720
|
input: n,
|
|
661
721
|
status: "running"
|
|
662
722
|
});
|
|
663
|
-
}, [
|
|
664
|
-
onToolResult:
|
|
665
|
-
|
|
723
|
+
}, [D, _]),
|
|
724
|
+
onToolResult: H((e, t, n, r) => {
|
|
725
|
+
v({
|
|
666
726
|
id: e,
|
|
667
727
|
status: r ? "error" : "complete",
|
|
668
728
|
result: n
|
|
669
729
|
});
|
|
670
|
-
}, [
|
|
671
|
-
onAddPortlet:
|
|
672
|
-
|
|
673
|
-
}, [
|
|
674
|
-
onAddMarkdown:
|
|
675
|
-
|
|
676
|
-
}, [
|
|
677
|
-
onDashboardSaved:
|
|
678
|
-
onTurnComplete:
|
|
679
|
-
|
|
730
|
+
}, [v]),
|
|
731
|
+
onAddPortlet: H((e) => {
|
|
732
|
+
C(e);
|
|
733
|
+
}, [C]),
|
|
734
|
+
onAddMarkdown: H((e) => {
|
|
735
|
+
C(e);
|
|
736
|
+
}, [C]),
|
|
737
|
+
onDashboardSaved: o,
|
|
738
|
+
onTurnComplete: H(() => {
|
|
739
|
+
p.current = !0, u(!0);
|
|
680
740
|
}, []),
|
|
681
|
-
onDone:
|
|
682
|
-
|
|
683
|
-
}, [
|
|
684
|
-
onError:
|
|
685
|
-
|
|
741
|
+
onDone: H((e, t) => {
|
|
742
|
+
p.current = !1, x(e), y(!1), u(!1), t && f(t);
|
|
743
|
+
}, [x, y]),
|
|
744
|
+
onError: H((e) => {
|
|
745
|
+
u(!1), D(), g(e), y(!1);
|
|
686
746
|
}, [
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
747
|
+
D,
|
|
748
|
+
g,
|
|
749
|
+
y
|
|
690
750
|
])
|
|
691
|
-
}), V = W((e) => {
|
|
692
|
-
if (!e || L.current) return;
|
|
693
|
-
b.current = !1;
|
|
694
|
-
let t = I.current.map((e) => ({
|
|
695
|
-
role: e.role,
|
|
696
|
-
content: e.content,
|
|
697
|
-
...e.toolCalls && e.toolCalls.length > 0 ? { toolCalls: e.toolCalls } : {}
|
|
698
|
-
}));
|
|
699
|
-
w({
|
|
700
|
-
id: `msg-${Date.now()}`,
|
|
701
|
-
role: "user",
|
|
702
|
-
content: e,
|
|
703
|
-
timestamp: Date.now()
|
|
704
|
-
}), w({
|
|
705
|
-
id: `msg-${Date.now() + 1}`,
|
|
706
|
-
role: "assistant",
|
|
707
|
-
content: "",
|
|
708
|
-
toolCalls: [],
|
|
709
|
-
timestamp: Date.now()
|
|
710
|
-
}), A(""), k(!0), y(!0), B(e, R.current, t);
|
|
711
|
-
}, [
|
|
712
|
-
w,
|
|
713
|
-
A,
|
|
714
|
-
k,
|
|
715
|
-
B
|
|
716
|
-
]);
|
|
717
|
-
G(() => {
|
|
718
|
-
if (u && !p.current && x.length === 0) {
|
|
719
|
-
p.current = !0;
|
|
720
|
-
let e = setTimeout(() => V(u), 100);
|
|
721
|
-
return () => {
|
|
722
|
-
clearTimeout(e), p.current = !1;
|
|
723
|
-
};
|
|
724
|
-
}
|
|
725
|
-
}, [
|
|
726
|
-
u,
|
|
727
|
-
x.length,
|
|
728
|
-
V
|
|
729
|
-
]);
|
|
730
|
-
let ne = q(C);
|
|
731
|
-
ne.current = C;
|
|
732
|
-
let re = W(() => {
|
|
733
|
-
V(ne.current.trim());
|
|
734
|
-
}, [V]), ie = W(() => {
|
|
735
|
-
te(), k(!1);
|
|
736
|
-
}, [te, k]), ae = W(() => {
|
|
737
|
-
A("");
|
|
738
|
-
}, [A]), oe = W(() => {
|
|
739
|
-
te(), k(!1), y(!1), P(), h(null), _(/* @__PURE__ */ new Set()), o?.();
|
|
740
|
-
}, [
|
|
741
|
-
te,
|
|
742
|
-
k,
|
|
743
|
-
P,
|
|
744
|
-
o
|
|
745
|
-
]), se = W(() => {
|
|
746
|
-
V(d("notebook.saveAsDashboardPrompt"));
|
|
747
|
-
}, [V, d]), ce = W((e) => {
|
|
748
|
-
!m || !c || (c({
|
|
749
|
-
traceId: m,
|
|
750
|
-
value: e
|
|
751
|
-
}), _((e) => new Set(e).add(m)));
|
|
752
|
-
}, [m, c]), le = !!s && !S && F > 0 && x.length > 0, ue = !!c && !S && m && x.length > 0 && !g.has(m), de = m ? g.has(m) : !1;
|
|
753
|
-
return /* @__PURE__ */ Z("div", {
|
|
754
|
-
className: "dc:flex dc:flex-col dc:h-full bg-dc-surface",
|
|
755
|
-
children: [
|
|
756
|
-
/* @__PURE__ */ Z("div", {
|
|
757
|
-
className: "dc:flex dc:items-center dc:justify-between dc:px-4 dc:py-3 border-dc-border dc:border-b",
|
|
758
|
-
children: [/* @__PURE__ */ X("h3", {
|
|
759
|
-
className: "dc:text-sm dc:font-semibold text-dc-text",
|
|
760
|
-
children: d("notebook.aiAssistant")
|
|
761
|
-
}), /* @__PURE__ */ Z("div", {
|
|
762
|
-
className: "dc:flex dc:items-center dc:gap-1",
|
|
763
|
-
children: [le && /* @__PURE__ */ X("button", {
|
|
764
|
-
onClick: se,
|
|
765
|
-
className: "dc:text-xs dc:px-2 dc:py-1 dc:rounded text-dc-accent dc:hover:opacity-80",
|
|
766
|
-
title: d("notebook.saveAsDashboardTitle"),
|
|
767
|
-
children: d("notebook.saveAsDashboard")
|
|
768
|
-
}), x.length > 0 && /* @__PURE__ */ X("button", {
|
|
769
|
-
onClick: oe,
|
|
770
|
-
disabled: S,
|
|
771
|
-
className: "dc:text-xs dc:px-2 dc:py-1 dc:rounded text-dc-text-secondary dc:hover:opacity-80 dc:disabled:opacity-40",
|
|
772
|
-
title: d("notebook.clearTitle"),
|
|
773
|
-
children: d("common.actions.clear")
|
|
774
|
-
})]
|
|
775
|
-
})]
|
|
776
|
-
}),
|
|
777
|
-
/* @__PURE__ */ Z("div", {
|
|
778
|
-
className: "dc:flex-1 dc:overflow-y-auto dc:px-4 dc:py-3",
|
|
779
|
-
children: [
|
|
780
|
-
x.length === 0 ? /* @__PURE__ */ X(vr, {}) : x.map((e) => /* @__PURE__ */ X(fr, {
|
|
781
|
-
message: e,
|
|
782
|
-
loadingComponent: l
|
|
783
|
-
}, e.id)),
|
|
784
|
-
v && /* @__PURE__ */ X(_r, { loadingComponent: l }),
|
|
785
|
-
(ue || de) && /* @__PURE__ */ X("div", {
|
|
786
|
-
className: "dc:flex dc:items-center dc:justify-center dc:gap-3 dc:py-4 dc:mt-2",
|
|
787
|
-
children: de ? /* @__PURE__ */ X("span", {
|
|
788
|
-
className: "dc:text-sm text-dc-text-secondary",
|
|
789
|
-
children: d("notebook.feedbackThanks")
|
|
790
|
-
}) : /* @__PURE__ */ Z(Y, { children: [/* @__PURE__ */ X("span", {
|
|
791
|
-
className: "dc:text-sm text-dc-text-secondary",
|
|
792
|
-
children: d("notebook.feedbackQuestion")
|
|
793
|
-
}), /* @__PURE__ */ Z("div", {
|
|
794
|
-
className: "dc:flex dc:items-center dc:gap-2",
|
|
795
|
-
children: [/* @__PURE__ */ Z("button", {
|
|
796
|
-
onClick: () => ce(1),
|
|
797
|
-
className: "dc:flex dc:items-center dc:gap-1.5 dc:px-3 dc:py-1.5 dc:rounded-lg dc:text-sm dc:font-medium border-dc-border dc:border text-dc-success hover:bg-dc-success-bg dc:transition-colors bg-dc-surface dc:cursor-pointer",
|
|
798
|
-
children: [/* @__PURE__ */ X(mr, { className: "dc:w-4 dc:h-4" }), d("notebook.feedbackYes")]
|
|
799
|
-
}), /* @__PURE__ */ Z("button", {
|
|
800
|
-
onClick: () => ce(0),
|
|
801
|
-
className: "dc:flex dc:items-center dc:gap-1.5 dc:px-3 dc:py-1.5 dc:rounded-lg dc:text-sm dc:font-medium border-dc-border dc:border text-dc-error hover:bg-dc-danger-bg dc:transition-colors bg-dc-surface dc:cursor-pointer",
|
|
802
|
-
children: [/* @__PURE__ */ X(hr, { className: "dc:w-4 dc:h-4" }), d("notebook.feedbackNo")]
|
|
803
|
-
})]
|
|
804
|
-
})] })
|
|
805
|
-
}),
|
|
806
|
-
/* @__PURE__ */ X("div", { ref: f })
|
|
807
|
-
]
|
|
808
|
-
}),
|
|
809
|
-
/* @__PURE__ */ X(pr, {
|
|
810
|
-
value: C,
|
|
811
|
-
onChange: A,
|
|
812
|
-
onSend: re,
|
|
813
|
-
onStop: ie,
|
|
814
|
-
onContinue: ae,
|
|
815
|
-
isStreaming: S,
|
|
816
|
-
showContinue: !S && x.length > 0
|
|
817
|
-
})
|
|
818
|
-
]
|
|
819
751
|
});
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
752
|
+
return {
|
|
753
|
+
doSend: H((e) => {
|
|
754
|
+
if (!e || T.current) return;
|
|
755
|
+
p.current = !1;
|
|
756
|
+
let t = w.current.map((e) => ({
|
|
757
|
+
role: e.role,
|
|
758
|
+
content: e.content,
|
|
759
|
+
...e.toolCalls && e.toolCalls.length > 0 ? { toolCalls: e.toolCalls } : {}
|
|
760
|
+
}));
|
|
761
|
+
m({
|
|
762
|
+
id: `msg-${Date.now()}`,
|
|
763
|
+
role: "user",
|
|
764
|
+
content: e,
|
|
765
|
+
timestamp: Date.now()
|
|
766
|
+
}), m({
|
|
767
|
+
id: `msg-${Date.now() + 1}`,
|
|
768
|
+
role: "assistant",
|
|
769
|
+
content: "",
|
|
770
|
+
toolCalls: [],
|
|
771
|
+
timestamp: Date.now()
|
|
772
|
+
}), b(""), y(!0), u(!0), O(e, E.current, t);
|
|
773
|
+
}, [
|
|
774
|
+
m,
|
|
775
|
+
b,
|
|
776
|
+
y,
|
|
777
|
+
O
|
|
778
|
+
]),
|
|
779
|
+
handleStop: H(() => {
|
|
780
|
+
k(), y(!1);
|
|
781
|
+
}, [k, y]),
|
|
782
|
+
abort: k,
|
|
783
|
+
isThinking: l,
|
|
784
|
+
setIsThinking: u,
|
|
785
|
+
lastTraceId: d,
|
|
786
|
+
setLastTraceId: f
|
|
787
|
+
};
|
|
788
|
+
}
|
|
789
|
+
//#endregion
|
|
790
|
+
//#region src/client/components/AgenticNotebook/agentChatParts.tsx
|
|
791
|
+
var Dr = D("thumbUp"), Or = D("thumbDown");
|
|
792
|
+
function kr(...e) {
|
|
793
|
+
return e.every(Boolean);
|
|
794
|
+
}
|
|
795
|
+
function Ar(e) {
|
|
796
|
+
let t = kr(!e.isStreaming, e.messageCount > 0), n = e.lastTraceId ? e.scoredTraceIds.has(e.lastTraceId) : !1;
|
|
797
|
+
return {
|
|
798
|
+
showSaveAsDashboard: kr(t, e.onDashboardSaved, e.portletBlockCount > 0),
|
|
799
|
+
showClear: e.messageCount > 0,
|
|
800
|
+
showFeedback: kr(t, e.onScore, !!e.lastTraceId, !n),
|
|
801
|
+
lastScored: n
|
|
802
|
+
};
|
|
803
|
+
}
|
|
804
|
+
function jr({ showSaveAsDashboard: e, showClear: t, isStreaming: n, onSaveAsDashboard: r, onClear: i }) {
|
|
805
|
+
let { t: a } = z();
|
|
806
|
+
return /* @__PURE__ */ Y("div", {
|
|
807
|
+
className: "dc:flex dc:items-center dc:justify-between dc:px-4 dc:py-3 border-dc-border dc:border-b",
|
|
808
|
+
children: [/* @__PURE__ */ J("h3", {
|
|
809
|
+
className: "dc:text-sm dc:font-semibold text-dc-text",
|
|
810
|
+
children: a("notebook.aiAssistant")
|
|
811
|
+
}), /* @__PURE__ */ Y("div", {
|
|
812
|
+
className: "dc:flex dc:items-center dc:gap-1",
|
|
813
|
+
children: [e && /* @__PURE__ */ J("button", {
|
|
814
|
+
onClick: r,
|
|
815
|
+
className: "dc:text-xs dc:px-2 dc:py-1 dc:rounded text-dc-accent dc:hover:opacity-80",
|
|
816
|
+
title: a("notebook.saveAsDashboardTitle"),
|
|
817
|
+
children: a("notebook.saveAsDashboard")
|
|
818
|
+
}), t && /* @__PURE__ */ J("button", {
|
|
819
|
+
onClick: i,
|
|
820
|
+
disabled: n,
|
|
821
|
+
className: "dc:text-xs dc:px-2 dc:py-1 dc:rounded text-dc-text-secondary dc:hover:opacity-80 dc:disabled:opacity-40",
|
|
822
|
+
title: a("notebook.clearTitle"),
|
|
823
|
+
children: a("common.actions.clear")
|
|
824
|
+
})]
|
|
825
|
+
})]
|
|
826
|
+
});
|
|
827
|
+
}
|
|
828
|
+
function Mr({ scored: e, onScore: t }) {
|
|
829
|
+
let { t: n } = z();
|
|
830
|
+
return /* @__PURE__ */ J("div", {
|
|
831
|
+
className: "dc:flex dc:items-center dc:justify-center dc:gap-3 dc:py-4 dc:mt-2",
|
|
832
|
+
children: e ? /* @__PURE__ */ J("span", {
|
|
833
|
+
className: "dc:text-sm text-dc-text-secondary",
|
|
834
|
+
children: n("notebook.feedbackThanks")
|
|
835
|
+
}) : /* @__PURE__ */ Y(q, { children: [/* @__PURE__ */ J("span", {
|
|
836
|
+
className: "dc:text-sm text-dc-text-secondary",
|
|
837
|
+
children: n("notebook.feedbackQuestion")
|
|
838
|
+
}), /* @__PURE__ */ Y("div", {
|
|
839
|
+
className: "dc:flex dc:items-center dc:gap-2",
|
|
840
|
+
children: [/* @__PURE__ */ Y("button", {
|
|
841
|
+
onClick: () => t(1),
|
|
842
|
+
className: "dc:flex dc:items-center dc:gap-1.5 dc:px-3 dc:py-1.5 dc:rounded-lg dc:text-sm dc:font-medium border-dc-border dc:border text-dc-success hover:bg-dc-success-bg dc:transition-colors bg-dc-surface dc:cursor-pointer",
|
|
843
|
+
children: [/* @__PURE__ */ J(Dr, { className: "dc:w-4 dc:h-4" }), n("notebook.feedbackYes")]
|
|
844
|
+
}), /* @__PURE__ */ Y("button", {
|
|
845
|
+
onClick: () => t(0),
|
|
846
|
+
className: "dc:flex dc:items-center dc:gap-1.5 dc:px-3 dc:py-1.5 dc:rounded-lg dc:text-sm dc:font-medium border-dc-border dc:border text-dc-error hover:bg-dc-danger-bg dc:transition-colors bg-dc-surface dc:cursor-pointer",
|
|
847
|
+
children: [/* @__PURE__ */ J(Or, { className: "dc:w-4 dc:h-4" }), n("notebook.feedbackNo")]
|
|
848
|
+
})]
|
|
849
|
+
})] })
|
|
850
|
+
});
|
|
851
|
+
}
|
|
852
|
+
function Nr({ loadingComponent: e }) {
|
|
853
|
+
let { t } = z();
|
|
854
|
+
return /* @__PURE__ */ J("div", {
|
|
824
855
|
className: "dc:flex dc:mb-3 dc:justify-start",
|
|
825
856
|
style: { animation: "dc-msg-in 100ms ease-out" },
|
|
826
|
-
children: /* @__PURE__ */
|
|
857
|
+
children: /* @__PURE__ */ Y("div", {
|
|
827
858
|
className: "dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm bg-dc-surface-secondary text-dc-text-secondary dc:rounded-bl-sm dc:flex dc:items-center dc:gap-2",
|
|
828
|
-
children: [e ? /* @__PURE__ */
|
|
859
|
+
children: [e ? /* @__PURE__ */ J("span", {
|
|
829
860
|
className: "dc:inline-flex dc:items-center dc:justify-center dc:h-4 dc:w-4",
|
|
830
861
|
children: e
|
|
831
|
-
}) : /* @__PURE__ */
|
|
862
|
+
}) : /* @__PURE__ */ J(B, { size: "xs" }), /* @__PURE__ */ J("span", { children: t("notebook.thinking") })]
|
|
832
863
|
})
|
|
833
864
|
});
|
|
834
865
|
}
|
|
835
|
-
function
|
|
836
|
-
let { t: e } =
|
|
837
|
-
return /* @__PURE__ */
|
|
866
|
+
function Pr() {
|
|
867
|
+
let { t: e } = z();
|
|
868
|
+
return /* @__PURE__ */ J("div", {
|
|
838
869
|
className: "dc:flex dc:items-center dc:justify-center dc:h-full",
|
|
839
|
-
children: /* @__PURE__ */
|
|
870
|
+
children: /* @__PURE__ */ Y("div", {
|
|
840
871
|
className: "dc:text-center dc:max-w-xs",
|
|
841
872
|
children: [
|
|
842
|
-
/* @__PURE__ */
|
|
873
|
+
/* @__PURE__ */ J("div", {
|
|
843
874
|
className: "dc:text-lg dc:font-semibold text-dc-text dc:mb-2",
|
|
844
875
|
children: e("notebook.emptyState.title")
|
|
845
876
|
}),
|
|
846
|
-
/* @__PURE__ */
|
|
877
|
+
/* @__PURE__ */ J("p", {
|
|
847
878
|
className: "dc:text-sm text-dc-text-secondary dc:mb-4",
|
|
848
879
|
children: e("notebook.emptyState.description")
|
|
849
880
|
}),
|
|
850
|
-
/* @__PURE__ */
|
|
881
|
+
/* @__PURE__ */ Y("div", {
|
|
851
882
|
className: "dc:space-y-2 dc:text-xs text-dc-text-muted",
|
|
852
883
|
children: [
|
|
853
|
-
/* @__PURE__ */
|
|
854
|
-
/* @__PURE__ */
|
|
855
|
-
/* @__PURE__ */
|
|
884
|
+
/* @__PURE__ */ J("p", { children: e("notebook.emptyState.example1") }),
|
|
885
|
+
/* @__PURE__ */ J("p", { children: e("notebook.emptyState.example2") }),
|
|
886
|
+
/* @__PURE__ */ J("p", { children: e("notebook.emptyState.example3") })
|
|
856
887
|
]
|
|
857
888
|
})
|
|
858
889
|
]
|
|
@@ -860,10 +891,154 @@ function vr() {
|
|
|
860
891
|
});
|
|
861
892
|
}
|
|
862
893
|
//#endregion
|
|
894
|
+
//#region src/client/components/AgenticNotebook/AgentChatPanel.tsx
|
|
895
|
+
function Fr({ messages: e, loadingComponent: t }) {
|
|
896
|
+
return e.length === 0 ? /* @__PURE__ */ J(Pr, {}) : /* @__PURE__ */ J(q, { children: e.map((e) => /* @__PURE__ */ J(yr, {
|
|
897
|
+
message: e,
|
|
898
|
+
loadingComponent: t
|
|
899
|
+
}, e.id)) });
|
|
900
|
+
}
|
|
901
|
+
var Ir = V.memo(function({ agentEndpoint: e, agentApiKey: n, agentProvider: r, agentModel: i, agentProviderEndpoint: a, onClear: o, onDashboardSaved: s, onScore: c, loadingComponent: l, initialPrompt: u }) {
|
|
902
|
+
let { t: d } = z(), f = G(null), p = G(!1), [m, h] = K(/* @__PURE__ */ new Set()), { messages: g, isStreaming: _, inputValue: v } = X(t(Wn)), y = X((e) => e.setInputValue), b = X((e) => e.reset), x = X((e) => e.setIsStreaming), S = X((e) => e.blocks.filter((e) => e.type === "portlet").length), { doSend: C, handleStop: w, abort: T, isThinking: E, setIsThinking: D, lastTraceId: O, setLastTraceId: k } = Er({
|
|
903
|
+
agentEndpoint: e,
|
|
904
|
+
agentApiKey: n,
|
|
905
|
+
agentProvider: r,
|
|
906
|
+
agentModel: i,
|
|
907
|
+
agentProviderEndpoint: a,
|
|
908
|
+
onDashboardSaved: s,
|
|
909
|
+
messages: g,
|
|
910
|
+
isStreaming: _
|
|
911
|
+
}), A = G(g.length);
|
|
912
|
+
U(() => {
|
|
913
|
+
g.length > A.current && f.current?.scrollIntoView({ behavior: "smooth" }), A.current = g.length;
|
|
914
|
+
}, [g]), U(() => {
|
|
915
|
+
E && f.current?.scrollIntoView({ behavior: "smooth" });
|
|
916
|
+
}, [E]), U(() => {
|
|
917
|
+
if (u && !p.current && g.length === 0) {
|
|
918
|
+
p.current = !0;
|
|
919
|
+
let e = setTimeout(() => C(u), 100);
|
|
920
|
+
return () => {
|
|
921
|
+
clearTimeout(e), p.current = !1;
|
|
922
|
+
};
|
|
923
|
+
}
|
|
924
|
+
}, [
|
|
925
|
+
u,
|
|
926
|
+
g.length,
|
|
927
|
+
C
|
|
928
|
+
]);
|
|
929
|
+
let j = G(v);
|
|
930
|
+
j.current = v;
|
|
931
|
+
let M = H(() => {
|
|
932
|
+
C(j.current.trim());
|
|
933
|
+
}, [C]), N = H(() => {
|
|
934
|
+
y("");
|
|
935
|
+
}, [y]), P = H(() => {
|
|
936
|
+
T(), x(!1), D(!1), b(), k(null), h(/* @__PURE__ */ new Set()), o?.();
|
|
937
|
+
}, [
|
|
938
|
+
T,
|
|
939
|
+
x,
|
|
940
|
+
D,
|
|
941
|
+
b,
|
|
942
|
+
k,
|
|
943
|
+
o
|
|
944
|
+
]), F = H(() => {
|
|
945
|
+
C(d("notebook.saveAsDashboardPrompt"));
|
|
946
|
+
}, [C, d]), I = H((e) => {
|
|
947
|
+
!O || !c || (c({
|
|
948
|
+
traceId: O,
|
|
949
|
+
value: e
|
|
950
|
+
}), h((e) => new Set(e).add(O)));
|
|
951
|
+
}, [O, c]), { showSaveAsDashboard: L, showClear: ee, showFeedback: te, lastScored: R } = Ar({
|
|
952
|
+
onDashboardSaved: !!s,
|
|
953
|
+
onScore: !!c,
|
|
954
|
+
isStreaming: _,
|
|
955
|
+
portletBlockCount: S,
|
|
956
|
+
messageCount: g.length,
|
|
957
|
+
lastTraceId: O,
|
|
958
|
+
scoredTraceIds: m
|
|
959
|
+
});
|
|
960
|
+
return /* @__PURE__ */ Y("div", {
|
|
961
|
+
className: "dc:flex dc:flex-col dc:h-full bg-dc-surface",
|
|
962
|
+
children: [
|
|
963
|
+
/* @__PURE__ */ J(jr, {
|
|
964
|
+
showSaveAsDashboard: L,
|
|
965
|
+
showClear: ee,
|
|
966
|
+
isStreaming: _,
|
|
967
|
+
onSaveAsDashboard: F,
|
|
968
|
+
onClear: P
|
|
969
|
+
}),
|
|
970
|
+
/* @__PURE__ */ Y("div", {
|
|
971
|
+
className: "dc:flex-1 dc:overflow-y-auto dc:px-4 dc:py-3",
|
|
972
|
+
children: [
|
|
973
|
+
/* @__PURE__ */ J(Fr, {
|
|
974
|
+
messages: g,
|
|
975
|
+
loadingComponent: l
|
|
976
|
+
}),
|
|
977
|
+
E && /* @__PURE__ */ J(Nr, { loadingComponent: l }),
|
|
978
|
+
(te || R) && /* @__PURE__ */ J(Mr, {
|
|
979
|
+
scored: R,
|
|
980
|
+
onScore: I
|
|
981
|
+
}),
|
|
982
|
+
/* @__PURE__ */ J("div", { ref: f })
|
|
983
|
+
]
|
|
984
|
+
}),
|
|
985
|
+
/* @__PURE__ */ J(br, {
|
|
986
|
+
value: v,
|
|
987
|
+
onChange: y,
|
|
988
|
+
onSend: M,
|
|
989
|
+
onStop: w,
|
|
990
|
+
onContinue: N,
|
|
991
|
+
isStreaming: _,
|
|
992
|
+
showContinue: !_ && g.length > 0
|
|
993
|
+
})
|
|
994
|
+
]
|
|
995
|
+
});
|
|
996
|
+
});
|
|
997
|
+
//#endregion
|
|
998
|
+
//#region src/client/components/AgenticNotebook/useNotebookAutosave.ts
|
|
999
|
+
function Lr({ blockCount: e, messageCount: t, isStreaming: n, save: r, onSave: i }) {
|
|
1000
|
+
let a = G(), o = G(!1), s = G(i);
|
|
1001
|
+
s.current = i;
|
|
1002
|
+
let c = G(e > 0 || t > 0), l = H(() => {
|
|
1003
|
+
a.current && clearTimeout(a.current);
|
|
1004
|
+
}, []), u = H(() => {
|
|
1005
|
+
l(), a.current = setTimeout(() => {
|
|
1006
|
+
o.current = !1;
|
|
1007
|
+
let e = r();
|
|
1008
|
+
s.current?.(e);
|
|
1009
|
+
}, 1e3);
|
|
1010
|
+
}, [l, r]);
|
|
1011
|
+
(e > 0 || t > 0) && (c.current = !0);
|
|
1012
|
+
let d = !!s.current && c.current;
|
|
1013
|
+
return U(() => {
|
|
1014
|
+
if (d) {
|
|
1015
|
+
if (n) {
|
|
1016
|
+
o.current = !0, l();
|
|
1017
|
+
return;
|
|
1018
|
+
}
|
|
1019
|
+
return u(), l;
|
|
1020
|
+
}
|
|
1021
|
+
}, [
|
|
1022
|
+
d,
|
|
1023
|
+
e,
|
|
1024
|
+
t,
|
|
1025
|
+
n,
|
|
1026
|
+
l,
|
|
1027
|
+
u
|
|
1028
|
+
]), U(() => {
|
|
1029
|
+
!n && o.current && s.current && c.current && u();
|
|
1030
|
+
}, [n, u]), { clearSave: H(() => {
|
|
1031
|
+
s.current && (l(), s.current({
|
|
1032
|
+
blocks: [],
|
|
1033
|
+
messages: []
|
|
1034
|
+
}));
|
|
1035
|
+
}, [l]) };
|
|
1036
|
+
}
|
|
1037
|
+
//#endregion
|
|
863
1038
|
//#region src/client/components/AgenticNotebook/index.tsx
|
|
864
|
-
function
|
|
865
|
-
let { t: i } =
|
|
866
|
-
return /* @__PURE__ */
|
|
1039
|
+
function Rr({ blocks: e, pulsingBlockId: t, nudge: n, onExpand: r }) {
|
|
1040
|
+
let { t: i } = z(), a = D("bookOpen"), o = D("documentText");
|
|
1041
|
+
return /* @__PURE__ */ Y("button", {
|
|
867
1042
|
type: "button",
|
|
868
1043
|
onClick: r,
|
|
869
1044
|
className: "dc:h-full dc:flex-shrink-0 dc:flex dc:flex-col dc:items-center dc:pt-3 dc:gap-2 bg-dc-surface border-dc-border dc:border-r dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
@@ -872,46 +1047,46 @@ function yr({ blocks: e, pulsingBlockId: t, nudge: n, onExpand: r }) {
|
|
|
872
1047
|
width: 48
|
|
873
1048
|
} : { width: 48 },
|
|
874
1049
|
title: i("notebook.collapsed.expandNotebook"),
|
|
875
|
-
children: [/* @__PURE__ */
|
|
1050
|
+
children: [/* @__PURE__ */ J(a, { className: "dc:w-5 dc:h-5 text-dc-text-muted" }), /* @__PURE__ */ J("div", {
|
|
876
1051
|
className: "dc:flex dc:flex-col dc:items-center dc:gap-1.5 dc:flex-1 dc:overflow-y-auto dc:py-1",
|
|
877
1052
|
style: { scrollbarWidth: "none" },
|
|
878
|
-
children: e.length === 0 ? /* @__PURE__ */
|
|
1053
|
+
children: e.length === 0 ? /* @__PURE__ */ J("span", {
|
|
879
1054
|
className: "dc:text-[9px] text-dc-text-disabled dc:writing-vertical-lr dc:mt-2",
|
|
880
1055
|
style: { writingMode: "vertical-lr" },
|
|
881
1056
|
children: i("notebook.collapsed.noBlocks")
|
|
882
1057
|
}) : e.map((e) => {
|
|
883
1058
|
let n = e.id === t, r;
|
|
884
|
-
return r = e.type === "portlet" ?
|
|
1059
|
+
return r = e.type === "portlet" ? S(e.chartType) : o, /* @__PURE__ */ J("div", {
|
|
885
1060
|
className: "dc:w-6 dc:h-6 dc:flex dc:items-center dc:justify-center dc:rounded",
|
|
886
1061
|
style: n ? { animation: "dc-icon-pulse 0.6s ease-in-out 3" } : void 0,
|
|
887
1062
|
title: e.type === "portlet" ? e.title : e.title || i("notebook.collapsed.markdown"),
|
|
888
|
-
children: /* @__PURE__ */
|
|
1063
|
+
children: /* @__PURE__ */ J(r, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })
|
|
889
1064
|
}, e.id);
|
|
890
1065
|
})
|
|
891
1066
|
})]
|
|
892
1067
|
});
|
|
893
1068
|
}
|
|
894
|
-
function
|
|
895
|
-
let { t } =
|
|
896
|
-
return /* @__PURE__ */
|
|
1069
|
+
function zr({ onExpand: e }) {
|
|
1070
|
+
let { t } = z(), n = D("sparkles");
|
|
1071
|
+
return /* @__PURE__ */ Y("button", {
|
|
897
1072
|
type: "button",
|
|
898
1073
|
onClick: e,
|
|
899
1074
|
className: "dc:w-12 dc:h-full dc:flex-shrink-0 dc:flex dc:flex-col dc:items-center dc:pt-3 dc:gap-2 bg-dc-surface border-dc-border dc:border-l dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
900
1075
|
title: t("notebook.collapsed.expandChat"),
|
|
901
|
-
children: [/* @__PURE__ */
|
|
1076
|
+
children: [/* @__PURE__ */ J(n, { className: "dc:w-5 dc:h-5 text-dc-accent" }), /* @__PURE__ */ J("span", {
|
|
902
1077
|
className: "dc:text-[10px] dc:font-medium text-dc-text-muted",
|
|
903
1078
|
style: { writingMode: "vertical-lr" },
|
|
904
1079
|
children: t("notebook.collapsed.aiChat")
|
|
905
1080
|
})]
|
|
906
1081
|
});
|
|
907
1082
|
}
|
|
908
|
-
function
|
|
909
|
-
let [p, m] =
|
|
910
|
-
|
|
1083
|
+
function Br({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r, agentProviderEndpoint: i, onSave: a, onDirtyStateChange: o, onDashboardSaved: s, onScore: c, colorPalette: l, loadingComponent: u, className: d, initialPrompt: f }) {
|
|
1084
|
+
let [p, m] = K(60), h = G(null), g = G(!1), { containerRef: _, layoutMode: v } = An(), [y, b] = K("chat"), [x, S] = K(null), [C, w] = K(!1), T = G(v), E = X((e) => e.blocks), D = E.length, O = X((e) => e.messages.length), k = X((e) => e.isStreaming), A = X((e) => e.save);
|
|
1085
|
+
U(() => {
|
|
911
1086
|
T.current === "narrow" && v === "wide" && b("chat"), T.current = v;
|
|
912
1087
|
}, [v]);
|
|
913
|
-
let j =
|
|
914
|
-
|
|
1088
|
+
let j = G(D);
|
|
1089
|
+
U(() => {
|
|
915
1090
|
if (v === "narrow" && y === "chat" && D > j.current) {
|
|
916
1091
|
let e = E[E.length - 1];
|
|
917
1092
|
if (e) {
|
|
@@ -927,8 +1102,8 @@ function xr({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r,
|
|
|
927
1102
|
v,
|
|
928
1103
|
y
|
|
929
1104
|
]);
|
|
930
|
-
let M =
|
|
931
|
-
|
|
1105
|
+
let M = G(!1);
|
|
1106
|
+
U(() => {
|
|
932
1107
|
if (k) M.current = !0;
|
|
933
1108
|
else if (M.current && v === "narrow" && y === "chat" && D > 0) {
|
|
934
1109
|
M.current = !1, w(!0);
|
|
@@ -941,54 +1116,26 @@ function xr({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r,
|
|
|
941
1116
|
y,
|
|
942
1117
|
D
|
|
943
1118
|
]);
|
|
944
|
-
let N =
|
|
1119
|
+
let N = H((e) => {
|
|
945
1120
|
_(e), h.current = e;
|
|
946
|
-
}, [_]), P =
|
|
1121
|
+
}, [_]), P = G({
|
|
947
1122
|
blockCount: D,
|
|
948
1123
|
msgCount: O
|
|
949
1124
|
});
|
|
950
|
-
|
|
1125
|
+
U(() => {
|
|
951
1126
|
o?.(D !== P.current.blockCount || O !== P.current.msgCount);
|
|
952
1127
|
}, [
|
|
953
1128
|
D,
|
|
954
1129
|
O,
|
|
955
1130
|
o
|
|
956
1131
|
]);
|
|
957
|
-
let
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
return;
|
|
965
|
-
}
|
|
966
|
-
return F.current && clearTimeout(F.current), F.current = setTimeout(() => {
|
|
967
|
-
I.current = !1;
|
|
968
|
-
let e = A();
|
|
969
|
-
L.current?.(e);
|
|
970
|
-
}, 1e3), () => {
|
|
971
|
-
F.current && clearTimeout(F.current);
|
|
972
|
-
};
|
|
973
|
-
}
|
|
974
|
-
}, [
|
|
975
|
-
D,
|
|
976
|
-
O,
|
|
977
|
-
k,
|
|
978
|
-
A
|
|
979
|
-
]), G(() => {
|
|
980
|
-
!k && I.current && L.current && R.current && (F.current && clearTimeout(F.current), F.current = setTimeout(() => {
|
|
981
|
-
I.current = !1;
|
|
982
|
-
let e = A();
|
|
983
|
-
L.current?.(e);
|
|
984
|
-
}, 1e3));
|
|
985
|
-
}, [k, A]);
|
|
986
|
-
let z = W(() => {
|
|
987
|
-
L.current && (F.current && clearTimeout(F.current), L.current({
|
|
988
|
-
blocks: [],
|
|
989
|
-
messages: []
|
|
990
|
-
}));
|
|
991
|
-
}, []), ee = W((e) => {
|
|
1132
|
+
let { clearSave: F } = Lr({
|
|
1133
|
+
blockCount: D,
|
|
1134
|
+
messageCount: O,
|
|
1135
|
+
isStreaming: k,
|
|
1136
|
+
save: A,
|
|
1137
|
+
onSave: a
|
|
1138
|
+
}), I = H((e) => {
|
|
992
1139
|
e.preventDefault(), g.current = !0;
|
|
993
1140
|
let t = (e) => {
|
|
994
1141
|
if (!g.current || !h.current) return;
|
|
@@ -998,58 +1145,58 @@ function xr({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r,
|
|
|
998
1145
|
g.current = !1, document.removeEventListener("mousemove", t), document.removeEventListener("mouseup", n);
|
|
999
1146
|
};
|
|
1000
1147
|
document.addEventListener("mousemove", t), document.addEventListener("mouseup", n);
|
|
1001
|
-
}, []),
|
|
1148
|
+
}, []), L = /* @__PURE__ */ J(Ir, {
|
|
1002
1149
|
agentEndpoint: e,
|
|
1003
1150
|
agentApiKey: t,
|
|
1004
1151
|
agentProvider: n,
|
|
1005
1152
|
agentModel: r,
|
|
1006
1153
|
agentProviderEndpoint: i,
|
|
1007
|
-
onClear:
|
|
1154
|
+
onClear: F,
|
|
1008
1155
|
onDashboardSaved: s,
|
|
1009
1156
|
onScore: c,
|
|
1010
1157
|
loadingComponent: u,
|
|
1011
1158
|
initialPrompt: f
|
|
1012
1159
|
});
|
|
1013
|
-
return v === "narrow" ? /* @__PURE__ */
|
|
1160
|
+
return v === "narrow" ? /* @__PURE__ */ J("div", {
|
|
1014
1161
|
ref: N,
|
|
1015
1162
|
className: `dc:flex dc:h-full dc:w-full dc:overflow-hidden bg-dc-surface-secondary ${d || ""}`,
|
|
1016
|
-
children: y === "chat" ? /* @__PURE__ */
|
|
1163
|
+
children: y === "chat" ? /* @__PURE__ */ Y(q, { children: [/* @__PURE__ */ J(Rr, {
|
|
1017
1164
|
blocks: E,
|
|
1018
1165
|
pulsingBlockId: x,
|
|
1019
1166
|
nudge: C,
|
|
1020
1167
|
onExpand: () => b("notebook")
|
|
1021
|
-
}), /* @__PURE__ */
|
|
1168
|
+
}), /* @__PURE__ */ J("div", {
|
|
1022
1169
|
className: "dc:h-full dc:overflow-hidden dc:flex-1",
|
|
1023
|
-
children:
|
|
1024
|
-
})] }) : /* @__PURE__ */
|
|
1170
|
+
children: L
|
|
1171
|
+
})] }) : /* @__PURE__ */ Y(q, { children: [/* @__PURE__ */ J("div", {
|
|
1025
1172
|
className: "dc:h-full dc:overflow-hidden dc:flex-1",
|
|
1026
|
-
children: /* @__PURE__ */
|
|
1027
|
-
}), /* @__PURE__ */
|
|
1028
|
-
}) : /* @__PURE__ */
|
|
1173
|
+
children: /* @__PURE__ */ J(or, { colorPalette: l })
|
|
1174
|
+
}), /* @__PURE__ */ J(zr, { onExpand: () => b("chat") })] })
|
|
1175
|
+
}) : /* @__PURE__ */ Y("div", {
|
|
1029
1176
|
ref: N,
|
|
1030
1177
|
className: `dc:flex dc:h-full dc:w-full dc:overflow-hidden bg-dc-surface-secondary ${d || ""}`,
|
|
1031
1178
|
children: [
|
|
1032
|
-
/* @__PURE__ */
|
|
1179
|
+
/* @__PURE__ */ J("div", {
|
|
1033
1180
|
className: "dc:h-full dc:overflow-hidden",
|
|
1034
1181
|
style: { width: `${p}%` },
|
|
1035
|
-
children: /* @__PURE__ */
|
|
1182
|
+
children: /* @__PURE__ */ J(or, { colorPalette: l })
|
|
1036
1183
|
}),
|
|
1037
|
-
/* @__PURE__ */
|
|
1184
|
+
/* @__PURE__ */ J("div", {
|
|
1038
1185
|
className: "dc:w-1 dc:h-full dc:cursor-col-resize dc:flex-shrink-0 dc:transition-colors bg-dc-border dc:hover:bg-dc-accent",
|
|
1039
|
-
onMouseDown:
|
|
1186
|
+
onMouseDown: I
|
|
1040
1187
|
}),
|
|
1041
|
-
/* @__PURE__ */
|
|
1188
|
+
/* @__PURE__ */ J("div", {
|
|
1042
1189
|
className: "dc:h-full dc:overflow-hidden",
|
|
1043
1190
|
style: { width: `${100 - p}%` },
|
|
1044
|
-
children:
|
|
1191
|
+
children: L
|
|
1045
1192
|
})
|
|
1046
1193
|
]
|
|
1047
1194
|
});
|
|
1048
1195
|
}
|
|
1049
|
-
var
|
|
1050
|
-
return /* @__PURE__ */
|
|
1196
|
+
var Vr = V.memo(function({ config: e, colorPalette: t, ...n }) {
|
|
1197
|
+
return /* @__PURE__ */ J(Rn, {
|
|
1051
1198
|
initialConfig: e,
|
|
1052
|
-
children: /* @__PURE__ */
|
|
1199
|
+
children: /* @__PURE__ */ J(Br, {
|
|
1053
1200
|
...n,
|
|
1054
1201
|
colorPalette: t
|
|
1055
1202
|
})
|
|
@@ -1057,28 +1204,28 @@ var Sr = U.memo(function({ config: e, colorPalette: t, ...n }) {
|
|
|
1057
1204
|
});
|
|
1058
1205
|
//#endregion
|
|
1059
1206
|
//#region src/client/components/AnalyticsPage.tsx
|
|
1060
|
-
function
|
|
1061
|
-
let { t: e } =
|
|
1062
|
-
return /* @__PURE__ */
|
|
1207
|
+
function Hr() {
|
|
1208
|
+
let { t: e } = z();
|
|
1209
|
+
return /* @__PURE__ */ J("div", { children: e("analyticsPage.title") });
|
|
1063
1210
|
}
|
|
1064
1211
|
//#endregion
|
|
1065
1212
|
//#region src/client/stores/dataBrowserStore.tsx
|
|
1066
|
-
var
|
|
1067
|
-
function
|
|
1213
|
+
var Ur = "dc-data-browser-column-widths";
|
|
1214
|
+
function Wr(e) {
|
|
1068
1215
|
try {
|
|
1069
|
-
let t = localStorage.getItem(
|
|
1216
|
+
let t = localStorage.getItem(Ur);
|
|
1070
1217
|
return t ? JSON.parse(t)[e] ?? {} : {};
|
|
1071
1218
|
} catch {
|
|
1072
1219
|
return {};
|
|
1073
1220
|
}
|
|
1074
1221
|
}
|
|
1075
|
-
function
|
|
1222
|
+
function Gr(e, t) {
|
|
1076
1223
|
try {
|
|
1077
|
-
let n = localStorage.getItem(
|
|
1078
|
-
r[e] = t, localStorage.setItem(
|
|
1224
|
+
let n = localStorage.getItem(Ur), r = n ? JSON.parse(n) : {};
|
|
1225
|
+
r[e] = t, localStorage.setItem(Ur, JSON.stringify(r));
|
|
1079
1226
|
} catch {}
|
|
1080
1227
|
}
|
|
1081
|
-
function
|
|
1228
|
+
function Kr(e = {}) {
|
|
1082
1229
|
return i()((t, n) => ({
|
|
1083
1230
|
selectedCube: e.defaultCube ?? null,
|
|
1084
1231
|
visibleColumns: e.defaultColumns ?? [],
|
|
@@ -1089,7 +1236,7 @@ function Dr(e = {}) {
|
|
|
1089
1236
|
filters: [],
|
|
1090
1237
|
showFilterBar: !1,
|
|
1091
1238
|
showColumnPicker: !1,
|
|
1092
|
-
columnWidths: e.defaultCube ?
|
|
1239
|
+
columnWidths: e.defaultCube ? Wr(e.defaultCube) : {},
|
|
1093
1240
|
selectCube: (e, n) => t({
|
|
1094
1241
|
selectedCube: e,
|
|
1095
1242
|
visibleColumns: n,
|
|
@@ -1098,7 +1245,7 @@ function Dr(e = {}) {
|
|
|
1098
1245
|
page: 0,
|
|
1099
1246
|
filters: [],
|
|
1100
1247
|
showFilterBar: !1,
|
|
1101
|
-
columnWidths:
|
|
1248
|
+
columnWidths: Wr(e)
|
|
1102
1249
|
}),
|
|
1103
1250
|
setVisibleColumns: (e) => t({
|
|
1104
1251
|
visibleColumns: e,
|
|
@@ -1145,39 +1292,39 @@ function Dr(e = {}) {
|
|
|
1145
1292
|
...t.columnWidths,
|
|
1146
1293
|
[e]: n
|
|
1147
1294
|
};
|
|
1148
|
-
return t.selectedCube &&
|
|
1295
|
+
return t.selectedCube && Gr(t.selectedCube, r), { columnWidths: r };
|
|
1149
1296
|
}),
|
|
1150
1297
|
setColumnWidths: (e) => {
|
|
1151
1298
|
let r = n().selectedCube;
|
|
1152
|
-
r &&
|
|
1299
|
+
r && Gr(r, e), t({ columnWidths: e });
|
|
1153
1300
|
}
|
|
1154
1301
|
}));
|
|
1155
1302
|
}
|
|
1156
|
-
var
|
|
1157
|
-
function
|
|
1158
|
-
let i =
|
|
1159
|
-
return i.current ||=
|
|
1303
|
+
var qr = Mn(null);
|
|
1304
|
+
function Jr({ children: e, defaultPageSize: t, defaultCube: n, defaultColumns: r }) {
|
|
1305
|
+
let i = G(null);
|
|
1306
|
+
return i.current ||= Kr({
|
|
1160
1307
|
defaultPageSize: t,
|
|
1161
1308
|
defaultCube: n,
|
|
1162
1309
|
defaultColumns: r
|
|
1163
|
-
}), /* @__PURE__ */
|
|
1310
|
+
}), /* @__PURE__ */ J(qr.Provider, {
|
|
1164
1311
|
value: i.current,
|
|
1165
1312
|
children: e
|
|
1166
1313
|
});
|
|
1167
1314
|
}
|
|
1168
1315
|
function $(e) {
|
|
1169
|
-
let t =
|
|
1316
|
+
let t = Nn(qr);
|
|
1170
1317
|
if (!t) throw Error("useDataBrowserStore must be used within DataBrowserStoreProvider");
|
|
1171
1318
|
return n(t, e);
|
|
1172
1319
|
}
|
|
1173
1320
|
//#endregion
|
|
1174
1321
|
//#region src/client/hooks/useDataBrowser.ts
|
|
1175
|
-
function
|
|
1322
|
+
function Yr(e, t) {
|
|
1176
1323
|
if (!t) return !0;
|
|
1177
1324
|
let [n, r] = e.split("."), i = t.cubes.find((e) => e.name === n);
|
|
1178
1325
|
return i ? i.dimensions.some((e) => e.name === `${n}.${r}`) : !0;
|
|
1179
1326
|
}
|
|
1180
|
-
function
|
|
1327
|
+
function Xr(e, t) {
|
|
1181
1328
|
if (!t) return "string";
|
|
1182
1329
|
let [n] = e.split("."), r = t.cubes.find((e) => e.name === n);
|
|
1183
1330
|
if (!r) return "string";
|
|
@@ -1186,7 +1333,7 @@ function jr(e, t) {
|
|
|
1186
1333
|
let a = r.measures.find((t) => t.name === e);
|
|
1187
1334
|
return a ? a.type : "string";
|
|
1188
1335
|
}
|
|
1189
|
-
function
|
|
1336
|
+
function Zr(e, t) {
|
|
1190
1337
|
if (!t) return {
|
|
1191
1338
|
dimensions: [],
|
|
1192
1339
|
measures: []
|
|
@@ -1208,7 +1355,7 @@ function Mr(e, t) {
|
|
|
1208
1355
|
measures: n.measures.filter((e) => r.has(e.type)).map((e) => e.name)
|
|
1209
1356
|
};
|
|
1210
1357
|
}
|
|
1211
|
-
function
|
|
1358
|
+
function Qr() {
|
|
1212
1359
|
let e = $((e) => e.selectedCube), n = $((e) => e.visibleColumns), r = $((e) => e.sortColumn), i = $((e) => e.sortDirection), a = $((e) => e.page), o = $((e) => e.pageSize), s = $((e) => e.filters), c = $((e) => e.showFilterBar), l = $((e) => e.showColumnPicker), u = $(t((e) => ({
|
|
1213
1360
|
selectCube: e.selectCube,
|
|
1214
1361
|
setVisibleColumns: e.setVisibleColumns,
|
|
@@ -1220,15 +1367,15 @@ function Nr() {
|
|
|
1220
1367
|
setFilters: e.setFilters,
|
|
1221
1368
|
toggleFilterBar: e.toggleFilterBar,
|
|
1222
1369
|
setShowColumnPicker: e.setShowColumnPicker
|
|
1223
|
-
}))), { meta: d, getFieldLabel: f } =
|
|
1370
|
+
}))), { meta: d, getFieldLabel: f } = dt(), p = W(() => {
|
|
1224
1371
|
if (!d || !e) return null;
|
|
1225
1372
|
let t = d.cubes.find((t) => t.name === e);
|
|
1226
1373
|
if (!t) return null;
|
|
1227
1374
|
let n = t.dimensions.find((e) => e.primaryKey);
|
|
1228
1375
|
return n ? n.name : t.dimensions.length > 0 ? t.dimensions[0].name : null;
|
|
1229
|
-
}, [d, e]), m = r ?? p, h = r ? i : "asc", g =
|
|
1376
|
+
}, [d, e]), m = r ?? p, h = r ? i : "asc", g = W(() => {
|
|
1230
1377
|
if (!e || n.length === 0) return null;
|
|
1231
|
-
let t = n.filter((e) =>
|
|
1378
|
+
let t = n.filter((e) => Yr(e, d)), r = n.filter((e) => !Yr(e, d));
|
|
1232
1379
|
if (t.length === 0) return null;
|
|
1233
1380
|
let i = {
|
|
1234
1381
|
dimensions: t,
|
|
@@ -1246,7 +1393,7 @@ function Nr() {
|
|
|
1246
1393
|
a,
|
|
1247
1394
|
o,
|
|
1248
1395
|
d
|
|
1249
|
-
]), { rawData: _, isLoading: v, isFetching: y, isDebouncing: b, error: x, refetch: S } =
|
|
1396
|
+
]), { rawData: _, isLoading: v, isFetching: y, isDebouncing: b, error: x, refetch: S } = ft(g, {
|
|
1250
1397
|
skip: !g,
|
|
1251
1398
|
debounceMs: 400,
|
|
1252
1399
|
keepPreviousData: !0,
|
|
@@ -1282,24 +1429,24 @@ function Nr() {
|
|
|
1282
1429
|
}
|
|
1283
1430
|
//#endregion
|
|
1284
1431
|
//#region src/client/components/DataBrowser/DataBrowserSidebar.tsx
|
|
1285
|
-
var
|
|
1286
|
-
function
|
|
1287
|
-
let { t: r } =
|
|
1432
|
+
var $r = D("search"), ei = D("cube");
|
|
1433
|
+
function ti({ cubes: e, selectedCube: t, onSelectCube: n }) {
|
|
1434
|
+
let { t: r } = z(), [i, a] = K(""), o = W(() => {
|
|
1288
1435
|
let t = [...e].sort((e, t) => (e.title || e.name).localeCompare(t.title || t.name));
|
|
1289
1436
|
if (!i) return t;
|
|
1290
1437
|
let n = i.toLowerCase();
|
|
1291
1438
|
return t.filter((e) => e.name.toLowerCase().includes(n) || e.title.toLowerCase().includes(n));
|
|
1292
1439
|
}, [e, i]);
|
|
1293
|
-
return /* @__PURE__ */
|
|
1440
|
+
return /* @__PURE__ */ Y("div", {
|
|
1294
1441
|
className: "dc:flex dc:flex-col dc:h-full dc:border-r border-dc-border bg-dc-surface dc:w-60 dc:shrink-0",
|
|
1295
|
-
children: [/* @__PURE__ */
|
|
1442
|
+
children: [/* @__PURE__ */ Y("div", {
|
|
1296
1443
|
className: "dc:px-3 dc:py-3 dc:border-b border-dc-border",
|
|
1297
|
-
children: [/* @__PURE__ */
|
|
1444
|
+
children: [/* @__PURE__ */ J("h2", {
|
|
1298
1445
|
className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2",
|
|
1299
1446
|
children: r("dataBrowser.sidebar.cubes")
|
|
1300
|
-
}), /* @__PURE__ */
|
|
1447
|
+
}), /* @__PURE__ */ Y("div", {
|
|
1301
1448
|
className: "dc:relative",
|
|
1302
|
-
children: [/* @__PURE__ */
|
|
1449
|
+
children: [/* @__PURE__ */ J($r, { className: "dc:absolute dc:left-2 dc:top-1/2 dc:-translate-y-1/2 dc:w-3.5 dc:h-3.5 text-dc-text-muted" }), /* @__PURE__ */ J("input", {
|
|
1303
1450
|
type: "text",
|
|
1304
1451
|
value: i,
|
|
1305
1452
|
onChange: (e) => a(e.target.value),
|
|
@@ -1307,16 +1454,16 @@ function Ir({ cubes: e, selectedCube: t, onSelectCube: n }) {
|
|
|
1307
1454
|
className: "dc:w-full dc:pl-7 dc:pr-2 dc:py-1.5 dc:text-xs dc:rounded border-dc-border dc:border bg-dc-surface text-dc-text dc:outline-none dc:focus:ring-1 focus:ring-dc-accent"
|
|
1308
1455
|
})]
|
|
1309
1456
|
})]
|
|
1310
|
-
}), /* @__PURE__ */
|
|
1457
|
+
}), /* @__PURE__ */ Y("div", {
|
|
1311
1458
|
className: "dc:flex-1 dc:overflow-y-auto dc:py-1",
|
|
1312
|
-
children: [o.map((e) => /* @__PURE__ */
|
|
1459
|
+
children: [o.map((e) => /* @__PURE__ */ Y("button", {
|
|
1313
1460
|
onClick: () => n(e.name),
|
|
1314
1461
|
className: `dc:flex dc:items-center dc:gap-2 dc:w-full dc:px-3 dc:py-1.5 dc:text-left dc:text-sm dc:transition-colors ${t === e.name ? "bg-dc-accent-bg text-dc-accent dc:font-medium" : "text-dc-text dc:hover:bg-dc-surface-hover"}`,
|
|
1315
|
-
children: [/* @__PURE__ */
|
|
1462
|
+
children: [/* @__PURE__ */ J(ei, { className: "dc:w-4 dc:h-4 dc:shrink-0 text-dc-text-muted" }), /* @__PURE__ */ J("span", {
|
|
1316
1463
|
className: "dc:truncate",
|
|
1317
1464
|
children: e.title || e.name
|
|
1318
1465
|
})]
|
|
1319
|
-
}, e.name)), o.length === 0 && /* @__PURE__ */
|
|
1466
|
+
}, e.name)), o.length === 0 && /* @__PURE__ */ J("div", {
|
|
1320
1467
|
className: "dc:px-3 dc:py-4 dc:text-xs text-dc-text-muted dc:text-center",
|
|
1321
1468
|
children: r("dataBrowser.sidebar.noCubes")
|
|
1322
1469
|
})]
|
|
@@ -1325,77 +1472,77 @@ function Ir({ cubes: e, selectedCube: t, onSelectCube: n }) {
|
|
|
1325
1472
|
}
|
|
1326
1473
|
//#endregion
|
|
1327
1474
|
//#region src/client/components/DataBrowser/DataBrowserToolbar.tsx
|
|
1328
|
-
var
|
|
1329
|
-
function
|
|
1330
|
-
let { t: p } =
|
|
1331
|
-
return /* @__PURE__ */
|
|
1475
|
+
var ni = D("filter"), ri = D("settings"), ii = D("chevronLeft"), ai = D("chevronRight"), oi = D("refresh");
|
|
1476
|
+
function si({ showFilterBar: e, filterCount: t, onToggleFilterBar: n, onToggleColumnPicker: r, page: i, pageSize: a, rowCount: o, hasNextPage: s, hasPrevPage: c, onPageChange: l, onPageSizeChange: u, isFetching: d, onRefresh: f }) {
|
|
1477
|
+
let { t: p } = z();
|
|
1478
|
+
return /* @__PURE__ */ Y("div", {
|
|
1332
1479
|
className: "dc:flex dc:items-center dc:gap-2 dc:px-3 dc:py-2 dc:border-b border-dc-border bg-dc-surface-secondary",
|
|
1333
1480
|
children: [
|
|
1334
|
-
/* @__PURE__ */
|
|
1481
|
+
/* @__PURE__ */ Y("button", {
|
|
1335
1482
|
onClick: n,
|
|
1336
1483
|
className: `dc:flex dc:items-center dc:gap-1.5 dc:px-2.5 dc:py-1.5 dc:text-xs dc:font-medium dc:rounded dc:border dc:transition-colors ${e ? "border-dc-accent bg-dc-accent-bg text-dc-accent" : "border-dc-border bg-dc-surface text-dc-text dc:hover:bg-dc-surface-hover"}`,
|
|
1337
1484
|
children: [
|
|
1338
|
-
/* @__PURE__ */
|
|
1485
|
+
/* @__PURE__ */ J(ni, { className: "dc:w-3.5 dc:h-3.5" }),
|
|
1339
1486
|
p("dataBrowser.toolbar.filters"),
|
|
1340
|
-
t > 0 && /* @__PURE__ */
|
|
1487
|
+
t > 0 && /* @__PURE__ */ J("span", {
|
|
1341
1488
|
className: "dc:inline-flex dc:items-center dc:justify-center dc:w-4 dc:h-4 dc:text-[10px] dc:font-bold dc:rounded-full bg-dc-accent text-dc-surface",
|
|
1342
1489
|
children: t
|
|
1343
1490
|
})
|
|
1344
1491
|
]
|
|
1345
1492
|
}),
|
|
1346
|
-
/* @__PURE__ */
|
|
1493
|
+
/* @__PURE__ */ Y("button", {
|
|
1347
1494
|
onClick: r,
|
|
1348
1495
|
className: "dc:flex dc:items-center dc:gap-1.5 dc:px-2.5 dc:py-1.5 dc:text-xs dc:font-medium dc:rounded dc:border border-dc-border bg-dc-surface text-dc-text dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
1349
|
-
children: [/* @__PURE__ */
|
|
1496
|
+
children: [/* @__PURE__ */ J(ri, { className: "dc:w-3.5 dc:h-3.5" }), p("dataBrowser.toolbar.columns")]
|
|
1350
1497
|
}),
|
|
1351
|
-
/* @__PURE__ */
|
|
1352
|
-
/* @__PURE__ */
|
|
1498
|
+
/* @__PURE__ */ J("div", { className: "dc:flex-1" }),
|
|
1499
|
+
/* @__PURE__ */ J("span", {
|
|
1353
1500
|
className: "dc:text-xs text-dc-text-muted",
|
|
1354
1501
|
children: p("dataBrowser.toolbar.rows", { count: o })
|
|
1355
1502
|
}),
|
|
1356
|
-
/* @__PURE__ */
|
|
1503
|
+
/* @__PURE__ */ J("button", {
|
|
1357
1504
|
onClick: f,
|
|
1358
1505
|
className: "dc:p-1 dc:rounded dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
1359
1506
|
title: "Refresh",
|
|
1360
|
-
children: /* @__PURE__ */
|
|
1507
|
+
children: /* @__PURE__ */ J(oi, { className: `dc:w-3.5 dc:h-3.5 text-dc-text-muted ${d ? "dc:animate-spin" : ""}` })
|
|
1361
1508
|
}),
|
|
1362
|
-
/* @__PURE__ */
|
|
1509
|
+
/* @__PURE__ */ Y("select", {
|
|
1363
1510
|
value: a,
|
|
1364
1511
|
onChange: (e) => u(Number(e.target.value)),
|
|
1365
1512
|
className: "dc:text-xs dc:px-1.5 dc:py-1 dc:rounded dc:border border-dc-border bg-dc-surface text-dc-text dc:outline-none",
|
|
1366
1513
|
children: [
|
|
1367
|
-
/* @__PURE__ */
|
|
1514
|
+
/* @__PURE__ */ J("option", {
|
|
1368
1515
|
value: 20,
|
|
1369
1516
|
children: "20"
|
|
1370
1517
|
}),
|
|
1371
|
-
/* @__PURE__ */
|
|
1518
|
+
/* @__PURE__ */ J("option", {
|
|
1372
1519
|
value: 50,
|
|
1373
1520
|
children: "50"
|
|
1374
1521
|
}),
|
|
1375
|
-
/* @__PURE__ */
|
|
1522
|
+
/* @__PURE__ */ J("option", {
|
|
1376
1523
|
value: 100,
|
|
1377
1524
|
children: "100"
|
|
1378
1525
|
})
|
|
1379
1526
|
]
|
|
1380
1527
|
}),
|
|
1381
|
-
/* @__PURE__ */
|
|
1528
|
+
/* @__PURE__ */ Y("div", {
|
|
1382
1529
|
className: "dc:flex dc:items-center dc:gap-1",
|
|
1383
1530
|
children: [
|
|
1384
|
-
/* @__PURE__ */
|
|
1531
|
+
/* @__PURE__ */ J("button", {
|
|
1385
1532
|
onClick: () => l(i - 1),
|
|
1386
1533
|
disabled: !c,
|
|
1387
1534
|
className: "dc:p-1 dc:rounded dc:hover:bg-dc-surface-hover dc:disabled:opacity-30 dc:disabled:cursor-not-allowed dc:transition-colors",
|
|
1388
|
-
children: /* @__PURE__ */
|
|
1535
|
+
children: /* @__PURE__ */ J(ii, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })
|
|
1389
1536
|
}),
|
|
1390
|
-
/* @__PURE__ */
|
|
1537
|
+
/* @__PURE__ */ J("span", {
|
|
1391
1538
|
className: "dc:text-xs dc:font-medium text-dc-text dc:min-w-[2rem] dc:text-center",
|
|
1392
1539
|
children: i + 1
|
|
1393
1540
|
}),
|
|
1394
|
-
/* @__PURE__ */
|
|
1541
|
+
/* @__PURE__ */ J("button", {
|
|
1395
1542
|
onClick: () => l(i + 1),
|
|
1396
1543
|
disabled: !s,
|
|
1397
1544
|
className: "dc:p-1 dc:rounded dc:hover:bg-dc-surface-hover dc:disabled:opacity-30 dc:disabled:cursor-not-allowed dc:transition-colors",
|
|
1398
|
-
children: /* @__PURE__ */
|
|
1545
|
+
children: /* @__PURE__ */ J(ai, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })
|
|
1399
1546
|
})
|
|
1400
1547
|
]
|
|
1401
1548
|
})
|
|
@@ -1404,9 +1551,9 @@ function Hr({ showFilterBar: e, filterCount: t, onToggleFilterBar: n, onToggleCo
|
|
|
1404
1551
|
}
|
|
1405
1552
|
//#endregion
|
|
1406
1553
|
//#region src/client/components/DataBrowser/DataBrowserTable.tsx
|
|
1407
|
-
var
|
|
1408
|
-
function
|
|
1409
|
-
let n =
|
|
1554
|
+
var ci = D("chevronUp"), li = D("chevronDown");
|
|
1555
|
+
function ui(e, t) {
|
|
1556
|
+
let n = Xr(e, t);
|
|
1410
1557
|
return {
|
|
1411
1558
|
string: "text",
|
|
1412
1559
|
number: "num",
|
|
@@ -1418,14 +1565,14 @@ function Gr(e, t) {
|
|
|
1418
1565
|
max: "num"
|
|
1419
1566
|
}[n] || n;
|
|
1420
1567
|
}
|
|
1421
|
-
function
|
|
1422
|
-
return
|
|
1568
|
+
function di(e, t) {
|
|
1569
|
+
return ui(e, t) === "num";
|
|
1423
1570
|
}
|
|
1424
|
-
function
|
|
1571
|
+
function fi(e) {
|
|
1425
1572
|
return e == null ? "" : typeof e == "number" ? e.toLocaleString() : typeof e == "boolean" ? e ? "true" : "false" : e instanceof Date ? e.toISOString() : String(e);
|
|
1426
1573
|
}
|
|
1427
|
-
var
|
|
1428
|
-
let { t: d } =
|
|
1574
|
+
var pi = 60, mi = 150, hi = V.memo(function({ data: e, columns: t, sortColumn: n, sortDirection: r, onSort: i, getFieldLabel: a, meta: o, isLoading: s, isFetching: c, selectedCube: l, loadingComponent: u }) {
|
|
1575
|
+
let { t: d } = z(), f = $((e) => e.columnWidths), p = $((e) => e.setColumnWidth), m = $((e) => e.setColumnWidths), h = G(null), g = G(!1), _ = H((e, n) => {
|
|
1429
1576
|
e.preventDefault(), e.stopPropagation();
|
|
1430
1577
|
let r = e.clientX;
|
|
1431
1578
|
g.current = !1;
|
|
@@ -1437,9 +1584,9 @@ var Jr = 60, Yr = 150, Xr = U.memo(function({ data: e, columns: t, sortColumn: n
|
|
|
1437
1584
|
i && (n[i] = e.getBoundingClientRect().width);
|
|
1438
1585
|
}), m(n);
|
|
1439
1586
|
}
|
|
1440
|
-
let a = e.target.closest("th"), o = a ? a.getBoundingClientRect().width :
|
|
1587
|
+
let a = e.target.closest("th"), o = a ? a.getBoundingClientRect().width : mi, s = (e) => {
|
|
1441
1588
|
let t = e.clientX - r;
|
|
1442
|
-
Math.abs(t) > 2 && (g.current = !0), p(n, Math.max(
|
|
1589
|
+
Math.abs(t) > 2 && (g.current = !0), p(n, Math.max(pi, o + t));
|
|
1443
1590
|
}, c = () => {
|
|
1444
1591
|
document.removeEventListener("mousemove", s), document.removeEventListener("mouseup", c), document.body.style.cursor = "", document.body.style.userSelect = "", requestAnimationFrame(() => {
|
|
1445
1592
|
g.current = !1;
|
|
@@ -1450,24 +1597,24 @@ var Jr = 60, Yr = 150, Xr = U.memo(function({ data: e, columns: t, sortColumn: n
|
|
|
1450
1597
|
t,
|
|
1451
1598
|
p,
|
|
1452
1599
|
m
|
|
1453
|
-
]), v =
|
|
1600
|
+
]), v = H((e) => {
|
|
1454
1601
|
g.current || i(e);
|
|
1455
|
-
}, [i]), y = Object.keys(f).length > 0 ? t.reduce((e, t) => e + (f[t] ??
|
|
1456
|
-
return l ? e ? e.length === 0 && !s && !c ? /* @__PURE__ */
|
|
1602
|
+
}, [i]), y = Object.keys(f).length > 0 ? t.reduce((e, t) => e + (f[t] ?? mi), 0) : void 0;
|
|
1603
|
+
return l ? e ? e.length === 0 && !s && !c ? /* @__PURE__ */ J("div", {
|
|
1457
1604
|
className: "dc:flex dc:items-center dc:justify-center dc:h-full",
|
|
1458
|
-
children: /* @__PURE__ */
|
|
1605
|
+
children: /* @__PURE__ */ Y("div", {
|
|
1459
1606
|
className: "dc:text-center text-dc-text-muted",
|
|
1460
|
-
children: [/* @__PURE__ */
|
|
1607
|
+
children: [/* @__PURE__ */ J("div", {
|
|
1461
1608
|
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
1462
1609
|
children: d("dataBrowser.noData")
|
|
1463
|
-
}), /* @__PURE__ */
|
|
1610
|
+
}), /* @__PURE__ */ J("div", {
|
|
1464
1611
|
className: "dc:text-xs text-dc-text-secondary",
|
|
1465
1612
|
children: d("dataBrowser.noRows")
|
|
1466
1613
|
})]
|
|
1467
1614
|
})
|
|
1468
|
-
}) : /* @__PURE__ */
|
|
1615
|
+
}) : /* @__PURE__ */ Y("div", {
|
|
1469
1616
|
className: "dc:relative dc:flex-1 dc:overflow-auto",
|
|
1470
|
-
children: [c && /* @__PURE__ */
|
|
1617
|
+
children: [c && /* @__PURE__ */ J("div", { className: "dc:absolute dc:inset-0 bg-dc-surface dc:opacity-40 dc:z-10 dc:pointer-events-none" }), /* @__PURE__ */ Y("table", {
|
|
1471
1618
|
ref: h,
|
|
1472
1619
|
className: "dc:border-collapse",
|
|
1473
1620
|
style: {
|
|
@@ -1476,31 +1623,31 @@ var Jr = 60, Yr = 150, Xr = U.memo(function({ data: e, columns: t, sortColumn: n
|
|
|
1476
1623
|
minWidth: "100%"
|
|
1477
1624
|
},
|
|
1478
1625
|
children: [
|
|
1479
|
-
/* @__PURE__ */
|
|
1480
|
-
/* @__PURE__ */
|
|
1626
|
+
/* @__PURE__ */ J("colgroup", { children: t.map((e) => /* @__PURE__ */ J("col", { style: { width: f[e] ?? mi } }, e)) }),
|
|
1627
|
+
/* @__PURE__ */ J("thead", {
|
|
1481
1628
|
className: "dc:sticky dc:top-0 dc:z-20",
|
|
1482
1629
|
style: { backgroundColor: "var(--dc-surface-secondary)" },
|
|
1483
|
-
children: /* @__PURE__ */
|
|
1484
|
-
let s = n === e, c = a(e), l =
|
|
1485
|
-
return /* @__PURE__ */
|
|
1630
|
+
children: /* @__PURE__ */ J("tr", { children: t.map((e, i) => {
|
|
1631
|
+
let s = n === e, c = a(e), l = ui(e, o), u = i === t.length - 1, d = di(e, o);
|
|
1632
|
+
return /* @__PURE__ */ Y("th", {
|
|
1486
1633
|
onClick: () => v(e),
|
|
1487
1634
|
className: `dc:relative dc:px-3 dc:py-2 dc:text-xs dc:font-normal dc:cursor-pointer dc:select-none dc:border-b border-dc-border dc:transition-colors${u ? "" : " dc:border-r"}${d ? " dc:text-right" : " dc:text-left"}`,
|
|
1488
1635
|
style: { color: "var(--dc-text-muted)" },
|
|
1489
|
-
children: [/* @__PURE__ */
|
|
1636
|
+
children: [/* @__PURE__ */ Y("div", {
|
|
1490
1637
|
className: `dc:flex dc:items-center dc:gap-1.5 dc:overflow-hidden${d ? " dc:justify-end" : ""}`,
|
|
1491
1638
|
children: [
|
|
1492
|
-
/* @__PURE__ */
|
|
1639
|
+
/* @__PURE__ */ J("span", {
|
|
1493
1640
|
className: "dc:font-medium dc:truncate",
|
|
1494
1641
|
style: { color: "var(--dc-text)" },
|
|
1495
1642
|
children: c
|
|
1496
1643
|
}),
|
|
1497
|
-
/* @__PURE__ */
|
|
1644
|
+
/* @__PURE__ */ J("span", {
|
|
1498
1645
|
className: "dc:text-[10px] dc:opacity-50 dc:shrink-0",
|
|
1499
1646
|
children: l
|
|
1500
1647
|
}),
|
|
1501
|
-
s &&
|
|
1648
|
+
s && J(r === "asc" ? ci : li, { className: "dc:w-3 dc:h-3 text-dc-accent dc:shrink-0" })
|
|
1502
1649
|
]
|
|
1503
|
-
}), /* @__PURE__ */
|
|
1650
|
+
}), /* @__PURE__ */ J("div", {
|
|
1504
1651
|
onMouseDown: (t) => _(t, e),
|
|
1505
1652
|
className: "dc:absolute dc:top-0 dc:right-0 dc:w-1.5 dc:h-full dc:cursor-col-resize dc:hover:bg-dc-accent dc:opacity-0 dc:hover:opacity-100 dc:transition-opacity",
|
|
1506
1653
|
style: { zIndex: 30 }
|
|
@@ -1508,7 +1655,7 @@ var Jr = 60, Yr = 150, Xr = U.memo(function({ data: e, columns: t, sortColumn: n
|
|
|
1508
1655
|
}, e);
|
|
1509
1656
|
}) })
|
|
1510
1657
|
}),
|
|
1511
|
-
/* @__PURE__ */
|
|
1658
|
+
/* @__PURE__ */ J("tbody", { children: e.map((e, n) => /* @__PURE__ */ J("tr", {
|
|
1512
1659
|
className: "dc:border-b border-dc-border",
|
|
1513
1660
|
style: { transition: "background-color 0.1s" },
|
|
1514
1661
|
onMouseEnter: (e) => {
|
|
@@ -1518,30 +1665,30 @@ var Jr = 60, Yr = 150, Xr = U.memo(function({ data: e, columns: t, sortColumn: n
|
|
|
1518
1665
|
e.currentTarget.style.backgroundColor = "";
|
|
1519
1666
|
},
|
|
1520
1667
|
children: t.map((n, r) => {
|
|
1521
|
-
let i = r === t.length - 1, a =
|
|
1522
|
-
return /* @__PURE__ */
|
|
1668
|
+
let i = r === t.length - 1, a = di(n, o);
|
|
1669
|
+
return /* @__PURE__ */ J("td", {
|
|
1523
1670
|
className: `dc:px-3 dc:py-1.5 dc:text-sm dc:overflow-hidden dc:text-ellipsis dc:whitespace-nowrap${i ? "" : " dc:border-r border-dc-border"}${a ? " dc:text-right dc:tabular-nums" : ""}`,
|
|
1524
1671
|
style: { color: "var(--dc-text)" },
|
|
1525
|
-
children:
|
|
1672
|
+
children: fi(e[n])
|
|
1526
1673
|
}, n);
|
|
1527
1674
|
})
|
|
1528
1675
|
}, n)) })
|
|
1529
1676
|
]
|
|
1530
1677
|
})]
|
|
1531
|
-
}) : /* @__PURE__ */
|
|
1678
|
+
}) : /* @__PURE__ */ J("div", {
|
|
1532
1679
|
className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:h-full dc:gap-3",
|
|
1533
|
-
children: u ?? /* @__PURE__ */
|
|
1680
|
+
children: u ?? /* @__PURE__ */ Y(q, { children: [/* @__PURE__ */ J(B, { size: "md" }), /* @__PURE__ */ J("div", {
|
|
1534
1681
|
className: "dc:text-sm text-dc-text-muted",
|
|
1535
1682
|
children: d("dataBrowser.loadingData")
|
|
1536
1683
|
})] })
|
|
1537
|
-
}) : /* @__PURE__ */
|
|
1684
|
+
}) : /* @__PURE__ */ J("div", {
|
|
1538
1685
|
className: "dc:flex dc:items-center dc:justify-center dc:h-full",
|
|
1539
|
-
children: /* @__PURE__ */
|
|
1686
|
+
children: /* @__PURE__ */ Y("div", {
|
|
1540
1687
|
className: "dc:text-center text-dc-text-muted",
|
|
1541
|
-
children: [/* @__PURE__ */
|
|
1688
|
+
children: [/* @__PURE__ */ J("div", {
|
|
1542
1689
|
className: "dc:text-base dc:font-semibold dc:mb-1",
|
|
1543
1690
|
children: d("dataBrowser.selectCube")
|
|
1544
|
-
}), /* @__PURE__ */
|
|
1691
|
+
}), /* @__PURE__ */ J("div", {
|
|
1545
1692
|
className: "dc:text-sm text-dc-text-secondary",
|
|
1546
1693
|
children: d("dataBrowser.selectCubeHint")
|
|
1547
1694
|
})]
|
|
@@ -1550,41 +1697,41 @@ var Jr = 60, Yr = 150, Xr = U.memo(function({ data: e, columns: t, sortColumn: n
|
|
|
1550
1697
|
});
|
|
1551
1698
|
//#endregion
|
|
1552
1699
|
//#region src/client/components/DataBrowser/index.tsx
|
|
1553
|
-
function
|
|
1554
|
-
let { selectedCube: r, visibleColumns: i, sortColumn: a, sortDirection: o, page: s, pageSize: c, filters: l, showFilterBar: u, showColumnPicker: d, rawData: f, isLoading: p, isFetching: m, rowCount: h, hasNextPage: g, hasPrevPage: _, meta: v, getFieldLabel: y, selectCube: b, setSort: x, setPage: S, setPageSize: C, setFilters: w, toggleFilterBar: T, setShowColumnPicker: E, toggleColumn: D, refetch: O } =
|
|
1700
|
+
function gi({ className: e = "", maxHeight: t = "100vh", loadingComponent: n }) {
|
|
1701
|
+
let { selectedCube: r, visibleColumns: i, sortColumn: a, sortDirection: o, page: s, pageSize: c, filters: l, showFilterBar: u, showColumnPicker: d, rawData: f, isLoading: p, isFetching: m, rowCount: h, hasNextPage: g, hasPrevPage: _, meta: v, getFieldLabel: y, selectCube: b, setSort: x, setPage: S, setPageSize: C, setFilters: w, toggleFilterBar: T, setShowColumnPicker: E, toggleColumn: D, refetch: O } = Qr(), k = W(() => v ? v.cubes.map((e) => ({
|
|
1555
1702
|
name: e.name,
|
|
1556
1703
|
title: e.title || e.name
|
|
1557
|
-
})) : [], [v]), A =
|
|
1558
|
-
let { dimensions: t } =
|
|
1704
|
+
})) : [], [v]), A = H((e) => {
|
|
1705
|
+
let { dimensions: t } = Zr(e, v);
|
|
1559
1706
|
b(e, t);
|
|
1560
|
-
}, [v, b]), j =
|
|
1707
|
+
}, [v, b]), j = W(() => {
|
|
1561
1708
|
function e(t) {
|
|
1562
1709
|
return t.reduce((t, n) => "member" in n ? t + 1 : "type" in n && "filters" in n ? t + e(n.filters) : t, 0);
|
|
1563
1710
|
}
|
|
1564
1711
|
return e(l);
|
|
1565
|
-
}, [l]), M =
|
|
1712
|
+
}, [l]), M = W(() => {
|
|
1566
1713
|
if (!v) return null;
|
|
1567
1714
|
if (r) {
|
|
1568
1715
|
let e = v.cubes.find((e) => e.name === r);
|
|
1569
1716
|
return e ? { cubes: [e] } : null;
|
|
1570
1717
|
}
|
|
1571
1718
|
return v;
|
|
1572
|
-
}, [v, r]), N =
|
|
1719
|
+
}, [v, r]), N = H((e, t, n, r) => {
|
|
1573
1720
|
D(e.name);
|
|
1574
1721
|
}, [D]);
|
|
1575
|
-
return /* @__PURE__ */
|
|
1722
|
+
return /* @__PURE__ */ Y("div", {
|
|
1576
1723
|
className: `dc:flex dc:border border-dc-border dc:rounded-lg dc:overflow-hidden bg-dc-surface ${e}`,
|
|
1577
1724
|
style: { height: t },
|
|
1578
1725
|
children: [
|
|
1579
|
-
/* @__PURE__ */
|
|
1726
|
+
/* @__PURE__ */ J(ti, {
|
|
1580
1727
|
cubes: k,
|
|
1581
1728
|
selectedCube: r,
|
|
1582
1729
|
onSelectCube: A
|
|
1583
1730
|
}),
|
|
1584
|
-
/* @__PURE__ */
|
|
1731
|
+
/* @__PURE__ */ Y("div", {
|
|
1585
1732
|
className: "dc:flex dc:flex-col dc:flex-1 dc:min-w-0",
|
|
1586
1733
|
children: [
|
|
1587
|
-
r && /* @__PURE__ */
|
|
1734
|
+
r && /* @__PURE__ */ J(si, {
|
|
1588
1735
|
showFilterBar: u,
|
|
1589
1736
|
filterCount: j,
|
|
1590
1737
|
onToggleFilterBar: T,
|
|
@@ -1599,15 +1746,15 @@ function Zr({ className: e = "", maxHeight: t = "100vh", loadingComponent: n })
|
|
|
1599
1746
|
isFetching: m,
|
|
1600
1747
|
onRefresh: () => O()
|
|
1601
1748
|
}),
|
|
1602
|
-
r && u && /* @__PURE__ */
|
|
1749
|
+
r && u && /* @__PURE__ */ J("div", {
|
|
1603
1750
|
className: "dc:px-3 dc:py-2 dc:border-b border-dc-border bg-dc-surface",
|
|
1604
|
-
children: /* @__PURE__ */
|
|
1751
|
+
children: /* @__PURE__ */ J(en, {
|
|
1605
1752
|
filters: l,
|
|
1606
1753
|
schema: M,
|
|
1607
1754
|
onFiltersChange: w
|
|
1608
1755
|
})
|
|
1609
1756
|
}),
|
|
1610
|
-
/* @__PURE__ */
|
|
1757
|
+
/* @__PURE__ */ J(hi, {
|
|
1611
1758
|
data: f,
|
|
1612
1759
|
columns: i,
|
|
1613
1760
|
sortColumn: a,
|
|
@@ -1622,7 +1769,7 @@ function Zr({ className: e = "", maxHeight: t = "100vh", loadingComponent: n })
|
|
|
1622
1769
|
})
|
|
1623
1770
|
]
|
|
1624
1771
|
}),
|
|
1625
|
-
d && M && /* @__PURE__ */
|
|
1772
|
+
d && M && /* @__PURE__ */ J(be, {
|
|
1626
1773
|
isOpen: d,
|
|
1627
1774
|
onClose: () => E(!1),
|
|
1628
1775
|
onSelect: N,
|
|
@@ -1633,11 +1780,11 @@ function Zr({ className: e = "", maxHeight: t = "100vh", loadingComponent: n })
|
|
|
1633
1780
|
]
|
|
1634
1781
|
});
|
|
1635
1782
|
}
|
|
1636
|
-
function
|
|
1637
|
-
return /* @__PURE__ */
|
|
1783
|
+
function _i({ className: e, defaultCube: t, defaultPageSize: n = 20, maxHeight: r, loadingComponent: i }) {
|
|
1784
|
+
return /* @__PURE__ */ J(Jr, {
|
|
1638
1785
|
defaultPageSize: n,
|
|
1639
1786
|
defaultCube: t,
|
|
1640
|
-
children: /* @__PURE__ */
|
|
1787
|
+
children: /* @__PURE__ */ J(gi, {
|
|
1641
1788
|
className: e,
|
|
1642
1789
|
maxHeight: r,
|
|
1643
1790
|
loadingComponent: i
|
|
@@ -1646,13 +1793,13 @@ function Qr({ className: e, defaultCube: t, defaultPageSize: n = 20, maxHeight:
|
|
|
1646
1793
|
}
|
|
1647
1794
|
//#endregion
|
|
1648
1795
|
//#region src/client/components/DashboardThumbnailPlaceholder.tsx
|
|
1649
|
-
var
|
|
1650
|
-
function
|
|
1651
|
-
return /* @__PURE__ */
|
|
1796
|
+
var vi = D("segment");
|
|
1797
|
+
function yi({ className: e = "" }) {
|
|
1798
|
+
return /* @__PURE__ */ J("div", {
|
|
1652
1799
|
className: `dc:flex dc:items-center dc:justify-center bg-dc-bg-secondary ${e}`,
|
|
1653
|
-
children: /* @__PURE__ */
|
|
1800
|
+
children: /* @__PURE__ */ Y("div", {
|
|
1654
1801
|
className: "dc:text-center",
|
|
1655
|
-
children: [/* @__PURE__ */
|
|
1802
|
+
children: [/* @__PURE__ */ J(vi, { className: "dc:w-8 dc:h-8 dc:mx-auto dc:mb-2 text-dc-text-muted dc:opacity-50" }), /* @__PURE__ */ J("span", {
|
|
1656
1803
|
className: "dc:text-xs text-dc-text-muted",
|
|
1657
1804
|
children: "No preview"
|
|
1658
1805
|
})]
|
|
@@ -1660,6 +1807,6 @@ function ei({ className: e = "" }) {
|
|
|
1660
1807
|
});
|
|
1661
1808
|
}
|
|
1662
1809
|
//#endregion
|
|
1663
|
-
export {
|
|
1810
|
+
export { Vr as AgenticNotebook, De as AnalysisBuilder, Ke as AnalyticsDashboard, Hr as AnalyticsPage, ve as AnalyticsPortlet, de as ChartErrorBoundary, Ve as ConfirmModal, c as CubeClient, E as CubeProvider, u as DEFAULT_ICONS, Ye as DashboardEditModal, Ae as DashboardFilterBar, Me as DashboardGrid, Le as DashboardGridSurface, Se as DashboardModals, ee as DashboardProvider, ce as DashboardStoreProvider, yi as DashboardThumbnailPlaceholder, I as DashboardToolbar, _i as DataBrowser, _e as DrillBreadcrumb, ye as DrillMenu, rn as ExecutionPlanPanel, $t as ExplainAIPanel, Kt as LazyChart, B as LoadingIndicator, Ue as Modal, Rn as NotebookStoreProvider, we as PortletAnalysisModal, ze as PortletContainer, o as ScrollContainerProvider, st as THEME_PRESETS, ot as applyTheme, Rt as buildFunnelConfigFromQueries, Ft as buildServerFunnelQuery, m as captureThumbnail, T as chartPluginRegistry, vn as compressAndEncode, v as createCubeClient, Yt as createDashboardLayout, ue as createDashboardStore, Ne as createDefaultConfig, Ce as createDefaultFlowConfig, He as createDefaultFunnelConfig, Je as createDefaultQueryConfig, Te as createDefaultRetentionConfig, Ie as createDefaultWorkspace, kt as createExplainQueryKey, St as createFlowQueryKey, ht as createFunnelQueryKey, In as createNotebookStore, dn as decodeAndDecompress, pn as detectAsymmetricDateRanges, sn as detectMeasureCollisions, s as exportPortletToXlsx, Jt as formatChartData, Nt as formatDuration, _t as generateQueryLabel, fn as generateShareUrl, wn as getAvailableBindingKeyDimensions, Ht as getAvailableChartTypes, Lt as getBindingKeyField, yn as getBindingKeyLabel, S as getChartTypeIcon, Ct as getCombinedFields, zt as getCubeNameFromQuery, y as getFieldTypeIcon, D as getIcon, A as getIconData, b as getIconRegistry, k as getIconsByCategory, g as getMeasureTypeIcon, xt as getQueryIndices, yt as getQueryLabels, at as getTheme, it as getThemeVariable, Wt as getUnavailableChartTypes, Tn as getValidationSummary, qt as highlightCodeBlocks, Vt as isChartTypeAvailable, nt as isDarkMode, C as isExportAvailable, Ze as isFlowConfig, Ee as isFunnelConfig, Pt as isFunnelData, Sn as isMinimumFunnelConfigValid, Oe as isMultiQuery, Qe as isMultiQueryConfig, vt as isMultiQueryData, On as isMultiQueryValid, We as isQueryConfig, Re as isRetentionConfig, M as isSankeyData, N as isServerFlowQuery, $e as isServerFunnelQuery, xn as isShareableSize, je as isSingleQuery, d as isThumbnailCaptureAvailable, ke as isValidAnalysisConfig, xe as isValidAnalysisWorkspace, Bt as isValidChartType, pt as mergeQueryResults, Tt as mergeResultsByKey, Et as mergeResultsConcat, Be as migrateConfig, qe as migrateLegacyPortlet, mn as parseShareUrl, Ut as preloadChart, Gt as preloadCharts, l as registerIcons, O as resetIcons, ct as resetTheme, te as selectAllActions, Kn as selectBlockActions, zn as selectBlocks, En as selectBreakdowns, on as selectChartConfig, Gn as selectChatActions, Wn as selectChatState, Qt as selectCurrentState, re as selectDebugData, oe as selectDebugDataActions, fe as selectEditModeActions, et as selectEditModeState, Zt as selectFilters, nn as selectFunnelState, Un as selectInputValue, Vn as selectIsStreaming, F as selectLayoutActions, he as selectLayoutState, Bn as selectMessages, _n as selectMetrics, ne as selectModalActions, me as selectModalState, Xt as selectMultiQueryState, ge as selectPortletDebugData, Hn as selectSessionId, R as selectThumbnailDirty, gn as selectUIState, _ as setIcon, ut as setTheme, rt as setThemeVariable, It as transformServerFunnelResult, Tr as useAgentChat, un as useAnalysisBuilder, tn as useAnalysisBuilderStore, j as useCubeApi, x as useCubeContext, w as useCubeFeatures, tt as useCubeFieldLabel, ft as useCubeLoadQuery, ft as useCubeQuery, dt as useCubeMeta, h as useCubeMetaQuery, le as useDashboard, L as useDashboardContext, ae as useDashboardStore, Ge as useDashboardStoreApi, ie as useDashboardStoreOptional, Qr as useDataBrowser, P as useDrillInteraction, Ot as useDryRunQueries, Dt as useDryRunQuery, Pe as useElementVisibility, Mt as useExplainAI, jt as useExplainQuery, wt as useFlowQuery, bt as useFunnelQuery, gt as useMultiCubeLoadQuery, At as useMultiDryRunQueries, X as useNotebookStore, a as useScrollContainer, se as useScrollDetection, jn as useTheme, hn as validateBindingKeyExists, cn as validateBindingKeyForSteps, bn as validateFunnelConfig, mt as validateMergeKey, ln as validateMergeKeys, Dn as validateMultiQueryConfig, Cn as validateStepQueries, an as validateTimeDimensionAlignment, p as warnIfExcelJsMissing, f as warnIfScreenshotLibMissing, lt as watchThemeChanges };
|
|
1664
1811
|
|
|
1665
1812
|
//# sourceMappingURL=index.js.map
|