drizzle-cube 0.5.7 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/adapters/adapters/hono/agent-handler.d.ts +9 -0
- package/dist/adapters/adapters/hono/mcp-handler.d.ts +37 -0
- package/dist/adapters/adapters/mcp-tools-handlers.d.ts +18 -0
- package/dist/adapters/adapters/nextjs/mcp-handler.d.ts +36 -0
- package/dist/adapters/{utils.d.ts → adapters/utils.d.ts} +6 -81
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +50 -50
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.js +78 -78
- package/dist/adapters/google-BOnRIN1w.cjs +2 -0
- package/dist/{server/google-CFYljAOF.js → adapters/google-CvKM9yVM.js} +83 -71
- package/dist/adapters/{handler-Dz1F4iwf.js → handler-CfgE0JSL.js} +515 -578
- package/dist/adapters/handler-Cn0dOctE.cjs +25 -0
- package/dist/adapters/hono/index.cjs +2 -2
- package/dist/adapters/hono/index.js +208 -178
- package/dist/adapters/locale-DDvZDFVn.js +8114 -0
- package/dist/adapters/locale-ZLUUNUxr.cjs +166 -0
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +49 -38
- package/dist/adapters/mcp-transport-Chiaj4ll.cjs +40 -0
- package/dist/adapters/mcp-transport-H96VG3WY.js +591 -0
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +190 -197
- package/dist/{server/openai-y7GhJNdn.js → adapters/openai-B5jEiqiB.js} +776 -719
- package/dist/adapters/openai-D0musiYP.cjs +17 -0
- package/dist/{server/openai-DiVskd89.js → adapters/openai-cDlFSTk6.js} +61 -59
- package/dist/adapters/openai-vXvLni8v.cjs +1 -0
- package/dist/adapters/{utils-DosuoabY.js → utils-BPWZsX7k.js} +1285 -1220
- package/dist/adapters/utils-_whV4fXL.cjs +128 -0
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.js +2 -2
- package/dist/client/charts/ChartLoader.d.ts +3 -17
- package/dist/client/charts/chartComponentRegistry.d.ts +46 -0
- package/dist/client/charts/chartConfigHelpers.d.ts +38 -0
- package/dist/client/charts.js +14 -13
- package/dist/client/chunks/{DashboardEditModal-6KRE36mm.js → DashboardEditModal-okVfH8ZK.js} +5446 -4486
- package/dist/client/chunks/DashboardEditModal-okVfH8ZK.js.map +1 -0
- package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js → RetentionCombinedChart-BgbDhsPz.js} +10 -10
- package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js.map → RetentionCombinedChart-BgbDhsPz.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js → RetentionHeatmap-DjXZaTPq.js} +5 -5
- package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js.map → RetentionHeatmap-DjXZaTPq.js.map} +1 -1
- package/dist/client/chunks/analysis-builder-DB88FojM.js +5674 -0
- package/dist/client/chunks/analysis-builder-DB88FojM.js.map +1 -0
- package/dist/client/chunks/{analysis-builder-shared-x576-O5p.js → analysis-builder-shared-BVK4TYfR.js} +1578 -1292
- package/dist/client/chunks/analysis-builder-shared-BVK4TYfR.js.map +1 -0
- package/dist/client/chunks/{chart-activity-grid-CiHrLH6Y.js → chart-activity-grid-DX0SJbxs.js} +642 -494
- package/dist/client/chunks/chart-activity-grid-DX0SJbxs.js.map +1 -0
- package/dist/client/chunks/chart-area-of01_62R.js +775 -0
- package/dist/client/chunks/chart-area-of01_62R.js.map +1 -0
- package/dist/client/chunks/chart-bar-BqelQE_I.js +194 -0
- package/dist/client/chunks/chart-bar-BqelQE_I.js.map +1 -0
- package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js → chart-box-plot-kkBixZ27.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js.map → chart-box-plot-kkBixZ27.js.map} +1 -1
- package/dist/client/chunks/chart-bubble-B2he1--4.js +221 -0
- package/dist/client/chunks/chart-bubble-B2he1--4.js.map +1 -0
- package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js → chart-candlestick-DZp19Tzh.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js.map → chart-candlestick-DZp19Tzh.js.map} +1 -1
- package/dist/client/chunks/chart-config-area-BNigHUy8.js +124 -0
- package/dist/client/chunks/chart-config-area-BNigHUy8.js.map +1 -0
- package/dist/client/chunks/chart-config-bar-DSO_LRTx.js +54 -0
- package/dist/client/chunks/chart-config-bar-DSO_LRTx.js.map +1 -0
- package/dist/client/chunks/{chart-config-box-plot-DJ-dWWXA.js → chart-config-box-plot-oW8axV2q.js} +5 -10
- package/dist/client/chunks/chart-config-box-plot-oW8axV2q.js.map +1 -0
- package/dist/client/chunks/{chart-config-gauge-DSwC04l0.js → chart-config-gauge-Dq-_H9UN.js} +5 -7
- package/dist/client/chunks/chart-config-gauge-Dq-_H9UN.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-delta-D6BIkHL3.js → chart-config-kpi-delta-DSQbvqu_.js} +5 -10
- package/dist/client/chunks/chart-config-kpi-delta-DSQbvqu_.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-number-Bx-V9a62.js → chart-config-kpi-number-EFSWY1We.js} +5 -7
- package/dist/client/chunks/chart-config-kpi-number-EFSWY1We.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-text-CcqC1u-8.js → chart-config-kpi-text-KM3V5X2u.js} +5 -7
- package/dist/client/chunks/chart-config-kpi-text-KM3V5X2u.js.map +1 -0
- package/dist/client/chunks/{chart-config-line-Db3jDsWc.js → chart-config-line-D6jG8PCH.js} +9 -36
- package/dist/client/chunks/chart-config-line-D6jG8PCH.js.map +1 -0
- package/dist/client/chunks/{chart-config-pie-DD4SmRTF.js → chart-config-pie-BhzW-fdn.js} +6 -16
- package/dist/client/chunks/chart-config-pie-BhzW-fdn.js.map +1 -0
- package/dist/client/chunks/{chart-config-radar-CC2XAaGr.js → chart-config-radar-D7REP1q_.js} +6 -16
- package/dist/client/chunks/chart-config-radar-D7REP1q_.js.map +1 -0
- package/dist/client/chunks/{chart-config-radial-bar-DmxKx1R0.js → chart-config-radial-bar-Byx6qOPU.js} +6 -16
- package/dist/client/chunks/chart-config-radial-bar-Byx6qOPU.js.map +1 -0
- package/dist/client/chunks/{chart-config-tree-map-BI-oQStO.js → chart-config-tree-map-DVrvf3yQ.js} +6 -16
- package/dist/client/chunks/chart-config-tree-map-DVrvf3yQ.js.map +1 -0
- package/dist/client/chunks/{chart-config-waterfall-DSnyixbI.js → chart-config-waterfall-DmFeQdIk.js} +5 -10
- package/dist/client/chunks/chart-config-waterfall-DmFeQdIk.js.map +1 -0
- package/dist/client/chunks/{chart-data-table-Cm5jrpaw.js → chart-data-table-CKauQXme.js} +1046 -1121
- package/dist/client/chunks/chart-data-table-CKauQXme.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-Eke8IPtG.js → chart-funnel-CToKSBaL.js} +184 -222
- package/dist/client/chunks/chart-funnel-CToKSBaL.js.map +1 -0
- package/dist/client/chunks/chart-gauge-DTVezSk7.js +403 -0
- package/dist/client/chunks/chart-gauge-DTVezSk7.js.map +1 -0
- package/dist/client/chunks/chart-heat-map-DTuUl0BR.js +236 -0
- package/dist/client/chunks/chart-heat-map-DTuUl0BR.js.map +1 -0
- package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js +408 -0
- package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js.map +1 -0
- package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js +244 -0
- package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js.map +1 -0
- package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js +185 -0
- package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js.map +1 -0
- package/dist/client/chunks/chart-line-DKgrQA6c.js +101 -0
- package/dist/client/chunks/chart-line-DKgrQA6c.js.map +1 -0
- package/dist/client/chunks/{chart-markdown-BPW-EAm9.js → chart-markdown-CV75S_zL.js} +1359 -1240
- package/dist/client/chunks/chart-markdown-CV75S_zL.js.map +1 -0
- package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js → chart-measure-profile-Ket8fJyf.js} +7 -7
- package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js.map → chart-measure-profile-Ket8fJyf.js.map} +1 -1
- package/dist/client/chunks/chart-pie-ByieAX5H.js +119 -0
- package/dist/client/chunks/chart-pie-ByieAX5H.js.map +1 -0
- package/dist/client/chunks/chart-radar-CiSwHWp4.js +138 -0
- package/dist/client/chunks/chart-radar-CiSwHWp4.js.map +1 -0
- package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js +122 -0
- package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js.map +1 -0
- package/dist/client/chunks/{chart-sankey-CFzjGvZX.js → chart-sankey-DjrvKw6K.js} +36 -39
- package/dist/client/chunks/{chart-sankey-CFzjGvZX.js.map → chart-sankey-DjrvKw6K.js.map} +1 -1
- package/dist/client/chunks/chart-scatter-Dd9WFqnS.js +258 -0
- package/dist/client/chunks/chart-scatter-Dd9WFqnS.js.map +1 -0
- package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js → chart-sunburst-leGpuDj7.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js.map → chart-sunburst-leGpuDj7.js.map} +1 -1
- package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js +323 -0
- package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js.map +1 -0
- package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js → chart-waterfall-DyvQReN5.js} +7 -7
- package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js.map → chart-waterfall-DyvQReN5.js.map} +1 -1
- package/dist/client/chunks/{charts-core-CrBDYN6N.js → charts-core-DaXSt1Dd.js} +2 -2
- package/dist/client/chunks/{charts-core-CrBDYN6N.js.map → charts-core-DaXSt1Dd.js.map} +1 -1
- package/dist/client/chunks/charts-loader-DdTeCeNo.js +84 -0
- package/dist/client/chunks/charts-loader-DdTeCeNo.js.map +1 -0
- package/dist/client/chunks/{core-DsAWNRRv.js → core-D7vPfUIe.js} +2 -2
- package/dist/client/chunks/{core-DsAWNRRv.js.map → core-D7vPfUIe.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-oyr2wENY.js → nl-NL-2zTAWTej.js} +8 -2
- package/dist/client/chunks/{nl-NL-oyr2wENY.js.map → nl-NL-2zTAWTej.js.map} +1 -1
- package/dist/client/chunks/retention-ChW9jYdy.js.map +1 -1
- package/dist/client/chunks/{schema-visualization-BszcrmZX.js → schema-visualization-Cb_E9_Gd.js} +12 -12
- package/dist/client/chunks/{schema-visualization-BszcrmZX.js.map → schema-visualization-Cb_E9_Gd.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-B5wCDJSj.js → useDirtyStateTracking-MbpxH_v6.js} +95 -84
- package/dist/client/chunks/useDirtyStateTracking-MbpxH_v6.js.map +1 -0
- package/dist/client/chunks/{useExplainAI-CCeCYzDm.js → useExplainAI-evnZkjCY.js} +14 -14
- package/dist/client/chunks/{useExplainAI-CCeCYzDm.js.map → useExplainAI-evnZkjCY.js.map} +1 -1
- package/dist/client/chunks/{utils-kqa-JIMg.js → utils-3P6z1vz5.js} +3 -3
- package/dist/client/chunks/{utils-kqa-JIMg.js.map → utils-3P6z1vz5.js.map} +1 -1
- package/dist/client/chunks/{vendor-0hJNlZXQ.js → vendor-DSpR0IW6.js} +43 -43
- package/dist/client/chunks/{vendor-0hJNlZXQ.js.map → vendor-DSpR0IW6.js.map} +1 -1
- package/dist/client/components/AgenticNotebook/agentChatParts.d.ts +34 -0
- package/dist/client/components/AgenticNotebook/chatMessageParts.d.ts +39 -0
- package/dist/client/components/AgenticNotebook/useAgentChatController.d.ts +25 -0
- package/dist/client/components/AgenticNotebook/useNotebookAutosave.d.ts +12 -0
- package/dist/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisQueryPanelParts.d.ts +64 -0
- package/dist/client/components/AnalysisBuilder/AnalysisResultsHeader.d.ts +67 -0
- package/dist/client/components/AnalysisBuilder/BreakdownComparisonToggle.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/BreakdownRow.d.ts +26 -0
- package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/ExecutionPlanPanelParts.d.ts +22 -0
- package/dist/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +2 -1
- package/dist/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchItem.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchModal.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchResults.d.ts +16 -0
- package/dist/client/components/AnalysisBuilder/FilterConfigModal.d.ts +2 -1
- package/dist/client/components/AnalysisBuilder/FilterValueInput.d.ts +63 -0
- package/dist/client/components/AnalysisBuilder/FlowDepthControls.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/FlowVisualizationPicker.d.ts +7 -0
- package/dist/client/components/AnalysisBuilder/LegacyBooleanOptions.d.ts +8 -0
- package/dist/client/components/AnalysisBuilder/LimitSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/MetricRow.d.ts +23 -0
- package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/SortToggleButton.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/StringArrayInput.d.ts +17 -0
- package/dist/client/components/AnalysisBuilder/filterConfigModalUtils.d.ts +30 -0
- package/dist/client/components/AnalysisBuilder/hooks/useAnalysisBuilderImperativeHandle.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/hooks/useDragReorder.d.ts +25 -0
- package/dist/client/components/AnalysisBuilder/hooks/useFieldSearchKeyboard.d.ts +11 -0
- package/dist/client/components/AnalysisBuilder/utils/axisConfigUtils.d.ts +23 -0
- package/dist/client/components/AnalysisBuilder/utils/executionPlanMarkdown.d.ts +8 -0
- package/dist/client/components/AnalysisBuilder/utils/fieldUtils.d.ts +5 -0
- package/dist/client/components/AnalysisBuilder/utils/resultsPanelDerive.d.ts +68 -0
- package/dist/client/components/AnalysisBuilder/utils/shareStateUtils.d.ts +68 -0
- package/dist/client/components/AnalysisBuilder/utils/sortUtils.d.ts +7 -0
- package/dist/client/components/AnalyticsDashboard.d.ts +1 -1
- package/dist/client/components/AnalyticsPage.d.ts +1 -1
- package/dist/client/components/ChartErrorBoundary.d.ts +1 -1
- package/dist/client/components/ChartTypeSelector.d.ts +1 -1
- package/dist/client/components/ColorPaletteSelector.d.ts +1 -1
- package/dist/client/components/DashboardEditModal.d.ts +2 -1
- package/dist/client/components/DashboardFilters/CompactFilterBarParts.d.ts +26 -0
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +1 -1
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModalParts.d.ts +27 -0
- package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +1 -1
- package/dist/client/components/DashboardFilters/DashboardFilterValueInput.d.ts +39 -0
- package/dist/client/components/DashboardFilters/dashboardFilterConfigModalUtils.d.ts +21 -0
- package/dist/client/components/DashboardFilters/useCompactFilterBar.d.ts +19 -0
- package/dist/client/components/DashboardFilters/useDashboardFilterConfigModal.d.ts +69 -0
- package/dist/client/components/DashboardFilters/useDateRangeState.d.ts +19 -0
- package/dist/client/components/DashboardFilters/useFilterDropdowns.d.ts +21 -0
- package/dist/client/components/DashboardFilters/useFilterValueFetch.d.ts +23 -0
- package/dist/client/components/DashboardGrid.d.ts +1 -1
- package/dist/client/components/DashboardPortletCard.d.ts +2 -57
- package/dist/client/components/DashboardThumbnailPlaceholder.d.ts +1 -1
- package/dist/client/components/DataBrowser/DataBrowserSidebar.d.ts +1 -1
- package/dist/client/components/DataBrowser/DataBrowserToolbar.d.ts +1 -1
- package/dist/client/components/DataBrowser/index.d.ts +1 -1
- package/dist/client/components/DataHistogram.d.ts +1 -1
- package/dist/client/components/DebugModal.d.ts +1 -1
- package/dist/client/components/DrillBreadcrumb.d.ts +2 -1
- package/dist/client/components/LoadingIndicator.d.ts +1 -1
- package/dist/client/components/MobileStackedLayout.d.ts +1 -1
- package/dist/client/components/PortletAnalysisModal.d.ts +1 -1
- package/dist/client/components/PortletContainer.d.ts +1 -1
- package/dist/client/components/PortletFilterConfigModal.d.ts +6 -4
- package/dist/client/components/RowManagedLayout.d.ts +1 -1
- package/dist/client/components/ScaledGridWrapper.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/CubeNode.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/RelationshipEdge.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/index.d.ts +1 -1
- package/dist/client/components/TextPortletModal.d.ts +1 -1
- package/dist/client/components/analyticsPortlet/PortletChart.d.ts +31 -0
- package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +35 -0
- package/dist/client/components/analyticsPortlet/PortletStates.d.ts +65 -0
- package/dist/client/components/analyticsPortlet/parsePortletQuery.d.ts +22 -0
- package/dist/client/components/analyticsPortlet/portletRenderState.d.ts +31 -0
- package/dist/client/components/analyticsPortlet/usePortletDebugData.d.ts +37 -0
- package/dist/client/components/analyticsPortlet/usePortletDrillState.d.ts +17 -0
- package/dist/client/components/analyticsPortlet/usePortletQueryResults.d.ts +37 -0
- package/dist/client/components/charts/ActivityGridChart.helpers.d.ts +33 -0
- package/dist/client/components/charts/ActivityGridChart.render.d.ts +31 -0
- package/dist/client/components/charts/AxisFormatControls.d.ts +5 -3
- package/dist/client/components/charts/BarChart.helpers.d.ts +23 -0
- package/dist/client/components/charts/BarSeries.d.ts +29 -0
- package/dist/client/components/charts/BubbleChart.helpers.d.ts +43 -0
- package/dist/client/components/charts/BubbleChart.render.d.ts +21 -0
- package/dist/client/components/charts/ChartContainer.d.ts +1 -1
- package/dist/client/components/charts/ChartLegend.d.ts +1 -1
- package/dist/client/components/charts/ChartStates.d.ts +38 -0
- package/dist/client/components/charts/ChartTooltip.d.ts +1 -1
- package/dist/client/components/charts/FunnelChart.helpers.d.ts +25 -0
- package/dist/client/components/charts/FunnelViews.d.ts +16 -0
- package/dist/client/components/charts/HeatMapCanvas.d.ts +25 -0
- package/dist/client/components/charts/HeatMapChart.helpers.d.ts +64 -0
- package/dist/client/components/charts/KpiDelta.helpers.d.ts +20 -0
- package/dist/client/components/charts/KpiNumber.helpers.d.ts +30 -0
- package/dist/client/components/charts/KpiStates.d.ts +19 -0
- package/dist/client/components/charts/MissingDependencyFallback.d.ts +1 -1
- package/dist/client/components/charts/ScatterChart.helpers.d.ts +43 -0
- package/dist/client/components/charts/ScatterSeries.d.ts +17 -0
- package/dist/client/components/charts/ScatterTooltip.d.ts +21 -0
- package/dist/client/components/charts/TreeMapChart.helpers.d.ts +37 -0
- package/dist/client/components/charts/TreeMapContent.d.ts +24 -0
- package/dist/client/components/charts/TreeMapLegend.d.ts +13 -0
- package/dist/client/components/charts/cartesianChartHelpers.d.ts +126 -0
- package/dist/client/components/charts/chartAxisResolution.d.ts +32 -0
- package/dist/client/components/charts/chartScaffolding.d.ts +77 -0
- package/dist/client/components/charts/gaugeChartHelpers.d.ts +36 -0
- package/dist/client/components/charts/kpiTextHelpers.d.ts +46 -0
- package/dist/client/components/charts/radarChartHelpers.d.ts +14 -0
- package/dist/client/components/charts/radialBarChartHelpers.d.ts +22 -0
- package/dist/client/components/charts/useChartDimensions.d.ts +20 -0
- package/dist/client/components/charts/useKpiDimensions.d.ts +30 -0
- package/dist/client/components/dashboard/DashboardContext.d.ts +2 -2
- package/dist/client/components/dashboard/DashboardCoordinator.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardEditBar.d.ts +5 -0
- package/dist/client/components/dashboard/DashboardFilterBar.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardGridSurface.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardModals.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardProvider.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardToolbar.d.ts +1 -1
- package/dist/client/components/dashboard/LayoutModeToggle.d.ts +10 -0
- package/dist/client/components/dashboard/dashboardGridUtils.d.ts +1 -1
- package/dist/client/components/dashboardPortletCard/FilterFieldChip.d.ts +12 -0
- package/dist/client/components/dashboardPortletCard/PortletCardHeader.d.ts +43 -0
- package/dist/client/components/dashboardPortletCard/cardStyles.d.ts +33 -0
- package/dist/client/components/dashboardPortletCard/filterField.d.ts +12 -0
- package/dist/client/components/dashboardPortletCard/propsEqual.d.ts +55 -0
- package/dist/client/components/dashboardPortletCard/usePortletCardActions.d.ts +16 -0
- package/dist/client/components/portletAnalysisModal/saveValidation.d.ts +8 -0
- package/dist/client/components/shared/dateRangeUtils.d.ts +40 -0
- package/dist/client/components/shared/filterDisplayUtils.d.ts +10 -0
- package/dist/client/components/shared/filterItem/FilterDateRangeSelector.d.ts +17 -0
- package/dist/client/components/shared/filterItem/FilterFieldDropdown.d.ts +16 -0
- package/dist/client/components/shared/filterItem/dateRangeSync.d.ts +14 -0
- package/dist/client/components/shared/filterItem/fieldVisuals.d.ts +5 -0
- package/dist/client/components/shared/filterValueSelector/FilterValueInputs.d.ts +55 -0
- package/dist/client/components/shared/filterValueSelector/useFilterValueSelectorState.d.ts +25 -0
- package/dist/client/components/shared/queryFieldUtils.d.ts +21 -0
- package/dist/client/components/shared/utils.d.ts +4 -43
- package/dist/client/components.js +3 -3
- package/dist/client/hooks/agentChatStream.d.ts +39 -0
- package/dist/client/hooks/analysisQueryExecutionModes.d.ts +133 -0
- package/dist/client/hooks/dashboard/useDashboardController.d.ts +2 -2
- package/dist/client/hooks/drillNavigation.d.ts +25 -0
- package/dist/client/hooks/useDashboardHook.d.ts +2 -2
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.d.ts +1 -1
- package/dist/client/icons.js +2 -2
- package/dist/client/index.js +816 -669
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers/CubeApiProvider.d.ts +1 -1
- package/dist/client/providers/CubeFeaturesProvider.d.ts +1 -1
- package/dist/client/providers/CubeMetaProvider.d.ts +1 -1
- package/dist/client/providers/CubeProvider.d.ts +1 -1
- package/dist/client/providers/I18nProvider.d.ts +1 -1
- package/dist/client/providers.js +3 -3
- package/dist/client/schema.js +1 -1
- package/dist/client/shared/chartConfigBuilders.d.ts +18 -0
- package/dist/client/shared/components/QueryAnalysisPanel.sections.d.ts +41 -0
- package/dist/client/shared/queryTransforms.d.ts +20 -0
- package/dist/client/shared/utils.d.ts +2 -4
- package/dist/client/stores/analysisBuilderStore.d.ts +1 -1
- package/dist/client/stores/dashboardStore.d.ts +1 -1
- package/dist/client/stores/dataBrowserStore.d.ts +1 -1
- package/dist/client/stores/notebookStore.d.ts +1 -1
- package/dist/client/stores/optionsToAnalysisConfig.d.ts +17 -0
- package/dist/client/styles.css +1 -1
- package/dist/client/types/drill.d.ts +1 -1
- package/dist/client/types.d.ts +7 -2
- package/dist/client/utils/axisValueFormatting.d.ts +32 -0
- package/dist/client/utils/drillQueryBuilder.d.ts +2 -2
- package/dist/client/utils/filterUtils.d.ts +33 -5
- package/dist/client/utils/joinReachability.d.ts +27 -0
- package/dist/client/utils/timeValueFormatting.d.ts +32 -0
- package/dist/client/utils.js +6 -6
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +55 -55
- package/dist/server/google-BOnRIN1w.cjs +2 -0
- package/dist/{adapters/google-CFYljAOF.js → server/google-CvKM9yVM.js} +83 -71
- package/dist/server/index.cjs +179 -211
- package/dist/server/index.d.ts +2 -5050
- package/dist/server/index.js +6360 -6462
- package/dist/{adapters/openai-y7GhJNdn.js → server/openai-B5jEiqiB.js} +776 -719
- package/dist/server/openai-D0musiYP.cjs +17 -0
- package/dist/{adapters/openai-DiVskd89.js → server/openai-cDlFSTk6.js} +61 -59
- package/dist/server/openai-vXvLni8v.cjs +1 -0
- package/dist/server/server/adapters/base-adapter.d.ts +332 -0
- package/dist/server/server/adapters/databend-adapter.d.ts +63 -0
- package/dist/server/server/adapters/duckdb-adapter.d.ts +68 -0
- package/dist/server/server/adapters/mysql-adapter.d.ts +65 -0
- package/dist/server/server/adapters/postgres-adapter.d.ts +55 -0
- package/dist/server/server/adapters/singlestore-adapter.d.ts +4 -0
- package/dist/server/server/adapters/snowflake-adapter.d.ts +53 -0
- package/dist/server/server/adapters/sqlite-adapter.d.ts +120 -0
- package/dist/server/server/adapters/window-function-builder.d.ts +11 -0
- package/dist/server/server/agent/chart-validation.d.ts +22 -0
- package/dist/server/server/agent/handler-steps.d.ts +37 -0
- package/dist/server/server/agent/handler.d.ts +25 -0
- package/dist/server/server/agent/index.d.ts +11 -0
- package/dist/server/server/agent/providers/anthropic.d.ts +24 -0
- package/dist/server/server/agent/providers/factory.d.ts +12 -0
- package/dist/server/server/agent/providers/google.d.ts +23 -0
- package/dist/server/server/agent/providers/index.d.ts +6 -0
- package/dist/server/server/agent/providers/openai.d.ts +26 -0
- package/dist/server/server/agent/providers/types.d.ts +95 -0
- package/dist/server/server/agent/system-prompt.d.ts +5 -0
- package/dist/server/server/agent/tools.d.ts +28 -0
- package/dist/server/server/agent/types.d.ts +192 -0
- package/dist/server/server/ai/discovery-helpers.d.ts +29 -0
- package/dist/server/server/ai/discovery.d.ts +66 -0
- package/dist/server/server/ai/index.d.ts +10 -0
- package/dist/server/server/ai/mcp-prompts.d.ts +83 -0
- package/dist/server/server/ai/query-schema.d.ts +258 -0
- package/dist/server/server/ai/schemas.d.ts +63 -0
- package/dist/server/server/ai/suggestion-helpers.d.ts +33 -0
- package/dist/server/server/ai/suggestion.d.ts +16 -0
- package/dist/server/server/ai/validation-helpers.d.ts +21 -0
- package/dist/server/server/ai/validation.d.ts +31 -0
- package/dist/server/server/builders/analysis-utils.d.ts +106 -0
- package/dist/server/server/builders/comparison-query-builder.d.ts +70 -0
- package/dist/server/server/builders/cte-builder.d.ts +108 -0
- package/dist/server/server/builders/date-time-builder.d.ts +34 -0
- package/dist/server/server/builders/date-time-helpers.d.ts +34 -0
- package/dist/server/server/builders/filter-builder.d.ts +25 -0
- package/dist/server/server/builders/filter-operators.d.ts +23 -0
- package/dist/server/server/builders/flow-query-builder.d.ts +136 -0
- package/dist/server/server/builders/funnel-query-builder.d.ts +145 -0
- package/dist/server/server/builders/group-by-builder.d.ts +38 -0
- package/dist/server/server/builders/index.d.ts +13 -0
- package/dist/server/server/builders/measure-builder.d.ts +185 -0
- package/dist/server/server/builders/retention-query-builder.d.ts +98 -0
- package/dist/server/server/cache-providers/index.d.ts +5 -0
- package/dist/server/server/cache-providers/memory.d.ts +105 -0
- package/dist/server/server/cache-utils.d.ts +85 -0
- package/dist/server/server/compiler-metadata.d.ts +11 -0
- package/dist/server/server/compiler.d.ts +212 -0
- package/dist/server/server/cube-utils.d.ts +158 -0
- package/dist/server/server/database-utils.d.ts +18 -0
- package/dist/server/server/execution/annotation-builder.d.ts +12 -0
- package/dist/server/server/execution/filter-cache-preloader.d.ts +19 -0
- package/dist/server/server/execution/mode-router.d.ts +25 -0
- package/dist/server/server/execution/query-result-cache.d.ts +21 -0
- package/dist/server/server/execution/result-post-processor.d.ts +10 -0
- package/dist/server/server/executor.d.ts +186 -0
- package/dist/server/server/executors/base-executor.d.ts +16 -0
- package/dist/server/server/executors/databend-executor.d.ts +33 -0
- package/dist/server/server/executors/duckdb-executor.d.ts +33 -0
- package/dist/server/server/executors/explain-utils.d.ts +28 -0
- package/dist/server/server/executors/index.d.ts +21 -0
- package/dist/server/server/executors/mysql-executor.d.ts +27 -0
- package/dist/server/server/executors/postgres-executor.d.ts +27 -0
- package/dist/server/server/executors/singlestore-executor.d.ts +9 -0
- package/dist/server/server/executors/snowflake-executor.d.ts +33 -0
- package/dist/server/server/executors/sqlite-executor.d.ts +28 -0
- package/dist/server/server/explain/databend-parser.d.ts +16 -0
- package/dist/server/server/explain/duckdb-parser.d.ts +28 -0
- package/dist/server/server/explain/explain-tree.d.ts +20 -0
- package/dist/server/server/explain/index.d.ts +9 -0
- package/dist/server/server/explain/mysql-parser.d.ts +38 -0
- package/dist/server/server/explain/postgres-parser.d.ts +18 -0
- package/dist/server/server/explain/snowflake-parser.d.ts +17 -0
- package/dist/server/server/explain/sqlite-parser.d.ts +23 -0
- package/dist/server/server/filter-cache.d.ts +73 -0
- package/dist/server/server/gap-filler.d.ts +48 -0
- package/dist/server/server/index.d.ts +38 -0
- package/dist/server/server/logical-plan/cte-planner-helpers.d.ts +37 -0
- package/dist/server/server/logical-plan/cte-planner.d.ts +104 -0
- package/dist/server/server/logical-plan/filter-propagation.d.ts +44 -0
- package/dist/server/server/logical-plan/index.d.ts +19 -0
- package/dist/server/server/logical-plan/join-planner.d.ts +27 -0
- package/dist/server/server/logical-plan/logical-plan-builder.d.ts +58 -0
- package/dist/server/server/logical-plan/logical-planner.d.ts +39 -0
- package/dist/server/server/logical-plan/optimiser.d.ts +34 -0
- package/dist/server/server/logical-plan/plan-analysis-reporter.d.ts +59 -0
- package/dist/server/server/logical-plan/planner-utils.d.ts +20 -0
- package/dist/server/server/logical-plan/types.d.ts +199 -0
- package/dist/server/server/measure-classification.d.ts +40 -0
- package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
- package/dist/server/server/physical-plan/drizzle-sql-builder.d.ts +118 -0
- package/dist/server/server/physical-plan/index.d.ts +2 -0
- package/dist/server/server/physical-plan/processors/cte-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/index.d.ts +8 -0
- package/dist/server/server/physical-plan/processors/joins-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/keys-dedup-processor.d.ts +13 -0
- package/dist/server/server/physical-plan/processors/multi-fact-processor.d.ts +13 -0
- package/dist/server/server/physical-plan/processors/predicates-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/selection-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/shared.d.ts +38 -0
- package/dist/server/server/physical-plan/processors/window-processor.d.ts +6 -0
- package/dist/server/server/prompts/explain-analysis-prompt.d.ts +47 -0
- package/dist/server/server/prompts/index.d.ts +27 -0
- package/dist/server/server/prompts/single-step-prompt.d.ts +31 -0
- package/dist/server/server/prompts/step0-validation-prompt.d.ts +39 -0
- package/dist/server/server/prompts/step1-shape-prompt.d.ts +29 -0
- package/dist/server/server/prompts/step2-complete-prompt.d.ts +19 -0
- package/dist/server/server/prompts/types.d.ts +37 -0
- package/dist/server/server/query-handlers.d.ts +79 -0
- package/dist/server/server/query-modes.d.ts +28 -0
- package/dist/server/server/query-validator.d.ts +9 -0
- package/dist/server/server/resolvers/calculated-measure-resolver.d.ts +98 -0
- package/dist/server/server/resolvers/index.d.ts +6 -0
- package/dist/server/server/resolvers/join-path-resolver.d.ts +158 -0
- package/dist/server/server/sql-format.d.ts +11 -0
- package/dist/server/server/template-substitution.d.ts +57 -0
- package/dist/server/server/types/analysis.d.ts +189 -0
- package/dist/server/server/types/cache.d.ts +132 -0
- package/dist/server/server/types/core.d.ts +164 -0
- package/dist/server/server/types/cube.d.ts +544 -0
- package/dist/server/server/types/executor.d.ts +156 -0
- package/dist/server/server/types/flow.d.ts +144 -0
- package/dist/server/server/types/funnel.d.ts +118 -0
- package/dist/server/server/types/index.d.ts +11 -0
- package/dist/server/server/types/metadata.d.ts +113 -0
- package/dist/server/server/types/query.d.ts +153 -0
- package/dist/server/server/types/retention.d.ts +141 -0
- package/dist/server/server/types/utils.d.ts +11 -0
- package/dist/server/server/types/validation.d.ts +14 -0
- package/package.json +15 -8
- package/dist/adapters/google-DUlXeeDA.cjs +0 -2
- package/dist/adapters/handler-C63rJUUK.cjs +0 -25
- package/dist/adapters/locale-CTNwPVZI.cjs +0 -198
- package/dist/adapters/locale-gU_d1Wja.js +0 -8249
- package/dist/adapters/mcp-transport-C4J4SAcn.cjs +0 -40
- package/dist/adapters/mcp-transport-CVUiifEc.js +0 -579
- package/dist/adapters/openai-6wrBvAnv.cjs +0 -1
- package/dist/adapters/openai-BDwb2u7y.cjs +0 -17
- package/dist/adapters/utils-CkEkU8Bo.cjs +0 -128
- package/dist/client/chunks/DashboardEditModal-6KRE36mm.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-x576-O5p.js.map +0 -1
- package/dist/client/chunks/analysis-builder-zd48FVJO.js +0 -5367
- package/dist/client/chunks/analysis-builder-zd48FVJO.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-CiHrLH6Y.js.map +0 -1
- package/dist/client/chunks/chart-area-CXFK-Grv.js +0 -450
- package/dist/client/chunks/chart-area-CXFK-Grv.js.map +0 -1
- package/dist/client/chunks/chart-bar-DKXfLoGG.js +0 -271
- package/dist/client/chunks/chart-bar-DKXfLoGG.js.map +0 -1
- package/dist/client/chunks/chart-bubble-DGkTQlxM.js +0 -273
- package/dist/client/chunks/chart-bubble-DGkTQlxM.js.map +0 -1
- package/dist/client/chunks/chart-config-area-Bq_UsW3x.js +0 -101
- package/dist/client/chunks/chart-config-area-Bq_UsW3x.js.map +0 -1
- package/dist/client/chunks/chart-config-bar-_JEGZnAu.js +0 -95
- package/dist/client/chunks/chart-config-bar-_JEGZnAu.js.map +0 -1
- package/dist/client/chunks/chart-config-box-plot-DJ-dWWXA.js.map +0 -1
- package/dist/client/chunks/chart-config-gauge-DSwC04l0.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-delta-D6BIkHL3.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-number-Bx-V9a62.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-text-CcqC1u-8.js.map +0 -1
- package/dist/client/chunks/chart-config-line-Db3jDsWc.js.map +0 -1
- package/dist/client/chunks/chart-config-pie-DD4SmRTF.js.map +0 -1
- package/dist/client/chunks/chart-config-radar-CC2XAaGr.js.map +0 -1
- package/dist/client/chunks/chart-config-radial-bar-DmxKx1R0.js.map +0 -1
- package/dist/client/chunks/chart-config-tree-map-BI-oQStO.js.map +0 -1
- package/dist/client/chunks/chart-config-waterfall-DSnyixbI.js.map +0 -1
- package/dist/client/chunks/chart-data-table-Cm5jrpaw.js.map +0 -1
- package/dist/client/chunks/chart-funnel-Eke8IPtG.js.map +0 -1
- package/dist/client/chunks/chart-gauge-DeRZNsyl.js +0 -424
- package/dist/client/chunks/chart-gauge-DeRZNsyl.js.map +0 -1
- package/dist/client/chunks/chart-heat-map-C86thSJ4.js +0 -231
- package/dist/client/chunks/chart-heat-map-C86thSJ4.js.map +0 -1
- package/dist/client/chunks/chart-kpi-delta-CxOYD2f1.js +0 -343
- package/dist/client/chunks/chart-kpi-delta-CxOYD2f1.js.map +0 -1
- package/dist/client/chunks/chart-kpi-number-C6gWz-x4.js +0 -322
- package/dist/client/chunks/chart-kpi-number-C6gWz-x4.js.map +0 -1
- package/dist/client/chunks/chart-kpi-text-dDONrhS-.js +0 -149
- package/dist/client/chunks/chart-kpi-text-dDONrhS-.js.map +0 -1
- package/dist/client/chunks/chart-line-r4iWevKZ.js +0 -433
- package/dist/client/chunks/chart-line-r4iWevKZ.js.map +0 -1
- package/dist/client/chunks/chart-markdown-BPW-EAm9.js.map +0 -1
- package/dist/client/chunks/chart-pie-yqH2YVEI.js +0 -172
- package/dist/client/chunks/chart-pie-yqH2YVEI.js.map +0 -1
- package/dist/client/chunks/chart-radar-B-_3v-rE.js +0 -154
- package/dist/client/chunks/chart-radar-B-_3v-rE.js.map +0 -1
- package/dist/client/chunks/chart-radial-bar-C0EgzfAF.js +0 -148
- package/dist/client/chunks/chart-radial-bar-C0EgzfAF.js.map +0 -1
- package/dist/client/chunks/chart-scatter-DZPirzwX.js +0 -255
- package/dist/client/chunks/chart-scatter-DZPirzwX.js.map +0 -1
- package/dist/client/chunks/chart-tree-map-Bi4axCvh.js +0 -298
- package/dist/client/chunks/chart-tree-map-Bi4axCvh.js.map +0 -1
- package/dist/client/chunks/useDirtyStateTracking-B5wCDJSj.js.map +0 -1
- package/dist/server/google-DUlXeeDA.cjs +0 -2
- package/dist/server/openai-6wrBvAnv.cjs +0 -1
- package/dist/server/openai-BDwb2u7y.cjs +0 -17
- /package/dist/adapters/{express → adapters/express}/index.d.ts +0 -0
- /package/dist/adapters/{fastify → adapters/fastify}/index.d.ts +0 -0
- /package/dist/adapters/{hono → adapters/hono}/index.d.ts +0 -0
- /package/dist/adapters/{locale.d.ts → adapters/locale.d.ts} +0 -0
- /package/dist/adapters/{mcp-tools.d.ts → adapters/mcp-tools.d.ts} +0 -0
- /package/dist/adapters/{mcp-transport.d.ts → adapters/mcp-transport.d.ts} +0 -0
- /package/dist/adapters/{nextjs → adapters/nextjs}/index.d.ts +0 -0
- /package/dist/adapters/{types.d.ts → adapters/types.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-CkEkU8Bo.cjs"),t=require("../locale-CTNwPVZI.cjs"),n=require("../mcp-transport-C4J4SAcn.cjs");let r=require("next/server");function i(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 a(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 o(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 s(e){return async function(n){let r=o(n,{...e,allowedHeaders:t.t(e.allowedHeaders)});return new Response(null,{status:200,headers:r})}}function c(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{let a;if(t.method===`POST`){let e=await t.json();a=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{a=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 l=await n(t,i),u=c.validateQuery(a);if(!u.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=t.headers.get(`x-cache-control`)===`no-cache`,f=await c.executeMultiCubeQuery(a,l,{skipCache:d}),p=e.r(a,f,c);return r.NextResponse.json(p,{headers:s?o(t,s):{}})}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 l(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{let i=e.a(s.getMetadata());return r.NextResponse.json(i,{headers:n?o(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 u(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{let a;if(t.method===`POST`){let e=await t.json();a=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{a=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 l=await n(t,i),u=c.validateQuery(a);if(!u.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=a.measures?.[0]||a.dimensions?.[0];if(!d)return r.NextResponse.json(e.i(`No measures or dimensions specified`,400),{status:400});let f=d.split(`.`)[0],p=await c.generateSQL(f,a,l),m=e.o(a,p);return r.NextResponse.json(m,{headers:s?o(t,s):{}})}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 d(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{let a;if(t.method===`POST`){let e=await t.json();a=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{a=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 l=await n(t,i),u=await e.f(a,l,c);return r.NextResponse.json(u,{headers:s?o(t,s):{}})}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 f(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let{queries:a}=await t.json();if(!a||!Array.isArray(a))return r.NextResponse.json(e.i(`Request body must contain a "queries" array`,400),{status:400});if(a.length===0)return r.NextResponse.json(e.i(`Queries array cannot be empty`,400),{status:400});let l=await e.u(a,await n(t,i),c,{skipCache:t.headers.get(`x-cache-control`)===`no-cache`});return r.NextResponse.json(l,{headers:s?o(t,s):{}})}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 p(e){let{extractSecurityContext:t,cors:n}=a(e),s=i(e);return async function(e,i){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed`},{status:405});let a=await e.json(),c=a.query||a,l=a.options||{},u=await t(e,i),d=s.validateQuery(c);if(!d.isValid)return r.NextResponse.json({error:`Query validation failed: ${d.errors.join(`, `)}`},{status:400});let f=await s.explainQuery(c,u,l);return r.NextResponse.json(f,{headers:n?o(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 m(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await e.d(s,await t.json());return r.NextResponse.json(i,{headers:n?o(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 h(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await t.json();if(!i.naturalLanguage)return r.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let a=await e.m(s,i);return r.NextResponse.json(a,{headers:n?o(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 g(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await t.json();if(!i.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let a=await e.h(s,i);return r.NextResponse.json(a,{headers:n?o(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 _(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){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 l=await e.p(c,await n(t,i),a);return r.NextResponse.json(l,{headers:s?o(t,s):{}})}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 v(t){let{extractSecurityContext:s,cors:c}=a(t),{mcp:l={enabled:!0}}=t,u=i(t),d=n.o(u,l.resources),f=n.y(l.prompts),p=n.v(l.instructions);return async function(t){if(l.resourceMetadataUrl&&!n.u(t.headers.get(`authorization`)))return r.NextResponse.json({error:`Bearer token required`},{status:401,headers:{"WWW-Authenticate":n.c(l.resourceMetadataUrl)}});if(t.method===`DELETE`)return r.NextResponse.json({error:`Session termination not supported`},{status:405});if(t.method===`GET`){let e=new TextEncoder,i=n._(),a=new ReadableStream({start(t){t.enqueue(e.encode(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},i,15e3)))}}),s=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(c){let e=o(t,c);Object.entries(e).forEach(([e,t])=>s.set(e,t))}return new r.NextResponse(a,{status:200,headers:s})}if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=n.S(t.headers.get(`origin`),l.allowedOrigins?{allowedOrigins:l.allowedOrigins}:{});if(!i.valid)return r.NextResponse.json(n.i(null,-32600,i.reason),{status:403});let a=t.headers.get(`accept`);if(!n.x(a))return r.NextResponse.json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`),{status:400});let m=n.h(Object.fromEntries(t.headers.entries()));if(!m.ok)return r.NextResponse.json({error:`Unsupported MCP protocol version`,supported:m.supported},{status:426});let h;try{h=await t.json()}catch{h=null}let g=n.g(h);if(!g)return r.NextResponse.json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`),{status:400});let _=n.C(a),v=g.method===`initialize`,y=(e,n=200,i={})=>r.NextResponse.json(e,{status:n,headers:{...c?o(t,c):{},...i}});try{let e=await n.l(g.method,g.params,{semanticLayer:u,extractSecurityContext:e=>s(e),rawRequest:t,rawResponse:null,resources:d,prompts:f,instructions:p,appEnabled:!!l.app,appConfig:typeof l.app==`object`?l.app:void 0,serverName:l.serverName});if(n.m(g))return new r.NextResponse(null,{status:202});let i=v&&e&&typeof e==`object`&&`sessionId`in e?e.sessionId:void 0,a={};i&&(a[n.r]=i);let m=n.a(g.id??null,e);if(_){let e=new TextEncoder,i=n._(),s=new ReadableStream({start(t){t.enqueue(e.encode(`id: ${i}\n\n`)),t.enqueue(e.encode(n.b(m,i))),t.close()}}),l=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...a});if(c){let e=o(t,c);Object.entries(e).forEach(([e,t])=>l.set(e,t))}return new r.NextResponse(s,{status:200,headers:l})}return y(m,200,a)}catch(e){if(n.m(g))return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP notification processing error:`,e),new r.NextResponse(null,{status:202});process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP RPC handler error:`,e);let i=e?.code??-32603,a=e?.data,s=e.message||`MCP request failed`,l=n.i(g.id??null,i,s,a);if(_){let e=new TextEncoder,i=n._(),a=new ReadableStream({start(t){t.enqueue(e.encode(`id: ${i}\n\n`)),t.enqueue(e.encode(n.b(l,i))),t.close()}}),s=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(c){let e=o(t,c);Object.entries(e).forEach(([e,t])=>s.set(e,t))}return new r.NextResponse(a,{status:200,headers:s})}return y(l,200)}}}function y(e){let{extractSecurityContext:t,cors:n}=a(e),{agent:s}=e;if(!s)throw Error(`agent config is required for createAgentChatHandler`);let c=i(e);return async function(e,i){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed - use POST`},{status:405});let{handleAgentChat:a}=await Promise.resolve().then(()=>require("../handler-C63rJUUK.cjs")),{message:l,sessionId:u,history:d}=await e.json();if(!l||typeof l!=`string`)return r.NextResponse.json({error:`message is required and must be a string`},{status:400});let f=(s.apiKey||``).trim();if(s.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=s.allowClientApiKey&&e.headers.get(`x-agent-provider`)||void 0,m=s.allowClientApiKey&&e.headers.get(`x-agent-model`)||void 0,h=s.allowClientApiKey&&e.headers.get(`x-agent-provider-endpoint`)||void 0,g=await t(e,i),_=s.buildSystemContext?.(g),v=new TextEncoder,y=new ReadableStream({async start(e){try{let t=a({message:l,sessionId:u,history:d,semanticLayer:c,securityContext:g,agentConfig:s,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=o(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 b(e){let{mcp:t={enabled:!0}}=e,n={load:c(e),meta:l(e),sql:u(e),dryRun:d(e),batch:f(e),explain:p(e)};return t.enabled!==!1&&(n.mcpRpc=v(e)),e.agent&&(n.agentChat=y(e)),n}exports.createAgentChatHandler=y,exports.createBatchHandler=f,exports.createCubeHandlers=b,exports.createDiscoverHandler=m,exports.createDryRunHandler=d,exports.createExplainHandler=p,exports.createLoadHandler=c,exports.createMcpLoadHandler=_,exports.createMcpRpcHandler=v,exports.createMetaHandler=l,exports.createOptionsHandler=s,exports.createSqlHandler=u,exports.createSuggestHandler=h,exports.createValidateHandler=g;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-_whV4fXL.cjs"),t=require("../locale-ZLUUNUxr.cjs"),n=require("../mcp-transport-Chiaj4ll.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,9 +1,72 @@
|
|
|
1
|
-
import { a as e, d as t, f as n,
|
|
2
|
-
import { i as u, n as d, r as f, t as p } from "../locale-
|
|
3
|
-
import { C as m, S as h, _ as g, a as _, b as v, c as y, g as b, h as x, i as S, l as C, m as w, o as T, r as E, u as D, v as O, x as k, y as A } from "../mcp-transport-
|
|
1
|
+
import { a as e, d as t, f as n, i as r, l as i, m as a, o, p as s, r as c, u as l } from "../utils-BPWZsX7k.js";
|
|
2
|
+
import { i as u, n as d, r as f, t as p } from "../locale-DDvZDFVn.js";
|
|
3
|
+
import { C as m, S as h, _ as g, a as _, b as v, c as y, g as b, h as x, i as S, l as C, m as w, o as T, r as E, u as D, v as O, x as k, y as A } from "../mcp-transport-H96VG3WY.js";
|
|
4
4
|
import { NextResponse as j } from "next/server";
|
|
5
|
+
//#region src/adapters/nextjs/mcp-handler.ts
|
|
6
|
+
function M(e, t) {
|
|
7
|
+
let n = new TextEncoder(), r = g(), i = new ReadableStream({ start(e) {
|
|
8
|
+
e.enqueue(n.encode(v({
|
|
9
|
+
jsonrpc: "2.0",
|
|
10
|
+
method: "mcp/ready",
|
|
11
|
+
params: { protocol: "streamable-http" }
|
|
12
|
+
}, r, 15e3)));
|
|
13
|
+
} }), a = new Headers({
|
|
14
|
+
"Content-Type": "text/event-stream",
|
|
15
|
+
"Cache-Control": "no-cache",
|
|
16
|
+
Connection: "keep-alive"
|
|
17
|
+
});
|
|
18
|
+
return t(e, a), new j(i, {
|
|
19
|
+
status: 200,
|
|
20
|
+
headers: a
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async function N(e, t) {
|
|
24
|
+
let n = h(e.headers.get("origin"), t.allowedOrigins ? { allowedOrigins: t.allowedOrigins } : {});
|
|
25
|
+
if (!n.valid) return { response: j.json(S(null, -32600, n.reason), { status: 403 }) };
|
|
26
|
+
let r = e.headers.get("accept");
|
|
27
|
+
if (!k(r)) return { response: j.json(S(null, -32600, "Accept header must include both application/json and text/event-stream"), { status: 400 }) };
|
|
28
|
+
let i = x(Object.fromEntries(e.headers.entries()));
|
|
29
|
+
if (!i.ok) return { response: j.json({
|
|
30
|
+
error: "Unsupported MCP protocol version",
|
|
31
|
+
supported: i.supported
|
|
32
|
+
}, { status: 426 }) };
|
|
33
|
+
let a;
|
|
34
|
+
try {
|
|
35
|
+
a = await e.json();
|
|
36
|
+
} catch {
|
|
37
|
+
a = null;
|
|
38
|
+
}
|
|
39
|
+
let o = b(a);
|
|
40
|
+
return o ? {
|
|
41
|
+
rpcRequest: o,
|
|
42
|
+
acceptHeader: r
|
|
43
|
+
} : { response: j.json(S(null, -32600, "Invalid JSON-RPC 2.0 request"), { status: 400 }) };
|
|
44
|
+
}
|
|
45
|
+
function P(e, t, n, r = {}) {
|
|
46
|
+
let i = new TextEncoder(), a = g(), o = new ReadableStream({ start(e) {
|
|
47
|
+
e.enqueue(i.encode(`id: ${a}\n\n`)), e.enqueue(i.encode(v(t, a))), e.close();
|
|
48
|
+
} }), s = new Headers({
|
|
49
|
+
"Content-Type": "text/event-stream",
|
|
50
|
+
"Cache-Control": "no-cache",
|
|
51
|
+
Connection: "keep-alive",
|
|
52
|
+
...r
|
|
53
|
+
});
|
|
54
|
+
return n(e, s), new j(o, {
|
|
55
|
+
status: 200,
|
|
56
|
+
headers: s
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function F(e, t, n) {
|
|
60
|
+
let r = e && t && typeof t == "object" && "sessionId" in t ? t.sessionId : void 0;
|
|
61
|
+
return r ? { [n]: r } : {};
|
|
62
|
+
}
|
|
63
|
+
function I(e, t) {
|
|
64
|
+
let n = e?.code ?? -32603, r = e?.data, i = e.message || "MCP request failed";
|
|
65
|
+
return S(t ?? null, n, i, r);
|
|
66
|
+
}
|
|
67
|
+
//#endregion
|
|
5
68
|
//#region src/adapters/nextjs/index.ts
|
|
6
|
-
function
|
|
69
|
+
function L(e) {
|
|
7
70
|
let { cubes: t, drizzle: n, schema: r, engineType: i, cache: a, rlsSetup: o } = e;
|
|
8
71
|
if (!t || t.length === 0) throw Error("At least one cube must be provided in the cubes array");
|
|
9
72
|
let s = new u({
|
|
@@ -17,7 +80,7 @@ function M(e) {
|
|
|
17
80
|
s.registerCube(e);
|
|
18
81
|
}), s;
|
|
19
82
|
}
|
|
20
|
-
function
|
|
83
|
+
function R(e) {
|
|
21
84
|
return {
|
|
22
85
|
extractSecurityContext: async (t, n) => f(await e.extractSecurityContext(t, n), d((e) => t.headers.get(e))),
|
|
23
86
|
cors: e.cors ? {
|
|
@@ -26,13 +89,13 @@ function N(e) {
|
|
|
26
89
|
} : void 0
|
|
27
90
|
};
|
|
28
91
|
}
|
|
29
|
-
function
|
|
92
|
+
function z(e, t) {
|
|
30
93
|
let n = e.headers.get("origin"), r = {};
|
|
31
94
|
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;
|
|
32
95
|
}
|
|
33
|
-
function
|
|
96
|
+
function B(e) {
|
|
34
97
|
return async function(t) {
|
|
35
|
-
let n =
|
|
98
|
+
let n = z(t, {
|
|
36
99
|
...e,
|
|
37
100
|
allowedHeaders: p(e.allowedHeaders)
|
|
38
101
|
});
|
|
@@ -42,8 +105,8 @@ function F(e) {
|
|
|
42
105
|
});
|
|
43
106
|
};
|
|
44
107
|
}
|
|
45
|
-
function
|
|
46
|
-
let { extractSecurityContext: t, cors: n } =
|
|
108
|
+
function V(e) {
|
|
109
|
+
let { extractSecurityContext: t, cors: n } = R(e), i = L(e);
|
|
47
110
|
return async function(e, a) {
|
|
48
111
|
try {
|
|
49
112
|
let o;
|
|
@@ -52,35 +115,35 @@ function I(e) {
|
|
|
52
115
|
o = t.query || t;
|
|
53
116
|
} else if (e.method === "GET") {
|
|
54
117
|
let t = e.nextUrl.searchParams.get("query");
|
|
55
|
-
if (!t) return j.json(
|
|
118
|
+
if (!t) return j.json(r("Query parameter is required", 400), { status: 400 });
|
|
56
119
|
try {
|
|
57
120
|
o = JSON.parse(t);
|
|
58
121
|
} catch {
|
|
59
|
-
return j.json(
|
|
122
|
+
return j.json(r("Invalid JSON in query parameter", 400), { status: 400 });
|
|
60
123
|
}
|
|
61
|
-
} else return j.json(
|
|
62
|
-
let s = await t(e, a), l =
|
|
63
|
-
if (!l.isValid) return j.json(
|
|
64
|
-
let u = e.headers.get("x-cache-control") === "no-cache", d = await
|
|
65
|
-
return j.json(f, { headers: n ?
|
|
124
|
+
} else return j.json(r("Method not allowed", 405), { status: 405 });
|
|
125
|
+
let s = await t(e, a), l = i.validateQuery(o);
|
|
126
|
+
if (!l.isValid) return j.json(r(`Query validation failed: ${l.errors.join(", ")}`, 400), { status: 400 });
|
|
127
|
+
let u = e.headers.get("x-cache-control") === "no-cache", d = await i.executeMultiCubeQuery(o, s, { skipCache: u }), f = c(o, d, i);
|
|
128
|
+
return j.json(f, { headers: n ? z(e, n) : {} });
|
|
66
129
|
} catch (e) {
|
|
67
|
-
return process.env.NODE_ENV !== "test" && console.error("Next.js load handler error:", e), j.json(
|
|
130
|
+
return process.env.NODE_ENV !== "test" && console.error("Next.js load handler error:", e), j.json(r(e instanceof Error ? e.message : "Query execution failed", 500), { status: 500 });
|
|
68
131
|
}
|
|
69
132
|
};
|
|
70
133
|
}
|
|
71
|
-
function
|
|
72
|
-
let { cors: n } =
|
|
134
|
+
function H(t) {
|
|
135
|
+
let { cors: n } = R(t), i = L(t);
|
|
73
136
|
return async function(t, a) {
|
|
74
137
|
try {
|
|
75
|
-
let
|
|
76
|
-
return j.json(
|
|
138
|
+
let r = e(i.getMetadata());
|
|
139
|
+
return j.json(r, { headers: n ? z(t, n) : {} });
|
|
77
140
|
} catch (e) {
|
|
78
|
-
return process.env.NODE_ENV !== "test" && console.error("Next.js meta handler error:", e), j.json(
|
|
141
|
+
return process.env.NODE_ENV !== "test" && console.error("Next.js meta handler error:", e), j.json(r(e instanceof Error ? e.message : "Failed to fetch metadata", 500), { status: 500 });
|
|
79
142
|
}
|
|
80
143
|
};
|
|
81
144
|
}
|
|
82
|
-
function
|
|
83
|
-
let { extractSecurityContext: t, cors: n } =
|
|
145
|
+
function U(e) {
|
|
146
|
+
let { extractSecurityContext: t, cors: n } = R(e), i = L(e);
|
|
84
147
|
return async function(e, a) {
|
|
85
148
|
try {
|
|
86
149
|
let s;
|
|
@@ -89,32 +152,32 @@ function R(e) {
|
|
|
89
152
|
s = t.query || t;
|
|
90
153
|
} else if (e.method === "GET") {
|
|
91
154
|
let t = e.nextUrl.searchParams.get("query");
|
|
92
|
-
if (!t) return j.json(
|
|
155
|
+
if (!t) return j.json(r("Query parameter is required", 400), { status: 400 });
|
|
93
156
|
try {
|
|
94
157
|
s = JSON.parse(t);
|
|
95
158
|
} catch {
|
|
96
|
-
return j.json(
|
|
159
|
+
return j.json(r("Invalid JSON in query parameter", 400), { status: 400 });
|
|
97
160
|
}
|
|
98
|
-
} else return j.json(
|
|
99
|
-
let c = await t(e, a), l =
|
|
100
|
-
if (!l.isValid) return j.json(
|
|
161
|
+
} else return j.json(r("Method not allowed", 405), { status: 405 });
|
|
162
|
+
let c = await t(e, a), l = i.validateQuery(s);
|
|
163
|
+
if (!l.isValid) return j.json(r(`Query validation failed: ${l.errors.join(", ")}`, 400), { status: 400 });
|
|
101
164
|
let u = s.measures?.[0] || s.dimensions?.[0];
|
|
102
|
-
if (!u) return j.json(
|
|
103
|
-
let d = u.split(".")[0], f = await
|
|
104
|
-
return j.json(p, { headers: n ?
|
|
165
|
+
if (!u) return j.json(r("No measures or dimensions specified", 400), { status: 400 });
|
|
166
|
+
let d = u.split(".")[0], f = await i.generateSQL(d, s, c), p = o(s, f);
|
|
167
|
+
return j.json(p, { headers: n ? z(e, n) : {} });
|
|
105
168
|
} catch (e) {
|
|
106
|
-
return process.env.NODE_ENV !== "test" && console.error("Next.js SQL handler error:", e), j.json(
|
|
169
|
+
return process.env.NODE_ENV !== "test" && console.error("Next.js SQL handler error:", e), j.json(r(e instanceof Error ? e.message : "SQL generation failed", 500), { status: 500 });
|
|
107
170
|
}
|
|
108
171
|
};
|
|
109
172
|
}
|
|
110
|
-
function
|
|
111
|
-
let { extractSecurityContext: t, cors:
|
|
112
|
-
return async function(e,
|
|
173
|
+
function W(e) {
|
|
174
|
+
let { extractSecurityContext: t, cors: n } = R(e), r = L(e);
|
|
175
|
+
return async function(e, i) {
|
|
113
176
|
try {
|
|
114
|
-
let
|
|
177
|
+
let a;
|
|
115
178
|
if (e.method === "POST") {
|
|
116
179
|
let t = await e.json();
|
|
117
|
-
|
|
180
|
+
a = t.query || t;
|
|
118
181
|
} else if (e.method === "GET") {
|
|
119
182
|
let t = e.nextUrl.searchParams.get("query");
|
|
120
183
|
if (!t) return j.json({
|
|
@@ -122,7 +185,7 @@ function z(e) {
|
|
|
122
185
|
valid: !1
|
|
123
186
|
}, { status: 400 });
|
|
124
187
|
try {
|
|
125
|
-
|
|
188
|
+
a = JSON.parse(t);
|
|
126
189
|
} catch {
|
|
127
190
|
return j.json({
|
|
128
191
|
error: "Invalid JSON in query parameter",
|
|
@@ -133,8 +196,8 @@ function z(e) {
|
|
|
133
196
|
error: "Method not allowed",
|
|
134
197
|
valid: !1
|
|
135
198
|
}, { status: 405 });
|
|
136
|
-
let
|
|
137
|
-
return j.json(
|
|
199
|
+
let o = await t(e, i), s = await l(a, o, r);
|
|
200
|
+
return j.json(s, { headers: n ? z(e, n) : {} });
|
|
138
201
|
} catch (e) {
|
|
139
202
|
return process.env.NODE_ENV !== "test" && console.error("Next.js dry-run handler error:", e), j.json({
|
|
140
203
|
error: e instanceof Error ? e.message : "Dry-run validation failed",
|
|
@@ -143,145 +206,106 @@ function z(e) {
|
|
|
143
206
|
}
|
|
144
207
|
};
|
|
145
208
|
}
|
|
146
|
-
function
|
|
147
|
-
let { extractSecurityContext: t, cors: n } =
|
|
148
|
-
return async function(e,
|
|
209
|
+
function G(e) {
|
|
210
|
+
let { extractSecurityContext: t, cors: n } = R(e), a = L(e);
|
|
211
|
+
return async function(e, o) {
|
|
149
212
|
try {
|
|
150
|
-
if (e.method !== "POST") return j.json(
|
|
151
|
-
let { queries:
|
|
152
|
-
if (!
|
|
153
|
-
if (
|
|
154
|
-
let
|
|
155
|
-
return j.json(
|
|
213
|
+
if (e.method !== "POST") return j.json(r("Method not allowed - use POST", 405), { status: 405 });
|
|
214
|
+
let { queries: s } = await e.json();
|
|
215
|
+
if (!s || !Array.isArray(s)) return j.json(r("Request body must contain a \"queries\" array", 400), { status: 400 });
|
|
216
|
+
if (s.length === 0) return j.json(r("Queries array cannot be empty", 400), { status: 400 });
|
|
217
|
+
let c = await i(s, await t(e, o), a, { skipCache: e.headers.get("x-cache-control") === "no-cache" });
|
|
218
|
+
return j.json(c, { headers: n ? z(e, n) : {} });
|
|
156
219
|
} catch (e) {
|
|
157
|
-
return process.env.NODE_ENV !== "test" && console.error("Next.js batch handler error:", e), j.json(
|
|
220
|
+
return process.env.NODE_ENV !== "test" && console.error("Next.js batch handler error:", e), j.json(r(e instanceof Error ? e.message : "Batch execution failed", 500), { status: 500 });
|
|
158
221
|
}
|
|
159
222
|
};
|
|
160
223
|
}
|
|
161
|
-
function
|
|
162
|
-
let { extractSecurityContext: t, cors: n } =
|
|
224
|
+
function K(e) {
|
|
225
|
+
let { extractSecurityContext: t, cors: n } = R(e), r = L(e);
|
|
163
226
|
return async function(e, i) {
|
|
164
227
|
try {
|
|
165
228
|
if (e.method !== "POST") return j.json({ error: "Method not allowed" }, { status: 405 });
|
|
166
229
|
let a = await e.json(), o = a.query || a, s = a.options || {}, c = await t(e, i), l = r.validateQuery(o);
|
|
167
230
|
if (!l.isValid) return j.json({ error: `Query validation failed: ${l.errors.join(", ")}` }, { status: 400 });
|
|
168
231
|
let u = await r.explainQuery(o, c, s);
|
|
169
|
-
return j.json(u, { headers: n ?
|
|
232
|
+
return j.json(u, { headers: n ? z(e, n) : {} });
|
|
170
233
|
} catch (e) {
|
|
171
234
|
return process.env.NODE_ENV !== "test" && console.error("Next.js explain handler error:", e), j.json({ error: e instanceof Error ? e.message : "Explain query failed" }, { status: 500 });
|
|
172
235
|
}
|
|
173
236
|
};
|
|
174
237
|
}
|
|
175
|
-
function
|
|
176
|
-
let { cors:
|
|
177
|
-
return async function(e,
|
|
238
|
+
function q(e) {
|
|
239
|
+
let { cors: t } = R(e), n = L(e);
|
|
240
|
+
return async function(e, i) {
|
|
178
241
|
try {
|
|
179
|
-
if (e.method !== "POST") return j.json(
|
|
180
|
-
let
|
|
181
|
-
return j.json(
|
|
242
|
+
if (e.method !== "POST") return j.json(r("Method not allowed - use POST", 405), { status: 405 });
|
|
243
|
+
let i = await s(n, await e.json());
|
|
244
|
+
return j.json(i, { headers: t ? z(e, t) : {} });
|
|
182
245
|
} catch (e) {
|
|
183
|
-
return process.env.NODE_ENV !== "test" && console.error("Next.js discover handler error:", e), j.json(
|
|
246
|
+
return process.env.NODE_ENV !== "test" && console.error("Next.js discover handler error:", e), j.json(r(e instanceof Error ? e.message : "Discovery failed", 500), { status: 500 });
|
|
184
247
|
}
|
|
185
248
|
};
|
|
186
249
|
}
|
|
187
|
-
function
|
|
188
|
-
let { cors:
|
|
189
|
-
return async function(e,
|
|
250
|
+
function J(e) {
|
|
251
|
+
let { cors: n } = R(e), i = L(e);
|
|
252
|
+
return async function(e, a) {
|
|
190
253
|
try {
|
|
191
|
-
if (e.method !== "POST") return j.json(
|
|
192
|
-
let
|
|
193
|
-
if (!
|
|
194
|
-
let o = await
|
|
195
|
-
return j.json(o, { headers:
|
|
254
|
+
if (e.method !== "POST") return j.json(r("Method not allowed - use POST", 405), { status: 405 });
|
|
255
|
+
let a = await e.json();
|
|
256
|
+
if (!a.naturalLanguage) return j.json(r("naturalLanguage field is required", 400), { status: 400 });
|
|
257
|
+
let o = await t(i, a);
|
|
258
|
+
return j.json(o, { headers: n ? z(e, n) : {} });
|
|
196
259
|
} catch (e) {
|
|
197
|
-
return process.env.NODE_ENV !== "test" && console.error("Next.js suggest handler error:", e), j.json(
|
|
260
|
+
return process.env.NODE_ENV !== "test" && console.error("Next.js suggest handler error:", e), j.json(r(e instanceof Error ? e.message : "Query suggestion failed", 500), { status: 500 });
|
|
198
261
|
}
|
|
199
262
|
};
|
|
200
263
|
}
|
|
201
|
-
function
|
|
202
|
-
let { cors: t } =
|
|
264
|
+
function Y(e) {
|
|
265
|
+
let { cors: t } = R(e), i = L(e);
|
|
203
266
|
return async function(e, a) {
|
|
204
267
|
try {
|
|
205
|
-
if (e.method !== "POST") return j.json(
|
|
268
|
+
if (e.method !== "POST") return j.json(r("Method not allowed - use POST", 405), { status: 405 });
|
|
206
269
|
let a = await e.json();
|
|
207
|
-
if (!a.query) return j.json(
|
|
208
|
-
let o = await
|
|
209
|
-
return j.json(o, { headers: t ?
|
|
270
|
+
if (!a.query) return j.json(r("query field is required", 400), { status: 400 });
|
|
271
|
+
let o = await n(i, a);
|
|
272
|
+
return j.json(o, { headers: t ? z(e, t) : {} });
|
|
210
273
|
} catch (e) {
|
|
211
|
-
return process.env.NODE_ENV !== "test" && console.error("Next.js validate handler error:", e), j.json(
|
|
274
|
+
return process.env.NODE_ENV !== "test" && console.error("Next.js validate handler error:", e), j.json(r(e instanceof Error ? e.message : "Query validation failed", 500), { status: 500 });
|
|
212
275
|
}
|
|
213
276
|
};
|
|
214
277
|
}
|
|
215
|
-
function
|
|
216
|
-
let { extractSecurityContext: t, cors: n } =
|
|
217
|
-
return async function(e,
|
|
278
|
+
function X(e) {
|
|
279
|
+
let { extractSecurityContext: t, cors: n } = R(e), i = L(e);
|
|
280
|
+
return async function(e, o) {
|
|
218
281
|
try {
|
|
219
|
-
if (e.method !== "POST") return j.json(
|
|
220
|
-
let
|
|
221
|
-
if (!
|
|
222
|
-
let c = await
|
|
223
|
-
return j.json(c, { headers: n ?
|
|
282
|
+
if (e.method !== "POST") return j.json(r("Method not allowed - use POST", 405), { status: 405 });
|
|
283
|
+
let s = await e.json();
|
|
284
|
+
if (!s.query) return j.json(r("query field is required", 400), { status: 400 });
|
|
285
|
+
let c = await a(i, await t(e, o), s);
|
|
286
|
+
return j.json(c, { headers: n ? z(e, n) : {} });
|
|
224
287
|
} catch (e) {
|
|
225
|
-
return process.env.NODE_ENV !== "test" && console.error("Next.js MCP load handler error:", e), j.json(
|
|
288
|
+
return process.env.NODE_ENV !== "test" && console.error("Next.js MCP load handler error:", e), j.json(r(e instanceof Error ? e.message : "Query execution failed", 500), { status: 500 });
|
|
226
289
|
}
|
|
227
290
|
};
|
|
228
291
|
}
|
|
229
|
-
function
|
|
230
|
-
let { extractSecurityContext: t, cors: n } =
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
if (
|
|
237
|
-
|
|
238
|
-
let t = new TextEncoder(), r = g(), i = new ReadableStream({ start(e) {
|
|
239
|
-
e.enqueue(t.encode(v({
|
|
240
|
-
jsonrpc: "2.0",
|
|
241
|
-
method: "mcp/ready",
|
|
242
|
-
params: { protocol: "streamable-http" }
|
|
243
|
-
}, r, 15e3)));
|
|
244
|
-
} }), a = new Headers({
|
|
245
|
-
"Content-Type": "text/event-stream",
|
|
246
|
-
"Cache-Control": "no-cache",
|
|
247
|
-
Connection: "keep-alive"
|
|
248
|
-
});
|
|
249
|
-
if (n) {
|
|
250
|
-
let t = P(e, n);
|
|
251
|
-
Object.entries(t).forEach(([e, t]) => a.set(e, t));
|
|
252
|
-
}
|
|
253
|
-
return new j(i, {
|
|
254
|
-
status: 200,
|
|
255
|
-
headers: a
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
if (e.method !== "POST") return j.json(i("Method not allowed - use POST", 405), { status: 405 });
|
|
259
|
-
let l = h(e.headers.get("origin"), r.allowedOrigins ? { allowedOrigins: r.allowedOrigins } : {});
|
|
260
|
-
if (!l.valid) return j.json(S(null, -32600, l.reason), { status: 403 });
|
|
261
|
-
let u = e.headers.get("accept");
|
|
262
|
-
if (!k(u)) return j.json(S(null, -32600, "Accept header must include both application/json and text/event-stream"), { status: 400 });
|
|
263
|
-
let d = x(Object.fromEntries(e.headers.entries()));
|
|
264
|
-
if (!d.ok) return j.json({
|
|
265
|
-
error: "Unsupported MCP protocol version",
|
|
266
|
-
supported: d.supported
|
|
267
|
-
}, { status: 426 });
|
|
268
|
-
let f;
|
|
269
|
-
try {
|
|
270
|
-
f = await e.json();
|
|
271
|
-
} catch {
|
|
272
|
-
f = null;
|
|
273
|
-
}
|
|
274
|
-
let p = b(f);
|
|
275
|
-
if (!p) return j.json(S(null, -32600, "Invalid JSON-RPC 2.0 request"), { status: 400 });
|
|
276
|
-
let T = m(u), O = p.method === "initialize", A = (t, r = 200, i = {}) => j.json(t, {
|
|
292
|
+
function Z(e) {
|
|
293
|
+
let { extractSecurityContext: t, cors: n } = R(e), { mcp: i = { enabled: !0 } } = e, a = L(e), o = T(a, i.resources), s = A(i.prompts), c = O(i.instructions), l = (e, t) => {
|
|
294
|
+
if (!n) return;
|
|
295
|
+
let r = z(e, n);
|
|
296
|
+
Object.entries(r).forEach(([e, n]) => t.set(e, n));
|
|
297
|
+
}, u = async (e) => {
|
|
298
|
+
let r = await N(e, i);
|
|
299
|
+
if (r.response) return r.response;
|
|
300
|
+
let u = r.rpcRequest, d = m(r.acceptHeader), f = u.method === "initialize", p = (t, r = 200, i = {}) => j.json(t, {
|
|
277
301
|
status: r,
|
|
278
302
|
headers: {
|
|
279
|
-
...n ?
|
|
303
|
+
...n ? z(e, n) : {},
|
|
280
304
|
...i
|
|
281
305
|
}
|
|
282
306
|
});
|
|
283
307
|
try {
|
|
284
|
-
let
|
|
308
|
+
let n = await C(u.method, u.params, {
|
|
285
309
|
semanticLayer: a,
|
|
286
310
|
extractSecurityContext: (e) => t(e),
|
|
287
311
|
rawRequest: e,
|
|
@@ -289,66 +313,35 @@ function K(e) {
|
|
|
289
313
|
resources: o,
|
|
290
314
|
prompts: s,
|
|
291
315
|
instructions: c,
|
|
292
|
-
appEnabled: !!
|
|
293
|
-
appConfig: typeof
|
|
294
|
-
serverName:
|
|
316
|
+
appEnabled: !!i.app,
|
|
317
|
+
appConfig: typeof i.app == "object" ? i.app : void 0,
|
|
318
|
+
serverName: i.serverName
|
|
295
319
|
});
|
|
296
|
-
if (w(
|
|
297
|
-
let
|
|
298
|
-
|
|
299
|
-
let d = _(p.id ?? null, i);
|
|
300
|
-
if (T) {
|
|
301
|
-
let t = new TextEncoder(), r = g(), i = new ReadableStream({ start(e) {
|
|
302
|
-
e.enqueue(t.encode(`id: ${r}\n\n`)), e.enqueue(t.encode(v(d, r))), e.close();
|
|
303
|
-
} }), a = new Headers({
|
|
304
|
-
"Content-Type": "text/event-stream",
|
|
305
|
-
"Cache-Control": "no-cache",
|
|
306
|
-
Connection: "keep-alive",
|
|
307
|
-
...u
|
|
308
|
-
});
|
|
309
|
-
if (n) {
|
|
310
|
-
let t = P(e, n);
|
|
311
|
-
Object.entries(t).forEach(([e, t]) => a.set(e, t));
|
|
312
|
-
}
|
|
313
|
-
return new j(i, {
|
|
314
|
-
status: 200,
|
|
315
|
-
headers: a
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
return A(d, 200, u);
|
|
320
|
+
if (w(u)) return new j(null, { status: 202 });
|
|
321
|
+
let r = F(f, n, E), m = _(u.id ?? null, n);
|
|
322
|
+
return d ? P(e, m, l, r) : p(m, 200, r);
|
|
319
323
|
} catch (t) {
|
|
320
|
-
if (w(
|
|
324
|
+
if (w(u)) return process.env.NODE_ENV !== "test" && console.error("Next.js MCP notification processing error:", t), new j(null, { status: 202 });
|
|
321
325
|
process.env.NODE_ENV !== "test" && console.error("Next.js MCP RPC handler error:", t);
|
|
322
|
-
let
|
|
323
|
-
|
|
324
|
-
let t = new TextEncoder(), r = g(), i = new ReadableStream({ start(e) {
|
|
325
|
-
e.enqueue(t.encode(`id: ${r}\n\n`)), e.enqueue(t.encode(v(o, r))), e.close();
|
|
326
|
-
} }), a = new Headers({
|
|
327
|
-
"Content-Type": "text/event-stream",
|
|
328
|
-
"Cache-Control": "no-cache",
|
|
329
|
-
Connection: "keep-alive"
|
|
330
|
-
});
|
|
331
|
-
if (n) {
|
|
332
|
-
let t = P(e, n);
|
|
333
|
-
Object.entries(t).forEach(([e, t]) => a.set(e, t));
|
|
334
|
-
}
|
|
335
|
-
return new j(i, {
|
|
336
|
-
status: 200,
|
|
337
|
-
headers: a
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
|
-
return A(o, 200);
|
|
326
|
+
let n = I(t, u.id);
|
|
327
|
+
return d ? P(e, n, l) : p(n, 200);
|
|
341
328
|
}
|
|
342
329
|
};
|
|
330
|
+
return async function(e) {
|
|
331
|
+
return i.resourceMetadataUrl && !D(e.headers.get("authorization")) ? j.json({ error: "Bearer token required" }, {
|
|
332
|
+
status: 401,
|
|
333
|
+
headers: { "WWW-Authenticate": y(i.resourceMetadataUrl) }
|
|
334
|
+
}) : e.method === "DELETE" ? j.json({ error: "Session termination not supported" }, { status: 405 }) : e.method === "GET" ? M(e, l) : e.method === "POST" ? u(e) : j.json(r("Method not allowed - use POST", 405), { status: 405 });
|
|
335
|
+
};
|
|
343
336
|
}
|
|
344
|
-
function
|
|
345
|
-
let { extractSecurityContext: t, cors: n } =
|
|
337
|
+
function Q(e) {
|
|
338
|
+
let { extractSecurityContext: t, cors: n } = R(e), { agent: r } = e;
|
|
346
339
|
if (!r) throw Error("agent config is required for createAgentChatHandler");
|
|
347
|
-
let i =
|
|
340
|
+
let i = L(e);
|
|
348
341
|
return async function(e, a) {
|
|
349
342
|
try {
|
|
350
343
|
if (e.method !== "POST") return j.json({ error: "Method not allowed - use POST" }, { status: 405 });
|
|
351
|
-
let { handleAgentChat: o } = await import("../handler-
|
|
344
|
+
let { handleAgentChat: o } = await import("../handler-CfgE0JSL.js"), { message: s, sessionId: c, history: l } = await e.json();
|
|
352
345
|
if (!s || typeof s != "string") return j.json({ error: "message is required and must be a string" }, { status: 400 });
|
|
353
346
|
let u = (r.apiKey || "").trim();
|
|
354
347
|
if (r.allowClientApiKey) {
|
|
@@ -390,7 +383,7 @@ function q(e) {
|
|
|
390
383
|
Connection: "keep-alive"
|
|
391
384
|
});
|
|
392
385
|
if (n) {
|
|
393
|
-
let t =
|
|
386
|
+
let t = z(e, n);
|
|
394
387
|
Object.entries(t).forEach(([e, t]) => v.set(e, t));
|
|
395
388
|
}
|
|
396
389
|
return new Response(_, {
|
|
@@ -402,16 +395,16 @@ function q(e) {
|
|
|
402
395
|
}
|
|
403
396
|
};
|
|
404
397
|
}
|
|
405
|
-
function
|
|
398
|
+
function $(e) {
|
|
406
399
|
let { mcp: t = { enabled: !0 } } = e, n = {
|
|
407
|
-
load:
|
|
408
|
-
meta:
|
|
409
|
-
sql:
|
|
410
|
-
dryRun:
|
|
411
|
-
batch:
|
|
412
|
-
explain:
|
|
400
|
+
load: V(e),
|
|
401
|
+
meta: H(e),
|
|
402
|
+
sql: U(e),
|
|
403
|
+
dryRun: W(e),
|
|
404
|
+
batch: G(e),
|
|
405
|
+
explain: K(e)
|
|
413
406
|
};
|
|
414
|
-
return t.enabled !== !1 && (n.mcpRpc =
|
|
407
|
+
return t.enabled !== !1 && (n.mcpRpc = Z(e)), e.agent && (n.agentChat = Q(e)), n;
|
|
415
408
|
}
|
|
416
409
|
//#endregion
|
|
417
|
-
export {
|
|
410
|
+
export { Q as createAgentChatHandler, G as createBatchHandler, $ as createCubeHandlers, q as createDiscoverHandler, W as createDryRunHandler, K as createExplainHandler, V as createLoadHandler, X as createMcpLoadHandler, Z as createMcpRpcHandler, H as createMetaHandler, B as createOptionsHandler, U as createSqlHandler, J as createSuggestHandler, Y as createValidateHandler };
|