drizzle-cube 0.5.7 → 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 (309) hide show
  1. package/dist/adapters/express/index.cjs +1 -1
  2. package/dist/adapters/express/index.js +4 -4
  3. package/dist/adapters/fastify/index.cjs +1 -1
  4. package/dist/adapters/fastify/index.js +4 -4
  5. package/dist/adapters/{handler-Dz1F4iwf.js → handler-Cx8QYLk6.js} +18 -4
  6. package/dist/adapters/{handler-C63rJUUK.cjs → handler-CzbCuS6_.cjs} +4 -4
  7. package/dist/adapters/hono/index.cjs +1 -1
  8. package/dist/adapters/hono/index.js +7 -7
  9. package/dist/adapters/{locale-gU_d1Wja.js → locale-BPB7flIG.js} +1 -1
  10. package/dist/adapters/{locale-CTNwPVZI.cjs → locale-tIMrNcCr.cjs} +1 -1
  11. package/dist/adapters/mcp-tools.cjs +1 -1
  12. package/dist/adapters/mcp-tools.js +2 -2
  13. package/dist/adapters/mcp-transport-C2QzXm6h.cjs +40 -0
  14. package/dist/adapters/mcp-transport-D0B3S1tB.js +579 -0
  15. package/dist/adapters/nextjs/index.cjs +1 -1
  16. package/dist/adapters/nextjs/index.js +4 -4
  17. package/dist/{server/openai-y7GhJNdn.js → adapters/openai-B5jEiqiB.js} +776 -719
  18. package/dist/{server/openai-DiVskd89.js → adapters/openai-BZdAA7Ji.js} +1 -1
  19. package/dist/adapters/openai-D0musiYP.cjs +17 -0
  20. package/dist/adapters/{openai-6wrBvAnv.cjs → openai-D_U4V0kT.cjs} +1 -1
  21. package/dist/adapters/{utils-DosuoabY.js → utils-D9JPLmfl.js} +16 -4
  22. package/dist/adapters/utils-KV37IBIv.cjs +128 -0
  23. package/dist/adapters/utils.cjs +1 -1
  24. package/dist/adapters/utils.js +1 -1
  25. package/dist/client/charts/ChartLoader.d.ts +1 -1
  26. package/dist/client/charts.js +12 -12
  27. package/dist/client/chunks/{DashboardEditModal-6KRE36mm.js → DashboardEditModal-CjCIAT-J.js} +1258 -1050
  28. package/dist/client/chunks/DashboardEditModal-CjCIAT-J.js.map +1 -0
  29. package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js → RetentionCombinedChart-BPkfcTa8.js} +3 -3
  30. package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js.map → RetentionCombinedChart-BPkfcTa8.js.map} +1 -1
  31. package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js → RetentionHeatmap-DGzLzr7h.js} +2 -2
  32. package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js.map → RetentionHeatmap-DGzLzr7h.js.map} +1 -1
  33. package/dist/client/chunks/{analysis-builder-zd48FVJO.js → analysis-builder-MuMIzoRq.js} +8 -8
  34. package/dist/client/chunks/{analysis-builder-zd48FVJO.js.map → analysis-builder-MuMIzoRq.js.map} +1 -1
  35. package/dist/client/chunks/{analysis-builder-shared-x576-O5p.js → analysis-builder-shared-CYVwSPqt.js} +21 -21
  36. package/dist/client/chunks/{analysis-builder-shared-x576-O5p.js.map → analysis-builder-shared-CYVwSPqt.js.map} +1 -1
  37. package/dist/client/chunks/{chart-activity-grid-CiHrLH6Y.js → chart-activity-grid-DmruKPab.js} +9 -4
  38. package/dist/client/chunks/{chart-activity-grid-CiHrLH6Y.js.map → chart-activity-grid-DmruKPab.js.map} +1 -1
  39. package/dist/client/chunks/{chart-area-CXFK-Grv.js → chart-area-DHCPM4Em.js} +2 -2
  40. package/dist/client/chunks/{chart-area-CXFK-Grv.js.map → chart-area-DHCPM4Em.js.map} +1 -1
  41. package/dist/client/chunks/{chart-bar-DKXfLoGG.js → chart-bar-KddciGDv.js} +3 -3
  42. package/dist/client/chunks/{chart-bar-DKXfLoGG.js.map → chart-bar-KddciGDv.js.map} +1 -1
  43. package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js → chart-box-plot-DYKfyOI8.js} +2 -2
  44. package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js.map → chart-box-plot-DYKfyOI8.js.map} +1 -1
  45. package/dist/client/chunks/{chart-bubble-DGkTQlxM.js → chart-bubble-CfqiB538.js} +2 -2
  46. package/dist/client/chunks/{chart-bubble-DGkTQlxM.js.map → chart-bubble-CfqiB538.js.map} +1 -1
  47. package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js → chart-candlestick-Dwc92Mrj.js} +2 -2
  48. package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js.map → chart-candlestick-Dwc92Mrj.js.map} +1 -1
  49. package/dist/client/chunks/{chart-data-table-Cm5jrpaw.js → chart-data-table-BO4sXsim.js} +27 -27
  50. package/dist/client/chunks/{chart-data-table-Cm5jrpaw.js.map → chart-data-table-BO4sXsim.js.map} +1 -1
  51. package/dist/client/chunks/{chart-funnel-Eke8IPtG.js → chart-funnel-DnWRsmnS.js} +2 -2
  52. package/dist/client/chunks/{chart-funnel-Eke8IPtG.js.map → chart-funnel-DnWRsmnS.js.map} +1 -1
  53. package/dist/client/chunks/{chart-gauge-DeRZNsyl.js → chart-gauge-CgMeqeGb.js} +2 -2
  54. package/dist/client/chunks/{chart-gauge-DeRZNsyl.js.map → chart-gauge-CgMeqeGb.js.map} +1 -1
  55. package/dist/client/chunks/{chart-heat-map-C86thSJ4.js → chart-heat-map-DcGm9SWK.js} +2 -2
  56. package/dist/client/chunks/{chart-heat-map-C86thSJ4.js.map → chart-heat-map-DcGm9SWK.js.map} +1 -1
  57. package/dist/client/chunks/{chart-kpi-delta-CxOYD2f1.js → chart-kpi-delta-C2wKPqCb.js} +3 -3
  58. package/dist/client/chunks/{chart-kpi-delta-CxOYD2f1.js.map → chart-kpi-delta-C2wKPqCb.js.map} +1 -1
  59. package/dist/client/chunks/{chart-kpi-number-C6gWz-x4.js → chart-kpi-number-gWYF44ol.js} +5 -5
  60. package/dist/client/chunks/{chart-kpi-number-C6gWz-x4.js.map → chart-kpi-number-gWYF44ol.js.map} +1 -1
  61. package/dist/client/chunks/{chart-kpi-text-dDONrhS-.js → chart-kpi-text-DIYtJtk4.js} +3 -3
  62. package/dist/client/chunks/{chart-kpi-text-dDONrhS-.js.map → chart-kpi-text-DIYtJtk4.js.map} +1 -1
  63. package/dist/client/chunks/{chart-line-r4iWevKZ.js → chart-line-9BEGN5Ti.js} +3 -3
  64. package/dist/client/chunks/{chart-line-r4iWevKZ.js.map → chart-line-9BEGN5Ti.js.map} +1 -1
  65. package/dist/client/chunks/{chart-markdown-BPW-EAm9.js → chart-markdown-dgUetjyM.js} +1359 -1240
  66. package/dist/client/chunks/chart-markdown-dgUetjyM.js.map +1 -0
  67. package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js → chart-measure-profile-ClfpLs4q.js} +3 -3
  68. package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js.map → chart-measure-profile-ClfpLs4q.js.map} +1 -1
  69. package/dist/client/chunks/{chart-pie-yqH2YVEI.js → chart-pie-BjAIhyOi.js} +3 -3
  70. package/dist/client/chunks/{chart-pie-yqH2YVEI.js.map → chart-pie-BjAIhyOi.js.map} +1 -1
  71. package/dist/client/chunks/{chart-radar-B-_3v-rE.js → chart-radar-Dgkcl2bN.js} +3 -3
  72. package/dist/client/chunks/{chart-radar-B-_3v-rE.js.map → chart-radar-Dgkcl2bN.js.map} +1 -1
  73. package/dist/client/chunks/{chart-radial-bar-C0EgzfAF.js → chart-radial-bar-DdWJjAhK.js} +3 -3
  74. package/dist/client/chunks/{chart-radial-bar-C0EgzfAF.js.map → chart-radial-bar-DdWJjAhK.js.map} +1 -1
  75. package/dist/client/chunks/{chart-sankey-CFzjGvZX.js → chart-sankey-M3XpO_ah.js} +2 -2
  76. package/dist/client/chunks/{chart-sankey-CFzjGvZX.js.map → chart-sankey-M3XpO_ah.js.map} +1 -1
  77. package/dist/client/chunks/{chart-scatter-DZPirzwX.js → chart-scatter-DaHYP_OL.js} +3 -3
  78. package/dist/client/chunks/{chart-scatter-DZPirzwX.js.map → chart-scatter-DaHYP_OL.js.map} +1 -1
  79. package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js → chart-sunburst-A_u6lqlS.js} +3 -3
  80. package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js.map → chart-sunburst-A_u6lqlS.js.map} +1 -1
  81. package/dist/client/chunks/{chart-tree-map-Bi4axCvh.js → chart-tree-map-uiwUU4nb.js} +3 -3
  82. package/dist/client/chunks/{chart-tree-map-Bi4axCvh.js.map → chart-tree-map-uiwUU4nb.js.map} +1 -1
  83. package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js → chart-waterfall-BuhMoagf.js} +3 -3
  84. package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js.map → chart-waterfall-BuhMoagf.js.map} +1 -1
  85. package/dist/client/chunks/{charts-core-CrBDYN6N.js → charts-core-jRtb0S2M.js} +2 -2
  86. package/dist/client/chunks/{charts-core-CrBDYN6N.js.map → charts-core-jRtb0S2M.js.map} +1 -1
  87. package/dist/client/chunks/{core-DsAWNRRv.js → core-D7vPfUIe.js} +2 -2
  88. package/dist/client/chunks/{core-DsAWNRRv.js.map → core-D7vPfUIe.js.map} +1 -1
  89. package/dist/client/chunks/{nl-NL-oyr2wENY.js → nl-NL-CpVs7ox3.js} +7 -2
  90. package/dist/client/chunks/{nl-NL-oyr2wENY.js.map → nl-NL-CpVs7ox3.js.map} +1 -1
  91. package/dist/client/chunks/{schema-visualization-BszcrmZX.js → schema-visualization-DE09kQE3.js} +3 -3
  92. package/dist/client/chunks/{schema-visualization-BszcrmZX.js.map → schema-visualization-DE09kQE3.js.map} +1 -1
  93. package/dist/client/chunks/{useDirtyStateTracking-B5wCDJSj.js → useDirtyStateTracking-CoeQbprt.js} +4 -4
  94. package/dist/client/chunks/{useDirtyStateTracking-B5wCDJSj.js.map → useDirtyStateTracking-CoeQbprt.js.map} +1 -1
  95. package/dist/client/chunks/{useExplainAI-CCeCYzDm.js → useExplainAI-DlnXWdmz.js} +4 -4
  96. package/dist/client/chunks/{useExplainAI-CCeCYzDm.js.map → useExplainAI-DlnXWdmz.js.map} +1 -1
  97. package/dist/client/chunks/{utils-kqa-JIMg.js → utils-CTKNaXS8.js} +3 -3
  98. package/dist/client/chunks/{utils-kqa-JIMg.js.map → utils-CTKNaXS8.js.map} +1 -1
  99. package/dist/client/chunks/{vendor-0hJNlZXQ.js → vendor-CPIYyeuD.js} +2 -2
  100. package/dist/client/chunks/{vendor-0hJNlZXQ.js.map → vendor-CPIYyeuD.js.map} +1 -1
  101. package/dist/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +1 -1
  102. package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +1 -1
  103. package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +1 -1
  104. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +1 -1
  105. package/dist/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +1 -1
  106. package/dist/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +1 -1
  107. package/dist/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +1 -1
  108. package/dist/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +1 -1
  109. package/dist/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +2 -1
  110. package/dist/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +1 -1
  111. package/dist/client/components/AnalysisBuilder/FieldSearchItem.d.ts +1 -1
  112. package/dist/client/components/AnalysisBuilder/FieldSearchModal.d.ts +1 -1
  113. package/dist/client/components/AnalysisBuilder/FilterConfigModal.d.ts +2 -1
  114. package/dist/client/components/AnalysisBuilder/LimitSection.d.ts +1 -1
  115. package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +1 -1
  116. package/dist/client/components/AnalyticsDashboard.d.ts +1 -1
  117. package/dist/client/components/AnalyticsPage.d.ts +1 -1
  118. package/dist/client/components/ChartErrorBoundary.d.ts +1 -1
  119. package/dist/client/components/ChartTypeSelector.d.ts +1 -1
  120. package/dist/client/components/ColorPaletteSelector.d.ts +1 -1
  121. package/dist/client/components/DashboardEditModal.d.ts +2 -1
  122. package/dist/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +1 -1
  123. package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +1 -1
  124. package/dist/client/components/DashboardGrid.d.ts +1 -1
  125. package/dist/client/components/DashboardThumbnailPlaceholder.d.ts +1 -1
  126. package/dist/client/components/DataBrowser/DataBrowserSidebar.d.ts +1 -1
  127. package/dist/client/components/DataBrowser/DataBrowserToolbar.d.ts +1 -1
  128. package/dist/client/components/DataBrowser/index.d.ts +1 -1
  129. package/dist/client/components/DataHistogram.d.ts +1 -1
  130. package/dist/client/components/DebugModal.d.ts +1 -1
  131. package/dist/client/components/DrillBreadcrumb.d.ts +2 -1
  132. package/dist/client/components/LoadingIndicator.d.ts +1 -1
  133. package/dist/client/components/MobileStackedLayout.d.ts +1 -1
  134. package/dist/client/components/PortletAnalysisModal.d.ts +1 -1
  135. package/dist/client/components/PortletContainer.d.ts +1 -1
  136. package/dist/client/components/PortletFilterConfigModal.d.ts +6 -4
  137. package/dist/client/components/RowManagedLayout.d.ts +1 -1
  138. package/dist/client/components/ScaledGridWrapper.d.ts +1 -1
  139. package/dist/client/components/SchemaVisualization/CubeNode.d.ts +1 -1
  140. package/dist/client/components/SchemaVisualization/FieldDetailPanel.d.ts +1 -1
  141. package/dist/client/components/SchemaVisualization/RelationshipEdge.d.ts +1 -1
  142. package/dist/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +1 -1
  143. package/dist/client/components/SchemaVisualization/index.d.ts +1 -1
  144. package/dist/client/components/TextPortletModal.d.ts +1 -1
  145. package/dist/client/components/charts/AxisFormatControls.d.ts +2 -2
  146. package/dist/client/components/charts/ChartContainer.d.ts +1 -1
  147. package/dist/client/components/charts/ChartLegend.d.ts +1 -1
  148. package/dist/client/components/charts/ChartTooltip.d.ts +1 -1
  149. package/dist/client/components/charts/MissingDependencyFallback.d.ts +1 -1
  150. package/dist/client/components/dashboard/DashboardContext.d.ts +2 -2
  151. package/dist/client/components/dashboard/DashboardCoordinator.d.ts +1 -1
  152. package/dist/client/components/dashboard/DashboardFilterBar.d.ts +1 -1
  153. package/dist/client/components/dashboard/DashboardGridSurface.d.ts +1 -1
  154. package/dist/client/components/dashboard/DashboardModals.d.ts +1 -1
  155. package/dist/client/components/dashboard/DashboardProvider.d.ts +1 -1
  156. package/dist/client/components/dashboard/DashboardToolbar.d.ts +1 -1
  157. package/dist/client/components/dashboard/dashboardGridUtils.d.ts +1 -1
  158. package/dist/client/components.js +2 -2
  159. package/dist/client/hooks/dashboard/useDashboardController.d.ts +2 -2
  160. package/dist/client/hooks/useDashboardHook.d.ts +2 -2
  161. package/dist/client/hooks.js +3 -3
  162. package/dist/client/icons.d.ts +1 -1
  163. package/dist/client/icons.js +1 -1
  164. package/dist/client/index.js +15 -15
  165. package/dist/client/providers/CubeApiProvider.d.ts +1 -1
  166. package/dist/client/providers/CubeFeaturesProvider.d.ts +1 -1
  167. package/dist/client/providers/CubeMetaProvider.d.ts +1 -1
  168. package/dist/client/providers/CubeProvider.d.ts +1 -1
  169. package/dist/client/providers/I18nProvider.d.ts +1 -1
  170. package/dist/client/providers.js +1 -1
  171. package/dist/client/schema.js +1 -1
  172. package/dist/client/stores/analysisBuilderStore.d.ts +1 -1
  173. package/dist/client/stores/dashboardStore.d.ts +1 -1
  174. package/dist/client/stores/dataBrowserStore.d.ts +1 -1
  175. package/dist/client/stores/notebookStore.d.ts +1 -1
  176. package/dist/client/styles.css +1 -1
  177. package/dist/client/types/drill.d.ts +1 -1
  178. package/dist/client/types.d.ts +7 -2
  179. package/dist/client/utils/drillQueryBuilder.d.ts +2 -2
  180. package/dist/client/utils/filterUtils.d.ts +33 -5
  181. package/dist/client/utils/joinReachability.d.ts +27 -0
  182. package/dist/client/utils.js +5 -5
  183. package/dist/client-bundle-stats.html +1 -1
  184. package/dist/mcp-app/mcp-app.html +4 -4
  185. package/dist/server/index.cjs +6 -6
  186. package/dist/server/index.d.ts +2 -5050
  187. package/dist/server/index.js +33 -7
  188. package/dist/{adapters/openai-y7GhJNdn.js → server/openai-B5jEiqiB.js} +776 -719
  189. package/dist/{adapters/openai-DiVskd89.js → server/openai-BZdAA7Ji.js} +1 -1
  190. package/dist/server/openai-D0musiYP.cjs +17 -0
  191. package/dist/server/{openai-6wrBvAnv.cjs → openai-D_U4V0kT.cjs} +1 -1
  192. package/dist/server/server/adapters/base-adapter.d.ts +287 -0
  193. package/dist/server/server/adapters/databend-adapter.d.ts +114 -0
  194. package/dist/server/server/adapters/duckdb-adapter.d.ts +122 -0
  195. package/dist/server/server/adapters/mysql-adapter.d.ts +122 -0
  196. package/dist/server/server/adapters/postgres-adapter.d.ts +119 -0
  197. package/dist/server/server/adapters/singlestore-adapter.d.ts +4 -0
  198. package/dist/server/server/adapters/snowflake-adapter.d.ts +116 -0
  199. package/dist/server/server/adapters/sqlite-adapter.d.ts +140 -0
  200. package/dist/server/server/agent/chart-validation.d.ts +27 -0
  201. package/dist/server/server/agent/handler.d.ts +25 -0
  202. package/dist/server/server/agent/index.d.ts +11 -0
  203. package/dist/server/server/agent/providers/anthropic.d.ts +24 -0
  204. package/dist/server/server/agent/providers/factory.d.ts +12 -0
  205. package/dist/server/server/agent/providers/google.d.ts +23 -0
  206. package/dist/server/server/agent/providers/index.d.ts +6 -0
  207. package/dist/server/server/agent/providers/openai.d.ts +26 -0
  208. package/dist/server/server/agent/providers/types.d.ts +95 -0
  209. package/dist/server/server/agent/system-prompt.d.ts +5 -0
  210. package/dist/server/server/agent/tools.d.ts +28 -0
  211. package/dist/server/server/agent/types.d.ts +192 -0
  212. package/dist/server/server/ai/discovery.d.ts +62 -0
  213. package/dist/server/server/ai/index.d.ts +10 -0
  214. package/dist/server/server/ai/mcp-prompts.d.ts +83 -0
  215. package/dist/server/server/ai/query-schema.d.ts +258 -0
  216. package/dist/server/server/ai/schemas.d.ts +63 -0
  217. package/dist/server/server/ai/suggestion.d.ts +19 -0
  218. package/dist/server/server/ai/validation.d.ts +34 -0
  219. package/dist/server/server/builders/comparison-query-builder.d.ts +70 -0
  220. package/dist/server/server/builders/cte-builder.d.ts +62 -0
  221. package/dist/server/server/builders/date-time-builder.d.ts +29 -0
  222. package/dist/server/server/builders/filter-builder.d.ts +23 -0
  223. package/dist/server/server/builders/flow-query-builder.d.ts +109 -0
  224. package/dist/server/server/builders/funnel-query-builder.d.ts +134 -0
  225. package/dist/server/server/builders/group-by-builder.d.ts +27 -0
  226. package/dist/server/server/builders/index.d.ts +13 -0
  227. package/dist/server/server/builders/measure-builder.d.ts +142 -0
  228. package/dist/server/server/builders/retention-query-builder.d.ts +100 -0
  229. package/dist/server/server/cache-providers/index.d.ts +5 -0
  230. package/dist/server/server/cache-providers/memory.d.ts +105 -0
  231. package/dist/server/server/cache-utils.d.ts +65 -0
  232. package/dist/server/server/compiler.d.ts +218 -0
  233. package/dist/server/server/cube-utils.d.ts +133 -0
  234. package/dist/server/server/database-utils.d.ts +18 -0
  235. package/dist/server/server/executor.d.ts +183 -0
  236. package/dist/server/server/executors/base-executor.d.ts +16 -0
  237. package/dist/server/server/executors/databend-executor.d.ts +33 -0
  238. package/dist/server/server/executors/duckdb-executor.d.ts +33 -0
  239. package/dist/server/server/executors/index.d.ts +21 -0
  240. package/dist/server/server/executors/mysql-executor.d.ts +27 -0
  241. package/dist/server/server/executors/postgres-executor.d.ts +27 -0
  242. package/dist/server/server/executors/singlestore-executor.d.ts +9 -0
  243. package/dist/server/server/executors/snowflake-executor.d.ts +33 -0
  244. package/dist/server/server/executors/sqlite-executor.d.ts +28 -0
  245. package/dist/server/server/explain/databend-parser.d.ts +16 -0
  246. package/dist/server/server/explain/duckdb-parser.d.ts +28 -0
  247. package/dist/server/server/explain/index.d.ts +9 -0
  248. package/dist/server/server/explain/mysql-parser.d.ts +38 -0
  249. package/dist/server/server/explain/postgres-parser.d.ts +18 -0
  250. package/dist/server/server/explain/snowflake-parser.d.ts +17 -0
  251. package/dist/server/server/explain/sqlite-parser.d.ts +23 -0
  252. package/dist/server/server/filter-cache.d.ts +73 -0
  253. package/dist/server/server/gap-filler.d.ts +42 -0
  254. package/dist/server/server/index.d.ts +36 -0
  255. package/dist/server/server/logical-plan/index.d.ts +14 -0
  256. package/dist/server/server/logical-plan/logical-plan-builder.d.ts +58 -0
  257. package/dist/server/server/logical-plan/logical-planner.d.ts +232 -0
  258. package/dist/server/server/logical-plan/optimiser.d.ts +32 -0
  259. package/dist/server/server/logical-plan/types.d.ts +191 -0
  260. package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
  261. package/dist/server/server/physical-plan/drizzle-sql-builder.d.ts +107 -0
  262. package/dist/server/server/physical-plan/index.d.ts +2 -0
  263. package/dist/server/server/physical-plan/processors/cte-processor.d.ts +6 -0
  264. package/dist/server/server/physical-plan/processors/index.d.ts +6 -0
  265. package/dist/server/server/physical-plan/processors/joins-processor.d.ts +6 -0
  266. package/dist/server/server/physical-plan/processors/predicates-processor.d.ts +6 -0
  267. package/dist/server/server/physical-plan/processors/selection-processor.d.ts +6 -0
  268. package/dist/server/server/physical-plan/processors/shared.d.ts +33 -0
  269. package/dist/server/server/physical-plan/processors/window-processor.d.ts +6 -0
  270. package/dist/server/server/prompts/explain-analysis-prompt.d.ts +47 -0
  271. package/dist/server/server/prompts/index.d.ts +27 -0
  272. package/dist/server/server/prompts/single-step-prompt.d.ts +31 -0
  273. package/dist/server/server/prompts/step0-validation-prompt.d.ts +39 -0
  274. package/dist/server/server/prompts/step1-shape-prompt.d.ts +29 -0
  275. package/dist/server/server/prompts/step2-complete-prompt.d.ts +19 -0
  276. package/dist/server/server/prompts/types.d.ts +37 -0
  277. package/dist/server/server/resolvers/calculated-measure-resolver.d.ts +93 -0
  278. package/dist/server/server/resolvers/index.d.ts +6 -0
  279. package/dist/server/server/resolvers/join-path-resolver.d.ts +152 -0
  280. package/dist/server/server/template-substitution.d.ts +57 -0
  281. package/dist/server/server/types/analysis.d.ts +189 -0
  282. package/dist/server/server/types/cache.d.ts +132 -0
  283. package/dist/server/server/types/core.d.ts +164 -0
  284. package/dist/server/server/types/cube.d.ts +530 -0
  285. package/dist/server/server/types/executor.d.ts +156 -0
  286. package/dist/server/server/types/flow.d.ts +143 -0
  287. package/dist/server/server/types/funnel.d.ts +118 -0
  288. package/dist/server/server/types/index.d.ts +11 -0
  289. package/dist/server/server/types/metadata.d.ts +113 -0
  290. package/dist/server/server/types/query.d.ts +153 -0
  291. package/dist/server/server/types/retention.d.ts +141 -0
  292. package/dist/server/server/types/utils.d.ts +11 -0
  293. package/package.json +5 -5
  294. package/dist/adapters/mcp-transport-C4J4SAcn.cjs +0 -40
  295. package/dist/adapters/mcp-transport-CVUiifEc.js +0 -579
  296. package/dist/adapters/openai-BDwb2u7y.cjs +0 -17
  297. package/dist/adapters/utils-CkEkU8Bo.cjs +0 -128
  298. package/dist/client/chunks/DashboardEditModal-6KRE36mm.js.map +0 -1
  299. package/dist/client/chunks/chart-markdown-BPW-EAm9.js.map +0 -1
  300. package/dist/server/openai-BDwb2u7y.cjs +0 -17
  301. /package/dist/adapters/{express → adapters/express}/index.d.ts +0 -0
  302. /package/dist/adapters/{fastify → adapters/fastify}/index.d.ts +0 -0
  303. /package/dist/adapters/{hono → adapters/hono}/index.d.ts +0 -0
  304. /package/dist/adapters/{locale.d.ts → adapters/locale.d.ts} +0 -0
  305. /package/dist/adapters/{mcp-tools.d.ts → adapters/mcp-tools.d.ts} +0 -0
  306. /package/dist/adapters/{mcp-transport.d.ts → adapters/mcp-transport.d.ts} +0 -0
  307. /package/dist/adapters/{nextjs → adapters/nextjs}/index.d.ts +0 -0
  308. /package/dist/adapters/{types.d.ts → adapters/types.d.ts} +0 -0
  309. /package/dist/adapters/{utils.d.ts → adapters/utils.d.ts} +0 -0
