drizzle-cube 0.5.7 → 0.6.0

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 (541) hide show
  1. package/README.md +2 -0
  2. package/dist/adapters/adapters/hono/agent-handler.d.ts +9 -0
  3. package/dist/adapters/adapters/hono/mcp-handler.d.ts +37 -0
  4. package/dist/adapters/adapters/mcp-tools-handlers.d.ts +18 -0
  5. package/dist/adapters/adapters/nextjs/mcp-handler.d.ts +36 -0
  6. package/dist/adapters/{utils.d.ts → adapters/utils.d.ts} +6 -81
  7. package/dist/adapters/express/index.cjs +1 -1
  8. package/dist/adapters/express/index.js +50 -50
  9. package/dist/adapters/fastify/index.cjs +1 -1
  10. package/dist/adapters/fastify/index.js +78 -78
  11. package/dist/adapters/google-BOnRIN1w.cjs +2 -0
  12. package/dist/{server/google-CFYljAOF.js → adapters/google-CvKM9yVM.js} +83 -71
  13. package/dist/adapters/{handler-Dz1F4iwf.js → handler-CfgE0JSL.js} +515 -578
  14. package/dist/adapters/handler-Cn0dOctE.cjs +25 -0
  15. package/dist/adapters/hono/index.cjs +2 -2
  16. package/dist/adapters/hono/index.js +208 -178
  17. package/dist/adapters/locale-DDvZDFVn.js +8114 -0
  18. package/dist/adapters/locale-ZLUUNUxr.cjs +166 -0
  19. package/dist/adapters/mcp-tools.cjs +1 -1
  20. package/dist/adapters/mcp-tools.js +49 -38
  21. package/dist/adapters/mcp-transport-Chiaj4ll.cjs +40 -0
  22. package/dist/adapters/mcp-transport-H96VG3WY.js +591 -0
  23. package/dist/adapters/nextjs/index.cjs +1 -1
  24. package/dist/adapters/nextjs/index.js +190 -197
  25. package/dist/{server/openai-y7GhJNdn.js → adapters/openai-B5jEiqiB.js} +776 -719
  26. package/dist/adapters/openai-D0musiYP.cjs +17 -0
  27. package/dist/{server/openai-DiVskd89.js → adapters/openai-cDlFSTk6.js} +61 -59
  28. package/dist/adapters/openai-vXvLni8v.cjs +1 -0
  29. package/dist/adapters/{utils-DosuoabY.js → utils-BPWZsX7k.js} +1285 -1220
  30. package/dist/adapters/utils-_whV4fXL.cjs +128 -0
  31. package/dist/adapters/utils.cjs +1 -1
  32. package/dist/adapters/utils.js +2 -2
  33. package/dist/client/charts/ChartLoader.d.ts +3 -17
  34. package/dist/client/charts/chartComponentRegistry.d.ts +46 -0
  35. package/dist/client/charts/chartConfigHelpers.d.ts +38 -0
  36. package/dist/client/charts.js +14 -13
  37. package/dist/client/chunks/{DashboardEditModal-6KRE36mm.js → DashboardEditModal-okVfH8ZK.js} +5446 -4486
  38. package/dist/client/chunks/DashboardEditModal-okVfH8ZK.js.map +1 -0
  39. package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js → RetentionCombinedChart-BgbDhsPz.js} +10 -10
  40. package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js.map → RetentionCombinedChart-BgbDhsPz.js.map} +1 -1
  41. package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js → RetentionHeatmap-DjXZaTPq.js} +5 -5
  42. package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js.map → RetentionHeatmap-DjXZaTPq.js.map} +1 -1
  43. package/dist/client/chunks/analysis-builder-DB88FojM.js +5674 -0
  44. package/dist/client/chunks/analysis-builder-DB88FojM.js.map +1 -0
  45. package/dist/client/chunks/{analysis-builder-shared-x576-O5p.js → analysis-builder-shared-BVK4TYfR.js} +1578 -1292
  46. package/dist/client/chunks/analysis-builder-shared-BVK4TYfR.js.map +1 -0
  47. package/dist/client/chunks/{chart-activity-grid-CiHrLH6Y.js → chart-activity-grid-DX0SJbxs.js} +642 -494
  48. package/dist/client/chunks/chart-activity-grid-DX0SJbxs.js.map +1 -0
  49. package/dist/client/chunks/chart-area-of01_62R.js +775 -0
  50. package/dist/client/chunks/chart-area-of01_62R.js.map +1 -0
  51. package/dist/client/chunks/chart-bar-BqelQE_I.js +194 -0
  52. package/dist/client/chunks/chart-bar-BqelQE_I.js.map +1 -0
  53. package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js → chart-box-plot-kkBixZ27.js} +2 -2
  54. package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js.map → chart-box-plot-kkBixZ27.js.map} +1 -1
  55. package/dist/client/chunks/chart-bubble-B2he1--4.js +221 -0
  56. package/dist/client/chunks/chart-bubble-B2he1--4.js.map +1 -0
  57. package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js → chart-candlestick-DZp19Tzh.js} +2 -2
  58. package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js.map → chart-candlestick-DZp19Tzh.js.map} +1 -1
  59. package/dist/client/chunks/chart-config-area-BNigHUy8.js +124 -0
  60. package/dist/client/chunks/chart-config-area-BNigHUy8.js.map +1 -0
  61. package/dist/client/chunks/chart-config-bar-DSO_LRTx.js +54 -0
  62. package/dist/client/chunks/chart-config-bar-DSO_LRTx.js.map +1 -0
  63. package/dist/client/chunks/{chart-config-box-plot-DJ-dWWXA.js → chart-config-box-plot-oW8axV2q.js} +5 -10
  64. package/dist/client/chunks/chart-config-box-plot-oW8axV2q.js.map +1 -0
  65. package/dist/client/chunks/{chart-config-gauge-DSwC04l0.js → chart-config-gauge-Dq-_H9UN.js} +5 -7
  66. package/dist/client/chunks/chart-config-gauge-Dq-_H9UN.js.map +1 -0
  67. package/dist/client/chunks/{chart-config-kpi-delta-D6BIkHL3.js → chart-config-kpi-delta-DSQbvqu_.js} +5 -10
  68. package/dist/client/chunks/chart-config-kpi-delta-DSQbvqu_.js.map +1 -0
  69. package/dist/client/chunks/{chart-config-kpi-number-Bx-V9a62.js → chart-config-kpi-number-EFSWY1We.js} +5 -7
  70. package/dist/client/chunks/chart-config-kpi-number-EFSWY1We.js.map +1 -0
  71. package/dist/client/chunks/{chart-config-kpi-text-CcqC1u-8.js → chart-config-kpi-text-KM3V5X2u.js} +5 -7
  72. package/dist/client/chunks/chart-config-kpi-text-KM3V5X2u.js.map +1 -0
  73. package/dist/client/chunks/{chart-config-line-Db3jDsWc.js → chart-config-line-D6jG8PCH.js} +9 -36
  74. package/dist/client/chunks/chart-config-line-D6jG8PCH.js.map +1 -0
  75. package/dist/client/chunks/{chart-config-pie-DD4SmRTF.js → chart-config-pie-BhzW-fdn.js} +6 -16
  76. package/dist/client/chunks/chart-config-pie-BhzW-fdn.js.map +1 -0
  77. package/dist/client/chunks/{chart-config-radar-CC2XAaGr.js → chart-config-radar-D7REP1q_.js} +6 -16
  78. package/dist/client/chunks/chart-config-radar-D7REP1q_.js.map +1 -0
  79. package/dist/client/chunks/{chart-config-radial-bar-DmxKx1R0.js → chart-config-radial-bar-Byx6qOPU.js} +6 -16
  80. package/dist/client/chunks/chart-config-radial-bar-Byx6qOPU.js.map +1 -0
  81. package/dist/client/chunks/{chart-config-tree-map-BI-oQStO.js → chart-config-tree-map-DVrvf3yQ.js} +6 -16
  82. package/dist/client/chunks/chart-config-tree-map-DVrvf3yQ.js.map +1 -0
  83. package/dist/client/chunks/{chart-config-waterfall-DSnyixbI.js → chart-config-waterfall-DmFeQdIk.js} +5 -10
  84. package/dist/client/chunks/chart-config-waterfall-DmFeQdIk.js.map +1 -0
  85. package/dist/client/chunks/{chart-data-table-Cm5jrpaw.js → chart-data-table-CKauQXme.js} +1046 -1121
  86. package/dist/client/chunks/chart-data-table-CKauQXme.js.map +1 -0
  87. package/dist/client/chunks/{chart-funnel-Eke8IPtG.js → chart-funnel-CToKSBaL.js} +184 -222
  88. package/dist/client/chunks/chart-funnel-CToKSBaL.js.map +1 -0
  89. package/dist/client/chunks/chart-gauge-DTVezSk7.js +403 -0
  90. package/dist/client/chunks/chart-gauge-DTVezSk7.js.map +1 -0
  91. package/dist/client/chunks/chart-heat-map-DTuUl0BR.js +236 -0
  92. package/dist/client/chunks/chart-heat-map-DTuUl0BR.js.map +1 -0
  93. package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js +408 -0
  94. package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js.map +1 -0
  95. package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js +244 -0
  96. package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js.map +1 -0
  97. package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js +185 -0
  98. package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js.map +1 -0
  99. package/dist/client/chunks/chart-line-DKgrQA6c.js +101 -0
  100. package/dist/client/chunks/chart-line-DKgrQA6c.js.map +1 -0
  101. package/dist/client/chunks/{chart-markdown-BPW-EAm9.js → chart-markdown-CV75S_zL.js} +1359 -1240
  102. package/dist/client/chunks/chart-markdown-CV75S_zL.js.map +1 -0
  103. package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js → chart-measure-profile-Ket8fJyf.js} +7 -7
  104. package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js.map → chart-measure-profile-Ket8fJyf.js.map} +1 -1
  105. package/dist/client/chunks/chart-pie-ByieAX5H.js +119 -0
  106. package/dist/client/chunks/chart-pie-ByieAX5H.js.map +1 -0
  107. package/dist/client/chunks/chart-radar-CiSwHWp4.js +138 -0
  108. package/dist/client/chunks/chart-radar-CiSwHWp4.js.map +1 -0
  109. package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js +122 -0
  110. package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js.map +1 -0
  111. package/dist/client/chunks/{chart-sankey-CFzjGvZX.js → chart-sankey-DjrvKw6K.js} +36 -39
  112. package/dist/client/chunks/{chart-sankey-CFzjGvZX.js.map → chart-sankey-DjrvKw6K.js.map} +1 -1
  113. package/dist/client/chunks/chart-scatter-Dd9WFqnS.js +258 -0
  114. package/dist/client/chunks/chart-scatter-Dd9WFqnS.js.map +1 -0
  115. package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js → chart-sunburst-leGpuDj7.js} +3 -3
  116. package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js.map → chart-sunburst-leGpuDj7.js.map} +1 -1
  117. package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js +323 -0
  118. package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js.map +1 -0
  119. package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js → chart-waterfall-DyvQReN5.js} +7 -7
  120. package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js.map → chart-waterfall-DyvQReN5.js.map} +1 -1
  121. package/dist/client/chunks/{charts-core-CrBDYN6N.js → charts-core-DaXSt1Dd.js} +2 -2
  122. package/dist/client/chunks/{charts-core-CrBDYN6N.js.map → charts-core-DaXSt1Dd.js.map} +1 -1
  123. package/dist/client/chunks/charts-loader-DdTeCeNo.js +84 -0
  124. package/dist/client/chunks/charts-loader-DdTeCeNo.js.map +1 -0
  125. package/dist/client/chunks/{core-DsAWNRRv.js → core-D7vPfUIe.js} +2 -2
  126. package/dist/client/chunks/{core-DsAWNRRv.js.map → core-D7vPfUIe.js.map} +1 -1
  127. package/dist/client/chunks/{nl-NL-oyr2wENY.js → nl-NL-2zTAWTej.js} +8 -2
  128. package/dist/client/chunks/{nl-NL-oyr2wENY.js.map → nl-NL-2zTAWTej.js.map} +1 -1
  129. package/dist/client/chunks/retention-ChW9jYdy.js.map +1 -1
  130. package/dist/client/chunks/{schema-visualization-BszcrmZX.js → schema-visualization-Cb_E9_Gd.js} +12 -12
  131. package/dist/client/chunks/{schema-visualization-BszcrmZX.js.map → schema-visualization-Cb_E9_Gd.js.map} +1 -1
  132. package/dist/client/chunks/{useDirtyStateTracking-B5wCDJSj.js → useDirtyStateTracking-MbpxH_v6.js} +95 -84
  133. package/dist/client/chunks/useDirtyStateTracking-MbpxH_v6.js.map +1 -0
  134. package/dist/client/chunks/{useExplainAI-CCeCYzDm.js → useExplainAI-evnZkjCY.js} +14 -14
  135. package/dist/client/chunks/{useExplainAI-CCeCYzDm.js.map → useExplainAI-evnZkjCY.js.map} +1 -1
  136. package/dist/client/chunks/{utils-kqa-JIMg.js → utils-3P6z1vz5.js} +3 -3
  137. package/dist/client/chunks/{utils-kqa-JIMg.js.map → utils-3P6z1vz5.js.map} +1 -1
  138. package/dist/client/chunks/{vendor-0hJNlZXQ.js → vendor-DSpR0IW6.js} +43 -43
  139. package/dist/client/chunks/{vendor-0hJNlZXQ.js.map → vendor-DSpR0IW6.js.map} +1 -1
  140. package/dist/client/components/AgenticNotebook/agentChatParts.d.ts +34 -0
  141. package/dist/client/components/AgenticNotebook/chatMessageParts.d.ts +39 -0
  142. package/dist/client/components/AgenticNotebook/useAgentChatController.d.ts +25 -0
  143. package/dist/client/components/AgenticNotebook/useNotebookAutosave.d.ts +12 -0
  144. package/dist/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +1 -1
  145. package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +1 -1
  146. package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +1 -1
  147. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +1 -1
  148. package/dist/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +1 -1
  149. package/dist/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +1 -1
  150. package/dist/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +1 -1
  151. package/dist/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +1 -1
  152. package/dist/client/components/AnalysisBuilder/AnalysisQueryPanelParts.d.ts +64 -0
  153. package/dist/client/components/AnalysisBuilder/AnalysisResultsHeader.d.ts +67 -0
  154. package/dist/client/components/AnalysisBuilder/BreakdownComparisonToggle.d.ts +13 -0
  155. package/dist/client/components/AnalysisBuilder/BreakdownRow.d.ts +26 -0
  156. package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +10 -0
  157. package/dist/client/components/AnalysisBuilder/ExecutionPlanPanelParts.d.ts +22 -0
  158. package/dist/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +2 -1
  159. package/dist/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +1 -1
  160. package/dist/client/components/AnalysisBuilder/FieldSearchItem.d.ts +1 -1
  161. package/dist/client/components/AnalysisBuilder/FieldSearchModal.d.ts +1 -1
  162. package/dist/client/components/AnalysisBuilder/FieldSearchResults.d.ts +16 -0
  163. package/dist/client/components/AnalysisBuilder/FilterConfigModal.d.ts +2 -1
  164. package/dist/client/components/AnalysisBuilder/FilterValueInput.d.ts +63 -0
  165. package/dist/client/components/AnalysisBuilder/FlowDepthControls.d.ts +10 -0
  166. package/dist/client/components/AnalysisBuilder/FlowVisualizationPicker.d.ts +7 -0
  167. package/dist/client/components/AnalysisBuilder/LegacyBooleanOptions.d.ts +8 -0
  168. package/dist/client/components/AnalysisBuilder/LimitSection.d.ts +1 -1
  169. package/dist/client/components/AnalysisBuilder/MetricRow.d.ts +23 -0
  170. package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +1 -1
  171. package/dist/client/components/AnalysisBuilder/SortToggleButton.d.ts +13 -0
  172. package/dist/client/components/AnalysisBuilder/StringArrayInput.d.ts +17 -0
  173. package/dist/client/components/AnalysisBuilder/filterConfigModalUtils.d.ts +30 -0
  174. package/dist/client/components/AnalysisBuilder/hooks/useAnalysisBuilderImperativeHandle.d.ts +13 -0
  175. package/dist/client/components/AnalysisBuilder/hooks/useDragReorder.d.ts +25 -0
  176. package/dist/client/components/AnalysisBuilder/hooks/useFieldSearchKeyboard.d.ts +11 -0
  177. package/dist/client/components/AnalysisBuilder/utils/axisConfigUtils.d.ts +23 -0
  178. package/dist/client/components/AnalysisBuilder/utils/executionPlanMarkdown.d.ts +8 -0
  179. package/dist/client/components/AnalysisBuilder/utils/fieldUtils.d.ts +5 -0
  180. package/dist/client/components/AnalysisBuilder/utils/resultsPanelDerive.d.ts +68 -0
  181. package/dist/client/components/AnalysisBuilder/utils/shareStateUtils.d.ts +68 -0
  182. package/dist/client/components/AnalysisBuilder/utils/sortUtils.d.ts +7 -0
  183. package/dist/client/components/AnalyticsDashboard.d.ts +1 -1
  184. package/dist/client/components/AnalyticsPage.d.ts +1 -1
  185. package/dist/client/components/ChartErrorBoundary.d.ts +1 -1
  186. package/dist/client/components/ChartTypeSelector.d.ts +1 -1
  187. package/dist/client/components/ColorPaletteSelector.d.ts +1 -1
  188. package/dist/client/components/DashboardEditModal.d.ts +2 -1
  189. package/dist/client/components/DashboardFilters/CompactFilterBarParts.d.ts +26 -0
  190. package/dist/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +1 -1
  191. package/dist/client/components/DashboardFilters/DashboardFilterConfigModalParts.d.ts +27 -0
  192. package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +1 -1
  193. package/dist/client/components/DashboardFilters/DashboardFilterValueInput.d.ts +39 -0
  194. package/dist/client/components/DashboardFilters/dashboardFilterConfigModalUtils.d.ts +21 -0
  195. package/dist/client/components/DashboardFilters/useCompactFilterBar.d.ts +19 -0
  196. package/dist/client/components/DashboardFilters/useDashboardFilterConfigModal.d.ts +69 -0
  197. package/dist/client/components/DashboardFilters/useDateRangeState.d.ts +19 -0
  198. package/dist/client/components/DashboardFilters/useFilterDropdowns.d.ts +21 -0
  199. package/dist/client/components/DashboardFilters/useFilterValueFetch.d.ts +23 -0
  200. package/dist/client/components/DashboardGrid.d.ts +1 -1
  201. package/dist/client/components/DashboardPortletCard.d.ts +2 -57
  202. package/dist/client/components/DashboardThumbnailPlaceholder.d.ts +1 -1
  203. package/dist/client/components/DataBrowser/DataBrowserSidebar.d.ts +1 -1
  204. package/dist/client/components/DataBrowser/DataBrowserToolbar.d.ts +1 -1
  205. package/dist/client/components/DataBrowser/index.d.ts +1 -1
  206. package/dist/client/components/DataHistogram.d.ts +1 -1
  207. package/dist/client/components/DebugModal.d.ts +1 -1
  208. package/dist/client/components/DrillBreadcrumb.d.ts +2 -1
  209. package/dist/client/components/LoadingIndicator.d.ts +1 -1
  210. package/dist/client/components/MobileStackedLayout.d.ts +1 -1
  211. package/dist/client/components/PortletAnalysisModal.d.ts +1 -1
  212. package/dist/client/components/PortletContainer.d.ts +1 -1
  213. package/dist/client/components/PortletFilterConfigModal.d.ts +6 -4
  214. package/dist/client/components/RowManagedLayout.d.ts +1 -1
  215. package/dist/client/components/ScaledGridWrapper.d.ts +1 -1
  216. package/dist/client/components/SchemaVisualization/CubeNode.d.ts +1 -1
  217. package/dist/client/components/SchemaVisualization/FieldDetailPanel.d.ts +1 -1
  218. package/dist/client/components/SchemaVisualization/RelationshipEdge.d.ts +1 -1
  219. package/dist/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +1 -1
  220. package/dist/client/components/SchemaVisualization/index.d.ts +1 -1
  221. package/dist/client/components/TextPortletModal.d.ts +1 -1
  222. package/dist/client/components/analyticsPortlet/PortletChart.d.ts +31 -0
  223. package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +35 -0
  224. package/dist/client/components/analyticsPortlet/PortletStates.d.ts +65 -0
  225. package/dist/client/components/analyticsPortlet/parsePortletQuery.d.ts +22 -0
  226. package/dist/client/components/analyticsPortlet/portletRenderState.d.ts +31 -0
  227. package/dist/client/components/analyticsPortlet/usePortletDebugData.d.ts +37 -0
  228. package/dist/client/components/analyticsPortlet/usePortletDrillState.d.ts +17 -0
  229. package/dist/client/components/analyticsPortlet/usePortletQueryResults.d.ts +37 -0
  230. package/dist/client/components/charts/ActivityGridChart.helpers.d.ts +33 -0
  231. package/dist/client/components/charts/ActivityGridChart.render.d.ts +31 -0
  232. package/dist/client/components/charts/AxisFormatControls.d.ts +5 -3
  233. package/dist/client/components/charts/BarChart.helpers.d.ts +23 -0
  234. package/dist/client/components/charts/BarSeries.d.ts +29 -0
  235. package/dist/client/components/charts/BubbleChart.helpers.d.ts +43 -0
  236. package/dist/client/components/charts/BubbleChart.render.d.ts +21 -0
  237. package/dist/client/components/charts/ChartContainer.d.ts +1 -1
  238. package/dist/client/components/charts/ChartLegend.d.ts +1 -1
  239. package/dist/client/components/charts/ChartStates.d.ts +38 -0
  240. package/dist/client/components/charts/ChartTooltip.d.ts +1 -1
  241. package/dist/client/components/charts/FunnelChart.helpers.d.ts +25 -0
  242. package/dist/client/components/charts/FunnelViews.d.ts +16 -0
  243. package/dist/client/components/charts/HeatMapCanvas.d.ts +25 -0
  244. package/dist/client/components/charts/HeatMapChart.helpers.d.ts +64 -0
  245. package/dist/client/components/charts/KpiDelta.helpers.d.ts +20 -0
  246. package/dist/client/components/charts/KpiNumber.helpers.d.ts +30 -0
  247. package/dist/client/components/charts/KpiStates.d.ts +19 -0
  248. package/dist/client/components/charts/MissingDependencyFallback.d.ts +1 -1
  249. package/dist/client/components/charts/ScatterChart.helpers.d.ts +43 -0
  250. package/dist/client/components/charts/ScatterSeries.d.ts +17 -0
  251. package/dist/client/components/charts/ScatterTooltip.d.ts +21 -0
  252. package/dist/client/components/charts/TreeMapChart.helpers.d.ts +37 -0
  253. package/dist/client/components/charts/TreeMapContent.d.ts +24 -0
  254. package/dist/client/components/charts/TreeMapLegend.d.ts +13 -0
  255. package/dist/client/components/charts/cartesianChartHelpers.d.ts +126 -0
  256. package/dist/client/components/charts/chartAxisResolution.d.ts +32 -0
  257. package/dist/client/components/charts/chartScaffolding.d.ts +77 -0
  258. package/dist/client/components/charts/gaugeChartHelpers.d.ts +36 -0
  259. package/dist/client/components/charts/kpiTextHelpers.d.ts +46 -0
  260. package/dist/client/components/charts/radarChartHelpers.d.ts +14 -0
  261. package/dist/client/components/charts/radialBarChartHelpers.d.ts +22 -0
  262. package/dist/client/components/charts/useChartDimensions.d.ts +20 -0
  263. package/dist/client/components/charts/useKpiDimensions.d.ts +30 -0
  264. package/dist/client/components/dashboard/DashboardContext.d.ts +2 -2
  265. package/dist/client/components/dashboard/DashboardCoordinator.d.ts +1 -1
  266. package/dist/client/components/dashboard/DashboardEditBar.d.ts +5 -0
  267. package/dist/client/components/dashboard/DashboardFilterBar.d.ts +1 -1
  268. package/dist/client/components/dashboard/DashboardGridSurface.d.ts +1 -1
  269. package/dist/client/components/dashboard/DashboardModals.d.ts +1 -1
  270. package/dist/client/components/dashboard/DashboardProvider.d.ts +1 -1
  271. package/dist/client/components/dashboard/DashboardToolbar.d.ts +1 -1
  272. package/dist/client/components/dashboard/LayoutModeToggle.d.ts +10 -0
  273. package/dist/client/components/dashboard/dashboardGridUtils.d.ts +1 -1
  274. package/dist/client/components/dashboardPortletCard/FilterFieldChip.d.ts +12 -0
  275. package/dist/client/components/dashboardPortletCard/PortletCardHeader.d.ts +43 -0
  276. package/dist/client/components/dashboardPortletCard/cardStyles.d.ts +33 -0
  277. package/dist/client/components/dashboardPortletCard/filterField.d.ts +12 -0
  278. package/dist/client/components/dashboardPortletCard/propsEqual.d.ts +55 -0
  279. package/dist/client/components/dashboardPortletCard/usePortletCardActions.d.ts +16 -0
  280. package/dist/client/components/portletAnalysisModal/saveValidation.d.ts +8 -0
  281. package/dist/client/components/shared/dateRangeUtils.d.ts +40 -0
  282. package/dist/client/components/shared/filterDisplayUtils.d.ts +10 -0
  283. package/dist/client/components/shared/filterItem/FilterDateRangeSelector.d.ts +17 -0
  284. package/dist/client/components/shared/filterItem/FilterFieldDropdown.d.ts +16 -0
  285. package/dist/client/components/shared/filterItem/dateRangeSync.d.ts +14 -0
  286. package/dist/client/components/shared/filterItem/fieldVisuals.d.ts +5 -0
  287. package/dist/client/components/shared/filterValueSelector/FilterValueInputs.d.ts +55 -0
  288. package/dist/client/components/shared/filterValueSelector/useFilterValueSelectorState.d.ts +25 -0
  289. package/dist/client/components/shared/queryFieldUtils.d.ts +21 -0
  290. package/dist/client/components/shared/utils.d.ts +4 -43
  291. package/dist/client/components.js +3 -3
  292. package/dist/client/hooks/agentChatStream.d.ts +39 -0
  293. package/dist/client/hooks/analysisQueryExecutionModes.d.ts +133 -0
  294. package/dist/client/hooks/dashboard/useDashboardController.d.ts +2 -2
  295. package/dist/client/hooks/drillNavigation.d.ts +25 -0
  296. package/dist/client/hooks/useDashboardHook.d.ts +2 -2
  297. package/dist/client/hooks.js +3 -3
  298. package/dist/client/icons.d.ts +1 -1
  299. package/dist/client/icons.js +2 -2
  300. package/dist/client/index.js +816 -669
  301. package/dist/client/index.js.map +1 -1
  302. package/dist/client/providers/CubeApiProvider.d.ts +1 -1
  303. package/dist/client/providers/CubeFeaturesProvider.d.ts +1 -1
  304. package/dist/client/providers/CubeMetaProvider.d.ts +1 -1
  305. package/dist/client/providers/CubeProvider.d.ts +1 -1
  306. package/dist/client/providers/I18nProvider.d.ts +1 -1
  307. package/dist/client/providers.js +3 -3
  308. package/dist/client/schema.js +1 -1
  309. package/dist/client/shared/chartConfigBuilders.d.ts +18 -0
  310. package/dist/client/shared/components/QueryAnalysisPanel.sections.d.ts +41 -0
  311. package/dist/client/shared/queryTransforms.d.ts +20 -0
  312. package/dist/client/shared/utils.d.ts +2 -4
  313. package/dist/client/stores/analysisBuilderStore.d.ts +1 -1
  314. package/dist/client/stores/dashboardStore.d.ts +1 -1
  315. package/dist/client/stores/dataBrowserStore.d.ts +1 -1
  316. package/dist/client/stores/notebookStore.d.ts +1 -1
  317. package/dist/client/stores/optionsToAnalysisConfig.d.ts +17 -0
  318. package/dist/client/styles.css +1 -1
  319. package/dist/client/types/drill.d.ts +1 -1
  320. package/dist/client/types.d.ts +7 -2
  321. package/dist/client/utils/axisValueFormatting.d.ts +32 -0
  322. package/dist/client/utils/drillQueryBuilder.d.ts +2 -2
  323. package/dist/client/utils/filterUtils.d.ts +33 -5
  324. package/dist/client/utils/joinReachability.d.ts +27 -0
  325. package/dist/client/utils/timeValueFormatting.d.ts +32 -0
  326. package/dist/client/utils.js +6 -6
  327. package/dist/client-bundle-stats.html +1 -1
  328. package/dist/mcp-app/mcp-app.html +55 -55
  329. package/dist/server/google-BOnRIN1w.cjs +2 -0
  330. package/dist/{adapters/google-CFYljAOF.js → server/google-CvKM9yVM.js} +83 -71
  331. package/dist/server/index.cjs +179 -211
  332. package/dist/server/index.d.ts +2 -5050
  333. package/dist/server/index.js +6360 -6462
  334. package/dist/{adapters/openai-y7GhJNdn.js → server/openai-B5jEiqiB.js} +776 -719
  335. package/dist/server/openai-D0musiYP.cjs +17 -0
  336. package/dist/{adapters/openai-DiVskd89.js → server/openai-cDlFSTk6.js} +61 -59
  337. package/dist/server/openai-vXvLni8v.cjs +1 -0
  338. package/dist/server/server/adapters/base-adapter.d.ts +332 -0
  339. package/dist/server/server/adapters/databend-adapter.d.ts +63 -0
  340. package/dist/server/server/adapters/duckdb-adapter.d.ts +68 -0
  341. package/dist/server/server/adapters/mysql-adapter.d.ts +65 -0
  342. package/dist/server/server/adapters/postgres-adapter.d.ts +55 -0
  343. package/dist/server/server/adapters/singlestore-adapter.d.ts +4 -0
  344. package/dist/server/server/adapters/snowflake-adapter.d.ts +53 -0
  345. package/dist/server/server/adapters/sqlite-adapter.d.ts +120 -0
  346. package/dist/server/server/adapters/window-function-builder.d.ts +11 -0
  347. package/dist/server/server/agent/chart-validation.d.ts +22 -0
  348. package/dist/server/server/agent/handler-steps.d.ts +37 -0
  349. package/dist/server/server/agent/handler.d.ts +25 -0
  350. package/dist/server/server/agent/index.d.ts +11 -0
  351. package/dist/server/server/agent/providers/anthropic.d.ts +24 -0
  352. package/dist/server/server/agent/providers/factory.d.ts +12 -0
  353. package/dist/server/server/agent/providers/google.d.ts +23 -0
  354. package/dist/server/server/agent/providers/index.d.ts +6 -0
  355. package/dist/server/server/agent/providers/openai.d.ts +26 -0
  356. package/dist/server/server/agent/providers/types.d.ts +95 -0
  357. package/dist/server/server/agent/system-prompt.d.ts +5 -0
  358. package/dist/server/server/agent/tools.d.ts +28 -0
  359. package/dist/server/server/agent/types.d.ts +192 -0
  360. package/dist/server/server/ai/discovery-helpers.d.ts +29 -0
  361. package/dist/server/server/ai/discovery.d.ts +66 -0
  362. package/dist/server/server/ai/index.d.ts +10 -0
  363. package/dist/server/server/ai/mcp-prompts.d.ts +83 -0
  364. package/dist/server/server/ai/query-schema.d.ts +258 -0
  365. package/dist/server/server/ai/schemas.d.ts +63 -0
  366. package/dist/server/server/ai/suggestion-helpers.d.ts +33 -0
  367. package/dist/server/server/ai/suggestion.d.ts +16 -0
  368. package/dist/server/server/ai/validation-helpers.d.ts +21 -0
  369. package/dist/server/server/ai/validation.d.ts +31 -0
  370. package/dist/server/server/builders/analysis-utils.d.ts +106 -0
  371. package/dist/server/server/builders/comparison-query-builder.d.ts +70 -0
  372. package/dist/server/server/builders/cte-builder.d.ts +108 -0
  373. package/dist/server/server/builders/date-time-builder.d.ts +34 -0
  374. package/dist/server/server/builders/date-time-helpers.d.ts +34 -0
  375. package/dist/server/server/builders/filter-builder.d.ts +25 -0
  376. package/dist/server/server/builders/filter-operators.d.ts +23 -0
  377. package/dist/server/server/builders/flow-query-builder.d.ts +136 -0
  378. package/dist/server/server/builders/funnel-query-builder.d.ts +145 -0
  379. package/dist/server/server/builders/group-by-builder.d.ts +38 -0
  380. package/dist/server/server/builders/index.d.ts +13 -0
  381. package/dist/server/server/builders/measure-builder.d.ts +185 -0
  382. package/dist/server/server/builders/retention-query-builder.d.ts +98 -0
  383. package/dist/server/server/cache-providers/index.d.ts +5 -0
  384. package/dist/server/server/cache-providers/memory.d.ts +105 -0
  385. package/dist/server/server/cache-utils.d.ts +85 -0
  386. package/dist/server/server/compiler-metadata.d.ts +11 -0
  387. package/dist/server/server/compiler.d.ts +212 -0
  388. package/dist/server/server/cube-utils.d.ts +158 -0
  389. package/dist/server/server/database-utils.d.ts +18 -0
  390. package/dist/server/server/execution/annotation-builder.d.ts +12 -0
  391. package/dist/server/server/execution/filter-cache-preloader.d.ts +19 -0
  392. package/dist/server/server/execution/mode-router.d.ts +25 -0
  393. package/dist/server/server/execution/query-result-cache.d.ts +21 -0
  394. package/dist/server/server/execution/result-post-processor.d.ts +10 -0
  395. package/dist/server/server/executor.d.ts +186 -0
  396. package/dist/server/server/executors/base-executor.d.ts +16 -0
  397. package/dist/server/server/executors/databend-executor.d.ts +33 -0
  398. package/dist/server/server/executors/duckdb-executor.d.ts +33 -0
  399. package/dist/server/server/executors/explain-utils.d.ts +28 -0
  400. package/dist/server/server/executors/index.d.ts +21 -0
  401. package/dist/server/server/executors/mysql-executor.d.ts +27 -0
  402. package/dist/server/server/executors/postgres-executor.d.ts +27 -0
  403. package/dist/server/server/executors/singlestore-executor.d.ts +9 -0
  404. package/dist/server/server/executors/snowflake-executor.d.ts +33 -0
  405. package/dist/server/server/executors/sqlite-executor.d.ts +28 -0
  406. package/dist/server/server/explain/databend-parser.d.ts +16 -0
  407. package/dist/server/server/explain/duckdb-parser.d.ts +28 -0
  408. package/dist/server/server/explain/explain-tree.d.ts +20 -0
  409. package/dist/server/server/explain/index.d.ts +9 -0
  410. package/dist/server/server/explain/mysql-parser.d.ts +38 -0
  411. package/dist/server/server/explain/postgres-parser.d.ts +18 -0
  412. package/dist/server/server/explain/snowflake-parser.d.ts +17 -0
  413. package/dist/server/server/explain/sqlite-parser.d.ts +23 -0
  414. package/dist/server/server/filter-cache.d.ts +73 -0
  415. package/dist/server/server/gap-filler.d.ts +48 -0
  416. package/dist/server/server/index.d.ts +38 -0
  417. package/dist/server/server/logical-plan/cte-planner-helpers.d.ts +37 -0
  418. package/dist/server/server/logical-plan/cte-planner.d.ts +104 -0
  419. package/dist/server/server/logical-plan/filter-propagation.d.ts +44 -0
  420. package/dist/server/server/logical-plan/index.d.ts +19 -0
  421. package/dist/server/server/logical-plan/join-planner.d.ts +27 -0
  422. package/dist/server/server/logical-plan/logical-plan-builder.d.ts +58 -0
  423. package/dist/server/server/logical-plan/logical-planner.d.ts +39 -0
  424. package/dist/server/server/logical-plan/optimiser.d.ts +34 -0
  425. package/dist/server/server/logical-plan/plan-analysis-reporter.d.ts +59 -0
  426. package/dist/server/server/logical-plan/planner-utils.d.ts +20 -0
  427. package/dist/server/server/logical-plan/types.d.ts +199 -0
  428. package/dist/server/server/measure-classification.d.ts +40 -0
  429. package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
  430. package/dist/server/server/physical-plan/drizzle-sql-builder.d.ts +118 -0
  431. package/dist/server/server/physical-plan/index.d.ts +2 -0
  432. package/dist/server/server/physical-plan/processors/cte-processor.d.ts +6 -0
  433. package/dist/server/server/physical-plan/processors/index.d.ts +8 -0
  434. package/dist/server/server/physical-plan/processors/joins-processor.d.ts +6 -0
  435. package/dist/server/server/physical-plan/processors/keys-dedup-processor.d.ts +13 -0
  436. package/dist/server/server/physical-plan/processors/multi-fact-processor.d.ts +13 -0
  437. package/dist/server/server/physical-plan/processors/predicates-processor.d.ts +6 -0
  438. package/dist/server/server/physical-plan/processors/selection-processor.d.ts +6 -0
  439. package/dist/server/server/physical-plan/processors/shared.d.ts +38 -0
  440. package/dist/server/server/physical-plan/processors/window-processor.d.ts +6 -0
  441. package/dist/server/server/prompts/explain-analysis-prompt.d.ts +47 -0
  442. package/dist/server/server/prompts/index.d.ts +27 -0
  443. package/dist/server/server/prompts/single-step-prompt.d.ts +31 -0
  444. package/dist/server/server/prompts/step0-validation-prompt.d.ts +39 -0
  445. package/dist/server/server/prompts/step1-shape-prompt.d.ts +29 -0
  446. package/dist/server/server/prompts/step2-complete-prompt.d.ts +19 -0
  447. package/dist/server/server/prompts/types.d.ts +37 -0
  448. package/dist/server/server/query-handlers.d.ts +79 -0
  449. package/dist/server/server/query-modes.d.ts +28 -0
  450. package/dist/server/server/query-validator.d.ts +9 -0
  451. package/dist/server/server/resolvers/calculated-measure-resolver.d.ts +98 -0
  452. package/dist/server/server/resolvers/index.d.ts +6 -0
  453. package/dist/server/server/resolvers/join-path-resolver.d.ts +158 -0
  454. package/dist/server/server/sql-format.d.ts +11 -0
  455. package/dist/server/server/template-substitution.d.ts +57 -0
  456. package/dist/server/server/types/analysis.d.ts +189 -0
  457. package/dist/server/server/types/cache.d.ts +132 -0
  458. package/dist/server/server/types/core.d.ts +164 -0
  459. package/dist/server/server/types/cube.d.ts +544 -0
  460. package/dist/server/server/types/executor.d.ts +156 -0
  461. package/dist/server/server/types/flow.d.ts +144 -0
  462. package/dist/server/server/types/funnel.d.ts +118 -0
  463. package/dist/server/server/types/index.d.ts +11 -0
  464. package/dist/server/server/types/metadata.d.ts +113 -0
  465. package/dist/server/server/types/query.d.ts +153 -0
  466. package/dist/server/server/types/retention.d.ts +141 -0
  467. package/dist/server/server/types/utils.d.ts +11 -0
  468. package/dist/server/server/types/validation.d.ts +14 -0
  469. package/package.json +15 -8
  470. package/dist/adapters/google-DUlXeeDA.cjs +0 -2
  471. package/dist/adapters/handler-C63rJUUK.cjs +0 -25
  472. package/dist/adapters/locale-CTNwPVZI.cjs +0 -198
  473. package/dist/adapters/locale-gU_d1Wja.js +0 -8249
  474. package/dist/adapters/mcp-transport-C4J4SAcn.cjs +0 -40
  475. package/dist/adapters/mcp-transport-CVUiifEc.js +0 -579
  476. package/dist/adapters/openai-6wrBvAnv.cjs +0 -1
  477. package/dist/adapters/openai-BDwb2u7y.cjs +0 -17
  478. package/dist/adapters/utils-CkEkU8Bo.cjs +0 -128
  479. package/dist/client/chunks/DashboardEditModal-6KRE36mm.js.map +0 -1
  480. package/dist/client/chunks/analysis-builder-shared-x576-O5p.js.map +0 -1
  481. package/dist/client/chunks/analysis-builder-zd48FVJO.js +0 -5367
  482. package/dist/client/chunks/analysis-builder-zd48FVJO.js.map +0 -1
  483. package/dist/client/chunks/chart-activity-grid-CiHrLH6Y.js.map +0 -1
  484. package/dist/client/chunks/chart-area-CXFK-Grv.js +0 -450
  485. package/dist/client/chunks/chart-area-CXFK-Grv.js.map +0 -1
  486. package/dist/client/chunks/chart-bar-DKXfLoGG.js +0 -271
  487. package/dist/client/chunks/chart-bar-DKXfLoGG.js.map +0 -1
  488. package/dist/client/chunks/chart-bubble-DGkTQlxM.js +0 -273
  489. package/dist/client/chunks/chart-bubble-DGkTQlxM.js.map +0 -1
  490. package/dist/client/chunks/chart-config-area-Bq_UsW3x.js +0 -101
  491. package/dist/client/chunks/chart-config-area-Bq_UsW3x.js.map +0 -1
  492. package/dist/client/chunks/chart-config-bar-_JEGZnAu.js +0 -95
  493. package/dist/client/chunks/chart-config-bar-_JEGZnAu.js.map +0 -1
  494. package/dist/client/chunks/chart-config-box-plot-DJ-dWWXA.js.map +0 -1
  495. package/dist/client/chunks/chart-config-gauge-DSwC04l0.js.map +0 -1
  496. package/dist/client/chunks/chart-config-kpi-delta-D6BIkHL3.js.map +0 -1
  497. package/dist/client/chunks/chart-config-kpi-number-Bx-V9a62.js.map +0 -1
  498. package/dist/client/chunks/chart-config-kpi-text-CcqC1u-8.js.map +0 -1
  499. package/dist/client/chunks/chart-config-line-Db3jDsWc.js.map +0 -1
  500. package/dist/client/chunks/chart-config-pie-DD4SmRTF.js.map +0 -1
  501. package/dist/client/chunks/chart-config-radar-CC2XAaGr.js.map +0 -1
  502. package/dist/client/chunks/chart-config-radial-bar-DmxKx1R0.js.map +0 -1
  503. package/dist/client/chunks/chart-config-tree-map-BI-oQStO.js.map +0 -1
  504. package/dist/client/chunks/chart-config-waterfall-DSnyixbI.js.map +0 -1
  505. package/dist/client/chunks/chart-data-table-Cm5jrpaw.js.map +0 -1
  506. package/dist/client/chunks/chart-funnel-Eke8IPtG.js.map +0 -1
  507. package/dist/client/chunks/chart-gauge-DeRZNsyl.js +0 -424
  508. package/dist/client/chunks/chart-gauge-DeRZNsyl.js.map +0 -1
  509. package/dist/client/chunks/chart-heat-map-C86thSJ4.js +0 -231
  510. package/dist/client/chunks/chart-heat-map-C86thSJ4.js.map +0 -1
  511. package/dist/client/chunks/chart-kpi-delta-CxOYD2f1.js +0 -343
  512. package/dist/client/chunks/chart-kpi-delta-CxOYD2f1.js.map +0 -1
  513. package/dist/client/chunks/chart-kpi-number-C6gWz-x4.js +0 -322
  514. package/dist/client/chunks/chart-kpi-number-C6gWz-x4.js.map +0 -1
  515. package/dist/client/chunks/chart-kpi-text-dDONrhS-.js +0 -149
  516. package/dist/client/chunks/chart-kpi-text-dDONrhS-.js.map +0 -1
  517. package/dist/client/chunks/chart-line-r4iWevKZ.js +0 -433
  518. package/dist/client/chunks/chart-line-r4iWevKZ.js.map +0 -1
  519. package/dist/client/chunks/chart-markdown-BPW-EAm9.js.map +0 -1
  520. package/dist/client/chunks/chart-pie-yqH2YVEI.js +0 -172
  521. package/dist/client/chunks/chart-pie-yqH2YVEI.js.map +0 -1
  522. package/dist/client/chunks/chart-radar-B-_3v-rE.js +0 -154
  523. package/dist/client/chunks/chart-radar-B-_3v-rE.js.map +0 -1
  524. package/dist/client/chunks/chart-radial-bar-C0EgzfAF.js +0 -148
  525. package/dist/client/chunks/chart-radial-bar-C0EgzfAF.js.map +0 -1
  526. package/dist/client/chunks/chart-scatter-DZPirzwX.js +0 -255
  527. package/dist/client/chunks/chart-scatter-DZPirzwX.js.map +0 -1
  528. package/dist/client/chunks/chart-tree-map-Bi4axCvh.js +0 -298
  529. package/dist/client/chunks/chart-tree-map-Bi4axCvh.js.map +0 -1
  530. package/dist/client/chunks/useDirtyStateTracking-B5wCDJSj.js.map +0 -1
  531. package/dist/server/google-DUlXeeDA.cjs +0 -2
  532. package/dist/server/openai-6wrBvAnv.cjs +0 -1
  533. package/dist/server/openai-BDwb2u7y.cjs +0 -17
  534. /package/dist/adapters/{express → adapters/express}/index.d.ts +0 -0
  535. /package/dist/adapters/{fastify → adapters/fastify}/index.d.ts +0 -0
  536. /package/dist/adapters/{hono → adapters/hono}/index.d.ts +0 -0
  537. /package/dist/adapters/{locale.d.ts → adapters/locale.d.ts} +0 -0
  538. /package/dist/adapters/{mcp-tools.d.ts → adapters/mcp-tools.d.ts} +0 -0
  539. /package/dist/adapters/{mcp-transport.d.ts → adapters/mcp-transport.d.ts} +0 -0
  540. /package/dist/adapters/{nextjs → adapters/nextjs}/index.d.ts +0 -0
  541. /package/dist/adapters/{types.d.ts → adapters/types.d.ts} +0 -0
