drizzle-cube 0.5.6 → 0.5.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.
Files changed (405) hide show
  1. package/dist/{server/dist-DxegvyZF.cjs → adapters/dist-BOdf-GQO.cjs} +1 -1
  2. package/dist/adapters/express/index.cjs +1 -1
  3. package/dist/adapters/express/index.js +4 -4
  4. package/dist/adapters/fastify/index.cjs +2 -2
  5. package/dist/adapters/fastify/index.js +4 -4
  6. package/dist/{server/google-BXwMolCu.js → adapters/google-CFYljAOF.js} +1 -1
  7. package/dist/adapters/{google-Dgo9-Kb5.cjs → google-DUlXeeDA.cjs} +1 -1
  8. package/dist/adapters/{handler-Odsi9_Rd.js → handler-Cx8QYLk6.js} +20 -6
  9. package/dist/adapters/{handler-C0nUppAK.cjs → handler-CzbCuS6_.cjs} +4 -4
  10. package/dist/adapters/hono/index.cjs +1 -1
  11. package/dist/adapters/hono/index.js +7 -7
  12. package/dist/adapters/{locale-Dy3LcTwN.js → locale-BPB7flIG.js} +16 -1
  13. package/dist/adapters/{locale-Dv6bl_eU.cjs → locale-tIMrNcCr.cjs} +6 -6
  14. package/dist/adapters/mcp-tools.cjs +1 -1
  15. package/dist/adapters/mcp-tools.js +2 -2
  16. package/dist/adapters/mcp-transport-C2QzXm6h.cjs +40 -0
  17. package/dist/adapters/mcp-transport-D0B3S1tB.js +579 -0
  18. package/dist/adapters/nextjs/index.cjs +1 -1
  19. package/dist/adapters/nextjs/index.js +4 -4
  20. package/dist/{server/openai-zpXlGbbF.js → adapters/openai-B5jEiqiB.js} +2139 -948
  21. package/dist/{server/openai-CLWSwD-D.js → adapters/openai-BZdAA7Ji.js} +1 -1
  22. package/dist/adapters/openai-D0musiYP.cjs +17 -0
  23. package/dist/adapters/{openai-BjLV_Wjx.cjs → openai-D_U4V0kT.cjs} +1 -1
  24. package/dist/adapters/{utils-Bd5mzZfk.js → utils-D9JPLmfl.js} +24 -10
  25. package/dist/adapters/{utils-DklqMBHn.cjs → utils-KV37IBIv.cjs} +4 -4
  26. package/dist/adapters/utils.cjs +1 -1
  27. package/dist/adapters/utils.js +1 -1
  28. package/dist/client/charts/ChartLoader.d.ts +1 -1
  29. package/dist/client/charts.js +13 -13
  30. package/dist/client/chunks/DashboardEditModal-CjCIAT-J.js +9682 -0
  31. package/dist/client/chunks/DashboardEditModal-CjCIAT-J.js.map +1 -0
  32. package/dist/client/chunks/{RetentionCombinedChart-CivIny9P.js → RetentionCombinedChart-BPkfcTa8.js} +4 -4
  33. package/dist/client/chunks/{RetentionCombinedChart-CivIny9P.js.map → RetentionCombinedChart-BPkfcTa8.js.map} +1 -1
  34. package/dist/client/chunks/{RetentionHeatmap-BHCgwZmB.js → RetentionHeatmap-DGzLzr7h.js} +3 -3
  35. package/dist/client/chunks/{RetentionHeatmap-BHCgwZmB.js.map → RetentionHeatmap-DGzLzr7h.js.map} +1 -1
  36. package/dist/client/chunks/{af-ZA-BdL6DOWy.js → af-ZA-BTaChuqI.js} +1 -1
  37. package/dist/client/chunks/{af-ZA-BdL6DOWy.js.map → af-ZA-BTaChuqI.js.map} +1 -1
  38. package/dist/client/chunks/{analysis-builder-MoGvbMRe.js → analysis-builder-MuMIzoRq.js} +244 -244
  39. package/dist/client/chunks/{analysis-builder-MoGvbMRe.js.map → analysis-builder-MuMIzoRq.js.map} +1 -1
  40. package/dist/client/chunks/{analysis-builder-shared-DmyRh2O3.js → analysis-builder-shared-CYVwSPqt.js} +289 -289
  41. package/dist/client/chunks/{analysis-builder-shared-DmyRh2O3.js.map → analysis-builder-shared-CYVwSPqt.js.map} +1 -1
  42. package/dist/client/chunks/{chart-activity-grid-Bdb8U_NC.js → chart-activity-grid-DmruKPab.js} +13 -8
  43. package/dist/client/chunks/{chart-activity-grid-Bdb8U_NC.js.map → chart-activity-grid-DmruKPab.js.map} +1 -1
  44. package/dist/client/chunks/{chart-area-BZEnT-tf.js → chart-area-DHCPM4Em.js} +3 -3
  45. package/dist/client/chunks/{chart-area-BZEnT-tf.js.map → chart-area-DHCPM4Em.js.map} +1 -1
  46. package/dist/client/chunks/{chart-bar-CTmdv_v0.js → chart-bar-KddciGDv.js} +4 -4
  47. package/dist/client/chunks/{chart-bar-CTmdv_v0.js.map → chart-bar-KddciGDv.js.map} +1 -1
  48. package/dist/client/chunks/{chart-box-plot-CYObdFtp.js → chart-box-plot-DYKfyOI8.js} +3 -3
  49. package/dist/client/chunks/{chart-box-plot-CYObdFtp.js.map → chart-box-plot-DYKfyOI8.js.map} +1 -1
  50. package/dist/client/chunks/{chart-bubble-CjFprySz.js → chart-bubble-CfqiB538.js} +3 -3
  51. package/dist/client/chunks/{chart-bubble-CjFprySz.js.map → chart-bubble-CfqiB538.js.map} +1 -1
  52. package/dist/client/chunks/{chart-candlestick-D2HoM3B5.js → chart-candlestick-Dwc92Mrj.js} +3 -3
  53. package/dist/client/chunks/{chart-candlestick-D2HoM3B5.js.map → chart-candlestick-Dwc92Mrj.js.map} +1 -1
  54. package/dist/client/chunks/{chart-config-activity-grid-Bom99j9m.js → chart-config-activity-grid-D_UX4NHC.js} +2 -2
  55. package/dist/client/chunks/{chart-config-activity-grid-Bom99j9m.js.map → chart-config-activity-grid-D_UX4NHC.js.map} +1 -1
  56. package/dist/client/chunks/{chart-config-area-DtYTKZxS.js → chart-config-area-Bq_UsW3x.js} +2 -2
  57. package/dist/client/chunks/{chart-config-area-DtYTKZxS.js.map → chart-config-area-Bq_UsW3x.js.map} +1 -1
  58. package/dist/client/chunks/{chart-config-bar-7v5JVY2y.js → chart-config-bar-_JEGZnAu.js} +2 -2
  59. package/dist/client/chunks/{chart-config-bar-7v5JVY2y.js.map → chart-config-bar-_JEGZnAu.js.map} +1 -1
  60. package/dist/client/chunks/{chart-config-box-plot-BHGv-wqu.js → chart-config-box-plot-DJ-dWWXA.js} +2 -2
  61. package/dist/client/chunks/{chart-config-box-plot-BHGv-wqu.js.map → chart-config-box-plot-DJ-dWWXA.js.map} +1 -1
  62. package/dist/client/chunks/{chart-config-bubble-BkHm-mfu.js → chart-config-bubble-gIoqVyjZ.js} +2 -2
  63. package/dist/client/chunks/{chart-config-bubble-BkHm-mfu.js.map → chart-config-bubble-gIoqVyjZ.js.map} +1 -1
  64. package/dist/client/chunks/{chart-config-candlestick-D1aaHvTe.js → chart-config-candlestick-N6DchAA3.js} +2 -2
  65. package/dist/client/chunks/{chart-config-candlestick-D1aaHvTe.js.map → chart-config-candlestick-N6DchAA3.js.map} +1 -1
  66. package/dist/client/chunks/{chart-config-data-table-B_Hw8w2J.js → chart-config-data-table-d7VBY-y_.js} +2 -2
  67. package/dist/client/chunks/{chart-config-data-table-B_Hw8w2J.js.map → chart-config-data-table-d7VBY-y_.js.map} +1 -1
  68. package/dist/client/chunks/{chart-config-funnel-DL8PSGuL.js → chart-config-funnel-DEYMcxsD.js} +2 -2
  69. package/dist/client/chunks/{chart-config-funnel-DL8PSGuL.js.map → chart-config-funnel-DEYMcxsD.js.map} +1 -1
  70. package/dist/client/chunks/{chart-config-gauge-BVLxuA3f.js → chart-config-gauge-DSwC04l0.js} +2 -2
  71. package/dist/client/chunks/{chart-config-gauge-BVLxuA3f.js.map → chart-config-gauge-DSwC04l0.js.map} +1 -1
  72. package/dist/client/chunks/{chart-config-heat-map-CjudGdui.js → chart-config-heat-map-CfRnRNcw.js} +2 -2
  73. package/dist/client/chunks/{chart-config-heat-map-CjudGdui.js.map → chart-config-heat-map-CfRnRNcw.js.map} +1 -1
  74. package/dist/client/chunks/{chart-config-kpi-delta-Bf47hGqD.js → chart-config-kpi-delta-D6BIkHL3.js} +2 -2
  75. package/dist/client/chunks/{chart-config-kpi-delta-Bf47hGqD.js.map → chart-config-kpi-delta-D6BIkHL3.js.map} +1 -1
  76. package/dist/client/chunks/{chart-config-kpi-number-QTQRNgOi.js → chart-config-kpi-number-Bx-V9a62.js} +2 -2
  77. package/dist/client/chunks/{chart-config-kpi-number-QTQRNgOi.js.map → chart-config-kpi-number-Bx-V9a62.js.map} +1 -1
  78. package/dist/client/chunks/{chart-config-kpi-text-BRze2eyh.js → chart-config-kpi-text-CcqC1u-8.js} +2 -2
  79. package/dist/client/chunks/{chart-config-kpi-text-BRze2eyh.js.map → chart-config-kpi-text-CcqC1u-8.js.map} +1 -1
  80. package/dist/client/chunks/{chart-config-line-BFeCqmKH.js → chart-config-line-Db3jDsWc.js} +2 -2
  81. package/dist/client/chunks/{chart-config-line-BFeCqmKH.js.map → chart-config-line-Db3jDsWc.js.map} +1 -1
  82. package/dist/client/chunks/{chart-config-markdown-EWYckwXv.js → chart-config-markdown-BtRIe8JN.js} +2 -2
  83. package/dist/client/chunks/{chart-config-markdown-EWYckwXv.js.map → chart-config-markdown-BtRIe8JN.js.map} +1 -1
  84. package/dist/client/chunks/{chart-config-measure-profile-B9nIhqKR.js → chart-config-measure-profile-DxRGa-zf.js} +2 -2
  85. package/dist/client/chunks/{chart-config-measure-profile-B9nIhqKR.js.map → chart-config-measure-profile-DxRGa-zf.js.map} +1 -1
  86. package/dist/client/chunks/{chart-config-pie-6LHtEyMM.js → chart-config-pie-DD4SmRTF.js} +2 -2
  87. package/dist/client/chunks/{chart-config-pie-6LHtEyMM.js.map → chart-config-pie-DD4SmRTF.js.map} +1 -1
  88. package/dist/client/chunks/{chart-config-radar-BuLS6Inn.js → chart-config-radar-CC2XAaGr.js} +2 -2
  89. package/dist/client/chunks/{chart-config-radar-BuLS6Inn.js.map → chart-config-radar-CC2XAaGr.js.map} +1 -1
  90. package/dist/client/chunks/{chart-config-radial-bar-BP0eMohx.js → chart-config-radial-bar-DmxKx1R0.js} +2 -2
  91. package/dist/client/chunks/{chart-config-radial-bar-BP0eMohx.js.map → chart-config-radial-bar-DmxKx1R0.js.map} +1 -1
  92. package/dist/client/chunks/{chart-config-sankey-CT8oGIGP.js → chart-config-sankey-BTnWA7EW.js} +2 -2
  93. package/dist/client/chunks/{chart-config-sankey-CT8oGIGP.js.map → chart-config-sankey-BTnWA7EW.js.map} +1 -1
  94. package/dist/client/chunks/{chart-config-scatter-DOSpN07Z.js → chart-config-scatter-DSYTjwRb.js} +2 -2
  95. package/dist/client/chunks/{chart-config-scatter-DOSpN07Z.js.map → chart-config-scatter-DSYTjwRb.js.map} +1 -1
  96. package/dist/client/chunks/{chart-config-sunburst-BSUX_YoB.js → chart-config-sunburst-Bwjtdf7X.js} +2 -2
  97. package/dist/client/chunks/{chart-config-sunburst-BSUX_YoB.js.map → chart-config-sunburst-Bwjtdf7X.js.map} +1 -1
  98. package/dist/client/chunks/{chart-config-tree-map-D8GuAgVB.js → chart-config-tree-map-BI-oQStO.js} +2 -2
  99. package/dist/client/chunks/{chart-config-tree-map-D8GuAgVB.js.map → chart-config-tree-map-BI-oQStO.js.map} +1 -1
  100. package/dist/client/chunks/{chart-config-waterfall-BDi7BoJP.js → chart-config-waterfall-DSnyixbI.js} +2 -2
  101. package/dist/client/chunks/{chart-config-waterfall-BDi7BoJP.js.map → chart-config-waterfall-DSnyixbI.js.map} +1 -1
  102. package/dist/client/chunks/{chart-data-table-DT4uBZaq.js → chart-data-table-BO4sXsim.js} +842 -834
  103. package/dist/client/chunks/chart-data-table-BO4sXsim.js.map +1 -0
  104. package/dist/client/chunks/{chart-funnel-B9crR3b3.js → chart-funnel-DnWRsmnS.js} +3 -3
  105. package/dist/client/chunks/{chart-funnel-B9crR3b3.js.map → chart-funnel-DnWRsmnS.js.map} +1 -1
  106. package/dist/client/chunks/{chart-gauge-DAMFsicz.js → chart-gauge-CgMeqeGb.js} +3 -3
  107. package/dist/client/chunks/{chart-gauge-DAMFsicz.js.map → chart-gauge-CgMeqeGb.js.map} +1 -1
  108. package/dist/client/chunks/{chart-heat-map-BxgM_X1G.js → chart-heat-map-DcGm9SWK.js} +3 -3
  109. package/dist/client/chunks/{chart-heat-map-BxgM_X1G.js.map → chart-heat-map-DcGm9SWK.js.map} +1 -1
  110. package/dist/client/chunks/{chart-kpi-delta-DJKL02Ut.js → chart-kpi-delta-C2wKPqCb.js} +6 -6
  111. package/dist/client/chunks/{chart-kpi-delta-DJKL02Ut.js.map → chart-kpi-delta-C2wKPqCb.js.map} +1 -1
  112. package/dist/client/chunks/{chart-kpi-number-CuNEYbRx.js → chart-kpi-number-gWYF44ol.js} +8 -8
  113. package/dist/client/chunks/{chart-kpi-number-CuNEYbRx.js.map → chart-kpi-number-gWYF44ol.js.map} +1 -1
  114. package/dist/client/chunks/{chart-kpi-text-u8FJaZDQ.js → chart-kpi-text-DIYtJtk4.js} +4 -4
  115. package/dist/client/chunks/{chart-kpi-text-u8FJaZDQ.js.map → chart-kpi-text-DIYtJtk4.js.map} +1 -1
  116. package/dist/client/chunks/{chart-line-BZhzOjRl.js → chart-line-9BEGN5Ti.js} +4 -4
  117. package/dist/client/chunks/{chart-line-BZhzOjRl.js.map → chart-line-9BEGN5Ti.js.map} +1 -1
  118. package/dist/client/chunks/chart-markdown-dgUetjyM.js +3654 -0
  119. package/dist/client/chunks/chart-markdown-dgUetjyM.js.map +1 -0
  120. package/dist/client/chunks/{chart-measure-profile-BnpIOS4Q.js → chart-measure-profile-ClfpLs4q.js} +4 -4
  121. package/dist/client/chunks/{chart-measure-profile-BnpIOS4Q.js.map → chart-measure-profile-ClfpLs4q.js.map} +1 -1
  122. package/dist/client/chunks/{chart-pie-CsdzxmSK.js → chart-pie-BjAIhyOi.js} +4 -4
  123. package/dist/client/chunks/{chart-pie-CsdzxmSK.js.map → chart-pie-BjAIhyOi.js.map} +1 -1
  124. package/dist/client/chunks/{chart-radar-C_9RwMKw.js → chart-radar-Dgkcl2bN.js} +4 -4
  125. package/dist/client/chunks/{chart-radar-C_9RwMKw.js.map → chart-radar-Dgkcl2bN.js.map} +1 -1
  126. package/dist/client/chunks/{chart-radial-bar-CewRelyQ.js → chart-radial-bar-DdWJjAhK.js} +4 -4
  127. package/dist/client/chunks/{chart-radial-bar-CewRelyQ.js.map → chart-radial-bar-DdWJjAhK.js.map} +1 -1
  128. package/dist/client/chunks/{chart-sankey-ItraHWH1.js → chart-sankey-M3XpO_ah.js} +3 -3
  129. package/dist/client/chunks/{chart-sankey-ItraHWH1.js.map → chart-sankey-M3XpO_ah.js.map} +1 -1
  130. package/dist/client/chunks/{chart-scatter-k2IJbO2Y.js → chart-scatter-DaHYP_OL.js} +4 -4
  131. package/dist/client/chunks/{chart-scatter-k2IJbO2Y.js.map → chart-scatter-DaHYP_OL.js.map} +1 -1
  132. package/dist/client/chunks/{chart-sunburst-NsFRuqi9.js → chart-sunburst-A_u6lqlS.js} +4 -4
  133. package/dist/client/chunks/{chart-sunburst-NsFRuqi9.js.map → chart-sunburst-A_u6lqlS.js.map} +1 -1
  134. package/dist/client/chunks/{chart-tree-map-Cj_ewpwJ.js → chart-tree-map-uiwUU4nb.js} +4 -4
  135. package/dist/client/chunks/{chart-tree-map-Cj_ewpwJ.js.map → chart-tree-map-uiwUU4nb.js.map} +1 -1
  136. package/dist/client/chunks/{chart-waterfall-C-MTFcOz.js → chart-waterfall-BuhMoagf.js} +4 -4
  137. package/dist/client/chunks/{chart-waterfall-C-MTFcOz.js.map → chart-waterfall-BuhMoagf.js.map} +1 -1
  138. package/dist/client/chunks/{charts-core-vZA3zPKb.js → charts-core-jRtb0S2M.js} +2 -2
  139. package/dist/client/chunks/{charts-core-vZA3zPKb.js.map → charts-core-jRtb0S2M.js.map} +1 -1
  140. package/dist/client/chunks/{core-Su6tIYhp.js → core-D7vPfUIe.js} +84 -84
  141. package/dist/client/chunks/{core-Su6tIYhp.js.map → core-D7vPfUIe.js.map} +1 -1
  142. package/dist/client/chunks/{dist-BTq3NoG3.js → dist-zPWyTBdU.js} +1 -1
  143. package/dist/client/chunks/{dist-BTq3NoG3.js.map → dist-zPWyTBdU.js.map} +1 -1
  144. package/dist/client/chunks/{en-US-D-1JPTPv.js → en-US-BE6VoG0o.js} +1 -1
  145. package/dist/client/chunks/{en-US-D-1JPTPv.js.map → en-US-BE6VoG0o.js.map} +1 -1
  146. package/dist/client/chunks/{exceljs.min-Dc1cBQ5l.js → exceljs.min-CIqBqwTW.js} +2 -2
  147. package/dist/client/chunks/{exceljs.min-Dc1cBQ5l.js.map → exceljs.min-CIqBqwTW.js.map} +1 -1
  148. package/dist/client/chunks/{javascript-YXkoOgWa.js → javascript-DFnKaHmQ.js} +3 -3
  149. package/dist/client/chunks/{javascript-YXkoOgWa.js.map → javascript-DFnKaHmQ.js.map} +1 -1
  150. package/dist/client/chunks/{json-O7MKB_4V.js → json-Cu6rbgWf.js} +1 -1
  151. package/dist/client/chunks/{json-O7MKB_4V.js.map → json-Cu6rbgWf.js.map} +1 -1
  152. package/dist/client/chunks/{nl-NL-BErZMygi.js → nl-NL-CpVs7ox3.js} +7 -2
  153. package/dist/client/chunks/{nl-NL-BErZMygi.js.map → nl-NL-CpVs7ox3.js.map} +1 -1
  154. package/dist/client/chunks/{providers-DX3Vw5kc.js → providers-DwQCKdGW.js} +1 -1
  155. package/dist/client/chunks/{providers-DX3Vw5kc.js.map → providers-DwQCKdGW.js.map} +1 -1
  156. package/dist/client/chunks/{retention-YhT1Oohi.js → retention-ChW9jYdy.js} +1 -1
  157. package/dist/client/chunks/{retention-YhT1Oohi.js.map → retention-ChW9jYdy.js.map} +1 -1
  158. package/dist/client/chunks/{schema-visualization-BY9L2nBQ.js → schema-visualization-DE09kQE3.js} +5 -5
  159. package/dist/client/chunks/{schema-visualization-BY9L2nBQ.js.map → schema-visualization-DE09kQE3.js.map} +1 -1
  160. package/dist/client/chunks/{sql-r2a-9CCK.js → sql-CmVzGP4w.js} +1 -1
  161. package/dist/client/chunks/{sql-r2a-9CCK.js.map → sql-CmVzGP4w.js.map} +1 -1
  162. package/dist/client/chunks/{useDebounce-DGfYXtkm.js → useDirtyStateTracking-CoeQbprt.js} +99 -37
  163. package/dist/client/chunks/useDirtyStateTracking-CoeQbprt.js.map +1 -0
  164. package/dist/client/chunks/{useExplainAI-CD0KuKwY.js → useExplainAI-DlnXWdmz.js} +19 -19
  165. package/dist/client/chunks/{useExplainAI-CD0KuKwY.js.map → useExplainAI-DlnXWdmz.js.map} +1 -1
  166. package/dist/client/chunks/{useNotebookLayout-DKkMenhj.js → useNotebookLayout-Ck3Z3uzg.js} +2 -2
  167. package/dist/client/chunks/{useNotebookLayout-DKkMenhj.js.map → useNotebookLayout-Ck3Z3uzg.js.map} +1 -1
  168. package/dist/client/chunks/{utils-D2SCtAkZ.js → utils-CTKNaXS8.js} +40 -13
  169. package/dist/client/chunks/utils-CTKNaXS8.js.map +1 -0
  170. package/dist/client/chunks/{vendor-CfR5hJGc.js → vendor-CPIYyeuD.js} +102 -97
  171. package/dist/client/chunks/vendor-CPIYyeuD.js.map +1 -0
  172. package/dist/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +1 -1
  173. package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +1 -1
  174. package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +1 -1
  175. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +1 -1
  176. package/dist/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +1 -1
  177. package/dist/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +1 -1
  178. package/dist/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +1 -1
  179. package/dist/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +1 -1
  180. package/dist/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +2 -1
  181. package/dist/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +1 -1
  182. package/dist/client/components/AnalysisBuilder/FieldSearchItem.d.ts +1 -1
  183. package/dist/client/components/AnalysisBuilder/FieldSearchModal.d.ts +1 -1
  184. package/dist/client/components/AnalysisBuilder/FilterConfigModal.d.ts +2 -1
  185. package/dist/client/components/AnalysisBuilder/LimitSection.d.ts +1 -1
  186. package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +1 -1
  187. package/dist/client/components/AnalyticsDashboard.d.ts +1 -1
  188. package/dist/client/components/AnalyticsPage.d.ts +1 -1
  189. package/dist/client/components/ChartErrorBoundary.d.ts +1 -1
  190. package/dist/client/components/ChartTypeSelector.d.ts +1 -1
  191. package/dist/client/components/ColorPaletteSelector.d.ts +1 -1
  192. package/dist/client/components/DashboardEditModal.d.ts +2 -1
  193. package/dist/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +1 -1
  194. package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +1 -1
  195. package/dist/client/components/DashboardGrid.d.ts +3 -1
  196. package/dist/client/components/DashboardThumbnailPlaceholder.d.ts +1 -1
  197. package/dist/client/components/DataBrowser/DataBrowserSidebar.d.ts +1 -1
  198. package/dist/client/components/DataBrowser/DataBrowserToolbar.d.ts +1 -1
  199. package/dist/client/components/DataBrowser/index.d.ts +1 -1
  200. package/dist/client/components/DataHistogram.d.ts +1 -1
  201. package/dist/client/components/DebugModal.d.ts +1 -1
  202. package/dist/client/components/DrillBreadcrumb.d.ts +2 -1
  203. package/dist/client/components/LoadingIndicator.d.ts +1 -1
  204. package/dist/client/components/MobileStackedLayout.d.ts +1 -1
  205. package/dist/client/components/PortletAnalysisModal.d.ts +1 -1
  206. package/dist/client/components/PortletContainer.d.ts +1 -1
  207. package/dist/client/components/PortletFilterConfigModal.d.ts +6 -4
  208. package/dist/client/components/RowManagedLayout.d.ts +1 -1
  209. package/dist/client/components/ScaledGridWrapper.d.ts +1 -1
  210. package/dist/client/components/SchemaVisualization/CubeNode.d.ts +1 -1
  211. package/dist/client/components/SchemaVisualization/FieldDetailPanel.d.ts +1 -1
  212. package/dist/client/components/SchemaVisualization/RelationshipEdge.d.ts +1 -1
  213. package/dist/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +1 -1
  214. package/dist/client/components/SchemaVisualization/index.d.ts +1 -1
  215. package/dist/client/components/TextPortletModal.d.ts +1 -1
  216. package/dist/client/components/charts/AxisFormatControls.d.ts +2 -2
  217. package/dist/client/components/charts/ChartContainer.d.ts +1 -1
  218. package/dist/client/components/charts/ChartLegend.d.ts +1 -1
  219. package/dist/client/components/charts/ChartTooltip.d.ts +1 -1
  220. package/dist/client/components/charts/MissingDependencyFallback.d.ts +1 -1
  221. package/dist/client/components/dashboard/DashboardContext.d.ts +113 -0
  222. package/dist/client/components/dashboard/DashboardCoordinator.d.ts +2 -0
  223. package/dist/client/components/dashboard/DashboardFilterBar.d.ts +8 -0
  224. package/dist/client/components/dashboard/DashboardGridSurface.d.ts +8 -0
  225. package/dist/client/components/dashboard/DashboardModals.d.ts +8 -0
  226. package/dist/client/components/dashboard/DashboardProvider.d.ts +2 -0
  227. package/dist/client/components/dashboard/DashboardToolbar.d.ts +11 -0
  228. package/dist/client/components/dashboard/dashboardGridUtils.d.ts +17 -0
  229. package/dist/client/components/dashboard/index.d.ts +13 -0
  230. package/dist/client/components.d.ts +2 -0
  231. package/dist/client/components.js +3 -4
  232. package/dist/client/hooks/dashboard/useDashboardController.d.ts +2 -2
  233. package/dist/client/hooks/useDashboardHook.d.ts +2 -2
  234. package/dist/client/hooks.js +5 -6
  235. package/dist/client/icons.d.ts +1 -1
  236. package/dist/client/icons.js +2 -2
  237. package/dist/client/index.d.ts +2 -0
  238. package/dist/client/index.js +161 -163
  239. package/dist/client/index.js.map +1 -1
  240. package/dist/client/providers/CubeApiProvider.d.ts +1 -1
  241. package/dist/client/providers/CubeFeaturesProvider.d.ts +1 -1
  242. package/dist/client/providers/CubeMetaProvider.d.ts +1 -1
  243. package/dist/client/providers/CubeProvider.d.ts +1 -1
  244. package/dist/client/providers/I18nProvider.d.ts +1 -1
  245. package/dist/client/providers.js +3 -3
  246. package/dist/client/schema.js +1 -1
  247. package/dist/client/stores/analysisBuilderStore.d.ts +1 -1
  248. package/dist/client/stores/dashboardStore.d.ts +1 -1
  249. package/dist/client/stores/dataBrowserStore.d.ts +1 -1
  250. package/dist/client/stores/notebookStore.d.ts +1 -1
  251. package/dist/client/styles.css +1 -1
  252. package/dist/client/types/drill.d.ts +1 -1
  253. package/dist/client/types.d.ts +7 -2
  254. package/dist/client/utils/drillQueryBuilder.d.ts +2 -2
  255. package/dist/client/utils/filterUtils.d.ts +33 -5
  256. package/dist/client/utils/joinReachability.d.ts +27 -0
  257. package/dist/client/utils.js +6 -7
  258. package/dist/client-bundle-stats.html +1 -1
  259. package/dist/mcp-app/mcp-app.html +78 -52
  260. package/dist/{adapters/dist-Boc63-1q.cjs → server/dist-BOdf-GQO.cjs} +1 -1
  261. package/dist/{adapters/google-CT4kgmBf.js → server/google-CFYljAOF.js} +1 -1
  262. package/dist/server/{google-DzQWXFwF.cjs → google-DUlXeeDA.cjs} +1 -1
  263. package/dist/server/index.cjs +11 -11
  264. package/dist/server/index.d.ts +2 -5050
  265. package/dist/server/index.js +58 -15
  266. package/dist/{adapters/openai-CuUGrKaK.js → server/openai-B5jEiqiB.js} +2139 -948
  267. package/dist/{adapters/openai-DQawCWQb.js → server/openai-BZdAA7Ji.js} +1 -1
  268. package/dist/server/openai-D0musiYP.cjs +17 -0
  269. package/dist/server/{openai-BfiZU0rG.cjs → openai-D_U4V0kT.cjs} +1 -1
  270. package/dist/server/server/adapters/base-adapter.d.ts +287 -0
  271. package/dist/server/server/adapters/databend-adapter.d.ts +114 -0
  272. package/dist/server/server/adapters/duckdb-adapter.d.ts +122 -0
  273. package/dist/server/server/adapters/mysql-adapter.d.ts +122 -0
  274. package/dist/server/server/adapters/postgres-adapter.d.ts +119 -0
  275. package/dist/server/server/adapters/singlestore-adapter.d.ts +4 -0
  276. package/dist/server/server/adapters/snowflake-adapter.d.ts +116 -0
  277. package/dist/server/server/adapters/sqlite-adapter.d.ts +140 -0
  278. package/dist/server/server/agent/chart-validation.d.ts +27 -0
  279. package/dist/server/server/agent/handler.d.ts +25 -0
  280. package/dist/server/server/agent/index.d.ts +11 -0
  281. package/dist/server/server/agent/providers/anthropic.d.ts +24 -0
  282. package/dist/server/server/agent/providers/factory.d.ts +12 -0
  283. package/dist/server/server/agent/providers/google.d.ts +23 -0
  284. package/dist/server/server/agent/providers/index.d.ts +6 -0
  285. package/dist/server/server/agent/providers/openai.d.ts +26 -0
  286. package/dist/server/server/agent/providers/types.d.ts +95 -0
  287. package/dist/server/server/agent/system-prompt.d.ts +5 -0
  288. package/dist/server/server/agent/tools.d.ts +28 -0
  289. package/dist/server/server/agent/types.d.ts +192 -0
  290. package/dist/server/server/ai/discovery.d.ts +62 -0
  291. package/dist/server/server/ai/index.d.ts +10 -0
  292. package/dist/server/server/ai/mcp-prompts.d.ts +83 -0
  293. package/dist/server/server/ai/query-schema.d.ts +258 -0
  294. package/dist/server/server/ai/schemas.d.ts +63 -0
  295. package/dist/server/server/ai/suggestion.d.ts +19 -0
  296. package/dist/server/server/ai/validation.d.ts +34 -0
  297. package/dist/server/server/builders/comparison-query-builder.d.ts +70 -0
  298. package/dist/server/server/builders/cte-builder.d.ts +62 -0
  299. package/dist/server/server/builders/date-time-builder.d.ts +29 -0
  300. package/dist/server/server/builders/filter-builder.d.ts +23 -0
  301. package/dist/server/server/builders/flow-query-builder.d.ts +109 -0
  302. package/dist/server/server/builders/funnel-query-builder.d.ts +134 -0
  303. package/dist/server/server/builders/group-by-builder.d.ts +27 -0
  304. package/dist/server/server/builders/index.d.ts +13 -0
  305. package/dist/server/server/builders/measure-builder.d.ts +142 -0
  306. package/dist/server/server/builders/retention-query-builder.d.ts +100 -0
  307. package/dist/server/server/cache-providers/index.d.ts +5 -0
  308. package/dist/server/server/cache-providers/memory.d.ts +105 -0
  309. package/dist/server/server/cache-utils.d.ts +65 -0
  310. package/dist/server/server/compiler.d.ts +218 -0
  311. package/dist/server/server/cube-utils.d.ts +133 -0
  312. package/dist/server/server/database-utils.d.ts +18 -0
  313. package/dist/server/server/executor.d.ts +183 -0
  314. package/dist/server/server/executors/base-executor.d.ts +16 -0
  315. package/dist/server/server/executors/databend-executor.d.ts +33 -0
  316. package/dist/server/server/executors/duckdb-executor.d.ts +33 -0
  317. package/dist/server/server/executors/index.d.ts +21 -0
  318. package/dist/server/server/executors/mysql-executor.d.ts +27 -0
  319. package/dist/server/server/executors/postgres-executor.d.ts +27 -0
  320. package/dist/server/server/executors/singlestore-executor.d.ts +9 -0
  321. package/dist/server/server/executors/snowflake-executor.d.ts +33 -0
  322. package/dist/server/server/executors/sqlite-executor.d.ts +28 -0
  323. package/dist/server/server/explain/databend-parser.d.ts +16 -0
  324. package/dist/server/server/explain/duckdb-parser.d.ts +28 -0
  325. package/dist/server/server/explain/index.d.ts +9 -0
  326. package/dist/server/server/explain/mysql-parser.d.ts +38 -0
  327. package/dist/server/server/explain/postgres-parser.d.ts +18 -0
  328. package/dist/server/server/explain/snowflake-parser.d.ts +17 -0
  329. package/dist/server/server/explain/sqlite-parser.d.ts +23 -0
  330. package/dist/server/server/filter-cache.d.ts +73 -0
  331. package/dist/server/server/gap-filler.d.ts +42 -0
  332. package/dist/server/server/index.d.ts +36 -0
  333. package/dist/server/server/logical-plan/index.d.ts +14 -0
  334. package/dist/server/server/logical-plan/logical-plan-builder.d.ts +58 -0
  335. package/dist/server/server/logical-plan/logical-planner.d.ts +232 -0
  336. package/dist/server/server/logical-plan/optimiser.d.ts +32 -0
  337. package/dist/server/server/logical-plan/types.d.ts +191 -0
  338. package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
  339. package/dist/server/server/physical-plan/drizzle-sql-builder.d.ts +107 -0
  340. package/dist/server/server/physical-plan/index.d.ts +2 -0
  341. package/dist/server/server/physical-plan/processors/cte-processor.d.ts +6 -0
  342. package/dist/server/server/physical-plan/processors/index.d.ts +6 -0
  343. package/dist/server/server/physical-plan/processors/joins-processor.d.ts +6 -0
  344. package/dist/server/server/physical-plan/processors/predicates-processor.d.ts +6 -0
  345. package/dist/server/server/physical-plan/processors/selection-processor.d.ts +6 -0
  346. package/dist/server/server/physical-plan/processors/shared.d.ts +33 -0
  347. package/dist/server/server/physical-plan/processors/window-processor.d.ts +6 -0
  348. package/dist/server/server/prompts/explain-analysis-prompt.d.ts +47 -0
  349. package/dist/server/server/prompts/index.d.ts +27 -0
  350. package/dist/server/server/prompts/single-step-prompt.d.ts +31 -0
  351. package/dist/server/server/prompts/step0-validation-prompt.d.ts +39 -0
  352. package/dist/server/server/prompts/step1-shape-prompt.d.ts +29 -0
  353. package/dist/server/server/prompts/step2-complete-prompt.d.ts +19 -0
  354. package/dist/server/server/prompts/types.d.ts +37 -0
  355. package/dist/server/server/resolvers/calculated-measure-resolver.d.ts +93 -0
  356. package/dist/server/server/resolvers/index.d.ts +6 -0
  357. package/dist/server/server/resolvers/join-path-resolver.d.ts +152 -0
  358. package/dist/server/server/template-substitution.d.ts +57 -0
  359. package/dist/server/server/types/analysis.d.ts +189 -0
  360. package/dist/server/server/types/cache.d.ts +132 -0
  361. package/dist/server/server/types/core.d.ts +164 -0
  362. package/dist/server/server/types/cube.d.ts +530 -0
  363. package/dist/server/server/types/executor.d.ts +156 -0
  364. package/dist/server/server/types/flow.d.ts +143 -0
  365. package/dist/server/server/types/funnel.d.ts +118 -0
  366. package/dist/server/server/types/index.d.ts +11 -0
  367. package/dist/server/server/types/metadata.d.ts +113 -0
  368. package/dist/server/server/types/query.d.ts +153 -0
  369. package/dist/server/server/types/retention.d.ts +141 -0
  370. package/dist/server/server/types/utils.d.ts +11 -0
  371. package/package.json +6 -6
  372. package/dist/adapters/mcp-transport-BCtjU0lC.cjs +0 -40
  373. package/dist/adapters/mcp-transport-DW_Uks-O.js +0 -579
  374. package/dist/adapters/openai-Bgri5TJc.cjs +0 -16
  375. package/dist/client/chunks/DashboardEditModal-BiJwVv0b.js +0 -6696
  376. package/dist/client/chunks/DashboardEditModal-BiJwVv0b.js.map +0 -1
  377. package/dist/client/chunks/FieldSearchModal-DdcbCwAi.js +0 -2660
  378. package/dist/client/chunks/FieldSearchModal-DdcbCwAi.js.map +0 -1
  379. package/dist/client/chunks/chart-data-table-DT4uBZaq.js.map +0 -1
  380. package/dist/client/chunks/chart-markdown-DEtjn8gx.js +0 -3539
  381. package/dist/client/chunks/chart-markdown-DEtjn8gx.js.map +0 -1
  382. package/dist/client/chunks/syntaxHighlighting-5zHcjn27.js +0 -30
  383. package/dist/client/chunks/syntaxHighlighting-5zHcjn27.js.map +0 -1
  384. package/dist/client/chunks/useDebounce-DGfYXtkm.js.map +0 -1
  385. package/dist/client/chunks/useDirtyStateTracking-KAjwj1Ht.js +0 -66
  386. package/dist/client/chunks/useDirtyStateTracking-KAjwj1Ht.js.map +0 -1
  387. package/dist/client/chunks/utils-D2SCtAkZ.js.map +0 -1
  388. package/dist/client/chunks/vendor-CfR5hJGc.js.map +0 -1
  389. package/dist/server/openai-BwsBio1K.cjs +0 -16
  390. /package/dist/adapters/{express → adapters/express}/index.d.ts +0 -0
  391. /package/dist/adapters/{fastify → adapters/fastify}/index.d.ts +0 -0
  392. /package/dist/adapters/{hono → adapters/hono}/index.d.ts +0 -0
  393. /package/dist/adapters/{locale.d.ts → adapters/locale.d.ts} +0 -0
  394. /package/dist/adapters/{mcp-tools.d.ts → adapters/mcp-tools.d.ts} +0 -0
  395. /package/dist/adapters/{mcp-transport.d.ts → adapters/mcp-transport.d.ts} +0 -0
  396. /package/dist/adapters/{nextjs → adapters/nextjs}/index.d.ts +0 -0
  397. /package/dist/adapters/{types.d.ts → adapters/types.d.ts} +0 -0
  398. /package/dist/adapters/{utils.d.ts → adapters/utils.d.ts} +0 -0
  399. /package/dist/adapters/{anthropic-B_rg0BhK.js → anthropic-CZh4hB-m.js} +0 -0
  400. /package/dist/adapters/{anthropic-BIva8k1r.cjs → anthropic-DG4r1LSm.cjs} +0 -0
  401. /package/dist/adapters/{dist-De5fzUEM.js → dist-CH3hwAUk.js} +0 -0
  402. /package/dist/client/chunks/{rolldown-runtime-CKnJJeip.js → rolldown-runtime-CWhphoD1.js} +0 -0
  403. /package/dist/server/{anthropic-BsNspi1r.js → anthropic-CZh4hB-m.js} +0 -0
  404. /package/dist/server/{anthropic-DsCEX6Fm.cjs → anthropic-DG4r1LSm.cjs} +0 -0
  405. /package/dist/server/{dist-CMWZC51B.js → dist-CH3hwAUk.js} +0 -0
