drizzle-cube 0.6.2 → 0.6.3
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/ActivityGridChart.config-BtECymia.cjs +1 -0
- package/dist/adapters/ActivityGridChart.config-CTd5HYjI.js +2 -0
- package/dist/adapters/AreaChart.config-1B8iQnfn.js +2 -0
- package/dist/adapters/AreaChart.config-hnncyQL4.cjs +1 -0
- package/dist/adapters/BarChart.config-C-QCf1rL.cjs +1 -0
- package/dist/adapters/BarChart.config-CFelK1qP.js +2 -0
- package/dist/adapters/BoxPlotChart.config-CD9WEPyF.js +2 -0
- package/dist/adapters/BoxPlotChart.config-DEbLA0BX.cjs +1 -0
- package/dist/adapters/BubbleChart.config-B_M4hzzV.js +2 -0
- package/dist/adapters/BubbleChart.config-dRZZlAke.cjs +1 -0
- package/dist/adapters/CandlestickChart.config-Dsil2Fop.cjs +1 -0
- package/dist/adapters/CandlestickChart.config-fuhyFvob.js +2 -0
- package/dist/adapters/DataTable.config-q2gqBi6t.cjs +1 -0
- package/dist/adapters/DataTable.config-wIQnHX5R.js +2 -0
- package/dist/adapters/FunnelChart.config-Dz710ssx.js +2 -0
- package/dist/adapters/FunnelChart.config-YNP9CeS-.cjs +1 -0
- package/dist/adapters/GaugeChart.config-BG9FcMCn.cjs +1 -0
- package/dist/adapters/GaugeChart.config-CgwniXkd.js +2 -0
- package/dist/adapters/HeatMapChart.config-1zSMXXoN.cjs +1 -0
- package/dist/adapters/HeatMapChart.config-YVEWx6s5.js +2 -0
- package/dist/adapters/KpiDelta.config-BWvYXuFp.cjs +1 -0
- package/dist/adapters/KpiDelta.config-C_dYM64q.js +2 -0
- package/dist/adapters/KpiNumber.config-CXg6toZG.js +2 -0
- package/dist/adapters/KpiNumber.config-CZmV-yU1.cjs +1 -0
- package/dist/adapters/KpiText.config-BY-SJvAF.js +2 -0
- package/dist/adapters/KpiText.config-GSIxy0CE.cjs +1 -0
- package/dist/adapters/LineChart.config-CJtF8SOu.js +2 -0
- package/dist/adapters/LineChart.config-d0y60gw9.cjs +1 -0
- package/dist/adapters/MarkdownChart.config-B6w0spya.cjs +1 -0
- package/dist/adapters/MarkdownChart.config-BuIQcWOn.js +2 -0
- package/dist/adapters/MeasureProfileChart.config-Bo2n5Ae5.cjs +1 -0
- package/dist/adapters/MeasureProfileChart.config-C5d34lsc.js +2 -0
- package/dist/adapters/PieChart.config-CDxfXCIt.cjs +1 -0
- package/dist/adapters/PieChart.config-CuZxQc5m.js +2 -0
- package/dist/adapters/RadarChart.config-DpdVWyh5.cjs +1 -0
- package/dist/adapters/RadarChart.config-KrxwaaGu.js +2 -0
- package/dist/adapters/RadialBarChart.config-DpRZd0FW.js +2 -0
- package/dist/adapters/RadialBarChart.config-faIY4jpE.cjs +1 -0
- package/dist/adapters/RetentionCombinedChart.config-CUnScqnS.cjs +1 -0
- package/dist/adapters/RetentionCombinedChart.config-Dd8FuawP.js +2 -0
- package/dist/adapters/RetentionHeatmap.config-CPd6GeoQ.js +2 -0
- package/dist/adapters/RetentionHeatmap.config-CPlHbLom.cjs +1 -0
- package/dist/adapters/SankeyChart.config-DbIUqi-H.cjs +1 -0
- package/dist/adapters/SankeyChart.config-kzAnW0C7.js +2 -0
- package/dist/adapters/ScatterChart.config-4Okvn27v.js +2 -0
- package/dist/adapters/ScatterChart.config-4f9nNw3e.cjs +1 -0
- package/dist/adapters/SunburstChart.config-BsUQkIM_.js +2 -0
- package/dist/adapters/SunburstChart.config-lvnYkWs7.cjs +1 -0
- package/dist/adapters/TreeMapChart.config-S0qsgAFW.js +2 -0
- package/dist/adapters/TreeMapChart.config-jbwKsTYt.cjs +1 -0
- package/dist/adapters/WaterfallChart.config-CDQ74-pS.cjs +1 -0
- package/dist/adapters/WaterfallChart.config-XdtH-O5g.js +2 -0
- package/dist/adapters/chartConfigHelpers-CcvqrIWF.js +72 -0
- package/dist/adapters/chartConfigHelpers-DHQB-_v5.cjs +1 -0
- package/dist/adapters/{locale-ZLUUNUxr.cjs → compiler-ChGO4ZLU.cjs} +1 -1
- package/dist/adapters/{locale-DDvZDFVn.js → compiler-LKTN9PTt.js} +2 -21
- package/dist/adapters/core/cube-http-handler.d.ts +27 -0
- package/dist/adapters/core/http-port.d.ts +39 -0
- package/dist/adapters/core/index.cjs +1 -0
- package/dist/adapters/core/index.d.ts +11 -0
- package/dist/adapters/core/index.js +2 -0
- package/dist/adapters/core/mcp-handler.d.ts +13 -0
- package/dist/adapters/core/rest-handlers.d.ts +14 -0
- package/dist/adapters/core/security-context.d.ts +17 -0
- package/dist/adapters/core-Bbchr0ui.js +244 -0
- package/dist/adapters/core-F1pCQPde.cjs +1 -0
- package/dist/adapters/express/index.cjs +2 -2
- package/dist/adapters/express/index.js +93 -201
- package/dist/adapters/fastify/index.cjs +2 -2
- package/dist/adapters/fastify/index.js +79 -217
- package/dist/adapters/handler-DRZb2ip6.cjs +25 -0
- package/dist/adapters/{handler-CtaSua-i.js → handler-u8FyzPBT.js} +1572 -1500
- package/dist/adapters/hono/index.cjs +2 -2
- package/dist/adapters/hono/index.js +69 -225
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +1 -1
- package/dist/adapters/mcp-transport-Bw_zqky2.js +591 -0
- package/dist/adapters/mcp-transport-CNIPoe1i.cjs +40 -0
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.d.ts +8 -9
- package/dist/adapters/nextjs/index.js +181 -288
- package/dist/adapters/nextjs/mcp-handler.d.ts +0 -28
- package/dist/adapters/{openai-D-6l1Y8h.cjs → openai-B4kAJTSD.cjs} +1 -1
- package/dist/adapters/{openai-DTSTMiXL.cjs → openai-Cdf2wWZA.cjs} +1 -1
- package/dist/adapters/{openai-CmVRIbUg.js → openai-CmMzrs1Y.js} +1 -1
- package/dist/adapters/{openai-CtXqeznO.js → openai-DhzGY9R4.js} +1 -1
- package/dist/cjs/adapters/core/cube-http-handler.d.ts +27 -0
- package/dist/cjs/adapters/core/http-port.d.ts +39 -0
- package/dist/cjs/adapters/core/index.d.ts +11 -0
- package/dist/cjs/adapters/core/mcp-handler.d.ts +13 -0
- package/dist/cjs/adapters/core/rest-handlers.d.ts +14 -0
- package/dist/cjs/adapters/core/security-context.d.ts +17 -0
- package/dist/cjs/adapters/nextjs/index.d.ts +8 -9
- package/dist/cjs/adapters/nextjs/mcp-handler.d.ts +0 -28
- package/dist/cjs/client/charts/chartComponentRegistry.d.ts +1 -9
- package/dist/cjs/client/charts/chartConfigRegistry.d.ts +5 -1
- package/dist/cjs/client/charts/chartPlugin.d.ts +1 -2
- package/dist/cjs/client/charts/chartRegistry.d.ts +73 -0
- package/dist/cjs/client/components/AIAssistant/index.d.ts +2 -2
- package/dist/cjs/client/components/charts/ActivityGridChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/AreaChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/BarChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/BoxPlotChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/BubbleChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/CandlestickChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/DataTable.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/FunnelChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/GaugeChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/HeatMapChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/KpiDelta.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/KpiNumber.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/KpiText.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/LineChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/MarkdownChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/MeasureProfileChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/PieChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/RadarChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/RadialBarChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/SankeyChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/ScatterChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/SunburstChart.config.d.ts +5 -0
- package/dist/cjs/client/components/charts/TreeMapChart.config.d.ts +6 -1
- package/dist/cjs/client/components/charts/WaterfallChart.config.d.ts +6 -1
- package/dist/cjs/client/hooks/analysisQueryExecutionModes.d.ts +1 -1
- package/dist/cjs/client/hooks/useAnalysisEffects.d.ts +33 -0
- package/dist/{client/hooks/useAnalysisQueryExecution.d.ts → cjs/client/hooks/useAnalysisQuery.d.ts} +3 -3
- package/dist/cjs/client/hooks/useAnalysisState.d.ts +165 -0
- package/dist/cjs/client/icons/registry.d.ts +0 -6
- package/dist/cjs/client/icons/types.d.ts +5 -0
- package/dist/client/charts/chartComponentRegistry.d.ts +1 -9
- package/dist/client/charts/chartConfigRegistry.d.ts +5 -1
- package/dist/client/charts/chartPlugin.d.ts +1 -2
- package/dist/client/charts/chartRegistry.d.ts +73 -0
- package/dist/client/charts.js +3 -3
- package/dist/client/chunks/{DashboardEditModal-okVfH8ZK.js → DashboardEditModal-CWurUU2B.js} +7 -7
- package/dist/client/chunks/{DashboardEditModal-okVfH8ZK.js.map → DashboardEditModal-CWurUU2B.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-DB88FojM.js → analysis-builder-Uj_Fxv0-.js} +1588 -1857
- package/dist/client/chunks/analysis-builder-Uj_Fxv0-.js.map +1 -0
- package/dist/client/chunks/{analysis-builder-shared-BVK4TYfR.js → analysis-builder-shared-AdAYIfj_.js} +1531 -1266
- package/dist/client/chunks/analysis-builder-shared-AdAYIfj_.js.map +1 -0
- package/dist/client/chunks/{chart-config-activity-grid-D_UX4NHC.js → chart-config-activity-grid-BU_bkvER.js} +1 -11
- package/dist/client/chunks/chart-config-activity-grid-BU_bkvER.js.map +1 -0
- package/dist/client/chunks/{chart-config-area-BNigHUy8.js → chart-config-area-DxwIZ4Uf.js} +1 -5
- package/dist/client/chunks/{chart-config-area-BNigHUy8.js.map → chart-config-area-DxwIZ4Uf.js.map} +1 -1
- package/dist/client/chunks/{chart-config-bar-DSO_LRTx.js → chart-config-bar-Cc8GY9aQ.js} +5 -9
- package/dist/client/chunks/chart-config-bar-Cc8GY9aQ.js.map +1 -0
- package/dist/client/chunks/{chart-config-box-plot-oW8axV2q.js → chart-config-box-plot-Bs8ovYvV.js} +3 -8
- package/dist/client/chunks/chart-config-box-plot-Bs8ovYvV.js.map +1 -0
- package/dist/client/chunks/{chart-config-bubble-gIoqVyjZ.js → chart-config-bubble-BfgY7pt8.js} +1 -11
- package/dist/client/chunks/chart-config-bubble-BfgY7pt8.js.map +1 -0
- package/dist/client/chunks/{chart-config-candlestick-N6DchAA3.js → chart-config-candlestick-jaeNNEtC.js} +1 -11
- package/dist/client/chunks/chart-config-candlestick-jaeNNEtC.js.map +1 -0
- package/dist/client/chunks/{chart-config-data-table-d7VBY-y_.js → chart-config-data-table-CRk0C0rW.js} +1 -4
- package/dist/client/chunks/chart-config-data-table-CRk0C0rW.js.map +1 -0
- package/dist/client/chunks/{chart-config-funnel-DEYMcxsD.js → chart-config-funnel-boT_LNfl.js} +1 -4
- package/dist/client/chunks/chart-config-funnel-boT_LNfl.js.map +1 -0
- package/dist/client/chunks/{chart-config-gauge-Dq-_H9UN.js → chart-config-gauge-C5uJEr97.js} +3 -8
- package/dist/client/chunks/chart-config-gauge-C5uJEr97.js.map +1 -0
- package/dist/client/chunks/{chart-config-heat-map-CfRnRNcw.js → chart-config-heat-map-CCarP44-.js} +1 -11
- package/dist/client/chunks/chart-config-heat-map-CCarP44-.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-delta-DSQbvqu_.js → chart-config-kpi-delta-DYopvwyG.js} +3 -8
- package/dist/client/chunks/chart-config-kpi-delta-DYopvwyG.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-number-EFSWY1We.js → chart-config-kpi-number-BhMdoArB.js} +3 -8
- package/dist/client/chunks/chart-config-kpi-number-BhMdoArB.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-text-KM3V5X2u.js → chart-config-kpi-text-DE6Zdi53.js} +3 -8
- package/dist/client/chunks/chart-config-kpi-text-DE6Zdi53.js.map +1 -0
- package/dist/client/chunks/{chart-config-line-D6jG8PCH.js → chart-config-line-CBfM0Rds.js} +6 -10
- package/dist/client/chunks/chart-config-line-CBfM0Rds.js.map +1 -0
- package/dist/client/chunks/{chart-config-markdown-BtRIe8JN.js → chart-config-markdown-BCDyBI8K.js} +1 -4
- package/dist/client/chunks/chart-config-markdown-BCDyBI8K.js.map +1 -0
- package/dist/client/chunks/{chart-config-measure-profile-DxRGa-zf.js → chart-config-measure-profile-BgQIH1u2.js} +1 -8
- package/dist/client/chunks/chart-config-measure-profile-BgQIH1u2.js.map +1 -0
- package/dist/client/chunks/{chart-config-pie-BhzW-fdn.js → chart-config-pie-ChfFz6DV.js} +5 -9
- package/dist/client/chunks/chart-config-pie-ChfFz6DV.js.map +1 -0
- package/dist/client/chunks/{chart-config-radar-D7REP1q_.js → chart-config-radar-BlAIGnww.js} +5 -9
- package/dist/client/chunks/chart-config-radar-BlAIGnww.js.map +1 -0
- package/dist/client/chunks/{chart-config-radial-bar-Byx6qOPU.js → chart-config-radial-bar-VFerwbCO.js} +5 -9
- package/dist/client/chunks/chart-config-radial-bar-VFerwbCO.js.map +1 -0
- package/dist/client/chunks/{chart-config-sankey-BTnWA7EW.js → chart-config-sankey-BhrDxIgj.js} +1 -4
- package/dist/client/chunks/chart-config-sankey-BhrDxIgj.js.map +1 -0
- package/dist/client/chunks/{chart-config-scatter-DSYTjwRb.js → chart-config-scatter-q_olh54e.js} +1 -11
- package/dist/client/chunks/chart-config-scatter-q_olh54e.js.map +1 -0
- package/dist/client/chunks/{chart-config-sunburst-Bwjtdf7X.js → chart-config-sunburst-BOmkOnKn.js} +1 -4
- package/dist/client/chunks/chart-config-sunburst-BOmkOnKn.js.map +1 -0
- package/dist/client/chunks/{chart-config-tree-map-DVrvf3yQ.js → chart-config-tree-map-BjX88YBY.js} +5 -9
- package/dist/client/chunks/chart-config-tree-map-BjX88YBY.js.map +1 -0
- package/dist/client/chunks/{chart-config-waterfall-DmFeQdIk.js → chart-config-waterfall-QsWXVSoF.js} +3 -8
- package/dist/client/chunks/chart-config-waterfall-QsWXVSoF.js.map +1 -0
- package/dist/client/chunks/{chart-data-table-CKauQXme.js → chart-data-table-D4g5_jfF.js} +1277 -1094
- package/dist/client/chunks/chart-data-table-D4g5_jfF.js.map +1 -0
- package/dist/client/chunks/{chart-kpi-delta-Dn-jjO-2.js → chart-kpi-delta-BvWOt8-D.js} +2 -2
- package/dist/client/chunks/{chart-kpi-delta-Dn-jjO-2.js.map → chart-kpi-delta-BvWOt8-D.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-P_WBiO5S.js → chart-kpi-number-xgZmMiQY.js} +3 -3
- package/dist/client/chunks/{chart-kpi-number-P_WBiO5S.js.map → chart-kpi-number-xgZmMiQY.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-C-Y4eb5H.js → chart-kpi-text-ZO3eFi7t.js} +2 -2
- package/dist/client/chunks/{chart-kpi-text-C-Y4eb5H.js.map → chart-kpi-text-ZO3eFi7t.js.map} +1 -1
- package/dist/client/chunks/{charts-loader-DdTeCeNo.js → charts-loader-B0DOQMFH.js} +6 -6
- package/dist/client/chunks/{charts-loader-DdTeCeNo.js.map → charts-loader-B0DOQMFH.js.map} +1 -1
- package/dist/client/chunks/{schema-visualization-Cb_E9_Gd.js → schema-visualization-DJPTktM6.js} +2 -2
- package/dist/client/chunks/{schema-visualization-Cb_E9_Gd.js.map → schema-visualization-DJPTktM6.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-MbpxH_v6.js → useDirtyStateTracking-BY_IIG1n.js} +2 -2
- package/dist/client/chunks/{useDirtyStateTracking-MbpxH_v6.js.map → useDirtyStateTracking-BY_IIG1n.js.map} +1 -1
- package/dist/client/chunks/{useExplainAI-evnZkjCY.js → useExplainAI-PjMBmj2p.js} +4 -4
- package/dist/client/chunks/{useExplainAI-evnZkjCY.js.map → useExplainAI-PjMBmj2p.js.map} +1 -1
- package/dist/client/chunks/{utils-3P6z1vz5.js → utils-Cq-j5E5I.js} +2 -2
- package/dist/client/chunks/{utils-3P6z1vz5.js.map → utils-Cq-j5E5I.js.map} +1 -1
- package/dist/client/chunks/{vendor-DSpR0IW6.js → vendor-D4jADu8t.js} +2 -2
- package/dist/client/chunks/{vendor-DSpR0IW6.js.map → vendor-D4jADu8t.js.map} +1 -1
- package/dist/client/components/AIAssistant/index.d.ts +2 -2
- package/dist/client/components/charts/ActivityGridChart.config.d.ts +6 -1
- package/dist/client/components/charts/AreaChart.config.d.ts +6 -1
- package/dist/client/components/charts/BarChart.config.d.ts +6 -1
- package/dist/client/components/charts/BoxPlotChart.config.d.ts +6 -1
- package/dist/client/components/charts/BubbleChart.config.d.ts +6 -1
- package/dist/client/components/charts/CandlestickChart.config.d.ts +6 -1
- package/dist/client/components/charts/DataTable.config.d.ts +6 -1
- package/dist/client/components/charts/FunnelChart.config.d.ts +5 -0
- package/dist/client/components/charts/GaugeChart.config.d.ts +6 -1
- package/dist/client/components/charts/HeatMapChart.config.d.ts +6 -1
- package/dist/client/components/charts/KpiDelta.config.d.ts +6 -1
- package/dist/client/components/charts/KpiNumber.config.d.ts +6 -1
- package/dist/client/components/charts/KpiText.config.d.ts +6 -1
- package/dist/client/components/charts/LineChart.config.d.ts +6 -1
- package/dist/client/components/charts/MarkdownChart.config.d.ts +6 -1
- package/dist/client/components/charts/MeasureProfileChart.config.d.ts +6 -1
- package/dist/client/components/charts/PieChart.config.d.ts +6 -1
- package/dist/client/components/charts/RadarChart.config.d.ts +6 -1
- package/dist/client/components/charts/RadialBarChart.config.d.ts +6 -1
- package/dist/client/components/charts/SankeyChart.config.d.ts +5 -0
- package/dist/client/components/charts/ScatterChart.config.d.ts +6 -1
- package/dist/client/components/charts/SunburstChart.config.d.ts +5 -0
- package/dist/client/components/charts/TreeMapChart.config.d.ts +6 -1
- package/dist/client/components/charts/WaterfallChart.config.d.ts +6 -1
- package/dist/client/components.js +2 -2
- package/dist/client/hooks/analysisQueryExecutionModes.d.ts +1 -1
- package/dist/client/hooks/useAnalysisEffects.d.ts +33 -0
- package/dist/{cjs/client/hooks/useAnalysisQueryExecution.d.ts → client/hooks/useAnalysisQuery.d.ts} +3 -3
- package/dist/client/hooks/useAnalysisState.d.ts +165 -0
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons/registry.d.ts +0 -6
- package/dist/client/icons/types.d.ts +5 -0
- package/dist/client/icons.js +1 -1
- package/dist/client/index.js +9 -9
- package/dist/client/providers.js +1 -1
- package/dist/client/schema.js +1 -1
- package/dist/client/utils.js +3 -3
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +34 -34
- package/dist/server/chartConfigHelpers-CcvqrIWF.js +72 -0
- package/dist/server/chartConfigHelpers-DHQB-_v5.cjs +1 -0
- package/dist/server/index.cjs +68 -68
- package/dist/server/index.js +3800 -3728
- package/dist/server/{openai-D-6l1Y8h.cjs → openai-B4kAJTSD.cjs} +1 -1
- package/dist/server/{openai-DTSTMiXL.cjs → openai-Cdf2wWZA.cjs} +1 -1
- package/dist/server/{openai-CmVRIbUg.js → openai-CmMzrs1Y.js} +1 -1
- package/dist/server/{openai-CtXqeznO.js → openai-DhzGY9R4.js} +1 -1
- package/package.json +12 -2
- package/dist/adapters/handler-OwxSBJH8.cjs +0 -25
- package/dist/adapters/hono/mcp-handler.d.ts +0 -37
- package/dist/adapters/mcp-transport-B7ddET3M.cjs +0 -40
- package/dist/adapters/mcp-transport-Dfuj4j4q.js +0 -591
- package/dist/cjs/adapters/hono/mcp-handler.d.ts +0 -37
- package/dist/cjs/client/hooks/useAnalysisAI.d.ts +0 -56
- package/dist/cjs/client/hooks/useAnalysisChartDefaults.d.ts +0 -35
- package/dist/cjs/client/hooks/useAnalysisCombinedFields.d.ts +0 -18
- package/dist/cjs/client/hooks/useAnalysisInitialization.d.ts +0 -25
- package/dist/cjs/client/hooks/useAnalysisQueryBuilder.d.ts +0 -32
- package/dist/cjs/client/hooks/useAnalysisShare.d.ts +0 -18
- package/dist/cjs/client/hooks/useAnalysisUIState.d.ts +0 -24
- package/dist/client/chunks/analysis-builder-DB88FojM.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-BVK4TYfR.js.map +0 -1
- package/dist/client/chunks/chart-config-activity-grid-D_UX4NHC.js.map +0 -1
- package/dist/client/chunks/chart-config-bar-DSO_LRTx.js.map +0 -1
- package/dist/client/chunks/chart-config-box-plot-oW8axV2q.js.map +0 -1
- package/dist/client/chunks/chart-config-bubble-gIoqVyjZ.js.map +0 -1
- package/dist/client/chunks/chart-config-candlestick-N6DchAA3.js.map +0 -1
- package/dist/client/chunks/chart-config-data-table-d7VBY-y_.js.map +0 -1
- package/dist/client/chunks/chart-config-funnel-DEYMcxsD.js.map +0 -1
- package/dist/client/chunks/chart-config-gauge-Dq-_H9UN.js.map +0 -1
- package/dist/client/chunks/chart-config-heat-map-CfRnRNcw.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-delta-DSQbvqu_.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-number-EFSWY1We.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-text-KM3V5X2u.js.map +0 -1
- package/dist/client/chunks/chart-config-line-D6jG8PCH.js.map +0 -1
- package/dist/client/chunks/chart-config-markdown-BtRIe8JN.js.map +0 -1
- package/dist/client/chunks/chart-config-measure-profile-DxRGa-zf.js.map +0 -1
- package/dist/client/chunks/chart-config-pie-BhzW-fdn.js.map +0 -1
- package/dist/client/chunks/chart-config-radar-D7REP1q_.js.map +0 -1
- package/dist/client/chunks/chart-config-radial-bar-Byx6qOPU.js.map +0 -1
- package/dist/client/chunks/chart-config-sankey-BTnWA7EW.js.map +0 -1
- package/dist/client/chunks/chart-config-scatter-DSYTjwRb.js.map +0 -1
- package/dist/client/chunks/chart-config-sunburst-Bwjtdf7X.js.map +0 -1
- package/dist/client/chunks/chart-config-tree-map-DVrvf3yQ.js.map +0 -1
- package/dist/client/chunks/chart-config-waterfall-DmFeQdIk.js.map +0 -1
- package/dist/client/chunks/chart-data-table-CKauQXme.js.map +0 -1
- package/dist/client/hooks/useAnalysisAI.d.ts +0 -56
- package/dist/client/hooks/useAnalysisChartDefaults.d.ts +0 -35
- package/dist/client/hooks/useAnalysisCombinedFields.d.ts +0 -18
- package/dist/client/hooks/useAnalysisInitialization.d.ts +0 -25
- package/dist/client/hooks/useAnalysisQueryBuilder.d.ts +0 -32
- package/dist/client/hooks/useAnalysisShare.d.ts +0 -18
- package/dist/client/hooks/useAnalysisUIState.d.ts +0 -24
|
@@ -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-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
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../compiler-ChGO4ZLU.cjs"),t=require("../mcp-transport-CNIPoe1i.cjs"),n=require("../core-F1pCQPde.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})}};function a(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 o(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 s(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 c(e,t,n,r){try{let{handleAgentChat:i}=await Promise.resolve().then(()=>require("../handler-DRZb2ip6.cjs")),{message:c,sessionId:l,history:u}=await e.req.json();if(!c||typeof c!=`string`)return e.json({error:`message is required and must be a string`},400);let d=a(e,t);if(!d)return e.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},401);let{providerOverride:f,modelOverride:p,baseURLOverride:m}=o(e,t),h=await r(e),g=t.buildSystemContext?.(h);return s(i({message:c,sessionId:l,history:u,semanticLayer:n,securityContext:h,agentConfig:t,apiKey:d,systemContext:g,providerOverride:f,modelOverride:p,baseURLOverride:m}))}catch(t){return console.error(`Agent chat error:`,t),e.json({error:t instanceof Error?t.message:`Agent chat failed`},500)}}function l(e){return{getHeader:t=>e.req.header(t),getBody:async()=>{try{return await e.req.json()}catch{return null}},getQueryParam:t=>e.req.query(t),send:(t,n)=>e.json(n,t),setHeader:(t,n)=>{e.header(t,n)},sendEmpty:t=>e.body(null,t),sendSse:(t,n)=>(e.header(`Content-Type`,`text/event-stream`),e.header(`Cache-Control`,`no-cache`),e.header(`Connection`,`keep-alive`),e.body(n,t))}}function u(a){let{cubes:o,drizzle:s,schema:u,extractSecurityContext:d,engineType:f,cors:p,basePath:m=`/cubejs-api/v1`,cache:h,mcp:g={enabled:!0},agent:_}=a;if(!a.semanticLayer&&(!o||o.length===0))throw Error(`Either semanticLayer or a non-empty cubes array must be provided`);let v=new r.Hono;if(p){let e={...p,allowHeaders:n.i(p.allowHeaders)};v.use(`/*`,i(e))}let y=a.semanticLayer??new e.t({drizzle:s,schema:u,engineType:f,cache:h,rlsSetup:a.rlsSetup});!a.semanticLayer&&o&&o.forEach(e=>{y.registerCube(e)});let b=n.t({semanticLayer:y,onError:e=>console.error(`Query execution error:`,e),mcp:g}),x=e=>()=>d(e);if(v.post(`${m}/load`,e=>b.handleLoadPost(l(e),x(e))),v.get(`${m}/load`,e=>b.handleLoadGet(l(e),x(e))),v.post(`${m}/batch`,e=>b.handleBatchPost(l(e),x(e))),v.get(`${m}/meta`,e=>b.handleMetaGet(l(e))),v.post(`${m}/sql`,e=>b.handleSqlPost(l(e),x(e))),v.get(`${m}/sql`,e=>b.handleSqlGet(l(e),x(e))),v.post(`${m}/dry-run`,e=>b.handleDryRunPost(l(e),x(e))),v.get(`${m}/dry-run`,e=>b.handleDryRunGet(l(e),x(e))),v.post(`${m}/explain`,e=>b.handleExplainPost(l(e),x(e))),_&&v.post(`${m}/agent/chat`,e=>c(e,_,y,e=>Promise.resolve(d(e)).then(t=>n.r(t,t=>e.req.header(t))))),g.enabled!==!1){let e=g.basePath??`/mcp`;v.post(`${e}`,e=>b.handleMcpPost(l(e),x(e))),v.delete(`${e}`,e=>g.resourceMetadataUrl&&!t.u(e.req.header(`authorization`))?(e.header(`WWW-Authenticate`,t.c(g.resourceMetadataUrl)),e.json({error:`Bearer token required`},401)):e.json({error:`Session termination not supported`},405)),v.get(`${e}`,e=>{if(g.resourceMetadataUrl&&!t.u(e.req.header(`authorization`)))return e.header(`WWW-Authenticate`,t.c(g.resourceMetadataUrl)),e.json({error:`Bearer token required`},401);let n=new TextEncoder,r=t._(),i,a=new ReadableStream({start(e){e.enqueue(n.encode(t.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},r,15e3))),i=setInterval(()=>{e.enqueue(n.encode(`: keep-alive
|
|
2
2
|
|
|
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
|
|
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 v}function d(e,t){let n=u(t);return e.route(`/`,n),e}function f(e){return d(new r.Hono,e)}exports.createCubeApp=f,exports.createCubeRoutes=u,exports.mountCubeRoutes=d;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { Hono as
|
|
1
|
+
import { t as e } from "../compiler-LKTN9PTt.js";
|
|
2
|
+
import { _ as t, b as n, c as r, u as i } from "../mcp-transport-Bw_zqky2.js";
|
|
3
|
+
import { i as a, r as o, t as s } from "../core-Bbchr0ui.js";
|
|
4
|
+
import { Hono as c } from "hono";
|
|
5
5
|
//#region node_modules/hono/dist/middleware/cors/index.js
|
|
6
|
-
var
|
|
6
|
+
var l = (e) => {
|
|
7
7
|
let t = {
|
|
8
8
|
origin: "*",
|
|
9
9
|
allowMethods: [
|
|
@@ -42,71 +42,8 @@ var D = (e) => {
|
|
|
42
42
|
};
|
|
43
43
|
};
|
|
44
44
|
//#endregion
|
|
45
|
-
//#region src/adapters/hono/mcp-handler.ts
|
|
46
|
-
async function O(e, t) {
|
|
47
|
-
if (t.resourceMetadataUrl && !S(e.req.header("authorization"))) return e.header("WWW-Authenticate", m(t.resourceMetadataUrl)), { response: e.json({ error: "Bearer token required" }, 401) };
|
|
48
|
-
let n = u(e.req.header("origin"), t.allowedOrigins ? { allowedOrigins: t.allowedOrigins } : {});
|
|
49
|
-
if (!n.valid) return { response: e.json(_(null, -32600, n.reason), 403) };
|
|
50
|
-
let r = e.req.header("accept");
|
|
51
|
-
if (!w(r)) return { response: e.json(_(null, -32600, "Accept header must include both application/json and text/event-stream"), 400) };
|
|
52
|
-
let i = g(e.req.header());
|
|
53
|
-
if (!i.ok) return { response: e.json({
|
|
54
|
-
error: "Unsupported MCP protocol version",
|
|
55
|
-
supported: i.supported
|
|
56
|
-
}, 426) };
|
|
57
|
-
let a = h(await e.req.json().catch(() => null));
|
|
58
|
-
return a ? {
|
|
59
|
-
rpcRequest: a,
|
|
60
|
-
acceptHeader: r,
|
|
61
|
-
negotiatedProtocol: i.negotiated
|
|
62
|
-
} : { response: e.json(_(null, -32600, "Invalid JSON-RPC 2.0 request"), 400) };
|
|
63
|
-
}
|
|
64
|
-
function k(e, t) {
|
|
65
|
-
let n = new TextEncoder(), r = d(), i = new ReadableStream({ start(t) {
|
|
66
|
-
t.enqueue(n.encode(`id: ${r}\n\n`)), t.enqueue(n.encode(p(e, r))), t.close();
|
|
67
|
-
} });
|
|
68
|
-
return new Response(i, {
|
|
69
|
-
status: 200,
|
|
70
|
-
headers: {
|
|
71
|
-
"Content-Type": "text/event-stream",
|
|
72
|
-
"Cache-Control": "no-cache",
|
|
73
|
-
Connection: "keep-alive",
|
|
74
|
-
...t
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
function A(e, t, n) {
|
|
79
|
-
let r = e && t && typeof t == "object" && "sessionId" in t ? t.sessionId : void 0;
|
|
80
|
-
return r ? { [n]: r } : {};
|
|
81
|
-
}
|
|
82
|
-
function j(e, t) {
|
|
83
|
-
let n = e?.code ?? -32603, r = e?.data, i = e.message || "MCP request failed";
|
|
84
|
-
return _(t ?? null, n, i, r);
|
|
85
|
-
}
|
|
86
|
-
function M(e) {
|
|
87
|
-
return l(e);
|
|
88
|
-
}
|
|
89
|
-
function N(e, t, n, r) {
|
|
90
|
-
if (y(t)) return e.body(null, 202);
|
|
91
|
-
let i = f(t.id ?? null, n), a = A(t.method === "initialize", n, x);
|
|
92
|
-
return r ? k(i, a) : e.json(i, 200, a);
|
|
93
|
-
}
|
|
94
|
-
function P(e, t, n, r) {
|
|
95
|
-
if (y(t)) return console.error("MCP notification processing error:", n), e.body(null, 202);
|
|
96
|
-
console.error("MCP RPC error:", n);
|
|
97
|
-
let i = j(n, t.id);
|
|
98
|
-
return r ? k(i) : e.json(i, 200);
|
|
99
|
-
}
|
|
100
|
-
async function F(e, t, n, r) {
|
|
101
|
-
try {
|
|
102
|
-
return N(e, t, await v(t.method, t.params, r), n);
|
|
103
|
-
} catch (r) {
|
|
104
|
-
return P(e, t, r, n);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
//#endregion
|
|
108
45
|
//#region src/adapters/hono/agent-handler.ts
|
|
109
|
-
function
|
|
46
|
+
function u(e, t) {
|
|
110
47
|
let n = (t.apiKey || "").trim();
|
|
111
48
|
if (t.allowClientApiKey) {
|
|
112
49
|
let t = e.req.header("x-agent-api-key");
|
|
@@ -114,14 +51,14 @@ function I(e, t) {
|
|
|
114
51
|
}
|
|
115
52
|
return n;
|
|
116
53
|
}
|
|
117
|
-
function
|
|
54
|
+
function d(e, t) {
|
|
118
55
|
return t.allowClientApiKey ? {
|
|
119
56
|
providerOverride: e.req.header("x-agent-provider"),
|
|
120
57
|
modelOverride: e.req.header("x-agent-model"),
|
|
121
58
|
baseURLOverride: e.req.header("x-agent-provider-endpoint")
|
|
122
59
|
} : {};
|
|
123
60
|
}
|
|
124
|
-
function
|
|
61
|
+
function f(e) {
|
|
125
62
|
let t = new TextEncoder(), n = new ReadableStream({ async start(n) {
|
|
126
63
|
try {
|
|
127
64
|
for await (let r of e) n.enqueue(t.encode(`data: ${JSON.stringify(r)}\n\n`));
|
|
@@ -144,25 +81,25 @@ function R(e) {
|
|
|
144
81
|
}
|
|
145
82
|
});
|
|
146
83
|
}
|
|
147
|
-
async function
|
|
84
|
+
async function p(e, t, n, r) {
|
|
148
85
|
try {
|
|
149
|
-
let { handleAgentChat: i } = await import("../handler-
|
|
86
|
+
let { handleAgentChat: i } = await import("../handler-u8FyzPBT.js"), { message: a, sessionId: o, history: s } = await e.req.json();
|
|
150
87
|
if (!a || typeof a != "string") return e.json({ error: "message is required and must be a string" }, 400);
|
|
151
|
-
let c =
|
|
88
|
+
let c = u(e, t);
|
|
152
89
|
if (!c) return e.json({ error: "No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header." }, 401);
|
|
153
|
-
let { providerOverride: l, modelOverride:
|
|
154
|
-
return
|
|
90
|
+
let { providerOverride: l, modelOverride: p, baseURLOverride: m } = d(e, t), h = await r(e), g = t.buildSystemContext?.(h);
|
|
91
|
+
return f(i({
|
|
155
92
|
message: a,
|
|
156
93
|
sessionId: o,
|
|
157
94
|
history: s,
|
|
158
95
|
semanticLayer: n,
|
|
159
|
-
securityContext:
|
|
96
|
+
securityContext: h,
|
|
160
97
|
agentConfig: t,
|
|
161
98
|
apiKey: c,
|
|
162
|
-
systemContext:
|
|
99
|
+
systemContext: g,
|
|
163
100
|
providerOverride: l,
|
|
164
|
-
modelOverride:
|
|
165
|
-
baseURLOverride:
|
|
101
|
+
modelOverride: p,
|
|
102
|
+
baseURLOverride: m
|
|
166
103
|
}));
|
|
167
104
|
} catch (t) {
|
|
168
105
|
return console.error("Agent chat error:", t), e.json({ error: t instanceof Error ? t.message : "Agent chat failed" }, 500);
|
|
@@ -170,163 +107,70 @@ async function z(e, t, n, r) {
|
|
|
170
107
|
}
|
|
171
108
|
//#endregion
|
|
172
109
|
//#region src/adapters/hono/index.ts
|
|
173
|
-
function
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
110
|
+
function m(e) {
|
|
111
|
+
return {
|
|
112
|
+
getHeader: (t) => e.req.header(t),
|
|
113
|
+
getBody: async () => {
|
|
114
|
+
try {
|
|
115
|
+
return await e.req.json();
|
|
116
|
+
} catch {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
getQueryParam: (t) => e.req.query(t),
|
|
121
|
+
send: (t, n) => e.json(n, t),
|
|
122
|
+
setHeader: (t, n) => {
|
|
123
|
+
e.header(t, n);
|
|
124
|
+
},
|
|
125
|
+
sendEmpty: (t) => e.body(null, t),
|
|
126
|
+
sendSse: (t, n) => (e.header("Content-Type", "text/event-stream"), e.header("Cache-Control", "no-cache"), e.header("Connection", "keep-alive"), e.body(n, t))
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function h(u) {
|
|
130
|
+
let { cubes: d, drizzle: f, schema: h, extractSecurityContext: g, engineType: _, cors: v, basePath: y = "/cubejs-api/v1", cache: b, mcp: x = { enabled: !0 }, agent: S } = u;
|
|
131
|
+
if (!u.semanticLayer && (!d || d.length === 0)) throw Error("Either semanticLayer or a non-empty cubes array must be provided");
|
|
132
|
+
let C = new c();
|
|
177
133
|
if (v) {
|
|
178
134
|
let e = {
|
|
179
135
|
...v,
|
|
180
|
-
allowHeaders:
|
|
136
|
+
allowHeaders: a(v.allowHeaders)
|
|
181
137
|
};
|
|
182
|
-
|
|
138
|
+
C.use("/*", l(e));
|
|
183
139
|
}
|
|
184
|
-
let
|
|
140
|
+
let w = u.semanticLayer ?? new e({
|
|
185
141
|
drizzle: f,
|
|
186
142
|
schema: h,
|
|
187
143
|
engineType: _,
|
|
188
|
-
cache:
|
|
189
|
-
rlsSetup:
|
|
144
|
+
cache: b,
|
|
145
|
+
rlsSetup: u.rlsSetup
|
|
190
146
|
});
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
})
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
let t = e.req.query("query");
|
|
205
|
-
if (!t) return e.json({ error: "Query parameter is required" }, 400);
|
|
206
|
-
let n;
|
|
207
|
-
try {
|
|
208
|
-
n = JSON.parse(t);
|
|
209
|
-
} catch {
|
|
210
|
-
return e.json({ error: "Invalid JSON in query parameter" }, 400);
|
|
211
|
-
}
|
|
212
|
-
let i = await j(e), a = N.validateQuery(n);
|
|
213
|
-
if (!a.isValid) return e.json({ error: `Query validation failed: ${a.errors.join(", ")}` }, 400);
|
|
214
|
-
let o = e.req.header("x-cache-control") === "no-cache", s = await N.executeMultiCubeQuery(n, i, { skipCache: o });
|
|
215
|
-
return e.json(r(n, s, N));
|
|
216
|
-
} catch (t) {
|
|
217
|
-
return console.error("Query execution error:", t), e.json({ error: t instanceof Error ? t.message : "Query execution failed" }, 500);
|
|
218
|
-
}
|
|
219
|
-
}), A.post(`${y}/batch`, async (e) => {
|
|
220
|
-
try {
|
|
221
|
-
let { queries: n } = await e.req.json();
|
|
222
|
-
if (!n || !Array.isArray(n)) return e.json({ error: "Request body must contain a \"queries\" array" }, 400);
|
|
223
|
-
if (n.length === 0) return e.json({ error: "Queries array cannot be empty" }, 400);
|
|
224
|
-
let r = await t(n, await j(e), N, { skipCache: e.req.header("x-cache-control") === "no-cache" });
|
|
225
|
-
return e.json(r);
|
|
226
|
-
} catch (t) {
|
|
227
|
-
return console.error("Batch execution error:", t), e.json({ error: t instanceof Error ? t.message : "Batch execution failed" }, 500);
|
|
228
|
-
}
|
|
229
|
-
}), A.get(`${y}/meta`, (t) => {
|
|
230
|
-
try {
|
|
231
|
-
let n = N.getMetadata();
|
|
232
|
-
return t.json(e(n));
|
|
233
|
-
} catch (e) {
|
|
234
|
-
return console.error("Metadata error:", e), t.json({ error: e instanceof Error ? e.message : "Failed to fetch metadata" }, 500);
|
|
235
|
-
}
|
|
236
|
-
}), A.post(`${y}/sql`, async (e) => {
|
|
237
|
-
try {
|
|
238
|
-
let t = await e.req.json(), r = await j(e), i = N.validateQuery(t);
|
|
239
|
-
if (!i.isValid) return e.json({ error: `Query validation failed: ${i.errors.join(", ")}` }, 400);
|
|
240
|
-
let a = t.measures?.[0] || t.dimensions?.[0];
|
|
241
|
-
if (!a) return e.json({ error: "No measures or dimensions specified" }, 400);
|
|
242
|
-
let o = a.split(".")[0], s = await N.generateSQL(o, t, r);
|
|
243
|
-
return e.json(n(t, s));
|
|
244
|
-
} catch (t) {
|
|
245
|
-
return console.error("SQL generation error:", t), e.json({ error: t instanceof Error ? t.message : "SQL generation failed" }, 500);
|
|
246
|
-
}
|
|
247
|
-
}), A.get(`${y}/sql`, async (e) => {
|
|
248
|
-
try {
|
|
249
|
-
let t = e.req.query("query");
|
|
250
|
-
if (!t) return e.json({ error: "Query parameter is required" }, 400);
|
|
251
|
-
let r = JSON.parse(t), i = await j(e), a = N.validateQuery(r);
|
|
252
|
-
if (!a.isValid) return e.json({ error: `Query validation failed: ${a.errors.join(", ")}` }, 400);
|
|
253
|
-
let o = r.measures?.[0] || r.dimensions?.[0];
|
|
254
|
-
if (!o) return e.json({ error: "No measures or dimensions specified" }, 400);
|
|
255
|
-
let s = o.split(".")[0], c = await N.generateSQL(s, r, i);
|
|
256
|
-
return e.json(n(r, c));
|
|
257
|
-
} catch (t) {
|
|
258
|
-
return console.error("SQL generation error:", t), e.json({ error: t instanceof Error ? t.message : "SQL generation failed" }, 500);
|
|
259
|
-
}
|
|
260
|
-
}), A.post(`${y}/dry-run`, async (e) => {
|
|
261
|
-
try {
|
|
262
|
-
let t = await e.req.json(), n = await i(t.query || t, await j(e), N);
|
|
263
|
-
return e.json(n);
|
|
264
|
-
} catch (t) {
|
|
265
|
-
return console.error("Dry-run error:", t), e.json({
|
|
266
|
-
error: t instanceof Error ? t.message : "Dry-run validation failed",
|
|
267
|
-
valid: !1
|
|
268
|
-
}, 400);
|
|
269
|
-
}
|
|
270
|
-
}), A.get(`${y}/dry-run`, async (e) => {
|
|
271
|
-
try {
|
|
272
|
-
let t = e.req.query("query");
|
|
273
|
-
if (!t) return e.json({
|
|
274
|
-
error: "Query parameter is required",
|
|
275
|
-
valid: !1
|
|
276
|
-
}, 400);
|
|
277
|
-
let n = await i(JSON.parse(t), await j(e), N);
|
|
278
|
-
return e.json(n);
|
|
279
|
-
} catch (t) {
|
|
280
|
-
return console.error("Dry-run error:", t), e.json({
|
|
281
|
-
error: t instanceof Error ? t.message : "Dry-run validation failed",
|
|
282
|
-
valid: !1
|
|
283
|
-
}, 400);
|
|
284
|
-
}
|
|
285
|
-
}), A.post(`${y}/explain`, async (e) => {
|
|
286
|
-
try {
|
|
287
|
-
let t = await e.req.json(), n = t.query || t, r = t.options || {}, i = await j(e), a = N.validateQuery(n);
|
|
288
|
-
if (!a.isValid) return e.json({ error: `Query validation failed: ${a.errors.join(", ")}` }, 400);
|
|
289
|
-
let o = await N.explainQuery(n, i, r);
|
|
290
|
-
return e.json(o);
|
|
291
|
-
} catch (t) {
|
|
292
|
-
return console.error("Explain error:", t), e.json({ error: t instanceof Error ? t.message : "Explain query failed" }, 500);
|
|
293
|
-
}
|
|
294
|
-
}), k && A.post(`${y}/agent/chat`, (e) => z(e, k, N, j)), w.enabled !== !1) {
|
|
295
|
-
let e = b(N, w.resources), t = T(w.prompts), n = C(w.instructions), r = w.basePath ?? "/mcp";
|
|
296
|
-
A.post(`${r}`, async (r) => {
|
|
297
|
-
let i = await O(r, w);
|
|
298
|
-
if (i.response) return i.response;
|
|
299
|
-
let a = i.rpcRequest;
|
|
300
|
-
return F(r, a, M(i.acceptHeader), {
|
|
301
|
-
semanticLayer: N,
|
|
302
|
-
extractSecurityContext: (e, t) => j(e),
|
|
303
|
-
rawRequest: r,
|
|
304
|
-
rawResponse: null,
|
|
305
|
-
negotiatedProtocol: i.negotiatedProtocol,
|
|
306
|
-
resources: e,
|
|
307
|
-
prompts: t,
|
|
308
|
-
instructions: n,
|
|
309
|
-
appEnabled: !!w.app,
|
|
310
|
-
appConfig: typeof w.app == "object" ? w.app : void 0,
|
|
311
|
-
serverName: w.serverName
|
|
312
|
-
});
|
|
313
|
-
}), A.delete(`${r}`, (e) => w.resourceMetadataUrl && !S(e.req.header("authorization")) ? (e.header("WWW-Authenticate", m(w.resourceMetadataUrl)), e.json({ error: "Bearer token required" }, 401)) : e.json({ error: "Session termination not supported" }, 405)), A.get(`${r}`, (e) => {
|
|
314
|
-
if (w.resourceMetadataUrl && !S(e.req.header("authorization"))) return e.header("WWW-Authenticate", m(w.resourceMetadataUrl)), e.json({ error: "Bearer token required" }, 401);
|
|
315
|
-
let t = new TextEncoder(), n = d(), r, i = new ReadableStream({
|
|
147
|
+
!u.semanticLayer && d && d.forEach((e) => {
|
|
148
|
+
w.registerCube(e);
|
|
149
|
+
});
|
|
150
|
+
let T = s({
|
|
151
|
+
semanticLayer: w,
|
|
152
|
+
onError: (e) => console.error("Query execution error:", e),
|
|
153
|
+
mcp: x
|
|
154
|
+
}), E = (e) => () => g(e);
|
|
155
|
+
if (C.post(`${y}/load`, (e) => T.handleLoadPost(m(e), E(e))), C.get(`${y}/load`, (e) => T.handleLoadGet(m(e), E(e))), C.post(`${y}/batch`, (e) => T.handleBatchPost(m(e), E(e))), C.get(`${y}/meta`, (e) => T.handleMetaGet(m(e))), C.post(`${y}/sql`, (e) => T.handleSqlPost(m(e), E(e))), C.get(`${y}/sql`, (e) => T.handleSqlGet(m(e), E(e))), C.post(`${y}/dry-run`, (e) => T.handleDryRunPost(m(e), E(e))), C.get(`${y}/dry-run`, (e) => T.handleDryRunGet(m(e), E(e))), C.post(`${y}/explain`, (e) => T.handleExplainPost(m(e), E(e))), S && C.post(`${y}/agent/chat`, (e) => p(e, S, w, (e) => Promise.resolve(g(e)).then((t) => o(t, (t) => e.req.header(t))))), x.enabled !== !1) {
|
|
156
|
+
let e = x.basePath ?? "/mcp";
|
|
157
|
+
C.post(`${e}`, (e) => T.handleMcpPost(m(e), E(e))), C.delete(`${e}`, (e) => x.resourceMetadataUrl && !i(e.req.header("authorization")) ? (e.header("WWW-Authenticate", r(x.resourceMetadataUrl)), e.json({ error: "Bearer token required" }, 401)) : e.json({ error: "Session termination not supported" }, 405)), C.get(`${e}`, (e) => {
|
|
158
|
+
if (x.resourceMetadataUrl && !i(e.req.header("authorization"))) return e.header("WWW-Authenticate", r(x.resourceMetadataUrl)), e.json({ error: "Bearer token required" }, 401);
|
|
159
|
+
let a = new TextEncoder(), o = t(), s, c = new ReadableStream({
|
|
316
160
|
start(e) {
|
|
317
|
-
e.enqueue(
|
|
161
|
+
e.enqueue(a.encode(n({
|
|
318
162
|
jsonrpc: "2.0",
|
|
319
163
|
method: "mcp/ready",
|
|
320
164
|
params: { protocol: "streamable-http" }
|
|
321
|
-
},
|
|
322
|
-
e.enqueue(
|
|
165
|
+
}, o, 15e3))), s = setInterval(() => {
|
|
166
|
+
e.enqueue(a.encode(": keep-alive\n\n"));
|
|
323
167
|
}, 15e3);
|
|
324
168
|
},
|
|
325
169
|
cancel() {
|
|
326
|
-
clearInterval(
|
|
170
|
+
clearInterval(s);
|
|
327
171
|
}
|
|
328
172
|
});
|
|
329
|
-
return new Response(
|
|
173
|
+
return new Response(c, {
|
|
330
174
|
status: 200,
|
|
331
175
|
headers: {
|
|
332
176
|
"Content-Type": "text/event-stream",
|
|
@@ -336,14 +180,14 @@ function B(l) {
|
|
|
336
180
|
});
|
|
337
181
|
});
|
|
338
182
|
}
|
|
339
|
-
return
|
|
183
|
+
return C;
|
|
340
184
|
}
|
|
341
|
-
function
|
|
342
|
-
let n =
|
|
185
|
+
function g(e, t) {
|
|
186
|
+
let n = h(t);
|
|
343
187
|
return e.route("/", n), e;
|
|
344
188
|
}
|
|
345
|
-
function
|
|
346
|
-
return
|
|
189
|
+
function _(e) {
|
|
190
|
+
return g(new c(), e);
|
|
347
191
|
}
|
|
348
192
|
//#endregion
|
|
349
|
-
export {
|
|
193
|
+
export { _ as createCubeApp, h as createCubeRoutes, g as mountCubeRoutes };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-_whV4fXL.cjs"),t=require("./mcp-transport-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-_whV4fXL.cjs"),t=require("./mcp-transport-CNIPoe1i.cjs");function n(t,n){return e.p(t.semanticLayer,n||{}).then(t.wrapContent)}async function r(t,n,r){let i=n||{};if(!i.query)return t.wrapError(`query is required`);let a;try{a=await t.getSecurityContext(r)}catch{}return t.wrapContent(await e.f(t.semanticLayer,i,a))}async function i(t,n,r){let i=n||{};if(!i.query)return t.wrapError(`query is required`);let a=await t.getSecurityContext(r);return t.wrapContent(await e.m(t.semanticLayer,a,i))}function a(e){return{content:[{type:`text`,text:typeof e==`string`?e:JSON.stringify(e)}],isError:!1}}function o(e){return{content:[{type:`text`,text:e instanceof Error?e.message:String(e)}],isError:!0}}function s(e){let{semanticLayer:s,getSecurityContext:l,toolPrefix:u=`drizzle_cube_`,tools:d=[`discover`,`validate`,`load`,`chart`],prompts:f=t.d(),resources:p,app:m=!1}=e,h=!!m,g=typeof m==`object`?m:void 0,_=p??t.f(),v=h?[..._,...c(g)]:_,y=t.s({appEnabled:h}),b=new Map(y.map(e=>[e.name,e])),x=d.filter(e=>b.has(e)).map(e=>{let t=b.get(e),n={name:`${u}${e}`,description:t.description,inputSchema:t.inputSchema},r=t._meta;return r&&(n._meta=r),n}),S=x.map(e=>e.name),C=new Set;for(let e of d)C.add(e),C.add(`${u}${e}`);function w(e){return C.has(e)}let T={semanticLayer:s,getSecurityContext:l,wrapContent:a,wrapError:o},E={discover:e=>n(T,e),validate:(e,t)=>r(T,e,t),load:(e,t)=>i(T,e,t),chart:(e,t)=>i(T,e,t)};async function D(e,t,n){let r=e.startsWith(u)?e.slice(u.length):e,i=d.includes(r)?E[r]:void 0;if(!i)return o(`Unknown tool: ${e}`);try{return await i(t,n)}catch(e){return o(e)}}return{definitions:x,handle:D,handles:w,prompts:f,resources:v,toolNames:S}}function c(e){let n=t.p(e);return n?[{uri:t.n,name:`Drizzle Cube Visualization`,description:`Interactive chart visualization for query results`,mimeType:t.t,text:n}]:[]}exports.getCubeTools=s;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { f as e, m as t, p as n } from "./utils-BPWZsX7k.js";
|
|
2
|
-
import { d as r, f as i, n as a, p as o, s, t as c } from "./mcp-transport-
|
|
2
|
+
import { d as r, f as i, n as a, p as o, s, t as c } from "./mcp-transport-Bw_zqky2.js";
|
|
3
3
|
//#region src/adapters/mcp-tools-handlers.ts
|
|
4
4
|
function l(e, t) {
|
|
5
5
|
return n(e.semanticLayer, t || {}).then(e.wrapContent);
|