drizzle-cube 0.6.4 → 0.6.5
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-Bvi50jl_.cjs +1 -0
- package/dist/adapters/ActivityGridChart.config-BwswifOD.js +2 -0
- package/dist/adapters/AreaChart.config-Cehf1Kjo.cjs +1 -0
- package/dist/adapters/AreaChart.config-DC-gnmli.js +2 -0
- package/dist/adapters/BarChart.config-BY53r96T.cjs +1 -0
- package/dist/adapters/BarChart.config-DJN5Oqmw.js +2 -0
- package/dist/adapters/BoxPlotChart.config-9hLT3yMs.js +2 -0
- package/dist/adapters/BoxPlotChart.config-D9P4PMTf.cjs +1 -0
- package/dist/adapters/BubbleChart.config-CEVSsy7u.js +2 -0
- package/dist/adapters/BubbleChart.config-Cji0z0Tb.cjs +1 -0
- package/dist/adapters/CandlestickChart.config-DPv76FmM.cjs +1 -0
- package/dist/adapters/CandlestickChart.config-tcHTorLu.js +2 -0
- package/dist/adapters/DataTable.config-D4txBrlQ.cjs +1 -0
- package/dist/adapters/DataTable.config-DrObkanI.js +2 -0
- package/dist/adapters/FunnelChart.config-BFYSkibE.js +2 -0
- package/dist/adapters/FunnelChart.config-BTSFeha-.cjs +1 -0
- package/dist/adapters/GaugeChart.config-BFz6NZfT.js +2 -0
- package/dist/adapters/GaugeChart.config-DJKD6oh8.cjs +1 -0
- package/dist/adapters/HeatMapChart.config-C3EZl9Sy.cjs +1 -0
- package/dist/adapters/HeatMapChart.config-jUCb5NAE.js +2 -0
- package/dist/adapters/KpiDelta.config-DhuealNk.js +2 -0
- package/dist/adapters/KpiDelta.config-m6FEIeWo.cjs +1 -0
- package/dist/adapters/KpiNumber.config-Cmd7eHmg.cjs +1 -0
- package/dist/adapters/KpiNumber.config-KQdKrkK-.js +2 -0
- package/dist/adapters/KpiText.config-D_pU4jH3.cjs +1 -0
- package/dist/adapters/KpiText.config-V8SvhllA.js +2 -0
- package/dist/adapters/LineChart.config-BuWM0TJx.js +2 -0
- package/dist/adapters/LineChart.config-CsxJ3f5A.cjs +1 -0
- package/dist/adapters/MarkdownChart.config-CJdjenj7.cjs +1 -0
- package/dist/adapters/MarkdownChart.config-oCWrAuom.js +2 -0
- package/dist/adapters/MeasureProfileChart.config-DBLnhtOk.cjs +1 -0
- package/dist/adapters/MeasureProfileChart.config-DWg0jzxA.js +2 -0
- package/dist/adapters/PieChart.config-D3qI6nbM.cjs +1 -0
- package/dist/adapters/PieChart.config-R2rcul2D.js +2 -0
- package/dist/adapters/RadarChart.config-BlK8QuDi.js +2 -0
- package/dist/adapters/RadarChart.config-fH3ce10I.cjs +1 -0
- package/dist/adapters/RadialBarChart.config-CqCnb27I.js +2 -0
- package/dist/adapters/RadialBarChart.config-DQQHJOCs.cjs +1 -0
- package/dist/adapters/RetentionCombinedChart.config-BFJ8i-kp.js +2 -0
- package/dist/adapters/RetentionCombinedChart.config-B_Wd_YjX.cjs +1 -0
- package/dist/adapters/RetentionHeatmap.config-BLqu9-Ft.js +2 -0
- package/dist/adapters/RetentionHeatmap.config-MvOPw_Dd.cjs +1 -0
- package/dist/adapters/SankeyChart.config-C_4u9Xiq.js +2 -0
- package/dist/adapters/SankeyChart.config-EH6wsjPr.cjs +1 -0
- package/dist/adapters/ScatterChart.config-D-MlQ7mP.js +2 -0
- package/dist/adapters/ScatterChart.config-DmwiEBN-.cjs +1 -0
- package/dist/adapters/SunburstChart.config-BRr_as_L.js +2 -0
- package/dist/adapters/SunburstChart.config-CptDj8e4.cjs +1 -0
- package/dist/adapters/TreeMapChart.config-D5wX2xaT.cjs +1 -0
- package/dist/adapters/TreeMapChart.config-Dyhwpwq3.js +2 -0
- package/dist/adapters/WaterfallChart.config-B_LGJIov.js +2 -0
- package/dist/adapters/WaterfallChart.config-Q4Fv196W.cjs +1 -0
- package/dist/adapters/{compiler-DyyBaLry.cjs → compiler-D0v5KJhv.cjs} +2 -2
- package/dist/adapters/{compiler-lG6eNsoI.js → compiler-ZruQ85ff.js} +35 -30
- package/dist/adapters/core/index.cjs +1 -1
- package/dist/adapters/core/index.js +1 -1
- package/dist/adapters/{core-F1pCQPde.cjs → core-CVqTwOR3.cjs} +1 -1
- package/dist/adapters/{core-Bbchr0ui.js → core-DoSUiMmv.js} +60 -60
- package/dist/adapters/express/index.cjs +2 -2
- package/dist/adapters/express/index.js +80 -75
- package/dist/adapters/fastify/index.cjs +2 -2
- package/dist/adapters/fastify/index.js +63 -58
- package/dist/adapters/{handler-DRZb2ip6.cjs → handler-DyIyrFFp.cjs} +3 -3
- package/dist/adapters/{handler-u8FyzPBT.js → handler-j74EJDdo.js} +28 -28
- package/dist/adapters/hono/index.cjs +2 -2
- package/dist/adapters/hono/index.js +57 -52
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +2 -2
- package/dist/adapters/mcp-transport-BuU5CrKL.cjs +40 -0
- package/dist/adapters/mcp-transport-l8DhKzR5.js +601 -0
- package/dist/adapters/mcp-transport.d.ts +21 -3
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +110 -105
- package/dist/adapters/{openai-CmMzrs1Y.js → openai-BCSKRcbD.js} +10 -10
- package/dist/{server/openai-DhzGY9R4.js → adapters/openai-BjR3ohaS.js} +1 -1
- package/dist/{server/openai-B4kAJTSD.cjs → adapters/openai-ClVVLjNl.cjs} +2 -2
- package/dist/adapters/{openai-Cdf2wWZA.cjs → openai-CsVXOcJZ.cjs} +1 -1
- package/dist/adapters/utils-CBR-9AMD.cjs +128 -0
- package/dist/adapters/{utils-BPWZsX7k.js → utils-U7gV5wQL.js} +789 -788
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.d.ts +16 -4
- package/dist/adapters/utils.js +1 -1
- package/dist/cjs/adapters/mcp-transport.d.ts +21 -3
- package/dist/cjs/adapters/utils.d.ts +16 -4
- package/dist/cjs/server/executors/sqlite-executor.d.ts +8 -2
- package/dist/client/charts.js +13 -13
- package/dist/client/chunks/ConfirmModal-D6eLc9NO.js +3283 -0
- package/dist/client/chunks/ConfirmModal-D6eLc9NO.js.map +1 -0
- package/dist/client/chunks/{DashboardEditModal-Cs1ig1_V.js → DashboardEditModal-DFQSxR_C.js} +1134 -4389
- package/dist/client/chunks/DashboardEditModal-DFQSxR_C.js.map +1 -0
- package/dist/client/chunks/{RetentionCombinedChart-BgbDhsPz.js → RetentionCombinedChart-DY7wKLs5.js} +3 -3
- package/dist/client/chunks/{RetentionCombinedChart-BgbDhsPz.js.map → RetentionCombinedChart-DY7wKLs5.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-DjXZaTPq.js → RetentionHeatmap-iNCG-dLd.js} +2 -2
- package/dist/client/chunks/{RetentionHeatmap-DjXZaTPq.js.map → RetentionHeatmap-iNCG-dLd.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-B64yaeDe.js → analysis-builder-CBZ7lOC-.js} +311 -311
- package/dist/client/chunks/{analysis-builder-B64yaeDe.js.map → analysis-builder-CBZ7lOC-.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-CD0n2Nb8.js → analysis-builder-shared-8alCn-zw.js} +411 -411
- package/dist/client/chunks/{analysis-builder-shared-CD0n2Nb8.js.map → analysis-builder-shared-8alCn-zw.js.map} +1 -1
- package/dist/client/chunks/{chart-activity-grid-DX0SJbxs.js → chart-activity-grid-DDqFVWoa.js} +5 -2
- package/dist/client/chunks/{chart-activity-grid-DX0SJbxs.js.map → chart-activity-grid-DDqFVWoa.js.map} +1 -1
- package/dist/client/chunks/{chart-area-of01_62R.js → chart-area-BHxPNsmc.js} +2 -2
- package/dist/client/chunks/{chart-area-of01_62R.js.map → chart-area-BHxPNsmc.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-BqelQE_I.js → chart-bar-DAO3PPcE.js} +3 -3
- package/dist/client/chunks/{chart-bar-BqelQE_I.js.map → chart-bar-DAO3PPcE.js.map} +1 -1
- package/dist/client/chunks/{chart-box-plot-kkBixZ27.js → chart-box-plot-CUpFyQQk.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-kkBixZ27.js.map → chart-box-plot-CUpFyQQk.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-B2he1--4.js → chart-bubble-DvP_6_n9.js} +2 -2
- package/dist/client/chunks/{chart-bubble-B2he1--4.js.map → chart-bubble-DvP_6_n9.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-DZp19Tzh.js → chart-candlestick-Dx8ZCMzl.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-DZp19Tzh.js.map → chart-candlestick-Dx8ZCMzl.js.map} +1 -1
- package/dist/client/chunks/{chart-data-table-D4g5_jfF.js → chart-data-table-BP6DMdom.js} +32 -16
- package/dist/client/chunks/chart-data-table-BP6DMdom.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-CToKSBaL.js → chart-funnel-xeVGBy-p.js} +2 -2
- package/dist/client/chunks/{chart-funnel-CToKSBaL.js.map → chart-funnel-xeVGBy-p.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-DTVezSk7.js → chart-gauge-DXQ4r3cb.js} +3 -3
- package/dist/client/chunks/{chart-gauge-DTVezSk7.js.map → chart-gauge-DXQ4r3cb.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-DTuUl0BR.js → chart-heat-map-Pnk6rhqQ.js} +3 -3
- package/dist/client/chunks/{chart-heat-map-DTuUl0BR.js.map → chart-heat-map-Pnk6rhqQ.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-BvWOt8-D.js → chart-kpi-delta-nXQnRRBr.js} +3 -3
- package/dist/client/chunks/{chart-kpi-delta-BvWOt8-D.js.map → chart-kpi-delta-nXQnRRBr.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-xgZmMiQY.js → chart-kpi-number-m8UGJfBr.js} +5 -5
- package/dist/client/chunks/{chart-kpi-number-xgZmMiQY.js.map → chart-kpi-number-m8UGJfBr.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-ZO3eFi7t.js → chart-kpi-text-CurpqmaD.js} +7 -4
- package/dist/client/chunks/{chart-kpi-text-ZO3eFi7t.js.map → chart-kpi-text-CurpqmaD.js.map} +1 -1
- package/dist/client/chunks/{chart-line-DKgrQA6c.js → chart-line-sJK-cJc0.js} +3 -3
- package/dist/client/chunks/{chart-line-DKgrQA6c.js.map → chart-line-sJK-cJc0.js.map} +1 -1
- package/dist/client/chunks/{chart-markdown-CV75S_zL.js → chart-markdown-BVrqqygz.js} +1263 -1192
- package/dist/client/chunks/chart-markdown-BVrqqygz.js.map +1 -0
- package/dist/client/chunks/{chart-measure-profile-Ket8fJyf.js → chart-measure-profile-k9_QDQbB.js} +3 -3
- package/dist/client/chunks/{chart-measure-profile-Ket8fJyf.js.map → chart-measure-profile-k9_QDQbB.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-ByieAX5H.js → chart-pie-BDaaYt7a.js} +3 -3
- package/dist/client/chunks/{chart-pie-ByieAX5H.js.map → chart-pie-BDaaYt7a.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-CiSwHWp4.js → chart-radar-Bz07PIVe.js} +3 -3
- package/dist/client/chunks/{chart-radar-CiSwHWp4.js.map → chart-radar-Bz07PIVe.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-BF6Mhl6f.js → chart-radial-bar-DpyxKQMj.js} +3 -3
- package/dist/client/chunks/{chart-radial-bar-BF6Mhl6f.js.map → chart-radial-bar-DpyxKQMj.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-DjrvKw6K.js → chart-sankey-BAeNbI-p.js} +2 -2
- package/dist/client/chunks/{chart-sankey-DjrvKw6K.js.map → chart-sankey-BAeNbI-p.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-Dd9WFqnS.js → chart-scatter-CRhGLCcy.js} +3 -3
- package/dist/client/chunks/{chart-scatter-Dd9WFqnS.js.map → chart-scatter-CRhGLCcy.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-leGpuDj7.js → chart-sunburst-D3wV5OrK.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-leGpuDj7.js.map → chart-sunburst-D3wV5OrK.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-Ceq5sLZA.js → chart-tree-map-iI3ewOKY.js} +3 -3
- package/dist/client/chunks/{chart-tree-map-Ceq5sLZA.js.map → chart-tree-map-iI3ewOKY.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-DyvQReN5.js → chart-waterfall-BrrYTZfs.js} +3 -3
- package/dist/client/chunks/{chart-waterfall-DyvQReN5.js.map → chart-waterfall-BrrYTZfs.js.map} +1 -1
- package/dist/client/chunks/{charts-core-DaXSt1Dd.js → charts-core-Cs-UIsQa.js} +2 -2
- package/dist/client/chunks/{charts-core-DaXSt1Dd.js.map → charts-core-Cs-UIsQa.js.map} +1 -1
- package/dist/client/chunks/charts-loader-DAJbAD7a.js +84 -0
- package/dist/client/chunks/{charts-loader-B0DOQMFH.js.map → charts-loader-DAJbAD7a.js.map} +1 -1
- package/dist/client/chunks/core-D7vPfUIe.js.map +1 -1
- package/dist/client/chunks/{dist-zPWyTBdU.js → dist-BwQr11Fz.js} +251 -252
- package/dist/client/chunks/{dist-zPWyTBdU.js.map → dist-BwQr11Fz.js.map} +1 -1
- package/dist/client/chunks/{exceljs.min-CIqBqwTW.js → exceljs.min-Dey-qIFL.js} +16 -16
- package/dist/client/chunks/{exceljs.min-CIqBqwTW.js.map → exceljs.min-Dey-qIFL.js.map} +1 -1
- package/dist/client/chunks/javascript-DFnKaHmQ.js.map +1 -1
- package/dist/client/chunks/retention-ChW9jYdy.js.map +1 -1
- package/dist/client/chunks/{schema-visualization-DJPTktM6.js → schema-visualization-BGT_cNon.js} +12 -12
- package/dist/client/chunks/{schema-visualization-DJPTktM6.js.map → schema-visualization-BGT_cNon.js.map} +1 -1
- package/dist/client/chunks/sql-CmVzGP4w.js.map +1 -1
- package/dist/client/chunks/syntaxHighlighting-Bq2Bj9Xt.js +30 -0
- package/dist/client/chunks/syntaxHighlighting-Bq2Bj9Xt.js.map +1 -0
- package/dist/client/chunks/{useDirtyStateTracking-BT6zqCFl.js → useDebounce-7suCFq9v.js} +47 -109
- package/dist/client/chunks/useDebounce-7suCFq9v.js.map +1 -0
- package/dist/client/chunks/useDirtyStateTracking-D2OiqKoQ.js +66 -0
- package/dist/client/chunks/useDirtyStateTracking-D2OiqKoQ.js.map +1 -0
- package/dist/client/chunks/{useExplainAI-Dq_meKNN.js → useExplainAI-CEf04DPE.js} +14 -14
- package/dist/client/chunks/{useExplainAI-Dq_meKNN.js.map → useExplainAI-CEf04DPE.js.map} +1 -1
- package/dist/client/chunks/useNotebookLayout-Ck3Z3uzg.js.map +1 -1
- package/dist/client/chunks/utils-DjLiJKS_.js +104 -0
- package/dist/client/chunks/utils-DjLiJKS_.js.map +1 -0
- package/dist/client/chunks/{vendor-D4jADu8t.js → vendor-DFAQ4Ucl.js} +5 -3
- package/dist/client/chunks/{vendor-D4jADu8t.js.map → vendor-DFAQ4Ucl.js.map} +1 -1
- package/dist/client/components.js +4 -3
- package/dist/client/hooks.js +5 -4
- package/dist/client/icons.js +1 -1
- package/dist/client/index.js +33 -29
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers.js +1 -1
- package/dist/client/schema.js +1 -1
- package/dist/client/styles.css +1 -1
- package/dist/client/utils.js +32 -6
- package/dist/client/utils.js.map +1 -0
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +145 -50
- package/dist/server/executors/sqlite-executor.d.ts +8 -2
- package/dist/server/index.cjs +33 -33
- package/dist/server/index.js +1268 -1262
- package/dist/server/{openai-CmMzrs1Y.js → openai-BCSKRcbD.js} +10 -10
- package/dist/{adapters/openai-DhzGY9R4.js → server/openai-BjR3ohaS.js} +1 -1
- package/dist/{adapters/openai-B4kAJTSD.cjs → server/openai-ClVVLjNl.cjs} +2 -2
- package/dist/server/{openai-Cdf2wWZA.cjs → openai-CsVXOcJZ.cjs} +1 -1
- package/package.json +11 -7
- package/dist/adapters/ActivityGridChart.config-BtECymia.cjs +0 -1
- package/dist/adapters/ActivityGridChart.config-CTd5HYjI.js +0 -2
- package/dist/adapters/AreaChart.config-1B8iQnfn.js +0 -2
- package/dist/adapters/AreaChart.config-hnncyQL4.cjs +0 -1
- package/dist/adapters/BarChart.config-C-QCf1rL.cjs +0 -1
- package/dist/adapters/BarChart.config-CFelK1qP.js +0 -2
- package/dist/adapters/BoxPlotChart.config-CD9WEPyF.js +0 -2
- package/dist/adapters/BoxPlotChart.config-DEbLA0BX.cjs +0 -1
- package/dist/adapters/BubbleChart.config-B_M4hzzV.js +0 -2
- package/dist/adapters/BubbleChart.config-dRZZlAke.cjs +0 -1
- package/dist/adapters/CandlestickChart.config-Dsil2Fop.cjs +0 -1
- package/dist/adapters/CandlestickChart.config-fuhyFvob.js +0 -2
- package/dist/adapters/DataTable.config-q2gqBi6t.cjs +0 -1
- package/dist/adapters/DataTable.config-wIQnHX5R.js +0 -2
- package/dist/adapters/FunnelChart.config-Dz710ssx.js +0 -2
- package/dist/adapters/FunnelChart.config-YNP9CeS-.cjs +0 -1
- package/dist/adapters/GaugeChart.config-BG9FcMCn.cjs +0 -1
- package/dist/adapters/GaugeChart.config-CgwniXkd.js +0 -2
- package/dist/adapters/HeatMapChart.config-1zSMXXoN.cjs +0 -1
- package/dist/adapters/HeatMapChart.config-YVEWx6s5.js +0 -2
- package/dist/adapters/KpiDelta.config-BWvYXuFp.cjs +0 -1
- package/dist/adapters/KpiDelta.config-C_dYM64q.js +0 -2
- package/dist/adapters/KpiNumber.config-CXg6toZG.js +0 -2
- package/dist/adapters/KpiNumber.config-CZmV-yU1.cjs +0 -1
- package/dist/adapters/KpiText.config-BY-SJvAF.js +0 -2
- package/dist/adapters/KpiText.config-GSIxy0CE.cjs +0 -1
- package/dist/adapters/LineChart.config-CJtF8SOu.js +0 -2
- package/dist/adapters/LineChart.config-d0y60gw9.cjs +0 -1
- package/dist/adapters/MarkdownChart.config-B6w0spya.cjs +0 -1
- package/dist/adapters/MarkdownChart.config-BuIQcWOn.js +0 -2
- package/dist/adapters/MeasureProfileChart.config-Bo2n5Ae5.cjs +0 -1
- package/dist/adapters/MeasureProfileChart.config-C5d34lsc.js +0 -2
- package/dist/adapters/PieChart.config-CDxfXCIt.cjs +0 -1
- package/dist/adapters/PieChart.config-CuZxQc5m.js +0 -2
- package/dist/adapters/RadarChart.config-DpdVWyh5.cjs +0 -1
- package/dist/adapters/RadarChart.config-KrxwaaGu.js +0 -2
- package/dist/adapters/RadialBarChart.config-DpRZd0FW.js +0 -2
- package/dist/adapters/RadialBarChart.config-faIY4jpE.cjs +0 -1
- package/dist/adapters/RetentionCombinedChart.config-CUnScqnS.cjs +0 -1
- package/dist/adapters/RetentionCombinedChart.config-Dd8FuawP.js +0 -2
- package/dist/adapters/RetentionHeatmap.config-CPd6GeoQ.js +0 -2
- package/dist/adapters/RetentionHeatmap.config-CPlHbLom.cjs +0 -1
- package/dist/adapters/SankeyChart.config-DbIUqi-H.cjs +0 -1
- package/dist/adapters/SankeyChart.config-kzAnW0C7.js +0 -2
- package/dist/adapters/ScatterChart.config-4Okvn27v.js +0 -2
- package/dist/adapters/ScatterChart.config-4f9nNw3e.cjs +0 -1
- package/dist/adapters/SunburstChart.config-BsUQkIM_.js +0 -2
- package/dist/adapters/SunburstChart.config-lvnYkWs7.cjs +0 -1
- package/dist/adapters/TreeMapChart.config-S0qsgAFW.js +0 -2
- package/dist/adapters/TreeMapChart.config-jbwKsTYt.cjs +0 -1
- package/dist/adapters/WaterfallChart.config-CDQ74-pS.cjs +0 -1
- package/dist/adapters/WaterfallChart.config-XdtH-O5g.js +0 -2
- package/dist/adapters/mcp-transport-Bw_zqky2.js +0 -591
- package/dist/adapters/mcp-transport-CNIPoe1i.cjs +0 -40
- package/dist/adapters/utils-_whV4fXL.cjs +0 -128
- package/dist/client/chunks/DashboardEditModal-Cs1ig1_V.js.map +0 -1
- package/dist/client/chunks/chart-data-table-D4g5_jfF.js.map +0 -1
- package/dist/client/chunks/chart-markdown-CV75S_zL.js.map +0 -1
- package/dist/client/chunks/charts-loader-B0DOQMFH.js +0 -84
- package/dist/client/chunks/useDirtyStateTracking-BT6zqCFl.js.map +0 -1
- package/dist/client/chunks/utils-Cq-j5E5I.js +0 -155
- package/dist/client/chunks/utils-Cq-j5E5I.js.map +0 -1
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import { a as e, i as t, l as n, o as r, r as i, u as a } from "./utils-
|
|
2
|
-
import { C as o, S as s, _ as c, a as l, b as u, c as d, g as f, h as p, i as m, l as h, m as g, o as _, r as v, u as y, v as b, x,
|
|
1
|
+
import { a as e, i as t, l as n, o as r, r as i, u as a } from "./utils-U7gV5wQL.js";
|
|
2
|
+
import { C as o, S as s, _ as c, a as l, b as u, c as d, g as f, h as p, i as m, l as h, m as g, o as _, r as v, u as y, v as b, w as x, x as S, y as C } from "./mcp-transport-l8DhKzR5.js";
|
|
3
3
|
//#region src/adapters/locale.ts
|
|
4
|
-
var
|
|
5
|
-
function
|
|
4
|
+
var w = "x-dc-locale";
|
|
5
|
+
function T(e) {
|
|
6
6
|
if (!e) return;
|
|
7
7
|
let t = (Array.isArray(e) ? e[0] : e).split(",")[0]?.trim();
|
|
8
8
|
if (t && /^[A-Za-z0-9-]{2,35}$/.test(t)) return t;
|
|
9
9
|
}
|
|
10
|
-
function
|
|
11
|
-
return
|
|
10
|
+
function E(e) {
|
|
11
|
+
return T(e(w));
|
|
12
12
|
}
|
|
13
|
-
function
|
|
13
|
+
function D(e, t) {
|
|
14
14
|
let n = e && typeof e == "object" ? e : {}, r = typeof n.locale == "string" ? n.locale : void 0, i = t ?? r ?? "en-GB";
|
|
15
15
|
return r === i ? n : {
|
|
16
16
|
...n,
|
|
17
17
|
locale: i
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
-
function
|
|
20
|
+
function O(e) {
|
|
21
21
|
let t = Array.isArray(e) ? [...e] : (e ?? "").split(",").map((e) => e.trim()).filter(Boolean);
|
|
22
22
|
return t.some((e) => e.toLowerCase() === "x-dc-locale") || t.push("X-DC-Locale"), t;
|
|
23
23
|
}
|
|
24
24
|
//#endregion
|
|
25
25
|
//#region src/adapters/core/security-context.ts
|
|
26
|
-
function
|
|
27
|
-
return
|
|
26
|
+
function k(e, t) {
|
|
27
|
+
return D(e, E(t));
|
|
28
28
|
}
|
|
29
|
-
async function
|
|
30
|
-
return
|
|
29
|
+
async function A(e, t) {
|
|
30
|
+
return k(await e(), t);
|
|
31
31
|
}
|
|
32
|
-
function
|
|
32
|
+
function j(e) {
|
|
33
33
|
return String(e).replace(/\n|\r/g, "");
|
|
34
34
|
}
|
|
35
35
|
//#endregion
|
|
36
36
|
//#region src/adapters/core/rest-handlers.ts
|
|
37
|
-
function
|
|
37
|
+
function M(i) {
|
|
38
38
|
async function o(e, n, a) {
|
|
39
39
|
let o = i.validateQuery(e);
|
|
40
40
|
if (!o.isValid) return a.send(400, t(`Query validation failed: ${o.errors.join(", ")}`, 400));
|
|
@@ -53,9 +53,9 @@ function j(i) {
|
|
|
53
53
|
async function c(e, n) {
|
|
54
54
|
try {
|
|
55
55
|
let t = await e.getBody();
|
|
56
|
-
return await o(t?.query || t, await
|
|
56
|
+
return await o(t?.query || t, await A(n, (t) => e.getHeader(t)), e);
|
|
57
57
|
} catch (n) {
|
|
58
|
-
return console.error("SQL generation error:",
|
|
58
|
+
return console.error("SQL generation error:", j(n)), e.send(500, t(n instanceof Error ? n.message : "SQL generation failed", 500));
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
async function l(e, n) {
|
|
@@ -68,15 +68,15 @@ function j(i) {
|
|
|
68
68
|
} catch {
|
|
69
69
|
return e.send(400, t("Invalid JSON in query parameter", 400));
|
|
70
70
|
}
|
|
71
|
-
let a = await
|
|
71
|
+
let a = await A(n, (t) => e.getHeader(t));
|
|
72
72
|
return await o(i, a, e);
|
|
73
73
|
} catch (n) {
|
|
74
|
-
return console.error("SQL generation error:",
|
|
74
|
+
return console.error("SQL generation error:", j(n)), e.send(500, t(n instanceof Error ? n.message : "SQL generation failed", 500));
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
async function u(e, t) {
|
|
78
78
|
try {
|
|
79
|
-
let n = await e.getBody(), r = await a(n?.query || n, await
|
|
79
|
+
let n = await e.getBody(), r = await a(n?.query || n, await A(t, (t) => e.getHeader(t)), i);
|
|
80
80
|
return e.send(200, r);
|
|
81
81
|
} catch (t) {
|
|
82
82
|
return console.error("Dry-run error:", t), e.send(400, {
|
|
@@ -92,7 +92,7 @@ function j(i) {
|
|
|
92
92
|
error: "Query parameter is required",
|
|
93
93
|
valid: !1
|
|
94
94
|
});
|
|
95
|
-
let r = await a(JSON.parse(n), await
|
|
95
|
+
let r = await a(JSON.parse(n), await A(t, (t) => e.getHeader(t)), i);
|
|
96
96
|
return e.send(200, r);
|
|
97
97
|
} catch (t) {
|
|
98
98
|
return console.error("Dry-run error:", t), e.send(400, {
|
|
@@ -106,7 +106,7 @@ function j(i) {
|
|
|
106
106
|
let a = (await e.getBody())?.queries;
|
|
107
107
|
if (!a || !Array.isArray(a)) return e.send(400, t("Request body must contain a \"queries\" array", 400));
|
|
108
108
|
if (a.length === 0) return e.send(400, t("Queries array cannot be empty", 400));
|
|
109
|
-
let o = await n(a, await
|
|
109
|
+
let o = await n(a, await A(r, (t) => e.getHeader(t)), i, { skipCache: e.getHeader("x-cache-control") === "no-cache" });
|
|
110
110
|
return e.send(200, o);
|
|
111
111
|
} catch (n) {
|
|
112
112
|
return console.error("Batch execution error:", n), e.send(500, t(n instanceof Error ? n.message : "Batch execution failed", 500));
|
|
@@ -114,7 +114,7 @@ function j(i) {
|
|
|
114
114
|
}
|
|
115
115
|
async function p(e, t) {
|
|
116
116
|
try {
|
|
117
|
-
let n = await e.getBody(), r = n?.query || n, a = n?.options || {}, o = await
|
|
117
|
+
let n = await e.getBody(), r = n?.query || n, a = n?.options || {}, o = await A(t, (t) => e.getHeader(t)), s = i.validateQuery(r);
|
|
118
118
|
if (!s.isValid) return e.send(400, { error: `Query validation failed: ${s.errors.join(", ")}` });
|
|
119
119
|
let c = await i.explainQuery(r, o, a);
|
|
120
120
|
return e.send(200, c);
|
|
@@ -134,78 +134,78 @@ function j(i) {
|
|
|
134
134
|
}
|
|
135
135
|
//#endregion
|
|
136
136
|
//#region src/adapters/core/mcp-handler.ts
|
|
137
|
-
function
|
|
137
|
+
function N(e, t) {
|
|
138
138
|
let n = e?.code ?? -32603, r = e?.data, i = e.message || "MCP request failed";
|
|
139
139
|
return m(t ?? null, n, i, r);
|
|
140
140
|
}
|
|
141
|
-
function
|
|
141
|
+
function P(e, t) {
|
|
142
142
|
let n = !!t.app, r = typeof t.app == "object" ? t.app : void 0, i;
|
|
143
143
|
function a() {
|
|
144
144
|
return i ||= {
|
|
145
145
|
resources: _(e, t.resources),
|
|
146
|
-
prompts:
|
|
147
|
-
instructions:
|
|
146
|
+
prompts: u(t.prompts),
|
|
147
|
+
instructions: C(t.instructions)
|
|
148
148
|
}, i;
|
|
149
149
|
}
|
|
150
|
-
async function
|
|
150
|
+
async function w(i, u) {
|
|
151
151
|
if (t.resourceMetadataUrl && !y(i.getHeader("authorization"))) return i.setHeader("WWW-Authenticate", d(t.resourceMetadataUrl)), i.send(401, { error: "Bearer token required" });
|
|
152
|
-
let
|
|
153
|
-
if (!
|
|
154
|
-
let
|
|
155
|
-
if (!
|
|
156
|
-
let
|
|
157
|
-
if (!
|
|
152
|
+
let _ = o(i.getHeader("origin"), f(t));
|
|
153
|
+
if (!_.valid) return i.send(403, m(null, -32600, _.reason));
|
|
154
|
+
let C = i.getHeader("accept");
|
|
155
|
+
if (!s(C)) return i.send(400, m(null, -32600, "Accept header must include both application/json and text/event-stream"));
|
|
156
|
+
let w = p({ "mcp-protocol-version": i.getHeader("mcp-protocol-version") });
|
|
157
|
+
if (!w.ok) return i.send(426, {
|
|
158
158
|
error: "Unsupported MCP protocol version",
|
|
159
|
-
supported:
|
|
159
|
+
supported: w.supported
|
|
160
160
|
});
|
|
161
|
-
let
|
|
162
|
-
if (!
|
|
163
|
-
let
|
|
161
|
+
let T = c(await i.getBody());
|
|
162
|
+
if (!T) return i.send(400, m(null, -32600, "Invalid JSON-RPC 2.0 request"));
|
|
163
|
+
let E = x(C), D = T.method === "initialize", { resources: O, prompts: k, instructions: M } = a();
|
|
164
164
|
try {
|
|
165
|
-
let a = await h(
|
|
165
|
+
let a = await h(T.method, T.params, {
|
|
166
166
|
semanticLayer: e,
|
|
167
|
-
extractSecurityContext: () =>
|
|
167
|
+
extractSecurityContext: () => A(u, (e) => i.getHeader(e)),
|
|
168
168
|
rawRequest: void 0,
|
|
169
169
|
rawResponse: void 0,
|
|
170
|
-
negotiatedProtocol:
|
|
171
|
-
resources:
|
|
172
|
-
prompts:
|
|
173
|
-
instructions:
|
|
170
|
+
negotiatedProtocol: w.negotiated,
|
|
171
|
+
resources: O,
|
|
172
|
+
prompts: k,
|
|
173
|
+
instructions: M,
|
|
174
174
|
appEnabled: n,
|
|
175
175
|
appConfig: r,
|
|
176
176
|
serverName: t.serverName
|
|
177
177
|
});
|
|
178
|
-
if (g(
|
|
179
|
-
let o =
|
|
178
|
+
if (g(T)) return i.sendEmpty(202);
|
|
179
|
+
let o = D && a && typeof a == "object" && "sessionId" in a ? a.sessionId : void 0;
|
|
180
180
|
o && i.setHeader(v, o);
|
|
181
|
-
let s = l(
|
|
182
|
-
if (
|
|
183
|
-
let e =
|
|
184
|
-
return i.sendSse(200, `id: ${e}\n\n` +
|
|
181
|
+
let s = l(T.id ?? null, a);
|
|
182
|
+
if (E) {
|
|
183
|
+
let e = b();
|
|
184
|
+
return i.sendSse(200, `id: ${e}\n\n` + S(s, e));
|
|
185
185
|
}
|
|
186
186
|
return i.send(200, s);
|
|
187
187
|
} catch (e) {
|
|
188
|
-
if (g(
|
|
189
|
-
console.error("MCP RPC error:",
|
|
190
|
-
let t =
|
|
191
|
-
if (
|
|
192
|
-
let e =
|
|
193
|
-
return i.sendSse(200, `id: ${e}\n\n` +
|
|
188
|
+
if (g(T)) return console.error("MCP notification processing error:", j(e)), i.sendEmpty(202);
|
|
189
|
+
console.error("MCP RPC error:", j(e));
|
|
190
|
+
let t = N(e, T.id);
|
|
191
|
+
if (E) {
|
|
192
|
+
let e = b();
|
|
193
|
+
return i.sendSse(200, `id: ${e}\n\n` + S(t, e));
|
|
194
194
|
}
|
|
195
195
|
return i.send(200, t);
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
|
-
return { handleMcpPost:
|
|
198
|
+
return { handleMcpPost: w };
|
|
199
199
|
}
|
|
200
200
|
//#endregion
|
|
201
201
|
//#region src/adapters/core/cube-http-handler.ts
|
|
202
|
-
function
|
|
203
|
-
let { semanticLayer: n, onError: r, mcp: a = {} } = e, o =
|
|
202
|
+
function F(e) {
|
|
203
|
+
let { semanticLayer: n, onError: r, mcp: a = {} } = e, o = M(n), { handleMcpPost: s } = P(n, a);
|
|
204
204
|
function c(e, n) {
|
|
205
205
|
return r(e), n.send(500, t(e instanceof Error ? e.message : "Query execution failed", 500));
|
|
206
206
|
}
|
|
207
207
|
async function l(e, r, a) {
|
|
208
|
-
let o = await
|
|
208
|
+
let o = await A(a, (e) => r.getHeader(e)), s = n.validateQuery(e);
|
|
209
209
|
if (!s.isValid) return r.send(400, t(`Query validation failed: ${s.errors.join(", ")}`, 400));
|
|
210
210
|
let c = r.getHeader("x-cache-control") === "no-cache", l = await n.executeMultiCubeQuery(e, o, { skipCache: c });
|
|
211
211
|
return r.send(200, i(e, l, n));
|
|
@@ -241,4 +241,4 @@ function P(e) {
|
|
|
241
241
|
};
|
|
242
242
|
}
|
|
243
243
|
//#endregion
|
|
244
|
-
export {
|
|
244
|
+
export { E as a, O as i, A as n, D as o, k as r, F as t };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-CBR-9AMD.cjs"),t=require("../compiler-D0v5KJhv.cjs"),n=require("../mcp-transport-BuU5CrKL.cjs"),r=require("../core-CVqTwOR3.cjs");let i=require("express");i=e.k(i,1);let a=require("cors");a=e.k(a,1);function o(e,t){return{getHeader:t=>e.get(t),getBody:async()=>e.body,getQueryParam:t=>e.query[t],send:(e,n)=>t.status(e).json(n),setHeader:(e,n)=>{t.setHeader(e,n)},sendEmpty:e=>t.status(e).end(),sendSse:(e,n)=>(t.status(e),t.setHeader(`Content-Type`,`text/event-stream`),t.setHeader(`Cache-Control`,`no-cache`),t.setHeader(`Connection`,`keep-alive`),t.write(n),t.end())}}function s(s){let{cubes:c,drizzle:l,schema:u,extractSecurityContext:d,engineType:f,cors:p,basePath:m=`/cubejs-api/v1`,jsonLimit:h=`10mb`,cache:g,mcp:_={enabled:!0},agent:v}=s;if(!c||c.length===0)throw Error(`At least one cube must be provided in the cubes array`);let y=(0,i.Router)();if(p){let e={...p,allowedHeaders:r.i(p.allowedHeaders)};y.use((0,a.default)(e))}y.use(i.default.json({limit:h})),y.use(i.default.urlencoded({extended:!0,limit:h}));let b=new t.t({drizzle:l,schema:u,engineType:f,cache:g,rlsSetup:s.rlsSetup});c.forEach(e=>{b.registerCube(e)});let x=r.t({semanticLayer:b,onError:e=>console.error(`Query execution error:`,e),mcp:_}),S=(e,t)=>()=>d(e,t);if(y.post(`${m}/load`,async(e,t)=>{await x.handleLoadPost(o(e,t),S(e,t))}),y.get(`${m}/load`,async(e,t)=>{await x.handleLoadGet(o(e,t),S(e,t))}),y.post(`${m}/batch`,async(e,t)=>{await x.handleBatchPost(o(e,t),S(e,t))}),y.get(`${m}/meta`,(e,t)=>{x.handleMetaGet(o(e,t))}),y.post(`${m}/sql`,async(e,t)=>{await x.handleSqlPost(o(e,t),S(e,t))}),y.get(`${m}/sql`,async(e,t)=>{await x.handleSqlGet(o(e,t),S(e,t))}),y.post(`${m}/dry-run`,async(e,t)=>{await x.handleDryRunPost(o(e,t),S(e,t))}),y.get(`${m}/dry-run`,async(e,t)=>{await x.handleDryRunGet(o(e,t),S(e,t))}),y.post(`${m}/explain`,async(e,t)=>{await x.handleExplainPost(o(e,t),S(e,t))}),v&&y.post(`${m}/agent/chat`,async(e,t)=>{try{let{handleAgentChat:n}=await Promise.resolve().then(()=>require("../handler-DyIyrFFp.cjs")),{message:i,sessionId:a,history:o}=e.body;if(!i||typeof i!=`string`)return t.status(400).json({error:`message is required and must be a string`});let s=(v.apiKey||``).trim();if(v.allowClientApiKey){let t=e.headers[`x-agent-api-key`];t&&(s=t.trim())}if(!s)return t.status(401).json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`});let c=v.allowClientApiKey?e.headers[`x-agent-provider`]:void 0,l=v.allowClientApiKey?e.headers[`x-agent-model`]:void 0,u=v.allowClientApiKey?e.headers[`x-agent-provider-endpoint`]:void 0,f=r.r(await d(e,t),t=>e.get(t)),p=v.buildSystemContext?.(f);t.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});try{let e=n({message:i,sessionId:a,history:o,semanticLayer:b,securityContext:f,agentConfig:v,apiKey:s,systemContext:p,providerOverride:c,modelOverride:l,baseURLOverride:u});for await(let n of e)t.write(`data: ${JSON.stringify(n)}\n\n`)}catch(e){let n={type:`error`,data:{message:e instanceof Error?e.message:`Stream failed`}};t.write(`data: ${JSON.stringify(n)}\n\n`)}finally{t.end()}}catch(e){console.error(`Agent chat error:`,e),t.headersSent||t.status(500).json({error:e instanceof Error?e.message:`Agent chat failed`})}}),_.enabled!==!1){let e=_.basePath??`/mcp`;y.post(`${e}`,async(e,t)=>{await x.handleMcpPost(o(e,t),S(e,t))}),y.get(`${e}`,async(e,t)=>{let r=n.C(e.headers.origin,n.g(_));if(!r.valid)return t.status(403).json({error:r.reason});if(_.resourceMetadataUrl&&!n.u(e.headers.authorization))return t.setHeader(`WWW-Authenticate`,n.c(_.resourceMetadataUrl)),t.status(401).json({error:`Bearer token required`});let i=n.v();t.status(200),t.setHeader(`Content-Type`,`text/event-stream`),t.setHeader(`Cache-Control`,`no-cache`),t.setHeader(`Connection`,`keep-alive`),t.write(n.x({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},i,15e3));let a=setInterval(()=>{t.write(`: keep-alive
|
|
2
2
|
|
|
3
|
-
`)},15e3);e.on(`close`,()=>{clearInterval(
|
|
3
|
+
`)},15e3);e.on(`close`,()=>{clearInterval(a)})}),y.delete(`${e}`,(e,t)=>{let r=n.C(e.headers.origin,n.g(_));return r.valid?_.resourceMetadataUrl&&!n.u(e.headers.authorization)?(t.setHeader(`WWW-Authenticate`,n.c(_.resourceMetadataUrl)),t.status(401).json({error:`Bearer token required`})):t.status(405).json({error:`Session termination not supported`}):t.status(403).json({error:r.reason})})}return y.use((t,n,r,i)=>{console.error(`Express adapter error:`,t),r.headersSent||r.status(500).json(e.i(t,500))}),y}function c(e,t){let n=s(t);return e.use(`/`,n),e}function l(e){return c((0,i.default)(),e)}exports.createCubeApp=l,exports.createCubeRouter=s,exports.mountCubeRoutes=c;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { i as e } from "../utils-
|
|
2
|
-
import { t } from "../compiler-
|
|
3
|
-
import {
|
|
4
|
-
import { i as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
1
|
+
import { i as e } from "../utils-U7gV5wQL.js";
|
|
2
|
+
import { t } from "../compiler-ZruQ85ff.js";
|
|
3
|
+
import { C as n, c as r, g as i, u as a, v as o, x as s } from "../mcp-transport-l8DhKzR5.js";
|
|
4
|
+
import { i as c, r as l, t as u } from "../core-DoSUiMmv.js";
|
|
5
|
+
import d, { Router as f } from "express";
|
|
6
|
+
import p from "cors";
|
|
7
7
|
//#region src/adapters/express/index.ts
|
|
8
|
-
function
|
|
8
|
+
function m(e, t) {
|
|
9
9
|
return {
|
|
10
10
|
getHeader: (t) => e.get(t),
|
|
11
11
|
getBody: async () => e.body,
|
|
@@ -18,65 +18,65 @@ function f(e, t) {
|
|
|
18
18
|
sendSse: (e, n) => (t.status(e), t.setHeader("Content-Type", "text/event-stream"), t.setHeader("Cache-Control", "no-cache"), t.setHeader("Connection", "keep-alive"), t.write(n), t.end())
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
function
|
|
22
|
-
let { cubes:
|
|
23
|
-
if (!
|
|
24
|
-
let
|
|
25
|
-
if (
|
|
21
|
+
function h(h) {
|
|
22
|
+
let { cubes: g, drizzle: _, schema: v, extractSecurityContext: y, engineType: b, cors: x, basePath: S = "/cubejs-api/v1", jsonLimit: C = "10mb", cache: w, mcp: T = { enabled: !0 }, agent: E } = h;
|
|
23
|
+
if (!g || g.length === 0) throw Error("At least one cube must be provided in the cubes array");
|
|
24
|
+
let D = f();
|
|
25
|
+
if (x) {
|
|
26
26
|
let e = {
|
|
27
|
-
...
|
|
28
|
-
allowedHeaders:
|
|
27
|
+
...x,
|
|
28
|
+
allowedHeaders: c(x.allowedHeaders)
|
|
29
29
|
};
|
|
30
|
-
|
|
30
|
+
D.use(p(e));
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
D.use(d.json({ limit: C })), D.use(d.urlencoded({
|
|
33
33
|
extended: !0,
|
|
34
|
-
limit:
|
|
34
|
+
limit: C
|
|
35
35
|
}));
|
|
36
|
-
let
|
|
37
|
-
drizzle:
|
|
38
|
-
schema:
|
|
39
|
-
engineType:
|
|
40
|
-
cache:
|
|
41
|
-
rlsSetup:
|
|
36
|
+
let O = new t({
|
|
37
|
+
drizzle: _,
|
|
38
|
+
schema: v,
|
|
39
|
+
engineType: b,
|
|
40
|
+
cache: w,
|
|
41
|
+
rlsSetup: h.rlsSetup
|
|
42
42
|
});
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
g.forEach((e) => {
|
|
44
|
+
O.registerCube(e);
|
|
45
45
|
});
|
|
46
|
-
let
|
|
47
|
-
semanticLayer:
|
|
46
|
+
let k = u({
|
|
47
|
+
semanticLayer: O,
|
|
48
48
|
onError: (e) => console.error("Query execution error:", e),
|
|
49
|
-
mcp:
|
|
50
|
-
}),
|
|
51
|
-
if (
|
|
52
|
-
await
|
|
53
|
-
}),
|
|
54
|
-
await
|
|
55
|
-
}),
|
|
56
|
-
await
|
|
57
|
-
}),
|
|
58
|
-
|
|
59
|
-
}),
|
|
60
|
-
await
|
|
61
|
-
}),
|
|
62
|
-
await
|
|
63
|
-
}),
|
|
64
|
-
await
|
|
65
|
-
}),
|
|
66
|
-
await
|
|
67
|
-
}),
|
|
68
|
-
await
|
|
69
|
-
}),
|
|
49
|
+
mcp: T
|
|
50
|
+
}), A = (e, t) => () => y(e, t);
|
|
51
|
+
if (D.post(`${S}/load`, async (e, t) => {
|
|
52
|
+
await k.handleLoadPost(m(e, t), A(e, t));
|
|
53
|
+
}), D.get(`${S}/load`, async (e, t) => {
|
|
54
|
+
await k.handleLoadGet(m(e, t), A(e, t));
|
|
55
|
+
}), D.post(`${S}/batch`, async (e, t) => {
|
|
56
|
+
await k.handleBatchPost(m(e, t), A(e, t));
|
|
57
|
+
}), D.get(`${S}/meta`, (e, t) => {
|
|
58
|
+
k.handleMetaGet(m(e, t));
|
|
59
|
+
}), D.post(`${S}/sql`, async (e, t) => {
|
|
60
|
+
await k.handleSqlPost(m(e, t), A(e, t));
|
|
61
|
+
}), D.get(`${S}/sql`, async (e, t) => {
|
|
62
|
+
await k.handleSqlGet(m(e, t), A(e, t));
|
|
63
|
+
}), D.post(`${S}/dry-run`, async (e, t) => {
|
|
64
|
+
await k.handleDryRunPost(m(e, t), A(e, t));
|
|
65
|
+
}), D.get(`${S}/dry-run`, async (e, t) => {
|
|
66
|
+
await k.handleDryRunGet(m(e, t), A(e, t));
|
|
67
|
+
}), D.post(`${S}/explain`, async (e, t) => {
|
|
68
|
+
await k.handleExplainPost(m(e, t), A(e, t));
|
|
69
|
+
}), E && D.post(`${S}/agent/chat`, async (e, t) => {
|
|
70
70
|
try {
|
|
71
|
-
let { handleAgentChat: n } = await import("../handler-
|
|
71
|
+
let { handleAgentChat: n } = await import("../handler-j74EJDdo.js"), { message: r, sessionId: i, history: a } = e.body;
|
|
72
72
|
if (!r || typeof r != "string") return t.status(400).json({ error: "message is required and must be a string" });
|
|
73
|
-
let o = (
|
|
74
|
-
if (
|
|
73
|
+
let o = (E.apiKey || "").trim();
|
|
74
|
+
if (E.allowClientApiKey) {
|
|
75
75
|
let t = e.headers["x-agent-api-key"];
|
|
76
76
|
t && (o = t.trim());
|
|
77
77
|
}
|
|
78
78
|
if (!o) return t.status(401).json({ error: "No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header." });
|
|
79
|
-
let
|
|
79
|
+
let s = E.allowClientApiKey ? e.headers["x-agent-provider"] : void 0, c = E.allowClientApiKey ? e.headers["x-agent-model"] : void 0, u = E.allowClientApiKey ? e.headers["x-agent-provider-endpoint"] : void 0, d = l(await y(e, t), (t) => e.get(t)), f = E.buildSystemContext?.(d);
|
|
80
80
|
t.writeHead(200, {
|
|
81
81
|
"Content-Type": "text/event-stream",
|
|
82
82
|
"Cache-Control": "no-cache",
|
|
@@ -87,13 +87,13 @@ function p(p) {
|
|
|
87
87
|
message: r,
|
|
88
88
|
sessionId: i,
|
|
89
89
|
history: a,
|
|
90
|
-
semanticLayer:
|
|
90
|
+
semanticLayer: O,
|
|
91
91
|
securityContext: d,
|
|
92
|
-
agentConfig:
|
|
92
|
+
agentConfig: E,
|
|
93
93
|
apiKey: o,
|
|
94
94
|
systemContext: f,
|
|
95
|
-
providerOverride:
|
|
96
|
-
modelOverride:
|
|
95
|
+
providerOverride: s,
|
|
96
|
+
modelOverride: c,
|
|
97
97
|
baseURLOverride: u
|
|
98
98
|
});
|
|
99
99
|
for await (let n of e) t.write(`data: ${JSON.stringify(n)}\n\n`);
|
|
@@ -109,36 +109,41 @@ function p(p) {
|
|
|
109
109
|
} catch (e) {
|
|
110
110
|
console.error("Agent chat error:", e), t.headersSent || t.status(500).json({ error: e instanceof Error ? e.message : "Agent chat failed" });
|
|
111
111
|
}
|
|
112
|
-
}),
|
|
113
|
-
let e =
|
|
114
|
-
|
|
115
|
-
await
|
|
116
|
-
}),
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
112
|
+
}), T.enabled !== !1) {
|
|
113
|
+
let e = T.basePath ?? "/mcp";
|
|
114
|
+
D.post(`${e}`, async (e, t) => {
|
|
115
|
+
await k.handleMcpPost(m(e, t), A(e, t));
|
|
116
|
+
}), D.get(`${e}`, async (e, t) => {
|
|
117
|
+
let c = n(e.headers.origin, i(T));
|
|
118
|
+
if (!c.valid) return t.status(403).json({ error: c.reason });
|
|
119
|
+
if (T.resourceMetadataUrl && !a(e.headers.authorization)) return t.setHeader("WWW-Authenticate", r(T.resourceMetadataUrl)), t.status(401).json({ error: "Bearer token required" });
|
|
120
|
+
let l = o();
|
|
121
|
+
t.status(200), t.setHeader("Content-Type", "text/event-stream"), t.setHeader("Cache-Control", "no-cache"), t.setHeader("Connection", "keep-alive"), t.write(s({
|
|
120
122
|
jsonrpc: "2.0",
|
|
121
123
|
method: "mcp/ready",
|
|
122
124
|
params: { protocol: "streamable-http" }
|
|
123
|
-
},
|
|
124
|
-
let
|
|
125
|
+
}, l, 15e3));
|
|
126
|
+
let u = setInterval(() => {
|
|
125
127
|
t.write(": keep-alive\n\n");
|
|
126
128
|
}, 15e3);
|
|
127
129
|
e.on("close", () => {
|
|
128
|
-
clearInterval(
|
|
130
|
+
clearInterval(u);
|
|
129
131
|
});
|
|
130
|
-
}),
|
|
132
|
+
}), D.delete(`${e}`, (e, t) => {
|
|
133
|
+
let o = n(e.headers.origin, i(T));
|
|
134
|
+
return o.valid ? T.resourceMetadataUrl && !a(e.headers.authorization) ? (t.setHeader("WWW-Authenticate", r(T.resourceMetadataUrl)), t.status(401).json({ error: "Bearer token required" })) : t.status(405).json({ error: "Session termination not supported" }) : t.status(403).json({ error: o.reason });
|
|
135
|
+
});
|
|
131
136
|
}
|
|
132
|
-
return
|
|
137
|
+
return D.use((t, n, r, i) => {
|
|
133
138
|
console.error("Express adapter error:", t), r.headersSent || r.status(500).json(e(t, 500));
|
|
134
|
-
}),
|
|
139
|
+
}), D;
|
|
135
140
|
}
|
|
136
|
-
function
|
|
137
|
-
let n =
|
|
141
|
+
function g(e, t) {
|
|
142
|
+
let n = h(t);
|
|
138
143
|
return e.use("/", n), e;
|
|
139
144
|
}
|
|
140
|
-
function
|
|
141
|
-
return
|
|
145
|
+
function _(e) {
|
|
146
|
+
return g(d(), e);
|
|
142
147
|
}
|
|
143
148
|
//#endregion
|
|
144
|
-
export {
|
|
149
|
+
export { _ as createCubeApp, h as createCubeRouter, g as mountCubeRoutes };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-CBR-9AMD.cjs"),t=require("../compiler-D0v5KJhv.cjs"),n=require("../mcp-transport-BuU5CrKL.cjs"),r=require("../core-CVqTwOR3.cjs");function i(e,t){let n=e.headers[t.toLowerCase()];return Array.isArray(n)?n[0]:n}function a(e,t){return{getHeader:t=>i(e,t),getBody:async()=>e.body,getQueryParam:t=>e.query?.[t],send:(e,n)=>t.status(e).send(n),setHeader:(e,n)=>{t.header(e,n)},sendEmpty:e=>t.status(e).send(),sendSse:(e,n)=>(t.header(`Content-Type`,`text/event-stream`),t.header(`Cache-Control`,`no-cache`),t.header(`Connection`,`keep-alive`),t.status(e).send(n))}}var o=function(o,s,c){let{cubes:l,drizzle:u,schema:d,extractSecurityContext:f,engineType:p,cors:m,basePath:h=`/cubejs-api/v1`,bodyLimit:g=10485760,cache:_,mcp:v={enabled:!0},agent:y}=s;if(!l||l.length===0)return c(Error(`At least one cube must be provided in the cubes array`));if(m){let e={...m,allowedHeaders:r.i(m.allowedHeaders)};o.register(import(`@fastify/cors`),e)}o.addHook(`onRequest`,async(e,t)=>{e.method===`POST`&&(e.body=void 0)});let b=new t.t({drizzle:u,schema:d,engineType:p,cache:_,rlsSetup:s.rlsSetup});l.forEach(e=>{b.registerCube(e)});let x=r.t({semanticLayer:b,onError:e=>o.log.error(e,`Query execution error`),mcp:v}),S=e=>()=>f(e),C={bodyLimit:g,schema:{body:{type:`object`,additionalProperties:!0}}},w={schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}};if(o.post(`${h}/load`,C,(e,t)=>x.handleLoadPost(a(e,t),S(e))),o.get(`${h}/load`,w,(e,t)=>x.handleLoadGet(a(e,t),S(e))),o.post(`${h}/batch`,{bodyLimit:g,schema:{body:{type:`object`,required:[`queries`],properties:{queries:{type:`array`,items:{type:`object`}}}}}},(e,t)=>x.handleBatchPost(a(e,t),S(e))),o.get(`${h}/meta`,(e,t)=>x.handleMetaGet(a(e,t))),o.post(`${h}/sql`,C,(e,t)=>x.handleSqlPost(a(e,t),S(e))),o.get(`${h}/sql`,w,(e,t)=>x.handleSqlGet(a(e,t),S(e))),o.post(`${h}/dry-run`,C,(e,t)=>x.handleDryRunPost(a(e,t),S(e))),o.get(`${h}/dry-run`,w,(e,t)=>x.handleDryRunGet(a(e,t),S(e))),o.post(`${h}/explain`,C,(e,t)=>x.handleExplainPost(a(e,t),S(e))),y&&o.post(`${h}/agent/chat`,{bodyLimit:g,schema:{body:{type:`object`,additionalProperties:!0}}},async(e,t)=>{try{let{handleAgentChat:n}=await Promise.resolve().then(()=>require("../handler-DyIyrFFp.cjs")),{message:a,sessionId:o,history:s}=e.body;if(!a||typeof a!=`string`)return t.status(400).send({error:`message is required and must be a string`});let c=(y.apiKey||``).trim();if(y.allowClientApiKey){let t=i(e,`x-agent-api-key`);t&&(c=t.trim())}if(!c)return t.status(401).send({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`});let l=y.allowClientApiKey?i(e,`x-agent-provider`):void 0,u=y.allowClientApiKey?i(e,`x-agent-model`):void 0,d=y.allowClientApiKey?i(e,`x-agent-provider-endpoint`):void 0,p=r.r(await f(e),t=>i(e,t)),m=y.buildSystemContext?.(p);t.raw.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});try{let e=n({message:a,sessionId:o,history:s,semanticLayer:b,securityContext:p,agentConfig:y,apiKey:c,systemContext:m,providerOverride:l,modelOverride:u,baseURLOverride:d});for await(let n of e)t.raw.write(`data: ${JSON.stringify(n)}\n\n`)}catch(e){let n={type:`error`,data:{message:e instanceof Error?e.message:`Stream failed`}};t.raw.write(`data: ${JSON.stringify(n)}\n\n`)}finally{t.raw.end()}}catch(n){if(e.log.error(n,`Agent chat error`),!t.raw.headersSent)return t.status(500).send({error:n instanceof Error?n.message:`Agent chat failed`})}}),v.enabled!==!1){let e=v.basePath??`/mcp`;o.post(`${e}`,{bodyLimit:g,schema:{body:{type:`object`,additionalProperties:!0}}},(e,t)=>x.handleMcpPost(a(e,t),S(e))),o.get(`${e}`,async(e,t)=>{let r=n.C(e.headers.origin,n.g(v));if(!r.valid)return t.status(403).send({error:r.reason});if(v.resourceMetadataUrl&&!n.u(e.headers.authorization))return t.header(`WWW-Authenticate`,n.c(v.resourceMetadataUrl)),t.status(401).send({error:`Bearer token required`});let i=n.v();t.raw.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}),t.raw.write(n.x({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},i,15e3));let a=setInterval(()=>{t.raw.write(`: keep-alive
|
|
2
2
|
|
|
3
|
-
`)},15e3);e.raw.on(`close`,()=>{clearInterval(
|
|
3
|
+
`)},15e3);e.raw.on(`close`,()=>{clearInterval(a)})}),o.delete(`${e}`,async(e,t)=>{let r=n.C(e.headers.origin,n.g(v));return r.valid?v.resourceMetadataUrl&&!n.u(e.headers.authorization)?(t.header(`WWW-Authenticate`,n.c(v.resourceMetadataUrl)),t.status(401).send({error:`Bearer token required`})):t.status(405).send({error:`Session termination not supported`}):t.status(403).send({error:r.reason})})}o.setErrorHandler(async(t,n,r)=>(n.log.error(t,`Fastify cube adapter error`),r.statusCode<400&&r.status(500),e.i(t instanceof Error?t:String(t),r.statusCode))),c()};async function s(e,t){await e.register(o,t)}function c(e){let t=require("fastify")({logger:!0});return t.register(o,e),t}exports.createCubeApp=c,exports.cubePlugin=o,exports.registerCubeRoutes=s;
|