drizzle-cube 0.5.4 → 0.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +4 -4
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.js +4 -4
- package/dist/adapters/{handler-CNn3q29F.cjs → handler-C0nUppAK.cjs} +3 -3
- package/dist/adapters/{handler-_TKfigrZ.js → handler-Odsi9_Rd.js} +125 -1
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +4 -4
- package/dist/adapters/{locale-Dl_3R6hP.cjs → locale-Dv6bl_eU.cjs} +2 -2
- package/dist/adapters/{locale-BQQrZYhz.js → locale-Dy3LcTwN.js} +4 -2
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +8 -3
- package/dist/adapters/mcp-transport-BCtjU0lC.cjs +40 -0
- package/dist/adapters/mcp-transport-DW_Uks-O.js +579 -0
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +4 -4
- package/dist/adapters/{utils-DG8ti3FT.js → utils-Bd5mzZfk.js} +44 -18
- package/dist/adapters/utils-DklqMBHn.cjs +128 -0
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.d.ts +6 -1
- package/dist/adapters/utils.js +1 -1
- package/dist/client/charts/chartConfigs.d.ts +34 -0
- package/dist/client/charts.js +12 -12
- package/dist/client/chunks/{DashboardEditModal-BBcB0E2g.js → DashboardEditModal-BiJwVv0b.js} +11 -11
- package/dist/client/chunks/DashboardEditModal-BiJwVv0b.js.map +1 -0
- package/dist/client/chunks/{FieldSearchModal-CisOov-_.js → FieldSearchModal-DdcbCwAi.js} +21 -5
- package/dist/client/chunks/{FieldSearchModal-CisOov-_.js.map → FieldSearchModal-DdcbCwAi.js.map} +1 -1
- package/dist/client/chunks/{RetentionCombinedChart-DiyZwiPv.js → RetentionCombinedChart-CivIny9P.js} +3 -3
- package/dist/client/chunks/{RetentionCombinedChart-DiyZwiPv.js.map → RetentionCombinedChart-CivIny9P.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-usGF7BCo.js → RetentionHeatmap-BHCgwZmB.js} +2 -2
- package/dist/client/chunks/{RetentionHeatmap-usGF7BCo.js.map → RetentionHeatmap-BHCgwZmB.js.map} +1 -1
- package/dist/client/chunks/{af-ZA-xDmO5F0s.js → af-ZA-BdL6DOWy.js} +10 -3
- package/dist/client/chunks/af-ZA-BdL6DOWy.js.map +1 -0
- package/dist/client/chunks/{analysis-builder-0o1W-k3K.js → analysis-builder-MoGvbMRe.js} +245 -255
- package/dist/client/chunks/analysis-builder-MoGvbMRe.js.map +1 -0
- package/dist/client/chunks/{analysis-builder-shared-Cz4KAlIC.js → analysis-builder-shared-DmyRh2O3.js} +391 -459
- package/dist/client/chunks/analysis-builder-shared-DmyRh2O3.js.map +1 -0
- package/dist/client/chunks/{chart-activity-grid-VFFm85hC.js → chart-activity-grid-Bdb8U_NC.js} +14 -7
- package/dist/client/chunks/chart-activity-grid-Bdb8U_NC.js.map +1 -0
- package/dist/client/chunks/{chart-area-CwwIHTmK.js → chart-area-BZEnT-tf.js} +39 -38
- package/dist/client/chunks/chart-area-BZEnT-tf.js.map +1 -0
- package/dist/client/chunks/{chart-bar-Bmny922L.js → chart-bar-CTmdv_v0.js} +53 -52
- package/dist/client/chunks/chart-bar-CTmdv_v0.js.map +1 -0
- package/dist/client/chunks/{chart-box-plot-DM7GwtCV.js → chart-box-plot-CYObdFtp.js} +3 -3
- package/dist/client/chunks/{chart-box-plot-DM7GwtCV.js.map → chart-box-plot-CYObdFtp.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-DJOq4IpT.js → chart-bubble-CjFprySz.js} +3 -3
- package/dist/client/chunks/{chart-bubble-DJOq4IpT.js.map → chart-bubble-CjFprySz.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-C2nzVCv1.js → chart-candlestick-D2HoM3B5.js} +3 -3
- package/dist/client/chunks/{chart-candlestick-C2nzVCv1.js.map → chart-candlestick-D2HoM3B5.js.map} +1 -1
- package/dist/client/chunks/{chart-config-activity-grid-C-EkgYoa.js → chart-config-activity-grid-Bom99j9m.js} +9 -2
- package/dist/client/chunks/chart-config-activity-grid-Bom99j9m.js.map +1 -0
- package/dist/client/chunks/{chart-config-area-CMZpbIah.js → chart-config-area-DtYTKZxS.js} +10 -2
- package/dist/client/chunks/chart-config-area-DtYTKZxS.js.map +1 -0
- package/dist/client/chunks/{chart-config-bar-B8_V4YLg.js → chart-config-bar-7v5JVY2y.js} +10 -2
- package/dist/client/chunks/chart-config-bar-7v5JVY2y.js.map +1 -0
- package/dist/client/chunks/{chart-config-box-plot-Dwj7sEbU.js → chart-config-box-plot-BHGv-wqu.js} +9 -2
- package/dist/client/chunks/chart-config-box-plot-BHGv-wqu.js.map +1 -0
- package/dist/client/chunks/{chart-config-bubble-B0w0ZVp4.js → chart-config-bubble-BkHm-mfu.js} +9 -2
- package/dist/client/chunks/chart-config-bubble-BkHm-mfu.js.map +1 -0
- package/dist/client/chunks/{chart-config-candlestick-Bvo3zeIn.js → chart-config-candlestick-D1aaHvTe.js} +9 -2
- package/dist/client/chunks/chart-config-candlestick-D1aaHvTe.js.map +1 -0
- package/dist/client/chunks/{chart-config-data-table-BQXSn4b_.js → chart-config-data-table-B_Hw8w2J.js} +2 -2
- package/dist/client/chunks/{chart-config-data-table-BQXSn4b_.js.map → chart-config-data-table-B_Hw8w2J.js.map} +1 -1
- package/dist/client/chunks/{chart-config-funnel-BzEsHmjR.js → chart-config-funnel-DL8PSGuL.js} +2 -2
- package/dist/client/chunks/{chart-config-funnel-BzEsHmjR.js.map → chart-config-funnel-DL8PSGuL.js.map} +1 -1
- package/dist/client/chunks/{chart-config-gauge-C5ZiyZy7.js → chart-config-gauge-BVLxuA3f.js} +6 -2
- package/dist/client/chunks/chart-config-gauge-BVLxuA3f.js.map +1 -0
- package/dist/client/chunks/{chart-config-heat-map-Cv8qNnVP.js → chart-config-heat-map-CjudGdui.js} +9 -2
- package/dist/client/chunks/chart-config-heat-map-CjudGdui.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-delta-BraHQc2E.js → chart-config-kpi-delta-Bf47hGqD.js} +9 -2
- package/dist/client/chunks/chart-config-kpi-delta-Bf47hGqD.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-number-CeCkx7mC.js → chart-config-kpi-number-QTQRNgOi.js} +6 -2
- package/dist/client/chunks/chart-config-kpi-number-QTQRNgOi.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-text-CImM3SvH.js → chart-config-kpi-text-BRze2eyh.js} +6 -2
- package/dist/client/chunks/chart-config-kpi-text-BRze2eyh.js.map +1 -0
- package/dist/client/chunks/{chart-config-line-BVKapAQK.js → chart-config-line-BFeCqmKH.js} +10 -2
- package/dist/client/chunks/chart-config-line-BFeCqmKH.js.map +1 -0
- package/dist/client/chunks/{chart-config-markdown-C-_g_8te.js → chart-config-markdown-EWYckwXv.js} +2 -2
- package/dist/client/chunks/{chart-config-markdown-C-_g_8te.js.map → chart-config-markdown-EWYckwXv.js.map} +1 -1
- package/dist/client/chunks/{chart-config-measure-profile-KTVV1gO3.js → chart-config-measure-profile-B9nIhqKR.js} +6 -2
- package/dist/client/chunks/chart-config-measure-profile-B9nIhqKR.js.map +1 -0
- package/dist/client/chunks/{chart-config-pie-BZxVl25X.js → chart-config-pie-6LHtEyMM.js} +9 -2
- package/dist/client/chunks/chart-config-pie-6LHtEyMM.js.map +1 -0
- package/dist/client/chunks/{chart-config-radar-B7FByX3t.js → chart-config-radar-BuLS6Inn.js} +9 -2
- package/dist/client/chunks/chart-config-radar-BuLS6Inn.js.map +1 -0
- package/dist/client/chunks/{chart-config-radial-bar-UfW_3yyX.js → chart-config-radial-bar-BP0eMohx.js} +9 -2
- package/dist/client/chunks/chart-config-radial-bar-BP0eMohx.js.map +1 -0
- package/dist/client/chunks/{chart-config-sankey-DGAThN9i.js → chart-config-sankey-CT8oGIGP.js} +2 -2
- package/dist/client/chunks/{chart-config-sankey-DGAThN9i.js.map → chart-config-sankey-CT8oGIGP.js.map} +1 -1
- package/dist/client/chunks/{chart-config-scatter-BVVJuOnt.js → chart-config-scatter-DOSpN07Z.js} +9 -2
- package/dist/client/chunks/chart-config-scatter-DOSpN07Z.js.map +1 -0
- package/dist/client/chunks/{chart-config-sunburst-utejM2YS.js → chart-config-sunburst-BSUX_YoB.js} +2 -2
- package/dist/client/chunks/{chart-config-sunburst-utejM2YS.js.map → chart-config-sunburst-BSUX_YoB.js.map} +1 -1
- package/dist/client/chunks/{chart-config-tree-map-IHp97OyV.js → chart-config-tree-map-D8GuAgVB.js} +9 -2
- package/dist/client/chunks/chart-config-tree-map-D8GuAgVB.js.map +1 -0
- package/dist/client/chunks/{chart-config-waterfall-BdqG1V-x.js → chart-config-waterfall-BDi7BoJP.js} +9 -2
- package/dist/client/chunks/chart-config-waterfall-BDi7BoJP.js.map +1 -0
- package/dist/client/chunks/{chart-data-table-zZtwLf55.js → chart-data-table-DT4uBZaq.js} +92 -90
- package/dist/client/chunks/{chart-data-table-zZtwLf55.js.map → chart-data-table-DT4uBZaq.js.map} +1 -1
- package/dist/client/chunks/{chart-funnel-COTJy8BP.js → chart-funnel-B9crR3b3.js} +3 -3
- package/dist/client/chunks/{chart-funnel-COTJy8BP.js.map → chart-funnel-B9crR3b3.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-C8lIneI0.js → chart-gauge-DAMFsicz.js} +3 -3
- package/dist/client/chunks/{chart-gauge-C8lIneI0.js.map → chart-gauge-DAMFsicz.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-BJXt3RMt.js → chart-heat-map-BxgM_X1G.js} +3 -3
- package/dist/client/chunks/{chart-heat-map-BJXt3RMt.js.map → chart-heat-map-BxgM_X1G.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-DHkNqufb.js → chart-kpi-delta-DJKL02Ut.js} +75 -73
- package/dist/client/chunks/{chart-kpi-delta-DHkNqufb.js.map → chart-kpi-delta-DJKL02Ut.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-BrXw7m-S.js → chart-kpi-number-CuNEYbRx.js} +66 -65
- package/dist/client/chunks/{chart-kpi-number-BrXw7m-S.js.map → chart-kpi-number-CuNEYbRx.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-D0plngLV.js → chart-kpi-text-u8FJaZDQ.js} +27 -26
- package/dist/client/chunks/{chart-kpi-text-D0plngLV.js.map → chart-kpi-text-u8FJaZDQ.js.map} +1 -1
- package/dist/client/chunks/{chart-line-DKvW32U-.js → chart-line-BZhzOjRl.js} +119 -118
- package/dist/client/chunks/chart-line-BZhzOjRl.js.map +1 -0
- package/dist/client/chunks/{chart-markdown-CJU2hUq3.js → chart-markdown-DEtjn8gx.js} +70 -69
- package/dist/client/chunks/chart-markdown-DEtjn8gx.js.map +1 -0
- package/dist/client/chunks/{chart-measure-profile-DNT_tbh4.js → chart-measure-profile-BnpIOS4Q.js} +4 -4
- package/dist/client/chunks/{chart-measure-profile-DNT_tbh4.js.map → chart-measure-profile-BnpIOS4Q.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-CzYnncO-.js → chart-pie-CsdzxmSK.js} +4 -4
- package/dist/client/chunks/{chart-pie-CzYnncO-.js.map → chart-pie-CsdzxmSK.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-8iAt3QZl.js → chart-radar-C_9RwMKw.js} +4 -4
- package/dist/client/chunks/{chart-radar-8iAt3QZl.js.map → chart-radar-C_9RwMKw.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-CJbG7RIe.js → chart-radial-bar-CewRelyQ.js} +4 -4
- package/dist/client/chunks/{chart-radial-bar-CJbG7RIe.js.map → chart-radial-bar-CewRelyQ.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-C-wLBUmb.js → chart-sankey-ItraHWH1.js} +3 -3
- package/dist/client/chunks/{chart-sankey-C-wLBUmb.js.map → chart-sankey-ItraHWH1.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-NMjD1lbW.js → chart-scatter-k2IJbO2Y.js} +4 -4
- package/dist/client/chunks/{chart-scatter-NMjD1lbW.js.map → chart-scatter-k2IJbO2Y.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-HtJ-LJ7n.js → chart-sunburst-NsFRuqi9.js} +4 -4
- package/dist/client/chunks/{chart-sunburst-HtJ-LJ7n.js.map → chart-sunburst-NsFRuqi9.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-CetaLMt8.js → chart-tree-map-Cj_ewpwJ.js} +4 -4
- package/dist/client/chunks/{chart-tree-map-CetaLMt8.js.map → chart-tree-map-Cj_ewpwJ.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-ontNp1Sd.js → chart-waterfall-C-MTFcOz.js} +4 -4
- package/dist/client/chunks/{chart-waterfall-ontNp1Sd.js.map → chart-waterfall-C-MTFcOz.js.map} +1 -1
- package/dist/client/chunks/{charts-core-B5UXUg6_.js → charts-core-vZA3zPKb.js} +2 -2
- package/dist/client/chunks/{charts-core-B5UXUg6_.js.map → charts-core-vZA3zPKb.js.map} +1 -1
- package/dist/client/chunks/{core-Dk6z6kC0.js → core-Su6tIYhp.js} +5 -3
- package/dist/client/chunks/{core-Dk6z6kC0.js.map → core-Su6tIYhp.js.map} +1 -1
- package/dist/client/chunks/{dist-eZurnOde.js → dist-BTq3NoG3.js} +38 -32
- package/dist/client/chunks/dist-BTq3NoG3.js.map +1 -0
- package/dist/client/chunks/{en-US-5xPTdCXg.js → en-US-D-1JPTPv.js} +1 -1
- package/dist/client/chunks/{en-US-5xPTdCXg.js.map → en-US-D-1JPTPv.js.map} +1 -1
- package/dist/client/chunks/{exceljs.min-DaJsLlWM.js → exceljs.min-Dc1cBQ5l.js} +71 -45
- package/dist/client/chunks/{exceljs.min-DaJsLlWM.js.map → exceljs.min-Dc1cBQ5l.js.map} +1 -1
- package/dist/client/chunks/{javascript-DFvvCuoP.js → javascript-YXkoOgWa.js} +1 -1
- package/dist/client/chunks/{javascript-DFvvCuoP.js.map → javascript-YXkoOgWa.js.map} +1 -1
- package/dist/client/chunks/{json-BBm9TlrA.js → json-O7MKB_4V.js} +1 -1
- package/dist/client/chunks/{json-BBm9TlrA.js.map → json-O7MKB_4V.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-DDf0OdfW.js → nl-NL-BErZMygi.js} +10 -3
- package/dist/client/chunks/nl-NL-BErZMygi.js.map +1 -0
- package/dist/client/chunks/{rolldown-runtime-CCl2IeXn.js → rolldown-runtime-CKnJJeip.js} +1 -1
- package/dist/client/chunks/{schema-visualization-cnB2xZxn.js → schema-visualization-BY9L2nBQ.js} +294 -290
- package/dist/client/chunks/{schema-visualization-cnB2xZxn.js.map → schema-visualization-BY9L2nBQ.js.map} +1 -1
- package/dist/client/chunks/{sql-k0GA6oZ_.js → sql-r2a-9CCK.js} +1 -1
- package/dist/client/chunks/{sql-k0GA6oZ_.js.map → sql-r2a-9CCK.js.map} +1 -1
- package/dist/client/chunks/{syntaxHighlighting-D8J6Yt9j.js → syntaxHighlighting-5zHcjn27.js} +2 -2
- package/dist/client/chunks/{syntaxHighlighting-D8J6Yt9j.js.map → syntaxHighlighting-5zHcjn27.js.map} +1 -1
- package/dist/client/chunks/{useDebounce-BOBSvhHy.js → useDebounce-DGfYXtkm.js} +4 -4
- package/dist/client/chunks/{useDebounce-BOBSvhHy.js.map → useDebounce-DGfYXtkm.js.map} +1 -1
- package/dist/client/chunks/{useExplainAI-B_Pi4eXW.js → useExplainAI-CD0KuKwY.js} +4 -4
- package/dist/client/chunks/{useExplainAI-B_Pi4eXW.js.map → useExplainAI-CD0KuKwY.js.map} +1 -1
- package/dist/client/chunks/{utils-BIuqPQuJ.js → utils-D2SCtAkZ.js} +2 -2
- package/dist/client/chunks/{utils-BIuqPQuJ.js.map → utils-D2SCtAkZ.js.map} +1 -1
- package/dist/client/chunks/{vendor-BxLCTfvm.js → vendor-CfR5hJGc.js} +3 -3
- package/dist/client/chunks/{vendor-BxLCTfvm.js.map → vendor-CfR5hJGc.js.map} +1 -1
- package/dist/client/components/AnalysisBuilder/types.d.ts +2 -2
- package/dist/client/components.js +3 -3
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.js +1 -1
- package/dist/client/index.js +15 -15
- package/dist/client/providers.js +1 -1
- package/dist/client/schema.js +1 -1
- package/dist/client/shared/chartDefaults.d.ts +5 -10
- package/dist/client/types.d.ts +1 -0
- package/dist/client/utils.js +6 -6
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +48 -48
- package/dist/server/index.cjs +7 -7
- package/dist/server/index.js +159 -16
- package/package.json +2 -2
- package/dist/adapters/mcp-transport-CkyawtUT.cjs +0 -40
- package/dist/adapters/mcp-transport-DSbd6M_u.js +0 -586
- package/dist/adapters/utils-DrWvXf0G.cjs +0 -128
- package/dist/client/chunks/DashboardEditModal-BBcB0E2g.js.map +0 -1
- package/dist/client/chunks/KpiDelta-D09hA_UJ.js +0 -2
- package/dist/client/chunks/KpiNumber-B7F9F9fC.js +0 -2
- package/dist/client/chunks/KpiText-C3ZXOF8b.js +0 -2
- package/dist/client/chunks/SchemaVisualization-DP4k1fPp.js +0 -2
- package/dist/client/chunks/SchemaVisualizationLazy-Brqv_PY9.js +0 -2
- package/dist/client/chunks/af-ZA-xDmO5F0s.js.map +0 -1
- package/dist/client/chunks/analysis-builder-0o1W-k3K.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-Cz4KAlIC.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-VFFm85hC.js.map +0 -1
- package/dist/client/chunks/chart-area-CwwIHTmK.js.map +0 -1
- package/dist/client/chunks/chart-bar-Bmny922L.js.map +0 -1
- package/dist/client/chunks/chart-config-activity-grid-C-EkgYoa.js.map +0 -1
- package/dist/client/chunks/chart-config-area-CMZpbIah.js.map +0 -1
- package/dist/client/chunks/chart-config-bar-B8_V4YLg.js.map +0 -1
- package/dist/client/chunks/chart-config-box-plot-Dwj7sEbU.js.map +0 -1
- package/dist/client/chunks/chart-config-bubble-B0w0ZVp4.js.map +0 -1
- package/dist/client/chunks/chart-config-candlestick-Bvo3zeIn.js.map +0 -1
- package/dist/client/chunks/chart-config-gauge-C5ZiyZy7.js.map +0 -1
- package/dist/client/chunks/chart-config-heat-map-Cv8qNnVP.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-delta-BraHQc2E.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-number-CeCkx7mC.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-text-CImM3SvH.js.map +0 -1
- package/dist/client/chunks/chart-config-line-BVKapAQK.js.map +0 -1
- package/dist/client/chunks/chart-config-measure-profile-KTVV1gO3.js.map +0 -1
- package/dist/client/chunks/chart-config-pie-BZxVl25X.js.map +0 -1
- package/dist/client/chunks/chart-config-radar-B7FByX3t.js.map +0 -1
- package/dist/client/chunks/chart-config-radial-bar-UfW_3yyX.js.map +0 -1
- package/dist/client/chunks/chart-config-scatter-BVVJuOnt.js.map +0 -1
- package/dist/client/chunks/chart-config-tree-map-IHp97OyV.js.map +0 -1
- package/dist/client/chunks/chart-config-waterfall-BdqG1V-x.js.map +0 -1
- package/dist/client/chunks/chart-line-DKvW32U-.js.map +0 -1
- package/dist/client/chunks/chart-markdown-CJU2hUq3.js.map +0 -1
- package/dist/client/chunks/dist-eZurnOde.js.map +0 -1
- package/dist/client/chunks/nl-NL-DDf0OdfW.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../utils-DrWvXf0G.cjs`),t=require(`../locale-Dl_3R6hP.cjs`),n=require(`../mcp-transport-CkyawtUT.cjs`);let r=require(`next/server`);function i(e){let{cubes:n,drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s}=e;if(!n||n.length===0)throw Error(`At least one cube must be provided in the cubes array`);let c=new t.i({drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s});return n.forEach(e=>{c.registerCube(e)}),c}function a(e){return{extractSecurityContext:async(n,r)=>t.r(await e.extractSecurityContext(n,r),t.n(e=>n.headers.get(e))),cors:e.cors?{...e.cors,allowedHeaders:t.t(e.cors.allowedHeaders)}:void 0}}function o(e,t){let n=e.headers.get(`origin`),r={};return t.origin&&(typeof t.origin==`string`?r[`Access-Control-Allow-Origin`]=t.origin:Array.isArray(t.origin)?n&&t.origin.includes(n)&&(r[`Access-Control-Allow-Origin`]=n):typeof t.origin==`function`&&n&&t.origin(n)&&(r[`Access-Control-Allow-Origin`]=n)),t.methods&&(r[`Access-Control-Allow-Methods`]=t.methods.join(`, `)),t.allowedHeaders&&(r[`Access-Control-Allow-Headers`]=t.allowedHeaders.join(`, `)),t.credentials&&(r[`Access-Control-Allow-Credentials`]=`true`),r}function s(e){return async function(n){let r=o(n,{...e,allowedHeaders:t.t(e.allowedHeaders)});return new Response(null,{status:200,headers:r})}}function c(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{let a;if(t.method===`POST`){let e=await t.json();a=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{a=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await n(t,i),u=c.validateQuery(a);if(!u.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=t.headers.get(`x-cache-control`)===`no-cache`,f=await c.executeMultiCubeQuery(a,l,{skipCache:d}),p=e.r(a,f,c);return r.NextResponse.json(p,{headers:s?o(t,s):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function l(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{let i=e.a(s.getMetadata());return r.NextResponse.json(i,{headers:n?o(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js meta handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Failed to fetch metadata`,500),{status:500})}}}function u(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{let a;if(t.method===`POST`){let e=await t.json();a=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{a=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await n(t,i),u=c.validateQuery(a);if(!u.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=a.measures?.[0]||a.dimensions?.[0];if(!d)return r.NextResponse.json(e.i(`No measures or dimensions specified`,400),{status:400});let f=d.split(`.`)[0],p=await c.generateSQL(f,a,l),m=e.o(a,p);return r.NextResponse.json(m,{headers:s?o(t,s):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js SQL handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`SQL generation failed`,500),{status:500})}}}function d(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{let a;if(t.method===`POST`){let e=await t.json();a=e.query||e}else if(t.method===`GET`){let e=t.nextUrl.searchParams.get(`query`);if(!e)return r.NextResponse.json({error:`Query parameter is required`,valid:!1},{status:400});try{a=JSON.parse(e)}catch{return r.NextResponse.json({error:`Invalid JSON in query parameter`,valid:!1},{status:400})}}else return r.NextResponse.json({error:`Method not allowed`,valid:!1},{status:405});let l=await n(t,i),u=await e.f(a,l,c);return r.NextResponse.json(u,{headers:s?o(t,s):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js dry-run handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},{status:400})}}}function f(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let{queries:a}=await t.json();if(!a||!Array.isArray(a))return r.NextResponse.json(e.i(`Request body must contain a "queries" array`,400),{status:400});if(a.length===0)return r.NextResponse.json(e.i(`Queries array cannot be empty`,400),{status:400});let l=await e.u(a,await n(t,i),c,{skipCache:t.headers.get(`x-cache-control`)===`no-cache`});return r.NextResponse.json(l,{headers:s?o(t,s):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js batch handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Batch execution failed`,500),{status:500})}}}function p(e){let{extractSecurityContext:t,cors:n}=a(e),s=i(e);return async function(e,i){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed`},{status:405});let a=await e.json(),c=a.query||a,l=a.options||{},u=await t(e,i),d=s.validateQuery(c);if(!d.isValid)return r.NextResponse.json({error:`Query validation failed: ${d.errors.join(`, `)}`},{status:400});let f=await s.explainQuery(c,u,l);return r.NextResponse.json(f,{headers:n?o(e,n):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js explain handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Explain query failed`},{status:500})}}}function m(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await e.d(s,await t.json());return r.NextResponse.json(i,{headers:n?o(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js discover handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Discovery failed`,500),{status:500})}}}function h(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await t.json();if(!i.naturalLanguage)return r.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let a=await e.m(s,i);return r.NextResponse.json(a,{headers:n?o(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js suggest handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query suggestion failed`,500),{status:500})}}}function g(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await t.json();if(!i.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let a=await e.h(s,i);return r.NextResponse.json(a,{headers:n?o(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js validate handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query validation failed`,500),{status:500})}}}function _(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await t.json();if(!a.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let l=await e.p(c,await n(t,i),a);return r.NextResponse.json(l,{headers:s?o(t,s):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function v(t){let{extractSecurityContext:s,cors:c}=a(t),{mcp:l={enabled:!0}}=t,u=i(t),d=n.o(u,l.resources),f=n.y(l.prompts),p=n.v(l.instructions);return async function(t){if(l.resourceMetadataUrl&&!n.u(t.headers.get(`authorization`)))return r.NextResponse.json({error:`Bearer token required`},{status:401,headers:{"WWW-Authenticate":n.c(l.resourceMetadataUrl)}});if(t.method===`DELETE`)return r.NextResponse.json({error:`Session termination not supported`},{status:405});if(t.method===`GET`){let e=new TextEncoder,i=n._(),a=new ReadableStream({start(t){t.enqueue(e.encode(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},i,15e3)))}}),s=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(c){let e=o(t,c);Object.entries(e).forEach(([e,t])=>s.set(e,t))}return new r.NextResponse(a,{status:200,headers:s})}if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=n.S(t.headers.get(`origin`),l.allowedOrigins?{allowedOrigins:l.allowedOrigins}:{});if(!i.valid)return r.NextResponse.json(n.i(null,-32600,i.reason),{status:403});let a=t.headers.get(`accept`);if(!n.x(a))return r.NextResponse.json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`),{status:400});let m=n.h(Object.fromEntries(t.headers.entries()));if(!m.ok)return r.NextResponse.json({error:`Unsupported MCP protocol version`,supported:m.supported},{status:426});let h;try{h=await t.json()}catch{h=null}let g=n.g(h);if(!g)return r.NextResponse.json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`),{status:400});let _=n.C(a),v=g.method===`initialize`,y=(e,n=200,i={})=>r.NextResponse.json(e,{status:n,headers:{...c?o(t,c):{},...i}});try{let e=await n.l(g.method,g.params,{semanticLayer:u,extractSecurityContext:e=>s(e),rawRequest:t,rawResponse:null,resources:d,prompts:f,instructions:p,appEnabled:!!l.app,appConfig:typeof l.app==`object`?l.app:void 0,serverName:l.serverName});if(n.m(g))return new r.NextResponse(null,{status:202});let i=v&&e&&typeof e==`object`&&`sessionId`in e?e.sessionId:void 0,a={};i&&(a[n.r]=i);let m=n.a(g.id??null,e);if(_){let e=new TextEncoder,i=n._(),s=new ReadableStream({start(t){t.enqueue(e.encode(`id: ${i}\n\n`)),t.enqueue(e.encode(n.b(m,i))),t.close()}}),l=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...a});if(c){let e=o(t,c);Object.entries(e).forEach(([e,t])=>l.set(e,t))}return new r.NextResponse(s,{status:200,headers:l})}return y(m,200,a)}catch(e){if(n.m(g))return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP notification processing error:`,e),new r.NextResponse(null,{status:202});process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP RPC handler error:`,e);let i=e?.code??-32603,a=e?.data,s=e.message||`MCP request failed`,l=n.i(g.id??null,i,s,a);if(_){let e=new TextEncoder,i=n._(),a=new ReadableStream({start(t){t.enqueue(e.encode(`id: ${i}\n\n`)),t.enqueue(e.encode(n.b(l,i))),t.close()}}),s=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(c){let e=o(t,c);Object.entries(e).forEach(([e,t])=>s.set(e,t))}return new r.NextResponse(a,{status:200,headers:s})}return y(l,200)}}}function y(e){let{extractSecurityContext:t,cors:n}=a(e),{agent:s}=e;if(!s)throw Error(`agent config is required for createAgentChatHandler`);let c=i(e);return async function(e,i){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed - use POST`},{status:405});let{handleAgentChat:a}=await Promise.resolve().then(()=>require(`../handler-CNn3q29F.cjs`)),{message:l,sessionId:u,history:d}=await e.json();if(!l||typeof l!=`string`)return r.NextResponse.json({error:`message is required and must be a string`},{status:400});let f=(s.apiKey||``).trim();if(s.allowClientApiKey){let t=e.headers.get(`x-agent-api-key`);t&&(f=t.trim())}if(!f)return r.NextResponse.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},{status:401});let p=s.allowClientApiKey&&e.headers.get(`x-agent-provider`)||void 0,m=s.allowClientApiKey&&e.headers.get(`x-agent-model`)||void 0,h=s.allowClientApiKey&&e.headers.get(`x-agent-provider-endpoint`)||void 0,g=await t(e,i),_=s.buildSystemContext?.(g),v=new TextEncoder,y=new ReadableStream({async start(e){try{let t=a({message:l,sessionId:u,history:d,semanticLayer:c,securityContext:g,agentConfig:s,apiKey:f,systemContext:_,providerOverride:p,modelOverride:m,baseURLOverride:h});for await(let n of t){let t=`data: ${JSON.stringify(n)}\n\n`;e.enqueue(v.encode(t))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(v.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}}),b=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(n){let t=o(e,n);Object.entries(t).forEach(([e,t])=>b.set(e,t))}return new Response(y,{status:200,headers:b})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js agent chat handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Agent chat failed`},{status:500})}}}function b(e){let{mcp:t={enabled:!0}}=e,n={load:c(e),meta:l(e),sql:u(e),dryRun:d(e),batch:f(e),explain:p(e)};return t.enabled!==!1&&(n.mcpRpc=v(e)),e.agent&&(n.agentChat=y(e)),n}exports.createAgentChatHandler=y,exports.createBatchHandler=f,exports.createCubeHandlers=b,exports.createDiscoverHandler=m,exports.createDryRunHandler=d,exports.createExplainHandler=p,exports.createLoadHandler=c,exports.createMcpLoadHandler=_,exports.createMcpRpcHandler=v,exports.createMetaHandler=l,exports.createOptionsHandler=s,exports.createSqlHandler=u,exports.createSuggestHandler=h,exports.createValidateHandler=g;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../utils-DklqMBHn.cjs`),t=require(`../locale-Dv6bl_eU.cjs`),n=require(`../mcp-transport-BCtjU0lC.cjs`);let r=require(`next/server`);function i(e){let{cubes:n,drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s}=e;if(!n||n.length===0)throw Error(`At least one cube must be provided in the cubes array`);let c=new t.i({drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s});return n.forEach(e=>{c.registerCube(e)}),c}function a(e){return{extractSecurityContext:async(n,r)=>t.r(await e.extractSecurityContext(n,r),t.n(e=>n.headers.get(e))),cors:e.cors?{...e.cors,allowedHeaders:t.t(e.cors.allowedHeaders)}:void 0}}function o(e,t){let n=e.headers.get(`origin`),r={};return t.origin&&(typeof t.origin==`string`?r[`Access-Control-Allow-Origin`]=t.origin:Array.isArray(t.origin)?n&&t.origin.includes(n)&&(r[`Access-Control-Allow-Origin`]=n):typeof t.origin==`function`&&n&&t.origin(n)&&(r[`Access-Control-Allow-Origin`]=n)),t.methods&&(r[`Access-Control-Allow-Methods`]=t.methods.join(`, `)),t.allowedHeaders&&(r[`Access-Control-Allow-Headers`]=t.allowedHeaders.join(`, `)),t.credentials&&(r[`Access-Control-Allow-Credentials`]=`true`),r}function s(e){return async function(n){let r=o(n,{...e,allowedHeaders:t.t(e.allowedHeaders)});return new Response(null,{status:200,headers:r})}}function c(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{let a;if(t.method===`POST`){let e=await t.json();a=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{a=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await n(t,i),u=c.validateQuery(a);if(!u.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=t.headers.get(`x-cache-control`)===`no-cache`,f=await c.executeMultiCubeQuery(a,l,{skipCache:d}),p=e.r(a,f,c);return r.NextResponse.json(p,{headers:s?o(t,s):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function l(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{let i=e.a(s.getMetadata());return r.NextResponse.json(i,{headers:n?o(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js meta handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Failed to fetch metadata`,500),{status:500})}}}function u(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{let a;if(t.method===`POST`){let e=await t.json();a=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{a=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await n(t,i),u=c.validateQuery(a);if(!u.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=a.measures?.[0]||a.dimensions?.[0];if(!d)return r.NextResponse.json(e.i(`No measures or dimensions specified`,400),{status:400});let f=d.split(`.`)[0],p=await c.generateSQL(f,a,l),m=e.o(a,p);return r.NextResponse.json(m,{headers:s?o(t,s):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js SQL handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`SQL generation failed`,500),{status:500})}}}function d(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{let a;if(t.method===`POST`){let e=await t.json();a=e.query||e}else if(t.method===`GET`){let e=t.nextUrl.searchParams.get(`query`);if(!e)return r.NextResponse.json({error:`Query parameter is required`,valid:!1},{status:400});try{a=JSON.parse(e)}catch{return r.NextResponse.json({error:`Invalid JSON in query parameter`,valid:!1},{status:400})}}else return r.NextResponse.json({error:`Method not allowed`,valid:!1},{status:405});let l=await n(t,i),u=await e.f(a,l,c);return r.NextResponse.json(u,{headers:s?o(t,s):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js dry-run handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},{status:400})}}}function f(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let{queries:a}=await t.json();if(!a||!Array.isArray(a))return r.NextResponse.json(e.i(`Request body must contain a "queries" array`,400),{status:400});if(a.length===0)return r.NextResponse.json(e.i(`Queries array cannot be empty`,400),{status:400});let l=await e.u(a,await n(t,i),c,{skipCache:t.headers.get(`x-cache-control`)===`no-cache`});return r.NextResponse.json(l,{headers:s?o(t,s):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js batch handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Batch execution failed`,500),{status:500})}}}function p(e){let{extractSecurityContext:t,cors:n}=a(e),s=i(e);return async function(e,i){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed`},{status:405});let a=await e.json(),c=a.query||a,l=a.options||{},u=await t(e,i),d=s.validateQuery(c);if(!d.isValid)return r.NextResponse.json({error:`Query validation failed: ${d.errors.join(`, `)}`},{status:400});let f=await s.explainQuery(c,u,l);return r.NextResponse.json(f,{headers:n?o(e,n):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js explain handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Explain query failed`},{status:500})}}}function m(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await e.d(s,await t.json());return r.NextResponse.json(i,{headers:n?o(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js discover handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Discovery failed`,500),{status:500})}}}function h(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await t.json();if(!i.naturalLanguage)return r.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let a=await e.m(s,i);return r.NextResponse.json(a,{headers:n?o(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js suggest handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query suggestion failed`,500),{status:500})}}}function g(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await t.json();if(!i.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let a=await e.h(s,i);return r.NextResponse.json(a,{headers:n?o(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js validate handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query validation failed`,500),{status:500})}}}function _(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await t.json();if(!a.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let l=await e.p(c,await n(t,i),a);return r.NextResponse.json(l,{headers:s?o(t,s):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function v(t){let{extractSecurityContext:s,cors:c}=a(t),{mcp:l={enabled:!0}}=t,u=i(t),d=n.o(u,l.resources),f=n.y(l.prompts),p=n.v(l.instructions);return async function(t){if(l.resourceMetadataUrl&&!n.u(t.headers.get(`authorization`)))return r.NextResponse.json({error:`Bearer token required`},{status:401,headers:{"WWW-Authenticate":n.c(l.resourceMetadataUrl)}});if(t.method===`DELETE`)return r.NextResponse.json({error:`Session termination not supported`},{status:405});if(t.method===`GET`){let e=new TextEncoder,i=n._(),a=new ReadableStream({start(t){t.enqueue(e.encode(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},i,15e3)))}}),s=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(c){let e=o(t,c);Object.entries(e).forEach(([e,t])=>s.set(e,t))}return new r.NextResponse(a,{status:200,headers:s})}if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=n.S(t.headers.get(`origin`),l.allowedOrigins?{allowedOrigins:l.allowedOrigins}:{});if(!i.valid)return r.NextResponse.json(n.i(null,-32600,i.reason),{status:403});let a=t.headers.get(`accept`);if(!n.x(a))return r.NextResponse.json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`),{status:400});let m=n.h(Object.fromEntries(t.headers.entries()));if(!m.ok)return r.NextResponse.json({error:`Unsupported MCP protocol version`,supported:m.supported},{status:426});let h;try{h=await t.json()}catch{h=null}let g=n.g(h);if(!g)return r.NextResponse.json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`),{status:400});let _=n.C(a),v=g.method===`initialize`,y=(e,n=200,i={})=>r.NextResponse.json(e,{status:n,headers:{...c?o(t,c):{},...i}});try{let e=await n.l(g.method,g.params,{semanticLayer:u,extractSecurityContext:e=>s(e),rawRequest:t,rawResponse:null,resources:d,prompts:f,instructions:p,appEnabled:!!l.app,appConfig:typeof l.app==`object`?l.app:void 0,serverName:l.serverName});if(n.m(g))return new r.NextResponse(null,{status:202});let i=v&&e&&typeof e==`object`&&`sessionId`in e?e.sessionId:void 0,a={};i&&(a[n.r]=i);let m=n.a(g.id??null,e);if(_){let e=new TextEncoder,i=n._(),s=new ReadableStream({start(t){t.enqueue(e.encode(`id: ${i}\n\n`)),t.enqueue(e.encode(n.b(m,i))),t.close()}}),l=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...a});if(c){let e=o(t,c);Object.entries(e).forEach(([e,t])=>l.set(e,t))}return new r.NextResponse(s,{status:200,headers:l})}return y(m,200,a)}catch(e){if(n.m(g))return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP notification processing error:`,e),new r.NextResponse(null,{status:202});process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP RPC handler error:`,e);let i=e?.code??-32603,a=e?.data,s=e.message||`MCP request failed`,l=n.i(g.id??null,i,s,a);if(_){let e=new TextEncoder,i=n._(),a=new ReadableStream({start(t){t.enqueue(e.encode(`id: ${i}\n\n`)),t.enqueue(e.encode(n.b(l,i))),t.close()}}),s=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(c){let e=o(t,c);Object.entries(e).forEach(([e,t])=>s.set(e,t))}return new r.NextResponse(a,{status:200,headers:s})}return y(l,200)}}}function y(e){let{extractSecurityContext:t,cors:n}=a(e),{agent:s}=e;if(!s)throw Error(`agent config is required for createAgentChatHandler`);let c=i(e);return async function(e,i){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed - use POST`},{status:405});let{handleAgentChat:a}=await Promise.resolve().then(()=>require(`../handler-C0nUppAK.cjs`)),{message:l,sessionId:u,history:d}=await e.json();if(!l||typeof l!=`string`)return r.NextResponse.json({error:`message is required and must be a string`},{status:400});let f=(s.apiKey||``).trim();if(s.allowClientApiKey){let t=e.headers.get(`x-agent-api-key`);t&&(f=t.trim())}if(!f)return r.NextResponse.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},{status:401});let p=s.allowClientApiKey&&e.headers.get(`x-agent-provider`)||void 0,m=s.allowClientApiKey&&e.headers.get(`x-agent-model`)||void 0,h=s.allowClientApiKey&&e.headers.get(`x-agent-provider-endpoint`)||void 0,g=await t(e,i),_=s.buildSystemContext?.(g),v=new TextEncoder,y=new ReadableStream({async start(e){try{let t=a({message:l,sessionId:u,history:d,semanticLayer:c,securityContext:g,agentConfig:s,apiKey:f,systemContext:_,providerOverride:p,modelOverride:m,baseURLOverride:h});for await(let n of t){let t=`data: ${JSON.stringify(n)}\n\n`;e.enqueue(v.encode(t))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(v.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}}),b=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(n){let t=o(e,n);Object.entries(t).forEach(([e,t])=>b.set(e,t))}return new Response(y,{status:200,headers:b})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js agent chat handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Agent chat failed`},{status:500})}}}function b(e){let{mcp:t={enabled:!0}}=e,n={load:c(e),meta:l(e),sql:u(e),dryRun:d(e),batch:f(e),explain:p(e)};return t.enabled!==!1&&(n.mcpRpc=v(e)),e.agent&&(n.agentChat=y(e)),n}exports.createAgentChatHandler=y,exports.createBatchHandler=f,exports.createCubeHandlers=b,exports.createDiscoverHandler=m,exports.createDryRunHandler=d,exports.createExplainHandler=p,exports.createLoadHandler=c,exports.createMcpLoadHandler=_,exports.createMcpRpcHandler=v,exports.createMetaHandler=l,exports.createOptionsHandler=s,exports.createSqlHandler=u,exports.createSuggestHandler=h,exports.createValidateHandler=g;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as e, d as t, f as n, h as r, i, m as a, o, p as s, r as c, u as l } from "../utils-
|
|
2
|
-
import { i as u, n as d, r as f, t as p } from "../locale-
|
|
3
|
-
import { C as m, S as h, _ as g, a as _, b as v, c as y, g as b, h as x, i as S, l as C, m as w, o as T, r as E, u as D, v as O, x as k, y as A } from "../mcp-transport-
|
|
1
|
+
import { a as e, d as t, f as n, h as r, i, m as a, o, p as s, r as c, u as l } from "../utils-Bd5mzZfk.js";
|
|
2
|
+
import { i as u, n as d, r as f, t as p } from "../locale-Dy3LcTwN.js";
|
|
3
|
+
import { C as m, S as h, _ as g, a as _, b as v, c as y, g as b, h as x, i as S, l as C, m as w, o as T, r as E, u as D, v as O, x as k, y as A } from "../mcp-transport-DW_Uks-O.js";
|
|
4
4
|
import { NextResponse as j } from "next/server";
|
|
5
5
|
//#region src/adapters/nextjs/index.ts
|
|
6
6
|
function M(e) {
|
|
@@ -348,7 +348,7 @@ function q(e) {
|
|
|
348
348
|
return async function(e, a) {
|
|
349
349
|
try {
|
|
350
350
|
if (e.method !== "POST") return j.json({ error: "Method not allowed - use POST" }, { status: 405 });
|
|
351
|
-
let { handleAgentChat: o } = await import("../handler-
|
|
351
|
+
let { handleAgentChat: o } = await import("../handler-Odsi9_Rd.js"), { message: s, sessionId: c, history: l } = await e.json();
|
|
352
352
|
if (!s || typeof s != "string") return j.json({ error: "message is required and must be a string" }, { status: 400 });
|
|
353
353
|
let u = (r.apiKey || "").trim();
|
|
354
354
|
if (r.allowClientApiKey) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region \0rolldown/runtime.js
|
|
2
|
-
var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescriptor, r = Object.getOwnPropertyNames, i = Object.getPrototypeOf, a = Object.prototype.hasOwnProperty, o = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), s = (e, n) => {
|
|
2
|
+
var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescriptor, r = Object.getOwnPropertyNames, i = Object.getPrototypeOf, a = Object.prototype.hasOwnProperty, o = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), s = (e, n) => {
|
|
3
3
|
let r = {};
|
|
4
4
|
for (var i in e) t(r, i, {
|
|
5
5
|
get: e[i],
|
|
@@ -45,10 +45,8 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr
|
|
|
45
45
|
"analysis.tabs.query": "Query",
|
|
46
46
|
"analysis.tabs.chart": "Chart",
|
|
47
47
|
"analysis.tabs.chartTitle": "Chart configuration",
|
|
48
|
-
"analysis.tabs.chartDisabled": "Add metrics to configure chart",
|
|
49
48
|
"analysis.tabs.display": "Display",
|
|
50
49
|
"analysis.tabs.displayTitle": "Display options",
|
|
51
|
-
"analysis.tabs.displayDisabled": "Add metrics to configure display",
|
|
52
50
|
"analysis.multiQuery.removeQuery": "Remove query",
|
|
53
51
|
"analysis.multiQuery.addQuery": "Add new query",
|
|
54
52
|
"analysis.multiQuery.addAnother": "Add another query",
|
|
@@ -412,6 +410,8 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr
|
|
|
412
410
|
"chart.option.target.description": "Single value or comma-separated values to spread across X-axis",
|
|
413
411
|
"chart.option.connectNulls.label": "Connect Nulls",
|
|
414
412
|
"chart.option.connectNulls.description": "Draw continuous line through missing data points",
|
|
413
|
+
"chart.option.showAllXLabels.label": "Show All X Labels",
|
|
414
|
+
"chart.option.showAllXLabels.description": "Display every label on the X-axis instead of auto-hiding overlapping labels",
|
|
415
415
|
"chart.option.leftYAxisFormat.label": "Left Y-Axis Format",
|
|
416
416
|
"chart.option.leftYAxisFormat.description": "Number formatting for left Y-axis",
|
|
417
417
|
"chart.option.rightYAxisFormat.label": "Right Y-Axis Format",
|
|
@@ -955,6 +955,13 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr
|
|
|
955
955
|
"queryAnalysis.cubesInvolved": "Cubes involved:",
|
|
956
956
|
"common.actions.copied": "Copied",
|
|
957
957
|
"common.actions.copyToClipboard": "Copy to clipboard",
|
|
958
|
+
"chart.availability.requiresMeasure": "Requires at least 1 measure",
|
|
959
|
+
"chart.availability.requiresTwoMeasures": "Requires at least 2 measures",
|
|
960
|
+
"chart.availability.requiresDimension": "Requires at least 1 dimension",
|
|
961
|
+
"chart.availability.requiresTwoDimensions": "Requires at least 2 dimensions",
|
|
962
|
+
"chart.availability.requiresTimeDimension": "Requires a time dimension",
|
|
963
|
+
"chart.availability.scatter": "Requires 2 measures, or 1 measure plus 1 dimension",
|
|
964
|
+
"chart.availability.bubble": "Requires at least 2 measures and 1 dimension",
|
|
958
965
|
"chart.runtime.noData": "No data available",
|
|
959
966
|
"chart.runtime.noDataHint.bar": "No data points to display in bar chart",
|
|
960
967
|
"chart.runtime.noDataHint.line": "No data points to display in line chart",
|
|
@@ -5918,16 +5925,25 @@ var Ja = function(e, t) {
|
|
|
5918
5925
|
"",
|
|
5919
5926
|
"```",
|
|
5920
5927
|
"User wants data over a time period?",
|
|
5921
|
-
"|- AGGREGATED TOTALS
|
|
5922
|
-
"|
|
|
5928
|
+
"|- AGGREGATED TOTALS — no time breakdown in the output",
|
|
5929
|
+
"| (\"total sales last month\", \"top 5 customers this quarter\")",
|
|
5930
|
+
"| -> filters with inDateRange, NEVER timeDimensions",
|
|
5931
|
+
"| Use this whenever the user does NOT want time in the result rows.",
|
|
5923
5932
|
"|",
|
|
5924
|
-
"|- TIME SERIES
|
|
5925
|
-
"|
|
|
5926
|
-
"|",
|
|
5927
|
-
"
|
|
5928
|
-
"
|
|
5933
|
+
"|- TIME SERIES — time breakdown in the output",
|
|
5934
|
+
"| (\"daily sales last month\", \"monthly breakdown for last quarter\")",
|
|
5935
|
+
"| -> timeDimensions with BOTH dateRange AND granularity",
|
|
5936
|
+
"| ONE entry covers both filtering and grouping — do NOT also add an",
|
|
5937
|
+
"| inDateRange filter on the same field (it duplicates the WHERE clause).",
|
|
5929
5938
|
"```",
|
|
5930
5939
|
"",
|
|
5940
|
+
"## NEVER duplicate date filtering on the same field",
|
|
5941
|
+
"Do NOT put both a `filters[].inDateRange` and a `timeDimensions[].dateRange` on the same field — the engine will emit the same WHERE clause twice. Pick ONE based on whether the user wants time in the output:",
|
|
5942
|
+
"- No time in output → `filters[].inDateRange` ONLY (no timeDimensions)",
|
|
5943
|
+
"- Time in output → `timeDimensions[].dateRange + granularity` ONLY (no inDateRange filter on the same field)",
|
|
5944
|
+
"",
|
|
5945
|
+
"Only combine `filters` + `timeDimensions` when the filter is on a DIFFERENT field (e.g., \"monthly trend for EU customers\" → filter on region + timeDimension on date).",
|
|
5946
|
+
"",
|
|
5931
5947
|
"## Aggregated Totals (most common)",
|
|
5932
5948
|
"When: \"last 3 months\", \"over the past year\", \"in Q1\", \"since January\"",
|
|
5933
5949
|
"```json",
|
|
@@ -5974,11 +5990,12 @@ var Ja = function(e, t) {
|
|
|
5974
5990
|
"",
|
|
5975
5991
|
"| User Request | Approach |",
|
|
5976
5992
|
"|---|---|",
|
|
5977
|
-
"| \"total for last 3 months\" | filters + inDateRange |",
|
|
5978
|
-
"| \"top 5 last quarter\" | filters + inDateRange + order + limit |",
|
|
5979
|
-
"| \"monthly trend\" | timeDimensions + granularity |",
|
|
5980
|
-
"| \"daily breakdown last week\" | timeDimensions
|
|
5981
|
-
"| \"compare this month to last\" | timeDimensions
|
|
5993
|
+
"| \"total for last 3 months\" | filters + inDateRange (no timeDimensions) |",
|
|
5994
|
+
"| \"top 5 last quarter\" | filters + inDateRange + order + limit (no timeDimensions) |",
|
|
5995
|
+
"| \"monthly trend\" | timeDimensions with dateRange + granularity |",
|
|
5996
|
+
"| \"daily breakdown last week\" | timeDimensions with dateRange + granularity |",
|
|
5997
|
+
"| \"compare this month to last\" | timeDimensions with compareDateRange + granularity |",
|
|
5998
|
+
"| \"monthly trend for EU customers\" | filters on region + timeDimensions with dateRange + granularity |"
|
|
5982
5999
|
].join("\n")
|
|
5983
6000
|
}
|
|
5984
6001
|
}]
|
|
@@ -7343,9 +7360,18 @@ async function rs(e, t) {
|
|
|
7343
7360
|
async function is(e, t) {
|
|
7344
7361
|
return Eo(e.getMetadata(), t.naturalLanguage, t.cube);
|
|
7345
7362
|
}
|
|
7346
|
-
async function as(e, t) {
|
|
7347
|
-
let
|
|
7348
|
-
|
|
7363
|
+
async function as(e, t, n) {
|
|
7364
|
+
let r = e.getMetadata(), i = await Mo(t.query, r);
|
|
7365
|
+
if (i.isValid && n) try {
|
|
7366
|
+
let r = os(i.correctedQuery ?? t.query), a = await e.dryRun(r, n);
|
|
7367
|
+
return {
|
|
7368
|
+
...i,
|
|
7369
|
+
sql: a
|
|
7370
|
+
};
|
|
7371
|
+
} catch {
|
|
7372
|
+
return i;
|
|
7373
|
+
}
|
|
7374
|
+
return i;
|
|
7349
7375
|
}
|
|
7350
7376
|
function $(e) {
|
|
7351
7377
|
let t = e.split(".");
|