@@ -0,0 +1,106 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { Cube, Filter, QueryContext } from '../types';
3
+ /**
4
+ * Type for CTE objects created by db.$with()
5
+ * These can be used with db.with(...ctes).select().from(cte)
6
+ */
7
+ export type WithSubquery = ReturnType<ReturnType<any['$with']>['as']>;
8
+ /**
9
+ * Combine an array of WHERE/JOIN conditions into a single SQL expression.
10
+ *
11
+ * - `[]` → undefined (no condition)
12
+ * - single element → that element verbatim
13
+ * - multiple → `and(...conditions)`
14
+ *
15
+ * Mirrors the inline `conditions.length === 1 ? conditions[0] : and(...conditions) as SQL`
16
+ * pattern that was duplicated across the analysis builders.
17
+ */
18
+ export declare function combineWhere(conditions: SQL[]): SQL | undefined;
19
+ /** The combinator + children of a client-style group filter. */
20
+ export interface GroupFilterParts {
21
+ /** True for an AND group, false for OR. */
22
+ isAnd: boolean;
23
+ filters: Filter[];
24
+ }
25
+ /**
26
+ * Normalise a client-style group filter.
27
+ *
28
+ * The analysis UIs sometimes emit groups as `{ type: 'and' | 'or', filters: [...] }`
29
+ * rather than the canonical `{ and: [...] }` / `{ or: [...] }` (this shape is not part
30
+ * of the `Filter` type; the builders accept it defensively). Returns the group's
31
+ * combinator + children, or `null` if `filter` isn't a client group filter.
32
+ */
33
+ export declare function asGroupFilter(filter: Filter): GroupFilterParts | null;
34
+ /**
35
+ * A single multi-cube field mapping (binding key or time dimension), e.g.
36
+ * `{ cube: 'Events', dimension: 'Events.userId' }`.
37
+ */
38
+ type FieldMapping = {
39
+ cube: string;
40
+ dimension: string;
41
+ };
42
+ /**
43
+ * The i18n namespaces whose binding-key / time-dimension leaf keys are identical.
44
+ * Funnel and flow share the exact same leaf keys under these two prefixes, which
45
+ * is what lets the resolution logic below be shared. (Retention uses a different
46
+ * leaf-key set — see `bindingKeyErrorsForPrefix` vs the bespoke config it passes.)
47
+ */
48
+ type AnalysisErrorPrefix = 'server.errors.funnel' | 'server.errors.flow';
49
+ /**
50
+ * Extract the dimension name from a `'Cube.dim'` or bare `'dim'` reference.
51
+ * (`'Cube.dim'` → `'dim'`, `'dim'` → `'dim'`.) Funnel/flow only ever pass the
52
+ * qualified form, so this is a strict superset of their old `.split('.')[1]`.
53
+ */
54
+ export declare function extractDimensionName(dimension: string): string;
55
+ /**
56
+ * Builders of the i18n error strings thrown while resolving a binding key.
57
+ * Each builder receives the resolved context so callers can preserve their exact
58
+ * existing message keys/params (funnel/flow and retention use different leaf keys).
59
+ */
60
+ export interface BindingKeyErrors {
61
+ /** Array form: no mapping in the array matched the current cube. */
62
+ noMapping: (ctx: {
63
+ cubeName: string;
64
+ }) => string;
65
+ /** The cube named in the key/mapping was not found in the `cubes` registry. */
66
+ cubeNotFound?: (ctx: {
67
+ cubeName: string;
68
+ }) => string;
69
+ /** String form: the binding-key dimension was not found on the resolved cube. */
70
+ keyDimNotFound: (ctx: {
71
+ bindingKey: string;
72
+ cubeName: string;
73
+ dimName: string;
74
+ }) => string;
75
+ /** Array form: the mapped dimension was not found on the resolved cube. */
76
+ mappingDimNotFound: (ctx: {
77
+ dimension: string;
78
+ cubeName: string;
79
+ dimName: string;
80
+ }) => string;
81
+ }
82
+ /**
83
+ * Build the binding-key error messages for funnel/flow from their shared i18n
84
+ * namespace (the leaf keys are identical across the two prefixes).
85
+ */
86
+ export declare function bindingKeyErrorsForPrefix(errorPrefix: AnalysisErrorPrefix): BindingKeyErrors;
87
+ /**
88
+ * Resolve a binding-key SQL expression for the analysis builders.
89
+ *
90
+ * Accepts a `'Cube.dim'` string or an array of `{ cube, dimension }` mappings.
91
+ * `errors` supplies the i18n messages (funnel/flow share one leaf-key set via
92
+ * `bindingKeyErrorsForPrefix`; retention passes its own). When `cubes` is given,
93
+ * the dimension is resolved on the cube named in the key (retention's multi-cube
94
+ * semantics); otherwise it is resolved on `cube` (funnel/flow).
95
+ */
96
+ export declare function resolveBindingKeyExpr(bindingKey: string | FieldMapping[], cube: Cube, context: QueryContext, errors: BindingKeyErrors, cubes?: Map<string, Cube>): SQL;
97
+ /**
98
+ * Resolve a time-dimension SQL expression for funnel/flow builders.
99
+ *
100
+ * Accepts a `'Cube.dim'` string or an array of `{ cube, dimension }` mappings.
101
+ * `errorPrefix` selects the i18n namespace (the leaf keys are identical across
102
+ * funnel and flow): `<prefix>.timeDimNotFound`, `<prefix>.noTimeDimMapping`,
103
+ * `<prefix>.timeDimMappingNotFound`.
104
+ */
105
+ export declare function resolveTimeDimensionExpr(timeDimension: string | FieldMapping[], cube: Cube, context: QueryContext, errorPrefix: AnalysisErrorPrefix): SQL;
106
+ export {};
@@ -0,0 +1,70 @@
1
+ import { SemanticQuery, TimeDimension, QueryResult, TimeGranularity } from '../types';
2
+ import { DatabaseAdapter } from '../adapters/base-adapter';
3
+ /**
4
+ * Normalized period range with start/end dates and metadata
5
+ */
6
+ export interface NormalizedPeriod {
7
+ /** Start date of the period */
8
+ start: Date;
9
+ /** End date of the period */
10
+ end: Date;
11
+ /** Human-readable label for the period */
12
+ label: string;
13
+ /** Index in the comparison (0 = first/current, 1 = second/prior, etc.) */
14
+ index: number;
15
+ }
16
+ /**
17
+ * Extended result row with period metadata for alignment
18
+ */
19
+ export interface ComparisonResultRow extends Record<string, unknown> {
20
+ /** Period label (e.g., "2024-01-01 - 2024-01-31") */
21
+ __period: string;
22
+ /** Period index (0 = current, 1 = prior, etc.) */
23
+ __periodIndex: number;
24
+ /** Day-of-period index for alignment in overlay mode */
25
+ __periodDayIndex: number;
26
+ }
27
+ export declare class ComparisonQueryBuilder {
28
+ private dateTimeBuilder;
29
+ constructor(databaseAdapter: DatabaseAdapter);
30
+ /**
31
+ * Check if a query contains compareDateRange
32
+ */
33
+ hasComparison(query: SemanticQuery): boolean;
34
+ /**
35
+ * Get the time dimension with compareDateRange
36
+ */
37
+ getComparisonTimeDimension(query: SemanticQuery): TimeDimension | undefined;
38
+ /**
39
+ * Normalize compareDateRange entries to concrete date ranges
40
+ * Handles both relative strings ('last 30 days') and explicit arrays (['2024-01-01', '2024-01-31'])
41
+ */
42
+ normalizePeriods(compareDateRange: (string | [string, string])[]): NormalizedPeriod[];
43
+ /**
44
+ * Create sub-query for a specific period
45
+ * Replaces compareDateRange with a concrete dateRange for that period
46
+ */
47
+ createPeriodQuery(query: SemanticQuery, period: NormalizedPeriod): SemanticQuery;
48
+ /**
49
+ * Calculate the day-of-period index for a date
50
+ * Used for aligning data points across periods in overlay mode
51
+ */
52
+ calculatePeriodDayIndex(date: Date | string, periodStart: Date, granularity: TimeGranularity): number;
53
+ /**
54
+ * Add period metadata to result rows
55
+ */
56
+ addPeriodMetadata(data: Record<string, unknown>[], period: NormalizedPeriod, timeDimensionKey: string, granularity: TimeGranularity): ComparisonResultRow[];
57
+ /**
58
+ * Merge results from multiple period queries
59
+ * Adds period metadata and creates combined result with annotation
60
+ */
61
+ mergeComparisonResults(periodResults: Array<{
62
+ result: QueryResult;
63
+ period: NormalizedPeriod;
64
+ }>, timeDimension: TimeDimension, granularity: TimeGranularity): QueryResult;
65
+ /**
66
+ * Sort merged results by period index and then by time dimension
67
+ * Ensures consistent ordering for client-side processing
68
+ */
69
+ sortComparisonResults(data: ComparisonResultRow[], timeDimensionKey: string): ComparisonResultRow[];
70
+ }
@@ -0,0 +1,108 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { SemanticQuery, QueryContext, PhysicalQueryPlan, PropagatingFilter } from '../types';
3
+ import { DrizzleSqlBuilder } from '../physical-plan/drizzle-sql-builder';
4
+ /**
5
+ * CTE information type extracted from runtime physical plan context
6
+ */
7
+ export type CTEInfo = NonNullable<PhysicalQueryPlan['preAggregationCTEs']>[0];
8
+ /**
9
+ * CTEBuilder handles the construction of Common Table Expressions
10
+ * for pre-aggregation in hasMany relationship queries.
11
+ *
12
+ * This enables efficient aggregation of "many" side data before joining,
13
+ * preventing the Cartesian product explosion that would occur with direct JOINs.
14
+ */
15
+ export declare class CTEBuilder {
16
+ private queryBuilder;
17
+ constructor(queryBuilder: DrizzleSqlBuilder);
18
+ /**
19
+ * Build pre-aggregation CTE for hasMany relationships
20
+ *
21
+ * Creates a CTE that:
22
+ * 1. Selects join keys and aggregated measures
23
+ * 2. Applies security context filtering
24
+ * 3. Groups by join keys and requested dimensions
25
+ * 4. Handles propagating filters from related cubes
26
+ * 5. Handles multi-hop join paths by absorbing intermediate tables (fan-out prevention)
27
+ */
28
+ buildPreAggregationCTE(cteInfo: CTEInfo, query: SemanticQuery, context: QueryContext, queryPlan: PhysicalQueryPlan, preBuiltFilterMap?: Map<string, SQL[]>): any;
29
+ /**
30
+ * Build the SELECT map for a pre-aggregation CTE: join keys (or the
31
+ * intermediate primary-connected column), downstream join keys, aggregated
32
+ * measures, and requested dimensions / time dimensions from this cube.
33
+ */
34
+ private buildCTESelections;
35
+ /** Add join-key columns (or the intermediate primary-connected column) to the CTE SELECT. */
36
+ private addJoinKeySelections;
37
+ /** Add downstream join-key columns so downstream cubes can be joined through this CTE. */
38
+ private addDownstreamKeySelections;
39
+ /** Add aggregated measure expressions to the CTE SELECT. */
40
+ private addMeasureSelections;
41
+ /** Add requested dimensions and time dimensions (from this cube) to the CTE SELECT. */
42
+ private addDimensionSelections;
43
+ /**
44
+ * Add JOINs to intermediate tables inside the CTE (multi-hop fan-out
45
+ * prevention). Joins from CTE-nearest to primary-nearest so each ON clause
46
+ * only references tables already in scope.
47
+ */
48
+ private applyIntermediateJoins;
49
+ /**
50
+ * Assemble the full WHERE condition list for a pre-aggregation CTE: security
51
+ * context, regular dimension filters, time-dimension date filters, and
52
+ * propagating filters from related cubes.
53
+ *
54
+ * IMPORTANT: Only dimension filters are applied here; measure filters belong
55
+ * in the main query's HAVING clause.
56
+ */
57
+ private buildCTEWhereConditions;
58
+ /**
59
+ * Build the time-dimension date filters (from `timeDimensions.dateRange` and
60
+ * `inDateRange` simple filters) plus propagating-filter subqueries for a CTE.
61
+ */
62
+ private buildCTETimeFilters;
63
+ /**
64
+ * Build the GROUP BY fields for a pre-aggregation CTE: join keys (or the
65
+ * intermediate primary-connected column), downstream join keys, and requested
66
+ * dimensions / time dimensions. De-dupes named columns.
67
+ */
68
+ private buildCTEGroupByFields;
69
+ /**
70
+ * Add join keys (and downstream join keys) to the CTE GROUP BY via the de-dupe
71
+ * callback. For multi-hop paths uses the intermediate table's
72
+ * primary-connected column (e.g. employees.department_id).
73
+ */
74
+ private addJoinKeyGroupBy;
75
+ /**
76
+ * Build join condition for CTE
77
+ *
78
+ * Creates the ON clause for joining a CTE to the main query.
79
+ * Uses stored column objects for type-safe joins.
80
+ *
81
+ * For multi-hop paths with intermediate joins:
82
+ * - The CTE includes columns from intermediate tables
83
+ * - The join condition uses the intermediate's primary-connected column
84
+ * - Example: departments.id = employeeteams_agg.department_id (not employee_id!)
85
+ */
86
+ buildCTEJoinCondition(joinCube: PhysicalQueryPlan['joinCubes'][0], cteAlias: string, queryPlan: PhysicalQueryPlan): SQL;
87
+ /**
88
+ * Resolve source-side join expression for CTE joins.
89
+ *
90
+ * When two cubes are both materialized as CTEs in the same query, join keys can
91
+ * still point to the original table column object (e.g. departments.id). In that
92
+ * case the table is no longer present in FROM/JOIN, so rewrite to the upstream CTE
93
+ * alias column (e.g. departments_agg.id).
94
+ */
95
+ private resolveCTEJoinSourceColumn;
96
+ /**
97
+ * Build a subquery filter for propagating filters from related cubes.
98
+ *
99
+ * This generates: cteCube.FK IN (SELECT sourceCube.PK FROM sourceCube WHERE filters...)
100
+ *
101
+ * Example: For Productivity CTE with Employees.createdAt filter:
102
+ * employee_id IN (SELECT id FROM employees WHERE organisation_id = $1 AND created_at >= $date)
103
+ *
104
+ * For composite keys, uses EXISTS instead of IN for better database compatibility:
105
+ * EXISTS (SELECT 1 FROM source WHERE source.pk1 = cte.fk1 AND source.pk2 = cte.fk2 AND <filters>)
106
+ */
107
+ buildPropagatingFilterSubquery(propFilter: PropagatingFilter, context: QueryContext): SQL | null;
108
+ }
@@ -0,0 +1,34 @@
1
+ import { SQL, AnyColumn } from 'drizzle-orm';
2
+ import { QueryContext } from '../types';
3
+ import { DatabaseAdapter } from '../adapters/base-adapter';
4
+ export declare class DateTimeBuilder {
5
+ private databaseAdapter;
6
+ constructor(databaseAdapter: DatabaseAdapter);
7
+ /**
8
+ * Build time dimension expression with granularity using database adapter
9
+ */
10
+ buildTimeDimensionExpression(dimensionSql: any, granularity: string | undefined, context: QueryContext): SQL;
11
+ /**
12
+ * Build date range condition for time dimensions
13
+ */
14
+ buildDateRangeCondition(fieldExpr: AnyColumn | SQL, dateRange: string | string[]): SQL | null;
15
+ private rangeBetween;
16
+ /** Shift a normalized end value to end-of-day when its source was a date-only string. */
17
+ private endOfDayValue;
18
+ private buildArrayDateRangeCondition;
19
+ private buildStringDateRangeCondition;
20
+ /**
21
+ * Parse relative date range expressions like "today", "yesterday", "last 7 days", "this month", etc.
22
+ * Handles all 14 DATE_RANGE_OPTIONS from the client
23
+ */
24
+ parseRelativeDateRange(dateRange: string): {
25
+ start: Date;
26
+ end: Date;
27
+ } | null;
28
+ /**
29
+ * Normalize date values to handle strings, numbers, and Date objects
30
+ * Returns ISO string for PostgreSQL/MySQL, Unix timestamp for SQLite, or null
31
+ * Ensures dates are in the correct format for each database engine
32
+ */
33
+ normalizeDate(value: any): string | number | null;
34
+ }
@@ -0,0 +1,34 @@
1
+ import { DatabaseAdapter } from '../adapters/base-adapter';
2
+ /**
3
+ * Convert a millisecond epoch to the engine's wire format:
4
+ * - SQLite: Unix seconds (integer)
5
+ * - other integer-timestamp engines: Unix milliseconds (integer)
6
+ * - PostgreSQL/MySQL: ISO string
7
+ */
8
+ export declare function epochMsToEngineValue(databaseAdapter: DatabaseAdapter, timeMs: number): string | number;
9
+ /**
10
+ * Convert a Date to the engine's wire format (see epochMsToEngineValue).
11
+ */
12
+ export declare function dateToEngineValue(databaseAdapter: DatabaseAdapter, date: Date): string | number;
13
+ /**
14
+ * Reconstruct a Date from a normalized value (the output of normalizeDate):
15
+ * a SQLite Unix-seconds integer, a millisecond integer, or an ISO string.
16
+ */
17
+ export declare function engineValueToDate(databaseAdapter: DatabaseAdapter, value: string | number): Date;
18
+ /** Detect a date-only string (YYYY-MM-DD). */
19
+ export declare function isDateOnlyString(value: unknown): value is string;
20
+ /**
21
+ * Normalize a date value to the engine's wire format, or null when falsy or
22
+ * unparseable.
23
+ */
24
+ export declare function normalizeDateValue(databaseAdapter: DatabaseAdapter, value: any): string | number | null;
25
+ type DateRange = {
26
+ start: Date;
27
+ end: Date;
28
+ };
29
+ /**
30
+ * Parse relative date range expressions like "today", "yesterday",
31
+ * "last 7 days", "this month", etc. Handles all 14 DATE_RANGE_OPTIONS.
32
+ */
33
+ export declare function parseRelativeDateRangeValue(dateRange: string): DateRange | null;
34
+ export {};
@@ -0,0 +1,25 @@
1
+ import { SQL, AnyColumn } from 'drizzle-orm';
2
+ import { FilterOperator, Filter, Cube, QueryContext } from '../types';
3
+ import { DatabaseAdapter } from '../adapters/base-adapter';
4
+ import { DateTimeBuilder } from './date-time-builder';
5
+ export declare class FilterBuilder {
6
+ private databaseAdapter;
7
+ private dateTimeBuilder;
8
+ constructor(databaseAdapter: DatabaseAdapter, dateTimeBuilder: DateTimeBuilder);
9
+ /**
10
+ * Build filter condition using Drizzle operators
11
+ */
12
+ buildFilterCondition(fieldExpr: AnyColumn | SQL, operator: FilterOperator, values: any[], field?: any, dateRange?: string | string[]): SQL | null;
13
+ /**
14
+ * Build a logical filter (AND/OR) - used by executor for cache preloading
15
+ * This handles nested filter structures and builds combined SQL
16
+ */
17
+ buildLogicalFilter(filter: Filter, cubes: Map<string, Cube>, context: QueryContext): SQL | null;
18
+ /** Build + AND/OR-combine a list of sub-filters, collapsing the 0- and 1-element cases. */
19
+ private combineFilters;
20
+ /**
21
+ * Build SQL for a single filter condition (simple or logical)
22
+ * Used for cache preloading to build filters independently of query context
23
+ */
24
+ buildSingleFilter(filter: Filter, cubes: Map<string, Cube>, context: QueryContext): SQL | null;
25
+ }
@@ -0,0 +1,23 @@
1
+ import { SQL, AnyColumn } from 'drizzle-orm';
2
+ import { FilterOperator } from '../types';
3
+ import { DatabaseAdapter } from '../adapters/base-adapter';
4
+ import { DateTimeBuilder } from './date-time-builder';
5
+ /**
6
+ * Context passed to every operator handler. Carries the resolved field
7
+ * expression, the (already filtered/converted) value list, plus the
8
+ * collaborators a handler may need.
9
+ */
10
+ export interface FilterOperatorContext {
11
+ fieldExpr: AnyColumn | SQL;
12
+ values: any[];
13
+ filteredValues: any[];
14
+ value: any;
15
+ field?: any;
16
+ databaseAdapter: DatabaseAdapter;
17
+ dateTimeBuilder: DateTimeBuilder;
18
+ }
19
+ /**
20
+ * Dispatch a single filter operator to its handler. Returns null for any
21
+ * unknown operator (matching the original `default` case).
22
+ */
23
+ export declare function applyFilterOperator(operator: FilterOperator, ctx: FilterOperatorContext): SQL | null;
@@ -0,0 +1,136 @@
1
+ import { DatabaseAdapter } from '../adapters/base-adapter';
2
+ import { FlowQueryConfig, FlowResultRow } from '../types/flow';
3
+ import { AnalysisConfigValidationResult } from '../types/validation';
4
+ import { Cube, QueryContext, SemanticQuery } from '../types';
5
+ export declare class FlowQueryBuilder {
6
+ private filterBuilder;
7
+ private dateTimeBuilder;
8
+ private databaseAdapter;
9
+ constructor(databaseAdapter: DatabaseAdapter);
10
+ /**
11
+ * Check if query contains flow configuration
12
+ */
13
+ hasFlow(query: SemanticQuery): boolean;
14
+ /**
15
+ * Validate flow configuration
16
+ */
17
+ validateConfig(config: FlowQueryConfig, cubes: Map<string, Cube>): AnalysisConfigValidationResult;
18
+ /**
19
+ * Validate a `Cube.dimension` member string: format, cube existence, and
20
+ * dimension existence. i18n message factories let each call site supply its
21
+ * own keys while sharing the branch structure.
22
+ */
23
+ private validateMemberDimension;
24
+ /** Validate the flow binding key (single member or per-cube mappings). */
25
+ private validateBindingKey;
26
+ /** Validate the flow starting step (required + filter + name warning). */
27
+ private validateStartingStep;
28
+ /** Validate flow step-depth bounds and emit high-depth performance warnings. */
29
+ private validateDepthBounds;
30
+ /** Validate the flow join strategy and its engine support. */
31
+ private validateJoinStrategy;
32
+ /**
33
+ * Build complete flow query using Drizzle's query builder pattern
34
+ *
35
+ * Creates a series of CTEs to:
36
+ * 1. Find entities at the starting step
37
+ * 2. Walk backwards N steps to find preceding events
38
+ * 3. Walk forwards N steps to find following events
39
+ * 4. Aggregate into nodes and links for Sankey visualization
40
+ */
41
+ buildFlowQuery(config: FlowQueryConfig, cubes: Map<string, Cube>, context: QueryContext): ReturnType<typeof context.db.select>;
42
+ /**
43
+ * Transform raw SQL result to FlowResultRow
44
+ * The raw result contains rows with record_type = 'node' or 'link'
45
+ */
46
+ transformResult(rawResult: Record<string, unknown>[]): FlowResultRow;
47
+ /**
48
+ * Resolve flow configuration to SQL expressions
49
+ */
50
+ private resolveFlowConfig;
51
+ /**
52
+ * Resolve the cube for flow analysis
53
+ */
54
+ private resolveCube;
55
+ /**
56
+ * Resolve binding key expression
57
+ */
58
+ private resolveBindingKey;
59
+ /**
60
+ * Resolve time dimension expression
61
+ */
62
+ private resolveTimeDimension;
63
+ /**
64
+ * Resolve event dimension expression
65
+ */
66
+ private resolveEventDimension;
67
+ /**
68
+ * Build filter conditions for the starting step
69
+ */
70
+ private buildStartingStepFilters;
71
+ /**
72
+ * Build a single filter condition
73
+ */
74
+ private buildFilterCondition;
75
+ /** Build the non-null sub-conditions of a logical/group filter. */
76
+ private buildSubConditions;
77
+ /** Combine sub-conditions with AND/OR, collapsing the 0- and 1-element cases. */
78
+ private combineConditions;
79
+ /**
80
+ * Build the starting entities CTE
81
+ * Finds all entities matching the starting step filter with their start time and event type
82
+ * For sunburst mode, also initializes event_path with the starting event type
83
+ */
84
+ private buildStartingEntitiesCTE;
85
+ /**
86
+ * Build CTEs for steps BEFORE/AFTER the starting point using LATERAL joins
87
+ *
88
+ * Direction-parameterised: 'before' walks backwards (time `<` reference,
89
+ * ORDER BY DESC, `before_step_N` aliases, bounded by `stepsBefore`); 'after'
90
+ * walks forwards (time `>`, ORDER BY ASC, `after_step_N`, `stepsAfter`).
91
+ * Uses ORDER BY ... LIMIT 1 to fetch the immediate predecessor/successor via index.
92
+ */
93
+ private buildDirectionalCTEsLateral;
94
+ /**
95
+ * Build CTEs for steps BEFORE/AFTER the starting point using ROW_NUMBER()
96
+ *
97
+ * Direction-parameterised: 'before' finds the immediate predecessor (time `<`
98
+ * reference, ROW_NUMBER ORDER BY DESC, `before_step_N` aliases, bounded by
99
+ * `stepsBefore`); 'after' finds the immediate successor (time `>`, ORDER BY ASC,
100
+ * `after_step_N`, `stepsAfter`). For sunburst mode, accumulates event_path
101
+ * (prepend for before, append for after).
102
+ */
103
+ private buildDirectionalCTEsWindow;
104
+ /**
105
+ * Build a single node-aggregation UNION arm for a before/after step.
106
+ *
107
+ * Sankey groups by `event_type` (converging paths); sunburst groups by
108
+ * `event_path` (unique tree branches). The node-id prefix and layer are
109
+ * emitted via sql.raw() because they're hardcoded constants (not user input)
110
+ * and avoid multi-digit parameter issues in DuckDB.
111
+ */
112
+ private buildNodeArm;
113
+ /**
114
+ * Build a single link-aggregation UNION arm between two adjacent step CTEs
115
+ * (before→before or after→after). Sankey keys transitions on `event_type`,
116
+ * sunburst on `event_path`. Source/target id prefixes are sql.raw() constants.
117
+ */
118
+ private buildAdjacentLinkArm;
119
+ /**
120
+ * Build the nodes aggregation CTE
121
+ * Aggregates counts per (layer, event_type) combination using UNION ALL
122
+ * For sunburst mode, aggregates by event_path for unique tree branches
123
+ */
124
+ private buildNodesAggregationCTE;
125
+ /**
126
+ * Build the links aggregation CTE
127
+ * Counts transitions between adjacent layers
128
+ * For sunburst mode, uses event_path for unique branch identification
129
+ */
130
+ private buildLinksAggregationCTE;
131
+ /**
132
+ * Build the final result CTE
133
+ * Combines nodes and links into a single result set with record_type discriminator
134
+ */
135
+ private buildFinalResultCTE;
136
+ }