drizzle-cube 0.10.0 → 0.11.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 (334) hide show
  1. package/dist/adapters/ActivityGridChart.config-XMtoteb6.js +2 -0
  2. package/dist/adapters/ActivityGridChart.config-h1AXPvn0.cjs +1 -0
  3. package/dist/adapters/AreaChart.config-DYf9wufo.cjs +1 -0
  4. package/dist/adapters/AreaChart.config-We6b53aT.js +2 -0
  5. package/dist/adapters/BarChart.config-4SX44IYv.cjs +1 -0
  6. package/dist/adapters/BarChart.config-CwBnyptL.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-BzNe-FlW.cjs +1 -0
  8. package/dist/adapters/BoxPlotChart.config-mfAHqmcp.js +2 -0
  9. package/dist/adapters/BubbleChart.config-CBT5jMdc.cjs +1 -0
  10. package/dist/adapters/BubbleChart.config-DxG_Umal.js +2 -0
  11. package/dist/adapters/CandlestickChart.config-Cqw3XP1h.js +2 -0
  12. package/dist/adapters/CandlestickChart.config-DPSSlzUD.cjs +1 -0
  13. package/dist/adapters/DataTable.config-DS1bvaDu.js +2 -0
  14. package/dist/adapters/DataTable.config-D_NsMeyz.cjs +1 -0
  15. package/dist/adapters/DotStripChart.config-BApWn6QV.cjs +1 -0
  16. package/dist/adapters/DotStripChart.config-Bdk5-YfB.js +2 -0
  17. package/dist/adapters/FunnelChart.config-BT5up_Bg.cjs +1 -0
  18. package/dist/adapters/FunnelChart.config-ISZiz9fn.js +2 -0
  19. package/dist/adapters/GaugeChart.config-Biaq1cKc.cjs +1 -0
  20. package/dist/adapters/GaugeChart.config-BjGfB84t.js +2 -0
  21. package/dist/adapters/HeatMapChart.config-Bmca8KiH.cjs +1 -0
  22. package/dist/adapters/HeatMapChart.config-uWvR0B-N.js +2 -0
  23. package/dist/adapters/KpiDelta.config-CJeDdj_1.js +2 -0
  24. package/dist/adapters/KpiDelta.config-CKr9pAxL.cjs +1 -0
  25. package/dist/adapters/KpiNumber.config-6YLEF2fy.cjs +1 -0
  26. package/dist/adapters/KpiNumber.config-C00M46GA.js +2 -0
  27. package/dist/adapters/KpiText.config-C8Av_D2W.cjs +1 -0
  28. package/dist/adapters/KpiText.config-bKTHob0C.js +2 -0
  29. package/dist/adapters/LineChart.config-DH68HT_B.js +2 -0
  30. package/dist/adapters/LineChart.config-DPq7GvL9.cjs +1 -0
  31. package/dist/adapters/MarkdownChart.config-CaaJPO3c.js +2 -0
  32. package/dist/adapters/MarkdownChart.config-ca_UyhWJ.cjs +1 -0
  33. package/dist/adapters/MeasureProfileChart.config-C1Il0IqL.cjs +1 -0
  34. package/dist/adapters/MeasureProfileChart.config-DMOnkmb6.js +2 -0
  35. package/dist/adapters/PieChart.config-Bg-8cxWK.js +2 -0
  36. package/dist/adapters/PieChart.config-joJcF--K.cjs +1 -0
  37. package/dist/adapters/ProportionBarChart.config-B2sltKsI.cjs +1 -0
  38. package/dist/adapters/ProportionBarChart.config-BlCedy1v.js +2 -0
  39. package/dist/adapters/RadarChart.config-DD1pX6FZ.js +2 -0
  40. package/dist/adapters/RadarChart.config-DVCCLSVw.cjs +1 -0
  41. package/dist/adapters/RadialBarChart.config--VIE2jMM.js +2 -0
  42. package/dist/adapters/RadialBarChart.config-BZwyWhTg.cjs +1 -0
  43. package/dist/adapters/RecordsTable.config-CTBQc-2r.js +2 -0
  44. package/dist/adapters/RecordsTable.config-DPdO0DL5.cjs +1 -0
  45. package/dist/adapters/RetentionCombinedChart.config-PGVxnkRL.js +2 -0
  46. package/dist/adapters/RetentionCombinedChart.config-mX5PMh82.cjs +1 -0
  47. package/dist/adapters/RetentionHeatmap.config-Co-JMzBm.js +2 -0
  48. package/dist/adapters/RetentionHeatmap.config-Cub3-ksy.cjs +1 -0
  49. package/dist/adapters/SankeyChart.config-BkIyUcAE.cjs +1 -0
  50. package/dist/adapters/SankeyChart.config-DGTnRmYg.js +2 -0
  51. package/dist/adapters/ScatterChart.config-CdZrBorg.js +2 -0
  52. package/dist/adapters/ScatterChart.config-CwN9niUL.cjs +1 -0
  53. package/dist/adapters/SunburstChart.config-D0ZkRSJv.cjs +1 -0
  54. package/dist/adapters/SunburstChart.config-RF3uu5Sa.js +2 -0
  55. package/dist/adapters/TreeMapChart.config-B2Yn_V7p.cjs +1 -0
  56. package/dist/adapters/TreeMapChart.config-diJtcs4D.js +2 -0
  57. package/dist/adapters/WaterfallChart.config-B10PxftT.cjs +1 -0
  58. package/dist/adapters/WaterfallChart.config-BImlkLmR.js +2 -0
  59. package/dist/adapters/chartConfigHelpers-BhME7ow_.cjs +1 -0
  60. package/dist/adapters/{chartConfigHelpers-BsnbxA2c.js → chartConfigHelpers-BsviVhEw.js} +27 -7
  61. package/dist/adapters/compiler-B-yljK02.cjs +166 -0
  62. package/dist/adapters/{compiler-BKg3j2mm.js → compiler-BhityGUO.js} +1146 -1108
  63. package/dist/adapters/core/index.cjs +1 -1
  64. package/dist/adapters/core/index.js +1 -1
  65. package/dist/adapters/{core-JgUTMhxl.cjs → core-CQOrzBNh.cjs} +1 -1
  66. package/dist/adapters/{core-Bmb7XMBz.js → core-xZE0miIu.js} +2 -2
  67. package/dist/adapters/express/index.cjs +1 -1
  68. package/dist/adapters/express/index.js +5 -5
  69. package/dist/adapters/fastify/index.cjs +1 -1
  70. package/dist/adapters/fastify/index.js +23 -23
  71. package/dist/adapters/{handler-B1_zd-qo.js → handler-ByeQ0-1r.js} +238 -234
  72. package/dist/adapters/handler-DSNmfv1R.cjs +16 -0
  73. package/dist/adapters/hono/index.cjs +1 -1
  74. package/dist/adapters/hono/index.js +4 -4
  75. package/dist/adapters/mcp-app-html-CNp0VqS_.cjs +1 -0
  76. package/dist/adapters/mcp-app-html-CvWoYMO3.js +5 -0
  77. package/dist/adapters/mcp-app-html.cjs +1 -1
  78. package/dist/adapters/mcp-app-html.js +1 -1
  79. package/dist/adapters/mcp-tools.cjs +1 -1
  80. package/dist/adapters/mcp-tools.js +3 -3
  81. package/dist/adapters/{mcp-transport-BTmAXLo8.js → mcp-transport-Cy6n4uj1.js} +1 -1
  82. package/dist/adapters/{mcp-transport-DzxluRyH.cjs → mcp-transport-DnLP5FPL.cjs} +1 -1
  83. package/dist/adapters/nextjs/index.cjs +1 -1
  84. package/dist/adapters/nextjs/index.js +5 -5
  85. package/dist/adapters/{openai-Br__Bn2t.cjs → openai-BQl0yJCS.cjs} +2 -2
  86. package/dist/adapters/{openai-BpcMIv4e.js → openai-C4HrjyJj.js} +1 -1
  87. package/dist/adapters/{openai-yfJF-3Rv.js → openai-D3Nt6Bj7.js} +3 -3
  88. package/dist/adapters/{openai-C32tey5N.cjs → openai-z1ai-G4Q.cjs} +1 -1
  89. package/dist/adapters/{utils-i2h5cwI3.js → utils-BaxFceDq.js} +1070 -937
  90. package/dist/adapters/utils-a2p2B6x8.cjs +141 -0
  91. package/dist/adapters/utils.cjs +1 -1
  92. package/dist/adapters/utils.js +1 -1
  93. package/dist/cjs/client/charts/chartConfigHelpers.d.ts +5 -0
  94. package/dist/cjs/client/components/DashboardFilters/useCompactFilterBar.d.ts +5 -0
  95. package/dist/cjs/client/components/analyticsPortlet/usePortletQueryResults.d.ts +3 -1
  96. package/dist/cjs/client/components/dashboardPortletCard/PortletCardHeader.d.ts +2 -0
  97. package/dist/cjs/client/hooks/queries/useCubeLoadQuery.d.ts +7 -0
  98. package/dist/cjs/client/hooks/queries/useMultiCubeLoadQuery.d.ts +7 -0
  99. package/dist/cjs/client/hooks/useAnalysisQuery.d.ts +6 -1
  100. package/dist/cjs/client/index.d.ts +2 -0
  101. package/dist/cjs/client/types.d.ts +3 -0
  102. package/dist/cjs/client/utils/filterUtils.d.ts +30 -0
  103. package/dist/cjs/client/utils/gapFilling.d.ts +52 -0
  104. package/dist/cjs/client/utils/index.d.ts +1 -0
  105. package/dist/cjs/client/utils/joinReachability.d.ts +1 -0
  106. package/dist/cjs/server/ai/query-schema.d.ts +8 -3
  107. package/dist/cjs/server/builders/date-time-builder.d.ts +1 -1
  108. package/dist/cjs/server/builders/date-time-helpers.d.ts +2 -0
  109. package/dist/cjs/server/builders/filter-builder.d.ts +1 -1
  110. package/dist/cjs/server/builders/in-date-range-validation.d.ts +25 -0
  111. package/dist/cjs/server/execution/result-post-processor.d.ts +4 -2
  112. package/dist/cjs/server/executor.d.ts +2 -0
  113. package/dist/cjs/server/gap-filler.d.ts +8 -43
  114. package/dist/cjs/server/types/core.d.ts +2 -0
  115. package/dist/cjs/server/types/cube.d.ts +12 -0
  116. package/dist/cjs/server/types/metadata.d.ts +5 -0
  117. package/dist/cjs/server/types/query.d.ts +2 -1
  118. package/dist/client/charts/chartConfigHelpers.d.ts +5 -0
  119. package/dist/client/charts.js +12 -12
  120. package/dist/client/chunks/{DashboardEditModal-P-HUNrcp.js → DashboardEditModal-CIR4aqr7.js} +2424 -2559
  121. package/dist/client/chunks/DashboardEditModal-CIR4aqr7.js.map +1 -0
  122. package/dist/client/chunks/{DotStripChart-in6QHc0b.js → DotStripChart-B9IVCFPO.js} +3 -3
  123. package/dist/client/chunks/{DotStripChart-in6QHc0b.js.map → DotStripChart-B9IVCFPO.js.map} +1 -1
  124. package/dist/client/chunks/{ProportionBarChart-CjuOm7NT.js → ProportionBarChart-DieF9AzP.js} +3 -3
  125. package/dist/client/chunks/{ProportionBarChart-CjuOm7NT.js.map → ProportionBarChart-DieF9AzP.js.map} +1 -1
  126. package/dist/client/chunks/{RecordsTable-CXXsiaV1.js → RecordsTable-Mo3ai5_M.js} +4 -4
  127. package/dist/client/chunks/{RecordsTable-CXXsiaV1.js.map → RecordsTable-Mo3ai5_M.js.map} +1 -1
  128. package/dist/client/chunks/{RetentionCombinedChart-DFCeEFkx.js → RetentionCombinedChart-Bie4ADyA.js} +3 -3
  129. package/dist/client/chunks/{RetentionCombinedChart-DFCeEFkx.js.map → RetentionCombinedChart-Bie4ADyA.js.map} +1 -1
  130. package/dist/client/chunks/{RetentionHeatmap-jpshJ2Af.js → RetentionHeatmap-qstIAx5B.js} +2 -2
  131. package/dist/client/chunks/{RetentionHeatmap-jpshJ2Af.js.map → RetentionHeatmap-qstIAx5B.js.map} +1 -1
  132. package/dist/client/chunks/{af-ZA-C0dGb_53.js → af-ZA-BglLInx4.js} +13 -1
  133. package/dist/client/chunks/{af-ZA-C0dGb_53.js.map → af-ZA-BglLInx4.js.map} +1 -1
  134. package/dist/client/chunks/{analysis-builder-CRghdHVl.js → analysis-builder-DJNYt7CF.js} +41 -41
  135. package/dist/client/chunks/{analysis-builder-CRghdHVl.js.map → analysis-builder-DJNYt7CF.js.map} +1 -1
  136. package/dist/client/chunks/{analysis-builder-shared-DBSxWIj8.js → analysis-builder-shared-DPLR8upd.js} +487 -483
  137. package/dist/client/chunks/analysis-builder-shared-DPLR8upd.js.map +1 -0
  138. package/dist/client/chunks/{chart-activity-grid-DGazwi4C.js → chart-activity-grid-Ly_-2B-f.js} +22 -4
  139. package/dist/client/chunks/chart-activity-grid-Ly_-2B-f.js.map +1 -0
  140. package/dist/client/chunks/{chart-area-zyLGD-ym.js → chart-area-D3l-71Wy.js} +2 -2
  141. package/dist/client/chunks/{chart-area-zyLGD-ym.js.map → chart-area-D3l-71Wy.js.map} +1 -1
  142. package/dist/client/chunks/{chart-bar-DMCBq8qJ.js → chart-bar-BaTyQOqs.js} +3 -3
  143. package/dist/client/chunks/{chart-bar-DMCBq8qJ.js.map → chart-bar-BaTyQOqs.js.map} +1 -1
  144. package/dist/client/chunks/{chart-box-plot-5Z55A-it.js → chart-box-plot-Cem6PHjz.js} +2 -2
  145. package/dist/client/chunks/{chart-box-plot-5Z55A-it.js.map → chart-box-plot-Cem6PHjz.js.map} +1 -1
  146. package/dist/client/chunks/{chart-bubble-YD28dX8w.js → chart-bubble-DFlfqCDG.js} +2 -2
  147. package/dist/client/chunks/{chart-bubble-YD28dX8w.js.map → chart-bubble-DFlfqCDG.js.map} +1 -1
  148. package/dist/client/chunks/{chart-candlestick-BUMpBI08.js → chart-candlestick-BkAFBXtZ.js} +2 -2
  149. package/dist/client/chunks/{chart-candlestick-BUMpBI08.js.map → chart-candlestick-BkAFBXtZ.js.map} +1 -1
  150. package/dist/client/chunks/{chart-config-area-DsrZCIwF.js → chart-config-area-BnsRQ-MY.js} +35 -14
  151. package/dist/client/chunks/chart-config-area-BnsRQ-MY.js.map +1 -0
  152. package/dist/client/chunks/{chart-config-bar-BixSs43E.js → chart-config-bar-G2HJJBVV.js} +8 -7
  153. package/dist/client/chunks/chart-config-bar-G2HJJBVV.js.map +1 -0
  154. package/dist/client/chunks/{chart-config-kpi-delta-Cl7k6jTj.js → chart-config-kpi-delta-BIAq1Ftg.js} +2 -2
  155. package/dist/client/chunks/{chart-config-kpi-delta-Cl7k6jTj.js.map → chart-config-kpi-delta-BIAq1Ftg.js.map} +1 -1
  156. package/dist/client/chunks/{chart-config-kpi-number-DCcnANWC.js → chart-config-kpi-number-Dgc4gIYu.js} +2 -2
  157. package/dist/client/chunks/{chart-config-kpi-number-DCcnANWC.js.map → chart-config-kpi-number-Dgc4gIYu.js.map} +1 -1
  158. package/dist/client/chunks/{chart-config-line-CBF9Px9b.js → chart-config-line-DLkRs1Zr.js} +9 -8
  159. package/dist/client/chunks/chart-config-line-DLkRs1Zr.js.map +1 -0
  160. package/dist/client/chunks/{chart-config-pie-DZLa6Eqm.js → chart-config-pie-XrHim0C8.js} +2 -2
  161. package/dist/client/chunks/{chart-config-pie-DZLa6Eqm.js.map → chart-config-pie-XrHim0C8.js.map} +1 -1
  162. package/dist/client/chunks/{chart-config-radar-DR6vHHyd.js → chart-config-radar-xNS6Juqc.js} +2 -2
  163. package/dist/client/chunks/{chart-config-radar-DR6vHHyd.js.map → chart-config-radar-xNS6Juqc.js.map} +1 -1
  164. package/dist/client/chunks/{chart-config-radial-bar-DVFou4fB.js → chart-config-radial-bar-ChUChsEe.js} +2 -2
  165. package/dist/client/chunks/{chart-config-radial-bar-DVFou4fB.js.map → chart-config-radial-bar-ChUChsEe.js.map} +1 -1
  166. package/dist/client/chunks/{chart-config-tree-map-Uhise6Bx.js → chart-config-tree-map-CnrJ7OC1.js} +2 -2
  167. package/dist/client/chunks/{chart-config-tree-map-Uhise6Bx.js.map → chart-config-tree-map-CnrJ7OC1.js.map} +1 -1
  168. package/dist/client/chunks/{chart-data-table-BdMo3zVh.js → chart-data-table-Cxd0cdAl.js} +36 -36
  169. package/dist/client/chunks/{chart-data-table-BdMo3zVh.js.map → chart-data-table-Cxd0cdAl.js.map} +1 -1
  170. package/dist/client/chunks/{chart-funnel-BRyZS6ie.js → chart-funnel-71Kn4eeF.js} +2 -2
  171. package/dist/client/chunks/{chart-funnel-BRyZS6ie.js.map → chart-funnel-71Kn4eeF.js.map} +1 -1
  172. package/dist/client/chunks/{chart-gauge-DxgHlZKp.js → chart-gauge-BddS_9oS.js} +3 -3
  173. package/dist/client/chunks/{chart-gauge-DxgHlZKp.js.map → chart-gauge-BddS_9oS.js.map} +1 -1
  174. package/dist/client/chunks/{chart-heat-map-5jHm3f-V.js → chart-heat-map-BQIsrn8m.js} +3 -3
  175. package/dist/client/chunks/{chart-heat-map-5jHm3f-V.js.map → chart-heat-map-BQIsrn8m.js.map} +1 -1
  176. package/dist/client/chunks/{chart-kpi-delta-C84P-mwu.js → chart-kpi-delta-DndbqdZT.js} +3 -3
  177. package/dist/client/chunks/{chart-kpi-delta-C84P-mwu.js.map → chart-kpi-delta-DndbqdZT.js.map} +1 -1
  178. package/dist/client/chunks/{chart-kpi-number-D9GqtBWw.js → chart-kpi-number-DAbfoHMt.js} +5 -5
  179. package/dist/client/chunks/{chart-kpi-number-D9GqtBWw.js.map → chart-kpi-number-DAbfoHMt.js.map} +1 -1
  180. package/dist/client/chunks/{chart-kpi-text-D3HqxXzU.js → chart-kpi-text-D8oQgpxL.js} +3 -3
  181. package/dist/client/chunks/{chart-kpi-text-D3HqxXzU.js.map → chart-kpi-text-D8oQgpxL.js.map} +1 -1
  182. package/dist/client/chunks/{chart-line-IEgiF8Nv.js → chart-line-BNqjUowg.js} +3 -3
  183. package/dist/client/chunks/{chart-line-IEgiF8Nv.js.map → chart-line-BNqjUowg.js.map} +1 -1
  184. package/dist/client/chunks/{chart-markdown-B_2Ed7FJ.js → chart-markdown-DtgpU3xd.js} +2 -2
  185. package/dist/client/chunks/{chart-markdown-B_2Ed7FJ.js.map → chart-markdown-DtgpU3xd.js.map} +1 -1
  186. package/dist/client/chunks/{chart-measure-profile-CWsPrQhH.js → chart-measure-profile-D5nZMWlI.js} +3 -3
  187. package/dist/client/chunks/{chart-measure-profile-CWsPrQhH.js.map → chart-measure-profile-D5nZMWlI.js.map} +1 -1
  188. package/dist/client/chunks/{chart-pie-BEB2sCXF.js → chart-pie-D8r9HCZ4.js} +3 -3
  189. package/dist/client/chunks/{chart-pie-BEB2sCXF.js.map → chart-pie-D8r9HCZ4.js.map} +1 -1
  190. package/dist/client/chunks/{chart-radar-BbSbXKbP.js → chart-radar-R4PuCIWp.js} +3 -3
  191. package/dist/client/chunks/{chart-radar-BbSbXKbP.js.map → chart-radar-R4PuCIWp.js.map} +1 -1
  192. package/dist/client/chunks/{chart-radial-bar-CNYD7tkM.js → chart-radial-bar-hmrSFa6O.js} +3 -3
  193. package/dist/client/chunks/{chart-radial-bar-CNYD7tkM.js.map → chart-radial-bar-hmrSFa6O.js.map} +1 -1
  194. package/dist/client/chunks/{chart-sankey-DKnTIvSr.js → chart-sankey-CFXPybny.js} +2 -2
  195. package/dist/client/chunks/{chart-sankey-DKnTIvSr.js.map → chart-sankey-CFXPybny.js.map} +1 -1
  196. package/dist/client/chunks/{chart-scatter-CSWF6-lx.js → chart-scatter-CH82md0L.js} +3 -3
  197. package/dist/client/chunks/{chart-scatter-CSWF6-lx.js.map → chart-scatter-CH82md0L.js.map} +1 -1
  198. package/dist/client/chunks/{chart-sunburst-CdGzCq7q.js → chart-sunburst-CTj95eEC.js} +3 -3
  199. package/dist/client/chunks/{chart-sunburst-CdGzCq7q.js.map → chart-sunburst-CTj95eEC.js.map} +1 -1
  200. package/dist/client/chunks/{chart-tree-map-BiXB7EiM.js → chart-tree-map-CmysE4bF.js} +3 -3
  201. package/dist/client/chunks/{chart-tree-map-BiXB7EiM.js.map → chart-tree-map-CmysE4bF.js.map} +1 -1
  202. package/dist/client/chunks/{chart-waterfall-5rSDeLEZ.js → chart-waterfall-Bv1mPvlB.js} +3 -3
  203. package/dist/client/chunks/{chart-waterfall-5rSDeLEZ.js.map → chart-waterfall-Bv1mPvlB.js.map} +1 -1
  204. package/dist/client/chunks/{charts-core-CKpkoMCa.js → charts-core-BdEQgbqN.js} +2 -2
  205. package/dist/client/chunks/{charts-core-CKpkoMCa.js.map → charts-core-BdEQgbqN.js.map} +1 -1
  206. package/dist/client/chunks/charts-loader-DoLQqFXg.js +87 -0
  207. package/dist/client/chunks/{charts-loader-BTI0UPK4.js.map → charts-loader-DoLQqFXg.js.map} +1 -1
  208. package/dist/client/chunks/gapFilling-DKBRHcQL.js +391 -0
  209. package/dist/client/chunks/gapFilling-DKBRHcQL.js.map +1 -0
  210. package/dist/client/chunks/{nl-NL-kRjxedTf.js → nl-NL-DVZXf8U7.js} +20 -2
  211. package/dist/client/chunks/nl-NL-DVZXf8U7.js.map +1 -0
  212. package/dist/client/chunks/{schema-visualization-BbvL74Sf.js → schema-visualization-MlRrcJQH.js} +3 -3
  213. package/dist/client/chunks/{schema-visualization-BbvL74Sf.js.map → schema-visualization-MlRrcJQH.js.map} +1 -1
  214. package/dist/client/chunks/{useDirtyStateTracking-BfG1lX_3.js → useDirtyStateTracking-DSkxAJ29.js} +317 -292
  215. package/dist/client/chunks/useDirtyStateTracking-DSkxAJ29.js.map +1 -0
  216. package/dist/client/chunks/{useExplainAI-CDFhgmpE.js → useExplainAI-DRCIVcbu.js} +4 -4
  217. package/dist/client/chunks/{useExplainAI-CDFhgmpE.js.map → useExplainAI-DRCIVcbu.js.map} +1 -1
  218. package/dist/client/chunks/utils-CToHkuhU.js.map +1 -1
  219. package/dist/client/chunks/{vendor-DeckzF1j.js → vendor-BfBpNmMa.js} +2 -2
  220. package/dist/client/chunks/{vendor-DeckzF1j.js.map → vendor-BfBpNmMa.js.map} +1 -1
  221. package/dist/client/components/DashboardFilters/useCompactFilterBar.d.ts +5 -0
  222. package/dist/client/components/analyticsPortlet/usePortletQueryResults.d.ts +3 -1
  223. package/dist/client/components/dashboardPortletCard/PortletCardHeader.d.ts +2 -0
  224. package/dist/client/components.js +2 -2
  225. package/dist/client/hooks/queries/useCubeLoadQuery.d.ts +7 -0
  226. package/dist/client/hooks/queries/useMultiCubeLoadQuery.d.ts +7 -0
  227. package/dist/client/hooks/useAnalysisQuery.d.ts +6 -1
  228. package/dist/client/hooks.js +3 -3
  229. package/dist/client/icons.js +1 -1
  230. package/dist/client/index.d.ts +2 -0
  231. package/dist/client/index.js +193 -192
  232. package/dist/client/index.js.map +1 -1
  233. package/dist/client/providers.js +1 -1
  234. package/dist/client/schema.js +1 -1
  235. package/dist/client/types.d.ts +3 -0
  236. package/dist/client/utils/filterUtils.d.ts +30 -0
  237. package/dist/client/utils/gapFilling.d.ts +52 -0
  238. package/dist/client/utils/index.d.ts +1 -0
  239. package/dist/client/utils/joinReachability.d.ts +1 -0
  240. package/dist/client/utils.js +9 -8
  241. package/dist/client/utils.js.map +1 -1
  242. package/dist/client-bundle-stats.html +1 -1
  243. package/dist/mcp-app/mcp-app.html +103 -103
  244. package/dist/server/ai/query-schema.d.ts +8 -3
  245. package/dist/server/builders/date-time-builder.d.ts +1 -1
  246. package/dist/server/builders/date-time-helpers.d.ts +2 -0
  247. package/dist/server/builders/filter-builder.d.ts +1 -1
  248. package/dist/server/builders/in-date-range-validation.d.ts +25 -0
  249. package/dist/server/chartConfigHelpers-BhME7ow_.cjs +1 -0
  250. package/dist/server/{chartConfigHelpers-BsnbxA2c.js → chartConfigHelpers-BsviVhEw.js} +27 -7
  251. package/dist/server/execution/result-post-processor.d.ts +4 -2
  252. package/dist/server/executor.d.ts +2 -0
  253. package/dist/server/gap-filler.d.ts +8 -43
  254. package/dist/server/index.cjs +49 -47
  255. package/dist/server/index.js +2114 -1955
  256. package/dist/server/types/core.d.ts +2 -0
  257. package/dist/server/types/cube.d.ts +12 -0
  258. package/dist/server/types/metadata.d.ts +5 -0
  259. package/dist/server/types/query.d.ts +2 -1
  260. package/package.json +2 -1
  261. package/dist/adapters/ActivityGridChart.config-BW77mjsu.cjs +0 -1
  262. package/dist/adapters/ActivityGridChart.config-DQRnTU6e.js +0 -2
  263. package/dist/adapters/AreaChart.config-DbvLVr-Y.cjs +0 -1
  264. package/dist/adapters/AreaChart.config-JbVNmary.js +0 -2
  265. package/dist/adapters/BarChart.config-Bkpwgqbk.js +0 -2
  266. package/dist/adapters/BarChart.config-jgDE3NUv.cjs +0 -1
  267. package/dist/adapters/BoxPlotChart.config-9wKKOZfN.cjs +0 -1
  268. package/dist/adapters/BoxPlotChart.config-Di99sPNJ.js +0 -2
  269. package/dist/adapters/BubbleChart.config-Cdg9nPFz.js +0 -2
  270. package/dist/adapters/BubbleChart.config-CwDXzdxC.cjs +0 -1
  271. package/dist/adapters/CandlestickChart.config-B45GmJYV.js +0 -2
  272. package/dist/adapters/CandlestickChart.config-C8BXzmbD.cjs +0 -1
  273. package/dist/adapters/DataTable.config-c-24M_qU.cjs +0 -1
  274. package/dist/adapters/DataTable.config-fic2OroS.js +0 -2
  275. package/dist/adapters/DotStripChart.config-BcNT3Les.cjs +0 -1
  276. package/dist/adapters/DotStripChart.config-Cqmgw5_z.js +0 -2
  277. package/dist/adapters/FunnelChart.config-D1E5zSay.cjs +0 -1
  278. package/dist/adapters/FunnelChart.config-DPjSoYex.js +0 -2
  279. package/dist/adapters/GaugeChart.config-BDcvnYln.js +0 -2
  280. package/dist/adapters/GaugeChart.config-DQnx37Jf.cjs +0 -1
  281. package/dist/adapters/HeatMapChart.config-BWd863ik.js +0 -2
  282. package/dist/adapters/HeatMapChart.config-HEbSm_Zt.cjs +0 -1
  283. package/dist/adapters/KpiDelta.config-Bj3kfmWv.js +0 -2
  284. package/dist/adapters/KpiDelta.config-CaLnl2w_.cjs +0 -1
  285. package/dist/adapters/KpiNumber.config-Da9HxGT8.cjs +0 -1
  286. package/dist/adapters/KpiNumber.config-n4SwHHlD.js +0 -2
  287. package/dist/adapters/KpiText.config-8VzcnlPF.cjs +0 -1
  288. package/dist/adapters/KpiText.config-CItv_gG6.js +0 -2
  289. package/dist/adapters/LineChart.config-DQ7nHYrr.js +0 -2
  290. package/dist/adapters/LineChart.config-_98RmRA_.cjs +0 -1
  291. package/dist/adapters/MarkdownChart.config-BpbqJDoz.cjs +0 -1
  292. package/dist/adapters/MarkdownChart.config-Dz7KZ621.js +0 -2
  293. package/dist/adapters/MeasureProfileChart.config-BTCTP7L0.js +0 -2
  294. package/dist/adapters/MeasureProfileChart.config-DzPxIxB5.cjs +0 -1
  295. package/dist/adapters/PieChart.config-BhjlnVFv.js +0 -2
  296. package/dist/adapters/PieChart.config-DJlGNsBY.cjs +0 -1
  297. package/dist/adapters/ProportionBarChart.config-Byp_8diR.cjs +0 -1
  298. package/dist/adapters/ProportionBarChart.config-RyjNhw3T.js +0 -2
  299. package/dist/adapters/RadarChart.config-BWdv4uyp.js +0 -2
  300. package/dist/adapters/RadarChart.config-kW4oIVi4.cjs +0 -1
  301. package/dist/adapters/RadialBarChart.config-CFYPoRQY.cjs +0 -1
  302. package/dist/adapters/RadialBarChart.config-D2-_-Z64.js +0 -2
  303. package/dist/adapters/RecordsTable.config-B7KFt3kd.cjs +0 -1
  304. package/dist/adapters/RecordsTable.config-S_aiXGKe.js +0 -2
  305. package/dist/adapters/RetentionCombinedChart.config-CVGWozL3.js +0 -2
  306. package/dist/adapters/RetentionCombinedChart.config-Cd0pTdHY.cjs +0 -1
  307. package/dist/adapters/RetentionHeatmap.config-BNqtWFjQ.js +0 -2
  308. package/dist/adapters/RetentionHeatmap.config-CMi1h_5M.cjs +0 -1
  309. package/dist/adapters/SankeyChart.config-COIfx3Ua.cjs +0 -1
  310. package/dist/adapters/SankeyChart.config-DIh4nEk2.js +0 -2
  311. package/dist/adapters/ScatterChart.config-CrSQhlT4.js +0 -2
  312. package/dist/adapters/ScatterChart.config-DRgg-HAm.cjs +0 -1
  313. package/dist/adapters/SunburstChart.config-08-ufQaK.cjs +0 -1
  314. package/dist/adapters/SunburstChart.config-DmNgAJrO.js +0 -2
  315. package/dist/adapters/TreeMapChart.config-7k2repRB.cjs +0 -1
  316. package/dist/adapters/TreeMapChart.config-C3vzB2dD.js +0 -2
  317. package/dist/adapters/WaterfallChart.config-AV2pHgrb.js +0 -2
  318. package/dist/adapters/WaterfallChart.config-USpcvapo.cjs +0 -1
  319. package/dist/adapters/chartConfigHelpers-BZMu_1EP.cjs +0 -1
  320. package/dist/adapters/compiler-BX6Ug_Uq.cjs +0 -166
  321. package/dist/adapters/handler-CfZt5W8b.cjs +0 -16
  322. package/dist/adapters/mcp-app-html-BNg78ecJ.js +0 -5
  323. package/dist/adapters/mcp-app-html-N18EJEvv.cjs +0 -1
  324. package/dist/adapters/utils-Du_UZbn5.cjs +0 -139
  325. package/dist/client/chunks/DashboardEditModal-P-HUNrcp.js.map +0 -1
  326. package/dist/client/chunks/analysis-builder-shared-DBSxWIj8.js.map +0 -1
  327. package/dist/client/chunks/chart-activity-grid-DGazwi4C.js.map +0 -1
  328. package/dist/client/chunks/chart-config-area-DsrZCIwF.js.map +0 -1
  329. package/dist/client/chunks/chart-config-bar-BixSs43E.js.map +0 -1
  330. package/dist/client/chunks/chart-config-line-CBF9Px9b.js.map +0 -1
  331. package/dist/client/chunks/charts-loader-BTI0UPK4.js +0 -87
  332. package/dist/client/chunks/nl-NL-kRjxedTf.js.map +0 -1
  333. package/dist/client/chunks/useDirtyStateTracking-BfG1lX_3.js.map +0 -1
  334. package/dist/server/chartConfigHelpers-BZMu_1EP.cjs +0 -1
