drizzle-cube 0.8.0 → 0.8.2

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 (329) hide show
  1. package/dist/adapters/ActivityGridChart.config-Bc7mPqcf.cjs +1 -0
  2. package/dist/adapters/ActivityGridChart.config-Dd2YDeaM.js +2 -0
  3. package/dist/adapters/AreaChart.config-BqNusnpg.js +2 -0
  4. package/dist/adapters/AreaChart.config-dI84V34B.cjs +1 -0
  5. package/dist/adapters/BarChart.config-B9MQjgLJ.cjs +1 -0
  6. package/dist/adapters/BarChart.config-Cq_qcxBA.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-XmtRN2xq.cjs +1 -0
  8. package/dist/adapters/BoxPlotChart.config-Zc-JGV-W.js +2 -0
  9. package/dist/adapters/BubbleChart.config-CU_18uxb.js +2 -0
  10. package/dist/adapters/BubbleChart.config-CbhOzA6-.cjs +1 -0
  11. package/dist/adapters/CandlestickChart.config-Bwo3uaa-.js +2 -0
  12. package/dist/adapters/CandlestickChart.config-CmRBlWFv.cjs +1 -0
  13. package/dist/adapters/DataTable.config-7JNSj6qQ.js +2 -0
  14. package/dist/adapters/DataTable.config-DNxm1sYk.cjs +1 -0
  15. package/dist/adapters/DotStripChart.config-B7Dl-T1h.js +2 -0
  16. package/dist/adapters/DotStripChart.config-Co4g1fpZ.cjs +1 -0
  17. package/dist/adapters/FunnelChart.config-D1TpuGtL.cjs +1 -0
  18. package/dist/adapters/FunnelChart.config-vuZScOHQ.js +2 -0
  19. package/dist/adapters/GaugeChart.config-BMgUHKhC.cjs +1 -0
  20. package/dist/adapters/GaugeChart.config-zdpFydo6.js +2 -0
  21. package/dist/adapters/HeatMapChart.config-4XMab1zq.js +2 -0
  22. package/dist/adapters/HeatMapChart.config-C-Ns6QBq.cjs +1 -0
  23. package/dist/adapters/KpiDelta.config-BGdqsHcc.js +2 -0
  24. package/dist/adapters/KpiDelta.config-DuNxrGIi.cjs +1 -0
  25. package/dist/adapters/KpiNumber.config-CkPWpcSz.js +2 -0
  26. package/dist/adapters/KpiNumber.config-DMGmuA3i.cjs +1 -0
  27. package/dist/adapters/KpiText.config-Bvtuv8vE.js +2 -0
  28. package/dist/adapters/KpiText.config-DOMLO16U.cjs +1 -0
  29. package/dist/adapters/LineChart.config-CJmTSmZ1.js +2 -0
  30. package/dist/adapters/LineChart.config-CrkGu0aa.cjs +1 -0
  31. package/dist/adapters/MarkdownChart.config-BgY5Xc97.cjs +1 -0
  32. package/dist/adapters/MarkdownChart.config-Cm6G4Yuh.js +2 -0
  33. package/dist/adapters/MeasureProfileChart.config-BYwDo_ox.cjs +1 -0
  34. package/dist/adapters/MeasureProfileChart.config-Dt7npubZ.js +2 -0
  35. package/dist/adapters/PieChart.config-BRbPctBN.cjs +1 -0
  36. package/dist/adapters/PieChart.config-HZofeody.js +2 -0
  37. package/dist/adapters/ProportionBarChart.config-B_rTtGZr.cjs +1 -0
  38. package/dist/adapters/ProportionBarChart.config-ChCSoM0L.js +2 -0
  39. package/dist/adapters/RadarChart.config-B9OdMEib.js +2 -0
  40. package/dist/adapters/RadarChart.config-BOgPD2Kz.cjs +1 -0
  41. package/dist/adapters/RadialBarChart.config-CeP7jEbq.js +2 -0
  42. package/dist/adapters/RadialBarChart.config-sivA1Jmo.cjs +1 -0
  43. package/dist/adapters/RecordsTable.config-BInSgo-G.js +2 -0
  44. package/dist/adapters/RecordsTable.config-CVmxLdjz.cjs +1 -0
  45. package/dist/adapters/RetentionCombinedChart.config-8ry7gh6X.cjs +1 -0
  46. package/dist/adapters/RetentionCombinedChart.config-Bxtxnlcf.js +2 -0
  47. package/dist/adapters/RetentionHeatmap.config-DCtOD8dO.js +2 -0
  48. package/dist/adapters/RetentionHeatmap.config-i-LgmmIT.cjs +1 -0
  49. package/dist/adapters/SankeyChart.config-DfpeHfNT.cjs +1 -0
  50. package/dist/adapters/SankeyChart.config-hfM0ACm1.js +2 -0
  51. package/dist/adapters/ScatterChart.config-BD2vfOZ6.js +2 -0
  52. package/dist/adapters/ScatterChart.config-CdpvRueF.cjs +1 -0
  53. package/dist/adapters/SunburstChart.config-Boyt88L_.cjs +1 -0
  54. package/dist/adapters/SunburstChart.config-BvrofzMv.js +2 -0
  55. package/dist/adapters/TreeMapChart.config-DBrqwtqT.js +2 -0
  56. package/dist/adapters/TreeMapChart.config-KcRLlZAG.cjs +1 -0
  57. package/dist/adapters/WaterfallChart.config-CuCGaIl5.cjs +1 -0
  58. package/dist/adapters/WaterfallChart.config-DZ8H0V2L.js +2 -0
  59. package/dist/adapters/{compiler-CQJ5GOwF.js → compiler-BFLAXV7W.js} +1160 -1861
  60. package/dist/adapters/compiler-DG6dLFQU.cjs +166 -0
  61. package/dist/adapters/core/index.cjs +1 -1
  62. package/dist/adapters/core/index.js +1 -1
  63. package/dist/adapters/{core-DgTGXxDu.cjs → core-CrJu6vJY.cjs} +1 -1
  64. package/dist/adapters/{core-DXkuSUBg.js → core-l3KMTu9u.js} +3 -3
  65. package/dist/adapters/express/index.cjs +1 -1
  66. package/dist/adapters/express/index.js +5 -5
  67. package/dist/adapters/fastify/index.cjs +1 -1
  68. package/dist/adapters/fastify/index.js +23 -23
  69. package/dist/{server/google-eKAc20al.js → adapters/google-DRY7jnOh.js} +46 -28
  70. package/dist/adapters/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
  71. package/dist/adapters/handler-CRGZ8gd2.cjs +25 -0
  72. package/dist/adapters/{handler-CphYSZRh.js → handler-DESp4wPg.js} +454 -237
  73. package/dist/adapters/hono/index.cjs +1 -1
  74. package/dist/adapters/hono/index.js +4 -4
  75. package/dist/adapters/mcp-tools.cjs +1 -1
  76. package/dist/adapters/mcp-tools.js +2 -2
  77. package/dist/adapters/mcp-transport-BqdBHmXL.js +730 -0
  78. package/dist/adapters/mcp-transport-D8xZJLPD.cjs +42 -0
  79. package/dist/adapters/nextjs/index.cjs +1 -1
  80. package/dist/adapters/nextjs/index.js +5 -5
  81. package/dist/adapters/{openai-CBrN4nxl.js → openai-BJyU4kvE.js} +3 -3
  82. package/dist/adapters/{openai-CSzWluuv.cjs → openai-DH9MtcLA.cjs} +1 -1
  83. package/dist/adapters/{openai-D-VMcPao.js → openai-DK_KWiI7.js} +1 -1
  84. package/dist/adapters/{openai-CI9vGKSf.cjs → openai-GO3M7Hwi.cjs} +2 -2
  85. package/dist/adapters/{utils-DkmShl5f.js → utils-BhlkVCzZ.js} +1985 -1122
  86. package/dist/adapters/utils-C1JpSDOX.cjs +128 -0
  87. package/dist/adapters/utils.cjs +1 -1
  88. package/dist/adapters/utils.d.ts +17 -3
  89. package/dist/adapters/utils.js +1 -1
  90. package/dist/cjs/adapters/utils.d.ts +17 -3
  91. package/dist/cjs/client/charts/chartConfigRegistry.d.ts +7 -0
  92. package/dist/cjs/client/charts/chartConfigs.d.ts +17 -1
  93. package/dist/cjs/client/client/CubeClient.d.ts +11 -1
  94. package/dist/cjs/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
  95. package/dist/cjs/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
  96. package/dist/cjs/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
  97. package/dist/cjs/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
  98. package/dist/cjs/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
  99. package/dist/cjs/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
  100. package/dist/cjs/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
  101. package/dist/cjs/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
  102. package/dist/cjs/client/components/charts/DotStripChart.config.d.ts +15 -0
  103. package/dist/cjs/client/components/charts/DotStripChart.d.ts +4 -0
  104. package/dist/cjs/client/components/charts/DotStripChart.helpers.d.ts +91 -0
  105. package/dist/cjs/client/components/charts/RecordsTable.config.d.ts +10 -0
  106. package/dist/cjs/client/components/charts/RecordsTable.d.ts +4 -0
  107. package/dist/cjs/client/components/charts/recordsTableHooks.d.ts +68 -0
  108. package/dist/cjs/client/icons/types.d.ts +2 -0
  109. package/dist/cjs/client/index.d.ts +2 -2
  110. package/dist/cjs/client/types.d.ts +97 -1
  111. package/dist/cjs/client/utils/recordsTableUtils.d.ts +71 -0
  112. package/dist/cjs/client/utils/rowLinkUtils.d.ts +35 -0
  113. package/dist/cjs/server/agent/chart-validation.d.ts +1 -1
  114. package/dist/cjs/server/ai/chart-schema.d.ts +117 -0
  115. package/dist/cjs/server/ai/discovery-helpers.d.ts +14 -0
  116. package/dist/cjs/server/ai/discovery.d.ts +6 -0
  117. package/dist/cjs/server/ai/query-schema.d.ts +1 -1
  118. package/dist/cjs/server/attribute-dimensions.d.ts +11 -8
  119. package/dist/cjs/server/builders/group-by-builder.d.ts +15 -0
  120. package/dist/cjs/server/compiler.d.ts +3 -4
  121. package/dist/cjs/server/executor.d.ts +15 -0
  122. package/dist/cjs/server/index.d.ts +2 -0
  123. package/dist/cjs/server/query-handlers.d.ts +1 -0
  124. package/dist/cjs/server/query-validator.d.ts +36 -4
  125. package/dist/cjs/server/types/core.d.ts +5 -0
  126. package/dist/cjs/server/types/cube.d.ts +12 -0
  127. package/dist/cjs/server/types/query.d.ts +8 -0
  128. package/dist/cli/index.cjs +134 -52
  129. package/dist/client/charts/chartConfigRegistry.d.ts +7 -0
  130. package/dist/client/charts/chartConfigs.d.ts +17 -1
  131. package/dist/client/charts.js +13 -13
  132. package/dist/client/chunks/{DashboardEditModal-9An5EDAz.js → DashboardEditModal-BliiIHcI.js} +1653 -1188
  133. package/dist/client/chunks/DashboardEditModal-BliiIHcI.js.map +1 -0
  134. package/dist/client/chunks/DotStripChart-ChwsVeRU.js +408 -0
  135. package/dist/client/chunks/DotStripChart-ChwsVeRU.js.map +1 -0
  136. package/dist/client/chunks/{ProportionBarChart-BVcbGY2C.js → ProportionBarChart-D-Qt9nkF.js} +3 -3
  137. package/dist/client/chunks/{ProportionBarChart-BVcbGY2C.js.map → ProportionBarChart-D-Qt9nkF.js.map} +1 -1
  138. package/dist/client/chunks/RecordsTable-aG-QYXOH.js +556 -0
  139. package/dist/client/chunks/RecordsTable-aG-QYXOH.js.map +1 -0
  140. package/dist/client/chunks/{RetentionCombinedChart-D68Rvdi-.js → RetentionCombinedChart-BRZ9w7ah.js} +3 -3
  141. package/dist/client/chunks/{RetentionCombinedChart-D68Rvdi-.js.map → RetentionCombinedChart-BRZ9w7ah.js.map} +1 -1
  142. package/dist/client/chunks/{RetentionHeatmap-CE7BAjrB.js → RetentionHeatmap-LkTt89pK.js} +2 -2
  143. package/dist/client/chunks/{RetentionHeatmap-CE7BAjrB.js.map → RetentionHeatmap-LkTt89pK.js.map} +1 -1
  144. package/dist/client/chunks/{analysis-builder-D1pYvvwc.js → analysis-builder-C0gJ3kDD.js} +169 -168
  145. package/dist/client/chunks/{analysis-builder-D1pYvvwc.js.map → analysis-builder-C0gJ3kDD.js.map} +1 -1
  146. package/dist/client/chunks/{analysis-builder-shared-BQvwUc6z.js → analysis-builder-shared-dqcpl_WL.js} +965 -954
  147. package/dist/client/chunks/analysis-builder-shared-dqcpl_WL.js.map +1 -0
  148. package/dist/client/chunks/{chart-activity-grid-DvD_4wJz.js → chart-activity-grid-CJzxC18G.js} +175 -84
  149. package/dist/client/chunks/chart-activity-grid-CJzxC18G.js.map +1 -0
  150. package/dist/client/chunks/{chart-area-DPp3hSOK.js → chart-area-C66dgy84.js} +21 -21
  151. package/dist/client/chunks/{chart-area-DPp3hSOK.js.map → chart-area-C66dgy84.js.map} +1 -1
  152. package/dist/client/chunks/{chart-bar-Od3pOyZ0.js → chart-bar-D9kiSOCT.js} +5 -5
  153. package/dist/client/chunks/{chart-bar-Od3pOyZ0.js.map → chart-bar-D9kiSOCT.js.map} +1 -1
  154. package/dist/client/chunks/{chart-box-plot-l0iFn2n2.js → chart-box-plot-FsLIMisc.js} +2 -2
  155. package/dist/client/chunks/{chart-box-plot-l0iFn2n2.js.map → chart-box-plot-FsLIMisc.js.map} +1 -1
  156. package/dist/client/chunks/{chart-bubble-Dl0RcP8N.js → chart-bubble-BzyvrqKs.js} +2 -2
  157. package/dist/client/chunks/{chart-bubble-Dl0RcP8N.js.map → chart-bubble-BzyvrqKs.js.map} +1 -1
  158. package/dist/client/chunks/{chart-candlestick-DZMqbscF.js → chart-candlestick-6lD35bLw.js} +2 -2
  159. package/dist/client/chunks/{chart-candlestick-DZMqbscF.js.map → chart-candlestick-6lD35bLw.js.map} +1 -1
  160. package/dist/client/chunks/{chart-data-table-DgiNBOWf.js → chart-data-table-Cou9qOab.js} +1222 -1029
  161. package/dist/client/chunks/chart-data-table-Cou9qOab.js.map +1 -0
  162. package/dist/client/chunks/{chart-funnel-YLZlyN1X.js → chart-funnel-B0775aaT.js} +2 -2
  163. package/dist/client/chunks/{chart-funnel-YLZlyN1X.js.map → chart-funnel-B0775aaT.js.map} +1 -1
  164. package/dist/client/chunks/{chart-gauge-BsqE2wwF.js → chart-gauge-pf-2E8w9.js} +3 -3
  165. package/dist/client/chunks/{chart-gauge-BsqE2wwF.js.map → chart-gauge-pf-2E8w9.js.map} +1 -1
  166. package/dist/client/chunks/{chart-heat-map-BsND8RM_.js → chart-heat-map-EzVGe6fl.js} +3 -3
  167. package/dist/client/chunks/{chart-heat-map-BsND8RM_.js.map → chart-heat-map-EzVGe6fl.js.map} +1 -1
  168. package/dist/client/chunks/{chart-kpi-delta-m0azuva-.js → chart-kpi-delta-lfskDdx4.js} +3 -3
  169. package/dist/client/chunks/{chart-kpi-delta-m0azuva-.js.map → chart-kpi-delta-lfskDdx4.js.map} +1 -1
  170. package/dist/client/chunks/{chart-kpi-number-6JS15SqF.js → chart-kpi-number-BnsofbTf.js} +5 -5
  171. package/dist/client/chunks/{chart-kpi-number-6JS15SqF.js.map → chart-kpi-number-BnsofbTf.js.map} +1 -1
  172. package/dist/client/chunks/{chart-kpi-text-BqX8p8Jn.js → chart-kpi-text-U5EdmdkV.js} +3 -3
  173. package/dist/client/chunks/{chart-kpi-text-BqX8p8Jn.js.map → chart-kpi-text-U5EdmdkV.js.map} +1 -1
  174. package/dist/client/chunks/{chart-line-NCmpxBfE.js → chart-line-IwXqPY80.js} +3 -3
  175. package/dist/client/chunks/{chart-line-NCmpxBfE.js.map → chart-line-IwXqPY80.js.map} +1 -1
  176. package/dist/client/chunks/{chart-markdown-ZOobqiiX.js → chart-markdown-yxN_xBP9.js} +2 -2
  177. package/dist/client/chunks/{chart-markdown-ZOobqiiX.js.map → chart-markdown-yxN_xBP9.js.map} +1 -1
  178. package/dist/client/chunks/{chart-measure-profile-CBAZaicJ.js → chart-measure-profile-Bs4vhBJQ.js} +3 -3
  179. package/dist/client/chunks/{chart-measure-profile-CBAZaicJ.js.map → chart-measure-profile-Bs4vhBJQ.js.map} +1 -1
  180. package/dist/client/chunks/{chart-pie-ChrasEI8.js → chart-pie-LDJfDXfX.js} +15 -15
  181. package/dist/client/chunks/{chart-pie-ChrasEI8.js.map → chart-pie-LDJfDXfX.js.map} +1 -1
  182. package/dist/client/chunks/{chart-radar-CxSVF7yL.js → chart-radar-BZY6TP9m.js} +13 -13
  183. package/dist/client/chunks/{chart-radar-CxSVF7yL.js.map → chart-radar-BZY6TP9m.js.map} +1 -1
  184. package/dist/client/chunks/{chart-radial-bar--SN0Wph0.js → chart-radial-bar-aga05X7h.js} +3 -3
  185. package/dist/client/chunks/{chart-radial-bar--SN0Wph0.js.map → chart-radial-bar-aga05X7h.js.map} +1 -1
  186. package/dist/client/chunks/{chart-sankey-CDOSGg9r.js → chart-sankey-MRCoWFd4.js} +2 -2
  187. package/dist/client/chunks/{chart-sankey-CDOSGg9r.js.map → chart-sankey-MRCoWFd4.js.map} +1 -1
  188. package/dist/client/chunks/{chart-scatter-DgcEF-kI.js → chart-scatter-DP-nn9hH.js} +3 -3
  189. package/dist/client/chunks/{chart-scatter-DgcEF-kI.js.map → chart-scatter-DP-nn9hH.js.map} +1 -1
  190. package/dist/client/chunks/{chart-sunburst-MB-jlGBm.js → chart-sunburst-DE4EX7zi.js} +3 -3
  191. package/dist/client/chunks/{chart-sunburst-MB-jlGBm.js.map → chart-sunburst-DE4EX7zi.js.map} +1 -1
  192. package/dist/client/chunks/{chart-tree-map-DeDXveVd.js → chart-tree-map-C3O6uQcP.js} +3 -3
  193. package/dist/client/chunks/{chart-tree-map-DeDXveVd.js.map → chart-tree-map-C3O6uQcP.js.map} +1 -1
  194. package/dist/client/chunks/{chart-waterfall-ur4vkO1j.js → chart-waterfall-DU2Fg_7P.js} +3 -3
  195. package/dist/client/chunks/{chart-waterfall-ur4vkO1j.js.map → chart-waterfall-DU2Fg_7P.js.map} +1 -1
  196. package/dist/client/chunks/charts-core-DnirPG1F.js +190 -0
  197. package/dist/client/chunks/charts-core-DnirPG1F.js.map +1 -0
  198. package/dist/client/chunks/charts-loader-tCSbqT7H.js +87 -0
  199. package/dist/client/chunks/charts-loader-tCSbqT7H.js.map +1 -0
  200. package/dist/client/chunks/{en-US-BE6VoG0o.js → en-US-HP6FHuNy.js} +3 -1
  201. package/dist/client/chunks/{en-US-BE6VoG0o.js.map → en-US-HP6FHuNy.js.map} +1 -1
  202. package/dist/client/chunks/{nl-NL-CMXHDBr0.js → nl-NL-B9VnaVAm.js} +89 -1
  203. package/dist/client/chunks/nl-NL-B9VnaVAm.js.map +1 -0
  204. package/dist/client/chunks/{schema-visualization-BEbFtUIL.js → schema-visualization-o1zzuMQy.js} +3 -3
  205. package/dist/client/chunks/{schema-visualization-BEbFtUIL.js.map → schema-visualization-o1zzuMQy.js.map} +1 -1
  206. package/dist/client/chunks/{useDirtyStateTracking-CSDg96Rw.js → useDirtyStateTracking-DTYbmRBn.js} +15 -15
  207. package/dist/client/chunks/{useDirtyStateTracking-CSDg96Rw.js.map → useDirtyStateTracking-DTYbmRBn.js.map} +1 -1
  208. package/dist/client/chunks/{useExplainAI-BnkoZ-zS.js → useExplainAI-MuC9jBn-.js} +16 -16
  209. package/dist/client/chunks/{useExplainAI-BnkoZ-zS.js.map → useExplainAI-MuC9jBn-.js.map} +1 -1
  210. package/dist/client/chunks/{vendor-BmJDaduD.js → vendor-XQT9APIq.js} +49 -49
  211. package/dist/client/chunks/{vendor-BmJDaduD.js.map → vendor-XQT9APIq.js.map} +1 -1
  212. package/dist/client/client/CubeClient.d.ts +11 -1
  213. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
  214. package/dist/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
  215. package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
  216. package/dist/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
  217. package/dist/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
  218. package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
  219. package/dist/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
  220. package/dist/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
  221. package/dist/client/components/charts/DotStripChart.config.d.ts +15 -0
  222. package/dist/client/components/charts/DotStripChart.d.ts +4 -0
  223. package/dist/client/components/charts/DotStripChart.helpers.d.ts +91 -0
  224. package/dist/client/components/charts/RecordsTable.config.d.ts +10 -0
  225. package/dist/client/components/charts/RecordsTable.d.ts +4 -0
  226. package/dist/client/components/charts/recordsTableHooks.d.ts +68 -0
  227. package/dist/client/components.js +1 -1
  228. package/dist/client/hooks.js +3 -3
  229. package/dist/client/icons/types.d.ts +2 -0
  230. package/dist/client/icons.js +2 -2
  231. package/dist/client/index.d.ts +2 -2
  232. package/dist/client/index.js +213 -213
  233. package/dist/client/providers.js +1 -1
  234. package/dist/client/schema.js +1 -1
  235. package/dist/client/styles.css +1 -1
  236. package/dist/client/types.d.ts +97 -1
  237. package/dist/client/utils/recordsTableUtils.d.ts +71 -0
  238. package/dist/client/utils/rowLinkUtils.d.ts +35 -0
  239. package/dist/client/utils.js +14 -14
  240. package/dist/client-bundle-stats.html +1 -1
  241. package/dist/mcp-app/mcp-app.html +101 -101
  242. package/dist/server/agent/chart-validation.d.ts +1 -1
  243. package/dist/server/ai/chart-schema.d.ts +117 -0
  244. package/dist/server/ai/discovery-helpers.d.ts +14 -0
  245. package/dist/server/ai/discovery.d.ts +6 -0
  246. package/dist/server/ai/query-schema.d.ts +1 -1
  247. package/dist/server/attribute-dimensions.d.ts +11 -8
  248. package/dist/server/builders/group-by-builder.d.ts +15 -0
  249. package/dist/server/compiler.d.ts +3 -4
  250. package/dist/server/executor.d.ts +15 -0
  251. package/dist/{adapters/google-eKAc20al.js → server/google-DRY7jnOh.js} +46 -28
  252. package/dist/server/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
  253. package/dist/server/index.cjs +34 -34
  254. package/dist/server/index.d.ts +2 -0
  255. package/dist/server/index.js +1913 -1445
  256. package/dist/server/query-handlers.d.ts +1 -0
  257. package/dist/server/query-validator.d.ts +36 -4
  258. package/dist/server/types/core.d.ts +5 -0
  259. package/dist/server/types/cube.d.ts +12 -0
  260. package/dist/server/types/query.d.ts +8 -0
  261. package/package.json +1 -1
  262. package/dist/adapters/ActivityGridChart.config-BQhBE_Mr.js +0 -2
  263. package/dist/adapters/ActivityGridChart.config-C3tSuOGV.cjs +0 -1
  264. package/dist/adapters/AreaChart.config-3cme8HyQ.js +0 -2
  265. package/dist/adapters/AreaChart.config-BSxrT52Z.cjs +0 -1
  266. package/dist/adapters/BarChart.config-BKS8IecE.cjs +0 -1
  267. package/dist/adapters/BarChart.config-lt_7PdIi.js +0 -2
  268. package/dist/adapters/BoxPlotChart.config-B7qvRnrF.cjs +0 -1
  269. package/dist/adapters/BoxPlotChart.config-Dv6ECj2j.js +0 -2
  270. package/dist/adapters/BubbleChart.config-BrIH7OAy.cjs +0 -1
  271. package/dist/adapters/BubbleChart.config-Fhotb7Pg.js +0 -2
  272. package/dist/adapters/CandlestickChart.config-CWH41FmF.cjs +0 -1
  273. package/dist/adapters/CandlestickChart.config-RPtXuxsX.js +0 -2
  274. package/dist/adapters/DataTable.config-71L0GzlT.js +0 -2
  275. package/dist/adapters/DataTable.config-BsOMQq3J.cjs +0 -1
  276. package/dist/adapters/FunnelChart.config-Cqte9C04.cjs +0 -1
  277. package/dist/adapters/FunnelChart.config-DJtwWeNz.js +0 -2
  278. package/dist/adapters/GaugeChart.config-WkwZ9VdS.cjs +0 -1
  279. package/dist/adapters/GaugeChart.config-vpVQlP5B.js +0 -2
  280. package/dist/adapters/HeatMapChart.config-DcmkDl07.cjs +0 -1
  281. package/dist/adapters/HeatMapChart.config-DsmMgGxJ.js +0 -2
  282. package/dist/adapters/KpiDelta.config-DVy561BH.js +0 -2
  283. package/dist/adapters/KpiDelta.config-dpqwLHNE.cjs +0 -1
  284. package/dist/adapters/KpiNumber.config-927l8nq8.js +0 -2
  285. package/dist/adapters/KpiNumber.config-BqFBMfPf.cjs +0 -1
  286. package/dist/adapters/KpiText.config-C-fZXuHq.cjs +0 -1
  287. package/dist/adapters/KpiText.config-CWoXuhMA.js +0 -2
  288. package/dist/adapters/LineChart.config-DTp7pqOY.js +0 -2
  289. package/dist/adapters/LineChart.config-DUGvSjcH.cjs +0 -1
  290. package/dist/adapters/MarkdownChart.config-23Dmv2Ty.cjs +0 -1
  291. package/dist/adapters/MarkdownChart.config-Cb2TnS0I.js +0 -2
  292. package/dist/adapters/MeasureProfileChart.config-B2qbWdhy.cjs +0 -1
  293. package/dist/adapters/MeasureProfileChart.config-CvBCeI5b.js +0 -2
  294. package/dist/adapters/PieChart.config-BzJb13QA.js +0 -2
  295. package/dist/adapters/PieChart.config-plCn5Ehr.cjs +0 -1
  296. package/dist/adapters/ProportionBarChart.config-1r-_moBH.cjs +0 -1
  297. package/dist/adapters/ProportionBarChart.config-CN6TtHTp.js +0 -2
  298. package/dist/adapters/RadarChart.config-BYhdj9M7.js +0 -2
  299. package/dist/adapters/RadarChart.config-CeUMP-1g.cjs +0 -1
  300. package/dist/adapters/RadialBarChart.config-B88yXNsq.cjs +0 -1
  301. package/dist/adapters/RadialBarChart.config-ZMK9HMoh.js +0 -2
  302. package/dist/adapters/RetentionCombinedChart.config-B5yvgUHM.cjs +0 -1
  303. package/dist/adapters/RetentionCombinedChart.config-Dd-YMdK8.js +0 -2
  304. package/dist/adapters/RetentionHeatmap.config-BYzDleoV.cjs +0 -1
  305. package/dist/adapters/RetentionHeatmap.config-Dvj7yTB0.js +0 -2
  306. package/dist/adapters/SankeyChart.config-CPFRmgFb.cjs +0 -1
  307. package/dist/adapters/SankeyChart.config-ClgqXM1N.js +0 -2
  308. package/dist/adapters/ScatterChart.config-CvJiqPa5.cjs +0 -1
  309. package/dist/adapters/ScatterChart.config-DLZ3rYMq.js +0 -2
  310. package/dist/adapters/SunburstChart.config-C_1V5hoQ.cjs +0 -1
  311. package/dist/adapters/SunburstChart.config-FNU75NCg.js +0 -2
  312. package/dist/adapters/TreeMapChart.config-CprZk_YF.js +0 -2
  313. package/dist/adapters/TreeMapChart.config-DNwd0ge9.cjs +0 -1
  314. package/dist/adapters/WaterfallChart.config-BBhcN_Fh.cjs +0 -1
  315. package/dist/adapters/WaterfallChart.config-H7s6SSV3.js +0 -2
  316. package/dist/adapters/compiler-BaLO10VN.cjs +0 -166
  317. package/dist/adapters/handler-DrRT6c14.cjs +0 -25
  318. package/dist/adapters/mcp-transport-BGkSz-ZT.cjs +0 -40
  319. package/dist/adapters/mcp-transport-fJud19xz.js +0 -606
  320. package/dist/adapters/utils-BY0-KFyI.cjs +0 -128
  321. package/dist/client/chunks/DashboardEditModal-9An5EDAz.js.map +0 -1
  322. package/dist/client/chunks/analysis-builder-shared-BQvwUc6z.js.map +0 -1
  323. package/dist/client/chunks/chart-activity-grid-DvD_4wJz.js.map +0 -1
  324. package/dist/client/chunks/chart-data-table-DgiNBOWf.js.map +0 -1
  325. package/dist/client/chunks/charts-core-BAH5pkSB.js +0 -215
  326. package/dist/client/chunks/charts-core-BAH5pkSB.js.map +0 -1
  327. package/dist/client/chunks/charts-loader-eToV8je7.js +0 -85
  328. package/dist/client/chunks/charts-loader-eToV8je7.js.map +0 -1
  329. package/dist/client/chunks/nl-NL-CMXHDBr0.js.map +0 -1
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-BY0-KFyI.cjs");exports.buildTransformedQuery=e.t,exports.calculateQueryComplexity=e.n,exports.formatCubeResponse=e.r,exports.formatErrorResponse=e.i,exports.formatMetaResponse=e.a,exports.formatSqlResponse=e.o,exports.formatSqlString=e.S,exports.generateRequestId=e.s,exports.getDatabaseType=e.c,exports.handleBatchRequest=e.l,exports.handleDiscover=e.p,exports.handleDryRun=e.u,exports.handleLoad=e.m,exports.handleSuggest=e.d,exports.handleValidate=e.f,exports.normalizeQueryFields=e.h;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./utils-C1JpSDOX.cjs");exports.buildTransformedQuery=e.t,exports.calculateQueryComplexity=e.n,exports.formatCubeResponse=e.r,exports.formatErrorResponse=e.i,exports.formatMetaResponse=e.a,exports.formatSqlResponse=e.o,exports.formatSqlString=e.S,exports.generateRequestId=e.s,exports.getDatabaseType=e.c,exports.handleBatchRequest=e.l,exports.handleDiscover=e.p,exports.handleDryRun=e.u,exports.handleLoad=e.m,exports.handleSuggest=e.d,exports.handleValidate=e.f,exports.normalizeQueryFields=e.h;
@@ -1,4 +1,4 @@
1
- import { SemanticLayerCompiler, SemanticQuery, SecurityContext, QuerySuggestion, AIValidationResult } from '../server/index.js';
1
+ import { SemanticLayerCompiler, SemanticQuery, SecurityContext, QuerySuggestion, AIValidationResult, QueryValidationIssue } from '../server/index.js';
2
2
  import { normalizeQueryFields } from '../server/query-handlers.js';