@@ -0,0 +1,142 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { Cube, QueryContext, PhysicalQueryPlan } from '../types';
3
+ import { DatabaseAdapter } from '../adapters/base-adapter';
4
+ import { ResolvedMeasures } from '../template-substitution';
5
+ export declare class MeasureBuilder {
6
+ private databaseAdapter;
7
+ constructor(databaseAdapter: DatabaseAdapter);
8
+ /**
9
+ * Build resolvedMeasures map for a set of measures
10
+ * This centralizes the logic for building both regular and calculated measures
11
+ * in dependency order, avoiding duplication across main queries and CTEs
12
+ *
13
+ * @param measureNames - Array of measure names to resolve (e.g., ["Employees.count", "Employees.activePercentage"])
14
+ * @param cubeMap - Map of all cubes involved in the query
15
+ * @param context - Query context with database and security context
16
+ * @param customMeasureBuilder - Optional function to override how individual measures are built
17
+ * @returns Map of measure names to SQL builder functions
18
+ */
19
+ buildResolvedMeasures(measureNames: string[], cubeMap: Map<string, Cube>, context: QueryContext, customMeasureBuilder?: (measureName: string, measure: any, cube: Cube) => SQL): ResolvedMeasures;
20
+ /**
21
+ * Build calculated measure expression by substituting {member} references
22
+ * with resolved SQL expressions
23
+ */
24
+ buildCalculatedMeasure(measure: any, cube: Cube, allCubes: Map<string, Cube>, resolvedMeasures: ResolvedMeasures, context: QueryContext): SQL;
25
+ /**
26
+ * Build resolved measures map for a calculated measure from CTE columns
27
+ * This handles re-aggregating pre-aggregated CTE columns for calculated measures
28
+ *
29
+ * IMPORTANT: For calculated measures in CTEs, we cannot sum/avg pre-computed ratios.
30
+ * We must recalculate from the base measures that were pre-aggregated in the CTE.
31
+ *
32
+ * @param measure - The calculated measure to build
33
+ * @param cube - The cube containing this measure
34
+ * @param cteInfo - CTE metadata (alias, measures, cube reference)
35
+ * @param allCubes - Map of all cubes in the query
36
+ * @param context - Query context
37
+ * @returns SQL expression for the calculated measure using CTE column references
38
+ */
39
+ buildCTECalculatedMeasure(measure: any, cube: Cube, cteInfo: {
40
+ cteAlias: string;
41
+ measures: string[];
42
+ cube: Cube;
43
+ }, allCubes: Map<string, Cube>, context: QueryContext): SQL;
44
+ /**
45
+ * Build measure expression for HAVING clause, handling CTE references correctly
46
+ */
47
+ buildHavingMeasureExpression(cubeName: string, fieldKey: string, measure: any, context: QueryContext, queryPlan?: PhysicalQueryPlan): SQL;
48
+ /**
49
+ * Build measure expression with aggregation and filters
50
+ * Note: This should NOT be called for calculated measures
51
+ *
52
+ * @param measure - The measure definition
53
+ * @param context - Query context with security context and database info
54
+ * @param cube - Optional cube reference for resolving dimension references (window functions)
55
+ */
56
+ buildMeasureExpression(measure: any, context: QueryContext, cube?: Cube): SQL;
57
+ /**
58
+ * List of measure types that are window functions
59
+ * Window functions require special handling in CTEs:
60
+ * - No GROUP BY in the CTE
61
+ * - No re-aggregation in outer query
62
+ * - Return individual rows, not grouped results
63
+ */
64
+ static WINDOW_FUNCTION_TYPES: readonly ["lag", "lead", "rank", "denseRank", "rowNumber", "ntile", "firstValue", "lastValue", "movingAvg", "movingSum"];
65
+ /**
66
+ * Check if a measure type is a window function
67
+ * @param measureType - The measure type string
68
+ * @returns true if this is a window function type
69
+ */
70
+ static isWindowFunction(measureType: string): boolean;
71
+ /**
72
+ * Categorize measures into window functions and regular aggregates
73
+ * Used by query planner to create separate CTEs for each category
74
+ *
75
+ * @param measureNames - Array of measure names (e.g., ["Productivity.rank", "Productivity.totalLines"])
76
+ * @param cubeMap - Map of cubes to look up measure definitions
77
+ * @returns Object with windowMeasures and aggregateMeasures arrays
78
+ */
79
+ static categorizeMeasures(measureNames: string[], cubeMap: Map<string, Cube>): {
80
+ windowMeasures: string[];
81
+ aggregateMeasures: string[];
82
+ };
83
+ /**
84
+ * Check if a query contains any window function measures
85
+ * @param measureNames - Array of measure names
86
+ * @param cubeMap - Map of cubes
87
+ * @returns true if any measure is a window function
88
+ */
89
+ static hasWindowFunctions(measureNames: string[], cubeMap: Map<string, Cube>): boolean;
90
+ /**
91
+ * Check if a measure is a post-aggregation window function.
92
+ * Post-aggregation windows have a `measure` reference in their windowConfig,
93
+ * indicating they should operate on aggregated data rather than raw rows.
94
+ *
95
+ * @param measure - The measure definition
96
+ * @returns true if this is a post-aggregation window function
97
+ */
98
+ static isPostAggregationWindow(measure: any): boolean;
99
+ /**
100
+ * Get the base measure reference for a post-aggregation window function.
101
+ * Resolves simple names (e.g., 'totalRevenue') to fully qualified names ('Sales.totalRevenue').
102
+ *
103
+ * @param measure - The measure definition
104
+ * @param cubeName - The name of the cube containing this measure
105
+ * @returns Fully qualified base measure name, or null if not a post-agg window
106
+ */
107
+ static getWindowBaseMeasure(measure: any, cubeName: string): string | null;
108
+ /**
109
+ * Get the default operation for a window function type.
110
+ * - lag/lead default to 'difference' (compare current vs previous/next)
111
+ * - rank/rowNumber/ntile/firstValue/lastValue default to 'raw'
112
+ * - movingAvg/movingSum default to 'raw'
113
+ *
114
+ * @param windowType - The window function type
115
+ * @returns Default operation for the window type
116
+ */
117
+ static getDefaultWindowOperation(windowType: string): 'raw' | 'difference' | 'ratio' | 'percentChange';
118
+ /**
119
+ * Categorize measures for post-aggregation window function handling.
120
+ * Separates measures into:
121
+ * - aggregateMeasures: Regular aggregates (count, sum, avg, etc.)
122
+ * - postAggWindowMeasures: Window functions that reference a base measure
123
+ * - requiredBaseMeasures: Base measures needed by window functions (auto-added to query)
124
+ *
125
+ * @param measureNames - Array of measure names from the query
126
+ * @param cubeMap - Map of cubes to look up measure definitions
127
+ * @returns Categorized measures with base measure dependencies
128
+ */
129
+ static categorizeForPostAggregation(measureNames: string[], cubeMap: Map<string, Cube>): {
130
+ aggregateMeasures: string[];
131
+ postAggWindowMeasures: string[];
132
+ requiredBaseMeasures: Set<string>;
133
+ };
134
+ /**
135
+ * Check if any measures in the query are post-aggregation window functions.
136
+ *
137
+ * @param measureNames - Array of measure names
138
+ * @param cubeMap - Map of cubes
139
+ * @returns true if any measure is a post-aggregation window function
140
+ */
141
+ static hasPostAggregationWindows(measureNames: string[], cubeMap: Map<string, Cube>): boolean;
142
+ }
@@ -0,0 +1,100 @@
1
+ import { DatabaseAdapter } from '../adapters/base-adapter';
2
+ import { RetentionQueryConfig, RetentionResultRow } from '../types/retention';
3
+ import { Cube, QueryContext, SemanticQuery } from '../types';
4
+ export declare class RetentionQueryBuilder {
5
+ private databaseAdapter;
6
+ private filterBuilder;
7
+ private dateTimeBuilder;
8
+ constructor(databaseAdapter: DatabaseAdapter);
9
+ /**
10
+ * Check if query contains retention configuration
11
+ */
12
+ hasRetention(query: SemanticQuery): boolean;
13
+ /**
14
+ * Validate retention configuration against registered cubes
15
+ */
16
+ validateConfig(config: RetentionQueryConfig, cubes: Map<string, Cube>): {
17
+ isValid: boolean;
18
+ errors: string[];
19
+ };
20
+ /**
21
+ * Build the retention SQL query using CTEs
22
+ *
23
+ * CTE Structure (Simplified Mixpanel-style):
24
+ * 1. cohort_base - Users entering the cohort (first event in date range)
25
+ * - When breakdown is specified, includes breakdown_value
26
+ * 2. activity_periods - All activity with period_number relative to cohort entry
27
+ * 3. cohort_sizes - Aggregate cohort sizes (per breakdown value if applicable)
28
+ * 4. retention_counts - Retained users per period (and breakdown value)
29
+ * 5. Final SELECT - Join with retention rate calculation
30
+ */
31
+ buildRetentionQuery(config: RetentionQueryConfig, cubes: Map<string, Cube>, context: QueryContext): any;
32
+ /**
33
+ * Transform raw SQL results to RetentionResultRow[]
34
+ */
35
+ transformResult(rawResult: unknown[], config: RetentionQueryConfig): RetentionResultRow[];
36
+ /**
37
+ * Resolve retention configuration with SQL expressions
38
+ * Same cube/dimension used for both cohort entry and activity detection
39
+ */
40
+ private resolveConfig;
41
+ /**
42
+ * Resolve binding key expression for a cube
43
+ */
44
+ private resolveBindingKey;
45
+ /**
46
+ * Build filter conditions from config filters
47
+ */
48
+ private buildFilterConditions;
49
+ /**
50
+ * Build a single filter condition
51
+ */
52
+ private buildSingleFilterCondition;
53
+ /**
54
+ * Build cohort_base CTE
55
+ * Groups users by their first activity (cohort entry) within the date range.
56
+ * When breakdowns are specified, includes breakdown values for each dimension.
57
+ */
58
+ private buildCohortBaseCTE;
59
+ /**
60
+ * Build date range condition for WHERE clause
61
+ * Filters records to those within the specified date range
62
+ */
63
+ private buildDateRangeCondition;
64
+ /**
65
+ * Build date range condition for HAVING clause
66
+ * Used to filter aggregated cohort_period values
67
+ */
68
+ private buildDateRangeHavingCondition;
69
+ /**
70
+ * Build activity_periods CTE
71
+ * Joins activity events to cohort_base and calculates period_number.
72
+ * Includes breakdown values from cohort_base when breakdowns are specified.
73
+ */
74
+ private buildActivityPeriodsCTE;
75
+ /**
76
+ * Build cohort_sizes CTE
77
+ * Aggregates the size of the cohort (or per breakdown combination if specified).
78
+ */
79
+ private buildCohortSizesCTE;
80
+ /**
81
+ * Build retention_counts CTE
82
+ * Aggregates retained users per period (and breakdown combination if specified).
83
+ */
84
+ private buildRetentionCountsCTE;
85
+ /**
86
+ * Build rolling retention counts query
87
+ * For rolling retention, a user is retained in period N if they were active
88
+ * in period N or any later period
89
+ */
90
+ private buildRollingRetentionCountsQuery;
91
+ /**
92
+ * Build period number expression using database-specific DATE_DIFF
93
+ */
94
+ private buildPeriodNumberExpression;
95
+ /**
96
+ * Extract dimension name from a dimension reference
97
+ * Handles both 'CubeName.dimName' and just 'dimName' formats
98
+ */
99
+ private extractDimensionName;
100
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Cache providers for Drizzle Cube
3
+ */
4
+ export { MemoryCacheProvider } from './memory';
5
+ export type { MemoryCacheProviderOptions } from './memory';
@@ -0,0 +1,105 @@
1
+ import { CacheProvider, CacheGetResult } from '../types';
2
+ /**
3
+ * Options for MemoryCacheProvider
4
+ */
5
+ export interface MemoryCacheProviderOptions {
6
+ /**
7
+ * Default TTL in milliseconds
8
+ * @default 300000 (5 minutes)
9
+ */
10
+ defaultTtlMs?: number;
11
+ /**
12
+ * Maximum number of entries in the cache
13
+ * When exceeded, oldest entries are evicted (LRU)
14
+ * @default undefined (unlimited)
15
+ */
16
+ maxEntries?: number;
17
+ /**
18
+ * Interval in milliseconds to run automatic cleanup
19
+ * Set to 0 to disable automatic cleanup
20
+ * @default 60000 (1 minute)
21
+ */
22
+ cleanupIntervalMs?: number;
23
+ }
24
+ /**
25
+ * Simple in-memory cache provider implementing the CacheProvider interface
26
+ *
27
+ * Features:
28
+ * - TTL support with automatic expiration on read
29
+ * - Optional automatic cleanup of expired entries
30
+ * - Optional max entries limit with LRU eviction
31
+ * - Full metadata support for TTL tracking
32
+ *
33
+ * Limitations:
34
+ * - Not shared across processes/instances
35
+ * - Data lost on process restart
36
+ * - Not suitable for distributed deployments
37
+ */
38
+ export declare class MemoryCacheProvider implements CacheProvider {
39
+ private cache;
40
+ private defaultTtlMs;
41
+ private maxEntries?;
42
+ private cleanupIntervalId?;
43
+ private accessOrder;
44
+ constructor(options?: MemoryCacheProviderOptions);
45
+ /**
46
+ * Get a cached value by key
47
+ * Returns null if not found or expired
48
+ * Automatically removes expired entries on access
49
+ */
50
+ get<T>(key: string): Promise<CacheGetResult<T> | null>;
51
+ /**
52
+ * Set a value in the cache
53
+ * Respects maxEntries limit with LRU eviction
54
+ */
55
+ set<T>(key: string, value: T, ttlMs?: number): Promise<void>;
56
+ /**
57
+ * Delete a specific key from the cache
58
+ * Returns true if key existed and was deleted
59
+ */
60
+ delete(key: string): Promise<boolean>;
61
+ /**
62
+ * Delete all keys matching a pattern
63
+ * Supports glob-style patterns with trailing '*'
64
+ * Returns number of keys deleted
65
+ */
66
+ deletePattern(pattern: string): Promise<number>;
67
+ /**
68
+ * Check if a key exists in the cache
69
+ * Returns false for expired entries
70
+ */
71
+ has(key: string): Promise<boolean>;
72
+ /**
73
+ * Stop automatic cleanup and clear the cache
74
+ * Call this when the cache provider is no longer needed
75
+ */
76
+ close(): Promise<void>;
77
+ /**
78
+ * Remove all expired entries from the cache
79
+ * Called automatically by cleanup interval
80
+ * Can also be called manually
81
+ *
82
+ * @returns Number of entries removed
83
+ */
84
+ cleanup(): number;
85
+ /**
86
+ * Get current cache size (number of entries)
87
+ * Note: May include expired entries that haven't been cleaned up yet
88
+ */
89
+ size(): number;
90
+ /**
91
+ * Clear all entries from the cache
92
+ */
93
+ clear(): void;
94
+ /**
95
+ * Get cache statistics
96
+ */
97
+ stats(): {
98
+ size: number;
99
+ maxEntries?: number;
100
+ defaultTtlMs: number;
101
+ };
102
+ private touchAccessOrder;
103
+ private removeFromAccessOrder;
104
+ private evictOldest;
105
+ }
@@ -0,0 +1,65 @@
1
+ import { SemanticQuery, SecurityContext } from './types';
2
+ /**
3
+ * Configuration for cache key generation
4
+ */
5
+ export interface CacheKeyConfig {
6
+ /** Prefix for all cache keys */
7
+ keyPrefix?: string;
8
+ /** Whether to include security context in cache key */
9
+ includeSecurityContext?: boolean;
10
+ /** Custom serializer for security context */
11
+ securityContextSerializer?: (ctx: SecurityContext) => string;
12
+ }
13
+ /**
14
+ * Generate a deterministic cache key from query and security context
15
+ *
16
+ * Key structure: {prefix}query:{queryHash}:ctx:{securityHash}
17
+ *
18
+ * Uses FNV-1a hash for:
19
+ * - Speed: ~3x faster than SHA-256
20
+ * - Simplicity: No dependencies required
21
+ * - Sufficient collision resistance for cache keys
22
+ *
23
+ * @param query - The semantic query to cache
24
+ * @param securityContext - Security context for tenant isolation
25
+ * @param config - Cache key configuration
26
+ * @returns Deterministic cache key string
27
+ */
28
+ export declare function generateCacheKey(query: SemanticQuery, securityContext: SecurityContext, config?: CacheKeyConfig): string;
29
+ /**
30
+ * Normalize query for consistent hashing
31
+ * Sorts arrays and object keys to ensure same query = same hash
32
+ *
33
+ * @param query - The semantic query to normalize
34
+ * @returns Normalized query with sorted arrays and keys
35
+ */
36
+ export declare function normalizeQuery(query: SemanticQuery): SemanticQuery;
37
+ /**
38
+ * Recursively sort object keys for deterministic serialization
39
+ *
40
+ * @param obj - Object to sort
41
+ * @returns Object with sorted keys (recursively)
42
+ */
43
+ export declare function sortObject<T>(obj: T): T;
44
+ /**
45
+ * FNV-1a hash - fast, non-cryptographic hash function
46
+ * Returns hex string for cache key readability
47
+ *
48
+ * Properties:
49
+ * - O(n) time complexity
50
+ * - Low collision rate for similar strings
51
+ * - Deterministic across runs
52
+ *
53
+ * @param str - String to hash
54
+ * @returns 8-character hex string
55
+ */
56
+ export declare function fnv1aHash(str: string): string;
57
+ /**
58
+ * Generate invalidation pattern for a cube
59
+ * Used when cube data changes and all related cache entries need clearing
60
+ *
61
+ * @param cubeName - Name of the cube to invalidate
62
+ * @param keyPrefix - Cache key prefix
63
+ * @returns Glob pattern for cache invalidation
64
+ */
65
+ export declare function getCubeInvalidationPattern(cubeName: string, keyPrefix?: string): string;
@@ -0,0 +1,218 @@
1
+ import { SemanticQuery, QueryResult, SecurityContext, DatabaseExecutor, CubeMetadata, Cube, QueryAnalysis, CacheConfig, ExplainOptions, ExplainResult, ExecutionOptions, RLSSetupFn } from './types';
2
+ export declare class SemanticLayerCompiler {
3
+ private cubes;
4
+ private metadataCache?;
5
+ private cacheConfig?;
6
+ private rlsSetup?;
7
+ private db?;
8
+ private schema?;
9
+ private engineType?;
10
+ constructor(options?: {
11
+ drizzle?: DatabaseExecutor['db'];
12
+ schema?: any;
13
+ databaseExecutor?: DatabaseExecutor;
14
+ engineType?: 'postgres' | 'mysql' | 'sqlite' | 'singlestore' | 'duckdb' | 'databend' | 'snowflake';
15
+ /** Cache configuration for query result caching */
16
+ cache?: CacheConfig;
17
+ /**
18
+ * Row-Level Security setup function.
19
+ * When provided, every query execution opens a transaction, calls this function
20
+ * to configure RLS (e.g., set JWT claims and switch roles), then runs the query.
21
+ * Dry-run/SQL generation is NOT wrapped in a transaction.
22
+ */
23
+ rlsSetup?: RLSSetupFn;
24
+ });
25
+ /**
26
+ * Set or update the database connection
27
+ */
28
+ setDatabaseExecutor(executor: DatabaseExecutor): void;
29
+ /**
30
+ * Get the database engine type for SQL formatting
31
+ */
32
+ getEngineType(): 'postgres' | 'mysql' | 'sqlite' | 'singlestore' | 'duckdb' | 'databend' | 'snowflake' | undefined;
33
+ /**
34
+ * Set Drizzle instance and schema directly
35
+ */
36
+ setDrizzle(db: DatabaseExecutor['db'], schema?: any, engineType?: 'postgres' | 'mysql' | 'sqlite' | 'singlestore' | 'duckdb' | 'databend' | 'snowflake'): void;
37
+ /**
38
+ * Check if database executor is configured
39
+ */
40
+ hasExecutor(): boolean;
41
+ /**
42
+ * Create a fresh DatabaseExecutor from stored ingredients, or throw.
43
+ */
44
+ private createDbExecutor;
45
+ /**
46
+ * Create a query executor with optional cache integration.
47
+ * Each call creates a fresh DatabaseExecutor so concurrent requests
48
+ * never share mutable state.
49
+ */
50
+ private createQueryExecutor;
51
+ /**
52
+ * Format SQL result using current engine dialect.
53
+ */
54
+ private formatSqlResult;
55
+ /**
56
+ * Register a simplified cube with dynamic query building
57
+ * Validates calculated measures during registration
58
+ */
59
+ registerCube(cube: Cube): void;
60
+ /**
61
+ * Validate that all string-based cube references in joins resolve to registered cubes.
62
+ * Call after all cubes are registered for strict startup validation.
63
+ * Throws an error listing all unresolved references.
64
+ */
65
+ validateCubeReferences(): void;
66
+ /**
67
+ * Validate calculated measures in a cube
68
+ * Checks template syntax, dependency existence, and circular dependencies
69
+ */
70
+ private validateCalculatedMeasures;
71
+ /**
72
+ * Get a cube by name
73
+ */
74
+ getCube(name: string): Cube | undefined;
75
+ /**
76
+ * Get all registered cubes
77
+ */
78
+ getAllCubes(): Cube[];
79
+ /**
80
+ * Get all cubes as a Map for multi-cube queries
81
+ */
82
+ getAllCubesMap(): Map<string, Cube>;
83
+ /**
84
+ * Unified query execution method that handles both single and multi-cube queries
85
+ * @param options.skipCache - Skip cache lookup (but still cache the fresh result)
86
+ */
87
+ execute(query: SemanticQuery, securityContext: SecurityContext, options?: ExecutionOptions): Promise<QueryResult>;
88
+ /**
89
+ * Execute a multi-cube query
90
+ * @param options.skipCache - Skip cache lookup (but still cache the fresh result)
91
+ */
92
+ executeMultiCubeQuery(query: SemanticQuery, securityContext: SecurityContext, options?: ExecutionOptions): Promise<QueryResult>;
93
+ /**
94
+ * Execute a single cube query
95
+ */
96
+ executeQuery(cubeName: string, query: SemanticQuery, securityContext: SecurityContext): Promise<QueryResult>;
97
+ /**
98
+ * Get metadata for all cubes (for API responses)
99
+ * Uses caching to improve performance for repeated requests
100
+ * Cache is invalidated when cubes are modified (registerCube, removeCube, clearCubes)
101
+ */
102
+ getMetadata(): CubeMetadata[];
103
+ /**
104
+ * Extract column name from Drizzle column reference
105
+ * Handles different column types and extracts the actual column name
106
+ */
107
+ private getColumnName;
108
+ /**
109
+ * Default time granularities for time dimensions (ordered from least to most granular)
110
+ * Used when dimension.granularities is not specified
111
+ */
112
+ private static readonly DEFAULT_TIME_GRANULARITIES;
113
+ /**
114
+ * Generate cube metadata for API responses from cubes
115
+ * Optimized version that minimizes object iterations
116
+ * Includes drill-down support: drillMembers on measures, granularities on time dimensions, hierarchies
117
+ */
118
+ private generateCubeMetadata;
119
+ /**
120
+ * Get SQL for a query without executing it (debugging)
121
+ */
122
+ generateSQL(cubeName: string, query: SemanticQuery, securityContext: SecurityContext): Promise<{
123
+ sql: string;
124
+ params?: any[];
125
+ }>;
126
+ /**
127
+ * Get SQL for a multi-cube query without executing it (debugging)
128
+ */
129
+ generateMultiCubeSQL(query: SemanticQuery, securityContext: SecurityContext): Promise<{
130
+ sql: string;
131
+ params?: any[];
132
+ }>;
133
+ /**
134
+ * Canonical dry-run SQL generation entrypoint for all query modes.
135
+ */
136
+ dryRun(query: SemanticQuery, securityContext: SecurityContext): Promise<{
137
+ sql: string;
138
+ params?: any[];
139
+ }>;
140
+ /**
141
+ * Get SQL for a funnel query without executing it (debugging)
142
+ * Returns the actual CTE-based SQL that would be executed for funnel queries
143
+ */
144
+ dryRunFunnel(query: SemanticQuery, securityContext: SecurityContext): Promise<{
145
+ sql: string;
146
+ params?: any[];
147
+ }>;
148
+ /**
149
+ * Get SQL for a flow query without executing it (debugging)
150
+ * Returns the actual CTE-based SQL that would be executed for flow queries
151
+ */
152
+ dryRunFlow(query: SemanticQuery, securityContext: SecurityContext): Promise<{
153
+ sql: string;
154
+ params?: any[];
155
+ }>;
156
+ /**
157
+ * Generate SQL for a retention query without execution (dry-run)
158
+ * Returns the CTE-based SQL that would be executed for retention analysis
159
+ */
160
+ dryRunRetention(query: SemanticQuery, securityContext: SecurityContext): Promise<{
161
+ sql: string;
162
+ params?: any[];
163
+ }>;
164
+ /**
165
+ * Execute EXPLAIN on a query to get the execution plan
166
+ * Uses the same secure path as execute/dryRun to generate SQL,
167
+ * then runs database EXPLAIN on it.
168
+ */
169
+ explainQuery(query: SemanticQuery, securityContext: SecurityContext, options?: ExplainOptions): Promise<ExplainResult>;
170
+ /**
171
+ * Check if a cube exists
172
+ */
173
+ hasCube(name: string): boolean;
174
+ /**
175
+ * Unregister a cube by name.
176
+ * Returns true if the cube existed and was removed, false if not found.
177
+ */
178
+ unregisterCube(name: string): boolean;
179
+ /**
180
+ * Remove a cube
181
+ */
182
+ removeCube(name: string): boolean;
183
+ /**
184
+ * Clear all cubes
185
+ */
186
+ clearCubes(): void;
187
+ /**
188
+ * Invalidate the metadata cache
189
+ * Called whenever cubes are modified
190
+ */
191
+ private invalidateMetadataCache;
192
+ /**
193
+ * Get cube names
194
+ */
195
+ getCubeNames(): string[];
196
+ /**
197
+ * Validate a query against registered cubes
198
+ * Ensures all referenced cubes and fields exist
199
+ */
200
+ validateQuery(query: SemanticQuery): {
201
+ isValid: boolean;
202
+ errors: string[];
203
+ };
204
+ /**
205
+ * Analyze query planning decisions for debugging and transparency
206
+ * Returns detailed metadata about how the query would be planned
207
+ * Used by the playground UI to help users understand query structure
208
+ */
209
+ analyzeQuery(query: SemanticQuery, securityContext: SecurityContext): QueryAnalysis;
210
+ }
211
+ /**
212
+ * Validate a query against a cubes map
213
+ * Standalone function that can be used by both compiler and executor
214
+ */
215
+ export declare function validateQueryAgainstCubes(cubes: Map<string, Cube>, query: SemanticQuery): {
216
+ isValid: boolean;
217
+ errors: string[];
218
+ };