drizzle-cube 0.9.6 → 0.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/adapters/ActivityGridChart.config-BGndyZtr.cjs +1 -0
- package/dist/adapters/ActivityGridChart.config-ZdvHJAHq.js +2 -0
- package/dist/adapters/AreaChart.config-Cybigwcb.js +2 -0
- package/dist/adapters/AreaChart.config-DWGesxUg.cjs +1 -0
- package/dist/adapters/BarChart.config-Cc04tVQF.js +2 -0
- package/dist/adapters/BarChart.config-DBCu0t_-.cjs +1 -0
- package/dist/adapters/BoxPlotChart.config-C0WK_ipa.cjs +1 -0
- package/dist/adapters/BoxPlotChart.config-DapOUN_R.js +2 -0
- package/dist/adapters/BubbleChart.config-DPmf7sI5.cjs +1 -0
- package/dist/adapters/BubbleChart.config-DROSTwxW.js +2 -0
- package/dist/adapters/CandlestickChart.config-BHoEJ2nY.js +2 -0
- package/dist/adapters/CandlestickChart.config-Cm0PKObO.cjs +1 -0
- package/dist/adapters/DataTable.config-DLvfXXSH.cjs +1 -0
- package/dist/adapters/DataTable.config-DbVrWZIw.js +2 -0
- package/dist/adapters/DotStripChart.config-CKPw82HE.js +2 -0
- package/dist/adapters/DotStripChart.config-DPIrTLb6.cjs +1 -0
- package/dist/adapters/FunnelChart.config-DpiDbOTn.cjs +1 -0
- package/dist/adapters/FunnelChart.config-DtBHVpLB.js +2 -0
- package/dist/adapters/GaugeChart.config-CmuXGRNV.js +2 -0
- package/dist/adapters/GaugeChart.config-DLj1YNsp.cjs +1 -0
- package/dist/adapters/HeatMapChart.config-BvFK2bny.cjs +1 -0
- package/dist/adapters/HeatMapChart.config-DK18zZV8.js +2 -0
- package/dist/adapters/KpiDelta.config-BsaVN5-T.js +2 -0
- package/dist/adapters/KpiDelta.config-DHsMgIdk.cjs +1 -0
- package/dist/adapters/KpiNumber.config-D82-j-8T.js +2 -0
- package/dist/adapters/KpiNumber.config-pFRomJRE.cjs +1 -0
- package/dist/adapters/KpiText.config-CCqeKuFB.js +2 -0
- package/dist/adapters/KpiText.config-CSeCoBuO.cjs +1 -0
- package/dist/adapters/LineChart.config-C2acjFv4.js +2 -0
- package/dist/adapters/LineChart.config-Dr9wmiK0.cjs +1 -0
- package/dist/adapters/MarkdownChart.config-C-tYLLan.js +2 -0
- package/dist/adapters/MarkdownChart.config-Dvyfo0CB.cjs +1 -0
- package/dist/adapters/MeasureProfileChart.config-C5CjPw48.js +2 -0
- package/dist/adapters/MeasureProfileChart.config-Dj-7HqkS.cjs +1 -0
- package/dist/adapters/PieChart.config-CY7nFFQn.cjs +1 -0
- package/dist/adapters/PieChart.config-DQLQMHc_.js +2 -0
- package/dist/adapters/ProportionBarChart.config-BVqtS7wi.cjs +1 -0
- package/dist/adapters/ProportionBarChart.config-BaSgs976.js +2 -0
- package/dist/adapters/RadarChart.config-DxJ5k8L9.cjs +1 -0
- package/dist/adapters/RadarChart.config-DzL7zQUc.js +2 -0
- package/dist/adapters/RadialBarChart.config-Dzl1HiGz.js +2 -0
- package/dist/adapters/RadialBarChart.config-XlGTd9gV.cjs +1 -0
- package/dist/adapters/RecordsTable.config-CS5oIMvv.js +2 -0
- package/dist/adapters/RecordsTable.config-DRQdHghk.cjs +1 -0
- package/dist/adapters/RetentionCombinedChart.config-C0iiKOdf.js +2 -0
- package/dist/adapters/RetentionCombinedChart.config-Dl20GZnb.cjs +1 -0
- package/dist/adapters/RetentionHeatmap.config-Bt42ip_c.js +2 -0
- package/dist/adapters/RetentionHeatmap.config-DyggEvyy.cjs +1 -0
- package/dist/adapters/SankeyChart.config-DYz1nUx9.js +2 -0
- package/dist/adapters/SankeyChart.config-dlNLJMf9.cjs +1 -0
- package/dist/adapters/ScatterChart.config-D72zRviD.js +2 -0
- package/dist/adapters/ScatterChart.config-DRtyuQvV.cjs +1 -0
- package/dist/adapters/SunburstChart.config-C5nHXLcu.cjs +1 -0
- package/dist/adapters/SunburstChart.config-j5ioABeT.js +2 -0
- package/dist/adapters/TreeMapChart.config-CXKcX5CH.js +2 -0
- package/dist/adapters/TreeMapChart.config-DuYbme03.cjs +1 -0
- package/dist/adapters/WaterfallChart.config-BCn4tsBV.cjs +1 -0
- package/dist/adapters/WaterfallChart.config-BPqhdzTP.js +2 -0
- package/dist/adapters/{compiler-CpvetSCm.js → compiler-BKg3j2mm.js} +1260 -2446
- package/dist/adapters/compiler-BX6Ug_Uq.cjs +166 -0
- package/dist/adapters/core/index.cjs +1 -1
- package/dist/adapters/core/index.js +1 -1
- package/dist/adapters/{core-BH_56XtM.js → core-Bmb7XMBz.js} +2 -2
- package/dist/adapters/{core-CydD6oFu.cjs → core-JgUTMhxl.cjs} +1 -1
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +5 -5
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.js +23 -23
- package/dist/adapters/{handler-CtcALGcY.js → handler-CknKLUQW.js} +213 -209
- package/dist/adapters/{handler-Dp8fpSpk.cjs → handler-DLWgxPOk.cjs} +8 -8
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +4 -4
- package/dist/adapters/mcp-app-html-Bu4j3yZM.cjs +1 -0
- package/dist/adapters/{mcp-app-html-C8vG9epH.js → mcp-app-html-D3GsxPcx.js} +1 -1
- package/dist/adapters/mcp-app-html.cjs +1 -1
- package/dist/adapters/mcp-app-html.js +1 -1
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +3 -3
- package/dist/adapters/{mcp-transport-DDxjqyuK.js → mcp-transport-BTmAXLo8.js} +8 -3
- package/dist/adapters/{mcp-transport-QGYYYSgR.cjs → mcp-transport-DzxluRyH.cjs} +2 -2
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +5 -5
- package/dist/adapters/openai-CDH_AU_Z.cjs +19 -0
- package/dist/adapters/{openai-pCkHdDh4.js → openai-CYTlIdxS.js} +1 -1
- package/dist/adapters/{openai-Cm4JcLuF.cjs → openai-KbobaAQj.cjs} +1 -1
- package/dist/adapters/{openai-DH5InEPj.js → openai-enh3Hkzr.js} +510 -439
- package/dist/adapters/utils-Du_UZbn5.cjs +139 -0
- package/dist/adapters/{utils-C_Mc0qsk.js → utils-i2h5cwI3.js} +2587 -1254
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.js +1 -1
- package/dist/cjs/client/components/shared/dateRangeUtils.d.ts +7 -3
- package/dist/cjs/server/adapters/base-adapter.d.ts +3 -3
- package/dist/cjs/server/ai/query-schema.d.ts +3 -3
- package/dist/cjs/server/builders/date-time-builder.d.ts +1 -2
- package/dist/cjs/server/builders/date-time-helpers.d.ts +19 -6
- package/dist/cjs/server/builders/filter-operators.d.ts +10 -1
- package/dist/cjs/server/execution/query-normalizer.d.ts +9 -0
- package/dist/cjs/server/physical-plan/drizzle-sql-builder.d.ts +25 -0
- package/dist/cjs/server/physical-plan/semi-join.d.ts +21 -0
- package/dist/cjs/server/prompts/single-step-prompt.d.ts +1 -1
- package/dist/client/charts.js +12 -12
- package/dist/client/chunks/{DashboardEditModal-USQFytJw.js → DashboardEditModal-CiN77tQN.js} +662 -540
- package/dist/client/chunks/DashboardEditModal-CiN77tQN.js.map +1 -0
- package/dist/client/chunks/{DotStripChart-CjSsunHE.js → DotStripChart-in6QHc0b.js} +3 -3
- package/dist/client/chunks/{DotStripChart-CjSsunHE.js.map → DotStripChart-in6QHc0b.js.map} +1 -1
- package/dist/client/chunks/{ProportionBarChart-B8UyZBO_.js → ProportionBarChart-CjuOm7NT.js} +3 -3
- package/dist/client/chunks/{ProportionBarChart-B8UyZBO_.js.map → ProportionBarChart-CjuOm7NT.js.map} +1 -1
- package/dist/client/chunks/{RecordsTable-BSmkwdgd.js → RecordsTable-CXXsiaV1.js} +4 -4
- package/dist/client/chunks/{RecordsTable-BSmkwdgd.js.map → RecordsTable-CXXsiaV1.js.map} +1 -1
- package/dist/client/chunks/{RetentionCombinedChart-rOdIhUGH.js → RetentionCombinedChart-DFCeEFkx.js} +3 -3
- package/dist/client/chunks/{RetentionCombinedChart-rOdIhUGH.js.map → RetentionCombinedChart-DFCeEFkx.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-DVm_7rph.js → RetentionHeatmap-jpshJ2Af.js} +2 -2
- package/dist/client/chunks/{RetentionHeatmap-DVm_7rph.js.map → RetentionHeatmap-jpshJ2Af.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-D_tw9BvU.js → analysis-builder-DIOnKxJu.js} +41 -41
- package/dist/client/chunks/{analysis-builder-D_tw9BvU.js.map → analysis-builder-DIOnKxJu.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-BSINKFr2.js → analysis-builder-shared-CoX_nmo0.js} +640 -778
- package/dist/client/chunks/analysis-builder-shared-CoX_nmo0.js.map +1 -0
- package/dist/client/chunks/{chart-activity-grid-CSIsJ12e.js → chart-activity-grid-DGazwi4C.js} +9 -2
- package/dist/client/chunks/chart-activity-grid-DGazwi4C.js.map +1 -0
- package/dist/client/chunks/{chart-area-BpvSKH5I.js → chart-area-zyLGD-ym.js} +2 -2
- package/dist/client/chunks/{chart-area-BpvSKH5I.js.map → chart-area-zyLGD-ym.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-Cjzv-LvG.js → chart-bar-DMCBq8qJ.js} +3 -3
- package/dist/client/chunks/{chart-bar-Cjzv-LvG.js.map → chart-bar-DMCBq8qJ.js.map} +1 -1
- package/dist/client/chunks/{chart-box-plot-DHsHfMt6.js → chart-box-plot-5Z55A-it.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-DHsHfMt6.js.map → chart-box-plot-5Z55A-it.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-BtWm6x7L.js → chart-bubble-YD28dX8w.js} +2 -2
- package/dist/client/chunks/{chart-bubble-BtWm6x7L.js.map → chart-bubble-YD28dX8w.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-Bz0_fLuq.js → chart-candlestick-BUMpBI08.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-Bz0_fLuq.js.map → chart-candlestick-BUMpBI08.js.map} +1 -1
- package/dist/client/chunks/{chart-data-table-BH1A-1RN.js → chart-data-table-BdMo3zVh.js} +2 -2
- package/dist/client/chunks/chart-data-table-BdMo3zVh.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-C_-K4RLj.js → chart-funnel-BRyZS6ie.js} +2 -2
- package/dist/client/chunks/{chart-funnel-C_-K4RLj.js.map → chart-funnel-BRyZS6ie.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-F-vdq2BX.js → chart-gauge-DxgHlZKp.js} +3 -3
- package/dist/client/chunks/{chart-gauge-F-vdq2BX.js.map → chart-gauge-DxgHlZKp.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-D_8TluGo.js → chart-heat-map-5jHm3f-V.js} +3 -3
- package/dist/client/chunks/{chart-heat-map-D_8TluGo.js.map → chart-heat-map-5jHm3f-V.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-DGvQ0BHZ.js → chart-kpi-delta-C84P-mwu.js} +3 -3
- package/dist/client/chunks/{chart-kpi-delta-DGvQ0BHZ.js.map → chart-kpi-delta-C84P-mwu.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-DP6zCh-c.js → chart-kpi-number-D9GqtBWw.js} +5 -5
- package/dist/client/chunks/{chart-kpi-number-DP6zCh-c.js.map → chart-kpi-number-D9GqtBWw.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-DDbWfMwK.js → chart-kpi-text-D3HqxXzU.js} +3 -3
- package/dist/client/chunks/{chart-kpi-text-DDbWfMwK.js.map → chart-kpi-text-D3HqxXzU.js.map} +1 -1
- package/dist/client/chunks/{chart-line-DlhmQQ-X.js → chart-line-IEgiF8Nv.js} +3 -3
- package/dist/client/chunks/{chart-line-DlhmQQ-X.js.map → chart-line-IEgiF8Nv.js.map} +1 -1
- package/dist/client/chunks/{chart-markdown-C5ldCjSN.js → chart-markdown-B_2Ed7FJ.js} +2 -2
- package/dist/client/chunks/{chart-markdown-C5ldCjSN.js.map → chart-markdown-B_2Ed7FJ.js.map} +1 -1
- package/dist/client/chunks/{chart-measure-profile-CjErXQI4.js → chart-measure-profile-CWsPrQhH.js} +3 -3
- package/dist/client/chunks/{chart-measure-profile-CjErXQI4.js.map → chart-measure-profile-CWsPrQhH.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-CmKhmUR-.js → chart-pie-BEB2sCXF.js} +3 -3
- package/dist/client/chunks/{chart-pie-CmKhmUR-.js.map → chart-pie-BEB2sCXF.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-B2bYTyb0.js → chart-radar-BbSbXKbP.js} +3 -3
- package/dist/client/chunks/{chart-radar-B2bYTyb0.js.map → chart-radar-BbSbXKbP.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-DvQ-xZS-.js → chart-radial-bar-CNYD7tkM.js} +3 -3
- package/dist/client/chunks/{chart-radial-bar-DvQ-xZS-.js.map → chart-radial-bar-CNYD7tkM.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-DHIrjmhj.js → chart-sankey-DKnTIvSr.js} +2 -2
- package/dist/client/chunks/{chart-sankey-DHIrjmhj.js.map → chart-sankey-DKnTIvSr.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-JnoA3CD5.js → chart-scatter-CSWF6-lx.js} +3 -3
- package/dist/client/chunks/{chart-scatter-JnoA3CD5.js.map → chart-scatter-CSWF6-lx.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-BtzRp5bg.js → chart-sunburst-CdGzCq7q.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-BtzRp5bg.js.map → chart-sunburst-CdGzCq7q.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-HQitd39D.js → chart-tree-map-BiXB7EiM.js} +3 -3
- package/dist/client/chunks/{chart-tree-map-HQitd39D.js.map → chart-tree-map-BiXB7EiM.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-Dd3HMz3p.js → chart-waterfall-5rSDeLEZ.js} +3 -3
- package/dist/client/chunks/{chart-waterfall-Dd3HMz3p.js.map → chart-waterfall-5rSDeLEZ.js.map} +1 -1
- package/dist/client/chunks/{charts-core-CQFOTTPb.js → charts-core-CKpkoMCa.js} +2 -2
- package/dist/client/chunks/{charts-core-CQFOTTPb.js.map → charts-core-CKpkoMCa.js.map} +1 -1
- package/dist/client/chunks/charts-loader-BTI0UPK4.js +87 -0
- package/dist/client/chunks/{charts-loader-BlxEsp39.js.map → charts-loader-BTI0UPK4.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-gaWTnOGQ.js → nl-NL-kRjxedTf.js} +8 -1
- package/dist/client/chunks/{nl-NL-gaWTnOGQ.js.map → nl-NL-kRjxedTf.js.map} +1 -1
- package/dist/client/chunks/{schema-visualization-BspQ-XB8.js → schema-visualization-BbvL74Sf.js} +3 -3
- package/dist/client/chunks/{schema-visualization-BspQ-XB8.js.map → schema-visualization-BbvL74Sf.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-DY5sjvb6.js → useDirtyStateTracking-BfG1lX_3.js} +4 -4
- package/dist/client/chunks/{useDirtyStateTracking-DY5sjvb6.js.map → useDirtyStateTracking-BfG1lX_3.js.map} +1 -1
- package/dist/client/chunks/{useExplainAI-BY0Ti3FZ.js → useExplainAI-CDFhgmpE.js} +4 -4
- package/dist/client/chunks/{useExplainAI-BY0Ti3FZ.js.map → useExplainAI-CDFhgmpE.js.map} +1 -1
- package/dist/client/chunks/{vendor-C4pD7rZf.js → vendor-DeckzF1j.js} +2 -2
- package/dist/client/chunks/{vendor-C4pD7rZf.js.map → vendor-DeckzF1j.js.map} +1 -1
- package/dist/client/components/shared/dateRangeUtils.d.ts +7 -3
- package/dist/client/components.js +2 -2
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.js +1 -1
- package/dist/client/index.js +18 -18
- 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/utils.js +4 -4
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +2 -2
- package/dist/server/adapters/base-adapter.d.ts +3 -3
- package/dist/server/ai/query-schema.d.ts +3 -3
- package/dist/server/builders/date-time-builder.d.ts +1 -2
- package/dist/server/builders/date-time-helpers.d.ts +19 -6
- package/dist/server/builders/filter-operators.d.ts +10 -1
- package/dist/server/execution/query-normalizer.d.ts +9 -0
- package/dist/server/index.cjs +54 -47
- package/dist/server/index.js +2562 -2409
- package/dist/server/{openai-D346-vmt.cjs → openai-BIHkBS7X.cjs} +1 -1
- package/dist/server/{openai-SILGL2q_.js → openai-CPW5x6kl.js} +1 -1
- package/dist/server/{openai-D0vh48Oi.js → openai-DCC49vC6.js} +507 -436
- package/dist/server/openai-xQRpdAPa.cjs +19 -0
- package/dist/server/physical-plan/drizzle-sql-builder.d.ts +25 -0
- package/dist/server/physical-plan/semi-join.d.ts +21 -0
- package/dist/server/prompts/single-step-prompt.d.ts +1 -1
- package/package.json +3 -3
- package/dist/adapters/ActivityGridChart.config-BgAUfqKS.js +0 -2
- package/dist/adapters/ActivityGridChart.config-CGsjbfYL.cjs +0 -1
- package/dist/adapters/AreaChart.config-Bmj24k3G.cjs +0 -1
- package/dist/adapters/AreaChart.config-DqJvquc-.js +0 -2
- package/dist/adapters/BarChart.config-CzGxsUq-.js +0 -2
- package/dist/adapters/BarChart.config-D1uQGV6T.cjs +0 -1
- package/dist/adapters/BoxPlotChart.config-I0S4-aNF.js +0 -2
- package/dist/adapters/BoxPlotChart.config-wfS4FxGI.cjs +0 -1
- package/dist/adapters/BubbleChart.config-BDSknEkc.js +0 -2
- package/dist/adapters/BubbleChart.config-CByvW3Rq.cjs +0 -1
- package/dist/adapters/CandlestickChart.config-08gqS1xj.cjs +0 -1
- package/dist/adapters/CandlestickChart.config-Bkr9bdwM.js +0 -2
- package/dist/adapters/DataTable.config-BFP6xnMc.cjs +0 -1
- package/dist/adapters/DataTable.config-DHYD7PA8.js +0 -2
- package/dist/adapters/DotStripChart.config-DRQybZZu.cjs +0 -1
- package/dist/adapters/DotStripChart.config-Sp0fOxfM.js +0 -2
- package/dist/adapters/FunnelChart.config-ByARozX6.cjs +0 -1
- package/dist/adapters/FunnelChart.config-DhCqap3P.js +0 -2
- package/dist/adapters/GaugeChart.config-CfRicB1o.cjs +0 -1
- package/dist/adapters/GaugeChart.config-PTQ85WM5.js +0 -2
- package/dist/adapters/HeatMapChart.config-0tmGHwm2.cjs +0 -1
- package/dist/adapters/HeatMapChart.config-Devz5A5U.js +0 -2
- package/dist/adapters/KpiDelta.config-CGTdddOM.js +0 -2
- package/dist/adapters/KpiDelta.config-CjWmwXjk.cjs +0 -1
- package/dist/adapters/KpiNumber.config-Cd4jw22d.cjs +0 -1
- package/dist/adapters/KpiNumber.config-D3Et71Zn.js +0 -2
- package/dist/adapters/KpiText.config-B9VATPy2.js +0 -2
- package/dist/adapters/KpiText.config-B_dkrdHj.cjs +0 -1
- package/dist/adapters/LineChart.config-C3p-mc15.cjs +0 -1
- package/dist/adapters/LineChart.config-DXWLMWjn.js +0 -2
- package/dist/adapters/MarkdownChart.config-BQGmd6Iz.js +0 -2
- package/dist/adapters/MarkdownChart.config-CQFu4297.cjs +0 -1
- package/dist/adapters/MeasureProfileChart.config-CXLeprVS.js +0 -2
- package/dist/adapters/MeasureProfileChart.config-KpfD016N.cjs +0 -1
- package/dist/adapters/PieChart.config-j-syrhBx.js +0 -2
- package/dist/adapters/PieChart.config-zzBPh0tx.cjs +0 -1
- package/dist/adapters/ProportionBarChart.config-BD9bf-LZ.js +0 -2
- package/dist/adapters/ProportionBarChart.config-CBLcLV4Z.cjs +0 -1
- package/dist/adapters/RadarChart.config-CW9f_VxU.cjs +0 -1
- package/dist/adapters/RadarChart.config-yKvcZ49V.js +0 -2
- package/dist/adapters/RadialBarChart.config-DwQYejI6.cjs +0 -1
- package/dist/adapters/RadialBarChart.config-xK4AyoOF.js +0 -2
- package/dist/adapters/RecordsTable.config-CquV7Wi0.js +0 -2
- package/dist/adapters/RecordsTable.config-DzrQXBvh.cjs +0 -1
- package/dist/adapters/RetentionCombinedChart.config-BYAFkFb-.cjs +0 -1
- package/dist/adapters/RetentionCombinedChart.config-Ddmb-WwM.js +0 -2
- package/dist/adapters/RetentionHeatmap.config-CSHXD736.cjs +0 -1
- package/dist/adapters/RetentionHeatmap.config-DODcy3gK.js +0 -2
- package/dist/adapters/SankeyChart.config-B56o6GFu.js +0 -2
- package/dist/adapters/SankeyChart.config-DLnhr2k_.cjs +0 -1
- package/dist/adapters/ScatterChart.config-CrIFaC-s.js +0 -2
- package/dist/adapters/ScatterChart.config-Dfj1_af-.cjs +0 -1
- package/dist/adapters/SunburstChart.config-CuLsLj6v.cjs +0 -1
- package/dist/adapters/SunburstChart.config-CvuVUfkp.js +0 -2
- package/dist/adapters/TreeMapChart.config-CvbDr1Ic.js +0 -2
- package/dist/adapters/TreeMapChart.config-Dqjhe8Xk.cjs +0 -1
- package/dist/adapters/WaterfallChart.config-DXFeGg7P.cjs +0 -1
- package/dist/adapters/WaterfallChart.config-MLHPNE5q.js +0 -2
- package/dist/adapters/compiler-C5OSdfwn.cjs +0 -166
- package/dist/adapters/mcp-app-html-DRWnkcx4.cjs +0 -1
- package/dist/adapters/openai-CwKv0DD-.cjs +0 -19
- package/dist/adapters/utils-BFGzuSlF.cjs +0 -132
- package/dist/client/chunks/DashboardEditModal-USQFytJw.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-BSINKFr2.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-CSIsJ12e.js.map +0 -1
- package/dist/client/chunks/chart-data-table-BH1A-1RN.js.map +0 -1
- package/dist/client/chunks/charts-loader-BlxEsp39.js +0 -87
- package/dist/server/openai-C6tdx3yN.cjs +0 -19
|
@@ -73,6 +73,31 @@ export declare class DrizzleSqlBuilder {
|
|
|
73
73
|
* @param filterType - 'where' for dimension filters, 'having' for measure filters
|
|
74
74
|
*/
|
|
75
75
|
private processFilter;
|
|
76
|
+
/** Whether a cube's rows are directly addressable in this WHERE clause. */
|
|
77
|
+
private isCubeInScope;
|
|
78
|
+
/**
|
|
79
|
+
* An OR group needs semi-join rewriting when it references several cubes and
|
|
80
|
+
* some — but not all — of them are in scope. (All in scope: plain OR. None in
|
|
81
|
+
* scope: the group belongs entirely to another clause, e.g. inside a CTE.)
|
|
82
|
+
*/
|
|
83
|
+
private orNeedsSemiJoins;
|
|
84
|
+
/**
|
|
85
|
+
* Build a logical filter where in-scope leaves are plain conditions and
|
|
86
|
+
* out-of-scope leaves become `inScopeKey IN (SELECT key FROM leafCube WHERE
|
|
87
|
+
* security AND leaf)`. This keeps OR semantics exact across a CTE boundary.
|
|
88
|
+
*/
|
|
89
|
+
private buildFilterWithSemiJoins;
|
|
90
|
+
/** Rewrite one out-of-scope leaf as a semi-join onto an in-scope cube. */
|
|
91
|
+
private buildSemiJoinLeaf;
|
|
92
|
+
/** Every cube visible from here: the in-scope map plus the rest of the plan. */
|
|
93
|
+
private knownCubes;
|
|
94
|
+
/**
|
|
95
|
+
* Find how an out-of-scope cube links to the rows in scope, as a list of
|
|
96
|
+
* semi-join hops ordered outward from an in-scope cube (the last hop's cube is
|
|
97
|
+
* the leaf's cube). A pre-aggregated cube links through its CTE join keys;
|
|
98
|
+
* anything else through the shortest equi-join path (no many-to-many hops).
|
|
99
|
+
*/
|
|
100
|
+
private findSemiJoinPath;
|
|
76
101
|
/** Build a WHERE condition for a dimension filter, honouring CTE skips and the filter cache. */
|
|
77
102
|
private processWhereDimensionFilter;
|
|
78
103
|
/**
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SQL, AnyColumn } from 'drizzle-orm';
|
|
2
|
+
import { BaseQueryDefinition, QueryContext } from '../types/index.js';
|
|
3
|
+
/** One key pair linking the outer query's column to the subquery cube's column. */
|
|
4
|
+
export interface SemiJoinKeyPair {
|
|
5
|
+
/** Column already in scope in the outer query */
|
|
6
|
+
outer: AnyColumn;
|
|
7
|
+
/** Column on the subquery cube's table */
|
|
8
|
+
inner: AnyColumn;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Apply a cube's BaseQueryDefinition.joins (intra-cube table-level joins)
|
|
12
|
+
* to a Drizzle query/subquery built from cubeBase.from, so joined-table columns
|
|
13
|
+
* are in scope for SELECTs and WHEREs.
|
|
14
|
+
*/
|
|
15
|
+
export declare function applyBaseJoins(query: any, cubeBase: Pick<BaseQueryDefinition, 'joins'>): any;
|
|
16
|
+
/**
|
|
17
|
+
* Build `outer IN (SELECT inner FROM cube WHERE conditions)` for a single key,
|
|
18
|
+
* or `EXISTS (SELECT 1 FROM cube WHERE inner = outer AND ... AND conditions)`
|
|
19
|
+
* for composite keys (portable across all engines).
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildSemiJoinCondition(context: QueryContext, cubeBase: BaseQueryDefinition, keyPairs: SemiJoinKeyPair[], conditions: SQL[]): SQL;
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* - {CUBE_SCHEMA} - JSON-formatted cube schema
|
|
21
21
|
* - {USER_PROMPT} - User's natural language query
|
|
22
22
|
*/
|
|
23
|
-
export declare const SYSTEM_PROMPT_TEMPLATE = "You are a helpful AI assistant for analyzing business data using Cube.js/Drizzle-Cube semantic layer.\n\nGiven the following cube schema and user query, generate a valid JSON response containing a query AND chart configuration.\n\nCUBE SCHEMA:\n{CUBE_SCHEMA}\n\nRESPONSE FORMAT:\nReturn a JSON object with these fields:\n{\n \"query\": { /* Cube.js query object OR funnel query object */ },\n \"chartType\": \"line\"|\"bar\"|\"area\"|\"pie\"|\"scatter\"|\"bubble\"|\"table\"|\"funnel\",\n \"chartConfig\": {\n \"xAxis\": string[], // Dimensions/timeDimensions for X axis\n \"yAxis\": string[], // Measures for Y axis\n \"series\": string[], // Optional: dimension for grouping into multiple series\n \"sizeField\": string, // Bubble chart only: measure for bubble size\n \"colorField\": string // Bubble chart only: dimension/measure for color\n }\n}\n\nQUERY STRUCTURE:\n{\n dimensions?: string[], // dimension names from CUBE SCHEMA\n measures?: string[], // measure names from CUBE SCHEMA\n timeDimensions?: [{\n dimension: string, // time dimension from CUBE SCHEMA\n granularity?: 'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year',\n dateRange?: [string, string] | string // 'last year' 'this year' ['2024-01-01','2024-12-31'] or lowercase relative strings below\n }],\n filters?: [{\n member: string, // dimension/measure from CUBE SCHEMA\n operator: 'equals'|'notEquals'|'contains'|'notContains'|'startsWith'|'endsWith'|'gt'|'gte'|'lt'|'lte'|'
|
|
23
|
+
export declare const SYSTEM_PROMPT_TEMPLATE = "You are a helpful AI assistant for analyzing business data using Cube.js/Drizzle-Cube semantic layer.\n\nGiven the following cube schema and user query, generate a valid JSON response containing a query AND chart configuration.\n\nCUBE SCHEMA:\n{CUBE_SCHEMA}\n\nRESPONSE FORMAT:\nReturn a JSON object with these fields:\n{\n \"query\": { /* Cube.js query object OR funnel query object */ },\n \"chartType\": \"line\"|\"bar\"|\"area\"|\"pie\"|\"scatter\"|\"bubble\"|\"table\"|\"funnel\",\n \"chartConfig\": {\n \"xAxis\": string[], // Dimensions/timeDimensions for X axis\n \"yAxis\": string[], // Measures for Y axis\n \"series\": string[], // Optional: dimension for grouping into multiple series\n \"sizeField\": string, // Bubble chart only: measure for bubble size\n \"colorField\": string // Bubble chart only: dimension/measure for color\n }\n}\n\nQUERY STRUCTURE:\n{\n dimensions?: string[], // dimension names from CUBE SCHEMA\n measures?: string[], // measure names from CUBE SCHEMA\n timeDimensions?: [{\n dimension: string, // time dimension from CUBE SCHEMA\n granularity?: 'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year',\n dateRange?: [string, string] | string // 'last year' 'this year' ['2024-01-01','2024-12-31'] or lowercase relative strings below\n }],\n filters?: [{\n member: string, // dimension/measure from CUBE SCHEMA\n operator: 'equals'|'notEquals'|'contains'|'notContains'|'startsWith'|'notStartsWith'|'endsWith'|'notEndsWith'|'gt'|'gte'|'lt'|'lte'|'in'|'notIn'|'inDateRange'|'beforeDate'|'afterDate'|'set'|'notSet'|'isEmpty'|'isNotEmpty',\n values?: any[] // required unless set/notSet/isEmpty/isNotEmpty; inDateRange: ['last 7 days'] or ['2024-01-01','2024-03-31']\n }],\n order?: {[member: string]: 'asc'|'desc'}, // member from dimensions/measures/timeDimensions\n limit?: number,\n offset?: number\n}\n\nValid dateRange strings (MUST be lower case): 'today'|'yesterday'|'tomorrow'|'last 7 days'|'last 30 days'|'last week'|'last month'|'last quarter'|'last year'|'this week'|'this month'|'this quarter'|'this year'|'next week'|'next month'|'next quarter'|'next year'\nCRITICAL: All dateRange strings must be lowercase. Never capitalize (e.g., use 'last 7 days' NOT 'Last 7 days').\n\nFUNNEL QUERY STRUCTURE (use instead of regular query for funnel analysis):\n{\n \"funnel\": {\n \"bindingKey\": string, // Dimension that links steps (e.g., \"Events.userId\")\n \"timeDimension\": string, // Time dimension for ordering (e.g., \"Events.timestamp\")\n \"steps\": [\n {\n \"name\": string, // Step display name (e.g., \"Sign Up\")\n \"filter\": { // Filter identifying this step event\n \"member\": string, // Dimension to filter on\n \"operator\": \"equals\"|\"notEquals\"|\"contains\",\n \"values\": any[]\n },\n \"timeToConvert\": string // Optional: max time from previous step (ISO 8601: \"P7D\", \"PT24H\")\n }\n ],\n \"includeTimeMetrics\": boolean, // Optional: include avg/median/p90 time-to-convert\n \"globalTimeWindow\": string // Optional: all steps must complete within this time (ISO 8601)\n }\n}\n\nFUNNEL DETECTION:\nIf the user query mentions ANY of these concepts, use FUNNEL query format:\n- \"funnel\", \"conversion\", \"journey\", \"flow\"\n- \"step by step\", \"multi-step\", \"progression\"\n- \"drop off\", \"dropoff\", \"abandon\", \"churn\"\n- \"sign up to purchase\", \"registration to conversion\"\n- \"how many users go from X to Y\"\n\nFUNNEL QUERY RULES:\n1. CRITICAL: Funnel queries can ONLY be used for cubes that have \"eventStream\" metadata in the schema\n2. If no cube has eventStream metadata, DO NOT generate funnel queries - use regular queries instead\n3. Use \"funnel\" chart type when generating funnel queries\n4. bindingKey should match the eventStream.bindingKey from the cube metadata\n5. timeDimension should match the eventStream.timeDimension from the cube metadata\n6. Each step needs a name and filter that identifies that event\n7. Steps are ordered - step 2 must occur after step 1\n8. timeToConvert is optional but useful (e.g., \"P7D\" = 7 days, \"PT24H\" = 24 hours)\n9. ALWAYS include a time filter on STEP 0 using inDateRange operator unless the user specifies a different time period.\n Default to 'last 6 months' for funnel queries to ensure reasonable performance and relevant data.\n Add this as an additional filter in the first step's filter array.\n Example: step 0 filter should include: { \"member\": \"PREvents.timestamp\", \"operator\": \"inDateRange\", \"values\": [\"last 6 months\"] }\n\nCHART TYPE SELECTION:\n- \"line\": For trends over time ONLY (requires timeDimensions, NOT for correlations)\n- \"bar\": For comparing categories or values across groups (NOT for correlations)\n- \"area\": For cumulative trends over time (requires timeDimensions)\n- \"pie\": For showing proportions of a whole (single measure, one dimension, few categories)\n- \"scatter\": ALWAYS use for correlation, relationship, or comparison between TWO numeric values\n- \"bubble\": ALWAYS use for correlation between THREE measures (x, y, size) with category labels\n- \"table\": For detailed data inspection or when chart doesn't make sense\n- \"funnel\": ALWAYS use for sequential step/conversion analysis (requires funnel query format)\n\nCRITICAL CORRELATION DETECTION:\nIf the user query contains ANY of these words, YOU MUST use \"scatter\" or \"bubble\" chart:\n- \"correlation\", \"correlate\", \"correlated\"\n- \"relationship\", \"relate\", \"related\"\n- \"vs\", \"versus\", \"against\"\n- \"compare\", \"comparison\"\n- \"association\", \"associated\"\n- \"link\", \"linked\", \"connection\"\nWhen 2 measures: use \"scatter\"\nWhen 3+ measures: use \"bubble\" (xAxis=measure1, yAxis=measure2, sizeField=measure3)\nNEVER use \"line\" for correlation queries - line charts are ONLY for time-series data.\n\nCHART CONFIGURATION RULES:\n- xAxis: Put the grouping dimension or time dimension here\n- yAxis: Put the measure(s) to visualize here\n- series: Use when you want multiple lines/bars per category (e.g., breakdown by status)\n- For time-series analysis: xAxis = [time dimension name], yAxis = [measures]\n- For categorical analysis: xAxis = [category dimension], yAxis = [measures]\n- For scatter/bubble charts (correlation analysis):\n - Scatter: xAxis = [measure1], yAxis = [measure2], series = [optional grouping dimension]\n - Bubble: xAxis = [measure1], yAxis = [measure2], sizeField = measure3, series = [label dimension]\n\nDIMENSION SELECTION RULES:\n1. ALWAYS prefer .name fields over .id fields (e.g., use \"Employees.name\" NOT \"Employees.id\")\n2. NEVER use fields ending with \"Id\" as dimensions unless specifically requested\n3. When analyzing trends over time, ALWAYS include an appropriate timeDimension with granularity\n4. For \"by\" queries (e.g., \"sales by region\"), use the category as the xAxis dimension\n5. Choose descriptive string dimensions over numeric ID fields\n\nQUERY RULES:\n1. Only use measures, dimensions, and time dimensions that exist in the schema above\n2. Return ONLY valid JSON - no explanations or markdown\n3. Use proper Cube.js query format with measures, dimensions, timeDimensions, filters, etc.\n4. For time-based queries, always specify appropriate granularity (day, week, month, year)\n5. When filtering, use the correct member names and operators (equals, contains, gt, lt, etc.)\n6. At least one measure or dimension is required\n\nUSER QUERY:\n{USER_PROMPT}\n\nReturn the JSON response:";
|
|
24
24
|
/**
|
|
25
25
|
* Build the single-step system prompt with schema and user prompt
|
|
26
26
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drizzle-cube",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.8",
|
|
4
4
|
"description": "Drizzle ORM-first semantic layer with Cube.js compatibility. Type-safe analytics and dashboards with SQL injection protection.",
|
|
5
5
|
"main": "./dist/server/index.js",
|
|
6
6
|
"types": "./dist/server/index.d.ts",
|
|
@@ -371,7 +371,7 @@
|
|
|
371
371
|
"@leonardovida-md/drizzle-neo-duckdb": "^1.5.2"
|
|
372
372
|
},
|
|
373
373
|
"devDependencies": {
|
|
374
|
-
"@anthropic-ai/sdk": "^0.
|
|
374
|
+
"@anthropic-ai/sdk": "^0.129.0",
|
|
375
375
|
"@arethetypeswrong/cli": "^0.18.3",
|
|
376
376
|
"@crowdin/cli": "^5.0.0",
|
|
377
377
|
"@eslint/eslintrc": "^3.3.1",
|
|
@@ -423,7 +423,7 @@
|
|
|
423
423
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
424
424
|
"exceljs": "^4.4.0",
|
|
425
425
|
"express": "^5.1.0",
|
|
426
|
-
"fallow": "3.
|
|
426
|
+
"fallow": "3.30.0",
|
|
427
427
|
"fastify": "^5.6.2",
|
|
428
428
|
"globals": "^17.0.0",
|
|
429
429
|
"hono": "^4.0.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.activityGridChartConfig=e.v;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.areaChartConfig=e.D;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.barChartConfig=e.k;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.boxPlotChartConfig=e.s;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.bubbleChartConfig=e.w;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.candlestickChartConfig=e.i;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.dataTableConfig=e.b;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.dotStripChartConfig=e.o;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.funnelChartConfig=e.p;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.gaugeChartConfig=e.t;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.heatmapChartConfig=e.u;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.kpiDeltaConfig=e.g;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.kpiNumberConfig=e._;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.kpiTextConfig=e.h;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.lineChartConfig=e.O;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.markdownConfig=e.m;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.measureProfileChartConfig=e.r;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.pieChartConfig=e.E;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.proportionBarChartConfig=e.n;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.radarChartConfig=e.C;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.radialBarChartConfig=e.S;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.recordsTableConfig=e.y;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.retentionCombinedConfig=e.c;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.retentionHeatmapConfig=e.l;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.sankeyChartConfig=e.f;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.scatterChartConfig=e.T;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.sunburstChartConfig=e.d;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.treemapChartConfig=e.x;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./handler-Dp8fpSpk.cjs");exports.waterfallChartConfig=e.a;
|