3
3
  import { MCPPromptResolver, MCPResourceResolver, MCPInstructionsResolver } from './mcp-transport.js';
4
4
  export { handleDiscover, handleLoad } from '../server/query-handlers.js';
@@ -45,9 +45,11 @@ export declare function formatCubeResponse(query: SemanticQuery, result: {
45
45
  measures?: string[];
46
46
  suggestion?: string;
47
47
  }>;
48
+ total?: number;
48
49
  }, semanticLayer: SemanticLayerCompiler): {
49
50
  queryType: string;
50
51
  results: {
52
+ total?: number | undefined;
51
53
  warnings?: {
52
54
  code: string;
53
55
  message: string;
@@ -86,6 +88,7 @@ export declare function formatCubeResponse(query: SemanticQuery, result: {
86
88
  order?: Record<string, "asc" | "desc">;
87
89
  fillMissingDatesValue?: number | null;
88
90
  ungrouped?: boolean;
91
+ total?: boolean;
89
92
  funnel?: import('../server/index.js').FunnelQueryConfig;
90
93
  flow?: import('../server/types/flow.js').FlowQueryConfig;
91
94
  retention?: import('../server/index.js').RetentionQueryConfig;
@@ -167,9 +170,16 @@ export declare function formatMetaResponse(metadata: any): {
167
170
  };
168
171
  };
169
172
  /**
170
- * Standard error response format
173
+ * Standard error response format.
174
+ *
175
+ * `issues` is additive: the `error` string keeps its exact shape for existing
176
+ * clients, while a caller that needs to act on a *particular* unknown member —
177
+ * a dashboard dropping the column for a deleted attribute, say — has something
178
+ * structured to read. Splitting the joined string back apart is not reliable,
179
+ * since the per-field hints contain the same separator.
171
180
  */
172
- export declare function formatErrorResponse(error: string | Error, status?: number): {
181
+ export declare function formatErrorResponse(error: string | Error, status?: number, issues?: QueryValidationIssue[]): {
182
+ issues?: QueryValidationIssue[] | undefined;
173
183
  error: string;
174
184
  status: number;
175
185
  };
@@ -197,6 +207,7 @@ export declare function handleBatchRequest(queries: SemanticQuery[], securityCon
197
207
  results: ({
198
208
  queryType: string;
199
209
  results: {
210
+ total?: number | undefined;
200
211
  warnings?: {
201
212
  code: string;
202
213
  message: string;
@@ -235,6 +246,7 @@ export declare function handleBatchRequest(queries: SemanticQuery[], securityCon
235
246
  order?: Record<string, "asc" | "desc">;
236
247
  fillMissingDatesValue?: number | null;
237
248
  ungrouped?: boolean;
249
+ total?: boolean;
238
250
  funnel?: import('../server/index.js').FunnelQueryConfig;
239
251
  flow?: import('../server/types/flow.js').FlowQueryConfig;
240
252
  retention?: import('../server/index.js').RetentionQueryConfig;
@@ -242,10 +254,12 @@ export declare function handleBatchRequest(queries: SemanticQuery[], securityCon
242
254
  slowQuery: boolean;
243
255
  success: boolean;
244
256
  error?: undefined;
257
+ issues?: undefined;
245
258
  query?: undefined;
246
259
  } | {
247
260
  success: boolean;
248
261
  error: string;
262
+ issues: QueryValidationIssue[] | undefined;
249
263
  query: SemanticQuery;
250
264
  })[];
251
265
  }>;
@@ -1,2 +1,2 @@
1
- import { S as e, a as t, c as n, d as r, f as i, h as a, i as o, l as s, m as c, n as l, o as u, p as d, r as f, s as p, t as m, u as h } from "./utils-DkmShl5f.js";
1
+ import { S as e, a as t, c as n, d as r, f as i, h as a, i as o, l as s, m as c, n as l, o as u, p as d, r as f, s as p, t as m, u as h } from "./utils-BhlkVCzZ.js";
2
2
  export { m as buildTransformedQuery, l as calculateQueryComplexity, f as formatCubeResponse, o as formatErrorResponse, t as formatMetaResponse, u as formatSqlResponse, e as formatSqlString, p as generateRequestId, n as getDatabaseType, s as handleBatchRequest, d as handleDiscover, h as handleDryRun, c as handleLoad, r as handleSuggest, i as handleValidate, a as normalizeQueryFields };
@@ -1,4 +1,4 @@
1
- import { SemanticLayerCompiler, SemanticQuery, SecurityContext, QuerySuggestion, AIValidationResult } from '../server/index.js';
1
+ import { SemanticLayerCompiler, SemanticQuery, SecurityContext, QuerySuggestion, AIValidationResult, QueryValidationIssue } from '../server/index.js';
2
2
  import { normalizeQueryFields } from '../server/query-handlers.js';
3
3
  import { MCPPromptResolver, MCPResourceResolver, MCPInstructionsResolver } from './mcp-transport.js';
4
4
  export { handleDiscover, handleLoad } from '../server/query-handlers.js';
@@ -45,9 +45,11 @@ export declare function formatCubeResponse(query: SemanticQuery, result: {
45
45
  measures?: string[];
46
46
  suggestion?: string;
47
47
  }>;
48
+ total?: number;
48
49
  }, semanticLayer: SemanticLayerCompiler): {
49
50
  queryType: string;
50
51
  results: {
52
+ total?: number | undefined;
51
53
  warnings?: {
52
54
  code: string;
53
55
  message: string;
@@ -86,6 +88,7 @@ export declare function formatCubeResponse(query: SemanticQuery, result: {
86
88
  order?: Record<string, "asc" | "desc">;
87
89
  fillMissingDatesValue?: number | null;
88
90
  ungrouped?: boolean;
91
+ total?: boolean;
89
92
  funnel?: import('../server/index.js').FunnelQueryConfig;
90
93
  flow?: import('../server/types/flow.js').FlowQueryConfig;
91
94
  retention?: import('../server/index.js').RetentionQueryConfig;
@@ -167,9 +170,16 @@ export declare function formatMetaResponse(metadata: any): {
167
170
  };
168
171
  };
169
172
  /**
170
- * Standard error response format
173
+ * Standard error response format.
174
+ *
175
+ * `issues` is additive: the `error` string keeps its exact shape for existing
176
+ * clients, while a caller that needs to act on a *particular* unknown member —
177
+ * a dashboard dropping the column for a deleted attribute, say — has something
178
+ * structured to read. Splitting the joined string back apart is not reliable,
179
+ * since the per-field hints contain the same separator.
171
180
  */
172
- export declare function formatErrorResponse(error: string | Error, status?: number): {
181
+ export declare function formatErrorResponse(error: string | Error, status?: number, issues?: QueryValidationIssue[]): {
182
+ issues?: QueryValidationIssue[] | undefined;
173
183
  error: string;
174
184
  status: number;
175
185
  };
@@ -197,6 +207,7 @@ export declare function handleBatchRequest(queries: SemanticQuery[], securityCon
197
207
  results: ({
198
208
  queryType: string;
199
209
  results: {
210
+ total?: number | undefined;
200
211
  warnings?: {
201
212
  code: string;
202
213
  message: string;
@@ -235,6 +246,7 @@ export declare function handleBatchRequest(queries: SemanticQuery[], securityCon
235
246
  order?: Record<string, "asc" | "desc">;
236
247
  fillMissingDatesValue?: number | null;
237
248
  ungrouped?: boolean;
249
+ total?: boolean;
238
250
  funnel?: import('../server/index.js').FunnelQueryConfig;
239
251
  flow?: import('../server/types/flow.js').FlowQueryConfig;
240
252
  retention?: import('../server/index.js').RetentionQueryConfig;
@@ -242,10 +254,12 @@ export declare function handleBatchRequest(queries: SemanticQuery[], securityCon
242
254
  slowQuery: boolean;
243
255
  success: boolean;
244
256
  error?: undefined;
257
+ issues?: undefined;
245
258
  query?: undefined;
246
259
  } | {
247
260
  success: boolean;
248
261
  error: string;
262
+ issues: QueryValidationIssue[] | undefined;
249
263
  query: SemanticQuery;
250
264
  })[];
251
265
  }>;
@@ -7,6 +7,13 @@ import { ChartTypeConfig, ChartConfigRegistry } from './chartConfigs.js';
7
7
  * stay here in full because the server agent reads them synchronously.
8
8
  */
9
9
  export declare const chartConfigRegistry: ChartConfigRegistry;
10
+ /**
11
+ * Whether a chart lists records rather than aggregates, and so needs an
12
+ * `ungrouped` query.
13
+ *
14
+ * Reads the eager registry so the query builders need no chart-type switch.
15
+ */
16
+ export declare function isRecordGrainChart(chartType: string): boolean;
10
17
  /**
11
18
  * Register a custom chart config into the registry.
12
19
  * Used by the chart plugin system.
@@ -18,6 +18,13 @@ export interface AxisDropZoneConfig {
18
18
  emptyText?: string;
19
19
  /** Enable L/R axis toggle for items in this drop zone (for dual Y-axis support) */
20
20
  enableDualAxis?: boolean;
21
+ /**
22
+ * Keep this zone out of automatic chart-config inference (the agent's
23
+ * `inferChartConfig`). For zones whose meaning is subtractive or opt-in — the
24
+ * records table's hidden columns being the case in point — filling them from
25
+ * the query changes what renders rather than completing a partial config.
26
+ */
27
+ excludeFromInference?: boolean;
21
28
  }
22
29
  /**
23
30
  * Configuration for a single display option
@@ -28,7 +35,7 @@ export interface DisplayOptionConfig {
28
35
  /** Display label for the option */
29
36
  label: string;
30
37
  /** Type of input control to render */
31
- type: 'boolean' | 'string' | 'number' | 'select' | 'color' | 'paletteColor' | 'axisFormat' | 'stringArray' | 'buttonGroup' | 'thresholdBands';
38
+ type: 'boolean' | 'string' | 'number' | 'select' | 'color' | 'paletteColor' | 'axisFormat' | 'stringArray' | 'buttonGroup' | 'thresholdBands' | 'columnFormats' | 'rowLink';
32
39
  /** Default value for the option */
33
40
  defaultValue?: any;
34
41
  /** Placeholder text for string/number inputs */
@@ -125,6 +132,15 @@ export interface ChartTypeConfig {
125
132
  * Omit to mean "always available".
126
133
  */
127
134
  isAvailable?: (ctx: ChartAvailabilityContext) => ChartAvailability;
135
+ /**
136
+ * This chart lists individual records rather than aggregates, so the query
137
+ * built for it must be `ungrouped`.
138
+ *
139
+ * Declared here rather than switched on a chart type inside the query
140
+ * builders, and read from the eager registry so those stay data-driven — and
141
+ * so a custom chart can opt in through the same flag.
142
+ */
143
+ recordGrain?: boolean;
128
144
  }
129
145
  /**
130
146
  * Registry of all chart type configurations
@@ -1,4 +1,14 @@
1
- import { CubeQuery, CubeApiOptions, CubeResultSet, ExplainResult, ExplainOptions } from '../types.js';
1
+ import { CubeQuery, CubeApiOptions, CubeResultSet, CubeValidationIssue, ExplainResult, ExplainOptions } from '../types.js';
2
+ /**
3
+ * A failed query, carrying the server's structured validation detail when it
4
+ * sent any. A caller can then react to one dead member — dropping a column for
5
+ * a deleted attribute, say — instead of only seeing prose.
6
+ */
7
+ export declare class CubeQueryError extends Error {
8
+ readonly status?: number;
9
+ readonly issues?: CubeValidationIssue[];
10
+ constructor(message: string, status?: number, issues?: CubeValidationIssue[]);
11
+ }
2
12
  export declare class CubeClient {
3
13
  private apiUrl;
4
14
  private headers;
@@ -1,11 +1,13 @@
1
- import { ChartType, ChartDisplayConfig, ColorPalette } from '../../types.js';
1
+ import { ChartAxisConfig, ChartType, ChartDisplayConfig, ColorPalette } from '../../types.js';
2
2
  interface AnalysisDisplayConfigPanelProps {
3
3
  chartType: ChartType;
4
4
  displayConfig: ChartDisplayConfig;
5
5
  colorPalette?: ColorPalette;
6
+ /** Passed to options that are keyed by field, such as the records table's column formats. */
7
+ chartConfig?: ChartAxisConfig;
6
8
  onDisplayConfigChange: (config: ChartDisplayConfig) => void;
7
9
  /** Keys to exclude from displayOptionsConfig rendering (e.g., ['content'] when content is managed elsewhere) */
8
10
  excludeKeys?: string[];
9
11
  }
10
- export default function AnalysisDisplayConfigPanel({ chartType, displayConfig, colorPalette, onDisplayConfigChange, excludeKeys, }: AnalysisDisplayConfigPanelProps): import("react").JSX.Element;
12
+ export default function AnalysisDisplayConfigPanel({ chartType, displayConfig, colorPalette, chartConfig, onDisplayConfigChange, excludeKeys, }: AnalysisDisplayConfigPanelProps): import("react").JSX.Element;
11
13
  export {};
@@ -0,0 +1,10 @@
1
+ import { ChartAxisConfig, ColorPalette, ColumnFormatConfig } from '../../types.js';
2
+ interface ColumnFormatsEditorProps {
3
+ value: Record<string, ColumnFormatConfig>;
4
+ chartConfig?: ChartAxisConfig;
5
+ colorPalette?: ColorPalette;
6
+ onChange: (value: Record<string, ColumnFormatConfig> | undefined) => void;
7
+ t: (key: string, params?: Record<string, string | number>) => string;
8
+ }
9
+ export default function ColumnFormatsEditor({ value, chartConfig, colorPalette, onChange, t }: ColumnFormatsEditorProps): import("react").JSX.Element;
10
+ export {};
@@ -1,10 +1,11 @@
1
- import { ChartDisplayConfig, ColorPalette } from '../../types.js';
1
+ import { ChartAxisConfig, ChartDisplayConfig, ColorPalette } from '../../types.js';
2
2
  import { DisplayOptionConfig } from '../../charts/chartConfigs.js';
3
3
  interface DisplayOptionControlProps {
4
4
  option: DisplayOptionConfig;
5
5
  displayConfig: ChartDisplayConfig;
6
6
  colorPalette?: ColorPalette;
7
+ chartConfig?: ChartAxisConfig;
7
8
  onDisplayConfigChange: (config: ChartDisplayConfig) => void;
8
9
  }
9
- export default function DisplayOptionControl({ option, displayConfig, colorPalette, onDisplayConfigChange, }: DisplayOptionControlProps): import("react").JSX.Element | null;
10
+ export default function DisplayOptionControl({ option, displayConfig, colorPalette, chartConfig, onDisplayConfigChange, }: DisplayOptionControlProps): import("react").JSX.Element | null;
10
11
  export {};
@@ -4,7 +4,13 @@ import { MetricItem, BreakdownItem } from '../types.js';
4
4
  * Convert metrics and breakdowns to CubeQuery format
5
5
  * Handles comparison mode by building compareDateRange for time dimensions
6
6
  */
7
- export declare function buildCubeQuery(metrics: MetricItem[], breakdowns: BreakdownItem[], filters: Filter[], order?: Record<string, 'asc' | 'desc'>, preserveComparisonFilters?: boolean, limit?: number): CubeQuery;
7
+ export declare function buildCubeQuery(metrics: MetricItem[], breakdowns: BreakdownItem[], filters: Filter[], order?: Record<string, 'asc' | 'desc'>, preserveComparisonFilters?: boolean, limit?: number,
8
+ /**
9
+ * Record-grain charts list rows rather than aggregates — see
10
+ * `ChartTypeConfig.recordGrain`. Without this, editing a records-table
11
+ * portlet in the builder silently rebuilds its query as a grouped one.
12
+ */
13
+ ungrouped?: boolean): CubeQuery;
8
14
  /**
9
15
  * Check if a query has any content
10
16
  */
@@ -1,4 +1,4 @@
1
- import { ChartAxisConfig, ChartDisplayConfig, ChartType, CubeQuery } from '../../types.js';
1
+ import { ChartAxisConfig, ChartDisplayConfig, ChartPagination, ChartType, CubeQuery } from '../../types.js';
2
2
  import { FlowChartData } from '../../types/flow.js';
3
3
  import { RetentionChartData } from '../../types/retention.js';
4
4
  import { ColorPalette } from '../../utils/colorPalettes.js';
@@ -22,6 +22,7 @@ export interface PortletChartProps {
22
22
  chartConfig?: ChartAxisConfig;
23
23
  displayConfig?: ChartDisplayConfig;
24
24
  activeQuery: CubeQuery | null;
25
+ pagination?: ChartPagination;
25
26
  colorPalette?: ColorPalette;
26
27
  drillEnabled: boolean;
27
28
  currentChartConfig?: ChartAxisConfig | null;
@@ -1,4 +1,4 @@
1
- import { ChartAxisConfig, ChartDisplayConfig, ChartType, CubeQuery } from '../../types.js';
1
+ import { ChartAxisConfig, ChartDisplayConfig, ChartPagination, ChartType, CubeQuery } from '../../types.js';
2
2
  import { FlowChartData } from '../../types/flow.js';
3
3
  import { RetentionChartData } from '../../types/retention.js';
4
4
  import { ColorPalette } from '../../utils/colorPalettes.js';
@@ -26,6 +26,9 @@ export interface PortletChartViewProps {
26
26
  flowChartData: FlowChartData | null;
27
27
  retentionChartData: RetentionChartData | null;
28
28
  activeQuery: CubeQuery | null;
29
+ pagination?: ChartPagination;
30
+ /** Members dropped because the model no longer has them; surfaced as a note. */
31
+ droppedMembers?: string[];
29
32
  drill: DrillInteraction;
30
33
  isDrillEnabled: boolean;
31
34
  onNavigateBack: () => void;
@@ -0,0 +1,24 @@
1
+ import { CubeQuery } from '../../types.js';
2
+ export interface UsePortletDeadMembersParams {
3
+ queryObject: CubeQuery | null;
4
+ /** The error from the last attempt, if it failed. */
5
+ error: unknown;
6
+ }
7
+ export interface UsePortletDeadMembersResult {
8
+ /** The query with dead members removed — the original when there are none. */
9
+ query: CubeQuery | null;
10
+ /** Members dropped so far, for the note shown above the chart. */
11
+ droppedMembers: string[];
12
+ }
13
+ /**
14
+ * Pull the prunable members out of a failed query, or `null` when the failure
15
+ * is not one we may recover from.
16
+ *
17
+ * A single unknown *filter* member makes the whole error unrecoverable, even
18
+ * alongside prunable ones: re-running without the dead columns would still
19
+ * carry the dead filter.
20
+ */
21
+ export declare function prunableMembers(error: unknown): string[] | null;
22
+ /** Remove members from everything that projects or orders by them. */
23
+ export declare function withoutMembers(query: CubeQuery, members: string[]): CubeQuery;
24
+ export declare function usePortletDeadMembers({ queryObject, error }: UsePortletDeadMembersParams): UsePortletDeadMembersResult;
@@ -0,0 +1,21 @@
1
+ import { ChartPagination, ChartType, CubeQuery } from '../../types.js';
2
+ /** Fixed page sizes, matching the records table's own `pageSize` option. */
3
+ export declare const PAGE_SIZE_OPTIONS: number[];
4
+ export interface UsePortletPaginationParams {
5
+ chartType: ChartType;
6
+ /** The query to paginate — the drilled query when one is active, else the base query. */
7
+ activeQuery: CubeQuery | null;
8
+ /** Authored page size from the portlet's display config. */
9
+ pageSize?: number;
10
+ }
11
+ export interface UsePortletPaginationResult {
12
+ /** `activeQuery` with limit/offset/order/total merged in, or it unchanged when paging is off. */
13
+ paginatedQuery: CubeQuery | null;
14
+ /**
15
+ * Passed to the chart as `ChartProps.pagination`; undefined when paging is
16
+ * off. `total` is left unset here — it arrives with the response, so the
17
+ * caller fills it in from the result set.
18
+ */
19
+ pagination?: Omit<ChartPagination, 'total'>;
20
+ }
21
+ export declare function usePortletPagination({ chartType, activeQuery, pageSize: authoredPageSize }: UsePortletPaginationParams): UsePortletPaginationResult;
@@ -0,0 +1,15 @@
1
+ import { ChartTypeConfig } from '../../charts/chartConfigs.js';
2
+ /**
3
+ * Configuration for the dot strip (beeswarm) chart type.
4
+ *
5
+ * Eager metadata (`label`, `description`, `useCase`, `isAvailable`) lives in the
6
+ * unified `chartRegistry` entry (the single source of truth) — see
7
+ * `src/client/charts/chartRegistry.ts`. This file owns the lazy-loaded shape:
8
+ * drop zones, display options, clickable elements, validation.
9
+ *
10
+ * The zone *keys* are the standard `xAxis` / `yAxis` / `series` (so no
11
+ * `ChartAxisConfig` change is needed), but the visual axes are transposed —
12
+ * bands are rows and the measure runs horizontally — so the labels name the
13
+ * roles rather than the axes.
14
+ */
15
+ export declare const dotStripChartConfig: ChartTypeConfig;
@@ -0,0 +1,4 @@
1
+ import { default as React } from 'react';
2
+ import { ChartProps } from '../../types.js';
3
+ declare const DotStripChart: React.MemoExoticComponent<({ data, chartConfig, displayConfig, height, colorPalette, onDataPointClick, drillEnabled, }: ChartProps) => React.JSX.Element>;
4
+ export default DotStripChart;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Layout maths for the dot strip (beeswarm) chart.
3
+ *
4
+ * Kept out of the component — like `ScatterChart.helpers.ts` and
5
+ * `BubbleChart.render.ts` — so the swarm packing can be unit-tested without a
6
+ * DOM. Everything here is pure: same input, same output, every time.
7
+ */
8
+ /** Hard caps so one pathological band cannot blow up the layout. */
9
+ export declare const MAX_BANDS = 50;
10
+ export declare const MAX_DOTS_PER_BAND = 500;
11
+ export declare const MAX_LANES = 8;
12
+ export declare const MIN_ROW_HEIGHT = 44;
13
+ export declare const MAX_ROW_HEIGHT = 220;
14
+ /** Vertical breathing room added above and below the outermost lanes. */
15
+ export declare const ROW_VERTICAL_PADDING = 12;
16
+ export declare const DOT_RADIUS: Record<'small' | 'medium' | 'large', number>;
17
+ /** Gap between the edges of two adjacent dots in the same lane. */
18
+ export declare const DOT_GAP = 1.5;
19
+ export interface DotDatum {
20
+ /** Raw numeric value of the measure. */
21
+ value: number;
22
+ /** Identity label for the dot (from the optional series dimension). */
23
+ label: string;
24
+ /** The source row, handed back on click. */
25
+ row: Record<string, unknown>;
26
+ }
27
+ export interface PlacedDot extends DotDatum {
28
+ /** Pixel x within the plot area. */
29
+ x: number;
30
+ /** Lane index: 0 is the centre line, then +1, -1, +2, -2, … */
31
+ lane: number;
32
+ /** Pixel y offset from the band's centre line. */
33
+ y: number;
34
+ }
35
+ export interface BandStats {
36
+ /** The band's own label (the value of the band dimension). */
37
+ label: string;
38
+ dots: PlacedDot[];
39
+ count: number;
40
+ median: number | null;
41
+ min: number | null;
42
+ max: number | null;
43
+ /**
44
+ * max / min. `null` when it cannot be stated meaningfully — fewer than two
45
+ * dots, or a non-positive minimum (the ratio is infinite or sign-flipped).
46
+ */
47
+ spread: number | null;
48
+ /** True when the band has rows but not one usable numeric value. */
49
+ noData: boolean;
50
+ /** Rendered height of this band's row, in px. */
51
+ height: number;
52
+ /** True when the band's dots were truncated at MAX_DOTS_PER_BAND. */
53
+ truncated: boolean;
54
+ }
55
+ export declare function parseNumeric(v: unknown): number | null;
56
+ export declare function median(sortedValues: number[]): number | null;
57
+ /**
58
+ * Greedy deterministic beeswarm packing.
59
+ *
60
+ * Dots are sorted by x (ties broken by label, so the output is stable for a
61
+ * given input rather than dependent on row order) and each is dropped into the
62
+ * first lane — searched outward from the centre — where it clears every dot
63
+ * already in that lane by at least `2r + gap`. Beyond `MAX_LANES` the dot is
64
+ * forced onto the outermost lane and simply overlaps; the surface-coloured
65
+ * stroke keeps that readable.
66
+ *
67
+ * A force simulation would do this too, but it settles asynchronously and
68
+ * non-deterministically, which makes it untestable and jittery on re-render.
69
+ */
70
+ export declare function packSwarm(dots: DotDatum[], scale: (v: number) => number, radius: number): PlacedDot[];
71
+ /** Row height needed to show every lane the swarm used. */
72
+ export declare function swarmHeight(placed: PlacedDot[], radius: number): number;
73
+ /** max / min, or null when the ratio would be meaningless. */
74
+ export declare function computeSpread(min: number | null, max: number | null, count: number): number | null;
75
+ export type BandSort = 'none' | 'valueDesc' | 'valueAsc' | 'count';
76
+ /**
77
+ * Group rows into bands, in the order requested. Sorting happens before the
78
+ * swarm is packed so row heights follow the rows the user actually sees.
79
+ */
80
+ export declare function groupIntoBands(rows: Record<string, unknown>[], bandField: string, valueField: string, labelField: string | undefined, sort: BandSort): Array<{
81
+ label: string;
82
+ values: DotDatum[];
83
+ truncated: boolean;
84
+ }>;
85
+ /** Nicely padded numeric domain across every dot in every band. */
86
+ export declare function computeDomain(values: number[]): {
87
+ min: number;
88
+ max: number;
89
+ };
90
+ /** Evenly spaced axis ticks across the domain. */
91
+ export declare function computeTicks(min: number, max: number, count?: number): number[];
@@ -0,0 +1,10 @@
1
+ import { ChartTypeConfig } from '../../charts/chartConfigs.js';
2
+ /**
3
+ * Configuration for the records table.
4
+ *
5
+ * Eager metadata (`label`, `description`, `useCase`, `isAvailable`) lives in the
6
+ * unified `chartRegistry` entry — see `src/client/charts/chartRegistry.ts`. This
7
+ * file owns the lazy-loaded shape: drop zones, display options, clickable
8
+ * elements, validation.
9
+ */
10
+ export declare const recordsTableConfig: ChartTypeConfig;
@@ -0,0 +1,4 @@
1
+ import { default as React } from 'react';
2
+ import { ChartProps } from '../../types.js';
3
+ declare const RecordsTable: React.MemoExoticComponent<({ data, chartConfig, displayConfig, queryObject, colorPalette, height, onDataPointClick, drillEnabled, pagination }: ChartProps) => React.JSX.Element>;
4
+ export default RecordsTable;
@@ -0,0 +1,68 @@
1
+ import { default as React } from 'react';
2
+ import { ChartAxisConfig, ChartPagination, CubeQuery } from '../../types.js';
3
+ export declare const DEFAULT_PAGE_SIZE = 25;
4
+ /**
5
+ * Which columns to render, in which order.
6
+ *
7
+ * The author's arrangement comes from the Columns drop zone; a viewer can drag
8
+ * a header on top of it, and that order is remembered per column set. It is
9
+ * *reconciled* rather than substituted, so a column the author adds later still
10
+ * appears instead of being swallowed by a stale local order.
11
+ */
12
+ export declare function useRecordsColumns(params: {
13
+ rows: Record<string, unknown>[];
14
+ chartConfig?: ChartAxisConfig;
15
+ queryObject?: CubeQuery;
16
+ }): {
17
+ columns: string[];
18
+ storageKey: string;
19
+ draggedColumn: string | null;
20
+ didDragRef: React.MutableRefObject<boolean>;
21
+ startColumnDrag: (column: string) => void;
22
+ endColumnDrag: () => void;
23
+ dropColumn: (target: string) => void;
24
+ };
25
+ /**
26
+ * Drag-resizable column widths, remembered per column set.
27
+ *
28
+ * A chart has no portlet id and no write path back to `displayConfig`, so an
29
+ * authored `columnWidths` acts as the default a viewer's own drags layer over —
30
+ * the same arrangement the data browser uses.
31
+ */
32
+ export declare function useColumnWidths(params: {
33
+ columns: string[];
34
+ storageKey: string;
35
+ authored?: Record<string, number>;
36
+ }): {
37
+ columnWidths: Record<string, number>;
38
+ totalWidth: number | undefined;
39
+ tableRef: React.RefObject<HTMLTableElement>;
40
+ didResizeRef: React.MutableRefObject<boolean>;
41
+ startResize: (event: React.MouseEvent, column: string) => void;
42
+ };
43
+ /**
44
+ * Sorting and paging, server-side when the host offers it.
45
+ *
46
+ * With a `pagination` prop the host re-queries, so both must go through it:
47
+ * sorting only the loaded page would put the wrong rows on page 1. Without one
48
+ * — the AnalysisBuilder preview, the notebook, plugin hosts — the table sorts
49
+ * and pages over the rows it already has.
50
+ */
51
+ export declare function useRecordsPaging(params: {
52
+ rows: Record<string, unknown>[];
53
+ pagination?: ChartPagination;
54
+ authoredPageSize?: number;
55
+ }): {
56
+ sort: {
57
+ column: string;
58
+ direction: "asc" | "desc";
59
+ } | null;
60
+ toggleSort: (column: string) => void;
61
+ visibleRows: Record<string, unknown>[];
62
+ page: number;
63
+ pageSize: number;
64
+ pageCount: number;
65
+ rowCount: number;
66
+ goToPage: (next: number) => void;
67
+ showPager: boolean;
68
+ };
@@ -80,6 +80,7 @@ export interface IconRegistry {
80
80
  chartRadialBar: IconDefinition;
81
81
  chartTreemap: IconDefinition;
82
82
  chartTable: IconDefinition;
83
+ chartRecordsTable: IconDefinition;
83
84
  chartActivityGrid: IconDefinition;
84
85
  chartKpiNumber: IconDefinition;
85
86
  chartKpiDelta: IconDefinition;
@@ -91,6 +92,7 @@ export interface IconRegistry {
91
92
  chartHeatmap: IconDefinition;
92
93
  chartRetention: IconDefinition;
93
94
  chartBoxPlot: IconDefinition;
95
+ chartDotStrip: IconDefinition;
94
96
  chartWaterfall: IconDefinition;
95
97
  chartCandlestick: IconDefinition;
96
98
  chartMeasureProfile: IconDefinition;
@@ -33,7 +33,7 @@ useCubeFeatures } from './providers/CubeProvider.js';
33
33
  export { ScrollContainerProvider, useScrollContainer } from './providers/ScrollContainerContext.js';
34
34
  export { useCubeFieldLabel } from './hooks/useCubeFieldLabel.js';
35
35
  export { createCubeClient } from './client/CubeClient.js';
36
- export { CubeClient } from './client/CubeClient.js';
36
+ export { CubeClient, CubeQueryError } from './client/CubeClient.js';
37
37
  export { useCubeMetaQuery, useCubeLoadQuery, useCubeQuery, useMultiCubeLoadQuery, useDryRunQuery, useMultiDryRunQueries, useDryRunQueries, useExplainQuery, createExplainQueryKey, useExplainAI, useFunnelQuery, createFunnelQueryKey, useFlowQuery, createFlowQueryKey, } from './hooks/queries/index.js';
38
38
  export type { UseCubeMetaQueryOptions, UseCubeMetaQueryResult, UseCubeLoadQueryOptions, UseCubeLoadQueryResult, UseMultiCubeLoadQueryOptions, UseMultiCubeLoadQueryResult, DebugDataEntry, UseExplainQueryOptions, UseExplainQueryResult, UseExplainAIOptions, UseExplainAIResult, UseFlowQueryOptions, UseFlowQueryResult, } from './hooks/queries/index.js';
39
39
  export { useAnalysisBuilder } from './hooks/useAnalysisBuilderHook.js';
@@ -55,7 +55,7 @@ export { useTheme } from './hooks/useTheme.js';
55
55
  export { useScrollDetection } from './hooks/useScrollDetection.js';
56
56
  export { useElementVisibility } from './hooks/useElementVisibility.js';
57
57
  export { useDrillInteraction } from './hooks/useDrillInteraction.js';
58
- export type { PortletConfig, ChartType, BuiltInChartType, ChartAxisConfig, ChartDisplayConfig, ChartProps, ColorPalette, CubeQuery, CubeQueryOptions, CubeApiOptions, DashboardConfig, PortletGroup, PortletGroupCell, FeaturesConfig, XlsExportFeatureConfig, ThumbnailFeatureConfig, MultiQueryConfig, QueryMergeStrategy, FunnelBindingKey, FunnelBindingKeyMapping, FunnelStep, FunnelConfig, FunnelStepResult, FunnelExecutionResult, FunnelChartData, FunnelValidationError, FunnelValidationResult, UseFunnelQueryOptions, UseFunnelQueryResult, ServerFlowQuery, FlowQueryConfig, FlowChartData, FlowSliceState, SankeyNode, SankeyLink, FlowStartingStep, FlowResultRow, } from './types.js';
58
+ export type { PortletConfig, ChartType, BuiltInChartType, ChartAxisConfig, ChartDisplayConfig, ChartProps, ColorPalette, CubeQuery, CubeQueryOptions, CubeApiOptions, CubeValidationIssue, ChartPagination, ColumnFormatConfig, ColumnFormatKind, RowLinkConfig, DashboardConfig, PortletGroup, PortletGroupCell, FeaturesConfig, XlsExportFeatureConfig, ThumbnailFeatureConfig, MultiQueryConfig, QueryMergeStrategy, FunnelBindingKey, FunnelBindingKeyMapping, FunnelStep, FunnelConfig, FunnelStepResult, FunnelExecutionResult, FunnelChartData, FunnelValidationError, FunnelValidationResult, UseFunnelQueryOptions, UseFunnelQueryResult, ServerFlowQuery, FlowQueryConfig, FlowChartData, FlowSliceState, SankeyNode, SankeyLink, FlowStartingStep, FlowResultRow, } from './types.js';
59
59
  export { isQueryConfig, isFunnelConfig, isFlowConfig, isRetentionConfig, isMultiQuery, isSingleQuery, isValidAnalysisConfig, createDefaultQueryConfig, createDefaultFunnelConfig, createDefaultFlowConfig, createDefaultRetentionConfig, createDefaultConfig, isValidAnalysisWorkspace, createDefaultWorkspace } from './types/analysisConfig.js';
60
60
  export type { AnalysisConfig, QueryAnalysisConfig, FunnelAnalysisConfig, FlowAnalysisConfig, RetentionAnalysisConfig, AnalysisWorkspace } from './types/analysisConfig.js';
61
61
  export { isMultiQueryConfig, isServerFunnelQuery, isServerFlowQuery, isSankeyData } from './types.js';