drizzle-cube 0.6.1 → 0.6.2
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/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +1 -1
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.js +1 -1
- package/dist/adapters/{handler-CfgE0JSL.js → handler-CtaSua-i.js} +1 -1
- package/dist/adapters/{handler-Cn0dOctE.cjs → handler-OwxSBJH8.cjs} +1 -1
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +1 -1
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +1 -1
- package/dist/{server/openai-B5jEiqiB.js → adapters/openai-CmVRIbUg.js} +18 -2
- package/dist/adapters/{openai-cDlFSTk6.js → openai-CtXqeznO.js} +1 -1
- package/dist/{server/openai-D0musiYP.cjs → adapters/openai-D-6l1Y8h.cjs} +3 -3
- package/dist/adapters/{openai-vXvLni8v.cjs → openai-DTSTMiXL.cjs} +1 -1
- package/dist/cjs/adapters/express/index.d.ts +114 -0
- package/dist/cjs/adapters/fastify/index.d.ts +113 -0
- package/dist/cjs/adapters/hono/agent-handler.d.ts +9 -0
- package/dist/cjs/adapters/hono/index.d.ts +120 -0
- package/dist/cjs/adapters/hono/mcp-handler.d.ts +37 -0
- package/dist/cjs/adapters/locale.d.ts +8 -0
- package/dist/cjs/adapters/mcp-tools-handlers.d.ts +18 -0
- package/dist/cjs/adapters/mcp-tools.d.ts +134 -0
- package/dist/cjs/adapters/mcp-transport.d.ts +158 -0
- package/dist/cjs/adapters/nextjs/index.d.ts +196 -0
- package/dist/cjs/adapters/nextjs/mcp-handler.d.ts +36 -0
- package/dist/cjs/adapters/types.d.ts +41 -0
- package/dist/cjs/adapters/utils.d.ts +354 -0
- package/dist/cjs/client/adapters/adapterRegistry.d.ts +44 -0
- package/dist/cjs/client/adapters/flowModeAdapter.d.ts +3 -0
- package/dist/cjs/client/adapters/funnelModeAdapter.d.ts +19 -0
- package/dist/cjs/client/adapters/index.d.ts +29 -0
- package/dist/cjs/client/adapters/modeAdapter.d.ts +117 -0
- package/dist/cjs/client/adapters/queryModeAdapter.d.ts +16 -0
- package/dist/cjs/client/adapters/retentionModeAdapter.d.ts +3 -0
- package/dist/cjs/client/charts/ChartLoader.d.ts +69 -0
- package/dist/cjs/client/charts/chartComponentRegistry.d.ts +46 -0
- package/dist/cjs/client/charts/chartConfigHelpers.d.ts +38 -0
- package/dist/cjs/client/charts/chartConfigRegistry.d.ts +15 -0
- package/dist/cjs/client/charts/chartConfigs.d.ts +142 -0
- package/dist/cjs/client/charts/chartPlugin.d.ts +74 -0
- package/dist/cjs/client/charts/lazyChartConfigRegistry.d.ts +100 -0
- package/dist/cjs/client/charts.d.ts +17 -0
- package/dist/cjs/client/client/BatchCoordinator.d.ts +38 -0
- package/dist/cjs/client/client/CubeClient.d.ts +32 -0
- package/dist/cjs/client/components/AIAssistant/constants.d.ts +11 -0
- package/dist/cjs/client/components/AIAssistant/index.d.ts +10 -0
- package/dist/cjs/client/components/AIAssistant/types.d.ts +49 -0
- package/dist/cjs/client/components/AIAssistant/utils.d.ts +17 -0
- package/dist/cjs/client/components/AgenticNotebook/AgentChatPanel.d.ts +27 -0
- package/dist/cjs/client/components/AgenticNotebook/ChatInput.d.ts +14 -0
- package/dist/cjs/client/components/AgenticNotebook/ChatMessage.d.ts +9 -0
- package/dist/cjs/client/components/AgenticNotebook/NotebookCanvas.d.ts +6 -0
- package/dist/cjs/client/components/AgenticNotebook/NotebookMarkdownBlock.d.ts +12 -0
- package/dist/cjs/client/components/AgenticNotebook/NotebookPortletBlock.d.ts +15 -0
- package/dist/cjs/client/components/AgenticNotebook/agentChatParts.d.ts +34 -0
- package/dist/cjs/client/components/AgenticNotebook/chatMessageParts.d.ts +39 -0
- package/dist/cjs/client/components/AgenticNotebook/index.d.ts +56 -0
- package/dist/cjs/client/components/AgenticNotebook/useAgentChatController.d.ts +25 -0
- package/dist/cjs/client/components/AgenticNotebook/useNotebookAutosave.d.ts +12 -0
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +25 -0
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +29 -0
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +18 -0
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +11 -0
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +20 -0
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +14 -0
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +16 -0
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +27 -0
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisQueryPanel.d.ts +12 -0
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisQueryPanelParts.d.ts +64 -0
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisResultsHeader.d.ts +67 -0
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisResultsPanel.d.ts +14 -0
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisTypeSelector.d.ts +17 -0
- package/dist/cjs/client/components/AnalysisBuilder/BreakdownComparisonToggle.d.ts +13 -0
- package/dist/cjs/client/components/AnalysisBuilder/BreakdownItemCard.d.ts +12 -0
- package/dist/cjs/client/components/AnalysisBuilder/BreakdownRow.d.ts +26 -0
- package/dist/cjs/client/components/AnalysisBuilder/BreakdownSection.d.ts +9 -0
- package/dist/cjs/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +10 -0
- package/dist/cjs/client/components/AnalysisBuilder/ExecutionPlanPanel.d.ts +49 -0
- package/dist/cjs/client/components/AnalysisBuilder/ExecutionPlanPanelParts.d.ts +22 -0
- package/dist/cjs/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +16 -0
- package/dist/cjs/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +4 -0
- package/dist/cjs/client/components/AnalysisBuilder/FieldSearchItem.d.ts +6 -0
- package/dist/cjs/client/components/AnalysisBuilder/FieldSearchModal.d.ts +2 -0
- package/dist/cjs/client/components/AnalysisBuilder/FieldSearchResults.d.ts +16 -0
- package/dist/cjs/client/components/AnalysisBuilder/FilterConfigModal.d.ts +17 -0
- package/dist/cjs/client/components/AnalysisBuilder/FilterValueInput.d.ts +63 -0
- package/dist/cjs/client/components/AnalysisBuilder/FlowConfigPanel.d.ts +28 -0
- package/dist/cjs/client/components/AnalysisBuilder/FlowDepthControls.d.ts +10 -0
- package/dist/cjs/client/components/AnalysisBuilder/FlowModeContent.d.ts +57 -0
- package/dist/cjs/client/components/AnalysisBuilder/FlowVisualizationPicker.d.ts +7 -0
- package/dist/cjs/client/components/AnalysisBuilder/FunnelBindingKeySelector.d.ts +21 -0
- package/dist/cjs/client/components/AnalysisBuilder/FunnelConfigPanel.d.ts +24 -0
- package/dist/cjs/client/components/AnalysisBuilder/FunnelModeContent.d.ts +48 -0
- package/dist/cjs/client/components/AnalysisBuilder/FunnelStepCard.d.ts +25 -0
- package/dist/cjs/client/components/AnalysisBuilder/FunnelStepList.d.ts +26 -0
- package/dist/cjs/client/components/AnalysisBuilder/LegacyBooleanOptions.d.ts +8 -0
- package/dist/cjs/client/components/AnalysisBuilder/LimitSection.d.ts +14 -0
- package/dist/cjs/client/components/AnalysisBuilder/MetricItemCard.d.ts +11 -0
- package/dist/cjs/client/components/AnalysisBuilder/MetricRow.d.ts +23 -0
- package/dist/cjs/client/components/AnalysisBuilder/MetricsSection.d.ts +9 -0
- package/dist/cjs/client/components/AnalysisBuilder/RetentionConfigPanel.d.ts +36 -0
- package/dist/cjs/client/components/AnalysisBuilder/RetentionModeContent.d.ts +71 -0
- package/dist/cjs/client/components/AnalysisBuilder/SectionHeading.d.ts +12 -0
- package/dist/cjs/client/components/AnalysisBuilder/SortToggleButton.d.ts +13 -0
- package/dist/cjs/client/components/AnalysisBuilder/StringArrayInput.d.ts +17 -0
- package/dist/cjs/client/components/AnalysisBuilder/filterConfigModalUtils.d.ts +30 -0
- package/dist/cjs/client/components/AnalysisBuilder/hooks/useAnalysisBuilderImperativeHandle.d.ts +13 -0
- package/dist/cjs/client/components/AnalysisBuilder/hooks/useDragReorder.d.ts +25 -0
- package/dist/cjs/client/components/AnalysisBuilder/hooks/useFieldSearchKeyboard.d.ts +11 -0
- package/dist/cjs/client/components/AnalysisBuilder/index.d.ts +9 -0
- package/dist/cjs/client/components/AnalysisBuilder/types.d.ts +851 -0
- package/dist/cjs/client/components/AnalysisBuilder/utils/axisConfigUtils.d.ts +23 -0
- package/dist/cjs/client/components/AnalysisBuilder/utils/executionPlanMarkdown.d.ts +8 -0
- package/dist/cjs/client/components/AnalysisBuilder/utils/fieldUtils.d.ts +69 -0
- package/dist/cjs/client/components/AnalysisBuilder/utils/filterUtils.d.ts +19 -0
- package/dist/cjs/client/components/AnalysisBuilder/utils/idUtils.d.ts +11 -0
- package/dist/cjs/client/components/AnalysisBuilder/utils/index.d.ts +11 -0
- package/dist/cjs/client/components/AnalysisBuilder/utils/queryUtils.d.ts +11 -0
- package/dist/cjs/client/components/AnalysisBuilder/utils/recentFieldsUtils.d.ts +14 -0
- package/dist/cjs/client/components/AnalysisBuilder/utils/resultsPanelDerive.d.ts +68 -0
- package/dist/cjs/client/components/AnalysisBuilder/utils/shareStateUtils.d.ts +68 -0
- package/dist/cjs/client/components/AnalysisBuilder/utils/sortUtils.d.ts +7 -0
- package/dist/cjs/client/components/AnalysisBuilder/utils/storageUtils.d.ts +44 -0
- package/dist/cjs/client/components/AnalysisBuilderLazy.d.ts +4 -0
- package/dist/cjs/client/components/AnalyticsDashboard.d.ts +2 -0
- package/dist/cjs/client/components/AnalyticsPage.d.ts +1 -0
- package/dist/cjs/client/components/AnalyticsPortlet.d.ts +10 -0
- package/dist/cjs/client/components/ChartErrorBoundary.d.ts +21 -0
- package/dist/cjs/client/components/ChartTypeSelector.d.ts +15 -0
- package/dist/cjs/client/components/ColorPaletteSelector.d.ts +11 -0
- package/dist/cjs/client/components/ConfirmModal.d.ts +30 -0
- package/dist/cjs/client/components/DashboardEditModal.d.ts +15 -0
- package/dist/cjs/client/components/DashboardFilterPanel.d.ts +15 -0
- package/dist/cjs/client/components/DashboardFilters/CompactFilterBar.d.ts +13 -0
- package/dist/cjs/client/components/DashboardFilters/CompactFilterBarParts.d.ts +26 -0
- package/dist/cjs/client/components/DashboardFilters/CustomDateDropdown.d.ts +10 -0
- package/dist/cjs/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +20 -0
- package/dist/cjs/client/components/DashboardFilters/DashboardFilterConfigModalParts.d.ts +27 -0
- package/dist/cjs/client/components/DashboardFilters/DashboardFilterItem.d.ts +14 -0
- package/dist/cjs/client/components/DashboardFilters/DashboardFilterValueInput.d.ts +39 -0
- package/dist/cjs/client/components/DashboardFilters/DatePresetChips.d.ts +8 -0
- package/dist/cjs/client/components/DashboardFilters/EditModeFilterList.d.ts +13 -0
- package/dist/cjs/client/components/DashboardFilters/FilterChip.d.ts +12 -0
- package/dist/cjs/client/components/DashboardFilters/FilterEditModal.d.ts +15 -0
- package/dist/cjs/client/components/DashboardFilters/FilterValuePopover.d.ts +11 -0
- package/dist/cjs/client/components/DashboardFilters/ReadOnlyFilterList.d.ts +13 -0
- package/dist/cjs/client/components/DashboardFilters/XTDDropdown.d.ts +10 -0
- package/dist/cjs/client/components/DashboardFilters/dashboardFilterConfigModalUtils.d.ts +21 -0
- package/dist/cjs/client/components/DashboardFilters/useCompactFilterBar.d.ts +19 -0
- package/dist/cjs/client/components/DashboardFilters/useDashboardFilterConfigModal.d.ts +69 -0
- package/dist/cjs/client/components/DashboardFilters/useDateRangeState.d.ts +19 -0
- package/dist/cjs/client/components/DashboardFilters/useFilterDropdowns.d.ts +21 -0
- package/dist/cjs/client/components/DashboardFilters/useFilterValueFetch.d.ts +23 -0
- package/dist/cjs/client/components/DashboardGrid.d.ts +22 -0
- package/dist/cjs/client/components/DashboardPortletCard.d.ts +4 -0
- package/dist/cjs/client/components/DashboardThumbnailPlaceholder.d.ts +13 -0
- package/dist/cjs/client/components/DataBrowser/DataBrowserSidebar.d.ts +16 -0
- package/dist/cjs/client/components/DataBrowser/DataBrowserTable.d.ts +16 -0
- package/dist/cjs/client/components/DataBrowser/DataBrowserToolbar.d.ts +22 -0
- package/dist/cjs/client/components/DataBrowser/index.d.ts +28 -0
- package/dist/cjs/client/components/DataHistogram.d.ts +27 -0
- package/dist/cjs/client/components/DebugModal.d.ts +17 -0
- package/dist/cjs/client/components/DrillBreadcrumb.d.ts +7 -0
- package/dist/cjs/client/components/DrillMenu.d.ts +8 -0
- package/dist/cjs/client/components/FloatingEditToolbar.d.ts +30 -0
- package/dist/cjs/client/components/LoadingIndicator.d.ts +16 -0
- package/dist/cjs/client/components/MobileStackedLayout.d.ts +14 -0
- package/dist/cjs/client/components/Modal.d.ts +16 -0
- package/dist/cjs/client/components/PortletAnalysisModal.d.ts +27 -0
- package/dist/cjs/client/components/PortletContainer.d.ts +10 -0
- package/dist/cjs/client/components/PortletFilterConfigModal.d.ts +13 -0
- package/dist/cjs/client/components/RowManagedLayout.d.ts +19 -0
- package/dist/cjs/client/components/ScaledGridWrapper.d.ts +12 -0
- package/dist/cjs/client/components/SchemaVisualization/CubeNode.d.ts +25 -0
- package/dist/cjs/client/components/SchemaVisualization/FieldDetailPanel.d.ts +15 -0
- package/dist/cjs/client/components/SchemaVisualization/RelationshipEdge.d.ts +13 -0
- package/dist/cjs/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +3 -0
- package/dist/cjs/client/components/SchemaVisualization/index.d.ts +10 -0
- package/dist/cjs/client/components/SchemaVisualization/useERDLayout.d.ts +39 -0
- package/dist/cjs/client/components/SchemaVisualization/xyflowContext.d.ts +11 -0
- package/dist/cjs/client/components/TextPortletModal.d.ts +12 -0
- package/dist/cjs/client/components/analyticsPortlet/PortletChart.d.ts +31 -0
- package/dist/cjs/client/components/analyticsPortlet/PortletChartView.d.ts +35 -0
- package/dist/cjs/client/components/analyticsPortlet/PortletStates.d.ts +65 -0
- package/dist/cjs/client/components/analyticsPortlet/parsePortletQuery.d.ts +22 -0
- package/dist/cjs/client/components/analyticsPortlet/portletRenderState.d.ts +31 -0
- package/dist/cjs/client/components/analyticsPortlet/usePortletDebugData.d.ts +37 -0
- package/dist/cjs/client/components/analyticsPortlet/usePortletDrillState.d.ts +17 -0
- package/dist/cjs/client/components/analyticsPortlet/usePortletQueryResults.d.ts +37 -0
- package/dist/cjs/client/components/charts/ActivityGridChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/ActivityGridChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/ActivityGridChart.helpers.d.ts +33 -0
- package/dist/cjs/client/components/charts/ActivityGridChart.render.d.ts +31 -0
- package/dist/cjs/client/components/charts/AngledXAxisTick.d.ts +19 -0
- package/dist/cjs/client/components/charts/AreaChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/AreaChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/AxisFormatControls.d.ts +37 -0
- package/dist/cjs/client/components/charts/BarChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/BarChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/BarChart.helpers.d.ts +23 -0
- package/dist/cjs/client/components/charts/BarSeries.d.ts +29 -0
- package/dist/cjs/client/components/charts/BoxPlotChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/BoxPlotChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/BubbleChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/BubbleChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/BubbleChart.helpers.d.ts +43 -0
- package/dist/cjs/client/components/charts/BubbleChart.render.d.ts +21 -0
- package/dist/cjs/client/components/charts/CandlestickChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/CandlestickChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/ChartContainer.d.ts +7 -0
- package/dist/cjs/client/components/charts/ChartLegend.d.ts +7 -0
- package/dist/cjs/client/components/charts/ChartStates.d.ts +38 -0
- package/dist/cjs/client/components/charts/ChartTooltip.d.ts +7 -0
- package/dist/cjs/client/components/charts/DataTable.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/DataTable.d.ts +4 -0
- package/dist/cjs/client/components/charts/FunnelChart.config.d.ts +9 -0
- package/dist/cjs/client/components/charts/FunnelChart.d.ts +11 -0
- package/dist/cjs/client/components/charts/FunnelChart.helpers.d.ts +25 -0
- package/dist/cjs/client/components/charts/FunnelViews.d.ts +16 -0
- package/dist/cjs/client/components/charts/GaugeChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/GaugeChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/HeatMapCanvas.d.ts +25 -0
- package/dist/cjs/client/components/charts/HeatMapChart.config.d.ts +8 -0
- package/dist/cjs/client/components/charts/HeatMapChart.d.ts +10 -0
- package/dist/cjs/client/components/charts/HeatMapChart.helpers.d.ts +64 -0
- package/dist/cjs/client/components/charts/KpiDelta.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/KpiDelta.d.ts +4 -0
- package/dist/cjs/client/components/charts/KpiDelta.helpers.d.ts +20 -0
- package/dist/cjs/client/components/charts/KpiNumber.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/KpiNumber.d.ts +4 -0
- package/dist/cjs/client/components/charts/KpiNumber.helpers.d.ts +30 -0
- package/dist/cjs/client/components/charts/KpiStates.d.ts +19 -0
- package/dist/cjs/client/components/charts/KpiText.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/KpiText.d.ts +4 -0
- package/dist/cjs/client/components/charts/LineChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/LineChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/MarkdownChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/MarkdownChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/MeasureProfileChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/MeasureProfileChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/MissingDependencyFallback.d.ts +12 -0
- package/dist/cjs/client/components/charts/PieChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/PieChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/RadarChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/RadarChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/RadialBarChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/RadialBarChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/RetentionCombinedChart.config.d.ts +2 -0
- package/dist/cjs/client/components/charts/RetentionCombinedChart.d.ts +14 -0
- package/dist/cjs/client/components/charts/RetentionHeatmap.config.d.ts +2 -0
- package/dist/cjs/client/components/charts/RetentionHeatmap.d.ts +7 -0
- package/dist/cjs/client/components/charts/SankeyChart.config.d.ts +9 -0
- package/dist/cjs/client/components/charts/SankeyChart.d.ts +10 -0
- package/dist/cjs/client/components/charts/ScatterChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/ScatterChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/ScatterChart.helpers.d.ts +43 -0
- package/dist/cjs/client/components/charts/ScatterSeries.d.ts +17 -0
- package/dist/cjs/client/components/charts/ScatterTooltip.d.ts +21 -0
- package/dist/cjs/client/components/charts/SunburstChart.config.d.ts +9 -0
- package/dist/cjs/client/components/charts/SunburstChart.d.ts +10 -0
- package/dist/cjs/client/components/charts/TreeMapChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/TreeMapChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/TreeMapChart.helpers.d.ts +37 -0
- package/dist/cjs/client/components/charts/TreeMapContent.d.ts +24 -0
- package/dist/cjs/client/components/charts/TreeMapLegend.d.ts +13 -0
- package/dist/cjs/client/components/charts/WaterfallChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/WaterfallChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/cartesianChartHelpers.d.ts +126 -0
- package/dist/cjs/client/components/charts/chartAxisResolution.d.ts +32 -0
- package/dist/cjs/client/components/charts/chartScaffolding.d.ts +77 -0
- package/dist/cjs/client/components/charts/gaugeChartHelpers.d.ts +36 -0
- package/dist/cjs/client/components/charts/index.d.ts +25 -0
- package/dist/cjs/client/components/charts/kpiTextHelpers.d.ts +46 -0
- package/dist/cjs/client/components/charts/radarChartHelpers.d.ts +14 -0
- package/dist/cjs/client/components/charts/radialBarChartHelpers.d.ts +22 -0
- package/dist/cjs/client/components/charts/useChartDimensions.d.ts +20 -0
- package/dist/cjs/client/components/charts/useKpiDimensions.d.ts +30 -0
- package/dist/cjs/client/components/dashboard/DashboardContext.d.ts +113 -0
- package/dist/cjs/client/components/dashboard/DashboardCoordinator.d.ts +2 -0
- package/dist/cjs/client/components/dashboard/DashboardEditBar.d.ts +5 -0
- package/dist/cjs/client/components/dashboard/DashboardFilterBar.d.ts +8 -0
- package/dist/cjs/client/components/dashboard/DashboardGridSurface.d.ts +8 -0
- package/dist/cjs/client/components/dashboard/DashboardModals.d.ts +8 -0
- package/dist/cjs/client/components/dashboard/DashboardProvider.d.ts +2 -0
- package/dist/cjs/client/components/dashboard/DashboardToolbar.d.ts +11 -0
- package/dist/cjs/client/components/dashboard/LayoutModeToggle.d.ts +10 -0
- package/dist/cjs/client/components/dashboard/dashboardGridUtils.d.ts +17 -0
- package/dist/cjs/client/components/dashboard/index.d.ts +13 -0
- package/dist/cjs/client/components/dashboardPortletCard/FilterFieldChip.d.ts +12 -0
- package/dist/cjs/client/components/dashboardPortletCard/PortletCardHeader.d.ts +43 -0
- package/dist/cjs/client/components/dashboardPortletCard/cardStyles.d.ts +33 -0
- package/dist/cjs/client/components/dashboardPortletCard/filterField.d.ts +12 -0
- package/dist/cjs/client/components/dashboardPortletCard/propsEqual.d.ts +55 -0
- package/dist/cjs/client/components/dashboardPortletCard/usePortletCardActions.d.ts +16 -0
- package/dist/cjs/client/components/portletAnalysisModal/saveValidation.d.ts +8 -0
- package/dist/cjs/client/components/shared/DateRangeFilter.d.ts +4 -0
- package/dist/cjs/client/components/shared/DateRangeSelector.d.ts +13 -0
- package/dist/cjs/client/components/shared/FilterBuilder.d.ts +4 -0
- package/dist/cjs/client/components/shared/FilterGroup.d.ts +4 -0
- package/dist/cjs/client/components/shared/FilterItem.d.ts +4 -0
- package/dist/cjs/client/components/shared/FilterValueSelector.d.ts +4 -0
- package/dist/cjs/client/components/shared/dateRangeUtils.d.ts +40 -0
- package/dist/cjs/client/components/shared/filterDisplayUtils.d.ts +10 -0
- package/dist/cjs/client/components/shared/filterItem/FilterDateRangeSelector.d.ts +17 -0
- package/dist/cjs/client/components/shared/filterItem/FilterFieldDropdown.d.ts +16 -0
- package/dist/cjs/client/components/shared/filterItem/dateRangeSync.d.ts +14 -0
- package/dist/cjs/client/components/shared/filterItem/fieldVisuals.d.ts +5 -0
- package/dist/cjs/client/components/shared/filterValueSelector/FilterValueInputs.d.ts +55 -0
- package/dist/cjs/client/components/shared/filterValueSelector/useFilterValueSelectorState.d.ts +25 -0
- package/dist/cjs/client/components/shared/queryFieldUtils.d.ts +21 -0
- package/dist/cjs/client/components/shared/types.d.ts +60 -0
- package/dist/cjs/client/components/shared/utils.d.ts +71 -0
- package/dist/cjs/client/components.d.ts +17 -0
- package/dist/cjs/client/hooks/agentChatStream.d.ts +39 -0
- package/dist/cjs/client/hooks/analysisQueryExecutionModes.d.ts +133 -0
- package/dist/cjs/client/hooks/dashboard/layoutUtils.d.ts +7 -0
- package/dist/cjs/client/hooks/dashboard/useDashboardController.d.ts +53 -0
- package/dist/cjs/client/hooks/dashboard/useGridLayoutEngine.d.ts +10 -0
- package/dist/cjs/client/hooks/dashboard/useRowLayoutEngine.d.ts +18 -0
- package/dist/cjs/client/hooks/drillNavigation.d.ts +25 -0
- package/dist/cjs/client/hooks/queries/index.d.ts +20 -0
- package/dist/cjs/client/hooks/queries/useCubeLoadQuery.d.ts +85 -0
- package/dist/cjs/client/hooks/queries/useCubeMetaQuery.d.ts +51 -0
- package/dist/cjs/client/hooks/queries/useDryRunQuery.d.ts +153 -0
- package/dist/cjs/client/hooks/queries/useExplainAI.d.ts +62 -0
- package/dist/cjs/client/hooks/queries/useExplainQuery.d.ts +62 -0
- package/dist/cjs/client/hooks/queries/useFlowQuery.d.ts +72 -0
- package/dist/cjs/client/hooks/queries/useFunnelQuery.d.ts +20 -0
- package/dist/cjs/client/hooks/queries/useMultiCubeLoadQuery.d.ts +70 -0
- package/dist/cjs/client/hooks/queries/useRetentionQuery.d.ts +67 -0
- package/dist/cjs/client/hooks/useAgentChat.d.ts +60 -0
- package/dist/cjs/client/hooks/useAnalysisAI.d.ts +56 -0
- package/dist/cjs/client/hooks/useAnalysisBuilderHook.d.ts +245 -0
- package/dist/cjs/client/hooks/useAnalysisChartDefaults.d.ts +35 -0
- package/dist/cjs/client/hooks/useAnalysisCombinedFields.d.ts +18 -0
- package/dist/cjs/client/hooks/useAnalysisInitialization.d.ts +25 -0
- package/dist/cjs/client/hooks/useAnalysisQueryBuilder.d.ts +32 -0
- package/dist/cjs/client/hooks/useAnalysisQueryExecution.d.ts +144 -0
- package/dist/cjs/client/hooks/useAnalysisShare.d.ts +18 -0
- package/dist/cjs/client/hooks/useAnalysisUIState.d.ts +24 -0
- package/dist/cjs/client/hooks/useCubeFieldLabel.d.ts +16 -0
- package/dist/cjs/client/hooks/useDashboardHook.d.ts +123 -0
- package/dist/cjs/client/hooks/useDataBrowser.d.ts +67 -0
- package/dist/cjs/client/hooks/useDebounce.d.ts +12 -0
- package/dist/cjs/client/hooks/useDebounceQuery.d.ts +48 -0
- package/dist/cjs/client/hooks/useDirtyStateTracking.d.ts +37 -0
- package/dist/cjs/client/hooks/useDragAutoScroll.d.ts +18 -0
- package/dist/cjs/client/hooks/useDrillInteraction.d.ts +9 -0
- package/dist/cjs/client/hooks/useElementVisibility.d.ts +30 -0
- package/dist/cjs/client/hooks/useFilterValues.d.ts +19 -0
- package/dist/cjs/client/hooks/useNotebookLayout.d.ts +8 -0
- package/dist/cjs/client/hooks/useResponsiveDashboard.d.ts +16 -0
- package/dist/cjs/client/hooks/useScrollDetection.d.ts +29 -0
- package/dist/cjs/client/hooks/useTheme.d.ts +11 -0
- package/dist/cjs/client/hooks/useTranslation.d.ts +21 -0
- package/dist/cjs/client/hooks.d.ts +17 -0
- package/dist/cjs/client/icons/customIcons.d.ts +22 -0
- package/dist/cjs/client/icons/defaultIcons.d.ts +5 -0
- package/dist/cjs/client/icons/index.d.ts +22 -0
- package/dist/cjs/client/icons/registry.d.ts +64 -0
- package/dist/cjs/client/icons/types.d.ts +129 -0
- package/dist/cjs/client/icons.d.ts +2 -0
- package/dist/cjs/client/index.d.ts +76 -0
- package/dist/cjs/client/providers/CubeApiProvider.d.ts +24 -0
- package/dist/cjs/client/providers/CubeFeaturesProvider.d.ts +19 -0
- package/dist/cjs/client/providers/CubeMetaContext.d.ts +11 -0
- package/dist/cjs/client/providers/CubeMetaProvider.d.ts +6 -0
- package/dist/cjs/client/providers/CubeProvider.d.ts +70 -0
- package/dist/cjs/client/providers/I18nProvider.d.ts +18 -0
- package/dist/cjs/client/providers/ScrollContainerContext.d.ts +19 -0
- package/dist/cjs/client/providers.d.ts +10 -0
- package/dist/cjs/client/schema.d.ts +13 -0
- package/dist/cjs/client/shared/chartConfigBuilders.d.ts +18 -0
- package/dist/cjs/client/shared/chartDefaults.d.ts +59 -0
- package/dist/cjs/client/shared/components/CodeBlock.d.ts +13 -0
- package/dist/cjs/client/shared/components/QueryAnalysisPanel.d.ts +7 -0
- package/dist/cjs/client/shared/components/QueryAnalysisPanel.sections.d.ts +41 -0
- package/dist/cjs/client/shared/index.d.ts +11 -0
- package/dist/cjs/client/shared/queryKey.d.ts +1 -0
- package/dist/cjs/client/shared/queryTransforms.d.ts +20 -0
- package/dist/cjs/client/shared/types.d.ts +184 -0
- package/dist/cjs/client/shared/utils.d.ts +104 -0
- package/dist/cjs/client/stores/analysisBuilderStore.d.ts +578 -0
- package/dist/cjs/client/stores/dashboardStore.d.ts +292 -0
- package/dist/cjs/client/stores/dataBrowserStore.d.ts +34 -0
- package/dist/cjs/client/stores/index.d.ts +13 -0
- package/dist/cjs/client/stores/notebookStore.d.ts +157 -0
- package/dist/cjs/client/stores/optionsToAnalysisConfig.d.ts +17 -0
- package/dist/cjs/client/stores/slices/coreSlice.d.ts +96 -0
- package/dist/cjs/client/stores/slices/flowSlice.d.ts +69 -0
- package/dist/cjs/client/stores/slices/funnelSlice.d.ts +61 -0
- package/dist/cjs/client/stores/slices/index.d.ts +13 -0
- package/dist/cjs/client/stores/slices/querySlice.d.ts +55 -0
- package/dist/cjs/client/stores/slices/retentionSlice.d.ts +66 -0
- package/dist/cjs/client/stores/slices/uiSlice.d.ts +52 -0
- package/dist/cjs/client/theme/index.d.ts +135 -0
- package/dist/cjs/client/types/analysisConfig.d.ts +185 -0
- package/dist/cjs/client/types/drill.d.ts +240 -0
- package/dist/cjs/client/types/flow.d.ts +191 -0
- package/dist/cjs/client/types/funnel.d.ts +288 -0
- package/dist/cjs/client/types/retention.d.ts +301 -0
- package/dist/cjs/client/types.d.ts +600 -0
- package/dist/cjs/client/utils/axisValueFormatting.d.ts +32 -0
- package/dist/cjs/client/utils/chartConstants.d.ts +16 -0
- package/dist/cjs/client/utils/chartUtils.d.ts +35 -0
- package/dist/cjs/client/utils/colorPalettes.d.ts +35 -0
- package/dist/cjs/client/utils/comparisonUtils.d.ts +96 -0
- package/dist/cjs/client/utils/configMigration.d.ts +85 -0
- package/dist/cjs/client/utils/drillQueryBuilder.d.ts +41 -0
- package/dist/cjs/client/utils/exportXlsx.d.ts +20 -0
- package/dist/cjs/client/utils/filterUtils.d.ts +113 -0
- package/dist/cjs/client/utils/funnelExecution.d.ts +211 -0
- package/dist/cjs/client/utils/funnelValidation.d.ts +46 -0
- package/dist/cjs/client/utils/index.d.ts +94 -0
- package/dist/cjs/client/utils/joinReachability.d.ts +27 -0
- package/dist/cjs/client/utils/measureIcons.d.ts +11 -0
- package/dist/cjs/client/utils/multiQueryUtils.d.ts +86 -0
- package/dist/cjs/client/utils/multiQueryValidation.d.ts +69 -0
- package/dist/cjs/client/utils/periodUtils.d.ts +40 -0
- package/dist/cjs/client/utils/pivotUtils.d.ts +87 -0
- package/dist/cjs/client/utils/shareUtils.d.ts +61 -0
- package/dist/cjs/client/utils/syntaxHighlighting.d.ts +36 -0
- package/dist/cjs/client/utils/targetUtils.d.ts +36 -0
- package/dist/cjs/client/utils/thumbnail.d.ts +36 -0
- package/dist/cjs/client/utils/timeValueFormatting.d.ts +32 -0
- package/dist/cjs/client/utils.d.ts +8 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/server/adapters/base-adapter.d.ts +332 -0
- package/dist/cjs/server/adapters/databend-adapter.d.ts +63 -0
- package/dist/cjs/server/adapters/duckdb-adapter.d.ts +68 -0
- package/dist/cjs/server/adapters/mysql-adapter.d.ts +65 -0
- package/dist/cjs/server/adapters/postgres-adapter.d.ts +55 -0
- package/dist/cjs/server/adapters/singlestore-adapter.d.ts +4 -0
- package/dist/cjs/server/adapters/snowflake-adapter.d.ts +53 -0
- package/dist/cjs/server/adapters/sqlite-adapter.d.ts +120 -0
- package/dist/cjs/server/adapters/window-function-builder.d.ts +11 -0
- package/dist/cjs/server/agent/chart-validation.d.ts +22 -0
- package/dist/cjs/server/agent/handler-steps.d.ts +37 -0
- package/dist/cjs/server/agent/handler.d.ts +25 -0
- package/dist/cjs/server/agent/index.d.ts +11 -0
- package/dist/cjs/server/agent/providers/anthropic.d.ts +24 -0
- package/dist/cjs/server/agent/providers/factory.d.ts +12 -0
- package/dist/cjs/server/agent/providers/google.d.ts +23 -0
- package/dist/cjs/server/agent/providers/index.d.ts +6 -0
- package/dist/cjs/server/agent/providers/openai.d.ts +26 -0
- package/dist/cjs/server/agent/providers/types.d.ts +95 -0
- package/dist/cjs/server/agent/system-prompt.d.ts +5 -0
- package/dist/cjs/server/agent/tools.d.ts +28 -0
- package/dist/cjs/server/agent/types.d.ts +192 -0
- package/dist/cjs/server/ai/discovery-helpers.d.ts +29 -0
- package/dist/cjs/server/ai/discovery.d.ts +66 -0
- package/dist/cjs/server/ai/index.d.ts +10 -0
- package/dist/cjs/server/ai/mcp-prompts.d.ts +83 -0
- package/dist/cjs/server/ai/query-schema.d.ts +258 -0
- package/dist/cjs/server/ai/schemas.d.ts +63 -0
- package/dist/cjs/server/ai/suggestion-helpers.d.ts +33 -0
- package/dist/cjs/server/ai/suggestion.d.ts +16 -0
- package/dist/cjs/server/ai/validation-helpers.d.ts +21 -0
- package/dist/cjs/server/ai/validation.d.ts +31 -0
- package/dist/cjs/server/builders/analysis-utils.d.ts +106 -0
- package/dist/cjs/server/builders/comparison-query-builder.d.ts +70 -0
- package/dist/cjs/server/builders/cte-builder.d.ts +108 -0
- package/dist/cjs/server/builders/date-time-builder.d.ts +34 -0
- package/dist/cjs/server/builders/date-time-helpers.d.ts +34 -0
- package/dist/cjs/server/builders/filter-builder.d.ts +25 -0
- package/dist/cjs/server/builders/filter-operators.d.ts +23 -0
- package/dist/cjs/server/builders/flow-query-builder.d.ts +136 -0
- package/dist/cjs/server/builders/funnel-query-builder.d.ts +145 -0
- package/dist/cjs/server/builders/group-by-builder.d.ts +38 -0
- package/dist/cjs/server/builders/index.d.ts +13 -0
- package/dist/cjs/server/builders/measure-builder.d.ts +185 -0
- package/dist/cjs/server/builders/retention-query-builder.d.ts +98 -0
- package/dist/cjs/server/cache-providers/index.d.ts +5 -0
- package/dist/cjs/server/cache-providers/memory.d.ts +105 -0
- package/dist/cjs/server/cache-utils.d.ts +85 -0
- package/dist/cjs/server/compiler-metadata.d.ts +11 -0
- package/dist/cjs/server/compiler.d.ts +212 -0
- package/dist/cjs/server/cube-utils.d.ts +158 -0
- package/dist/cjs/server/database-utils.d.ts +18 -0
- package/dist/cjs/server/execution/annotation-builder.d.ts +12 -0
- package/dist/cjs/server/execution/filter-cache-preloader.d.ts +19 -0
- package/dist/cjs/server/execution/mode-router.d.ts +25 -0
- package/dist/cjs/server/execution/query-result-cache.d.ts +21 -0
- package/dist/cjs/server/execution/result-post-processor.d.ts +10 -0
- package/dist/cjs/server/executor.d.ts +186 -0
- package/dist/cjs/server/executors/base-executor.d.ts +16 -0
- package/dist/cjs/server/executors/databend-executor.d.ts +33 -0
- package/dist/cjs/server/executors/duckdb-executor.d.ts +33 -0
- package/dist/cjs/server/executors/explain-utils.d.ts +28 -0
- package/dist/cjs/server/executors/index.d.ts +21 -0
- package/dist/cjs/server/executors/mysql-executor.d.ts +27 -0
- package/dist/cjs/server/executors/postgres-executor.d.ts +27 -0
- package/dist/cjs/server/executors/singlestore-executor.d.ts +9 -0
- package/dist/cjs/server/executors/snowflake-executor.d.ts +33 -0
- package/dist/cjs/server/executors/sqlite-executor.d.ts +28 -0
- package/dist/cjs/server/explain/databend-parser.d.ts +16 -0
- package/dist/cjs/server/explain/duckdb-parser.d.ts +28 -0
- package/dist/cjs/server/explain/explain-tree.d.ts +20 -0
- package/dist/cjs/server/explain/index.d.ts +9 -0
- package/dist/cjs/server/explain/mysql-parser.d.ts +38 -0
- package/dist/cjs/server/explain/postgres-parser.d.ts +18 -0
- package/dist/cjs/server/explain/snowflake-parser.d.ts +17 -0
- package/dist/cjs/server/explain/sqlite-parser.d.ts +23 -0
- package/dist/cjs/server/filter-cache.d.ts +73 -0
- package/dist/cjs/server/gap-filler.d.ts +48 -0
- package/dist/cjs/server/index.d.ts +38 -0
- package/dist/cjs/server/logical-plan/cte-planner-helpers.d.ts +37 -0
- package/dist/cjs/server/logical-plan/cte-planner.d.ts +104 -0
- package/dist/cjs/server/logical-plan/filter-propagation.d.ts +44 -0
- package/dist/cjs/server/logical-plan/index.d.ts +19 -0
- package/dist/cjs/server/logical-plan/join-planner.d.ts +27 -0
- package/dist/cjs/server/logical-plan/logical-plan-builder.d.ts +58 -0
- package/dist/cjs/server/logical-plan/logical-planner.d.ts +39 -0
- package/dist/cjs/server/logical-plan/optimiser.d.ts +34 -0
- package/dist/cjs/server/logical-plan/plan-analysis-reporter.d.ts +59 -0
- package/dist/cjs/server/logical-plan/planner-utils.d.ts +20 -0
- package/dist/cjs/server/logical-plan/types.d.ts +199 -0
- package/dist/cjs/server/measure-classification.d.ts +40 -0
- package/dist/cjs/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
- package/dist/cjs/server/physical-plan/drizzle-sql-builder.d.ts +118 -0
- package/dist/cjs/server/physical-plan/index.d.ts +2 -0
- package/dist/cjs/server/physical-plan/processors/cte-processor.d.ts +6 -0
- package/dist/cjs/server/physical-plan/processors/index.d.ts +8 -0
- package/dist/cjs/server/physical-plan/processors/joins-processor.d.ts +6 -0
- package/dist/cjs/server/physical-plan/processors/keys-dedup-processor.d.ts +13 -0
- package/dist/cjs/server/physical-plan/processors/multi-fact-processor.d.ts +13 -0
- package/dist/cjs/server/physical-plan/processors/predicates-processor.d.ts +6 -0
- package/dist/cjs/server/physical-plan/processors/selection-processor.d.ts +6 -0
- package/dist/cjs/server/physical-plan/processors/shared.d.ts +38 -0
- package/dist/cjs/server/physical-plan/processors/window-processor.d.ts +6 -0
- package/dist/cjs/server/prompts/explain-analysis-prompt.d.ts +47 -0
- package/dist/cjs/server/prompts/index.d.ts +27 -0
- package/dist/cjs/server/prompts/single-step-prompt.d.ts +31 -0
- package/dist/cjs/server/prompts/step0-validation-prompt.d.ts +39 -0
- package/dist/cjs/server/prompts/step1-shape-prompt.d.ts +29 -0
- package/dist/cjs/server/prompts/step2-complete-prompt.d.ts +19 -0
- package/dist/cjs/server/prompts/types.d.ts +37 -0
- package/dist/cjs/server/query-handlers.d.ts +79 -0
- package/dist/cjs/server/query-modes.d.ts +28 -0
- package/dist/cjs/server/query-validator.d.ts +9 -0
- package/dist/cjs/server/resolvers/calculated-measure-resolver.d.ts +98 -0
- package/dist/cjs/server/resolvers/index.d.ts +6 -0
- package/dist/cjs/server/resolvers/join-path-resolver.d.ts +158 -0
- package/dist/cjs/server/sql-format.d.ts +11 -0
- package/dist/cjs/server/template-substitution.d.ts +57 -0
- package/dist/cjs/server/types/analysis.d.ts +189 -0
- package/dist/cjs/server/types/cache.d.ts +132 -0
- package/dist/cjs/server/types/core.d.ts +164 -0
- package/dist/cjs/server/types/cube.d.ts +544 -0
- package/dist/cjs/server/types/executor.d.ts +156 -0
- package/dist/cjs/server/types/flow.d.ts +144 -0
- package/dist/cjs/server/types/funnel.d.ts +118 -0
- package/dist/cjs/server/types/index.d.ts +11 -0
- package/dist/cjs/server/types/metadata.d.ts +113 -0
- package/dist/cjs/server/types/query.d.ts +153 -0
- package/dist/cjs/server/types/retention.d.ts +141 -0
- package/dist/cjs/server/types/utils.d.ts +11 -0
- package/dist/cjs/server/types/validation.d.ts +14 -0
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.js +1 -1
- package/dist/{adapters/openai-B5jEiqiB.js → server/openai-CmVRIbUg.js} +18 -2
- package/dist/server/{openai-cDlFSTk6.js → openai-CtXqeznO.js} +1 -1
- package/dist/{adapters/openai-D0musiYP.cjs → server/openai-D-6l1Y8h.cjs} +3 -3
- package/dist/server/{openai-vXvLni8v.cjs → openai-DTSTMiXL.cjs} +1 -1
- package/package.json +75 -29
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared validation types for analysis-mode config validation
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Result of validating an analysis-mode config (funnel, flow, retention).
|
|
6
|
+
*
|
|
7
|
+
* `warnings` is optional — flow analysis surfaces non-fatal warnings, while
|
|
8
|
+
* funnel and retention only produce errors (and omit the field entirely).
|
|
9
|
+
*/
|
|
10
|
+
export interface AnalysisConfigValidationResult {
|
|
11
|
+
isValid: boolean;
|
|
12
|
+
errors: string[];
|
|
13
|
+
warnings?: string[];
|
|
14
|
+
}
|
package/dist/server/index.cjs
CHANGED
|
@@ -822,4 +822,4 @@ The query is validated before adding. The portlet fetches its own data.`,paramet
|
|
|
822
822
|
[IMPORTANT: Your next response MUST start with a brief text message BEFORE any tool calls. Now call add_markdown and add_portlet to visualize these results.]`}}catch(t){let n={measures:e.measures,dimensions:e.dimensions,filters:e.filters,timeDimensions:e.timeDimensions,order:e.order,limit:e.limit,...e.funnel?{funnel:e.funnel}:{},...e.flow?{flow:e.flow}:{},...e.retention?{retention:e.retention}:{}};return{result:`Query execution failed: ${t instanceof Error?t.message:`Unknown error`}\n\nAttempted query:\n${JSON.stringify(n,null,2)}`,isError:!0}}}),r.set(`add_portlet`,async e=>{let n={number:`kpiNumber`,retention:`retentionHeatmap`}[e.chartType]??e.chartType,r;try{r=JSON.parse(e.query)}catch{return{result:"Invalid query: could not parse JSON string. Ensure `query` is a valid JSON string.",isError:!0}}r=Jd(r);let i=t.validateQuery(r);if(!i.isValid)return{result:`Invalid query — fix these errors and retry:\n${i.errors.join(`
|
|
823
823
|
`)}\n\nAttempted query:\n${JSON.stringify(r,null,2)}`,isError:!0};let a=!!(r.funnel||r.flow||r.retention),o;if(a)o=e.chartConfig??{};else{let t=_f(n,e.chartConfig,r),i=mf(n,t,r);if(!i.isValid)return{result:`Chart config invalid — fix these errors and retry:\n${i.errors.join(`
|
|
824
824
|
`)}`,isError:!0};o=t}let s=`portlet-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,c={id:s,title:e.title,query:e.query,chartType:n,chartConfig:o,displayConfig:e.displayConfig};return{result:`Portlet "${e.title}" added to notebook (id: ${s}, chart: ${n}). [Reminder: in your next response, start with a brief sentence about what you will do next BEFORE making any tool calls.]`,sideEffect:{type:`add_portlet`,data:c}}}),r.set(`add_markdown`,async e=>{let t=`markdown-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,n=e.content||e.text||e.markdown||``,r={id:t,title:e.title,content:n};return{result:`Markdown block added to notebook (id: ${t}). [Reminder: in your next response, start with a brief sentence about what you will do next BEFORE making any tool calls.]`,sideEffect:{type:`add_markdown`,data:r}}}),r.set(`save_as_dashboard`,async e=>{try{let n=e.portlets;if(!n||n.length===0)return{result:`Dashboard must contain at least one portlet.`,isError:!0};let r=[];for(let e of n){if(e.chartType===`markdown`)continue;let n=e.query;if(!n){r.push(`Portlet "${e.title}": missing query`);continue}let i;try{i=JSON.parse(n)}catch{r.push(`Portlet "${e.title}": invalid JSON query`);continue}i=Jd(i);let a=t.validateQuery(i);a.isValid||r.push(`Portlet "${e.title}": ${a.errors.join(`, `)}`)}if(r.length>0)return{result:`Dashboard has invalid portlets — fix these errors and retry:\n${r.join(`
|
|
825
|
-
`)}`,isError:!0};let i={portlets:n.map(e=>{let t=e.chartType,n=t===`markdown`,r=n?`query`:e.analysisType||`query`,i=r===`funnel`?`funnel`:r===`flow`?`flow`:r===`retention`?`retention`:`query`,a=e.query||`{}`,o;try{o=JSON.parse(a)}catch{o={}}let s={version:1,analysisType:i,activeView:`chart`,charts:{[i]:{chartType:t,chartConfig:e.chartConfig||{},displayConfig:e.displayConfig||{}}},query:n?{}:o};return{id:e.id,title:e.title,analysisConfig:s,dashboardFilterMapping:e.dashboardFilterMapping,w:e.w,h:e.h,x:e.x,y:e.y}}),filters:e.filters,colorPalette:e.colorPalette},a=e.title;return{result:`Dashboard "${a}" created with ${i.portlets.length} portlets and ${i.filters?.length||0} filters.`,sideEffect:{type:`dashboard_saved`,data:{title:a,description:e.description,dashboardConfig:i}}}}catch(e){return{result:`Failed to save dashboard: ${e instanceof Error?e.message:`Unknown error`}`,isError:!0}}}),r}async function Sf(e,t,n){switch(e){case`anthropic`:{let{AnthropicProvider:e}=await Promise.resolve().then(()=>require("./anthropic-DG4r1LSm.cjs"));return new e(t)}case`openai`:{let{OpenAIProvider:e}=await Promise.resolve().then(()=>require("./openai-vXvLni8v.cjs"));return new e(t,n)}case`google`:{let{GoogleProvider:e}=await Promise.resolve().then(()=>require("./google-BOnRIN1w.cjs"));return new e(t)}default:throw Error(`Unknown LLM provider: "${e}". Supported providers: anthropic, openai, google`)}}function Cf(e,t){if(Array.isArray(t))for(let n of t)e.push(n);else e.push(t)}function wf(e){if(e)try{e()}catch{}}function Tf(e,t){let n=[];if(!e||e.length===0)return n;for(let r of e){if(r.role===`user`){n.push({role:`user`,content:r.content});continue}if(r.role!==`assistant`)continue;let e=[];if(r.content&&e.push({type:`text`,text:r.content}),r.toolCalls&&r.toolCalls.length>0){for(let t of r.toolCalls)e.push({type:`tool_use`,id:t.id,name:t.name,input:t.input||{}});n.push({role:`assistant`,content:e});let i=r.toolCalls.map(e=>({toolUseId:e.id,toolName:e.name,content:typeof e.result==`string`?e.result:JSON.stringify(e.result??``),isError:e.status===`error`}));Cf(n,t.formatToolResults(i))}else e.length>0&&n.push({role:`assistant`,content:r.content})}return n}function Ef(e,t){if(!(e?.type!==`tool_use`||!t))try{e.input=JSON.parse(t)}catch{e.input={}}}function Df(e,t){let n=e.contentBlocks[e.contentBlocks.length-1];n&&n.type===`text`?n.text=(n.text||``)+t:e.contentBlocks.push({type:`text`,text:t})}function Of(e,t){if(e.currentBlockIsToolUse&&e.currentToolInputJson){let t=e.contentBlocks[e.contentBlocks.length-1];if(t?.type===`tool_use`)try{t.input=JSON.parse(e.currentToolInputJson)}catch{}}e.contentBlocks.push({type:`tool_use`,id:t.id,name:t.name,input:{},...t.metadata?{metadata:t.metadata}:{}}),e.currentToolInputJson=``,e.currentBlockIsToolUse=!0}function kf(e,t){if(t.id&&t.input){let n=e.contentBlocks.find(e=>e.type===`tool_use`&&e.id===t.id);n&&(n.input=t.input)}else if(e.currentBlockIsToolUse){let t=e.contentBlocks[e.contentBlocks.length-1];t?.type===`tool_use`&&e.currentToolInputJson&&(Ef(t,e.currentToolInputJson),e.currentToolInputJson=``),e.currentBlockIsToolUse=!1}}async function*Af(e,t){let n={contentBlocks:[],currentToolInputJson:``,currentBlockIsToolUse:!1,stopReason:``};for await(let r of e.parseStreamEvents(t)){let e=r;switch(e.type){case`text_delta`:Df(n,e.text),yield{type:`text_delta`,data:e.text};break;case`tool_use_start`:Of(n,e),yield{type:`tool_use_start`,data:{id:e.id,name:e.name,input:void 0}};break;case`tool_input_delta`:n.currentToolInputJson+=e.json;break;case`tool_use_end`:kf(n,e);break;case`message_meta`:e.inputTokens!=null&&(n.inputTokens=e.inputTokens),e.outputTokens!=null&&(n.outputTokens=e.outputTokens),e.stopReason&&(n.stopReason=e.stopReason);break}}return{contentBlocks:n.contentBlocks,stopReason:n.stopReason,inputTokens:n.inputTokens,outputTokens:n.outputTokens}}async function*jf(e,t){let{executor:n,observability:r,traceId:i,turn:a}=t,o=e.name,s=e.input||{},c=e.id,l=n.get(o);if(!l)return yield{type:`tool_use_result`,data:{id:c,name:o,result:`Unknown tool: ${o}`,isError:!0}},{toolUseId:c,toolName:o,content:`Unknown tool: ${o}`,isError:!0};let u=Date.now();try{let e=await l(s);return e.sideEffect&&(yield e.sideEffect),yield{type:`tool_use_result`,data:{id:c,name:o,result:e.result,...e.isError?{isError:!0}:{}}},wf(()=>r?.onToolEnd?.({traceId:i,turn:a,toolName:o,toolUseId:c,isError:!!e.isError,durationMs:Date.now()-u})),{toolUseId:c,toolName:o,content:e.result,...e.isError?{isError:!0}:{}}}catch(e){let t=e instanceof Error?e.message:`Tool execution failed`;return yield{type:`tool_use_result`,data:{id:c,name:o,result:t,isError:!0}},wf(()=>r?.onToolEnd?.({traceId:i,turn:a,toolName:o,toolUseId:c,isError:!0,durationMs:Date.now()-u})),{toolUseId:c,toolName:o,content:t,isError:!0}}}async function*Mf(e,t){let n=[];for(let r of e){if(r.type!==`tool_use`)continue;let e=yield*jf(r,t);n.push(e)}return n}var Nf={anthropic:`claude-sonnet-4-6`,openai:`gpt-4.1-mini`,google:`gemini-3-flash-preview`};async function*Pf(e){let{message:t,history:n,semanticLayer:r,securityContext:i,agentConfig:a,apiKey:o}=e,s=e.sessionId||crypto.randomUUID(),c=a.observability,l=crypto.randomUUID(),u=Date.now(),d=e.providerOverride||a.provider||`anthropic`,f=e.modelOverride||a.model||Nf[d]||`claude-sonnet-4-6`,p=e.baseURLOverride||a.baseURL,m=a.maxTurns||25,h=a.maxTokens||4096,g;try{g=await Sf(d,o,{baseURL:p})}catch(e){console.error(`[agent] Failed to create %s provider: %s`,String(d).replace(/\n|\r/g,``),String(e instanceof Error?e.message:e).replace(/\n|\r/g,``)),yield{type:`error`,data:{message:e instanceof Error?e.message:k(`server.errors.llmInitFailed`)}};return}let _=bf(),v=xf({semanticLayer:r,securityContext:i}),y=Dd(r.getMetadata());e.systemContext&&(y+=`\n\n## User Context\n\n${e.systemContext}`),wf(()=>c?.onChatStart?.({traceId:l,sessionId:s,message:t,model:f,historyLength:n?.length??0}));let b=Tf(n,g);b.push({role:`user`,content:t});let x=0;try{for(let e=0;e<m;e++){x=e+1;let t=await g.createStream({model:f,maxTokens:h,system:y,tools:_,messages:b}),n=Date.now(),{contentBlocks:r,stopReason:i,inputTokens:a,outputTokens:o}=yield*Af(g,t);if(wf(()=>c?.onGenerationEnd?.({traceId:l,turn:e,model:f,stopReason:i,inputTokens:a,outputTokens:o,durationMs:Date.now()-n,input:b,output:r})),b.push({role:`assistant`,content:r}),!g.shouldContinue(i))break;let s=yield*Mf(r,{executor:v,observability:c,traceId:l,turn:e});yield{type:`turn_complete`,data:{}},Cf(b,g.formatToolResults(s))}wf(()=>c?.onChatEnd?.({traceId:l,sessionId:s,totalTurns:x,durationMs:Date.now()-u})),yield{type:`done`,data:{sessionId:s||``,traceId:l}}}catch(e){try{c?.onChatEnd?.({traceId:l,sessionId:s,totalTurns:0,durationMs:Date.now()-u,error:e instanceof Error?e.message:`Unknown error`})}catch{}console.error(`[agent] Chat error (provider=%s, model=%s): %s`,String(d).replace(/\n|\r/g,``),String(f).replace(/\n|\r/g,``),String(e instanceof Error?e.message:e).replace(/\n|\r/g,``)),yield{type:`error`,data:{message:g.formatError(e)}}}}function Ff(e){return e.toISOString().split(`T`)[0]}function If(e,t){let n=new Date,r=Ff(n);if(/days?/.test(t)){let t=new Date(n);return t.setDate(t.getDate()-e),{dateRange:[Ff(t),r],granularity:`day`}}if(/weeks?/.test(t)){let t=new Date(n);return t.setDate(t.getDate()-e*7),{dateRange:[Ff(t),r],granularity:e<=4?`day`:`week`}}if(/months?/.test(t)){let t=new Date(n);return t.setMonth(t.getMonth()-e),{dateRange:[Ff(t),r],granularity:e<=3?`day`:`month`}}return null}function Lf(e){let t=parseInt(e.slice(1),10),n=new Date().getFullYear(),r=(t-1)*3,i=new Date(n,r,1),a=new Date(n,r+3,0);return{dateRange:[Ff(i),Ff(a)],granularity:`month`}}function Rf(e,t,n,r){let i=0;for(let a of e.measures){let e=[(a.name.split(`.`).pop()||a.name).toLowerCase(),a.title.toLowerCase(),...(a.synonyms||[]).map(e=>e.toLowerCase())];for(let o of e)if(t.includes(o)){n.push(a.name),r.push(`Matched measure '${a.name}' via keyword '${o}'`),i+=.15;break}}return i}function zf(e,t,n,r){let i=e.measures.filter(e=>e.type===t.type);if(i.length>0){n.push(i[0].name),r.push(`Suggested ${i[0].name} based on ${t.type} intent`);return}if(t.type===`count`){let t=e.measures.find(e=>e.type===`count`||e.type===`countDistinct`);t&&(n.push(t.name),r.push(`Suggested ${t.name} for counting`))}}function Bf(e,t,n,r,i){let a=0;for(let n of t){let t=Wd(e,n,`dimension`);t&&(r.push(t.field),i.push(`Matched dimension '${t.field}' from grouping keyword '${n}'`),a+=.1)}for(let t of e)for(let e of t.dimensions){let t=[(e.name.split(`.`).pop()||e.name).toLowerCase(),e.title.toLowerCase(),...(e.synonyms||[]).map(e=>e.toLowerCase())];for(let o of t)if(n.includes(o)&&!r.includes(e.name)&&(n.includes(`by ${o}`)||n.includes(`per ${o}`))){r.push(e.name),i.push(`Matched dimension '${e.name}' as grouping`),a+=.1;break}}return a}function Vf(){let e=new Date,t=e.toISOString().split(`T`)[0],n=e=>e.toISOString().split(`T`)[0],r=e=>new Date(e.getFullYear(),e.getMonth(),1),i=e=>new Date(e.getFullYear(),0,1),a=e=>{let t=Math.floor(e.getMonth()/3);return new Date(e.getFullYear(),t*3,1)},o=e=>{let t=e.getDay(),n=e.getDate()-t+(t===0?-6:1);return new Date(e.getFullYear(),e.getMonth(),n)};return[{pattern:/\btoday\b/i,getDateRange:()=>[t,t],granularity:`day`},{pattern:/\byesterday\b/i,getDateRange:()=>{let t=new Date(e);t.setDate(t.getDate()-1);let r=n(t);return[r,r]},granularity:`day`},{pattern:/\bthis week\b/i,getDateRange:()=>[n(o(e)),t],granularity:`day`},{pattern:/\blast week\b/i,getDateRange:()=>{let t=new Date(o(e));t.setDate(t.getDate()-7);let r=new Date(t);return r.setDate(r.getDate()+6),[n(t),n(r)]},granularity:`day`},{pattern:/\bthis month\b/i,getDateRange:()=>[n(r(e)),t],granularity:`day`},{pattern:/\blast month\b/i,getDateRange:()=>{let t=new Date(e.getFullYear(),e.getMonth()-1,1),r=new Date(e.getFullYear(),e.getMonth(),0);return[n(t),n(r)]},granularity:`day`},{pattern:/\bthis quarter\b/i,getDateRange:()=>[n(a(e)),t],granularity:`month`},{pattern:/\blast quarter\b/i,getDateRange:()=>{let t=new Date(a(e));t.setMonth(t.getMonth()-3);let r=new Date(a(e));return r.setDate(r.getDate()-1),[n(t),n(r)]},granularity:`month`},{pattern:/\bthis year\b/i,getDateRange:()=>[n(i(e)),t],granularity:`month`},{pattern:/\blast year\b/i,getDateRange:()=>{let t=new Date(e.getFullYear()-1,0,1),r=new Date(e.getFullYear()-1,11,31);return[n(t),n(r)]},granularity:`month`},{pattern:/\blast (\d+) days?\b/i,getDateRange:()=>{let r=new Date(e);return r.setDate(r.getDate()-7),[n(r),t]},granularity:`day`},{pattern:/\blast (\d+) weeks?\b/i,getDateRange:()=>{let r=new Date(e);return r.setDate(r.getDate()-28),[n(r),t]},granularity:`week`},{pattern:/\blast (\d+) months?\b/i,getDateRange:()=>{let r=new Date(e);return r.setMonth(r.getMonth()-3),[n(r),t]},granularity:`month`},{pattern:/\bq([1-4])\b/i,getDateRange:()=>[n(new Date(e.getFullYear(),0,1)),n(new Date(e.getFullYear(),2,31))],granularity:`month`}]}var Hf={funnel:/\b(funnel|conversion|drop.?off|steps?|journey|pipeline|stages?)\b/i,flow:/\b(flows?|paths?|sequence|before|after|next|previous|user.?journey)\b/i,retention:/\b(retention|cohort|return|churn|comeback|retained|day.?\d+)\b/i};function Uf(e){let t=e.toLowerCase();return Hf.funnel.test(t)?`funnel`:Hf.flow.test(t)?`flow`:Hf.retention.test(t)?`retention`:`query`}function Wf(e,t){let n=t||`the relevant cube`;switch(e){case`funnel`:return[`Use /mcp/discover to get ${n} funnel configuration and schema`,`Query the event dimension to discover available event types for funnel steps`,`Build funnel query with discovered values using the schema from discover`];case`flow`:return[`Use /mcp/discover to get ${n} flow configuration and schema`,`Query the event dimension to discover available event types`,`Build flow query specifying the starting event and steps before/after`];case`retention`:return[`Use /mcp/discover to get ${n} retention configuration and schema`,`Build retention query specifying granularity (day/week/month) and number of periods`]}}function Gf(e){let t=Vf(),n=e.toLowerCase();for(let e of t){let t=n.match(e.pattern);if(t){if(t[1]&&/^\d+$/.test(t[1])){let e=If(parseInt(t[1],10),n);if(e)return e}return/^q[1-4]$/i.test(t[0])?Lf(t[0]):{dateRange:e.getDateRange(),granularity:e.granularity}}}return null}function Kf(e){let t=e.toLowerCase();for(let{pattern:e,type:n}of[{pattern:/\b(total|sum|combined)\b/i,type:`sum`},{pattern:/\b(count|number of|how many)\b/i,type:`count`},{pattern:/\b(average|avg|mean)\b/i,type:`avg`},{pattern:/\b(maximum|max|highest|top)\b/i,type:`max`},{pattern:/\b(minimum|min|lowest|bottom)\b/i,type:`min`}])if(e.test(t))return{type:n,confidence:.8};return null}function qf(e){let t=e.toLowerCase(),n=[],r=/\bby\s+(\w+(?:\s+\w+)?)/gi,i;for(;(i=r.exec(t))!==null;)n.push(i[1].trim());let a=/\bper\s+(\w+)/gi;for(;(i=a.exec(t))!==null;)n.push(i[1].trim());let o=/\bfor each\s+(\w+)/gi;for(;(i=o.exec(t))!==null;)n.push(i[1].trim());return n}function Jf(e,t,n,r,i){if(n){let t=e.find(e=>e.name===n);return t?(r.push(`Using specified cube: ${n}`),[t]):(i.push(`Specified cube '${n}' not found`),[])}let a=Ud(e,{intent:t,limit:3}).map(t=>e.find(e=>e.name===t.cube)).filter(e=>e!==void 0);return a.length>0&&r.push(`Identified relevant cubes: ${a.map(e=>e.name).join(`, `)}`),a}function Yf(e,t){return e===`query`?{query:{},confidence:0,reasoning:[`Could not identify relevant cubes for this query`],warnings:t,analysisMode:e,nextSteps:void 0}:{query:{},confidence:.7,reasoning:[`Detected ${e} intent from natural language`],warnings:t,analysisMode:e,nextSteps:Wf(e,void 0)}}function Xf(e,t,n){let r=[],i=[],a={},o=Uf(t),s=Jf(e,t,n,r,i);if(s.length===0)return Yf(o,i);let c=s[0],l=.5,u=Kf(t);u&&(r.push(`Detected ${u.type} aggregation intent`),l+=.1);let d=[],f=t.toLowerCase();l+=Rf(c,f,d,r),d.length===0&&u&&zf(c,u,d,r),d.length===0&&c.measures.length>0&&(d.push(c.measures[0].name),r.push(`Using default measure: ${c.measures[0].name}`),i.push(`Could not determine specific measure from query, using default`)),a.measures=d;let p=qf(t),m=[];l+=Bf(s,p,f,m,r),m.length>0&&(a.dimensions=m);let h=Gf(t);if(h){let e=c.dimensions.find(e=>e.type===`time`);if(e){let t={dimension:e.name,dateRange:h.dateRange};h.granularity&&(t.granularity=h.granularity),a.timeDimensions=[t],r.push(`Applied time filter: ${h.dateRange[0]} to ${h.dateRange[1]}`),l+=.15}else i.push(`Time expression found but no time dimension in cube`)}if(l=Math.min(1,l),o!==`query`){let e=s.length>0?s[0].name:void 0;return{query:{},confidence:.7,reasoning:[`Detected ${o} intent from natural language`,...e?[`Found relevant cube: ${e}`]:[]],warnings:i.length>0?i:void 0,analysisMode:o,nextSteps:Wf(o,e)}}return{query:a,confidence:l,reasoning:r,warnings:i.length>0?i:void 0,analysisMode:`query`}}function $(e,t,n,r){e?typeof e==`string`&&n(e,r):r.push({type:`syntax_error`,message:k(t)})}function Zf(e,t){return e.map(e=>t.get(e)||e)}function Qf(e,t){if(t.size===0)return;let n=JSON.parse(JSON.stringify(e));return n.measures&&=Zf(n.measures,t),n.dimensions&&=Zf(n.dimensions,t),n.timeDimensions&&=n.timeDimensions.map(e=>({...e,dimension:t.get(e.dimension)||e.dimension})),n}function $f(e,t){e.measures&&e.measures.length>10&&t.push({type:`performance`,message:k(`server.validation.ai.performanceManyMeasures`,{count:e.measures.length}),suggestion:k(`server.validation.ai.suggestSplitQueries`)}),e.dimensions&&e.dimensions.length>5&&t.push({type:`performance`,message:k(`server.validation.ai.performanceManyDimensions`,{count:e.dimensions.length}),suggestion:k(`server.validation.ai.suggestAddDimensionFilters`)})}function ep(e,t,n){let[r]=e.split(`.`),i=t.find(e=>e.name===r);if(!i)return;let a=i.dimensions.find(t=>t.name===e);a&&a.type!==`time`&&n.push({type:`best_practice`,message:k(`server.validation.ai.dimensionNotTimeType`,{dimension:e,type:a.type}),field:e,suggestion:k(`server.validation.ai.suggestUseTimeDimension`)})}function tp(e,t,n,r,i){let a=e.member,o=a.split(`.`);if(o.length!==2){n.push({type:`invalid_filter`,message:k(`server.validation.ai.invalidFilterMemberFormat`,{member:a}),field:a});return}let[s,c]=o,l=t.find(e=>e.name===s);if(!l){let e=i(s,t.map(e=>e.name));e&&r.set(a,`${e.field}.${c}`),n.push({type:`cube_not_found`,message:k(`server.validation.ai.cubeNotFoundInFilter`,{cubeName:s}),field:a,suggestion:e?`Did you mean '${e.field}'?`:void 0,correctedValue:e?`${e.field}.${c}`:void 0});return}let u=l.dimensions.some(e=>e.name===a),d=l.measures.some(e=>e.name===a);if(u||d)return;let f=i(c,[...l.dimensions.map(e=>e.name.split(`.`).pop()),...l.measures.map(e=>e.name.split(`.`).pop())]);if(f){let e=`${s}.${f.field}`;r.set(a,e),n.push({type:`invalid_filter`,message:k(`server.validation.ai.filterFieldNotFoundWithSuggestion`,{fieldName:c,cubeName:s}),field:a,suggestion:`Did you mean '${f.field}'?`,correctedValue:e})}else n.push({type:`invalid_filter`,message:k(`server.validation.ai.filterFieldNotFound`,{fieldName:c,cubeName:s}),field:a})}function np(e,t){let n=null;for(let r of t){let t=Nd(e.toLowerCase(),r.toLowerCase());t<=3&&(!n||t<n.distance)&&(n={field:r,distance:t})}return n}function rp(e,t,n,r){let i=e.split(`.`);if(i.length!==2){n.push({type:`syntax_error`,message:k(`server.validation.ai.invalidMeasureFormat`,{measure:e}),field:e});return}let[a,o]=i,s=t.find(e=>e.name===a);if(!s){let i=t.map(e=>e.name),s=np(a,i);s?(n.push({type:`cube_not_found`,message:k(`server.validation.ai.cubeNotFoundWithSuggestion`,{cubeName:a}),field:e,suggestion:`Did you mean '${s.field}'?`,correctedValue:`${s.field}.${o}`}),r.set(e,`${s.field}.${o}`)):n.push({type:`cube_not_found`,message:k(`server.validation.ai.cubeNotFoundWithAvailable`,{cubeName:a}),field:e,suggestion:`Available cubes: ${i.join(`, `)}`});return}if(!s.measures.some(t=>t.name===e)){let i=Wd(t,o,`measure`);if(i&&i.cube===a)n.push({type:`measure_not_found`,message:k(`server.validation.ai.measureNotFoundWithSuggestion`,{measureName:o,cubeName:a}),field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:i.field}),r.set(e,i.field);else{let t=s.measures.map(e=>e.name.split(`.`).pop()),i=np(o,t);if(i){let t=`${a}.${i.field}`;n.push({type:`measure_not_found`,message:k(`server.validation.ai.measureNotFoundWithSuggestion`,{measureName:o,cubeName:a}),field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:t}),r.set(e,t)}else n.push({type:`measure_not_found`,message:k(`server.validation.ai.measureNotFoundWithAvailable`,{measureName:o,cubeName:a}),field:e,suggestion:`Available measures: ${t.slice(0,5).join(`, `)}${t.length>5?`...`:``}`})}}}function ip(e,t,n,r){let i=e.split(`.`);if(i.length!==2){n.push({type:`syntax_error`,message:k(`server.validation.ai.invalidDimensionFormat`,{dimension:e}),field:e});return}let[a,o]=i,s=t.find(e=>e.name===a);if(!s){let i=t.map(e=>e.name),s=np(a,i);s?(n.push({type:`cube_not_found`,message:k(`server.validation.ai.cubeNotFoundWithSuggestion`,{cubeName:a}),field:e,suggestion:`Did you mean '${s.field}'?`,correctedValue:`${s.field}.${o}`}),r.set(e,`${s.field}.${o}`)):n.push({type:`cube_not_found`,message:k(`server.validation.ai.cubeNotFoundWithAvailable`,{cubeName:a}),field:e,suggestion:`Available cubes: ${i.join(`, `)}`});return}if(!s.dimensions.some(t=>t.name===e)){let i=Wd(t,o,`dimension`);if(i&&i.cube===a)n.push({type:`dimension_not_found`,message:k(`server.validation.ai.dimensionNotFoundWithSuggestion`,{dimensionName:o,cubeName:a}),field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:i.field}),r.set(e,i.field);else{let t=s.dimensions.map(e=>e.name.split(`.`).pop()),i=np(o,t);if(i){let t=`${a}.${i.field}`;n.push({type:`dimension_not_found`,message:k(`server.validation.ai.dimensionNotFoundWithSuggestion`,{dimensionName:o,cubeName:a}),field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:t}),r.set(e,t)}else n.push({type:`dimension_not_found`,message:k(`server.validation.ai.dimensionNotFoundWithAvailable`,{dimensionName:o,cubeName:a}),field:e,suggestion:`Available dimensions: ${t.slice(0,5).join(`, `)}${t.length>5?`...`:``}`})}}}function ap(e,t,n,r){for(let i of e){if(`and`in i&&Array.isArray(i.and)){ap(i.and,t,n,r);continue}if(`or`in i&&Array.isArray(i.or)){ap(i.or,t,n,r);continue}`member`in i&&tp(i,t,n,r,np)}}function op(e,t,n,r,i){let a=e.funnel;if(!a)return;let o=(e,n)=>ip(e,t,n,i);if($(a.bindingKey,`server.validation.ai.bindingKeyRequired.funnel`,o,n),$(a.timeDimension,`server.validation.ai.timeDimensionRequired.funnel`,o,n),!a.steps||!Array.isArray(a.steps))n.push({type:`syntax_error`,message:k(`server.validation.ai.funnelStepsRequired`)});else if(a.steps.length<2)n.push({type:`syntax_error`,message:k(`server.validation.ai.funnelRequiresSteps`)});else for(let e=0;e<a.steps.length;e++){let o=a.steps[e];o.name||r.push({type:`best_practice`,message:k(`server.validation.ai.stepMissingName`,{step:e+1}),suggestion:k(`server.validation.ai.suggestAddStepNames`)}),o.filter&&`member`in o.filter&&ap([o.filter],t,n,i)}}function sp(e,t,n,r,i){let a=e.flow;if(!a)return;let o=(e,n)=>ip(e,t,n,i);$(a.bindingKey,`server.validation.ai.bindingKeyRequired.flow`,o,n),$(a.timeDimension,`server.validation.ai.timeDimensionRequired.flow`,o,n),$(a.eventDimension,`server.validation.ai.eventDimensionRequired`,o,n),a.stepsBefore===void 0&&a.stepsAfter===void 0&&r.push({type:`best_practice`,message:k(`server.validation.ai.stepsBothMissing`),suggestion:k(`server.validation.ai.suggestSetSteps`)})}function cp(e,t,n,r,i){let a=e.retention;if(!a)return;let o=(e,n)=>ip(e,t,n,i);$(a.bindingKey,`server.validation.ai.bindingKeyRequired.retention`,o,n),$(a.timeDimension,`server.validation.ai.retentionTimeDimensionRequired`,o,n),a.granularity||r.push({type:`best_practice`,message:k(`server.validation.ai.granularityNotSpecified`),suggestion:k(`server.validation.ai.suggestSpecifyGranularity`)}),a.periods||r.push({type:`best_practice`,message:k(`server.validation.ai.periodsNotSpecified`),suggestion:k(`server.validation.ai.suggestSpecifyPeriods`)})}function lp(e,t,n,r,i){return e.funnel?(op(e,t,n,r,i),!0):e.flow?(sp(e,t,n,r,i),!0):e.retention?(cp(e,t,n,r,i),!0):!1}function up(e,t,n,r,i){if(e.measures)for(let r of e.measures)rp(r,t,n,i);if(e.dimensions)for(let r of e.dimensions)ip(r,t,n,i);if(e.timeDimensions)for(let a of e.timeDimensions)ip(a.dimension,t,n,i),ep(a.dimension,t,r);e.filters&&ap(e.filters,t,n,i),!e.measures?.length&&!e.dimensions?.length&&n.push({type:`syntax_error`,message:k(`server.validation.ai.emptyQuery`)}),$f(e,r)}function dp(e,t){let n=[],r=[],i=new Map;if(lp(e,t,n,r,i))return{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};up(e,t,n,r,i);let a=Qf(e,i);return{isValid:n.length===0,errors:n,warnings:r,correctedQuery:a}}function fp(e){return new td({drizzle:e.drizzle,schema:e.schema})}exports.BaseDatabaseExecutor=S,exports.CTEBuilder=Tn,exports.CalculatedMeasureResolver=j,exports.ComparisonQueryBuilder=Ar,exports.DatabendExecutor=Ve,exports.DrizzlePlanBuilder=Ni,exports.DrizzleSqlBuilder=cn,exports.DuckDBExecutor=Ie,exports.EXPLAIN_ANALYSIS_PROMPT=fd,exports.FlowQueryBuilder=Mr,exports.FunnelQueryBuilder=jr,exports.IdentityOptimiser=Br,exports.JoinPathResolver=ln,exports.LogicalPlanBuilder=zr,exports.LogicalPlanner=Cn,exports.MemoryCacheProvider=rd,exports.MySQLExecutor=Te,exports.OptimiserPipeline=Vr,exports.PostgresExecutor=xe,exports.QueryExecutor=Fi,exports.RetentionQueryBuilder=Rr,exports.SQLiteExecutor=ke,exports.STEP0_VALIDATION_PROMPT=id,exports.STEP1_SYSTEM_PROMPT=cd,exports.STEP2_SYSTEM_PROMPT=ud,exports.SYSTEM_PROMPT_TEMPLATE=od,exports.SemanticLayerCompiler=td,exports.SnowflakeExecutor=qe,exports.aiValidateQuery=dp,exports.buildAgentSystemPrompt=Dd,exports.buildExplainAnalysisPrompt=pd,exports.buildStep0Prompt=ad,exports.buildStep1Prompt=ld,exports.buildStep2Prompt=dd,exports.buildSystemPrompt=sd,exports.createDatabaseExecutor=Ye,exports.createDatabendExecutor=He,exports.createDrizzleSemanticLayer=fp,exports.createDuckDBExecutor=Le,exports.createMultiCubeContext=tt,exports.createMySQLExecutor=Ee,exports.createPostgresExecutor=Se,exports.createSQLiteExecutor=Ae,exports.createSnowflakeExecutor=Je,exports.createToolExecutor=xf,exports.defineCube=nt,exports.detectQueryMode=er,exports.detectQueryModes=Qn,exports.discoverCubes=Ud,exports.findBestFieldMatch=Wd,exports.fnv1aHash=Er,exports.formatCubeSchemaForExplain=md,exports.formatExistingIndexes=hd,exports.generateCacheKey=yr,exports.getActiveQueryModes=$n,exports.getCubeInvalidationPattern=Or,exports.getJoinType=Ze,exports.getToolDefinitions=bf,exports.handleAgentChat=Pf,exports.hasComparisonMode=Jn,exports.hasFlowMode=Xn,exports.hasFunnelMode=Yn,exports.hasRetentionMode=Zn,exports.normalizeQuery=br,exports.resolveCubeReference=w,exports.resolveSqlExpression=T,exports.strongHash=Dr,exports.suggestQuery=Xf;
|
|
825
|
+
`)}`,isError:!0};let i={portlets:n.map(e=>{let t=e.chartType,n=t===`markdown`,r=n?`query`:e.analysisType||`query`,i=r===`funnel`?`funnel`:r===`flow`?`flow`:r===`retention`?`retention`:`query`,a=e.query||`{}`,o;try{o=JSON.parse(a)}catch{o={}}let s={version:1,analysisType:i,activeView:`chart`,charts:{[i]:{chartType:t,chartConfig:e.chartConfig||{},displayConfig:e.displayConfig||{}}},query:n?{}:o};return{id:e.id,title:e.title,analysisConfig:s,dashboardFilterMapping:e.dashboardFilterMapping,w:e.w,h:e.h,x:e.x,y:e.y}}),filters:e.filters,colorPalette:e.colorPalette},a=e.title;return{result:`Dashboard "${a}" created with ${i.portlets.length} portlets and ${i.filters?.length||0} filters.`,sideEffect:{type:`dashboard_saved`,data:{title:a,description:e.description,dashboardConfig:i}}}}catch(e){return{result:`Failed to save dashboard: ${e instanceof Error?e.message:`Unknown error`}`,isError:!0}}}),r}async function Sf(e,t,n){switch(e){case`anthropic`:{let{AnthropicProvider:e}=await Promise.resolve().then(()=>require("./anthropic-DG4r1LSm.cjs"));return new e(t)}case`openai`:{let{OpenAIProvider:e}=await Promise.resolve().then(()=>require("./openai-DTSTMiXL.cjs"));return new e(t,n)}case`google`:{let{GoogleProvider:e}=await Promise.resolve().then(()=>require("./google-BOnRIN1w.cjs"));return new e(t)}default:throw Error(`Unknown LLM provider: "${e}". Supported providers: anthropic, openai, google`)}}function Cf(e,t){if(Array.isArray(t))for(let n of t)e.push(n);else e.push(t)}function wf(e){if(e)try{e()}catch{}}function Tf(e,t){let n=[];if(!e||e.length===0)return n;for(let r of e){if(r.role===`user`){n.push({role:`user`,content:r.content});continue}if(r.role!==`assistant`)continue;let e=[];if(r.content&&e.push({type:`text`,text:r.content}),r.toolCalls&&r.toolCalls.length>0){for(let t of r.toolCalls)e.push({type:`tool_use`,id:t.id,name:t.name,input:t.input||{}});n.push({role:`assistant`,content:e});let i=r.toolCalls.map(e=>({toolUseId:e.id,toolName:e.name,content:typeof e.result==`string`?e.result:JSON.stringify(e.result??``),isError:e.status===`error`}));Cf(n,t.formatToolResults(i))}else e.length>0&&n.push({role:`assistant`,content:r.content})}return n}function Ef(e,t){if(!(e?.type!==`tool_use`||!t))try{e.input=JSON.parse(t)}catch{e.input={}}}function Df(e,t){let n=e.contentBlocks[e.contentBlocks.length-1];n&&n.type===`text`?n.text=(n.text||``)+t:e.contentBlocks.push({type:`text`,text:t})}function Of(e,t){if(e.currentBlockIsToolUse&&e.currentToolInputJson){let t=e.contentBlocks[e.contentBlocks.length-1];if(t?.type===`tool_use`)try{t.input=JSON.parse(e.currentToolInputJson)}catch{}}e.contentBlocks.push({type:`tool_use`,id:t.id,name:t.name,input:{},...t.metadata?{metadata:t.metadata}:{}}),e.currentToolInputJson=``,e.currentBlockIsToolUse=!0}function kf(e,t){if(t.id&&t.input){let n=e.contentBlocks.find(e=>e.type===`tool_use`&&e.id===t.id);n&&(n.input=t.input)}else if(e.currentBlockIsToolUse){let t=e.contentBlocks[e.contentBlocks.length-1];t?.type===`tool_use`&&e.currentToolInputJson&&(Ef(t,e.currentToolInputJson),e.currentToolInputJson=``),e.currentBlockIsToolUse=!1}}async function*Af(e,t){let n={contentBlocks:[],currentToolInputJson:``,currentBlockIsToolUse:!1,stopReason:``};for await(let r of e.parseStreamEvents(t)){let e=r;switch(e.type){case`text_delta`:Df(n,e.text),yield{type:`text_delta`,data:e.text};break;case`tool_use_start`:Of(n,e),yield{type:`tool_use_start`,data:{id:e.id,name:e.name,input:void 0}};break;case`tool_input_delta`:n.currentToolInputJson+=e.json;break;case`tool_use_end`:kf(n,e);break;case`message_meta`:e.inputTokens!=null&&(n.inputTokens=e.inputTokens),e.outputTokens!=null&&(n.outputTokens=e.outputTokens),e.stopReason&&(n.stopReason=e.stopReason);break}}return{contentBlocks:n.contentBlocks,stopReason:n.stopReason,inputTokens:n.inputTokens,outputTokens:n.outputTokens}}async function*jf(e,t){let{executor:n,observability:r,traceId:i,turn:a}=t,o=e.name,s=e.input||{},c=e.id,l=n.get(o);if(!l)return yield{type:`tool_use_result`,data:{id:c,name:o,result:`Unknown tool: ${o}`,isError:!0}},{toolUseId:c,toolName:o,content:`Unknown tool: ${o}`,isError:!0};let u=Date.now();try{let e=await l(s);return e.sideEffect&&(yield e.sideEffect),yield{type:`tool_use_result`,data:{id:c,name:o,result:e.result,...e.isError?{isError:!0}:{}}},wf(()=>r?.onToolEnd?.({traceId:i,turn:a,toolName:o,toolUseId:c,isError:!!e.isError,durationMs:Date.now()-u})),{toolUseId:c,toolName:o,content:e.result,...e.isError?{isError:!0}:{}}}catch(e){let t=e instanceof Error?e.message:`Tool execution failed`;return yield{type:`tool_use_result`,data:{id:c,name:o,result:t,isError:!0}},wf(()=>r?.onToolEnd?.({traceId:i,turn:a,toolName:o,toolUseId:c,isError:!0,durationMs:Date.now()-u})),{toolUseId:c,toolName:o,content:t,isError:!0}}}async function*Mf(e,t){let n=[];for(let r of e){if(r.type!==`tool_use`)continue;let e=yield*jf(r,t);n.push(e)}return n}var Nf={anthropic:`claude-sonnet-4-6`,openai:`gpt-4.1-mini`,google:`gemini-3-flash-preview`};async function*Pf(e){let{message:t,history:n,semanticLayer:r,securityContext:i,agentConfig:a,apiKey:o}=e,s=e.sessionId||crypto.randomUUID(),c=a.observability,l=crypto.randomUUID(),u=Date.now(),d=e.providerOverride||a.provider||`anthropic`,f=e.modelOverride||a.model||Nf[d]||`claude-sonnet-4-6`,p=e.baseURLOverride||a.baseURL,m=a.maxTurns||25,h=a.maxTokens||4096,g;try{g=await Sf(d,o,{baseURL:p})}catch(e){console.error(`[agent] Failed to create %s provider: %s`,String(d).replace(/\n|\r/g,``),String(e instanceof Error?e.message:e).replace(/\n|\r/g,``)),yield{type:`error`,data:{message:e instanceof Error?e.message:k(`server.errors.llmInitFailed`)}};return}let _=bf(),v=xf({semanticLayer:r,securityContext:i}),y=Dd(r.getMetadata());e.systemContext&&(y+=`\n\n## User Context\n\n${e.systemContext}`),wf(()=>c?.onChatStart?.({traceId:l,sessionId:s,message:t,model:f,historyLength:n?.length??0}));let b=Tf(n,g);b.push({role:`user`,content:t});let x=0;try{for(let e=0;e<m;e++){x=e+1;let t=await g.createStream({model:f,maxTokens:h,system:y,tools:_,messages:b}),n=Date.now(),{contentBlocks:r,stopReason:i,inputTokens:a,outputTokens:o}=yield*Af(g,t);if(wf(()=>c?.onGenerationEnd?.({traceId:l,turn:e,model:f,stopReason:i,inputTokens:a,outputTokens:o,durationMs:Date.now()-n,input:b,output:r})),b.push({role:`assistant`,content:r}),!g.shouldContinue(i))break;let s=yield*Mf(r,{executor:v,observability:c,traceId:l,turn:e});yield{type:`turn_complete`,data:{}},Cf(b,g.formatToolResults(s))}wf(()=>c?.onChatEnd?.({traceId:l,sessionId:s,totalTurns:x,durationMs:Date.now()-u})),yield{type:`done`,data:{sessionId:s||``,traceId:l}}}catch(e){try{c?.onChatEnd?.({traceId:l,sessionId:s,totalTurns:0,durationMs:Date.now()-u,error:e instanceof Error?e.message:`Unknown error`})}catch{}console.error(`[agent] Chat error (provider=%s, model=%s): %s`,String(d).replace(/\n|\r/g,``),String(f).replace(/\n|\r/g,``),String(e instanceof Error?e.message:e).replace(/\n|\r/g,``)),yield{type:`error`,data:{message:g.formatError(e)}}}}function Ff(e){return e.toISOString().split(`T`)[0]}function If(e,t){let n=new Date,r=Ff(n);if(/days?/.test(t)){let t=new Date(n);return t.setDate(t.getDate()-e),{dateRange:[Ff(t),r],granularity:`day`}}if(/weeks?/.test(t)){let t=new Date(n);return t.setDate(t.getDate()-e*7),{dateRange:[Ff(t),r],granularity:e<=4?`day`:`week`}}if(/months?/.test(t)){let t=new Date(n);return t.setMonth(t.getMonth()-e),{dateRange:[Ff(t),r],granularity:e<=3?`day`:`month`}}return null}function Lf(e){let t=parseInt(e.slice(1),10),n=new Date().getFullYear(),r=(t-1)*3,i=new Date(n,r,1),a=new Date(n,r+3,0);return{dateRange:[Ff(i),Ff(a)],granularity:`month`}}function Rf(e,t,n,r){let i=0;for(let a of e.measures){let e=[(a.name.split(`.`).pop()||a.name).toLowerCase(),a.title.toLowerCase(),...(a.synonyms||[]).map(e=>e.toLowerCase())];for(let o of e)if(t.includes(o)){n.push(a.name),r.push(`Matched measure '${a.name}' via keyword '${o}'`),i+=.15;break}}return i}function zf(e,t,n,r){let i=e.measures.filter(e=>e.type===t.type);if(i.length>0){n.push(i[0].name),r.push(`Suggested ${i[0].name} based on ${t.type} intent`);return}if(t.type===`count`){let t=e.measures.find(e=>e.type===`count`||e.type===`countDistinct`);t&&(n.push(t.name),r.push(`Suggested ${t.name} for counting`))}}function Bf(e,t,n,r,i){let a=0;for(let n of t){let t=Wd(e,n,`dimension`);t&&(r.push(t.field),i.push(`Matched dimension '${t.field}' from grouping keyword '${n}'`),a+=.1)}for(let t of e)for(let e of t.dimensions){let t=[(e.name.split(`.`).pop()||e.name).toLowerCase(),e.title.toLowerCase(),...(e.synonyms||[]).map(e=>e.toLowerCase())];for(let o of t)if(n.includes(o)&&!r.includes(e.name)&&(n.includes(`by ${o}`)||n.includes(`per ${o}`))){r.push(e.name),i.push(`Matched dimension '${e.name}' as grouping`),a+=.1;break}}return a}function Vf(){let e=new Date,t=e.toISOString().split(`T`)[0],n=e=>e.toISOString().split(`T`)[0],r=e=>new Date(e.getFullYear(),e.getMonth(),1),i=e=>new Date(e.getFullYear(),0,1),a=e=>{let t=Math.floor(e.getMonth()/3);return new Date(e.getFullYear(),t*3,1)},o=e=>{let t=e.getDay(),n=e.getDate()-t+(t===0?-6:1);return new Date(e.getFullYear(),e.getMonth(),n)};return[{pattern:/\btoday\b/i,getDateRange:()=>[t,t],granularity:`day`},{pattern:/\byesterday\b/i,getDateRange:()=>{let t=new Date(e);t.setDate(t.getDate()-1);let r=n(t);return[r,r]},granularity:`day`},{pattern:/\bthis week\b/i,getDateRange:()=>[n(o(e)),t],granularity:`day`},{pattern:/\blast week\b/i,getDateRange:()=>{let t=new Date(o(e));t.setDate(t.getDate()-7);let r=new Date(t);return r.setDate(r.getDate()+6),[n(t),n(r)]},granularity:`day`},{pattern:/\bthis month\b/i,getDateRange:()=>[n(r(e)),t],granularity:`day`},{pattern:/\blast month\b/i,getDateRange:()=>{let t=new Date(e.getFullYear(),e.getMonth()-1,1),r=new Date(e.getFullYear(),e.getMonth(),0);return[n(t),n(r)]},granularity:`day`},{pattern:/\bthis quarter\b/i,getDateRange:()=>[n(a(e)),t],granularity:`month`},{pattern:/\blast quarter\b/i,getDateRange:()=>{let t=new Date(a(e));t.setMonth(t.getMonth()-3);let r=new Date(a(e));return r.setDate(r.getDate()-1),[n(t),n(r)]},granularity:`month`},{pattern:/\bthis year\b/i,getDateRange:()=>[n(i(e)),t],granularity:`month`},{pattern:/\blast year\b/i,getDateRange:()=>{let t=new Date(e.getFullYear()-1,0,1),r=new Date(e.getFullYear()-1,11,31);return[n(t),n(r)]},granularity:`month`},{pattern:/\blast (\d+) days?\b/i,getDateRange:()=>{let r=new Date(e);return r.setDate(r.getDate()-7),[n(r),t]},granularity:`day`},{pattern:/\blast (\d+) weeks?\b/i,getDateRange:()=>{let r=new Date(e);return r.setDate(r.getDate()-28),[n(r),t]},granularity:`week`},{pattern:/\blast (\d+) months?\b/i,getDateRange:()=>{let r=new Date(e);return r.setMonth(r.getMonth()-3),[n(r),t]},granularity:`month`},{pattern:/\bq([1-4])\b/i,getDateRange:()=>[n(new Date(e.getFullYear(),0,1)),n(new Date(e.getFullYear(),2,31))],granularity:`month`}]}var Hf={funnel:/\b(funnel|conversion|drop.?off|steps?|journey|pipeline|stages?)\b/i,flow:/\b(flows?|paths?|sequence|before|after|next|previous|user.?journey)\b/i,retention:/\b(retention|cohort|return|churn|comeback|retained|day.?\d+)\b/i};function Uf(e){let t=e.toLowerCase();return Hf.funnel.test(t)?`funnel`:Hf.flow.test(t)?`flow`:Hf.retention.test(t)?`retention`:`query`}function Wf(e,t){let n=t||`the relevant cube`;switch(e){case`funnel`:return[`Use /mcp/discover to get ${n} funnel configuration and schema`,`Query the event dimension to discover available event types for funnel steps`,`Build funnel query with discovered values using the schema from discover`];case`flow`:return[`Use /mcp/discover to get ${n} flow configuration and schema`,`Query the event dimension to discover available event types`,`Build flow query specifying the starting event and steps before/after`];case`retention`:return[`Use /mcp/discover to get ${n} retention configuration and schema`,`Build retention query specifying granularity (day/week/month) and number of periods`]}}function Gf(e){let t=Vf(),n=e.toLowerCase();for(let e of t){let t=n.match(e.pattern);if(t){if(t[1]&&/^\d+$/.test(t[1])){let e=If(parseInt(t[1],10),n);if(e)return e}return/^q[1-4]$/i.test(t[0])?Lf(t[0]):{dateRange:e.getDateRange(),granularity:e.granularity}}}return null}function Kf(e){let t=e.toLowerCase();for(let{pattern:e,type:n}of[{pattern:/\b(total|sum|combined)\b/i,type:`sum`},{pattern:/\b(count|number of|how many)\b/i,type:`count`},{pattern:/\b(average|avg|mean)\b/i,type:`avg`},{pattern:/\b(maximum|max|highest|top)\b/i,type:`max`},{pattern:/\b(minimum|min|lowest|bottom)\b/i,type:`min`}])if(e.test(t))return{type:n,confidence:.8};return null}function qf(e){let t=e.toLowerCase(),n=[],r=/\bby\s+(\w+(?:\s+\w+)?)/gi,i;for(;(i=r.exec(t))!==null;)n.push(i[1].trim());let a=/\bper\s+(\w+)/gi;for(;(i=a.exec(t))!==null;)n.push(i[1].trim());let o=/\bfor each\s+(\w+)/gi;for(;(i=o.exec(t))!==null;)n.push(i[1].trim());return n}function Jf(e,t,n,r,i){if(n){let t=e.find(e=>e.name===n);return t?(r.push(`Using specified cube: ${n}`),[t]):(i.push(`Specified cube '${n}' not found`),[])}let a=Ud(e,{intent:t,limit:3}).map(t=>e.find(e=>e.name===t.cube)).filter(e=>e!==void 0);return a.length>0&&r.push(`Identified relevant cubes: ${a.map(e=>e.name).join(`, `)}`),a}function Yf(e,t){return e===`query`?{query:{},confidence:0,reasoning:[`Could not identify relevant cubes for this query`],warnings:t,analysisMode:e,nextSteps:void 0}:{query:{},confidence:.7,reasoning:[`Detected ${e} intent from natural language`],warnings:t,analysisMode:e,nextSteps:Wf(e,void 0)}}function Xf(e,t,n){let r=[],i=[],a={},o=Uf(t),s=Jf(e,t,n,r,i);if(s.length===0)return Yf(o,i);let c=s[0],l=.5,u=Kf(t);u&&(r.push(`Detected ${u.type} aggregation intent`),l+=.1);let d=[],f=t.toLowerCase();l+=Rf(c,f,d,r),d.length===0&&u&&zf(c,u,d,r),d.length===0&&c.measures.length>0&&(d.push(c.measures[0].name),r.push(`Using default measure: ${c.measures[0].name}`),i.push(`Could not determine specific measure from query, using default`)),a.measures=d;let p=qf(t),m=[];l+=Bf(s,p,f,m,r),m.length>0&&(a.dimensions=m);let h=Gf(t);if(h){let e=c.dimensions.find(e=>e.type===`time`);if(e){let t={dimension:e.name,dateRange:h.dateRange};h.granularity&&(t.granularity=h.granularity),a.timeDimensions=[t],r.push(`Applied time filter: ${h.dateRange[0]} to ${h.dateRange[1]}`),l+=.15}else i.push(`Time expression found but no time dimension in cube`)}if(l=Math.min(1,l),o!==`query`){let e=s.length>0?s[0].name:void 0;return{query:{},confidence:.7,reasoning:[`Detected ${o} intent from natural language`,...e?[`Found relevant cube: ${e}`]:[]],warnings:i.length>0?i:void 0,analysisMode:o,nextSteps:Wf(o,e)}}return{query:a,confidence:l,reasoning:r,warnings:i.length>0?i:void 0,analysisMode:`query`}}function $(e,t,n,r){e?typeof e==`string`&&n(e,r):r.push({type:`syntax_error`,message:k(t)})}function Zf(e,t){return e.map(e=>t.get(e)||e)}function Qf(e,t){if(t.size===0)return;let n=JSON.parse(JSON.stringify(e));return n.measures&&=Zf(n.measures,t),n.dimensions&&=Zf(n.dimensions,t),n.timeDimensions&&=n.timeDimensions.map(e=>({...e,dimension:t.get(e.dimension)||e.dimension})),n}function $f(e,t){e.measures&&e.measures.length>10&&t.push({type:`performance`,message:k(`server.validation.ai.performanceManyMeasures`,{count:e.measures.length}),suggestion:k(`server.validation.ai.suggestSplitQueries`)}),e.dimensions&&e.dimensions.length>5&&t.push({type:`performance`,message:k(`server.validation.ai.performanceManyDimensions`,{count:e.dimensions.length}),suggestion:k(`server.validation.ai.suggestAddDimensionFilters`)})}function ep(e,t,n){let[r]=e.split(`.`),i=t.find(e=>e.name===r);if(!i)return;let a=i.dimensions.find(t=>t.name===e);a&&a.type!==`time`&&n.push({type:`best_practice`,message:k(`server.validation.ai.dimensionNotTimeType`,{dimension:e,type:a.type}),field:e,suggestion:k(`server.validation.ai.suggestUseTimeDimension`)})}function tp(e,t,n,r,i){let a=e.member,o=a.split(`.`);if(o.length!==2){n.push({type:`invalid_filter`,message:k(`server.validation.ai.invalidFilterMemberFormat`,{member:a}),field:a});return}let[s,c]=o,l=t.find(e=>e.name===s);if(!l){let e=i(s,t.map(e=>e.name));e&&r.set(a,`${e.field}.${c}`),n.push({type:`cube_not_found`,message:k(`server.validation.ai.cubeNotFoundInFilter`,{cubeName:s}),field:a,suggestion:e?`Did you mean '${e.field}'?`:void 0,correctedValue:e?`${e.field}.${c}`:void 0});return}let u=l.dimensions.some(e=>e.name===a),d=l.measures.some(e=>e.name===a);if(u||d)return;let f=i(c,[...l.dimensions.map(e=>e.name.split(`.`).pop()),...l.measures.map(e=>e.name.split(`.`).pop())]);if(f){let e=`${s}.${f.field}`;r.set(a,e),n.push({type:`invalid_filter`,message:k(`server.validation.ai.filterFieldNotFoundWithSuggestion`,{fieldName:c,cubeName:s}),field:a,suggestion:`Did you mean '${f.field}'?`,correctedValue:e})}else n.push({type:`invalid_filter`,message:k(`server.validation.ai.filterFieldNotFound`,{fieldName:c,cubeName:s}),field:a})}function np(e,t){let n=null;for(let r of t){let t=Nd(e.toLowerCase(),r.toLowerCase());t<=3&&(!n||t<n.distance)&&(n={field:r,distance:t})}return n}function rp(e,t,n,r){let i=e.split(`.`);if(i.length!==2){n.push({type:`syntax_error`,message:k(`server.validation.ai.invalidMeasureFormat`,{measure:e}),field:e});return}let[a,o]=i,s=t.find(e=>e.name===a);if(!s){let i=t.map(e=>e.name),s=np(a,i);s?(n.push({type:`cube_not_found`,message:k(`server.validation.ai.cubeNotFoundWithSuggestion`,{cubeName:a}),field:e,suggestion:`Did you mean '${s.field}'?`,correctedValue:`${s.field}.${o}`}),r.set(e,`${s.field}.${o}`)):n.push({type:`cube_not_found`,message:k(`server.validation.ai.cubeNotFoundWithAvailable`,{cubeName:a}),field:e,suggestion:`Available cubes: ${i.join(`, `)}`});return}if(!s.measures.some(t=>t.name===e)){let i=Wd(t,o,`measure`);if(i&&i.cube===a)n.push({type:`measure_not_found`,message:k(`server.validation.ai.measureNotFoundWithSuggestion`,{measureName:o,cubeName:a}),field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:i.field}),r.set(e,i.field);else{let t=s.measures.map(e=>e.name.split(`.`).pop()),i=np(o,t);if(i){let t=`${a}.${i.field}`;n.push({type:`measure_not_found`,message:k(`server.validation.ai.measureNotFoundWithSuggestion`,{measureName:o,cubeName:a}),field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:t}),r.set(e,t)}else n.push({type:`measure_not_found`,message:k(`server.validation.ai.measureNotFoundWithAvailable`,{measureName:o,cubeName:a}),field:e,suggestion:`Available measures: ${t.slice(0,5).join(`, `)}${t.length>5?`...`:``}`})}}}function ip(e,t,n,r){let i=e.split(`.`);if(i.length!==2){n.push({type:`syntax_error`,message:k(`server.validation.ai.invalidDimensionFormat`,{dimension:e}),field:e});return}let[a,o]=i,s=t.find(e=>e.name===a);if(!s){let i=t.map(e=>e.name),s=np(a,i);s?(n.push({type:`cube_not_found`,message:k(`server.validation.ai.cubeNotFoundWithSuggestion`,{cubeName:a}),field:e,suggestion:`Did you mean '${s.field}'?`,correctedValue:`${s.field}.${o}`}),r.set(e,`${s.field}.${o}`)):n.push({type:`cube_not_found`,message:k(`server.validation.ai.cubeNotFoundWithAvailable`,{cubeName:a}),field:e,suggestion:`Available cubes: ${i.join(`, `)}`});return}if(!s.dimensions.some(t=>t.name===e)){let i=Wd(t,o,`dimension`);if(i&&i.cube===a)n.push({type:`dimension_not_found`,message:k(`server.validation.ai.dimensionNotFoundWithSuggestion`,{dimensionName:o,cubeName:a}),field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:i.field}),r.set(e,i.field);else{let t=s.dimensions.map(e=>e.name.split(`.`).pop()),i=np(o,t);if(i){let t=`${a}.${i.field}`;n.push({type:`dimension_not_found`,message:k(`server.validation.ai.dimensionNotFoundWithSuggestion`,{dimensionName:o,cubeName:a}),field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:t}),r.set(e,t)}else n.push({type:`dimension_not_found`,message:k(`server.validation.ai.dimensionNotFoundWithAvailable`,{dimensionName:o,cubeName:a}),field:e,suggestion:`Available dimensions: ${t.slice(0,5).join(`, `)}${t.length>5?`...`:``}`})}}}function ap(e,t,n,r){for(let i of e){if(`and`in i&&Array.isArray(i.and)){ap(i.and,t,n,r);continue}if(`or`in i&&Array.isArray(i.or)){ap(i.or,t,n,r);continue}`member`in i&&tp(i,t,n,r,np)}}function op(e,t,n,r,i){let a=e.funnel;if(!a)return;let o=(e,n)=>ip(e,t,n,i);if($(a.bindingKey,`server.validation.ai.bindingKeyRequired.funnel`,o,n),$(a.timeDimension,`server.validation.ai.timeDimensionRequired.funnel`,o,n),!a.steps||!Array.isArray(a.steps))n.push({type:`syntax_error`,message:k(`server.validation.ai.funnelStepsRequired`)});else if(a.steps.length<2)n.push({type:`syntax_error`,message:k(`server.validation.ai.funnelRequiresSteps`)});else for(let e=0;e<a.steps.length;e++){let o=a.steps[e];o.name||r.push({type:`best_practice`,message:k(`server.validation.ai.stepMissingName`,{step:e+1}),suggestion:k(`server.validation.ai.suggestAddStepNames`)}),o.filter&&`member`in o.filter&&ap([o.filter],t,n,i)}}function sp(e,t,n,r,i){let a=e.flow;if(!a)return;let o=(e,n)=>ip(e,t,n,i);$(a.bindingKey,`server.validation.ai.bindingKeyRequired.flow`,o,n),$(a.timeDimension,`server.validation.ai.timeDimensionRequired.flow`,o,n),$(a.eventDimension,`server.validation.ai.eventDimensionRequired`,o,n),a.stepsBefore===void 0&&a.stepsAfter===void 0&&r.push({type:`best_practice`,message:k(`server.validation.ai.stepsBothMissing`),suggestion:k(`server.validation.ai.suggestSetSteps`)})}function cp(e,t,n,r,i){let a=e.retention;if(!a)return;let o=(e,n)=>ip(e,t,n,i);$(a.bindingKey,`server.validation.ai.bindingKeyRequired.retention`,o,n),$(a.timeDimension,`server.validation.ai.retentionTimeDimensionRequired`,o,n),a.granularity||r.push({type:`best_practice`,message:k(`server.validation.ai.granularityNotSpecified`),suggestion:k(`server.validation.ai.suggestSpecifyGranularity`)}),a.periods||r.push({type:`best_practice`,message:k(`server.validation.ai.periodsNotSpecified`),suggestion:k(`server.validation.ai.suggestSpecifyPeriods`)})}function lp(e,t,n,r,i){return e.funnel?(op(e,t,n,r,i),!0):e.flow?(sp(e,t,n,r,i),!0):e.retention?(cp(e,t,n,r,i),!0):!1}function up(e,t,n,r,i){if(e.measures)for(let r of e.measures)rp(r,t,n,i);if(e.dimensions)for(let r of e.dimensions)ip(r,t,n,i);if(e.timeDimensions)for(let a of e.timeDimensions)ip(a.dimension,t,n,i),ep(a.dimension,t,r);e.filters&&ap(e.filters,t,n,i),!e.measures?.length&&!e.dimensions?.length&&n.push({type:`syntax_error`,message:k(`server.validation.ai.emptyQuery`)}),$f(e,r)}function dp(e,t){let n=[],r=[],i=new Map;if(lp(e,t,n,r,i))return{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};up(e,t,n,r,i);let a=Qf(e,i);return{isValid:n.length===0,errors:n,warnings:r,correctedQuery:a}}function fp(e){return new td({drizzle:e.drizzle,schema:e.schema})}exports.BaseDatabaseExecutor=S,exports.CTEBuilder=Tn,exports.CalculatedMeasureResolver=j,exports.ComparisonQueryBuilder=Ar,exports.DatabendExecutor=Ve,exports.DrizzlePlanBuilder=Ni,exports.DrizzleSqlBuilder=cn,exports.DuckDBExecutor=Ie,exports.EXPLAIN_ANALYSIS_PROMPT=fd,exports.FlowQueryBuilder=Mr,exports.FunnelQueryBuilder=jr,exports.IdentityOptimiser=Br,exports.JoinPathResolver=ln,exports.LogicalPlanBuilder=zr,exports.LogicalPlanner=Cn,exports.MemoryCacheProvider=rd,exports.MySQLExecutor=Te,exports.OptimiserPipeline=Vr,exports.PostgresExecutor=xe,exports.QueryExecutor=Fi,exports.RetentionQueryBuilder=Rr,exports.SQLiteExecutor=ke,exports.STEP0_VALIDATION_PROMPT=id,exports.STEP1_SYSTEM_PROMPT=cd,exports.STEP2_SYSTEM_PROMPT=ud,exports.SYSTEM_PROMPT_TEMPLATE=od,exports.SemanticLayerCompiler=td,exports.SnowflakeExecutor=qe,exports.aiValidateQuery=dp,exports.buildAgentSystemPrompt=Dd,exports.buildExplainAnalysisPrompt=pd,exports.buildStep0Prompt=ad,exports.buildStep1Prompt=ld,exports.buildStep2Prompt=dd,exports.buildSystemPrompt=sd,exports.createDatabaseExecutor=Ye,exports.createDatabendExecutor=He,exports.createDrizzleSemanticLayer=fp,exports.createDuckDBExecutor=Le,exports.createMultiCubeContext=tt,exports.createMySQLExecutor=Ee,exports.createPostgresExecutor=Se,exports.createSQLiteExecutor=Ae,exports.createSnowflakeExecutor=Je,exports.createToolExecutor=xf,exports.defineCube=nt,exports.detectQueryMode=er,exports.detectQueryModes=Qn,exports.discoverCubes=Ud,exports.findBestFieldMatch=Wd,exports.fnv1aHash=Er,exports.formatCubeSchemaForExplain=md,exports.formatExistingIndexes=hd,exports.generateCacheKey=yr,exports.getActiveQueryModes=$n,exports.getCubeInvalidationPattern=Or,exports.getJoinType=Ze,exports.getToolDefinitions=bf,exports.handleAgentChat=Pf,exports.hasComparisonMode=Jn,exports.hasFlowMode=Xn,exports.hasFunnelMode=Yn,exports.hasRetentionMode=Zn,exports.normalizeQuery=br,exports.resolveCubeReference=w,exports.resolveSqlExpression=T,exports.strongHash=Dr,exports.suggestQuery=Xf;
|
package/dist/server/index.js
CHANGED
|
@@ -16754,7 +16754,7 @@ async function Kf(e, t, n) {
|
|
|
16754
16754
|
return new e(t);
|
|
16755
16755
|
}
|
|
16756
16756
|
case "openai": {
|
|
16757
|
-
let { OpenAIProvider: e } = await import("./openai-
|
|
16757
|
+
let { OpenAIProvider: e } = await import("./openai-CtXqeznO.js");
|
|
16758
16758
|
return new e(t, n);
|
|
16759
16759
|
}
|
|
16760
16760
|
case "google": {
|
|
@@ -119,7 +119,7 @@ var ce = (e, t) => {
|
|
|
119
119
|
} catch {
|
|
120
120
|
return;
|
|
121
121
|
}
|
|
122
|
-
}, ue = (e) => new Promise((t) => setTimeout(t, e)), de = "6.
|
|
122
|
+
}, ue = (e) => new Promise((t) => setTimeout(t, e)), de = "6.43.0", fe = () => typeof window < "u" && window.document !== void 0 && typeof navigator < "u";
|
|
123
123
|
function pe() {
|
|
124
124
|
return typeof Deno < "u" && Deno.build != null ? "deno" : typeof EdgeRuntime < "u" ? "edge" : Object.prototype.toString.call(globalThis.process === void 0 ? 0 : globalThis.process) === "[object process]" ? "node" : "unknown";
|
|
125
125
|
}
|
|
@@ -1399,7 +1399,10 @@ I = /* @__PURE__ */ new WeakSet(), hn = function() {
|
|
|
1399
1399
|
}, _n = function() {
|
|
1400
1400
|
for (let e = this.messages.length - 1; e >= 0; e--) {
|
|
1401
1401
|
let t = this.messages[e];
|
|
1402
|
-
if (Qt(t) && t?.tool_calls?.length)
|
|
1402
|
+
if (Qt(t) && t?.tool_calls?.length) for (let e = t.tool_calls.length - 1; e >= 0; e--) {
|
|
1403
|
+
let n = t.tool_calls[e];
|
|
1404
|
+
if (n?.type === "function") return n.function;
|
|
1405
|
+
}
|
|
1403
1406
|
}
|
|
1404
1407
|
}, vn = function() {
|
|
1405
1408
|
for (let e = this.messages.length - 1; e >= 0; e--) {
|
|
@@ -2080,6 +2083,12 @@ var Gn = class extends N {
|
|
|
2080
2083
|
__security: { adminAPIKeyAuth: !0 }
|
|
2081
2084
|
});
|
|
2082
2085
|
}
|
|
2086
|
+
retrieve(e, t) {
|
|
2087
|
+
return this._client.get(P`/organization/spend_alerts/${e}`, {
|
|
2088
|
+
...t,
|
|
2089
|
+
__security: { adminAPIKeyAuth: !0 }
|
|
2090
|
+
});
|
|
2091
|
+
}
|
|
2083
2092
|
update(e, t, n) {
|
|
2084
2093
|
return this._client.post(P`/organization/spend_alerts/${e}`, {
|
|
2085
2094
|
body: t,
|
|
@@ -2469,6 +2478,13 @@ var nr = class extends N {
|
|
|
2469
2478
|
__security: { adminAPIKeyAuth: !0 }
|
|
2470
2479
|
});
|
|
2471
2480
|
}
|
|
2481
|
+
retrieve(e, t, n) {
|
|
2482
|
+
let { project_id: r } = t;
|
|
2483
|
+
return this._client.get(P`/organization/projects/${r}/spend_alerts/${e}`, {
|
|
2484
|
+
...n,
|
|
2485
|
+
__security: { adminAPIKeyAuth: !0 }
|
|
2486
|
+
});
|
|
2487
|
+
}
|
|
2472
2488
|
update(e, t, n) {
|
|
2473
2489
|
let { project_id: r, ...i } = t;
|
|
2474
2490
|
return this._client.post(P`/organization/projects/${r}/spend_alerts/${e}`, {
|