@@ -1,8 +1,8 @@
1
- import { G as e, K as t, _ as n, b as r, g as i, h as a, m as o, p as s } from "./utils-i2h5cwI3.js";
2
- import { D as c, E as l, O as u, T as d } from "./mcp-transport-BTmAXLo8.js";
3
- import { a as f, c as p, d as m, i as h, l as g, n as _, o as v, r as y, s as b, t as x, u as S } from "./chartConfigHelpers-BsnbxA2c.js";
1
+ import { J as e, Y as t, _ as n, b as r, g as i, h as a, m as o, p as s } from "./utils-BaxFceDq.js";
2
+ import { D as c, E as l, O as u, T as d } from "./mcp-transport-Cy6n4uj1.js";
3
+ import { a as f, c as p, d as m, f as h, i as g, l as _, n as v, o as y, r as b, s as x, t as S, u as ee } from "./chartConfigHelpers-BsviVhEw.js";
4
4
  //#region src/server/agent/agent-prompts.ts
5
- var ee = [
5
+ var te = [
6
6
  "You are an analyst agent working in a notebook backed by a drizzle-cube semantic layer.",
7
7
  "",
8
8
  "Your tools, in the order you normally use them:",
@@ -24,7 +24,7 @@ var ee = [
24
24
  ].join("\n");
25
25
  //#endregion
26
26
  //#region src/server/agent/system-prompt.ts
27
- function te(e, t) {
27
+ function ne(e, t) {
28
28
  if (t.measures && t.measures.length !== 0) {
29
29
  e.push(""), e.push("**Measures:**");
30
30
  for (let n of t.measures) {
@@ -33,7 +33,7 @@ function te(e, t) {
33
33
  }
34
34
  }
35
35
  }
36
- function ne(e, t) {
36
+ function re(e, t) {
37
37
  if (t.dimensions && t.dimensions.length !== 0) {
38
38
  e.push(""), e.push("**Dimensions:**");
39
39
  for (let n of t.dimensions) {
@@ -42,22 +42,22 @@ function ne(e, t) {
42
42
  }
43
43
  }
44
44
  }
45
- function re(e, t) {
45
+ function ie(e, t) {
46
46
  if (t.relationships && t.relationships.length !== 0) {
47
47
  e.push(""), e.push("**Joins:**");
48
48
  for (let n of t.relationships) e.push(`- → \`${n.targetCube}\` (${n.relationship})`);
49
49
  }
50
50
  }
51
- function ie(e, t) {
51
+ function ae(e, t) {
52
52
  t.meta?.eventStream && (e.push(""), e.push("**Event Stream:** Yes (supports funnel, flow, retention queries)"), t.meta.eventStream.bindingKey && e.push(`- Binding key: \`${t.name}.${t.meta.eventStream.bindingKey}\``), t.meta.eventStream.timeDimension && e.push(`- Time dimension: \`${t.name}.${t.meta.eventStream.timeDimension}\``));
53
53
  }
54
- function ae(e) {
54
+ function oe(e) {
55
55
  if (e.length === 0) return "No cubes are currently available.";
56
56
  let t = ["## Available Cubes", ""];
57
- for (let n of e) t.push(`### ${n.name}`), n.description && t.push(n.description), te(t, n), ne(t, n), re(t, n), ie(t, n), t.push("");
57
+ for (let n of e) t.push(`### ${n.name}`), n.description && t.push(n.description), ne(t, n), re(t, n), ie(t, n), ae(t, n), t.push("");
58
58
  return t.join("\n");
59
59
  }
60
- function oe(e) {
60
+ function C(e) {
61
61
  return e.messages.map((e) => e.content.text).join("\n\n");
62
62
  }
63
63
  function se(e) {
@@ -227,15 +227,15 @@ function se(e) {
227
227
  "",
228
228
  "---",
229
229
  "",
230
- ee,
230
+ te,
231
231
  "",
232
232
  "---",
233
233
  "",
234
- oe(n),
234
+ C(n),
235
235
  "",
236
236
  "---",
237
237
  "",
238
- oe(i),
238
+ C(i),
239
239
  "",
240
240
  "---",
241
241
  "",
@@ -269,6 +269,7 @@ function se(e) {
269
269
  "",
270
270
  "### Dashboard Filters",
271
271
  "- ALWAYS include a universal date filter with `isUniversalTime: true`",
272
+ "- A universal date filter only reaches portlets through their `timeDimensions`. For KPI or breakdown portlets without a time dimension, map it as `{ filterId, member: \"<Cube.timeField>\" }` so it filters that field instead of leaving the portlet unfiltered",
272
273
  "- Add dimension filters for key fields used across portlets (e.g., department, status, region)",
273
274
  "- Use human-readable labels (e.g., \"Department\" not \"Employees.departmentName\")",
274
275
  "- Map filters to portlets using `dashboardFilterMapping` — list the filter IDs that apply",
@@ -290,12 +291,12 @@ function se(e) {
290
291
  "",
291
292
  "---",
292
293
  "",
293
- ae(e)
294
+ oe(e)
294
295
  ].join("\n");
295
296
  }
296
297
  //#endregion
297
298
  //#region src/client/components/charts/BarChart.config.ts
298
- var C = {
299
+ var w = {
299
300
  clickableElements: { bar: !0 },
300
301
  dropZones: [
301
302
  {
@@ -332,12 +333,13 @@ var C = {
332
333
  "hideHeader"
333
334
  ],
334
335
  displayOptionsConfig: [
335
- g("chart.configText.how_to_stack_multiple_bar_series"),
336
- S,
337
- y,
338
- v
336
+ ee("chart.configText.how_to_stack_multiple_bar_series"),
337
+ m,
338
+ v,
339
+ g,
340
+ x
339
341
  ]
340
- }, w = {
342
+ }, T = {
341
343
  clickableElements: { point: !0 },
342
344
  dropZones: [
343
345
  {
@@ -374,10 +376,11 @@ var C = {
374
376
  "hideHeader"
375
377
  ],
376
378
  displayOptionsConfig: [
377
- p,
378
- b(),
379
- x,
379
+ _,
380
+ p(),
380
381
  S,
382
+ v,
383
+ m,
381
384
  {
382
385
  key: "priorPeriodStyle",
383
386
  label: "chart.option.priorPeriodStyle.label",
@@ -409,10 +412,10 @@ var C = {
409
412
  step: .1,
410
413
  description: "chart.option.priorPeriodOpacity.description"
411
414
  },
412
- y,
413
- v
415
+ g,
416
+ x
414
417
  ]
415
- }, T = {
418
+ }, E = {
416
419
  dropZones: [
417
420
  {
418
421
  key: "xAxis",
@@ -448,15 +451,16 @@ var C = {
448
451
  "hideHeader"
449
452
  ],
450
453
  displayOptionsConfig: [
451
- p,
452
- b(!1),
453
- g("chart.configText.how_to_stack_multiple_area_series"),
454
- x,
454
+ _,
455
+ p(!1),
456
+ ee("chart.configText.how_to_stack_multiple_area_series"),
455
457
  S,
456
- y,
457
- v
458
+ v,
459
+ m,
460
+ g,
461
+ x
458
462
  ]
459
- }, E = {
463
+ }, D = {
460
464
  clickableElements: { slice: !0 },
461
465
  dropZones: [{
462
466
  key: "xAxis",
@@ -508,8 +512,8 @@ var C = {
508
512
  label: "chart.configText.80_percent"
509
513
  }
510
514
  ]
511
- }, m()]
512
- }, D = {
515
+ }, h()]
516
+ }, O = {
513
517
  dropZones: [
514
518
  {
515
519
  key: "xAxis",
@@ -560,7 +564,7 @@ var C = {
560
564
  type: "axisFormat",
561
565
  description: "chart.option.yAxisFormat.description"
562
566
  }]
563
- }, O = {
567
+ }, k = {
564
568
  dropZones: [
565
569
  {
566
570
  key: "xAxis",
@@ -632,7 +636,7 @@ var C = {
632
636
  type: "axisFormat",
633
637
  description: "chart.configText.number_formatting_for_y_axis_and_values"
634
638
  }]
635
- }, k = {
639
+ }, A = {
636
640
  dropZones: [
637
641
  {
638
642
  key: "xAxis",
@@ -665,8 +669,8 @@ var C = {
665
669
  "showTooltip",
666
670
  "hideHeader"
667
671
  ],
668
- displayOptionsConfig: [m()]
669
- }, A = {
672
+ displayOptionsConfig: [h()]
673
+ }, j = {
670
674
  dropZones: [{
671
675
  key: "xAxis",
672
676
  label: "chart.configText.categories",
@@ -688,8 +692,8 @@ var C = {
688
692
  "showTooltip",
689
693
  "hideHeader"
690
694
  ],
691
- displayOptionsConfig: [m()]
692
- }, j = {
695
+ displayOptionsConfig: [h()]
696
+ }, M = {
693
697
  dropZones: [
694
698
  {
695
699
  key: "xAxis",
@@ -723,9 +727,9 @@ var C = {
723
727
  "showTooltip",
724
728
  "hideHeader"
725
729
  ],
726
- displayOptionsConfig: [m("chart.configText.number_formatting_for_size_values")],
730
+ displayOptionsConfig: [h("chart.configText.number_formatting_for_size_values")],
727
731
  clickableElements: { cell: !0 }
728
- }, M = {
732
+ }, N = {
729
733
  dropZones: [{
730
734
  key: "xAxis",
731
735
  label: "chart.configText.columns",
@@ -745,7 +749,7 @@ var C = {
745
749
  type: "axisFormat",
746
750
  description: "chart.configText.number_formatting_for_numeric_values"
747
751
  }]
748
- }, N = {
752
+ }, P = {
749
753
  dropZones: [{
750
754
  key: "columns",
751
755
  label: "chart.recordsTable.dropZone.columns.label",
@@ -808,7 +812,7 @@ var C = {
808
812
  ],
809
813
  clickableElements: { row: !0 },
810
814
  recordGrain: !0
811
- }, P = {
815
+ }, F = {
812
816
  dropZones: [{
813
817
  key: "dateField",
814
818
  label: "chart.configText.time_dimension",
@@ -849,7 +853,7 @@ var C = {
849
853
  } : { isValid: !0 };
850
854
  },
851
855
  clickableElements: { cell: !0 }
852
- }, F = {
856
+ }, I = {
853
857
  dropZones: [{
854
858
  key: "yAxis",
855
859
  label: "chart.configText.value",
@@ -860,7 +864,7 @@ var C = {
860
864
  emptyText: "chart.kpiNumber.dropZone.yAxis.empty"
861
865
  }],
862
866
  displayOptionsConfig: [
863
- _,
867
+ b,
864
868
  {
865
869
  key: "target",
866
870
  label: "chart.runtime.tooltip.targetValue",
@@ -915,7 +919,7 @@ var C = {
915
919
  }
916
920
  ],
917
921
  displayOptions: ["hideHeader"]
918
- }, I = {
922
+ }, L = {
919
923
  dropZones: [{
920
924
  key: "yAxis",
921
925
  label: "chart.configText.value",
@@ -934,7 +938,7 @@ var C = {
934
938
  emptyText: "chart.kpiDelta.dropZone.xAxis.empty"
935
939
  }],
936
940
  displayOptionsConfig: [
937
- _,
941
+ b,
938
942
  {
939
943
  key: "showBaseline",
940
944
  label: "chart.option.showBaseline.label",
@@ -1007,7 +1011,7 @@ var C = {
1007
1011
  isValid: !1,
1008
1012
  message: "chart.kpiDelta.validation.measureRequired"
1009
1013
  } : { isValid: !0 }
1010
- }, L = {
1014
+ }, R = {
1011
1015
  dropZones: [{
1012
1016
  key: "yAxis",
1013
1017
  label: "chart.configText.value",
@@ -1044,7 +1048,7 @@ var C = {
1044
1048
  }
1045
1049
  ],
1046
1050
  displayOptions: ["hideHeader"]
1047
- }, R = {
1051
+ }, z = {
1048
1052
  skipQuery: !0,
1049
1053
  dropZones: [],
1050
1054
  displayOptionsConfig: [
@@ -1156,7 +1160,7 @@ var C = {
1156
1160
  description: "chart.configText.add_an_accent_colored_border_on_one_side_of_the_content"
1157
1161
  }
1158
1162
  ]
1159
- }, z = {
1163
+ }, B = {
1160
1164
  dropZones: [{
1161
1165
  key: "xAxis",
1162
1166
  label: "chart.configText.step_name",
@@ -1239,7 +1243,7 @@ var C = {
1239
1243
  description: "chart.option.showP90Time.description"
1240
1244
  }
1241
1245
  ]
1242
- }, B = {
1246
+ }, V = {
1243
1247
  dropZones: [{
1244
1248
  key: "xAxis",
1245
1249
  label: "chart.configText.event_type",
@@ -1295,7 +1299,7 @@ var C = {
1295
1299
  description: "chart.configText.hide_the_statistics_footer_below_the_chart"
1296
1300
  }
1297
1301
  ]
1298
- }, V = {
1302
+ }, H = {
1299
1303
  dropZones: [{
1300
1304
  key: "xAxis",
1301
1305
  label: "chart.configText.event_type",
@@ -1330,7 +1334,7 @@ var C = {
1330
1334
  defaultValue: !0,
1331
1335
  description: "chart.configText.hide_the_statistics_footer_below_the_chart"
1332
1336
  }]
1333
- }, H = {
1337
+ }, ce = {
1334
1338
  dropZones: [
1335
1339
  {
1336
1340
  key: "xAxis",
@@ -1411,7 +1415,7 @@ var C = {
1411
1415
  isValid: !1,
1412
1416
  message: "chart.heatmap.validation.xAxisRequired"
1413
1417
  }
1414
- }, ce = {
1418
+ }, U = {
1415
1419
  dropZones: [],
1416
1420
  displayOptionsConfig: [{
1417
1421
  key: "showLegend",
@@ -1426,7 +1430,7 @@ var C = {
1426
1430
  defaultValue: !0,
1427
1431
  description: "chart.option.showTooltip.description"
1428
1432
  }]
1429
- }, U = {
1433
+ }, W = {
1430
1434
  dropZones: [],
1431
1435
  displayOptionsConfig: [
1432
1436
  {
@@ -1472,7 +1476,7 @@ var C = {
1472
1476
  description: "chart.option.showTooltip.description"
1473
1477
  }
1474
1478
  ]
1475
- }, W = {
1479
+ }, G = {
1476
1480
  displayOptions: ["hideHeader"],
1477
1481
  dropZones: [{
1478
1482
  key: "xAxis",
@@ -1497,7 +1501,7 @@ var C = {
1497
1501
  type: "axisFormat",
1498
1502
  description: "chart.configText.number_formatting_for_the_value_axis"
1499
1503
  }]
1500
- }, G = {
1504
+ }, K = {
1501
1505
  displayOptions: [
1502
1506
  "showGrid",
1503
1507
  "showTooltip",
@@ -1608,7 +1612,7 @@ var C = {
1608
1612
  description: "chart.option.xAxisFormat.description"
1609
1613
  }
1610
1614
  ]
1611
- }, K = {
1615
+ }, le = {
1612
1616
  clickableElements: { bar: !0 },
1613
1617
  displayOptions: ["showTooltip", "hideHeader"],
1614
1618
  dropZones: [{
@@ -1657,7 +1661,7 @@ var C = {
1657
1661
  description: "chart.configText.number_formatting_for_the_y_axis"
1658
1662
  }
1659
1663
  ]
1660
- }, q = {
1664
+ }, ue = {
1661
1665
  clickableElements: { bar: !0 },
1662
1666
  displayOptions: ["hideHeader"],
1663
1667
  dropZones: [{
@@ -1719,7 +1723,7 @@ var C = {
1719
1723
  description: "chart.configText.number_formatting_for_the_price_axis"
1720
1724
  }
1721
1725
  ]
1722
- }, le = {
1726
+ }, de = {
1723
1727
  displayOptions: [
1724
1728
  "showLegend",
1725
1729
  "showTooltip",
@@ -1791,7 +1795,7 @@ var C = {
1791
1795
  description: "chart.configText.number_formatting_for_the_y_axis"
1792
1796
  }
1793
1797
  ]
1794
- }, ue = {
1798
+ }, fe = {
1795
1799
  dropZones: [{
1796
1800
  key: "xAxis",
1797
1801
  label: "chart.configText.category",
@@ -1849,7 +1853,7 @@ var C = {
1849
1853
  isValid: !1,
1850
1854
  message: "chart.proportionBar.validation.measureRequired"
1851
1855
  } : { isValid: !0 }
1852
- }, de = {
1856
+ }, pe = {
1853
1857
  clickableElements: {},
1854
1858
  displayOptions: ["hideHeader"],
1855
1859
  dropZones: [{
@@ -1902,45 +1906,45 @@ var C = {
1902
1906
  description: "chart.configText.number_formatting_for_the_displayed_value_and_axis_labels"
1903
1907
  }
1904
1908
  ]
1905
- }, J = {
1909
+ }, q = {
1906
1910
  packageName: "recharts",
1907
1911
  installCommand: "npm install recharts"
1908
- }, fe = {
1912
+ }, me = {
1909
1913
  bar: {
1910
1914
  label: "chart.bar.label",
1911
1915
  icon: "chartBar",
1912
1916
  description: "chart.bar.description",
1913
1917
  useCase: "chart.bar.useCase",
1914
- isAvailable: f,
1915
- dependencies: J,
1916
- config: async () => (await import("./BarChart.config-Bkpwgqbk.js")).barChartConfig
1918
+ isAvailable: y,
1919
+ dependencies: q,
1920
+ config: async () => (await import("./BarChart.config-CwBnyptL.js")).barChartConfig
1917
1921
  },
1918
1922
  line: {
1919
1923
  label: "chart.line.label",
1920
1924
  icon: "chartLine",
1921
1925
  description: "chart.line.description",
1922
1926
  useCase: "chart.line.useCase",
1923
- isAvailable: f,
1924
- dependencies: J,
1925
- config: async () => (await import("./LineChart.config-DQ7nHYrr.js")).lineChartConfig
1927
+ isAvailable: y,
1928
+ dependencies: q,
1929
+ config: async () => (await import("./LineChart.config-DH68HT_B.js")).lineChartConfig
1926
1930
  },
1927
1931
  area: {
1928
1932
  label: "chart.area.label",
1929
1933
  icon: "chartArea",
1930
1934
  description: "chart.area.description",
1931
1935
  useCase: "chart.area.useCase",
1932
- isAvailable: f,
1933
- dependencies: J,
1934
- config: async () => (await import("./AreaChart.config-JbVNmary.js")).areaChartConfig
1936
+ isAvailable: y,
1937
+ dependencies: q,
1938
+ config: async () => (await import("./AreaChart.config-We6b53aT.js")).areaChartConfig
1935
1939
  },
1936
1940
  pie: {
1937
1941
  label: "chart.pie.label",
1938
1942
  icon: "chartPie",
1939
1943
  description: "chart.pie.description",
1940
1944
  useCase: "chart.pie.useCase",
1941
- isAvailable: f,
1942
- dependencies: J,
1943
- config: async () => (await import("./PieChart.config-BhjlnVFv.js")).pieChartConfig
1945
+ isAvailable: y,
1946
+ dependencies: q,
1947
+ config: async () => (await import("./PieChart.config-Bg-8cxWK.js")).pieChartConfig
1944
1948
  },
1945
1949
  scatter: {
1946
1950
  label: "chart.scatter.label",
@@ -1954,8 +1958,8 @@ var C = {
1954
1958
  available: !1,
1955
1959
  reason: "chart.availability.scatter"
1956
1960
  } : { available: !0 },
1957
- dependencies: J,
1958
- config: async () => (await import("./ScatterChart.config-CrSQhlT4.js")).scatterChartConfig
1961
+ dependencies: q,
1962
+ config: async () => (await import("./ScatterChart.config-CdZrBorg.js")).scatterChartConfig
1959
1963
  },
1960
1964
  bubble: {
1961
1965
  label: "chart.bubble.label",
@@ -1969,49 +1973,49 @@ var C = {
1969
1973
  available: !1,
1970
1974
  reason: "chart.availability.bubble"
1971
1975
  } : { available: !0 },
1972
- dependencies: J,
1973
- config: async () => (await import("./BubbleChart.config-Cdg9nPFz.js")).bubbleChartConfig
1976
+ dependencies: q,
1977
+ config: async () => (await import("./BubbleChart.config-DxG_Umal.js")).bubbleChartConfig
1974
1978
  },
1975
1979
  radar: {
1976
1980
  label: "chart.radar.label",
1977
1981
  icon: "chartRadar",
1978
1982
  description: "chart.radar.description",
1979
1983
  useCase: "chart.radar.useCase",
1980
- isAvailable: f,
1981
- dependencies: J,
1982
- config: async () => (await import("./RadarChart.config-BWdv4uyp.js")).radarChartConfig
1984
+ isAvailable: y,
1985
+ dependencies: q,
1986
+ config: async () => (await import("./RadarChart.config-DD1pX6FZ.js")).radarChartConfig
1983
1987
  },
1984
1988
  radialBar: {
1985
1989
  label: "chart.radialBar.label",
1986
1990
  icon: "chartRadialBar",
1987
1991
  description: "chart.radialBar.description",
1988
1992
  useCase: "chart.radialBar.useCase",
1989
- isAvailable: f,
1990
- dependencies: J,
1991
- config: async () => (await import("./RadialBarChart.config-D2-_-Z64.js")).radialBarChartConfig
1993
+ isAvailable: y,
1994
+ dependencies: q,
1995
+ config: async () => (await import("./RadialBarChart.config--VIE2jMM.js")).radialBarChartConfig
1992
1996
  },
1993
1997
  treemap: {
1994
1998
  label: "chart.treemap.label",
1995
1999
  icon: "chartTreemap",
1996
2000
  description: "chart.treemap.description",
1997
2001
  useCase: "chart.treemap.useCase",
1998
- isAvailable: f,
1999
- dependencies: J,
2000
- config: async () => (await import("./TreeMapChart.config-C3vzB2dD.js")).treemapChartConfig
2002
+ isAvailable: y,
2003
+ dependencies: q,
2004
+ config: async () => (await import("./TreeMapChart.config-diJtcs4D.js")).treemapChartConfig
2001
2005
  },
2002
2006
  table: {
2003
2007
  label: "chart.table.label",
2004
2008
  icon: "chartTable",
2005
2009
  description: "chart.table.description",
2006
2010
  useCase: "chart.table.useCase",
2007
- config: async () => (await import("./DataTable.config-fic2OroS.js")).dataTableConfig
2011
+ config: async () => (await import("./DataTable.config-DS1bvaDu.js")).dataTableConfig
2008
2012
  },
2009
2013
  recordsTable: {
2010
2014
  label: "chart.recordsTable.label",
2011
2015
  icon: "chartRecordsTable",
2012
2016
  description: "chart.recordsTable.description",
2013
2017
  useCase: "chart.recordsTable.useCase",
2014
- config: async () => (await import("./RecordsTable.config-S_aiXGKe.js")).recordsTableConfig
2018
+ config: async () => (await import("./RecordsTable.config-CTBQc-2r.js")).recordsTableConfig
2015
2019
  },
2016
2020
  activityGrid: {
2017
2021
  label: "chart.activityGrid.label",
@@ -2025,62 +2029,62 @@ var C = {
2025
2029
  available: !1,
2026
2030
  reason: "chart.availability.requiresTimeDimension"
2027
2031
  } : { available: !0 },
2028
- config: async () => (await import("./ActivityGridChart.config-DQRnTU6e.js")).activityGridChartConfig
2032
+ config: async () => (await import("./ActivityGridChart.config-XMtoteb6.js")).activityGridChartConfig
2029
2033
  },
2030
2034
  kpiNumber: {
2031
2035
  label: "chart.kpiNumber.label",
2032
2036
  icon: "chartKpiNumber",
2033
2037
  description: "chart.kpiNumber.description",
2034
2038
  useCase: "chart.kpiNumber.useCase",
2035
- isAvailable: h,
2036
- config: async () => (await import("./KpiNumber.config-n4SwHHlD.js")).kpiNumberConfig
2039
+ isAvailable: f,
2040
+ config: async () => (await import("./KpiNumber.config-C00M46GA.js")).kpiNumberConfig
2037
2041
  },
2038
2042
  kpiDelta: {
2039
2043
  label: "chart.kpiDelta.label",
2040
2044
  icon: "chartKpiDelta",
2041
2045
  description: "chart.kpiDelta.description",
2042
2046
  useCase: "chart.kpiDelta.useCase",
2043
- isAvailable: f,
2044
- config: async () => (await import("./KpiDelta.config-Bj3kfmWv.js")).kpiDeltaConfig
2047
+ isAvailable: y,
2048
+ config: async () => (await import("./KpiDelta.config-CJeDdj_1.js")).kpiDeltaConfig
2045
2049
  },
2046
2050
  kpiText: {
2047
2051
  label: "chart.kpiText.label",
2048
2052
  icon: "chartKpiText",
2049
2053
  description: "chart.kpiText.description",
2050
2054
  useCase: "chart.kpiText.useCase",
2051
- isAvailable: h,
2052
- config: async () => (await import("./KpiText.config-CItv_gG6.js")).kpiTextConfig
2055
+ isAvailable: f,
2056
+ config: async () => (await import("./KpiText.config-bKTHob0C.js")).kpiTextConfig
2053
2057
  },
2054
2058
  markdown: {
2055
2059
  label: "chart.markdown.label",
2056
2060
  icon: "chartMarkdown",
2057
2061
  description: "chart.markdown.description",
2058
2062
  useCase: "chart.markdown.useCase",
2059
- config: async () => (await import("./MarkdownChart.config-Dz7KZ621.js")).markdownConfig
2063
+ config: async () => (await import("./MarkdownChart.config-CaaJPO3c.js")).markdownConfig
2060
2064
  },
2061
2065
  funnel: {
2062
2066
  label: "chart.funnel.label",
2063
2067
  icon: "chartFunnel",
2064
2068
  description: "chart.funnel.description",
2065
2069
  useCase: "chart.funnel.useCase",
2066
- dependencies: J,
2067
- config: async () => (await import("./FunnelChart.config-DPjSoYex.js")).funnelChartConfig
2070
+ dependencies: q,
2071
+ config: async () => (await import("./FunnelChart.config-ISZiz9fn.js")).funnelChartConfig
2068
2072
  },
2069
2073
  sankey: {
2070
2074
  label: "chart.sankey.label",
2071
2075
  icon: "chartSankey",
2072
2076
  description: "chart.sankey.description",
2073
2077
  useCase: "chart.sankey.useCase",
2074
- dependencies: J,
2075
- config: async () => (await import("./SankeyChart.config-DIh4nEk2.js")).sankeyChartConfig
2078
+ dependencies: q,
2079
+ config: async () => (await import("./SankeyChart.config-DGTnRmYg.js")).sankeyChartConfig
2076
2080
  },
2077
2081
  sunburst: {
2078
2082
  label: "chart.sunburst.label",
2079
2083
  icon: "chartSunburst",
2080
2084
  description: "chart.sunburst.description",
2081
2085
  useCase: "chart.sunburst.useCase",
2082
- dependencies: J,
2083
- config: async () => (await import("./SunburstChart.config-DmNgAJrO.js")).sunburstChartConfig
2086
+ dependencies: q,
2087
+ config: async () => (await import("./SunburstChart.config-RF3uu5Sa.js")).sunburstChartConfig
2084
2088
  },
2085
2089
  heatmap: {
2086
2090
  label: "chart.heatmap.label",
@@ -2098,46 +2102,46 @@ var C = {
2098
2102
  packageName: "@nivo/heatmap",
2099
2103
  installCommand: "npm install @nivo/heatmap"
2100
2104
  },
2101
- config: async () => (await import("./HeatMapChart.config-BWd863ik.js")).heatmapChartConfig
2105
+ config: async () => (await import("./HeatMapChart.config-uWvR0B-N.js")).heatmapChartConfig
2102
2106
  },
2103
2107
  retentionHeatmap: {
2104
2108
  label: "chart.retentionHeatmap.label",
2105
2109
  icon: "chartRetention",
2106
2110
  description: "chart.retentionHeatmap.description",
2107
2111
  useCase: "chart.retentionHeatmap.useCase",
2108
- config: async () => (await import("./RetentionHeatmap.config-BNqtWFjQ.js")).retentionHeatmapConfig
2112
+ config: async () => (await import("./RetentionHeatmap.config-Co-JMzBm.js")).retentionHeatmapConfig
2109
2113
  },
2110
2114
  retentionCombined: {
2111
2115
  label: "chart.retentionCombined.label",
2112
2116
  icon: "chartRetention",
2113
2117
  description: "chart.retentionCombined.description",
2114
2118
  useCase: "chart.retentionCombined.useCase",
2115
- config: async () => (await import("./RetentionCombinedChart.config-CVGWozL3.js")).retentionCombinedConfig
2119
+ config: async () => (await import("./RetentionCombinedChart.config-PGVxnkRL.js")).retentionCombinedConfig
2116
2120
  },
2117
2121
  boxPlot: {
2118
2122
  label: "chart.boxPlot.label",
2119
2123
  icon: "chartBoxPlot",
2120
2124
  description: "chart.boxPlot.description",
2121
2125
  useCase: "chart.boxPlot.useCase",
2122
- isAvailable: f,
2123
- config: async () => (await import("./BoxPlotChart.config-Di99sPNJ.js")).boxPlotChartConfig
2126
+ isAvailable: y,
2127
+ config: async () => (await import("./BoxPlotChart.config-mfAHqmcp.js")).boxPlotChartConfig
2124
2128
  },
2125
2129
  dotStrip: {
2126
2130
  label: "chart.dotStrip.label",
2127
2131
  icon: "chartDotStrip",
2128
2132
  description: "chart.dotStrip.description",
2129
2133
  useCase: "chart.dotStrip.useCase",
2130
- isAvailable: f,
2131
- config: async () => (await import("./DotStripChart.config-Cqmgw5_z.js")).dotStripChartConfig
2134
+ isAvailable: y,
2135
+ config: async () => (await import("./DotStripChart.config-Bdk5-YfB.js")).dotStripChartConfig
2132
2136
  },
2133
2137
  waterfall: {
2134
2138
  label: "chart.waterfall.label",
2135
2139
  icon: "chartWaterfall",
2136
2140
  description: "chart.waterfall.description",
2137
2141
  useCase: "chart.waterfall.useCase",
2138
- isAvailable: f,
2139
- dependencies: J,
2140
- config: async () => (await import("./WaterfallChart.config-AV2pHgrb.js")).waterfallChartConfig
2142
+ isAvailable: y,
2143
+ dependencies: q,
2144
+ config: async () => (await import("./WaterfallChart.config-BImlkLmR.js")).waterfallChartConfig
2141
2145
  },
2142
2146
  candlestick: {
2143
2147
  label: "chart.candlestick.label",
@@ -2151,7 +2155,7 @@ var C = {
2151
2155
  available: !1,
2152
2156
  reason: "chart.availability.requiresDimension"
2153
2157
  } : { available: !0 },
2154
- config: async () => (await import("./CandlestickChart.config-B45GmJYV.js")).candlestickChartConfig
2158
+ config: async () => (await import("./CandlestickChart.config-Cqw3XP1h.js")).candlestickChartConfig
2155
2159
  },
2156
2160
  measureProfile: {
2157
2161
  label: "chart.measureProfile.label",
@@ -2162,31 +2166,31 @@ var C = {
2162
2166
  available: !1,
2163
2167
  reason: "chart.availability.requiresTwoMeasures"
2164
2168
  } : { available: !0 },
2165
- dependencies: J,
2166
- config: async () => (await import("./MeasureProfileChart.config-BTCTP7L0.js")).measureProfileChartConfig
2169
+ dependencies: q,
2170
+ config: async () => (await import("./MeasureProfileChart.config-DMOnkmb6.js")).measureProfileChartConfig
2167
2171
  },
2168
2172
  proportionBar: {
2169
2173
  label: "chart.proportionBar.label",
2170
2174
  icon: "chartProportionBar",
2171
2175
  description: "chart.proportionBar.description",
2172
2176
  useCase: "chart.proportionBar.useCase",
2173
- isAvailable: f,
2174
- config: async () => (await import("./ProportionBarChart.config-RyjNhw3T.js")).proportionBarChartConfig
2177
+ isAvailable: y,
2178
+ config: async () => (await import("./ProportionBarChart.config-BlCedy1v.js")).proportionBarChartConfig
2175
2179
  },
2176
2180
  gauge: {
2177
2181
  label: "chart.gauge.label",
2178
2182
  icon: "chartGauge",
2179
2183
  description: "chart.gauge.description",
2180
2184
  useCase: "chart.gauge.useCase",
2181
- isAvailable: h,
2185
+ isAvailable: f,
2182
2186
  dependencies: {
2183
2187
  packageName: "d3-shape",
2184
2188
  installCommand: "npm install d3-shape"
2185
2189
  },
2186
- config: async () => (await import("./GaugeChart.config-BDcvnYln.js")).gaugeChartConfig
2190
+ config: async () => (await import("./GaugeChart.config-BjGfB84t.js")).gaugeChartConfig
2187
2191
  }
2188
2192
  };
2189
- function pe(e, t) {
2193
+ function he(e, t) {
2190
2194
  return {
2191
2195
  ...t,
2192
2196
  label: e.label,
@@ -2197,52 +2201,52 @@ function pe(e, t) {
2197
2201
  }
2198
2202
  //#endregion
2199
2203
  //#region src/client/charts/chartConfigRegistry.ts
2200
- var me = {
2201
- bar: C,
2202
- line: w,
2203
- area: T,
2204
- pie: E,
2205
- scatter: D,
2206
- bubble: O,
2207
- radar: k,
2208
- radialBar: A,
2209
- treemap: j,
2210
- table: M,
2211
- recordsTable: N,
2212
- activityGrid: P,
2213
- kpiNumber: F,
2214
- kpiDelta: I,
2215
- kpiText: L,
2216
- markdown: R,
2217
- funnel: z,
2218
- sankey: B,
2219
- sunburst: V,
2220
- heatmap: H,
2221
- retentionHeatmap: ce,
2222
- retentionCombined: U,
2223
- boxPlot: W,
2224
- dotStrip: G,
2225
- waterfall: K,
2226
- candlestick: q,
2227
- measureProfile: le,
2228
- proportionBar: ue,
2229
- gauge: de
2230
- }, Y = Object.fromEntries(Object.keys(fe).map((e) => [e, pe(fe[e], me[e])]));
2231
- function he(e) {
2232
- return Y[e]?.recordGrain === !0;
2204
+ var ge = {
2205
+ bar: w,
2206
+ line: T,
2207
+ area: E,
2208
+ pie: D,
2209
+ scatter: O,
2210
+ bubble: k,
2211
+ radar: A,
2212
+ radialBar: j,
2213
+ treemap: M,
2214
+ table: N,
2215
+ recordsTable: P,
2216
+ activityGrid: F,
2217
+ kpiNumber: I,
2218
+ kpiDelta: L,
2219
+ kpiText: R,
2220
+ markdown: z,
2221
+ funnel: B,
2222
+ sankey: V,
2223
+ sunburst: H,
2224
+ heatmap: ce,
2225
+ retentionHeatmap: U,
2226
+ retentionCombined: W,
2227
+ boxPlot: G,
2228
+ dotStrip: K,
2229
+ waterfall: le,
2230
+ candlestick: ue,
2231
+ measureProfile: de,
2232
+ proportionBar: fe,
2233
+ gauge: pe
2234
+ }, J = Object.fromEntries(Object.keys(me).map((e) => [e, he(me[e], ge[e])]));
2235
+ function _e(e) {
2236
+ return J[e]?.recordGrain === !0;
2233
2237
  }
2234
2238
  //#endregion
2235
2239
  //#region src/server/agent/chart-validation.ts
2236
- function X(e) {
2240
+ function Y(e) {
2237
2241
  return Array.isArray(e) ? e.length > 0 : !!e;
2238
2242
  }
2239
- function Z(e) {
2243
+ function X(e) {
2240
2244
  let t = e.timeDimensions ?? [];
2241
2245
  return e.ungrouped ? t : t.filter((e) => !!e.granularity);
2242
2246
  }
2243
- function ge(e, n, r, i) {
2247
+ function ve(e, n, r, i) {
2244
2248
  for (let a of e.dropZones) {
2245
- if (!a.mandatory || X(r?.[a.key])) continue;
2249
+ if (!a.mandatory || Y(r?.[a.key])) continue;
2246
2250
  let e = a.acceptTypes?.join("/") ?? "fields";
2247
2251
  i.push(t("server.validation.chart.dropZoneRequired", {
2248
2252
  key: a.key,
@@ -2252,37 +2256,37 @@ function ge(e, n, r, i) {
2252
2256
  }));
2253
2257
  }
2254
2258
  }
2255
- function _e(e, n, r) {
2256
- if (X(e?.xAxis)) return;
2257
- let i = n.dimensions ?? [], a = Z(n), o = i.length > 0 || a.length > 0;
2259
+ function ye(e, n, r) {
2260
+ if (Y(e?.xAxis)) return;
2261
+ let i = n.dimensions ?? [], a = X(n), o = i.length > 0 || a.length > 0;
2258
2262
  r.push(t(o ? "server.validation.chart.barXAxisRequired" : "server.validation.chart.barNeedsDimension"));
2259
2263
  }
2260
- function ve(e) {
2264
+ function be(e) {
2261
2265
  return Array.isArray(e) ? e : [e];
2262
2266
  }
2263
- function ye(e, n) {
2267
+ function xe(e, n) {
2264
2268
  if (!e?.xAxis || !e?.series) return;
2265
- let r = new Set(ve(e.xAxis)), i = ve(e.series).filter((e) => r.has(e));
2269
+ let r = new Set(be(e.xAxis)), i = be(e.series).filter((e) => r.has(e));
2266
2270
  i.length > 0 && n.push(t("server.validation.chart.seriesDuplicatesXAxis", { duplicates: i.join(", ") }));
2267
2271
  }
2268
- function be(e, n, r) {
2269
- he(e) && n.ungrouped !== !0 && r.push(t("server.validation.chart.recordGrainNeedsUngrouped", { chartType: e }));
2272
+ function Se(e, n, r) {
2273
+ _e(e) && n.ungrouped !== !0 && r.push(t("server.validation.chart.recordGrainNeedsUngrouped", { chartType: e }));
2270
2274
  }
2271
- function xe(e, t, n) {
2272
- let r = Y[e];
2275
+ function Ce(e, t, n) {
2276
+ let r = J[e];
2273
2277
  if (!r || r.skipQuery) return {
2274
2278
  isValid: !0,
2275
2279
  errors: []
2276
2280
  };
2277
2281
  let i = [];
2278
- return ge(r, e, t, i), be(e, n, i), e === "bar" && _e(t, n, i), ye(t, i), {
2282
+ return ve(r, e, t, i), Se(e, n, i), e === "bar" && ye(t, n, i), xe(t, i), {
2279
2283
  isValid: i.length === 0,
2280
2284
  errors: i
2281
2285
  };
2282
2286
  }
2283
- function Se(e, t, n) {
2284
- if (e !== "bar" || X(t?.xAxis)) return { chartType: e };
2285
- let r = n.dimensions ?? [], i = Z(n);
2287
+ function we(e, t, n) {
2288
+ if (e !== "bar" || Y(t?.xAxis)) return { chartType: e };
2289
+ let r = n.dimensions ?? [], i = X(n);
2286
2290
  if (r.length > 0 || i.length > 0) return { chartType: e };
2287
2291
  let a = (n.measures ?? []).length === 1 ? "kpiNumber" : "table";
2288
2292
  return {
@@ -2290,7 +2294,7 @@ function Se(e, t, n) {
2290
2294
  note: `Note: chartType was changed from "bar" to "${a}" because the query has no dimension, so a bar chart would have no category axis to label its bars. For a real bar chart, put the category in the query's dimensions and use a single measure. To plot several measures as an ordered profile instead, use "measureProfile".`
2291
2295
  };
2292
2296
  }
2293
- function Ce(e, t, n, r) {
2297
+ function Te(e, t, n, r) {
2294
2298
  if (!(e.acceptTypes ?? []).includes("measure")) return;
2295
2299
  let i = /* @__PURE__ */ new Set();
2296
2300
  for (let r of t.dropZones) {
@@ -2301,7 +2305,7 @@ function Ce(e, t, n, r) {
2301
2305
  let a = r.filter((e) => !i.has(e));
2302
2306
  a.length > 0 && (n[e.key] = a[0]);
2303
2307
  }
2304
- function we(e, t) {
2308
+ function Ee(e, t) {
2305
2309
  let n = /* @__PURE__ */ new Set();
2306
2310
  for (let [r, i] of Object.entries(e)) if (r !== t) {
2307
2311
  if (Array.isArray(i)) for (let e of i) typeof e == "string" && n.add(e);
@@ -2309,34 +2313,34 @@ function we(e, t) {
2309
2313
  }
2310
2314
  return n;
2311
2315
  }
2312
- function Te(e, t, n) {
2316
+ function De(e, t, n) {
2313
2317
  let r = e.acceptTypes ?? [], i = [];
2314
2318
  if (r.includes("dimension") && i.push(...n.dimensions), r.includes("timeDimension") && i.push(...n.timeDimFields), r.includes("measure") && i.push(...n.measures), i.length === 0) return;
2315
- let a = we(t, e.key), o = i.filter((e) => !a.has(e));
2319
+ let a = Ee(t, e.key), o = i.filter((e) => !a.has(e));
2316
2320
  if (o.length === 0) return;
2317
2321
  let s = e.maxItems ?? Infinity, c = o.slice(0, s);
2318
2322
  c.length > 0 && (t[e.key] = c);
2319
2323
  }
2320
- function Ee(e, t, n) {
2321
- let r = Y[e];
2324
+ function Oe(e, t, n) {
2325
+ let r = J[e];
2322
2326
  if (!r) return t ?? {};
2323
- let i = { ...t }, a = Z(n), o = {
2327
+ let i = { ...t }, a = X(n), o = {
2324
2328
  measures: n.measures ?? [],
2325
2329
  dimensions: n.dimensions ?? [],
2326
2330
  timeDimFields: a.map((e) => e.dimension)
2327
2331
  };
2328
- for (let e of r.dropZones) e.excludeFromInference || X(i[e.key]) || (e.key === "sizeField" || e.key === "colorField" ? Ce(e, r, i, o.measures) : Te(e, i, o));
2332
+ for (let e of r.dropZones) e.excludeFromInference || Y(i[e.key]) || (e.key === "sizeField" || e.key === "colorField" ? Te(e, r, i, o.measures) : De(e, i, o));
2329
2333
  return i;
2330
2334
  }
2331
- function De(n) {
2335
+ function ke(n) {
2332
2336
  return n ? e(n) ? t(n) : n : "";
2333
2337
  }
2334
- function Oe(e) {
2338
+ function Ae(e) {
2335
2339
  let t = ["\nChart config requirements by type:"];
2336
2340
  for (let n of e) {
2337
- let e = Y[n];
2341
+ let e = J[n];
2338
2342
  if (!e) continue;
2339
- let r = [De(e.description), De(e.useCase)].filter(Boolean).join(". "), i = r ? ` — ${r}.` : "", a = he(n) ? " Query MUST set \"ungrouped\": true, which also means one cube plus its to-one joins — an ungrouped query cannot span a hasMany relationship." : "", o = e.dropZones.filter((e) => e.mandatory);
2343
+ let r = [ke(e.description), ke(e.useCase)].filter(Boolean).join(". "), i = r ? ` — ${r}.` : "", a = _e(n) ? " Query MUST set \"ungrouped\": true, which also means one cube plus its to-one joins — an ungrouped query cannot span a hasMany relationship." : "", o = e.dropZones.filter((e) => e.mandatory);
2340
2344
  if (o.length === 0 && !e.skipQuery) {
2341
2345
  t.push(` ${n}${i}${a} chartConfig auto-inferred from query.`);
2342
2346
  continue;
@@ -2355,7 +2359,7 @@ function Oe(e) {
2355
2359
  }
2356
2360
  //#endregion
2357
2361
  //#region src/server/agent/data-shape.ts
2358
- function ke(e, t, n, r) {
2362
+ function je(e, t, n, r) {
2359
2363
  let i = /* @__PURE__ */ new Set(), a = 0, o, s, c = !0;
2360
2364
  for (let n of e) {
2361
2365
  let e = n[t];
@@ -2379,28 +2383,28 @@ function ke(e, t, n, r) {
2379
2383
  } : {}
2380
2384
  };
2381
2385
  }
2382
- function Ae(e, t) {
2386
+ function Me(e, t) {
2383
2387
  if (e.length === 0) return [];
2384
2388
  let n = [], r = /* @__PURE__ */ new Set(), i = [
2385
2389
  ["dimension", t?.dimensions],
2386
2390
  ["timeDimension", t?.timeDimensions],
2387
2391
  ["measure", t?.measures]
2388
2392
  ];
2389
- for (let [t, a] of i) for (let [i, o] of Object.entries(a ?? {})) r.add(i), n.push(ke(e, i, t, o?.type));
2390
- for (let t of Object.keys(e[0])) r.has(t) || n.push(ke(e, t, "dimension", void 0));
2393
+ for (let [t, a] of i) for (let [i, o] of Object.entries(a ?? {})) r.add(i), n.push(je(e, i, t, o?.type));
2394
+ for (let t of Object.keys(e[0])) r.has(t) || n.push(je(e, t, "dimension", void 0));
2391
2395
  return n;
2392
2396
  }
2393
2397
  //#endregion
2394
2398
  //#region src/shared/query-shape.ts
2395
- function je(e) {
2399
+ function Z(e) {
2396
2400
  if (!e || typeof e != "object") return !1;
2397
2401
  let t = (e) => Array.isArray(e) ? e.length : 0;
2398
2402
  return t(e.measures) > 0 || t(e.dimensions) > 0 || t(e.timeDimensions) > 0;
2399
2403
  }
2400
2404
  //#endregion
2401
2405
  //#region src/server/agent/tools.ts
2402
- var Me = "With a query attached, `content` is rendered as a Knap template over the result rows. Variables: `rows` (rows keyed by snake_case alias, so Employees.avgSalary becomes employees_avg_salary), `labelled` (same rows keyed by field label — use this for `{{ labelled | table }}` so column headers read well), `data` (raw rows, addressed as `{{ data[0][\"Employees.count\"] }}`), `rowCount`, `first` and `last`. Filters include sum, map, join, length, sort, reverse, slice, round, number_format, date and table. Example: `We employ {{ rows | map:\"employees_count\" | sum }} people across {{ rowCount }} teams.` A template cannot sort and then index, so rely on the query's own order via `first` and `last`.", Q = /* @__PURE__ */ "bar.line.area.pie.scatter.radar.bubble.table.kpiNumber.kpiDelta.kpiText.funnel.heatmap.sankey.sunburst.retentionHeatmap.retentionCombined.boxPlot.markdown.recordsTable.treemap.radialBar.proportionBar.dotStrip.waterfall.measureProfile.activityGrid.gauge.candlestick".split(".");
2403
- function Ne() {
2406
+ var Ne = "With a query attached, `content` is rendered as a Knap template over the result rows. Variables: `rows` (rows keyed by snake_case alias, so Employees.avgSalary becomes employees_avg_salary), `labelled` (same rows keyed by field label — use this for `{{ labelled | table }}` so column headers read well), `data` (raw rows, addressed as `{{ data[0][\"Employees.count\"] }}`), `rowCount`, `first` and `last`. Filters include sum, map, join, length, sort, reverse, slice, round, number_format, date and table. Example: `We employ {{ rows | map:\"employees_count\" | sum }} people across {{ rowCount }} teams.` A template cannot sort and then index, so rely on the query's own order via `first` and `last`.", Q = /* @__PURE__ */ "bar.line.area.pie.scatter.radar.bubble.table.kpiNumber.kpiDelta.kpiText.funnel.heatmap.sankey.sunburst.retentionHeatmap.retentionCombined.boxPlot.markdown.recordsTable.treemap.radialBar.proportionBar.dotStrip.waterfall.measureProfile.activityGrid.gauge.candlestick".split(".");
2407
+ function Pe() {
2404
2408
  return [
2405
2409
  {
2406
2410
  name: "discover_cubes",
@@ -2445,7 +2449,7 @@ function Ne() {
2445
2449
  },
2446
2450
  {
2447
2451
  name: "add_portlet",
2448
- description: "Add a chart visualization to the notebook.\n" + Oe(Q) + "\nThe query is validated before adding. The portlet fetches its own data.",
2452
+ description: "Add a chart visualization to the notebook.\n" + Ae(Q) + "\nThe query is validated before adding. The portlet fetches its own data.",
2449
2453
  parameters: {
2450
2454
  type: "object",
2451
2455
  properties: {
@@ -2501,7 +2505,7 @@ function Ne() {
2501
2505
  },
2502
2506
  content: {
2503
2507
  type: "string",
2504
- description: "Markdown body, for the \"markdown\" chart type. " + Me
2508
+ description: "Markdown body, for the \"markdown\" chart type. " + Ne
2505
2509
  },
2506
2510
  ...c,
2507
2511
  ...u
@@ -2629,7 +2633,7 @@ function Ne() {
2629
2633
  },
2630
2634
  displayConfig: {
2631
2635
  type: "object",
2632
- description: "Chart display configuration (for markdown: { content, hideHeader, transparentBackground, autoHeight }). " + Me,
2636
+ description: "Chart display configuration (for markdown: { content, hideHeader, transparentBackground, autoHeight }). " + Ne,
2633
2637
  properties: {
2634
2638
  ...c,
2635
2639
  ...u
@@ -2741,7 +2745,7 @@ function Ne() {
2741
2745
  }
2742
2746
  ];
2743
2747
  }
2744
- function Pe(e) {
2748
+ function Fe(e) {
2745
2749
  let { semanticLayer: t, securityContext: n } = e, r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
2746
2750
  r.set("discover_cubes", async (e) => {
2747
2751
  let r = { cubes: (await s(t, n, {
@@ -2807,7 +2811,7 @@ function Pe(e) {
2807
2811
  rowCount: a.data.length,
2808
2812
  data: s,
2809
2813
  truncated: a.data.length > s.length,
2810
- dataShape: Ae(s, a.annotation),
2814
+ dataShape: Me(s, a.annotation),
2811
2815
  annotation: a.annotation
2812
2816
  }) + "\n[IMPORTANT: Your next response MUST start with a brief text message BEFORE any tool calls. Now call add_markdown and add_portlet to visualize these results.]" };
2813
2817
  } catch (t) {
@@ -2844,9 +2848,9 @@ function Pe(e) {
2844
2848
  let s = !!(i.funnel || i.flow || i.retention), c, l = r, u;
2845
2849
  if (s) c = e.chartConfig ?? {};
2846
2850
  else {
2847
- let t = Se(r, e.chartConfig, i);
2851
+ let t = we(r, e.chartConfig, i);
2848
2852
  l = t.chartType, u = t.note;
2849
- let n = Ee(l, e.chartConfig, i), a = xe(l, n, i);
2853
+ let n = Oe(l, e.chartConfig, i), a = Ce(l, n, i);
2850
2854
  if (!a.isValid) return { error: `Chart config invalid — fix these errors and retry:\n${a.errors.join("\n")}\n\nchartType: ${l}\nAttempted chartConfig:\n${JSON.stringify(n, null, 2)}\n\nQuery:\n${JSON.stringify(i, null, 2)}` };
2851
2855
  c = n;
2852
2856
  }
@@ -2951,7 +2955,7 @@ function Pe(e) {
2951
2955
  i.push(`Portlet "${e.title}": invalid JSON query`);
2952
2956
  continue;
2953
2957
  }
2954
- if (u = a(u), c && !je(u)) continue;
2958
+ if (u = a(u), c && !Z(u)) continue;
2955
2959
  let d = t.validateQuery(u, n);
2956
2960
  if (!d.isValid) {
2957
2961
  i.push(`Portlet "${e.title}": ${d.errors.join(", ")}`);
@@ -2961,7 +2965,7 @@ function Pe(e) {
2961
2965
  s.set(e, r);
2962
2966
  continue;
2963
2967
  }
2964
- let f = Se(r, e.chartConfig, u).chartType, p = Ee(f, e.chartConfig, u), m = xe(f, p, u);
2968
+ let f = we(r, e.chartConfig, u).chartType, p = Oe(f, e.chartConfig, u), m = Ce(f, p, u);
2965
2969
  if (!m.isValid) {
2966
2970
  i.push(`Portlet "${e.title}": ${m.errors.join(", ")}`);
2967
2971
  continue;
@@ -2989,7 +2993,7 @@ function Pe(e) {
2989
2993
  chartConfig: o.get(e) ?? e.chartConfig ?? {},
2990
2994
  displayConfig: e.displayConfig || {}
2991
2995
  } },
2992
- query: n && !je(c) ? {} : c
2996
+ query: n && !Z(c) ? {} : c
2993
2997
  };
2994
2998
  return {
2995
2999
  id: e.id,
@@ -3026,14 +3030,14 @@ function Pe(e) {
3026
3030
  }
3027
3031
  //#endregion
3028
3032
  //#region src/server/agent/providers/factory.ts
3029
- async function Fe(e, t, n) {
3033
+ async function Ie(e, t, n) {
3030
3034
  switch (e) {
3031
3035
  case "anthropic": {
3032
3036
  let { AnthropicProvider: e } = await import("./anthropic-MQlafOZv.js");
3033
3037
  return new e(t);
3034
3038
  }
3035
3039
  case "openai": {
3036
- let { OpenAIProvider: e } = await import("./openai-BpcMIv4e.js");
3040
+ let { OpenAIProvider: e } = await import("./openai-C4HrjyJj.js");
3037
3041
  return new e(t, n);
3038
3042
  }
3039
3043
  case "google": {
@@ -3045,7 +3049,7 @@ async function Fe(e, t, n) {
3045
3049
  }
3046
3050
  //#endregion
3047
3051
  //#region src/server/agent/handler-steps.ts
3048
- function Ie(e, t) {
3052
+ function Le(e, t) {
3049
3053
  if (Array.isArray(t)) for (let n of t) e.push(n);
3050
3054
  else e.push(t);
3051
3055
  }
@@ -3054,7 +3058,7 @@ function $(e) {
3054
3058
  e();
3055
3059
  } catch {}
3056
3060
  }
3057
- function Le(e, t) {
3061
+ function Re(e, t) {
3058
3062
  let n = [];
3059
3063
  if (!e || e.length === 0) return n;
3060
3064
  for (let r of e) {
@@ -3087,7 +3091,7 @@ function Le(e, t) {
3087
3091
  content: typeof e.result == "string" ? e.result : JSON.stringify(e.result ?? ""),
3088
3092
  isError: e.status === "error"
3089
3093
  }));
3090
- Ie(n, t.formatToolResults(i));
3094
+ Le(n, t.formatToolResults(i));
3091
3095
  } else e.length > 0 && n.push({
3092
3096
  role: "assistant",
3093
3097
  content: r.content
@@ -3095,22 +3099,22 @@ function Le(e, t) {
3095
3099
  }
3096
3100
  return n;
3097
3101
  }
3098
- function Re(e, t) {
3102
+ function ze(e, t) {
3099
3103
  if (e?.type === "tool_use" && t) try {
3100
3104
  e.input = JSON.parse(t);
3101
3105
  } catch {
3102
3106
  e.input = {}, e.inputParseError = !0;
3103
3107
  }
3104
3108
  }
3105
- function ze(e, t) {
3109
+ function Be(e, t) {
3106
3110
  let n = e.contentBlocks[e.contentBlocks.length - 1];
3107
3111
  n && n.type === "text" ? n.text = (n.text || "") + t : e.contentBlocks.push({
3108
3112
  type: "text",
3109
3113
  text: t
3110
3114
  });
3111
3115
  }
3112
- function Be(e, t) {
3113
- e.currentBlockIsToolUse && e.currentToolInputJson && Re(e.contentBlocks[e.contentBlocks.length - 1], e.currentToolInputJson), e.contentBlocks.push({
3116
+ function Ve(e, t) {
3117
+ e.currentBlockIsToolUse && e.currentToolInputJson && ze(e.contentBlocks[e.contentBlocks.length - 1], e.currentToolInputJson), e.contentBlocks.push({
3114
3118
  type: "tool_use",
3115
3119
  id: t.id,
3116
3120
  name: t.name,
@@ -3118,16 +3122,16 @@ function Be(e, t) {
3118
3122
  ...t.metadata ? { metadata: t.metadata } : {}
3119
3123
  }), e.currentToolInputJson = "", e.currentBlockIsToolUse = !0;
3120
3124
  }
3121
- function Ve(e, t) {
3125
+ function He(e, t) {
3122
3126
  if (t.id && t.input) {
3123
3127
  let n = e.contentBlocks.find((e) => e.type === "tool_use" && e.id === t.id);
3124
3128
  n && (n.input = t.input, t.parseError && (n.inputParseError = !0));
3125
3129
  } else if (e.currentBlockIsToolUse) {
3126
3130
  let t = e.contentBlocks[e.contentBlocks.length - 1];
3127
- t?.type === "tool_use" && e.currentToolInputJson && (Re(t, e.currentToolInputJson), e.currentToolInputJson = ""), e.currentBlockIsToolUse = !1;
3131
+ t?.type === "tool_use" && e.currentToolInputJson && (ze(t, e.currentToolInputJson), e.currentToolInputJson = ""), e.currentBlockIsToolUse = !1;
3128
3132
  }
3129
3133
  }
3130
- async function* He(e, t) {
3134
+ async function* Ue(e, t) {
3131
3135
  let n = {
3132
3136
  contentBlocks: [],
3133
3137
  currentToolInputJson: "",
@@ -3138,13 +3142,13 @@ async function* He(e, t) {
3138
3142
  let e = r;
3139
3143
  switch (e.type) {
3140
3144
  case "text_delta":
3141
- ze(n, e.text), yield {
3145
+ Be(n, e.text), yield {
3142
3146
  type: "text_delta",
3143
3147
  data: e.text
3144
3148
  };
3145
3149
  break;
3146
3150
  case "tool_use_start":
3147
- Be(n, e), yield {
3151
+ Ve(n, e), yield {
3148
3152
  type: "tool_use_start",
3149
3153
  data: {
3150
3154
  id: e.id,
@@ -3157,7 +3161,7 @@ async function* He(e, t) {
3157
3161
  n.currentToolInputJson += e.json;
3158
3162
  break;
3159
3163
  case "tool_use_end":
3160
- Ve(n, e);
3164
+ He(n, e);
3161
3165
  break;
3162
3166
  case "message_meta": e.inputTokens != null && (n.inputTokens = e.inputTokens), e.outputTokens != null && (n.outputTokens = e.outputTokens), e.stopReason && (n.stopReason = e.stopReason);
3163
3167
  }
@@ -3169,7 +3173,7 @@ async function* He(e, t) {
3169
3173
  outputTokens: n.outputTokens
3170
3174
  };
3171
3175
  }
3172
- async function* Ue(e, t) {
3176
+ async function* We(e, t) {
3173
3177
  let { executor: n, observability: r, traceId: i, turn: a } = t, o = e.name, s = e.input || {}, c = e.id;
3174
3178
  if (e.inputParseError) {
3175
3179
  let e = `Could not parse the arguments you sent for ${o} — they were not valid JSON, so the tool was not run. Call it again with well-formed JSON arguments.`;
@@ -3260,26 +3264,26 @@ async function* Ue(e, t) {
3260
3264
  };
3261
3265
  }
3262
3266
  }
3263
- async function* We(e, t) {
3267
+ async function* Ge(e, t) {
3264
3268
  let n = [];
3265
3269
  for (let r of e) {
3266
3270
  if (r.type !== "tool_use") continue;
3267
- let e = yield* Ue(r, t);
3271
+ let e = yield* We(r, t);
3268
3272
  n.push(e);
3269
3273
  }
3270
3274
  return n;
3271
3275
  }
3272
3276
  //#endregion
3273
3277
  //#region src/server/agent/handler.ts
3274
- var Ge = {
3278
+ var Ke = {
3275
3279
  anthropic: "claude-sonnet-4-6",
3276
3280
  openai: "gpt-4.1-mini",
3277
3281
  google: "gemini-3-flash-preview"
3278
3282
  };
3279
- async function* Ke(e) {
3280
- let { message: n, history: r, semanticLayer: i, securityContext: a, agentConfig: o, apiKey: s } = e, c = e.sessionId || crypto.randomUUID(), l = o.observability, u = crypto.randomUUID(), d = Date.now(), f = e.providerOverride || o.provider || "anthropic", p = e.modelOverride || o.model || Ge[f] || "claude-sonnet-4-6", m = e.baseURLOverride || o.baseURL, h = o.maxTurns || 25, g = o.maxTokens || 8192, _;
3283
+ async function* qe(e) {
3284
+ let { message: n, history: r, semanticLayer: i, securityContext: a, agentConfig: o, apiKey: s } = e, c = e.sessionId || crypto.randomUUID(), l = o.observability, u = crypto.randomUUID(), d = Date.now(), f = e.providerOverride || o.provider || "anthropic", p = e.modelOverride || o.model || Ke[f] || "claude-sonnet-4-6", m = e.baseURLOverride || o.baseURL, h = o.maxTurns || 25, g = o.maxTokens || 8192, _;
3281
3285
  try {
3282
- _ = await Fe(f, s, { baseURL: m });
3286
+ _ = await Ie(f, s, { baseURL: m });
3283
3287
  } catch (e) {
3284
3288
  console.error("[agent] Failed to create %s provider: %s", String(f).replace(/\n|\r/g, ""), String(e instanceof Error ? e.message : e).replace(/\n|\r/g, "")), yield {
3285
3289
  type: "error",
@@ -3287,7 +3291,7 @@ async function* Ke(e) {
3287
3291
  };
3288
3292
  return;
3289
3293
  }
3290
- let v = Ne(), y = Pe({
3294
+ let v = Pe(), y = Fe({
3291
3295
  semanticLayer: i,
3292
3296
  securityContext: a
3293
3297
  }), b = se(i.getMetadata(a));
@@ -3298,7 +3302,7 @@ async function* Ke(e) {
3298
3302
  model: p,
3299
3303
  historyLength: r?.length ?? 0
3300
3304
  }));
3301
- let x = Le(r, _);
3305
+ let x = Re(r, _);
3302
3306
  x.push({
3303
3307
  role: "user",
3304
3308
  content: n
@@ -3313,7 +3317,7 @@ async function* Ke(e) {
3313
3317
  system: b,
3314
3318
  tools: v,
3315
3319
  messages: x
3316
- }), r = Date.now(), { contentBlocks: i, stopReason: a, inputTokens: o, outputTokens: s } = yield* He(_, n);
3320
+ }), r = Date.now(), { contentBlocks: i, stopReason: a, inputTokens: o, outputTokens: s } = yield* Ue(_, n);
3317
3321
  if ($(() => l?.onGenerationEnd?.({
3318
3322
  traceId: u,
3319
3323
  turn: e,
@@ -3335,7 +3339,7 @@ async function* Ke(e) {
3335
3339
  break;
3336
3340
  }
3337
3341
  if (!_.shouldContinue(a)) break;
3338
- let c = yield* We(i, {
3342
+ let c = yield* Ge(i, {
3339
3343
  executor: y,
3340
3344
  observability: l,
3341
3345
  traceId: u,
@@ -3344,7 +3348,7 @@ async function* Ke(e) {
3344
3348
  yield {
3345
3349
  type: "turn_complete",
3346
3350
  data: {}
3347
- }, Ie(x, _.formatToolResults(c));
3351
+ }, Le(x, _.formatToolResults(c));
3348
3352
  }
3349
3353
  $(() => l?.onChatEnd?.({
3350
3354
  traceId: u,
@@ -3375,4 +3379,4 @@ async function* Ke(e) {
3375
3379
  }
3376
3380
  }
3377
3381
  //#endregion
3378
- export { k as C, T as D, E, w as O, A as S, D as T, F as _, K as a, M as b, U as c, V as d, B as f, I as g, L as h, Ke as handleAgentChat, q as i, C as k, ce as l, R as m, ue as n, G as o, z as p, le as r, W as s, de as t, H as u, P as v, O as w, j as x, N as y };
3382
+ export { A as C, E as D, D as E, T as O, j as S, O as T, I as _, le as a, N as b, W as c, H as d, V as f, L as g, R as h, qe as handleAgentChat, ue as i, w as k, U as l, z as m, fe as n, K as o, B as p, de as r, G as s, pe as t, ce as u, F as v, k as w, M as x, P as y };