@@ -0,0 +1,133 @@
1
+ import { SQL, AnyColumn } from 'drizzle-orm';
2
+ import { Cube, CubeJoin, QueryContext, MultiCubeQueryContext, SqlExpression, SecurityContext } from './types';
3
+ /**
4
+ * Resolve cube reference (handles direct, lazy, and string name references)
5
+ *
6
+ * String references are resolved from the optional `cubes` registry map.
7
+ * Returns `null` when a string ref cannot be resolved (logs a warning).
8
+ */
9
+ export declare function resolveCubeReference(ref: Cube | (() => Cube) | string, cubes?: Map<string, Cube>): Cube | null;
10
+ /**
11
+ * Reverse a semantic relationship type for bidirectional join path resolution.
12
+ * When traversing a join edge in reverse (target→source instead of source→target),
13
+ * the relationship semantics flip: belongsTo↔hasMany, hasOne stays hasOne,
14
+ * belongsToMany stays belongsToMany (symmetric).
15
+ */
16
+ export declare function reverseRelationship(relationship: string): string;
17
+ /**
18
+ * Derive SQL join type from semantic relationship
19
+ */
20
+ export declare function getJoinType(relationship: string, override?: string): string;
21
+ /**
22
+ * DRIZZLE ORM LIMITATION: SQL Object Mutation Protection
23
+ *
24
+ * Create an isolated copy of a SQL expression to prevent mutation issues
25
+ * when the expression will be reused across multiple query contexts.
26
+ *
27
+ * ## Background
28
+ *
29
+ * Drizzle SQL objects are mutable - their internal `queryChunks` array can be
30
+ * modified during query construction. When column objects (like employees.id)
31
+ * are reused across multiple parts of a query (SELECT, WHERE, GROUP BY), this
32
+ * mutation can cause:
33
+ * - Duplicate SQL fragments in generated queries
34
+ * - Incorrect parameter binding order
35
+ * - Query execution failures
36
+ *
37
+ * ## Evidence from Drizzle Source Code
38
+ *
39
+ * Investigation of Drizzle ORM source code (/tmp/drizzle-orm/drizzle-orm/src/sql/sql.ts)
40
+ * revealed:
41
+ *
42
+ * 1. SQL objects have a mutable `queryChunks` array (line 133)
43
+ * 2. The `append()` method directly mutates this array
44
+ * 3. No public `clone()` method exists (only internal SQL.Aliased.clone())
45
+ * 4. The `sql` template function creates NEW arrays but chunks are pushed by reference
46
+ *
47
+ * ## The Double Wrapping Pattern
48
+ *
49
+ * `sql`${sql`${expr}`}`` creates two layers of SQL isolation:
50
+ *
51
+ * **Single wrap** (`sql`${expr}``):
52
+ * - Creates a new SQL object
53
+ * - But queryChunks contains REFERENCES to original objects
54
+ * - Original objects can still be mutated
55
+ *
56
+ * **Double wrap** (`sql`${sql`${expr}`}``):
57
+ * - Inner wrap: Creates fresh SQL from original expression
58
+ * - Outer wrap: Creates complete isolation from shared state
59
+ * - When Drizzle processes nested SQL, it recursively builds from inner chunks
60
+ * - This prevents corruption when SQL expressions are reused
61
+ *
62
+ * ## When to Use
63
+ *
64
+ * - **resolveSqlExpression()**: ALWAYS (expressions may be reused)
65
+ * - **buildMeasureExpression()**: ALWAYS (after resolveSqlExpression)
66
+ * - **New aggregations**: Single wrap OK (creating fresh SQL for first time)
67
+ *
68
+ * ## Alternatives Investigated
69
+ *
70
+ * - ❌ Use Drizzle's clone() - Doesn't exist publicly
71
+ * - ❌ Store SQL factory functions - Still returns same column objects
72
+ * - ❌ Create fresh column references - Impossible, columns are singletons
73
+ * - ❌ Avoid SQL reuse - Unavoidable (same dimension in SELECT, WHERE, GROUP BY)
74
+ *
75
+ * ## Performance Impact
76
+ *
77
+ * - Memory: ~200 bytes per wrap (negligible)
78
+ * - CPU: Two function calls during query building (microseconds)
79
+ * - No runtime query performance impact
80
+ *
81
+ * @param expr - SQL expression that may be reused across query contexts
82
+ * @returns Isolated SQL expression safe for reuse
83
+ */
84
+ export declare function isolateSqlExpression(expr: AnyColumn | SQL): SQL;
85
+ /**
86
+ * Sanitize a property key to prevent prototype pollution.
87
+ * Keys in this codebase come from validated cube field names (e.g., "Cube.measure")
88
+ * but CodeQL cannot trace that validation across module boundaries.
89
+ */
90
+ export declare function safeKey(key: string): string;
91
+ /**
92
+ * Helper to resolve SQL expressions with mutation protection
93
+ *
94
+ * Evaluates function-based SQL expressions and applies isolation to prevent
95
+ * Drizzle's internal mutation from corrupting reused SQL objects.
96
+ *
97
+ * @param expr - Column, SQL object, or function that returns one
98
+ * @param ctx - Query context for function evaluation
99
+ * @returns Isolated SQL expression safe for reuse
100
+ */
101
+ export declare function resolveSqlExpression(expr: AnyColumn | SQL | ((ctx: QueryContext) => AnyColumn | SQL), ctx: QueryContext): AnyColumn | SQL;
102
+ /**
103
+ * Helper to create multi-cube query context
104
+ */
105
+ export declare function createMultiCubeContext(baseContext: QueryContext, cubes: Map<string, Cube>, currentCube: Cube): MultiCubeQueryContext;
106
+ /**
107
+ * Type guard to check if value is a function-based SQL expression
108
+ */
109
+ export declare function isFunctionSqlExpression(expr: SqlExpression): expr is (ctx: QueryContext) => AnyColumn | SQL;
110
+ /**
111
+ * Helper function to create cubes
112
+ */
113
+ export declare function defineCube(name: string, definition: Omit<Cube, 'name'>): Cube;
114
+ /**
115
+ * Expanded join information for belongsToMany relationships
116
+ */
117
+ export interface ExpandedBelongsToManyJoin {
118
+ /** Junction table joins */
119
+ junctionJoins: Array<{
120
+ joinType: 'inner' | 'left' | 'right' | 'full';
121
+ table: any;
122
+ condition: SQL;
123
+ }>;
124
+ /** Security conditions for junction table (if any) */
125
+ junctionSecurityConditions?: SQL[];
126
+ }
127
+ /**
128
+ * Expand a belongsToMany join into junction table joins
129
+ * This converts a many-to-many relationship into two separate joins:
130
+ * 1. Source cube -> Junction table
131
+ * 2. Junction table -> Target cube
132
+ */
133
+ export declare function expandBelongsToManyJoin(joinDef: CubeJoin, securityContext: SecurityContext): ExpandedBelongsToManyJoin;
@@ -0,0 +1,18 @@
1
+ import { DatabaseAdapter } from './adapters/base-adapter';
2
+ /**
3
+ * Create a database adapter for the specified engine type
4
+ * @param engineType - The database engine type
5
+ * @returns Database adapter instance
6
+ */
7
+ export declare function createDatabaseAdapter(engineType: 'postgres' | 'mysql' | 'sqlite' | 'singlestore' | 'duckdb' | 'databend' | 'snowflake'): DatabaseAdapter;
8
+ /**
9
+ * Get available database adapters
10
+ * @returns Array of supported engine types
11
+ */
12
+ export declare function getSupportedEngines(): ('postgres' | 'mysql' | 'sqlite' | 'singlestore' | 'duckdb' | 'databend' | 'snowflake')[];
13
+ /**
14
+ * Check if an engine type is supported
15
+ * @param engineType - Engine type to check
16
+ * @returns True if supported, false otherwise
17
+ */
18
+ export declare function isEngineSupported(engineType: string): engineType is 'postgres' | 'mysql' | 'sqlite' | 'singlestore' | 'duckdb' | 'databend' | 'snowflake';
@@ -0,0 +1,183 @@
1
+ import { SecurityContext, SemanticQuery, QueryResult, DatabaseExecutor, Cube, CacheConfig, ExplainOptions, ExplainResult, ExecutionOptions, QueryAnalysis, RLSSetupFn } from './types';
2
+ export declare class QueryExecutor {
3
+ private dbExecutor;
4
+ private queryBuilder;
5
+ private drizzlePlanBuilder;
6
+ private databaseAdapter;
7
+ private comparisonQueryBuilder;
8
+ private funnelQueryBuilder;
9
+ private flowQueryBuilder;
10
+ private retentionQueryBuilder;
11
+ private cacheConfig?;
12
+ private logicalPlanBuilder;
13
+ private planOptimiser;
14
+ private rlsSetup?;
15
+ constructor(dbExecutor: DatabaseExecutor, cacheConfig?: CacheConfig, rlsSetup?: RLSSetupFn);
16
+ /**
17
+ * Execute a function within a RLS-configured transaction context.
18
+ * If no rlsSetup function is configured, the function is called directly.
19
+ * Otherwise, opens a transaction, calls rlsSetup to configure RLS, then
20
+ * runs fn with this.dbExecutor replaced by a transaction-scoped executor.
21
+ *
22
+ * Concurrency-safe: the dbExecutor is per-request (created fresh by
23
+ * SemanticLayerCompiler.createQueryExecutor), so reassigning this.dbExecutor
24
+ * only affects this request.
25
+ */
26
+ private withRLSContext;
27
+ /**
28
+ * Unified query execution method that handles both single and multi-cube queries
29
+ * @param options.skipCache - Skip cache lookup (but still cache the fresh result)
30
+ */
31
+ execute(cubes: Map<string, Cube>, query: SemanticQuery, securityContext: SecurityContext, options?: ExecutionOptions): Promise<QueryResult>;
32
+ /**
33
+ * Build a logical plan for a query without executing it.
34
+ * Useful for testing, debugging, and plan inspection.
35
+ */
36
+ buildLogicalPlan(cubes: Map<string, Cube>, query: SemanticQuery, securityContext: SecurityContext): import('./logical-plan').QueryNode;
37
+ /**
38
+ * Analyze planning decisions for a regular query using the same logical
39
+ * planning path as execution and dry-run SQL generation.
40
+ */
41
+ analyzeQuery(cubes: Map<string, Cube>, query: SemanticQuery, securityContext: SecurityContext): QueryAnalysis;
42
+ /**
43
+ * Legacy interface for single cube queries
44
+ */
45
+ executeQuery(cube: Cube, query: SemanticQuery, securityContext: SecurityContext): Promise<QueryResult>;
46
+ /**
47
+ * Execute a comparison query with caching support
48
+ * Wraps executeComparisonQuery with cache set logic
49
+ */
50
+ private executeComparisonQueryWithCache;
51
+ /**
52
+ * Execute a comparison query with multiple date periods
53
+ * Expands compareDateRange into multiple sub-queries and merges results
54
+ */
55
+ private executeComparisonQuery;
56
+ private buildComparisonExecutionPlan;
57
+ /**
58
+ * Execute a funnel query with caching support
59
+ */
60
+ private executeFunnelQueryWithCache;
61
+ /**
62
+ * Execute a funnel analysis query
63
+ */
64
+ private executeFunnelQuery;
65
+ /**
66
+ * Execute a flow query with caching support
67
+ */
68
+ private executeFlowQueryWithCache;
69
+ /**
70
+ * Execute a flow analysis query
71
+ * Produces Sankey diagram data (nodes and links)
72
+ */
73
+ private executeFlowQuery;
74
+ /**
75
+ * Execute a retention query with caching support
76
+ */
77
+ private executeRetentionQueryWithCache;
78
+ /**
79
+ * Execute a retention analysis query
80
+ * Calculates cohort-based retention rates
81
+ */
82
+ private executeRetentionQuery;
83
+ /**
84
+ * Standard query execution (non-comparison)
85
+ * This is the core execution logic extracted for use by comparison queries
86
+ */
87
+ private executeStandardQuery;
88
+ /**
89
+ * Create a query context with optional filter cache.
90
+ */
91
+ private createQueryContext;
92
+ /**
93
+ * Normalize engine type for optimiser passes.
94
+ * SingleStore follows MySQL SQL semantics for planner choices.
95
+ */
96
+ private getOptimiserEngineType;
97
+ /**
98
+ * Shared regular-query planning pipeline used by execute, dry-run SQL,
99
+ * and analysis. This is the single source of planning truth.
100
+ */
101
+ private buildRegularQueryArtifacts;
102
+ /**
103
+ * Validate that all cubes in the query plan have proper security filtering.
104
+ * Emits a warning if a cube's sql() function doesn't return a WHERE clause.
105
+ *
106
+ * Security is critical in multi-tenant applications - this validation helps
107
+ * detect cubes that may leak data across tenants.
108
+ */
109
+ private validateSecurityContext;
110
+ /**
111
+ * Generate raw SQL for debugging (without execution) - unified approach
112
+ */
113
+ generateSQL(cube: Cube, query: SemanticQuery, securityContext: SecurityContext): Promise<{
114
+ sql: string;
115
+ params?: any[];
116
+ }>;
117
+ /**
118
+ * Generate raw SQL for multi-cube queries without execution - unified approach
119
+ */
120
+ generateMultiCubeSQL(cubes: Map<string, Cube>, query: SemanticQuery, securityContext: SecurityContext): Promise<{
121
+ sql: string;
122
+ params?: any[];
123
+ }>;
124
+ /**
125
+ * Generate SQL for a funnel query without execution (dry-run)
126
+ * Returns the actual CTE-based SQL that would be executed
127
+ */
128
+ dryRunFunnel(cubes: Map<string, Cube>, query: SemanticQuery, securityContext: SecurityContext): Promise<{
129
+ sql: string;
130
+ params?: any[];
131
+ }>;
132
+ /**
133
+ * Generate SQL for a flow query without execution (dry-run)
134
+ * Returns the actual CTE-based SQL that would be executed
135
+ */
136
+ dryRunFlow(cubes: Map<string, Cube>, query: SemanticQuery, securityContext: SecurityContext): Promise<{
137
+ sql: string;
138
+ params?: any[];
139
+ }>;
140
+ /**
141
+ * Generate SQL for a retention query without execution (dry-run)
142
+ * Returns the actual CTE-based SQL that would be executed
143
+ */
144
+ dryRunRetention(cubes: Map<string, Cube>, query: SemanticQuery, securityContext: SecurityContext): Promise<{
145
+ sql: string;
146
+ params?: any[];
147
+ }>;
148
+ /**
149
+ * Execute EXPLAIN on a query to get the execution plan
150
+ * Generates the SQL using the same secure path as execute/generateSQL,
151
+ * then runs EXPLAIN on the database.
152
+ */
153
+ explainQuery(cubes: Map<string, Cube>, query: SemanticQuery, securityContext: SecurityContext, options?: ExplainOptions): Promise<ExplainResult>;
154
+ /**
155
+ * Generate SQL for any query mode without execution.
156
+ * This is the canonical dry-run SQL entrypoint used by explain/adapters.
157
+ */
158
+ dryRunSQL(cubes: Map<string, Cube>, query: SemanticQuery, securityContext: SecurityContext): Promise<{
159
+ sql: string;
160
+ params?: any[];
161
+ }>;
162
+ /**
163
+ * Generate SQL using unified approach (works for both single and multi-cube)
164
+ */
165
+ private generateUnifiedSQL;
166
+ private resolveQueryMode;
167
+ private validateQueryForMode;
168
+ private executeQueryByModeWithCache;
169
+ private executeRegularQueryWithCache;
170
+ private cacheResult;
171
+ private generateSqlForMode;
172
+ private generateComparisonSQL;
173
+ /**
174
+ * Generate annotations for UI metadata - unified approach
175
+ */
176
+ private generateAnnotations;
177
+ /**
178
+ * Pre-build filter SQL and store in cache for reuse across CTEs and main query
179
+ * This enables parameter deduplication - the same filter values are shared
180
+ * rather than appearing as separate parameters in different parts of the query
181
+ */
182
+ private preloadFilterCache;
183
+ }
@@ -0,0 +1,16 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { DrizzleDatabase, DatabaseExecutor, ExplainOptions, ExplainResult, IndexInfo } from '../types';
3
+ import { DatabaseAdapter } from '../adapters/base-adapter';
4
+ /**
5
+ * Abstract base class for database executors
6
+ */
7
+ export declare abstract class BaseDatabaseExecutor implements DatabaseExecutor {
8
+ db: DrizzleDatabase;
9
+ schema?: any | undefined;
10
+ databaseAdapter: DatabaseAdapter;
11
+ constructor(db: DrizzleDatabase, schema?: any | undefined, engineType?: 'postgres' | 'mysql' | 'sqlite' | 'singlestore' | 'duckdb' | 'databend' | 'snowflake');
12
+ abstract execute<T = any[]>(query: SQL | any, numericFields?: string[]): Promise<T>;
13
+ abstract getEngineType(): 'postgres' | 'mysql' | 'sqlite' | 'singlestore' | 'duckdb' | 'databend' | 'snowflake';
14
+ abstract explainQuery(sqlString: string, params: unknown[], options?: ExplainOptions): Promise<ExplainResult>;
15
+ abstract getTableIndexes(tableNames: string[]): Promise<IndexInfo[]>;
16
+ }
@@ -0,0 +1,33 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { DrizzleDatabase, ExplainOptions, ExplainResult, IndexInfo } from '../types';
3
+ import { BaseDatabaseExecutor } from './base-executor';
4
+ export declare class DatabendExecutor extends BaseDatabaseExecutor {
5
+ execute<T = any[]>(query: SQL | any, numericFields?: string[]): Promise<T>;
6
+ /**
7
+ * Extract SQL string and params from a query object for error logging
8
+ */
9
+ private extractSqlFromQuery;
10
+ /**
11
+ * Convert numeric string fields to numbers (only for measure fields)
12
+ */
13
+ private convertNumericFields;
14
+ /**
15
+ * Coerce a value to a number if it represents a numeric type
16
+ */
17
+ private coerceToNumber;
18
+ getEngineType(): 'databend';
19
+ /**
20
+ * Execute EXPLAIN on a SQL query to get the execution plan
21
+ * Databend supports EXPLAIN and EXPLAIN ANALYZE
22
+ */
23
+ explainQuery(sqlString: string, params: unknown[], options?: ExplainOptions): Promise<ExplainResult>;
24
+ /**
25
+ * Get existing indexes for the specified tables
26
+ * Databend uses system tables for index information
27
+ */
28
+ getTableIndexes(tableNames: string[]): Promise<IndexInfo[]>;
29
+ }
30
+ /**
31
+ * Factory function for creating Databend executors
32
+ */
33
+ export declare function createDatabendExecutor(db: DrizzleDatabase, schema?: any): DatabendExecutor;
@@ -0,0 +1,33 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { DrizzleDatabase, ExplainOptions, ExplainResult, IndexInfo } from '../types';
3
+ import { BaseDatabaseExecutor } from './base-executor';
4
+ export declare class DuckDBExecutor extends BaseDatabaseExecutor {
5
+ execute<T = any[]>(query: SQL | any, numericFields?: string[]): Promise<T>;
6
+ /**
7
+ * Extract SQL string and params from a query object for error logging
8
+ */
9
+ private extractSqlFromQuery;
10
+ /**
11
+ * Convert numeric string fields to numbers (only for measure fields)
12
+ */
13
+ private convertNumericFields;
14
+ /**
15
+ * Coerce a value to a number if it represents a numeric type
16
+ */
17
+ private coerceToNumber;
18
+ getEngineType(): 'duckdb';
19
+ /**
20
+ * Execute EXPLAIN on a SQL query to get the execution plan
21
+ * DuckDB supports EXPLAIN and EXPLAIN ANALYZE
22
+ */
23
+ explainQuery(sqlString: string, params: unknown[], options?: ExplainOptions): Promise<ExplainResult>;
24
+ /**
25
+ * Get existing indexes for the specified tables
26
+ * DuckDB uses duckdb_indexes() table function
27
+ */
28
+ getTableIndexes(tableNames: string[]): Promise<IndexInfo[]>;
29
+ }
30
+ /**
31
+ * Factory function for creating DuckDB executors
32
+ */
33
+ export declare function createDuckDBExecutor(db: DrizzleDatabase, schema?: any): DuckDBExecutor;
@@ -0,0 +1,21 @@
1
+ import { DrizzleDatabase, DatabaseExecutor } from '../types';
2
+ /**
3
+ * Database executors for different database engines
4
+ * Handles SQL execution with proper type coercion
5
+ */
6
+ export { BaseDatabaseExecutor } from './base-executor';
7
+ export { PostgresExecutor, createPostgresExecutor } from './postgres-executor';
8
+ export { MySQLExecutor, createMySQLExecutor } from './mysql-executor';
9
+ export { SQLiteExecutor, createSQLiteExecutor } from './sqlite-executor';
10
+ export { SingleStoreExecutor, createSingleStoreExecutor } from './singlestore-executor';
11
+ export { DuckDBExecutor, createDuckDBExecutor } from './duckdb-executor';
12
+ export { DatabendExecutor, createDatabendExecutor } from './databend-executor';
13
+ export { SnowflakeExecutor, createSnowflakeExecutor } from './snowflake-executor';
14
+ /**
15
+ * Auto-detect database type and create appropriate executor
16
+ * @param db - Drizzle database instance
17
+ * @param schema - Optional schema for type inference
18
+ * @param engineType - Optional explicit engine type override
19
+ * @returns Appropriate database executor
20
+ */
21
+ export declare function createDatabaseExecutor(db: DrizzleDatabase, schema?: any, engineType?: 'postgres' | 'mysql' | 'sqlite' | 'singlestore' | 'duckdb' | 'databend' | 'snowflake'): DatabaseExecutor;
@@ -0,0 +1,27 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { DrizzleDatabase, ExplainOptions, ExplainResult, IndexInfo } from '../types';
3
+ import { BaseDatabaseExecutor } from './base-executor';
4
+ export declare class MySQLExecutor extends BaseDatabaseExecutor {
5
+ execute<T = any[]>(query: SQL | any, numericFields?: string[]): Promise<T>;
6
+ /**
7
+ * Convert numeric string fields to numbers (measure fields + numeric dimensions)
8
+ */
9
+ private convertNumericFields;
10
+ /**
11
+ * Coerce a value to a number if it represents a numeric type
12
+ */
13
+ private coerceToNumber;
14
+ getEngineType(): 'mysql' | 'singlestore';
15
+ /**
16
+ * Execute EXPLAIN on a SQL query to get the execution plan
17
+ */
18
+ explainQuery(sqlString: string, params: unknown[], options?: ExplainOptions): Promise<ExplainResult>;
19
+ /**
20
+ * Get existing indexes for the specified tables
21
+ */
22
+ getTableIndexes(tableNames: string[]): Promise<IndexInfo[]>;
23
+ }
24
+ /**
25
+ * Factory function for creating MySQL executors
26
+ */
27
+ export declare function createMySQLExecutor(db: DrizzleDatabase, schema?: any): MySQLExecutor;
@@ -0,0 +1,27 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { DrizzleDatabase, ExplainOptions, ExplainResult, IndexInfo } from '../types';
3
+ import { BaseDatabaseExecutor } from './base-executor';
4
+ export declare class PostgresExecutor extends BaseDatabaseExecutor {
5
+ execute<T = any[]>(query: SQL | any, numericFields?: string[]): Promise<T>;
6
+ /**
7
+ * Convert numeric string fields to numbers (only for measure fields)
8
+ */
9
+ private convertNumericFields;
10
+ /**
11
+ * Coerce a value to a number if it represents a numeric type
12
+ */
13
+ private coerceToNumber;
14
+ getEngineType(): 'postgres';
15
+ /**
16
+ * Execute EXPLAIN on a SQL query to get the execution plan
17
+ */
18
+ explainQuery(sqlString: string, params: unknown[], options?: ExplainOptions): Promise<ExplainResult>;
19
+ /**
20
+ * Get existing indexes for the specified tables
21
+ */
22
+ getTableIndexes(tableNames: string[]): Promise<IndexInfo[]>;
23
+ }
24
+ /**
25
+ * Factory function for creating PostgreSQL executors
26
+ */
27
+ export declare function createPostgresExecutor(db: DrizzleDatabase, schema?: any): PostgresExecutor;
@@ -0,0 +1,9 @@
1
+ import { DrizzleDatabase } from '../types';
2
+ import { MySQLExecutor } from './mysql-executor';
3
+ export declare class SingleStoreExecutor extends MySQLExecutor {
4
+ getEngineType(): 'singlestore';
5
+ }
6
+ /**
7
+ * Factory function for creating SingleStore executors
8
+ */
9
+ export declare function createSingleStoreExecutor(db: DrizzleDatabase, schema?: any): SingleStoreExecutor;
@@ -0,0 +1,33 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { DrizzleDatabase, ExplainOptions, ExplainResult, IndexInfo } from '../types';
3
+ import { BaseDatabaseExecutor } from './base-executor';
4
+ export declare class SnowflakeExecutor extends BaseDatabaseExecutor {
5
+ execute<T = any[]>(query: SQL | any, numericFields?: string[]): Promise<T>;
6
+ /**
7
+ * Extract SQL string and params from a query object for error logging
8
+ */
9
+ private extractSqlFromQuery;
10
+ /**
11
+ * Convert numeric string fields to numbers (only for measure fields)
12
+ */
13
+ private convertNumericFields;
14
+ /**
15
+ * Coerce a value to a number if it represents a numeric type
16
+ */
17
+ private coerceToNumber;
18
+ getEngineType(): 'snowflake';
19
+ /**
20
+ * Execute EXPLAIN on a SQL query to get the execution plan
21
+ * Snowflake supports EXPLAIN and EXPLAIN USING TEXT/JSON/TABULAR
22
+ */
23
+ explainQuery(sqlString: string, params: unknown[], options?: ExplainOptions): Promise<ExplainResult>;
24
+ /**
25
+ * Get existing indexes for the specified tables
26
+ * Snowflake doesn't use traditional indexes (it uses micro-partitioning)
27
+ */
28
+ getTableIndexes(_tableNames: string[]): Promise<IndexInfo[]>;
29
+ }
30
+ /**
31
+ * Factory function for creating Snowflake executors
32
+ */
33
+ export declare function createSnowflakeExecutor(db: DrizzleDatabase, schema?: any): SnowflakeExecutor;
@@ -0,0 +1,28 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { DrizzleDatabase, ExplainOptions, ExplainResult, IndexInfo } from '../types';
3
+ import { BaseDatabaseExecutor } from './base-executor';
4
+ export declare class SQLiteExecutor extends BaseDatabaseExecutor {
5
+ execute<T = any[]>(query: SQL | any, numericFields?: string[]): Promise<T>;
6
+ /**
7
+ * Convert numeric string fields to numbers (only for measure fields)
8
+ */
9
+ private convertNumericFields;
10
+ /**
11
+ * Coerce a value to a number if it represents a numeric type
12
+ */
13
+ private coerceToNumber;
14
+ getEngineType(): 'sqlite';
15
+ /**
16
+ * Execute EXPLAIN QUERY PLAN on a SQL query to get the execution plan
17
+ * Note: SQLite doesn't support EXPLAIN ANALYZE
18
+ */
19
+ explainQuery(sqlString: string, params: unknown[], _options?: ExplainOptions): Promise<ExplainResult>;
20
+ /**
21
+ * Get existing indexes for the specified tables
22
+ */
23
+ getTableIndexes(tableNames: string[]): Promise<IndexInfo[]>;
24
+ }
25
+ /**
26
+ * Factory function for creating SQLite executors
27
+ */
28
+ export declare function createSQLiteExecutor(db: DrizzleDatabase, schema?: any): SQLiteExecutor;
@@ -0,0 +1,16 @@
1
+ import { ExplainResult } from '../types/executor';
2
+ /**
3
+ * Parse Databend EXPLAIN output
4
+ *
5
+ * Databend EXPLAIN output is typically indented text showing the query plan tree.
6
+ * Example:
7
+ * "Filter"
8
+ * "├── filters: [employees.organisation_id = 1]"
9
+ * "├── TableScan"
10
+ * "│ ├── table: employees"
11
+ * "│ ├── estimated rows: 1000"
12
+ */
13
+ export declare function parseDatabendExplain(rawOutput: string[], sqlQuery: {
14
+ sql: string;
15
+ params?: unknown[];
16
+ }): ExplainResult;
@@ -0,0 +1,28 @@
1
+ import { ExplainResult } from '../types/executor';
2
+ /**
3
+ * Parse DuckDB EXPLAIN output
4
+ *
5
+ * Example DuckDB EXPLAIN output:
6
+ * "┌───────────────────────────┐"
7
+ * "│ EXPLANATION OF │"
8
+ * "│ QUERY PLAN │"
9
+ * "└───────────────────────────┘"
10
+ * "┌─────────────────────────────────────────────────────────────────────┐"
11
+ * "│ QUERY PLAN │"
12
+ * "├─────────────────────────────────────────────────────────────────────┤"
13
+ * "│ HASH_JOIN │"
14
+ * "│ ├──SEQ_SCAN employees │"
15
+ * "│ │ (cost=100.0 rows=1000) │"
16
+ * "│ └──SEQ_SCAN departments │"
17
+ * "│ (cost=50.0 rows=500) │"
18
+ * "└─────────────────────────────────────────────────────────────────────┘"
19
+ *
20
+ * Or simpler format:
21
+ * "HASH_JOIN"
22
+ * "├──SEQ_SCAN employees"
23
+ * "└──SEQ_SCAN departments"
24
+ */
25
+ export declare function parseDuckDBExplain(rawOutput: string[], sqlQuery: {
26
+ sql: string;
27
+ params?: unknown[];
28
+ }): ExplainResult;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * EXPLAIN plan parsers
3
+ * Normalize raw EXPLAIN output from different databases to a common format
4
+ */
5
+ export { parsePostgresExplain } from './postgres-parser';
6
+ export { parseMySQLExplain } from './mysql-parser';
7
+ export { parseSQLiteExplain } from './sqlite-parser';
8
+ export { parseDuckDBExplain } from './duckdb-parser';
9
+ export type { ExplainOperation, ExplainResult, ExplainSummary, ExplainOptions } from '../types/executor';
@@ -0,0 +1,38 @@
1
+ import { ExplainResult } from '../types/executor';
2
+ /**
3
+ * MySQL EXPLAIN row structure
4
+ * Standard columns returned by EXPLAIN
5
+ */
6
+ interface MySQLExplainRow {
7
+ id: number;
8
+ select_type: string;
9
+ table: string | null;
10
+ partitions: string | null;
11
+ type: string;
12
+ possible_keys: string | null;
13
+ key: string | null;
14
+ key_len: string | null;
15
+ ref: string | null;
16
+ rows: number;
17
+ filtered: number;
18
+ Extra: string | null;
19
+ }
20
+ /**
21
+ * Parse MySQL EXPLAIN output
22
+ *
23
+ * MySQL EXPLAIN returns rows with columns:
24
+ * id, select_type, table, partitions, type, possible_keys, key, key_len, ref, rows, filtered, Extra
25
+ *
26
+ * The 'type' column indicates access method:
27
+ * - ALL: Full table scan (like Seq Scan)
28
+ * - index: Full index scan
29
+ * - range: Index range scan
30
+ * - ref: Index lookup using non-unique index
31
+ * - eq_ref: Index lookup using unique index
32
+ * - const: Single row lookup
33
+ */
34
+ export declare function parseMySQLExplain(rows: MySQLExplainRow[], sqlQuery: {
35
+ sql: string;
36
+ params?: unknown[];
37
+ }): ExplainResult;
38
+ export {};