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
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-_whV4fXL.cjs"),t=require("../locale-ZLUUNUxr.cjs"),n=require("../mcp-transport-B7ddET3M.cjs");let r=require("express");r=e.k(r,1);let i=require("cors");i=e.k(i,1);function a(a){let{cubes:o,drizzle:s,schema:c,extractSecurityContext:l,engineType:u,cors:d,basePath:f=`/cubejs-api/v1`,jsonLimit:p=`10mb`,cache:m,mcp:h={enabled:!0},agent:g}=a;if(!o||o.length===0)throw Error(`At least one cube must be provided in the cubes array`);let _=(0,r.Router)(),v=async(e,n)=>t.r(await l(e,n),t.n(t=>e.get(t)));if(d){let e={...d,allowedHeaders:t.t(d.allowedHeaders)};_.use((0,i.default)(e))}_.use(r.default.json({limit:p})),_.use(r.default.urlencoded({extended:!0,limit:p}));let y=new t.i({drizzle:s,schema:c,engineType:u,cache:m,rlsSetup:a.rlsSetup});if(o.forEach(e=>{y.registerCube(e)}),_.post(`${f}/load`,async(t,n)=>{try{let r=t.body.query||t.body,i=await v(t,n),a=y.validateQuery(r);if(!a.isValid)return n.status(400).json(e.i(`Query validation failed: ${a.errors.join(`, `)}`,400));let o=t.headers[`x-cache-control`]===`no-cache`,s=await y.executeMultiCubeQuery(r,i,{skipCache:o});n.json(e.r(r,s,y))}catch(t){console.error(`Query execution error:`,t),n.status(500).json(e.i(t instanceof Error?t.message:`Query execution failed`,500))}}),_.get(`${f}/load`,async(t,n)=>{try{let r=t.query.query;if(!r)return n.status(400).json(e.i(`Query parameter is required`,400));let i;try{i=JSON.parse(r)}catch{return n.status(400).json(e.i(`Invalid JSON in query parameter`,400))}let a=await v(t,n),o=y.validateQuery(i);if(!o.isValid)return n.status(400).json(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=t.headers[`x-cache-control`]===`no-cache`,c=await y.executeMultiCubeQuery(i,a,{skipCache:s});n.json(e.r(i,c,y))}catch(t){console.error(`Query execution error:`,t),n.status(500).json(e.i(t instanceof Error?t.message:`Query execution failed`,500))}}),_.post(`${f}/batch`,async(t,n)=>{try{let{queries:r}=t.body;if(!r||!Array.isArray(r))return n.status(400).json(e.i(`Request body must contain a "queries" array`,400));if(r.length===0)return n.status(400).json(e.i(`Queries array cannot be empty`,400));let i=await e.l(r,await v(t,n),y,{skipCache:t.headers[`x-cache-control`]===`no-cache`});n.json(i)}catch(t){console.error(`Batch execution error:`,t),n.status(500).json(e.i(t instanceof Error?t.message:`Batch execution failed`,500))}}),_.get(`${f}/meta`,(t,n)=>{try{let t=y.getMetadata();n.json(e.a(t))}catch(t){console.error(`Metadata error:`,t),n.status(500).json(e.i(t instanceof Error?t.message:`Failed to fetch metadata`,500))}}),_.post(`${f}/sql`,async(t,n)=>{try{let r=t.body,i=await v(t,n),a=y.validateQuery(r);if(!a.isValid)return n.status(400).json(e.i(`Query validation failed: ${a.errors.join(`, `)}`,400));let o=r.measures?.[0]||r.dimensions?.[0];if(!o)return n.status(400).json(e.i(`No measures or dimensions specified`,400));let s=o.split(`.`)[0],c=await y.generateSQL(s,r,i);n.json(e.o(r,c))}catch(t){console.error(`SQL generation error:`,String(t).replace(/\n|\r/g,``)),n.status(500).json(e.i(t instanceof Error?t.message:`SQL generation failed`,500))}}),_.get(`${f}/sql`,async(t,n)=>{try{let r=t.query.query;if(!r)return n.status(400).json(e.i(`Query parameter is required`,400));let i=JSON.parse(r),a=await v(t,n),o=y.validateQuery(i);if(!o.isValid)return n.status(400).json(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=i.measures?.[0]||i.dimensions?.[0];if(!s)return n.status(400).json(e.i(`No measures or dimensions specified`,400));let c=s.split(`.`)[0],l=await y.generateSQL(c,i,a);n.json(e.o(i,l))}catch(t){console.error(`SQL generation error:`,String(t).replace(/\n|\r/g,``)),n.status(500).json(e.i(t instanceof Error?t.message:`SQL generation failed`,500))}}),_.post(`${f}/dry-run`,async(t,n)=>{try{let r=await e.u(t.body.query||t.body,await v(t,n),y);n.json(r)}catch(e){console.error(`Dry-run error:`,e),n.status(400).json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}),_.get(`${f}/dry-run`,async(t,n)=>{try{let r=t.query.query;if(!r)return n.status(400).json({error:`Query parameter is required`,valid:!1});let i=await e.u(JSON.parse(r),await v(t,n),y);n.json(i)}catch(e){console.error(`Dry-run error:`,e),n.status(400).json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}),_.post(`${f}/explain`,async(e,t)=>{try{let n=e.body.query||e.body,r=e.body.options||{},i=await v(e,t),a=y.validateQuery(n);if(!a.isValid)return t.status(400).json({error:`Query validation failed: ${a.errors.join(`, `)}`});let o=await y.explainQuery(n,i,r);t.json(o)}catch(e){console.error(`Explain error:`,e),t.status(500).json({error:e instanceof Error?e.message:`Explain query failed`})}}),g&&_.post(`${f}/agent/chat`,async(e,t)=>{try{let{handleAgentChat:n}=await Promise.resolve().then(()=>require("../handler-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-_whV4fXL.cjs"),t=require("../locale-ZLUUNUxr.cjs"),n=require("../mcp-transport-B7ddET3M.cjs");let r=require("express");r=e.k(r,1);let i=require("cors");i=e.k(i,1);function a(a){let{cubes:o,drizzle:s,schema:c,extractSecurityContext:l,engineType:u,cors:d,basePath:f=`/cubejs-api/v1`,jsonLimit:p=`10mb`,cache:m,mcp:h={enabled:!0},agent:g}=a;if(!o||o.length===0)throw Error(`At least one cube must be provided in the cubes array`);let _=(0,r.Router)(),v=async(e,n)=>t.r(await l(e,n),t.n(t=>e.get(t)));if(d){let e={...d,allowedHeaders:t.t(d.allowedHeaders)};_.use((0,i.default)(e))}_.use(r.default.json({limit:p})),_.use(r.default.urlencoded({extended:!0,limit:p}));let y=new t.i({drizzle:s,schema:c,engineType:u,cache:m,rlsSetup:a.rlsSetup});if(o.forEach(e=>{y.registerCube(e)}),_.post(`${f}/load`,async(t,n)=>{try{let r=t.body.query||t.body,i=await v(t,n),a=y.validateQuery(r);if(!a.isValid)return n.status(400).json(e.i(`Query validation failed: ${a.errors.join(`, `)}`,400));let o=t.headers[`x-cache-control`]===`no-cache`,s=await y.executeMultiCubeQuery(r,i,{skipCache:o});n.json(e.r(r,s,y))}catch(t){console.error(`Query execution error:`,t),n.status(500).json(e.i(t instanceof Error?t.message:`Query execution failed`,500))}}),_.get(`${f}/load`,async(t,n)=>{try{let r=t.query.query;if(!r)return n.status(400).json(e.i(`Query parameter is required`,400));let i;try{i=JSON.parse(r)}catch{return n.status(400).json(e.i(`Invalid JSON in query parameter`,400))}let a=await v(t,n),o=y.validateQuery(i);if(!o.isValid)return n.status(400).json(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=t.headers[`x-cache-control`]===`no-cache`,c=await y.executeMultiCubeQuery(i,a,{skipCache:s});n.json(e.r(i,c,y))}catch(t){console.error(`Query execution error:`,t),n.status(500).json(e.i(t instanceof Error?t.message:`Query execution failed`,500))}}),_.post(`${f}/batch`,async(t,n)=>{try{let{queries:r}=t.body;if(!r||!Array.isArray(r))return n.status(400).json(e.i(`Request body must contain a "queries" array`,400));if(r.length===0)return n.status(400).json(e.i(`Queries array cannot be empty`,400));let i=await e.l(r,await v(t,n),y,{skipCache:t.headers[`x-cache-control`]===`no-cache`});n.json(i)}catch(t){console.error(`Batch execution error:`,t),n.status(500).json(e.i(t instanceof Error?t.message:`Batch execution failed`,500))}}),_.get(`${f}/meta`,(t,n)=>{try{let t=y.getMetadata();n.json(e.a(t))}catch(t){console.error(`Metadata error:`,t),n.status(500).json(e.i(t instanceof Error?t.message:`Failed to fetch metadata`,500))}}),_.post(`${f}/sql`,async(t,n)=>{try{let r=t.body,i=await v(t,n),a=y.validateQuery(r);if(!a.isValid)return n.status(400).json(e.i(`Query validation failed: ${a.errors.join(`, `)}`,400));let o=r.measures?.[0]||r.dimensions?.[0];if(!o)return n.status(400).json(e.i(`No measures or dimensions specified`,400));let s=o.split(`.`)[0],c=await y.generateSQL(s,r,i);n.json(e.o(r,c))}catch(t){console.error(`SQL generation error:`,String(t).replace(/\n|\r/g,``)),n.status(500).json(e.i(t instanceof Error?t.message:`SQL generation failed`,500))}}),_.get(`${f}/sql`,async(t,n)=>{try{let r=t.query.query;if(!r)return n.status(400).json(e.i(`Query parameter is required`,400));let i=JSON.parse(r),a=await v(t,n),o=y.validateQuery(i);if(!o.isValid)return n.status(400).json(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=i.measures?.[0]||i.dimensions?.[0];if(!s)return n.status(400).json(e.i(`No measures or dimensions specified`,400));let c=s.split(`.`)[0],l=await y.generateSQL(c,i,a);n.json(e.o(i,l))}catch(t){console.error(`SQL generation error:`,String(t).replace(/\n|\r/g,``)),n.status(500).json(e.i(t instanceof Error?t.message:`SQL generation failed`,500))}}),_.post(`${f}/dry-run`,async(t,n)=>{try{let r=await e.u(t.body.query||t.body,await v(t,n),y);n.json(r)}catch(e){console.error(`Dry-run error:`,e),n.status(400).json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}),_.get(`${f}/dry-run`,async(t,n)=>{try{let r=t.query.query;if(!r)return n.status(400).json({error:`Query parameter is required`,valid:!1});let i=await e.u(JSON.parse(r),await v(t,n),y);n.json(i)}catch(e){console.error(`Dry-run error:`,e),n.status(400).json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}),_.post(`${f}/explain`,async(e,t)=>{try{let n=e.body.query||e.body,r=e.body.options||{},i=await v(e,t),a=y.validateQuery(n);if(!a.isValid)return t.status(400).json({error:`Query validation failed: ${a.errors.join(`, `)}`});let o=await y.explainQuery(n,i,r);t.json(o)}catch(e){console.error(`Explain error:`,e),t.status(500).json({error:e instanceof Error?e.message:`Explain query failed`})}}),g&&_.post(`${f}/agent/chat`,async(e,t)=>{try{let{handleAgentChat:n}=await Promise.resolve().then(()=>require("../handler-OwxSBJH8.cjs")),{message:r,sessionId:i,history:a}=e.body;if(!r||typeof r!=`string`)return t.status(400).json({error:`message is required and must be a string`});let o=(g.apiKey||``).trim();if(g.allowClientApiKey){let t=e.headers[`x-agent-api-key`];t&&(o=t.trim())}if(!o)return t.status(401).json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`});let s=g.allowClientApiKey?e.headers[`x-agent-provider`]:void 0,c=g.allowClientApiKey?e.headers[`x-agent-model`]:void 0,l=g.allowClientApiKey?e.headers[`x-agent-provider-endpoint`]:void 0,u=await v(e,t),d=g.buildSystemContext?.(u);t.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});try{let e=n({message:r,sessionId:i,history:a,semanticLayer:y,securityContext:u,agentConfig:g,apiKey:o,systemContext:d,providerOverride:s,modelOverride:c,baseURLOverride:l});for await(let n of e)t.write(`data: ${JSON.stringify(n)}\n\n`)}catch(e){let n={type:`error`,data:{message:e instanceof Error?e.message:`Stream failed`}};t.write(`data: ${JSON.stringify(n)}\n\n`)}finally{t.end()}}catch(e){console.error(`Agent chat error:`,e),t.headersSent||t.status(500).json({error:e instanceof Error?e.message:`Agent chat failed`})}}),h.enabled!==!1){let e=n.o(y,h.resources),t=n.y(h.prompts),r=n.v(h.instructions),i=h.basePath??`/mcp`;_.post(`${i}`,async(i,a)=>{if(h.resourceMetadataUrl&&!n.u(i.headers.authorization))return a.setHeader(`WWW-Authenticate`,n.c(h.resourceMetadataUrl)),a.status(401).json({error:`Bearer token required`});let o=n.S(i.headers.origin,h.allowedOrigins?{allowedOrigins:h.allowedOrigins}:{});if(!o.valid)return a.status(403).json(n.i(null,-32600,o.reason));let s=i.headers.accept;if(!n.x(s))return a.status(400).json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`));let c=n.h(i.headers);if(!c.ok)return a.status(426).json({error:`Unsupported MCP protocol version`,supported:c.supported});let l=n.g(i.body);if(!l)return a.status(400).json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`));let u=n.C(s),d=l.method===`initialize`;try{let o=await n.l(l.method,l.params,{semanticLayer:y,extractSecurityContext:(e,t)=>v(e,t),rawRequest:i,rawResponse:a,negotiatedProtocol:c.negotiated,resources:e,prompts:t,instructions:r,appEnabled:!!h.app,appConfig:typeof h.app==`object`?h.app:void 0,serverName:h.serverName});if(n.m(l))return a.status(202).end();let s=d&&o&&typeof o==`object`&&`sessionId`in o?o.sessionId:void 0;s&&a.setHeader(n.r,s);let f=n.a(l.id??null,o);if(u){let e=n._();return a.status(200),a.setHeader(`Content-Type`,`text/event-stream`),a.setHeader(`Cache-Control`,`no-cache`),a.setHeader(`Connection`,`keep-alive`),a.write(`id: ${e}\n\n`),a.write(n.b(f,e)),a.end()}return a.json(f)}catch(e){if(n.m(l))return console.error(`MCP notification processing error:`,String(e).replace(/\n|\r/g,``)),a.status(202).end();console.error(`MCP RPC error:`,String(e).replace(/\n|\r/g,``));let t=e?.code??-32603,r=e?.data,i=e.message||`MCP request failed`,o=n.i(l.id??null,t,i,r);if(u){let e=n._();return a.status(200),a.setHeader(`Content-Type`,`text/event-stream`),a.setHeader(`Cache-Control`,`no-cache`),a.setHeader(`Connection`,`keep-alive`),a.write(`id: ${e}\n\n`),a.write(n.b(o,e)),a.end()}return a.status(200).json(o)}}),_.get(`${i}`,async(e,t)=>{if(h.resourceMetadataUrl&&!n.u(e.headers.authorization))return t.setHeader(`WWW-Authenticate`,n.c(h.resourceMetadataUrl)),t.status(401).json({error:`Bearer token required`});let r=n._();t.status(200),t.setHeader(`Content-Type`,`text/event-stream`),t.setHeader(`Cache-Control`,`no-cache`),t.setHeader(`Connection`,`keep-alive`),t.write(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},r,15e3));let i=setInterval(()=>{t.write(`: keep-alive
|
|
2
2
|
|
|
3
3
|
`)},15e3);e.on(`close`,()=>{clearInterval(i)})}),_.delete(`${i}`,(e,t)=>h.resourceMetadataUrl&&!n.u(e.headers.authorization)?(t.setHeader(`WWW-Authenticate`,n.c(h.resourceMetadataUrl)),t.status(401).json({error:`Bearer token required`})):t.status(405).json({error:`Session termination not supported`}))}return _.use((t,n,r,i)=>{console.error(`Express adapter error:`,t),r.headersSent||r.status(500).json(e.i(t,500))}),_}function o(e,t){let n=a(t);return e.use(`/`,n),e}function s(e){return o((0,r.default)(),e)}exports.createCubeApp=s,exports.createCubeRouter=a,exports.mountCubeRoutes=o;
|
|
@@ -131,7 +131,7 @@ function A(A) {
|
|
|
131
131
|
}
|
|
132
132
|
}), V && H.post(`${L}/agent/chat`, async (e, t) => {
|
|
133
133
|
try {
|
|
134
|
-
let { handleAgentChat: n } = await import("../handler-
|
|
134
|
+
let { handleAgentChat: n } = await import("../handler-CtaSua-i.js"), { message: r, sessionId: i, history: a } = e.body;
|
|
135
135
|
if (!r || typeof r != "string") return t.status(400).json({ error: "message is required and must be a string" });
|
|
136
136
|
let o = (V.apiKey || "").trim();
|
|
137
137
|
if (V.allowClientApiKey) {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-_whV4fXL.cjs"),t=require("../locale-ZLUUNUxr.cjs"),n=require("../mcp-transport-B7ddET3M.cjs");var r=function(r,i,a){let{cubes:o,drizzle:s,schema:c,extractSecurityContext:l,engineType:u,cors:d,basePath:f=`/cubejs-api/v1`,bodyLimit:p=10485760,cache:m,mcp:h={enabled:!0},agent:g}=i;if(!o||o.length===0)return a(Error(`At least one cube must be provided in the cubes array`));let _=async e=>t.r(await l(e),t.n(t=>e.headers[t.toLowerCase()]));if(d){let e={...d,allowedHeaders:t.t(d.allowedHeaders)};r.register(import(`@fastify/cors`),e)}r.addHook(`onRequest`,async(e,t)=>{e.method===`POST`&&(e.body=void 0)});let v=new t.i({drizzle:s,schema:c,engineType:u,cache:m,rlsSetup:i.rlsSetup});if(o.forEach(e=>{v.registerCube(e)}),r.post(`${f}/load`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(t,n)=>{try{let r=t.body,i=r.query||r,a=await _(t),o=v.validateQuery(i);if(!o.isValid)return n.status(400).send(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=t.headers[`x-cache-control`]===`no-cache`;return e.r(i,await v.executeMultiCubeQuery(i,a,{skipCache:s}),v)}catch(r){return t.log.error(r,`Query execution error`),n.status(500).send(e.i(r instanceof Error?r.message:`Query execution failed`,500))}}),r.get(`${f}/load`,{schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}},async(t,n)=>{try{let{query:r}=t.query,i;try{i=JSON.parse(r)}catch{return n.status(400).send(e.i(`Invalid JSON in query parameter`,400))}let a=await _(t),o=v.validateQuery(i);if(!o.isValid)return n.status(400).send(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=t.headers[`x-cache-control`]===`no-cache`,c=await v.executeMultiCubeQuery(i,a,{skipCache:s});return e.r(i,c,v)}catch(r){return t.log.error(r,`Query execution error`),n.status(500).send(e.i(r instanceof Error?r.message:`Query execution failed`,500))}}),r.post(`${f}/batch`,{bodyLimit:p,schema:{body:{type:`object`,required:[`queries`],properties:{queries:{type:`array`,items:{type:`object`}}}}}},async(t,n)=>{try{let{queries:r}=t.body;return!r||!Array.isArray(r)?n.status(400).send(e.i(`Request body must contain a "queries" array`,400)):r.length===0?n.status(400).send(e.i(`Queries array cannot be empty`,400)):await e.l(r,await _(t),v,{skipCache:t.headers[`x-cache-control`]===`no-cache`})}catch(r){return t.log.error(r,`Batch execution error`),n.status(500).send(e.i(r instanceof Error?r.message:`Batch execution failed`,500))}}),r.get(`${f}/meta`,async(t,n)=>{try{return e.a(v.getMetadata())}catch(r){return t.log.error(r,`Metadata error`),n.status(500).send(e.i(r instanceof Error?r.message:`Failed to fetch metadata`,500))}}),r.post(`${f}/sql`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(t,n)=>{try{let r=t.body,i=await _(t),a=v.validateQuery(r);if(!a.isValid)return n.status(400).send(e.i(`Query validation failed: ${a.errors.join(`, `)}`,400));let o=r.measures?.[0]||r.dimensions?.[0];if(!o)return n.status(400).send(e.i(`No measures or dimensions specified`,400));let s=o.split(`.`)[0];return e.o(r,await v.generateSQL(s,r,i))}catch(r){return t.log.error({err:String(r).replace(/\n|\r/g,``)},`SQL generation error`),n.status(500).send(e.i(r instanceof Error?r.message:`SQL generation failed`,500))}}),r.get(`${f}/sql`,{schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}},async(t,n)=>{try{let{query:r}=t.query,i=JSON.parse(r),a=await _(t),o=v.validateQuery(i);if(!o.isValid)return n.status(400).send(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=i.measures?.[0]||i.dimensions?.[0];if(!s)return n.status(400).send(e.i(`No measures or dimensions specified`,400));let c=s.split(`.`)[0];return e.o(i,await v.generateSQL(c,i,a))}catch(r){return t.log.error({err:String(r).replace(/\n|\r/g,``)},`SQL generation error`),n.status(500).send(e.i(r instanceof Error?r.message:`SQL generation failed`,500))}}),r.post(`${f}/dry-run`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(t,n)=>{try{let n=t.body;return await e.u(n.query||n,await _(t),v)}catch(e){return t.log.error(e,`Dry-run error`),n.status(400).send({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}),r.get(`${f}/dry-run`,{schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}},async(t,n)=>{try{let{query:n}=t.query;return await e.u(JSON.parse(n),await _(t),v)}catch(e){return t.log.error(e,`Dry-run error`),n.status(400).send({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}),r.post(`${f}/explain`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(e,t)=>{try{let n=e.body,r=n.query||n,i=n.options||{},a=await _(e),o=v.validateQuery(r);return o.isValid?await v.explainQuery(r,a,i):t.status(400).send({error:`Query validation failed: ${o.errors.join(`, `)}`})}catch(n){return e.log.error(n,`Explain error`),t.status(500).send({error:n instanceof Error?n.message:`Explain query failed`})}}),g&&r.post(`${f}/agent/chat`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(e,t)=>{try{let{handleAgentChat:n}=await Promise.resolve().then(()=>require("../handler-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-_whV4fXL.cjs"),t=require("../locale-ZLUUNUxr.cjs"),n=require("../mcp-transport-B7ddET3M.cjs");var r=function(r,i,a){let{cubes:o,drizzle:s,schema:c,extractSecurityContext:l,engineType:u,cors:d,basePath:f=`/cubejs-api/v1`,bodyLimit:p=10485760,cache:m,mcp:h={enabled:!0},agent:g}=i;if(!o||o.length===0)return a(Error(`At least one cube must be provided in the cubes array`));let _=async e=>t.r(await l(e),t.n(t=>e.headers[t.toLowerCase()]));if(d){let e={...d,allowedHeaders:t.t(d.allowedHeaders)};r.register(import(`@fastify/cors`),e)}r.addHook(`onRequest`,async(e,t)=>{e.method===`POST`&&(e.body=void 0)});let v=new t.i({drizzle:s,schema:c,engineType:u,cache:m,rlsSetup:i.rlsSetup});if(o.forEach(e=>{v.registerCube(e)}),r.post(`${f}/load`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(t,n)=>{try{let r=t.body,i=r.query||r,a=await _(t),o=v.validateQuery(i);if(!o.isValid)return n.status(400).send(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=t.headers[`x-cache-control`]===`no-cache`;return e.r(i,await v.executeMultiCubeQuery(i,a,{skipCache:s}),v)}catch(r){return t.log.error(r,`Query execution error`),n.status(500).send(e.i(r instanceof Error?r.message:`Query execution failed`,500))}}),r.get(`${f}/load`,{schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}},async(t,n)=>{try{let{query:r}=t.query,i;try{i=JSON.parse(r)}catch{return n.status(400).send(e.i(`Invalid JSON in query parameter`,400))}let a=await _(t),o=v.validateQuery(i);if(!o.isValid)return n.status(400).send(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=t.headers[`x-cache-control`]===`no-cache`,c=await v.executeMultiCubeQuery(i,a,{skipCache:s});return e.r(i,c,v)}catch(r){return t.log.error(r,`Query execution error`),n.status(500).send(e.i(r instanceof Error?r.message:`Query execution failed`,500))}}),r.post(`${f}/batch`,{bodyLimit:p,schema:{body:{type:`object`,required:[`queries`],properties:{queries:{type:`array`,items:{type:`object`}}}}}},async(t,n)=>{try{let{queries:r}=t.body;return!r||!Array.isArray(r)?n.status(400).send(e.i(`Request body must contain a "queries" array`,400)):r.length===0?n.status(400).send(e.i(`Queries array cannot be empty`,400)):await e.l(r,await _(t),v,{skipCache:t.headers[`x-cache-control`]===`no-cache`})}catch(r){return t.log.error(r,`Batch execution error`),n.status(500).send(e.i(r instanceof Error?r.message:`Batch execution failed`,500))}}),r.get(`${f}/meta`,async(t,n)=>{try{return e.a(v.getMetadata())}catch(r){return t.log.error(r,`Metadata error`),n.status(500).send(e.i(r instanceof Error?r.message:`Failed to fetch metadata`,500))}}),r.post(`${f}/sql`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(t,n)=>{try{let r=t.body,i=await _(t),a=v.validateQuery(r);if(!a.isValid)return n.status(400).send(e.i(`Query validation failed: ${a.errors.join(`, `)}`,400));let o=r.measures?.[0]||r.dimensions?.[0];if(!o)return n.status(400).send(e.i(`No measures or dimensions specified`,400));let s=o.split(`.`)[0];return e.o(r,await v.generateSQL(s,r,i))}catch(r){return t.log.error({err:String(r).replace(/\n|\r/g,``)},`SQL generation error`),n.status(500).send(e.i(r instanceof Error?r.message:`SQL generation failed`,500))}}),r.get(`${f}/sql`,{schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}},async(t,n)=>{try{let{query:r}=t.query,i=JSON.parse(r),a=await _(t),o=v.validateQuery(i);if(!o.isValid)return n.status(400).send(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=i.measures?.[0]||i.dimensions?.[0];if(!s)return n.status(400).send(e.i(`No measures or dimensions specified`,400));let c=s.split(`.`)[0];return e.o(i,await v.generateSQL(c,i,a))}catch(r){return t.log.error({err:String(r).replace(/\n|\r/g,``)},`SQL generation error`),n.status(500).send(e.i(r instanceof Error?r.message:`SQL generation failed`,500))}}),r.post(`${f}/dry-run`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(t,n)=>{try{let n=t.body;return await e.u(n.query||n,await _(t),v)}catch(e){return t.log.error(e,`Dry-run error`),n.status(400).send({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}),r.get(`${f}/dry-run`,{schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}},async(t,n)=>{try{let{query:n}=t.query;return await e.u(JSON.parse(n),await _(t),v)}catch(e){return t.log.error(e,`Dry-run error`),n.status(400).send({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}),r.post(`${f}/explain`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(e,t)=>{try{let n=e.body,r=n.query||n,i=n.options||{},a=await _(e),o=v.validateQuery(r);return o.isValid?await v.explainQuery(r,a,i):t.status(400).send({error:`Query validation failed: ${o.errors.join(`, `)}`})}catch(n){return e.log.error(n,`Explain error`),t.status(500).send({error:n instanceof Error?n.message:`Explain query failed`})}}),g&&r.post(`${f}/agent/chat`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(e,t)=>{try{let{handleAgentChat:n}=await Promise.resolve().then(()=>require("../handler-OwxSBJH8.cjs")),{message:r,sessionId:i,history:a}=e.body;if(!r||typeof r!=`string`)return t.status(400).send({error:`message is required and must be a string`});let o=(g.apiKey||``).trim();if(g.allowClientApiKey){let t=e.headers[`x-agent-api-key`];t&&(o=t.trim())}if(!o)return t.status(401).send({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`});let s=g.allowClientApiKey?e.headers[`x-agent-provider`]:void 0,c=g.allowClientApiKey?e.headers[`x-agent-model`]:void 0,l=g.allowClientApiKey?e.headers[`x-agent-provider-endpoint`]:void 0,u=await _(e),d=g.buildSystemContext?.(u);t.raw.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});try{let e=n({message:r,sessionId:i,history:a,semanticLayer:v,securityContext:u,agentConfig:g,apiKey:o,systemContext:d,providerOverride:s,modelOverride:c,baseURLOverride:l});for await(let n of e)t.raw.write(`data: ${JSON.stringify(n)}\n\n`)}catch(e){let n={type:`error`,data:{message:e instanceof Error?e.message:`Stream failed`}};t.raw.write(`data: ${JSON.stringify(n)}\n\n`)}finally{t.raw.end()}}catch(n){if(e.log.error(n,`Agent chat error`),!t.raw.headersSent)return t.status(500).send({error:n instanceof Error?n.message:`Agent chat failed`})}}),h.enabled!==!1){let e=n.o(v,h.resources),t=n.y(h.prompts),i=n.v(h.instructions),a=h.basePath??`/mcp`;r.post(`${a}`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(r,a)=>{if(h.resourceMetadataUrl&&!n.u(r.headers.authorization))return a.header(`WWW-Authenticate`,n.c(h.resourceMetadataUrl)),a.status(401).send({error:`Bearer token required`});let o=n.S(r.headers.origin,h.allowedOrigins?{allowedOrigins:h.allowedOrigins}:{});if(!o.valid)return a.status(403).send(n.i(null,-32600,o.reason));let s=r.headers.accept;if(!n.x(s))return a.status(400).send(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`));let c=n.h(r.headers);if(!c.ok)return a.status(426).send({error:`Unsupported MCP protocol version`,supported:c.supported});let l=n.g(r.body);if(!l)return a.status(400).send(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`));let u=n.C(s),d=l.method===`initialize`;try{let o=await n.l(l.method,l.params,{semanticLayer:v,extractSecurityContext:(e,t)=>_(e),rawRequest:r,rawResponse:a,negotiatedProtocol:c.negotiated,resources:e,prompts:t,instructions:i,appEnabled:!!h.app,appConfig:typeof h.app==`object`?h.app:void 0,serverName:h.serverName});if(n.m(l))return a.status(202).send();let s=d&&o&&typeof o==`object`&&`sessionId`in o?o.sessionId:void 0;s&&a.header(n.r,s);let f=n.a(l.id??null,o);if(u){let e=n._();a.header(`Content-Type`,`text/event-stream`).header(`Cache-Control`,`no-cache`).header(`Connection`,`keep-alive`).send(`id: ${e}\n\n${n.b(f,e)}`);return}return a.send(f)}catch(e){if(n.m(l))return r.log.error({err:String(e).replace(/\n|\r/g,``)},`MCP notification processing error`),a.status(202).send();r.log.error({err:String(e).replace(/\n|\r/g,``)},`MCP RPC error`);let t=e?.code??-32603,i=e?.data,o=e.message||`MCP request failed`,s=n.i(l.id??null,t,o,i);if(u){let e=n._();a.header(`Content-Type`,`text/event-stream`).header(`Cache-Control`,`no-cache`).header(`Connection`,`keep-alive`).send(`id: ${e}\n\n${n.b(s,e)}`);return}return a.send(s)}}),r.get(`${a}`,async(e,t)=>{if(h.resourceMetadataUrl&&!n.u(e.headers.authorization))return t.header(`WWW-Authenticate`,n.c(h.resourceMetadataUrl)),t.status(401).send({error:`Bearer token required`});let r=n._();t.raw.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}),t.raw.write(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},r,15e3));let i=setInterval(()=>{t.raw.write(`: keep-alive
|
|
2
2
|
|
|
3
3
|
`)},15e3);e.raw.on(`close`,()=>{clearInterval(i)})}),r.delete(`${a}`,async(e,t)=>h.resourceMetadataUrl&&!n.u(e.headers.authorization)?(t.header(`WWW-Authenticate`,n.c(h.resourceMetadataUrl)),t.status(401).send({error:`Bearer token required`})):t.status(405).send({error:`Session termination not supported`}))}r.setErrorHandler(async(t,n,r)=>(n.log.error(t,`Fastify cube adapter error`),r.statusCode<400&&r.status(500),e.i(t instanceof Error?t:String(t),r.statusCode))),a()};async function i(e,t){await e.register(r,t)}function a(e){let t=require("fastify")({logger:!0});return t.register(r,e),t}exports.createCubeApp=a,exports.cubePlugin=r,exports.registerCubeRoutes=i;
|
|
@@ -165,7 +165,7 @@ var O = function(n, O, k) {
|
|
|
165
165
|
} }
|
|
166
166
|
}, async (e, t) => {
|
|
167
167
|
try {
|
|
168
|
-
let { handleAgentChat: n } = await import("../handler-
|
|
168
|
+
let { handleAgentChat: n } = await import("../handler-CtaSua-i.js"), { message: r, sessionId: i, history: a } = e.body;
|
|
169
169
|
if (!r || typeof r != "string") return t.status(400).send({ error: "message is required and must be a string" });
|
|
170
170
|
let o = (B.apiKey || "").trim();
|
|
171
171
|
if (B.allowClientApiKey) {
|
|
@@ -2474,7 +2474,7 @@ async function L(e, t, n) {
|
|
|
2474
2474
|
return new e(t);
|
|
2475
2475
|
}
|
|
2476
2476
|
case "openai": {
|
|
2477
|
-
let { OpenAIProvider: e } = await import("./openai-
|
|
2477
|
+
let { OpenAIProvider: e } = await import("./openai-CtXqeznO.js");
|
|
2478
2478
|
return new e(t, n);
|
|
2479
2479
|
}
|
|
2480
2480
|
case "google": {
|
|
@@ -22,4 +22,4 @@ The query is validated before adding. The portlet fetches its own data.`,paramet
|
|
|
22
22
|
[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(e){let n={measures:t.measures,dimensions:t.dimensions,filters:t.filters,timeDimensions:t.timeDimensions,order:t.order,limit:t.limit,...t.funnel?{funnel:t.funnel}:{},...t.flow?{flow:t.flow}:{},...t.retention?{retention:t.retention}:{}};return{result:`Query execution failed: ${e instanceof Error?e.message:`Unknown error`}\n\nAttempted query:\n${JSON.stringify(n,null,2)}`,isError:!0}}}),i.set(`add_portlet`,async t=>{let r={number:`kpiNumber`,retention:`retentionHeatmap`}[t.chartType]??t.chartType,i;try{i=JSON.parse(t.query)}catch{return{result:"Invalid query: could not parse JSON string. Ensure `query` is a valid JSON string.",isError:!0}}i=e.h(i);let a=n.validateQuery(i);if(!a.isValid)return{result:`Invalid query — fix these errors and retry:\n${a.errors.join(`
|
|
23
23
|
`)}\n\nAttempted query:\n${JSON.stringify(i,null,2)}`,isError:!0};let o=!!(i.funnel||i.flow||i.retention),s;if(o)s=t.chartConfig??{};else{let e=T(r,t.chartConfig,i),n=S(r,e,i);if(!n.isValid)return{result:`Chart config invalid — fix these errors and retry:\n${n.errors.join(`
|
|
24
24
|
`)}`,isError:!0};s=e}let c=`portlet-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,l={id:c,title:t.title,query:t.query,chartType:r,chartConfig:s,displayConfig:t.displayConfig};return{result:`Portlet "${t.title}" added to notebook (id: ${c}, chart: ${r}). [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:l}}}),i.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}}}),i.set(`save_as_dashboard`,async t=>{try{let r=t.portlets;if(!r||r.length===0)return{result:`Dashboard must contain at least one portlet.`,isError:!0};let i=[];for(let t of r){if(t.chartType===`markdown`)continue;let r=t.query;if(!r){i.push(`Portlet "${t.title}": missing query`);continue}let a;try{a=JSON.parse(r)}catch{i.push(`Portlet "${t.title}": invalid JSON query`);continue}a=e.h(a);let o=n.validateQuery(a);o.isValid||i.push(`Portlet "${t.title}": ${o.errors.join(`, `)}`)}if(i.length>0)return{result:`Dashboard has invalid portlets — fix these errors and retry:\n${i.join(`
|
|
25
|
-
`)}`,isError:!0};let a={portlets:r.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:t.filters,colorPalette:t.colorPalette},o=t.title;return{result:`Dashboard "${o}" created with ${a.portlets.length} portlets and ${a.filters?.length||0} filters.`,sideEffect:{type:`dashboard_saved`,data:{title:o,description:t.description,dashboardConfig:a}}}}catch(e){return{result:`Failed to save dashboard: ${e instanceof Error?e.message:`Unknown error`}`,isError:!0}}}),i}async function A(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-
|
|
25
|
+
`)}`,isError:!0};let a={portlets:r.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:t.filters,colorPalette:t.colorPalette},o=t.title;return{result:`Dashboard "${o}" created with ${a.portlets.length} portlets and ${a.filters?.length||0} filters.`,sideEffect:{type:`dashboard_saved`,data:{title:o,description:t.description,dashboardConfig:a}}}}catch(e){return{result:`Failed to save dashboard: ${e instanceof Error?e.message:`Unknown error`}`,isError:!0}}}),i}async function A(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 j(e,t){if(Array.isArray(t))for(let n of t)e.push(n);else e.push(t)}function M(e){if(e)try{e()}catch{}}function N(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`}));j(n,t.formatToolResults(i))}else e.length>0&&n.push({role:`assistant`,content:r.content})}return n}function P(e,t){if(!(e?.type!==`tool_use`||!t))try{e.input=JSON.parse(t)}catch{e.input={}}}function F(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 I(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 L(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&&(P(t,e.currentToolInputJson),e.currentToolInputJson=``),e.currentBlockIsToolUse=!1}}async function*R(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`:F(n,e.text),yield{type:`text_delta`,data:e.text};break;case`tool_use_start`:I(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`:L(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*z(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}:{}}},M(()=>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}},M(()=>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*B(e,t){let n=[];for(let r of e){if(r.type!==`tool_use`)continue;let e=yield*z(r,t);n.push(e)}return n}var V={anthropic:`claude-sonnet-4-6`,openai:`gpt-4.1-mini`,google:`gemini-3-flash-preview`};async function*H(t){let{message:n,history:r,semanticLayer:i,securityContext:a,agentConfig:o,apiKey:c}=t,l=t.sessionId||crypto.randomUUID(),u=o.observability,d=crypto.randomUUID(),f=Date.now(),p=t.providerOverride||o.provider||`anthropic`,m=t.modelOverride||o.model||V[p]||`claude-sonnet-4-6`,h=t.baseURLOverride||o.baseURL,g=o.maxTurns||25,_=o.maxTokens||4096,v;try{v=await A(p,c,{baseURL:h})}catch(t){console.error(`[agent] Failed to create %s provider: %s`,String(p).replace(/\n|\r/g,``),String(t instanceof Error?t.message:t).replace(/\n|\r/g,``)),yield{type:`error`,data:{message:t instanceof Error?t.message:e.O(`server.errors.llmInitFailed`)}};return}let y=O(),b=k({semanticLayer:i,securityContext:a}),x=s(i.getMetadata());t.systemContext&&(x+=`\n\n## User Context\n\n${t.systemContext}`),M(()=>u?.onChatStart?.({traceId:d,sessionId:l,message:n,model:m,historyLength:r?.length??0}));let S=N(r,v);S.push({role:`user`,content:n});let C=0;try{for(let e=0;e<g;e++){C=e+1;let t=await v.createStream({model:m,maxTokens:_,system:x,tools:y,messages:S}),n=Date.now(),{contentBlocks:r,stopReason:i,inputTokens:a,outputTokens:o}=yield*R(v,t);if(M(()=>u?.onGenerationEnd?.({traceId:d,turn:e,model:m,stopReason:i,inputTokens:a,outputTokens:o,durationMs:Date.now()-n,input:S,output:r})),S.push({role:`assistant`,content:r}),!v.shouldContinue(i))break;let s=yield*B(r,{executor:b,observability:u,traceId:d,turn:e});yield{type:`turn_complete`,data:{}},j(S,v.formatToolResults(s))}M(()=>u?.onChatEnd?.({traceId:d,sessionId:l,totalTurns:C,durationMs:Date.now()-f})),yield{type:`done`,data:{sessionId:l||``,traceId:d}}}catch(e){try{u?.onChatEnd?.({traceId:d,sessionId:l,totalTurns:0,durationMs:Date.now()-f,error:e instanceof Error?e.message:`Unknown error`})}catch{}console.error(`[agent] Chat error (provider=%s, model=%s): %s`,String(p).replace(/\n|\r/g,``),String(m).replace(/\n|\r/g,``),String(e instanceof Error?e.message:e).replace(/\n|\r/g,``)),yield{type:`error`,data:{message:v.formatError(e)}}}}exports.handleAgentChat=H;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-_whV4fXL.cjs"),t=require("../locale-ZLUUNUxr.cjs"),n=require("../mcp-transport-B7ddET3M.cjs");let r=require("hono");var i=e=>{let t={origin:`*`,allowMethods:[`GET`,`HEAD`,`PUT`,`POST`,`DELETE`,`PATCH`],allowHeaders:[],exposeHeaders:[],...e},n=(e=>typeof e==`string`?e===`*`?()=>e:t=>e===t?t:null:typeof e==`function`?e:t=>e.includes(t)?t:null)(t.origin),r=(e=>typeof e==`function`?e:Array.isArray(e)?()=>e:()=>[])(t.allowMethods);return async function(e,i){function a(t,n){e.res.headers.set(t,n)}let o=await n(e.req.header(`origin`)||``,e);if(o&&a(`Access-Control-Allow-Origin`,o),t.credentials&&a(`Access-Control-Allow-Credentials`,`true`),t.exposeHeaders?.length&&a(`Access-Control-Expose-Headers`,t.exposeHeaders.join(`,`)),e.req.method===`OPTIONS`){t.origin!==`*`&&a(`Vary`,`Origin`),t.maxAge!=null&&a(`Access-Control-Max-Age`,t.maxAge.toString());let n=await r(e.req.header(`origin`)||``,e);n.length&&a(`Access-Control-Allow-Methods`,n.join(`,`));let i=t.allowHeaders;if(!i?.length){let t=e.req.header(`Access-Control-Request-Headers`);t&&(i=t.split(/\s*,\s*/))}return i?.length&&(a(`Access-Control-Allow-Headers`,i.join(`,`)),e.res.headers.append(`Vary`,`Access-Control-Request-Headers`)),e.res.headers.delete(`Content-Length`),e.res.headers.delete(`Content-Type`),new Response(null,{headers:e.res.headers,status:204,statusText:`No Content`})}await i(),t.origin!==`*`&&e.header(`Vary`,`Origin`,{append:!0})}};async function a(e,t){if(t.resourceMetadataUrl&&!n.u(e.req.header(`authorization`)))return e.header(`WWW-Authenticate`,n.c(t.resourceMetadataUrl)),{response:e.json({error:`Bearer token required`},401)};let r=n.S(e.req.header(`origin`),t.allowedOrigins?{allowedOrigins:t.allowedOrigins}:{});if(!r.valid)return{response:e.json(n.i(null,-32600,r.reason),403)};let i=e.req.header(`accept`);if(!n.x(i))return{response:e.json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`),400)};let a=n.h(e.req.header());if(!a.ok)return{response:e.json({error:`Unsupported MCP protocol version`,supported:a.supported},426)};let o=n.g(await e.req.json().catch(()=>null));return o?{rpcRequest:o,acceptHeader:i,negotiatedProtocol:a.negotiated}:{response:e.json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`),400)}}function o(e,t){let r=new TextEncoder,i=n._(),a=new ReadableStream({start(t){t.enqueue(r.encode(`id: ${i}\n\n`)),t.enqueue(r.encode(n.b(e,i))),t.close()}});return new Response(a,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...t}})}function s(e,t,n){let r=e&&t&&typeof t==`object`&&`sessionId`in t?t.sessionId:void 0;return r?{[n]:r}:{}}function c(e,t){let r=e?.code??-32603,i=e?.data,a=e.message||`MCP request failed`;return n.i(t??null,r,a,i)}function l(e){return n.C(e)}function u(e,t,r,i){if(n.m(t))return e.body(null,202);let a=n.a(t.id??null,r),c=s(t.method===`initialize`,r,n.r);return i?o(a,c):e.json(a,200,c)}function d(e,t,r,i){if(n.m(t))return console.error(`MCP notification processing error:`,r),e.body(null,202);console.error(`MCP RPC error:`,r);let a=c(r,t.id);return i?o(a):e.json(a,200)}async function f(e,t,r,i){try{return u(e,t,await n.l(t.method,t.params,i),r)}catch(n){return d(e,t,n,r)}}function p(e,t){let n=(t.apiKey||``).trim();if(t.allowClientApiKey){let t=e.req.header(`x-agent-api-key`);t&&(n=t.trim())}return n}function m(e,t){return t.allowClientApiKey?{providerOverride:e.req.header(`x-agent-provider`),modelOverride:e.req.header(`x-agent-model`),baseURLOverride:e.req.header(`x-agent-provider-endpoint`)}:{}}function h(e){let t=new TextEncoder,n=new ReadableStream({async start(n){try{for await(let r of e)n.enqueue(t.encode(`data: ${JSON.stringify(r)}\n\n`))}catch(e){let r={type:`error`,data:{message:e instanceof Error?e.message:`Stream failed`}};n.enqueue(t.encode(`data: ${JSON.stringify(r)}\n\n`))}finally{n.close()}}});return new Response(n,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}})}async function g(e,t,n,r){try{let{handleAgentChat:i}=await Promise.resolve().then(()=>require("../handler-Cn0dOctE.cjs")),{message:a,sessionId:o,history:s}=await e.req.json();if(!a||typeof a!=`string`)return e.json({error:`message is required and must be a string`},400);let c=p(e,t);if(!c)return e.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},401);let{providerOverride:l,modelOverride:u,baseURLOverride:d}=m(e,t),f=await r(e),g=t.buildSystemContext?.(f);return h(i({message:a,sessionId:o,history:s,semanticLayer:n,securityContext:f,agentConfig:t,apiKey:c,systemContext:g,providerOverride:l,modelOverride:u,baseURLOverride:d}))}catch(t){return console.error(`Agent chat error:`,t),e.json({error:t instanceof Error?t.message:`Agent chat failed`},500)}}function _(o){let{cubes:s,drizzle:c,schema:u,extractSecurityContext:d,engineType:p,cors:m,basePath:h=`/cubejs-api/v1`,cache:_,mcp:v={enabled:!0},agent:y}=o;if(!o.semanticLayer&&(!s||s.length===0))throw Error(`Either semanticLayer or a non-empty cubes array must be provided`);let b=new r.Hono,x=async e=>t.r(await d(e),t.n(t=>e.req.header(t)));if(m){let e={...m,allowHeaders:t.t(m.allowHeaders)};b.use(`/*`,i(e))}let S=o.semanticLayer??new t.i({drizzle:c,schema:u,engineType:p,cache:_,rlsSetup:o.rlsSetup});if(!o.semanticLayer&&s&&s.forEach(e=>{S.registerCube(e)}),b.post(`${h}/load`,async t=>{try{let n=await t.req.json(),r=n.query||n,i=await x(t),a=S.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=t.req.header(`x-cache-control`)===`no-cache`,s=await S.executeMultiCubeQuery(r,i,{skipCache:o});return t.json(e.r(r,s,S))}catch(e){return console.error(`Query execution error:`,e),t.json({error:e instanceof Error?e.message:`Query execution failed`},500)}}),b.get(`${h}/load`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`},400);let r;try{r=JSON.parse(n)}catch{return t.json({error:`Invalid JSON in query parameter`},400)}let i=await x(t),a=S.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=t.req.header(`x-cache-control`)===`no-cache`,s=await S.executeMultiCubeQuery(r,i,{skipCache:o});return t.json(e.r(r,s,S))}catch(e){return console.error(`Query execution error:`,e),t.json({error:e instanceof Error?e.message:`Query execution failed`},500)}}),b.post(`${h}/batch`,async t=>{try{let{queries:n}=await t.req.json();if(!n||!Array.isArray(n))return t.json({error:`Request body must contain a "queries" array`},400);if(n.length===0)return t.json({error:`Queries array cannot be empty`},400);let r=await e.l(n,await x(t),S,{skipCache:t.req.header(`x-cache-control`)===`no-cache`});return t.json(r)}catch(e){return console.error(`Batch execution error:`,e),t.json({error:e instanceof Error?e.message:`Batch execution failed`},500)}}),b.get(`${h}/meta`,t=>{try{let n=S.getMetadata();return t.json(e.a(n))}catch(e){return console.error(`Metadata error:`,e),t.json({error:e instanceof Error?e.message:`Failed to fetch metadata`},500)}}),b.post(`${h}/sql`,async t=>{try{let n=await t.req.json(),r=await x(t),i=S.validateQuery(n);if(!i.isValid)return t.json({error:`Query validation failed: ${i.errors.join(`, `)}`},400);let a=n.measures?.[0]||n.dimensions?.[0];if(!a)return t.json({error:`No measures or dimensions specified`},400);let o=a.split(`.`)[0],s=await S.generateSQL(o,n,r);return t.json(e.o(n,s))}catch(e){return console.error(`SQL generation error:`,e),t.json({error:e instanceof Error?e.message:`SQL generation failed`},500)}}),b.get(`${h}/sql`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`},400);let r=JSON.parse(n),i=await x(t),a=S.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=r.measures?.[0]||r.dimensions?.[0];if(!o)return t.json({error:`No measures or dimensions specified`},400);let s=o.split(`.`)[0],c=await S.generateSQL(s,r,i);return t.json(e.o(r,c))}catch(e){return console.error(`SQL generation error:`,e),t.json({error:e instanceof Error?e.message:`SQL generation failed`},500)}}),b.post(`${h}/dry-run`,async t=>{try{let n=await t.req.json(),r=await e.u(n.query||n,await x(t),S);return t.json(r)}catch(e){return console.error(`Dry-run error:`,e),t.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},400)}}),b.get(`${h}/dry-run`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`,valid:!1},400);let r=await e.u(JSON.parse(n),await x(t),S);return t.json(r)}catch(e){return console.error(`Dry-run error:`,e),t.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},400)}}),b.post(`${h}/explain`,async e=>{try{let t=await e.req.json(),n=t.query||t,r=t.options||{},i=await x(e),a=S.validateQuery(n);if(!a.isValid)return e.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=await S.explainQuery(n,i,r);return e.json(o)}catch(t){return console.error(`Explain error:`,t),e.json({error:t instanceof Error?t.message:`Explain query failed`},500)}}),y&&b.post(`${h}/agent/chat`,e=>g(e,y,S,x)),v.enabled!==!1){let e=n.o(S,v.resources),t=n.y(v.prompts),r=n.v(v.instructions),i=v.basePath??`/mcp`;b.post(`${i}`,async n=>{let i=await a(n,v);if(i.response)return i.response;let o=i.rpcRequest;return f(n,o,l(i.acceptHeader),{semanticLayer:S,extractSecurityContext:(e,t)=>x(e),rawRequest:n,rawResponse:null,negotiatedProtocol:i.negotiatedProtocol,resources:e,prompts:t,instructions:r,appEnabled:!!v.app,appConfig:typeof v.app==`object`?v.app:void 0,serverName:v.serverName})}),b.delete(`${i}`,e=>v.resourceMetadataUrl&&!n.u(e.req.header(`authorization`))?(e.header(`WWW-Authenticate`,n.c(v.resourceMetadataUrl)),e.json({error:`Bearer token required`},401)):e.json({error:`Session termination not supported`},405)),b.get(`${i}`,e=>{if(v.resourceMetadataUrl&&!n.u(e.req.header(`authorization`)))return e.header(`WWW-Authenticate`,n.c(v.resourceMetadataUrl)),e.json({error:`Bearer token required`},401);let t=new TextEncoder,r=n._(),i,a=new ReadableStream({start(e){e.enqueue(t.encode(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},r,15e3))),i=setInterval(()=>{e.enqueue(t.encode(`: keep-alive
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-_whV4fXL.cjs"),t=require("../locale-ZLUUNUxr.cjs"),n=require("../mcp-transport-B7ddET3M.cjs");let r=require("hono");var i=e=>{let t={origin:`*`,allowMethods:[`GET`,`HEAD`,`PUT`,`POST`,`DELETE`,`PATCH`],allowHeaders:[],exposeHeaders:[],...e},n=(e=>typeof e==`string`?e===`*`?()=>e:t=>e===t?t:null:typeof e==`function`?e:t=>e.includes(t)?t:null)(t.origin),r=(e=>typeof e==`function`?e:Array.isArray(e)?()=>e:()=>[])(t.allowMethods);return async function(e,i){function a(t,n){e.res.headers.set(t,n)}let o=await n(e.req.header(`origin`)||``,e);if(o&&a(`Access-Control-Allow-Origin`,o),t.credentials&&a(`Access-Control-Allow-Credentials`,`true`),t.exposeHeaders?.length&&a(`Access-Control-Expose-Headers`,t.exposeHeaders.join(`,`)),e.req.method===`OPTIONS`){t.origin!==`*`&&a(`Vary`,`Origin`),t.maxAge!=null&&a(`Access-Control-Max-Age`,t.maxAge.toString());let n=await r(e.req.header(`origin`)||``,e);n.length&&a(`Access-Control-Allow-Methods`,n.join(`,`));let i=t.allowHeaders;if(!i?.length){let t=e.req.header(`Access-Control-Request-Headers`);t&&(i=t.split(/\s*,\s*/))}return i?.length&&(a(`Access-Control-Allow-Headers`,i.join(`,`)),e.res.headers.append(`Vary`,`Access-Control-Request-Headers`)),e.res.headers.delete(`Content-Length`),e.res.headers.delete(`Content-Type`),new Response(null,{headers:e.res.headers,status:204,statusText:`No Content`})}await i(),t.origin!==`*`&&e.header(`Vary`,`Origin`,{append:!0})}};async function a(e,t){if(t.resourceMetadataUrl&&!n.u(e.req.header(`authorization`)))return e.header(`WWW-Authenticate`,n.c(t.resourceMetadataUrl)),{response:e.json({error:`Bearer token required`},401)};let r=n.S(e.req.header(`origin`),t.allowedOrigins?{allowedOrigins:t.allowedOrigins}:{});if(!r.valid)return{response:e.json(n.i(null,-32600,r.reason),403)};let i=e.req.header(`accept`);if(!n.x(i))return{response:e.json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`),400)};let a=n.h(e.req.header());if(!a.ok)return{response:e.json({error:`Unsupported MCP protocol version`,supported:a.supported},426)};let o=n.g(await e.req.json().catch(()=>null));return o?{rpcRequest:o,acceptHeader:i,negotiatedProtocol:a.negotiated}:{response:e.json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`),400)}}function o(e,t){let r=new TextEncoder,i=n._(),a=new ReadableStream({start(t){t.enqueue(r.encode(`id: ${i}\n\n`)),t.enqueue(r.encode(n.b(e,i))),t.close()}});return new Response(a,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...t}})}function s(e,t,n){let r=e&&t&&typeof t==`object`&&`sessionId`in t?t.sessionId:void 0;return r?{[n]:r}:{}}function c(e,t){let r=e?.code??-32603,i=e?.data,a=e.message||`MCP request failed`;return n.i(t??null,r,a,i)}function l(e){return n.C(e)}function u(e,t,r,i){if(n.m(t))return e.body(null,202);let a=n.a(t.id??null,r),c=s(t.method===`initialize`,r,n.r);return i?o(a,c):e.json(a,200,c)}function d(e,t,r,i){if(n.m(t))return console.error(`MCP notification processing error:`,r),e.body(null,202);console.error(`MCP RPC error:`,r);let a=c(r,t.id);return i?o(a):e.json(a,200)}async function f(e,t,r,i){try{return u(e,t,await n.l(t.method,t.params,i),r)}catch(n){return d(e,t,n,r)}}function p(e,t){let n=(t.apiKey||``).trim();if(t.allowClientApiKey){let t=e.req.header(`x-agent-api-key`);t&&(n=t.trim())}return n}function m(e,t){return t.allowClientApiKey?{providerOverride:e.req.header(`x-agent-provider`),modelOverride:e.req.header(`x-agent-model`),baseURLOverride:e.req.header(`x-agent-provider-endpoint`)}:{}}function h(e){let t=new TextEncoder,n=new ReadableStream({async start(n){try{for await(let r of e)n.enqueue(t.encode(`data: ${JSON.stringify(r)}\n\n`))}catch(e){let r={type:`error`,data:{message:e instanceof Error?e.message:`Stream failed`}};n.enqueue(t.encode(`data: ${JSON.stringify(r)}\n\n`))}finally{n.close()}}});return new Response(n,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}})}async function g(e,t,n,r){try{let{handleAgentChat:i}=await Promise.resolve().then(()=>require("../handler-OwxSBJH8.cjs")),{message:a,sessionId:o,history:s}=await e.req.json();if(!a||typeof a!=`string`)return e.json({error:`message is required and must be a string`},400);let c=p(e,t);if(!c)return e.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},401);let{providerOverride:l,modelOverride:u,baseURLOverride:d}=m(e,t),f=await r(e),g=t.buildSystemContext?.(f);return h(i({message:a,sessionId:o,history:s,semanticLayer:n,securityContext:f,agentConfig:t,apiKey:c,systemContext:g,providerOverride:l,modelOverride:u,baseURLOverride:d}))}catch(t){return console.error(`Agent chat error:`,t),e.json({error:t instanceof Error?t.message:`Agent chat failed`},500)}}function _(o){let{cubes:s,drizzle:c,schema:u,extractSecurityContext:d,engineType:p,cors:m,basePath:h=`/cubejs-api/v1`,cache:_,mcp:v={enabled:!0},agent:y}=o;if(!o.semanticLayer&&(!s||s.length===0))throw Error(`Either semanticLayer or a non-empty cubes array must be provided`);let b=new r.Hono,x=async e=>t.r(await d(e),t.n(t=>e.req.header(t)));if(m){let e={...m,allowHeaders:t.t(m.allowHeaders)};b.use(`/*`,i(e))}let S=o.semanticLayer??new t.i({drizzle:c,schema:u,engineType:p,cache:_,rlsSetup:o.rlsSetup});if(!o.semanticLayer&&s&&s.forEach(e=>{S.registerCube(e)}),b.post(`${h}/load`,async t=>{try{let n=await t.req.json(),r=n.query||n,i=await x(t),a=S.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=t.req.header(`x-cache-control`)===`no-cache`,s=await S.executeMultiCubeQuery(r,i,{skipCache:o});return t.json(e.r(r,s,S))}catch(e){return console.error(`Query execution error:`,e),t.json({error:e instanceof Error?e.message:`Query execution failed`},500)}}),b.get(`${h}/load`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`},400);let r;try{r=JSON.parse(n)}catch{return t.json({error:`Invalid JSON in query parameter`},400)}let i=await x(t),a=S.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=t.req.header(`x-cache-control`)===`no-cache`,s=await S.executeMultiCubeQuery(r,i,{skipCache:o});return t.json(e.r(r,s,S))}catch(e){return console.error(`Query execution error:`,e),t.json({error:e instanceof Error?e.message:`Query execution failed`},500)}}),b.post(`${h}/batch`,async t=>{try{let{queries:n}=await t.req.json();if(!n||!Array.isArray(n))return t.json({error:`Request body must contain a "queries" array`},400);if(n.length===0)return t.json({error:`Queries array cannot be empty`},400);let r=await e.l(n,await x(t),S,{skipCache:t.req.header(`x-cache-control`)===`no-cache`});return t.json(r)}catch(e){return console.error(`Batch execution error:`,e),t.json({error:e instanceof Error?e.message:`Batch execution failed`},500)}}),b.get(`${h}/meta`,t=>{try{let n=S.getMetadata();return t.json(e.a(n))}catch(e){return console.error(`Metadata error:`,e),t.json({error:e instanceof Error?e.message:`Failed to fetch metadata`},500)}}),b.post(`${h}/sql`,async t=>{try{let n=await t.req.json(),r=await x(t),i=S.validateQuery(n);if(!i.isValid)return t.json({error:`Query validation failed: ${i.errors.join(`, `)}`},400);let a=n.measures?.[0]||n.dimensions?.[0];if(!a)return t.json({error:`No measures or dimensions specified`},400);let o=a.split(`.`)[0],s=await S.generateSQL(o,n,r);return t.json(e.o(n,s))}catch(e){return console.error(`SQL generation error:`,e),t.json({error:e instanceof Error?e.message:`SQL generation failed`},500)}}),b.get(`${h}/sql`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`},400);let r=JSON.parse(n),i=await x(t),a=S.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=r.measures?.[0]||r.dimensions?.[0];if(!o)return t.json({error:`No measures or dimensions specified`},400);let s=o.split(`.`)[0],c=await S.generateSQL(s,r,i);return t.json(e.o(r,c))}catch(e){return console.error(`SQL generation error:`,e),t.json({error:e instanceof Error?e.message:`SQL generation failed`},500)}}),b.post(`${h}/dry-run`,async t=>{try{let n=await t.req.json(),r=await e.u(n.query||n,await x(t),S);return t.json(r)}catch(e){return console.error(`Dry-run error:`,e),t.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},400)}}),b.get(`${h}/dry-run`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`,valid:!1},400);let r=await e.u(JSON.parse(n),await x(t),S);return t.json(r)}catch(e){return console.error(`Dry-run error:`,e),t.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},400)}}),b.post(`${h}/explain`,async e=>{try{let t=await e.req.json(),n=t.query||t,r=t.options||{},i=await x(e),a=S.validateQuery(n);if(!a.isValid)return e.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=await S.explainQuery(n,i,r);return e.json(o)}catch(t){return console.error(`Explain error:`,t),e.json({error:t instanceof Error?t.message:`Explain query failed`},500)}}),y&&b.post(`${h}/agent/chat`,e=>g(e,y,S,x)),v.enabled!==!1){let e=n.o(S,v.resources),t=n.y(v.prompts),r=n.v(v.instructions),i=v.basePath??`/mcp`;b.post(`${i}`,async n=>{let i=await a(n,v);if(i.response)return i.response;let o=i.rpcRequest;return f(n,o,l(i.acceptHeader),{semanticLayer:S,extractSecurityContext:(e,t)=>x(e),rawRequest:n,rawResponse:null,negotiatedProtocol:i.negotiatedProtocol,resources:e,prompts:t,instructions:r,appEnabled:!!v.app,appConfig:typeof v.app==`object`?v.app:void 0,serverName:v.serverName})}),b.delete(`${i}`,e=>v.resourceMetadataUrl&&!n.u(e.req.header(`authorization`))?(e.header(`WWW-Authenticate`,n.c(v.resourceMetadataUrl)),e.json({error:`Bearer token required`},401)):e.json({error:`Session termination not supported`},405)),b.get(`${i}`,e=>{if(v.resourceMetadataUrl&&!n.u(e.req.header(`authorization`)))return e.header(`WWW-Authenticate`,n.c(v.resourceMetadataUrl)),e.json({error:`Bearer token required`},401);let t=new TextEncoder,r=n._(),i,a=new ReadableStream({start(e){e.enqueue(t.encode(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},r,15e3))),i=setInterval(()=>{e.enqueue(t.encode(`: keep-alive
|
|
2
2
|
|
|
3
3
|
`))},15e3)},cancel(){clearInterval(i)}});return new Response(a,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}})})}return b}function v(e,t){let n=_(t);return e.route(`/`,n),e}function y(e){return v(new r.Hono,e)}exports.createCubeApp=y,exports.createCubeRoutes=_,exports.mountCubeRoutes=v;
|
|
@@ -146,7 +146,7 @@ function R(e) {
|
|
|
146
146
|
}
|
|
147
147
|
async function z(e, t, n, r) {
|
|
148
148
|
try {
|
|
149
|
-
let { handleAgentChat: i } = await import("../handler-
|
|
149
|
+
let { handleAgentChat: i } = await import("../handler-CtaSua-i.js"), { message: a, sessionId: o, history: s } = await e.req.json();
|
|
150
150
|
if (!a || typeof a != "string") return e.json({ error: "message is required and must be a string" }, 400);
|
|
151
151
|
let c = I(e, t);
|
|
152
152
|
if (!c) return e.json({ error: "No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header." }, 401);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-_whV4fXL.cjs"),t=require("../locale-ZLUUNUxr.cjs"),n=require("../mcp-transport-B7ddET3M.cjs");let r=require("next/server");function i(e,t){let i=new TextEncoder,a=n._(),o=new ReadableStream({start(e){e.enqueue(i.encode(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},a,15e3)))}}),s=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});return t(e,s),new r.NextResponse(o,{status:200,headers:s})}async function a(e,t){let i=n.S(e.headers.get(`origin`),t.allowedOrigins?{allowedOrigins:t.allowedOrigins}:{});if(!i.valid)return{response:r.NextResponse.json(n.i(null,-32600,i.reason),{status:403})};let a=e.headers.get(`accept`);if(!n.x(a))return{response:r.NextResponse.json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`),{status:400})};let o=n.h(Object.fromEntries(e.headers.entries()));if(!o.ok)return{response:r.NextResponse.json({error:`Unsupported MCP protocol version`,supported:o.supported},{status:426})};let s;try{s=await e.json()}catch{s=null}let c=n.g(s);return c?{rpcRequest:c,acceptHeader:a}:{response:r.NextResponse.json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`),{status:400})}}function o(e,t,i,a={}){let o=new TextEncoder,s=n._(),c=new ReadableStream({start(e){e.enqueue(o.encode(`id: ${s}\n\n`)),e.enqueue(o.encode(n.b(t,s))),e.close()}}),l=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...a});return i(e,l),new r.NextResponse(c,{status:200,headers:l})}function s(e,t,n){let r=e&&t&&typeof t==`object`&&`sessionId`in t?t.sessionId:void 0;return r?{[n]:r}:{}}function c(e,t){let r=e?.code??-32603,i=e?.data,a=e.message||`MCP request failed`;return n.i(t??null,r,a,i)}function l(e){let{cubes:n,drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s}=e;if(!n||n.length===0)throw Error(`At least one cube must be provided in the cubes array`);let c=new t.i({drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s});return n.forEach(e=>{c.registerCube(e)}),c}function u(e){return{extractSecurityContext:async(n,r)=>t.r(await e.extractSecurityContext(n,r),t.n(e=>n.headers.get(e))),cors:e.cors?{...e.cors,allowedHeaders:t.t(e.cors.allowedHeaders)}:void 0}}function d(e,t){let n=e.headers.get(`origin`),r={};return t.origin&&(typeof t.origin==`string`?r[`Access-Control-Allow-Origin`]=t.origin:Array.isArray(t.origin)?n&&t.origin.includes(n)&&(r[`Access-Control-Allow-Origin`]=n):typeof t.origin==`function`&&n&&t.origin(n)&&(r[`Access-Control-Allow-Origin`]=n)),t.methods&&(r[`Access-Control-Allow-Methods`]=t.methods.join(`, `)),t.allowedHeaders&&(r[`Access-Control-Allow-Headers`]=t.allowedHeaders.join(`, `)),t.credentials&&(r[`Access-Control-Allow-Credentials`]=`true`),r}function f(e){return async function(n){let r=d(n,{...e,allowedHeaders:t.t(e.allowedHeaders)});return new Response(null,{status:200,headers:r})}}function p(t){let{extractSecurityContext:n,cors:i}=u(t),a=l(t);return async function(t,o){try{let s;if(t.method===`POST`){let e=await t.json();s=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{s=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let c=await n(t,o),l=a.validateQuery(s);if(!l.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${l.errors.join(`, `)}`,400),{status:400});let u=t.headers.get(`x-cache-control`)===`no-cache`,f=await a.executeMultiCubeQuery(s,c,{skipCache:u}),p=e.r(s,f,a);return r.NextResponse.json(p,{headers:i?d(t,i):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function m(t){let{cors:n}=u(t),i=l(t);return async function(t,a){try{let a=e.a(i.getMetadata());return r.NextResponse.json(a,{headers:n?d(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js meta handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Failed to fetch metadata`,500),{status:500})}}}function h(t){let{extractSecurityContext:n,cors:i}=u(t),a=l(t);return async function(t,o){try{let s;if(t.method===`POST`){let e=await t.json();s=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{s=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let c=await n(t,o),l=a.validateQuery(s);if(!l.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${l.errors.join(`, `)}`,400),{status:400});let u=s.measures?.[0]||s.dimensions?.[0];if(!u)return r.NextResponse.json(e.i(`No measures or dimensions specified`,400),{status:400});let f=u.split(`.`)[0],p=await a.generateSQL(f,s,c),m=e.o(s,p);return r.NextResponse.json(m,{headers:i?d(t,i):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js SQL handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`SQL generation failed`,500),{status:500})}}}function g(t){let{extractSecurityContext:n,cors:i}=u(t),a=l(t);return async function(t,o){try{let s;if(t.method===`POST`){let e=await t.json();s=e.query||e}else if(t.method===`GET`){let e=t.nextUrl.searchParams.get(`query`);if(!e)return r.NextResponse.json({error:`Query parameter is required`,valid:!1},{status:400});try{s=JSON.parse(e)}catch{return r.NextResponse.json({error:`Invalid JSON in query parameter`,valid:!1},{status:400})}}else return r.NextResponse.json({error:`Method not allowed`,valid:!1},{status:405});let c=await n(t,o),l=await e.u(s,c,a);return r.NextResponse.json(l,{headers:i?d(t,i):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js dry-run handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},{status:400})}}}function _(t){let{extractSecurityContext:n,cors:i}=u(t),a=l(t);return async function(t,o){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let{queries:s}=await t.json();if(!s||!Array.isArray(s))return r.NextResponse.json(e.i(`Request body must contain a "queries" array`,400),{status:400});if(s.length===0)return r.NextResponse.json(e.i(`Queries array cannot be empty`,400),{status:400});let c=await e.l(s,await n(t,o),a,{skipCache:t.headers.get(`x-cache-control`)===`no-cache`});return r.NextResponse.json(c,{headers:i?d(t,i):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js batch handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Batch execution failed`,500),{status:500})}}}function v(e){let{extractSecurityContext:t,cors:n}=u(e),i=l(e);return async function(e,a){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed`},{status:405});let o=await e.json(),s=o.query||o,c=o.options||{},l=await t(e,a),u=i.validateQuery(s);if(!u.isValid)return r.NextResponse.json({error:`Query validation failed: ${u.errors.join(`, `)}`},{status:400});let f=await i.explainQuery(s,l,c);return r.NextResponse.json(f,{headers:n?d(e,n):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js explain handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Explain query failed`},{status:500})}}}function y(t){let{cors:n}=u(t),i=l(t);return async function(t,a){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await e.p(i,await t.json());return r.NextResponse.json(a,{headers:n?d(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js discover handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Discovery failed`,500),{status:500})}}}function b(t){let{cors:n}=u(t),i=l(t);return async function(t,a){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await t.json();if(!a.naturalLanguage)return r.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let o=await e.d(i,a);return r.NextResponse.json(o,{headers:n?d(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js suggest handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query suggestion failed`,500),{status:500})}}}function x(t){let{cors:n}=u(t),i=l(t);return async function(t,a){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await t.json();if(!a.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let o=await e.f(i,a);return r.NextResponse.json(o,{headers:n?d(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js validate handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query validation failed`,500),{status:500})}}}function S(t){let{extractSecurityContext:n,cors:i}=u(t),a=l(t);return async function(t,o){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let s=await t.json();if(!s.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let c=await e.m(a,await n(t,o),s);return r.NextResponse.json(c,{headers:i?d(t,i):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function C(t){let{extractSecurityContext:f,cors:p}=u(t),{mcp:m={enabled:!0}}=t,h=l(t),g=n.o(h,m.resources),_=n.y(m.prompts),v=n.v(m.instructions),y=(e,t)=>{if(!p)return;let n=d(e,p);Object.entries(n).forEach(([e,n])=>t.set(e,n))},b=async e=>{let t=await a(e,m);if(t.response)return t.response;let i=t.rpcRequest,l=n.C(t.acceptHeader),u=i.method===`initialize`,b=(t,n=200,i={})=>r.NextResponse.json(t,{status:n,headers:{...p?d(e,p):{},...i}});try{let t=await n.l(i.method,i.params,{semanticLayer:h,extractSecurityContext:e=>f(e),rawRequest:e,rawResponse:null,resources:g,prompts:_,instructions:v,appEnabled:!!m.app,appConfig:typeof m.app==`object`?m.app:void 0,serverName:m.serverName});if(n.m(i))return new r.NextResponse(null,{status:202});let a=s(u,t,n.r),c=n.a(i.id??null,t);return l?o(e,c,y,a):b(c,200,a)}catch(t){if(n.m(i))return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP notification processing error:`,t),new r.NextResponse(null,{status:202});process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP RPC handler error:`,t);let a=c(t,i.id);return l?o(e,a,y):b(a,200)}};return async function(t){return m.resourceMetadataUrl&&!n.u(t.headers.get(`authorization`))?r.NextResponse.json({error:`Bearer token required`},{status:401,headers:{"WWW-Authenticate":n.c(m.resourceMetadataUrl)}}):t.method===`DELETE`?r.NextResponse.json({error:`Session termination not supported`},{status:405}):t.method===`GET`?i(t,y):t.method===`POST`?b(t):r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405})}}function w(e){let{extractSecurityContext:t,cors:n}=u(e),{agent:i}=e;if(!i)throw Error(`agent config is required for createAgentChatHandler`);let a=l(e);return async function(e,o){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed - use POST`},{status:405});let{handleAgentChat:s}=await Promise.resolve().then(()=>require("../handler-Cn0dOctE.cjs")),{message:c,sessionId:l,history:u}=await e.json();if(!c||typeof c!=`string`)return r.NextResponse.json({error:`message is required and must be a string`},{status:400});let f=(i.apiKey||``).trim();if(i.allowClientApiKey){let t=e.headers.get(`x-agent-api-key`);t&&(f=t.trim())}if(!f)return r.NextResponse.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},{status:401});let p=i.allowClientApiKey&&e.headers.get(`x-agent-provider`)||void 0,m=i.allowClientApiKey&&e.headers.get(`x-agent-model`)||void 0,h=i.allowClientApiKey&&e.headers.get(`x-agent-provider-endpoint`)||void 0,g=await t(e,o),_=i.buildSystemContext?.(g),v=new TextEncoder,y=new ReadableStream({async start(e){try{let t=s({message:c,sessionId:l,history:u,semanticLayer:a,securityContext:g,agentConfig:i,apiKey:f,systemContext:_,providerOverride:p,modelOverride:m,baseURLOverride:h});for await(let n of t){let t=`data: ${JSON.stringify(n)}\n\n`;e.enqueue(v.encode(t))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(v.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}}),b=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(n){let t=d(e,n);Object.entries(t).forEach(([e,t])=>b.set(e,t))}return new Response(y,{status:200,headers:b})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js agent chat handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Agent chat failed`},{status:500})}}}function T(e){let{mcp:t={enabled:!0}}=e,n={load:p(e),meta:m(e),sql:h(e),dryRun:g(e),batch:_(e),explain:v(e)};return t.enabled!==!1&&(n.mcpRpc=C(e)),e.agent&&(n.agentChat=w(e)),n}exports.createAgentChatHandler=w,exports.createBatchHandler=_,exports.createCubeHandlers=T,exports.createDiscoverHandler=y,exports.createDryRunHandler=g,exports.createExplainHandler=v,exports.createLoadHandler=p,exports.createMcpLoadHandler=S,exports.createMcpRpcHandler=C,exports.createMetaHandler=m,exports.createOptionsHandler=f,exports.createSqlHandler=h,exports.createSuggestHandler=b,exports.createValidateHandler=x;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-_whV4fXL.cjs"),t=require("../locale-ZLUUNUxr.cjs"),n=require("../mcp-transport-B7ddET3M.cjs");let r=require("next/server");function i(e,t){let i=new TextEncoder,a=n._(),o=new ReadableStream({start(e){e.enqueue(i.encode(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},a,15e3)))}}),s=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});return t(e,s),new r.NextResponse(o,{status:200,headers:s})}async function a(e,t){let i=n.S(e.headers.get(`origin`),t.allowedOrigins?{allowedOrigins:t.allowedOrigins}:{});if(!i.valid)return{response:r.NextResponse.json(n.i(null,-32600,i.reason),{status:403})};let a=e.headers.get(`accept`);if(!n.x(a))return{response:r.NextResponse.json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`),{status:400})};let o=n.h(Object.fromEntries(e.headers.entries()));if(!o.ok)return{response:r.NextResponse.json({error:`Unsupported MCP protocol version`,supported:o.supported},{status:426})};let s;try{s=await e.json()}catch{s=null}let c=n.g(s);return c?{rpcRequest:c,acceptHeader:a}:{response:r.NextResponse.json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`),{status:400})}}function o(e,t,i,a={}){let o=new TextEncoder,s=n._(),c=new ReadableStream({start(e){e.enqueue(o.encode(`id: ${s}\n\n`)),e.enqueue(o.encode(n.b(t,s))),e.close()}}),l=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...a});return i(e,l),new r.NextResponse(c,{status:200,headers:l})}function s(e,t,n){let r=e&&t&&typeof t==`object`&&`sessionId`in t?t.sessionId:void 0;return r?{[n]:r}:{}}function c(e,t){let r=e?.code??-32603,i=e?.data,a=e.message||`MCP request failed`;return n.i(t??null,r,a,i)}function l(e){let{cubes:n,drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s}=e;if(!n||n.length===0)throw Error(`At least one cube must be provided in the cubes array`);let c=new t.i({drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s});return n.forEach(e=>{c.registerCube(e)}),c}function u(e){return{extractSecurityContext:async(n,r)=>t.r(await e.extractSecurityContext(n,r),t.n(e=>n.headers.get(e))),cors:e.cors?{...e.cors,allowedHeaders:t.t(e.cors.allowedHeaders)}:void 0}}function d(e,t){let n=e.headers.get(`origin`),r={};return t.origin&&(typeof t.origin==`string`?r[`Access-Control-Allow-Origin`]=t.origin:Array.isArray(t.origin)?n&&t.origin.includes(n)&&(r[`Access-Control-Allow-Origin`]=n):typeof t.origin==`function`&&n&&t.origin(n)&&(r[`Access-Control-Allow-Origin`]=n)),t.methods&&(r[`Access-Control-Allow-Methods`]=t.methods.join(`, `)),t.allowedHeaders&&(r[`Access-Control-Allow-Headers`]=t.allowedHeaders.join(`, `)),t.credentials&&(r[`Access-Control-Allow-Credentials`]=`true`),r}function f(e){return async function(n){let r=d(n,{...e,allowedHeaders:t.t(e.allowedHeaders)});return new Response(null,{status:200,headers:r})}}function p(t){let{extractSecurityContext:n,cors:i}=u(t),a=l(t);return async function(t,o){try{let s;if(t.method===`POST`){let e=await t.json();s=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{s=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let c=await n(t,o),l=a.validateQuery(s);if(!l.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${l.errors.join(`, `)}`,400),{status:400});let u=t.headers.get(`x-cache-control`)===`no-cache`,f=await a.executeMultiCubeQuery(s,c,{skipCache:u}),p=e.r(s,f,a);return r.NextResponse.json(p,{headers:i?d(t,i):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function m(t){let{cors:n}=u(t),i=l(t);return async function(t,a){try{let a=e.a(i.getMetadata());return r.NextResponse.json(a,{headers:n?d(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js meta handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Failed to fetch metadata`,500),{status:500})}}}function h(t){let{extractSecurityContext:n,cors:i}=u(t),a=l(t);return async function(t,o){try{let s;if(t.method===`POST`){let e=await t.json();s=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{s=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let c=await n(t,o),l=a.validateQuery(s);if(!l.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${l.errors.join(`, `)}`,400),{status:400});let u=s.measures?.[0]||s.dimensions?.[0];if(!u)return r.NextResponse.json(e.i(`No measures or dimensions specified`,400),{status:400});let f=u.split(`.`)[0],p=await a.generateSQL(f,s,c),m=e.o(s,p);return r.NextResponse.json(m,{headers:i?d(t,i):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js SQL handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`SQL generation failed`,500),{status:500})}}}function g(t){let{extractSecurityContext:n,cors:i}=u(t),a=l(t);return async function(t,o){try{let s;if(t.method===`POST`){let e=await t.json();s=e.query||e}else if(t.method===`GET`){let e=t.nextUrl.searchParams.get(`query`);if(!e)return r.NextResponse.json({error:`Query parameter is required`,valid:!1},{status:400});try{s=JSON.parse(e)}catch{return r.NextResponse.json({error:`Invalid JSON in query parameter`,valid:!1},{status:400})}}else return r.NextResponse.json({error:`Method not allowed`,valid:!1},{status:405});let c=await n(t,o),l=await e.u(s,c,a);return r.NextResponse.json(l,{headers:i?d(t,i):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js dry-run handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},{status:400})}}}function _(t){let{extractSecurityContext:n,cors:i}=u(t),a=l(t);return async function(t,o){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let{queries:s}=await t.json();if(!s||!Array.isArray(s))return r.NextResponse.json(e.i(`Request body must contain a "queries" array`,400),{status:400});if(s.length===0)return r.NextResponse.json(e.i(`Queries array cannot be empty`,400),{status:400});let c=await e.l(s,await n(t,o),a,{skipCache:t.headers.get(`x-cache-control`)===`no-cache`});return r.NextResponse.json(c,{headers:i?d(t,i):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js batch handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Batch execution failed`,500),{status:500})}}}function v(e){let{extractSecurityContext:t,cors:n}=u(e),i=l(e);return async function(e,a){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed`},{status:405});let o=await e.json(),s=o.query||o,c=o.options||{},l=await t(e,a),u=i.validateQuery(s);if(!u.isValid)return r.NextResponse.json({error:`Query validation failed: ${u.errors.join(`, `)}`},{status:400});let f=await i.explainQuery(s,l,c);return r.NextResponse.json(f,{headers:n?d(e,n):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js explain handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Explain query failed`},{status:500})}}}function y(t){let{cors:n}=u(t),i=l(t);return async function(t,a){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await e.p(i,await t.json());return r.NextResponse.json(a,{headers:n?d(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js discover handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Discovery failed`,500),{status:500})}}}function b(t){let{cors:n}=u(t),i=l(t);return async function(t,a){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await t.json();if(!a.naturalLanguage)return r.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let o=await e.d(i,a);return r.NextResponse.json(o,{headers:n?d(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js suggest handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query suggestion failed`,500),{status:500})}}}function x(t){let{cors:n}=u(t),i=l(t);return async function(t,a){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await t.json();if(!a.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let o=await e.f(i,a);return r.NextResponse.json(o,{headers:n?d(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js validate handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query validation failed`,500),{status:500})}}}function S(t){let{extractSecurityContext:n,cors:i}=u(t),a=l(t);return async function(t,o){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let s=await t.json();if(!s.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let c=await e.m(a,await n(t,o),s);return r.NextResponse.json(c,{headers:i?d(t,i):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function C(t){let{extractSecurityContext:f,cors:p}=u(t),{mcp:m={enabled:!0}}=t,h=l(t),g=n.o(h,m.resources),_=n.y(m.prompts),v=n.v(m.instructions),y=(e,t)=>{if(!p)return;let n=d(e,p);Object.entries(n).forEach(([e,n])=>t.set(e,n))},b=async e=>{let t=await a(e,m);if(t.response)return t.response;let i=t.rpcRequest,l=n.C(t.acceptHeader),u=i.method===`initialize`,b=(t,n=200,i={})=>r.NextResponse.json(t,{status:n,headers:{...p?d(e,p):{},...i}});try{let t=await n.l(i.method,i.params,{semanticLayer:h,extractSecurityContext:e=>f(e),rawRequest:e,rawResponse:null,resources:g,prompts:_,instructions:v,appEnabled:!!m.app,appConfig:typeof m.app==`object`?m.app:void 0,serverName:m.serverName});if(n.m(i))return new r.NextResponse(null,{status:202});let a=s(u,t,n.r),c=n.a(i.id??null,t);return l?o(e,c,y,a):b(c,200,a)}catch(t){if(n.m(i))return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP notification processing error:`,t),new r.NextResponse(null,{status:202});process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP RPC handler error:`,t);let a=c(t,i.id);return l?o(e,a,y):b(a,200)}};return async function(t){return m.resourceMetadataUrl&&!n.u(t.headers.get(`authorization`))?r.NextResponse.json({error:`Bearer token required`},{status:401,headers:{"WWW-Authenticate":n.c(m.resourceMetadataUrl)}}):t.method===`DELETE`?r.NextResponse.json({error:`Session termination not supported`},{status:405}):t.method===`GET`?i(t,y):t.method===`POST`?b(t):r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405})}}function w(e){let{extractSecurityContext:t,cors:n}=u(e),{agent:i}=e;if(!i)throw Error(`agent config is required for createAgentChatHandler`);let a=l(e);return async function(e,o){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed - use POST`},{status:405});let{handleAgentChat:s}=await Promise.resolve().then(()=>require("../handler-OwxSBJH8.cjs")),{message:c,sessionId:l,history:u}=await e.json();if(!c||typeof c!=`string`)return r.NextResponse.json({error:`message is required and must be a string`},{status:400});let f=(i.apiKey||``).trim();if(i.allowClientApiKey){let t=e.headers.get(`x-agent-api-key`);t&&(f=t.trim())}if(!f)return r.NextResponse.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},{status:401});let p=i.allowClientApiKey&&e.headers.get(`x-agent-provider`)||void 0,m=i.allowClientApiKey&&e.headers.get(`x-agent-model`)||void 0,h=i.allowClientApiKey&&e.headers.get(`x-agent-provider-endpoint`)||void 0,g=await t(e,o),_=i.buildSystemContext?.(g),v=new TextEncoder,y=new ReadableStream({async start(e){try{let t=s({message:c,sessionId:l,history:u,semanticLayer:a,securityContext:g,agentConfig:i,apiKey:f,systemContext:_,providerOverride:p,modelOverride:m,baseURLOverride:h});for await(let n of t){let t=`data: ${JSON.stringify(n)}\n\n`;e.enqueue(v.encode(t))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(v.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}}),b=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(n){let t=d(e,n);Object.entries(t).forEach(([e,t])=>b.set(e,t))}return new Response(y,{status:200,headers:b})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js agent chat handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Agent chat failed`},{status:500})}}}function T(e){let{mcp:t={enabled:!0}}=e,n={load:p(e),meta:m(e),sql:h(e),dryRun:g(e),batch:_(e),explain:v(e)};return t.enabled!==!1&&(n.mcpRpc=C(e)),e.agent&&(n.agentChat=w(e)),n}exports.createAgentChatHandler=w,exports.createBatchHandler=_,exports.createCubeHandlers=T,exports.createDiscoverHandler=y,exports.createDryRunHandler=g,exports.createExplainHandler=v,exports.createLoadHandler=p,exports.createMcpLoadHandler=S,exports.createMcpRpcHandler=C,exports.createMetaHandler=m,exports.createOptionsHandler=f,exports.createSqlHandler=h,exports.createSuggestHandler=b,exports.createValidateHandler=x;
|
|
@@ -341,7 +341,7 @@ function Q(e) {
|
|
|
341
341
|
return async function(e, a) {
|
|
342
342
|
try {
|
|
343
343
|
if (e.method !== "POST") return j.json({ error: "Method not allowed - use POST" }, { status: 405 });
|
|
344
|
-
let { handleAgentChat: o } = await import("../handler-
|
|
344
|
+
let { handleAgentChat: o } = await import("../handler-CtaSua-i.js"), { message: s, sessionId: c, history: l } = await e.json();
|
|
345
345
|
if (!s || typeof s != "string") return j.json({ error: "message is required and must be a string" }, { status: 400 });
|
|
346
346
|
let u = (r.apiKey || "").trim();
|
|
347
347
|
if (r.allowClientApiKey) {
|
|
@@ -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}`, {
|