drizzle-cube 0.8.1 → 0.8.3

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 (263) hide show
  1. package/dist/adapters/ActivityGridChart.config-Bu5lf3M0.js +2 -0
  2. package/dist/adapters/ActivityGridChart.config-NSLCFzvM.cjs +1 -0
  3. package/dist/adapters/AreaChart.config-Bv7qJYd0.cjs +1 -0
  4. package/dist/adapters/AreaChart.config-DexPQDQp.js +2 -0
  5. package/dist/adapters/BarChart.config-Br0vyPO0.js +2 -0
  6. package/dist/adapters/BarChart.config-Dc1FHoux.cjs +1 -0
  7. package/dist/adapters/BoxPlotChart.config-C_j-wp0l.cjs +1 -0
  8. package/dist/adapters/BoxPlotChart.config-Dz9P8ck_.js +2 -0
  9. package/dist/adapters/BubbleChart.config-e6hABmpk.js +2 -0
  10. package/dist/adapters/BubbleChart.config-ro80CWd_.cjs +1 -0
  11. package/dist/adapters/CandlestickChart.config-Btzcen-6.cjs +1 -0
  12. package/dist/adapters/CandlestickChart.config-BzAPnbp4.js +2 -0
  13. package/dist/adapters/DataTable.config-RNGMSueS.cjs +1 -0
  14. package/dist/adapters/DataTable.config-enzxzWhP.js +2 -0
  15. package/dist/adapters/DotStripChart.config-C3FEV6Ys.js +2 -0
  16. package/dist/adapters/DotStripChart.config-DhODtwbu.cjs +1 -0
  17. package/dist/adapters/FunnelChart.config-CX1DFABr.cjs +1 -0
  18. package/dist/adapters/FunnelChart.config-DXg1N0FP.js +2 -0
  19. package/dist/adapters/GaugeChart.config-Dl2DrFSl.cjs +1 -0
  20. package/dist/adapters/GaugeChart.config-oiPzrfGx.js +2 -0
  21. package/dist/adapters/HeatMapChart.config-B9SrePWx.js +2 -0
  22. package/dist/adapters/HeatMapChart.config-CTwcA2aU.cjs +1 -0
  23. package/dist/adapters/KpiDelta.config-CgZQueiY.js +2 -0
  24. package/dist/adapters/KpiDelta.config-eybdn0eH.cjs +1 -0
  25. package/dist/adapters/KpiNumber.config-Ce2piJuC.js +2 -0
  26. package/dist/adapters/KpiNumber.config-h_KXh89X.cjs +1 -0
  27. package/dist/adapters/KpiText.config-CLk6a0TW.cjs +1 -0
  28. package/dist/adapters/KpiText.config-_g2gpg2d.js +2 -0
  29. package/dist/adapters/LineChart.config-C3MQKW5U.cjs +1 -0
  30. package/dist/adapters/LineChart.config-CA4b1Xt-.js +2 -0
  31. package/dist/adapters/MarkdownChart.config-B4lCc0_v.js +2 -0
  32. package/dist/adapters/MarkdownChart.config-waq3gxEs.cjs +1 -0
  33. package/dist/adapters/MeasureProfileChart.config-B1LrfeP-.js +2 -0
  34. package/dist/adapters/MeasureProfileChart.config-Djka_dSU.cjs +1 -0
  35. package/dist/adapters/PieChart.config-BfSLFe9d.js +2 -0
  36. package/dist/adapters/PieChart.config-D5ixLlYJ.cjs +1 -0
  37. package/dist/adapters/ProportionBarChart.config-CRWy5aME.cjs +1 -0
  38. package/dist/adapters/ProportionBarChart.config-nyP6m6i0.js +2 -0
  39. package/dist/adapters/RadarChart.config-B7C-0wYa.cjs +1 -0
  40. package/dist/adapters/RadarChart.config-COzBFXrA.js +2 -0
  41. package/dist/adapters/RadialBarChart.config-C50IqzNQ.js +2 -0
  42. package/dist/adapters/RadialBarChart.config-LTSl-xoA.cjs +1 -0
  43. package/dist/adapters/RecordsTable.config-BHWD9CBE.js +2 -0
  44. package/dist/adapters/RecordsTable.config-DnY_PByk.cjs +1 -0
  45. package/dist/adapters/RetentionCombinedChart.config-CObWpIId.cjs +1 -0
  46. package/dist/adapters/RetentionCombinedChart.config-DxPk1BaI.js +2 -0
  47. package/dist/adapters/RetentionHeatmap.config-CHZiVXVo.cjs +1 -0
  48. package/dist/adapters/RetentionHeatmap.config-Ckoiq5Jo.js +2 -0
  49. package/dist/adapters/SankeyChart.config-CVoAarnp.cjs +1 -0
  50. package/dist/adapters/SankeyChart.config-D2R8E5Ss.js +2 -0
  51. package/dist/adapters/ScatterChart.config-BE_J_t4r.js +2 -0
  52. package/dist/adapters/ScatterChart.config-DsVSbcSc.cjs +1 -0
  53. package/dist/adapters/SunburstChart.config-BLtPPPli.cjs +1 -0
  54. package/dist/adapters/SunburstChart.config-DrnmHxNQ.js +2 -0
  55. package/dist/adapters/TreeMapChart.config-4p3cVWIy.js +2 -0
  56. package/dist/adapters/TreeMapChart.config-DkRO8LYG.cjs +1 -0
  57. package/dist/adapters/WaterfallChart.config-CKi4zg3x.cjs +1 -0
  58. package/dist/adapters/WaterfallChart.config-DuUXmAyw.js +2 -0
  59. package/dist/adapters/{compiler-CBGD_4Et.js → compiler-BFLAXV7W.js} +1 -1
  60. package/dist/adapters/{compiler-BxZHh0UD.cjs → compiler-DG6dLFQU.cjs} +1 -1
  61. package/dist/adapters/core/index.cjs +1 -1
  62. package/dist/adapters/core/index.js +1 -1
  63. package/dist/adapters/{core-DAAnqPyN.js → core-BBtbwMwR.js} +2 -2
  64. package/dist/adapters/{core-CIGuwGuI.cjs → core-DnUv8WiY.cjs} +1 -1
  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 +5 -5
  69. package/dist/adapters/{handler-eA0VJDHj.js → handler-_xh4X1OO.js} +215 -95
  70. package/dist/adapters/{handler-BcYTw6zB.cjs → handler-l75Hbzv3.cjs} +9 -9
  71. package/dist/adapters/hono/index.cjs +1 -1
  72. package/dist/adapters/hono/index.js +4 -4
  73. package/dist/adapters/mcp-tools.cjs +1 -1
  74. package/dist/adapters/mcp-tools.js +2 -2
  75. package/dist/adapters/mcp-transport-BOfhj01O.js +730 -0
  76. package/dist/adapters/mcp-transport-Dl5bn6h4.cjs +42 -0
  77. package/dist/adapters/nextjs/index.cjs +1 -1
  78. package/dist/adapters/nextjs/index.js +5 -5
  79. package/dist/adapters/{openai-CYYjUG_3.js → openai-BJyU4kvE.js} +1 -1
  80. package/dist/adapters/{openai-Bw1j-OiP.cjs → openai-DH9MtcLA.cjs} +1 -1
  81. package/dist/adapters/{openai-BZ48ioYp.js → openai-DK_KWiI7.js} +1 -1
  82. package/dist/adapters/{openai-CLjyL5_J.cjs → openai-GO3M7Hwi.cjs} +1 -1
  83. package/dist/adapters/{utils-BagURNRb.js → utils-BhlkVCzZ.js} +38 -0
  84. package/dist/adapters/utils-C1JpSDOX.cjs +128 -0
  85. package/dist/adapters/utils.cjs +1 -1
  86. package/dist/adapters/utils.js +1 -1
  87. package/dist/cjs/client/components/PortletGroupCard.d.ts +3 -1
  88. package/dist/cjs/client/components/RowManagedLayout.d.ts +5 -2
  89. package/dist/cjs/client/components/charts/DotStripChart.config.d.ts +15 -0
  90. package/dist/cjs/client/components/charts/DotStripChart.d.ts +4 -0
  91. package/dist/cjs/client/components/charts/DotStripChart.helpers.d.ts +91 -0
  92. package/dist/cjs/client/components/dashboardPortletCard/cardStyles.d.ts +7 -3
  93. package/dist/cjs/client/components/rowManagedLayout/sections.d.ts +46 -0
  94. package/dist/cjs/client/icons/types.d.ts +1 -0
  95. package/dist/cjs/client/types.d.ts +6 -1
  96. package/dist/cli/index.cjs +4 -0
  97. package/dist/client/charts.js +12 -12
  98. package/dist/client/chunks/{DashboardEditModal-_ZDMwaGX.js → DashboardEditModal-B-0eV6vd.js} +878 -785
  99. package/dist/client/chunks/DashboardEditModal-B-0eV6vd.js.map +1 -0
  100. package/dist/client/chunks/DotStripChart-ChwsVeRU.js +408 -0
  101. package/dist/client/chunks/DotStripChart-ChwsVeRU.js.map +1 -0
  102. package/dist/client/chunks/{ProportionBarChart-qfpAWhIg.js → ProportionBarChart-D-Qt9nkF.js} +3 -3
  103. package/dist/client/chunks/{ProportionBarChart-qfpAWhIg.js.map → ProportionBarChart-D-Qt9nkF.js.map} +1 -1
  104. package/dist/client/chunks/{RecordsTable-KmJy94xN.js → RecordsTable-aG-QYXOH.js} +4 -4
  105. package/dist/client/chunks/{RecordsTable-KmJy94xN.js.map → RecordsTable-aG-QYXOH.js.map} +1 -1
  106. package/dist/client/chunks/{RetentionCombinedChart-C7X6aj97.js → RetentionCombinedChart-BRZ9w7ah.js} +3 -3
  107. package/dist/client/chunks/{RetentionCombinedChart-C7X6aj97.js.map → RetentionCombinedChart-BRZ9w7ah.js.map} +1 -1
  108. package/dist/client/chunks/{RetentionHeatmap-PpRpiqR_.js → RetentionHeatmap-LkTt89pK.js} +2 -2
  109. package/dist/client/chunks/{RetentionHeatmap-PpRpiqR_.js.map → RetentionHeatmap-LkTt89pK.js.map} +1 -1
  110. package/dist/client/chunks/{analysis-builder-DaqyOjLX.js → analysis-builder-DnDw164v.js} +9 -9
  111. package/dist/client/chunks/{analysis-builder-DaqyOjLX.js.map → analysis-builder-DnDw164v.js.map} +1 -1
  112. package/dist/client/chunks/{analysis-builder-shared-ow9KAHDP.js → analysis-builder-shared-D7eA0iW7.js} +9 -9
  113. package/dist/client/chunks/{analysis-builder-shared-ow9KAHDP.js.map → analysis-builder-shared-D7eA0iW7.js.map} +1 -1
  114. package/dist/client/chunks/{chart-activity-grid-DO82rrbW.js → chart-activity-grid-CJzxC18G.js} +40 -2
  115. package/dist/client/chunks/chart-activity-grid-CJzxC18G.js.map +1 -0
  116. package/dist/client/chunks/{chart-area-9SBeG0GM.js → chart-area-C66dgy84.js} +2 -2
  117. package/dist/client/chunks/{chart-area-9SBeG0GM.js.map → chart-area-C66dgy84.js.map} +1 -1
  118. package/dist/client/chunks/{chart-bar-tfgmLK2D.js → chart-bar-D9kiSOCT.js} +3 -3
  119. package/dist/client/chunks/{chart-bar-tfgmLK2D.js.map → chart-bar-D9kiSOCT.js.map} +1 -1
  120. package/dist/client/chunks/{chart-box-plot-BuYW6j6g.js → chart-box-plot-FsLIMisc.js} +2 -2
  121. package/dist/client/chunks/{chart-box-plot-BuYW6j6g.js.map → chart-box-plot-FsLIMisc.js.map} +1 -1
  122. package/dist/client/chunks/{chart-bubble-BNmonWqW.js → chart-bubble-BzyvrqKs.js} +2 -2
  123. package/dist/client/chunks/{chart-bubble-BNmonWqW.js.map → chart-bubble-BzyvrqKs.js.map} +1 -1
  124. package/dist/client/chunks/{chart-candlestick-BYeWNkKl.js → chart-candlestick-6lD35bLw.js} +2 -2
  125. package/dist/client/chunks/{chart-candlestick-BYeWNkKl.js.map → chart-candlestick-6lD35bLw.js.map} +1 -1
  126. package/dist/client/chunks/{chart-data-table-C_oHiK6N.js → chart-data-table-Cou9qOab.js} +248 -120
  127. package/dist/client/chunks/chart-data-table-Cou9qOab.js.map +1 -0
  128. package/dist/client/chunks/{chart-funnel-B_CWC3cL.js → chart-funnel-B0775aaT.js} +2 -2
  129. package/dist/client/chunks/{chart-funnel-B_CWC3cL.js.map → chart-funnel-B0775aaT.js.map} +1 -1
  130. package/dist/client/chunks/{chart-gauge-D7VxwPnx.js → chart-gauge-pf-2E8w9.js} +3 -3
  131. package/dist/client/chunks/{chart-gauge-D7VxwPnx.js.map → chart-gauge-pf-2E8w9.js.map} +1 -1
  132. package/dist/client/chunks/{chart-heat-map-q7Vf_dog.js → chart-heat-map-EzVGe6fl.js} +3 -3
  133. package/dist/client/chunks/{chart-heat-map-q7Vf_dog.js.map → chart-heat-map-EzVGe6fl.js.map} +1 -1
  134. package/dist/client/chunks/{chart-kpi-delta-PEuA3iGs.js → chart-kpi-delta-lfskDdx4.js} +3 -3
  135. package/dist/client/chunks/{chart-kpi-delta-PEuA3iGs.js.map → chart-kpi-delta-lfskDdx4.js.map} +1 -1
  136. package/dist/client/chunks/{chart-kpi-number-DlxrO6Pq.js → chart-kpi-number-BnsofbTf.js} +5 -5
  137. package/dist/client/chunks/{chart-kpi-number-DlxrO6Pq.js.map → chart-kpi-number-BnsofbTf.js.map} +1 -1
  138. package/dist/client/chunks/{chart-kpi-text-Cx6cJu2s.js → chart-kpi-text-U5EdmdkV.js} +3 -3
  139. package/dist/client/chunks/{chart-kpi-text-Cx6cJu2s.js.map → chart-kpi-text-U5EdmdkV.js.map} +1 -1
  140. package/dist/client/chunks/{chart-line-pDe25JzB.js → chart-line-IwXqPY80.js} +3 -3
  141. package/dist/client/chunks/{chart-line-pDe25JzB.js.map → chart-line-IwXqPY80.js.map} +1 -1
  142. package/dist/client/chunks/{chart-markdown-CRY15yp0.js → chart-markdown-BhLRzK_W.js} +3 -3
  143. package/dist/client/chunks/chart-markdown-BhLRzK_W.js.map +1 -0
  144. package/dist/client/chunks/{chart-measure-profile-DyQ-vvuC.js → chart-measure-profile-Bs4vhBJQ.js} +3 -3
  145. package/dist/client/chunks/{chart-measure-profile-DyQ-vvuC.js.map → chart-measure-profile-Bs4vhBJQ.js.map} +1 -1
  146. package/dist/client/chunks/{chart-pie-ZrnBycy1.js → chart-pie-LDJfDXfX.js} +3 -3
  147. package/dist/client/chunks/{chart-pie-ZrnBycy1.js.map → chart-pie-LDJfDXfX.js.map} +1 -1
  148. package/dist/client/chunks/{chart-radar-BXbnYMUJ.js → chart-radar-BZY6TP9m.js} +3 -3
  149. package/dist/client/chunks/{chart-radar-BXbnYMUJ.js.map → chart-radar-BZY6TP9m.js.map} +1 -1
  150. package/dist/client/chunks/{chart-radial-bar-CYxH3ryh.js → chart-radial-bar-aga05X7h.js} +3 -3
  151. package/dist/client/chunks/{chart-radial-bar-CYxH3ryh.js.map → chart-radial-bar-aga05X7h.js.map} +1 -1
  152. package/dist/client/chunks/{chart-sankey-C9R_TDDh.js → chart-sankey-MRCoWFd4.js} +2 -2
  153. package/dist/client/chunks/{chart-sankey-C9R_TDDh.js.map → chart-sankey-MRCoWFd4.js.map} +1 -1
  154. package/dist/client/chunks/{chart-scatter-DrwRkzzl.js → chart-scatter-DP-nn9hH.js} +3 -3
  155. package/dist/client/chunks/{chart-scatter-DrwRkzzl.js.map → chart-scatter-DP-nn9hH.js.map} +1 -1
  156. package/dist/client/chunks/{chart-sunburst-Bs1yqIPp.js → chart-sunburst-DE4EX7zi.js} +3 -3
  157. package/dist/client/chunks/{chart-sunburst-Bs1yqIPp.js.map → chart-sunburst-DE4EX7zi.js.map} +1 -1
  158. package/dist/client/chunks/{chart-tree-map-BNjHhhVq.js → chart-tree-map-C3O6uQcP.js} +3 -3
  159. package/dist/client/chunks/{chart-tree-map-BNjHhhVq.js.map → chart-tree-map-C3O6uQcP.js.map} +1 -1
  160. package/dist/client/chunks/{chart-waterfall-CyoC0uLT.js → chart-waterfall-DU2Fg_7P.js} +3 -3
  161. package/dist/client/chunks/{chart-waterfall-CyoC0uLT.js.map → chart-waterfall-DU2Fg_7P.js.map} +1 -1
  162. package/dist/client/chunks/{charts-core-DCQ7od_L.js → charts-core-DnirPG1F.js} +2 -2
  163. package/dist/client/chunks/{charts-core-DCQ7od_L.js.map → charts-core-DnirPG1F.js.map} +1 -1
  164. package/dist/client/chunks/charts-loader-D_yEsIpH.js +87 -0
  165. package/dist/client/chunks/charts-loader-D_yEsIpH.js.map +1 -0
  166. package/dist/client/chunks/{nl-NL-CEdoCz6Q.js → nl-NL-B9VnaVAm.js} +39 -1
  167. package/dist/client/chunks/nl-NL-B9VnaVAm.js.map +1 -0
  168. package/dist/client/chunks/{schema-visualization-DfXxFBIY.js → schema-visualization-o1zzuMQy.js} +3 -3
  169. package/dist/client/chunks/{schema-visualization-DfXxFBIY.js.map → schema-visualization-o1zzuMQy.js.map} +1 -1
  170. package/dist/client/chunks/{useDirtyStateTracking-BFJHiiVK.js → useDirtyStateTracking-DTYbmRBn.js} +4 -4
  171. package/dist/client/chunks/{useDirtyStateTracking-BFJHiiVK.js.map → useDirtyStateTracking-DTYbmRBn.js.map} +1 -1
  172. package/dist/client/chunks/{useExplainAI-_C4WQE5I.js → useExplainAI-MuC9jBn-.js} +4 -4
  173. package/dist/client/chunks/{useExplainAI-_C4WQE5I.js.map → useExplainAI-MuC9jBn-.js.map} +1 -1
  174. package/dist/client/chunks/{vendor-Gb3lH0cc.js → vendor-XQT9APIq.js} +2 -2
  175. package/dist/client/chunks/{vendor-Gb3lH0cc.js.map → vendor-XQT9APIq.js.map} +1 -1
  176. package/dist/client/components/PortletGroupCard.d.ts +3 -1
  177. package/dist/client/components/RowManagedLayout.d.ts +5 -2
  178. package/dist/client/components/charts/DotStripChart.config.d.ts +15 -0
  179. package/dist/client/components/charts/DotStripChart.d.ts +4 -0
  180. package/dist/client/components/charts/DotStripChart.helpers.d.ts +91 -0
  181. package/dist/client/components/dashboardPortletCard/cardStyles.d.ts +7 -3
  182. package/dist/client/components/rowManagedLayout/sections.d.ts +46 -0
  183. package/dist/client/components.js +1 -1
  184. package/dist/client/hooks.js +3 -3
  185. package/dist/client/icons/types.d.ts +1 -0
  186. package/dist/client/icons.js +1 -1
  187. package/dist/client/index.js +13 -13
  188. package/dist/client/providers.js +1 -1
  189. package/dist/client/schema.js +1 -1
  190. package/dist/client/styles.css +1 -1
  191. package/dist/client/types.d.ts +6 -1
  192. package/dist/client/utils.js +4 -4
  193. package/dist/client-bundle-stats.html +1 -1
  194. package/dist/mcp-app/mcp-app.html +99 -99
  195. package/dist/server/index.cjs +29 -29
  196. package/dist/server/index.js +312 -154
  197. package/package.json +1 -1
  198. package/dist/adapters/ActivityGridChart.config-DXUUgx0N.cjs +0 -1
  199. package/dist/adapters/ActivityGridChart.config-Dyozu3VW.js +0 -2
  200. package/dist/adapters/AreaChart.config-Di5odBXp.cjs +0 -1
  201. package/dist/adapters/AreaChart.config-KEaXP_4K.js +0 -2
  202. package/dist/adapters/BarChart.config-B-hBHykR.cjs +0 -1
  203. package/dist/adapters/BarChart.config-C5sqbn0A.js +0 -2
  204. package/dist/adapters/BoxPlotChart.config-B1R4Br7L.js +0 -2
  205. package/dist/adapters/BoxPlotChart.config-C82Fhd3c.cjs +0 -1
  206. package/dist/adapters/BubbleChart.config-CoBxmmfp.js +0 -2
  207. package/dist/adapters/BubbleChart.config-DfOnNjL-.cjs +0 -1
  208. package/dist/adapters/CandlestickChart.config-C5ggV_3j.cjs +0 -1
  209. package/dist/adapters/CandlestickChart.config-ZaJpWVuL.js +0 -2
  210. package/dist/adapters/DataTable.config-Cx2_ACdY.cjs +0 -1
  211. package/dist/adapters/DataTable.config-DkAgD-iz.js +0 -2
  212. package/dist/adapters/FunnelChart.config-CvzcECUB.js +0 -2
  213. package/dist/adapters/FunnelChart.config-DVH7IFnb.cjs +0 -1
  214. package/dist/adapters/GaugeChart.config-Csx8rt8o.cjs +0 -1
  215. package/dist/adapters/GaugeChart.config-DEmrNgMa.js +0 -2
  216. package/dist/adapters/HeatMapChart.config-BfD_dpP7.js +0 -2
  217. package/dist/adapters/HeatMapChart.config-D_jlyPJL.cjs +0 -1
  218. package/dist/adapters/KpiDelta.config-CVBdUL_n.cjs +0 -1
  219. package/dist/adapters/KpiDelta.config-D4dCXOxl.js +0 -2
  220. package/dist/adapters/KpiNumber.config-BK5pgIKz.cjs +0 -1
  221. package/dist/adapters/KpiNumber.config-D6XqjZrm.js +0 -2
  222. package/dist/adapters/KpiText.config-ChphMwG5.js +0 -2
  223. package/dist/adapters/KpiText.config-fO1wc6FH.cjs +0 -1
  224. package/dist/adapters/LineChart.config-CXJrgz1s.js +0 -2
  225. package/dist/adapters/LineChart.config-Cg_h-SiJ.cjs +0 -1
  226. package/dist/adapters/MarkdownChart.config-ByPjX-4O.cjs +0 -1
  227. package/dist/adapters/MarkdownChart.config-Df2yY9AT.js +0 -2
  228. package/dist/adapters/MeasureProfileChart.config-BBWGIteF.cjs +0 -1
  229. package/dist/adapters/MeasureProfileChart.config-C9OFbN9Z.js +0 -2
  230. package/dist/adapters/PieChart.config-C6jJj6xm.js +0 -2
  231. package/dist/adapters/PieChart.config-CmCw_8eN.cjs +0 -1
  232. package/dist/adapters/ProportionBarChart.config-B9NEyFEe.js +0 -2
  233. package/dist/adapters/ProportionBarChart.config-C3GAVPWn.cjs +0 -1
  234. package/dist/adapters/RadarChart.config-5AMwEqUJ.cjs +0 -1
  235. package/dist/adapters/RadarChart.config-Ct_b7IM5.js +0 -2
  236. package/dist/adapters/RadialBarChart.config-Bp-Sl0cm.js +0 -2
  237. package/dist/adapters/RadialBarChart.config-D14yoexI.cjs +0 -1
  238. package/dist/adapters/RecordsTable.config-D2-qmG06.cjs +0 -1
  239. package/dist/adapters/RecordsTable.config-DIwoqZCU.js +0 -2
  240. package/dist/adapters/RetentionCombinedChart.config-BWHipi5M.cjs +0 -1
  241. package/dist/adapters/RetentionCombinedChart.config-D40UgTcl.js +0 -2
  242. package/dist/adapters/RetentionHeatmap.config-GlnSLrjn.js +0 -2
  243. package/dist/adapters/RetentionHeatmap.config-MlhZf26c.cjs +0 -1
  244. package/dist/adapters/SankeyChart.config-Bf1_NHiv.js +0 -2
  245. package/dist/adapters/SankeyChart.config-BoYf6BFE.cjs +0 -1
  246. package/dist/adapters/ScatterChart.config-CV2rdGJp.js +0 -2
  247. package/dist/adapters/ScatterChart.config-DywduGF3.cjs +0 -1
  248. package/dist/adapters/SunburstChart.config-CrqiE1UZ.js +0 -2
  249. package/dist/adapters/SunburstChart.config-D5tbF_GJ.cjs +0 -1
  250. package/dist/adapters/TreeMapChart.config-BJ8HnZU0.cjs +0 -1
  251. package/dist/adapters/TreeMapChart.config-DxgIqIIj.js +0 -2
  252. package/dist/adapters/WaterfallChart.config-Cns8fLFu.js +0 -2
  253. package/dist/adapters/WaterfallChart.config-D_kdL9SN.cjs +0 -1
  254. package/dist/adapters/mcp-transport-BpG44Fvn.js +0 -730
  255. package/dist/adapters/mcp-transport-CDxZXpc-.cjs +0 -42
  256. package/dist/adapters/utils-BiKIg2tk.cjs +0 -128
  257. package/dist/client/chunks/DashboardEditModal-_ZDMwaGX.js.map +0 -1
  258. package/dist/client/chunks/chart-activity-grid-DO82rrbW.js.map +0 -1
  259. package/dist/client/chunks/chart-data-table-C_oHiK6N.js.map +0 -1
  260. package/dist/client/chunks/chart-markdown-CRY15yp0.js.map +0 -1
  261. package/dist/client/chunks/charts-loader-Bya_zDIA.js +0 -86
  262. package/dist/client/chunks/charts-loader-Bya_zDIA.js.map +0 -1
  263. package/dist/client/chunks/nl-NL-CEdoCz6Q.js.map +0 -1
@@ -2397,6 +2397,9 @@ var pn = {
2397
2397
  "chart.boxPlot.label": "Box Plot",
2398
2398
  "chart.boxPlot.description": "Show statistical distribution (median, IQR, whiskers) across categories",
2399
2399
  "chart.boxPlot.useCase": "Best for P&L spread per symbol, trade size distribution, latency distribution across platforms",
2400
+ "chart.dotStrip.label": "Dot Strip Plot",
2401
+ "chart.dotStrip.description": "Show every individual value as a dot, grouped into category bands",
2402
+ "chart.dotStrip.useCase": "Best for comparing individuals within a group — spread of output per team, salary per band, latency per endpoint",
2400
2403
  "chart.waterfall.label": "Waterfall Chart",
2401
2404
  "chart.waterfall.description": "Show cumulative effect of sequential positive and negative values",
2402
2405
  "chart.waterfall.useCase": "Best for P&L decomposition, cash flow analysis, budget variance, or any sequential contribution breakdown",
@@ -2509,6 +2512,15 @@ var pn = {
2509
2512
  "chart.heatmap.dropZone.valueField.empty": "Drop one measure here",
2510
2513
  "chart.boxPlot.dropZone.xAxis.empty": "Drop a dimension here",
2511
2514
  "chart.boxPlot.dropZone.yAxis.empty": "Drop 1, 3, or 5 measures here",
2515
+ "chart.dotStrip.dropZone.xAxis.label": "Bands (rows)",
2516
+ "chart.dotStrip.dropZone.xAxis.description": "Dimension that groups dots into rows, e.g. team, band, region",
2517
+ "chart.dotStrip.dropZone.xAxis.empty": "Drop a dimension to band by",
2518
+ "chart.dotStrip.dropZone.yAxis.label": "Value (horizontal position)",
2519
+ "chart.dotStrip.dropZone.yAxis.description": "Measure that positions each dot along the horizontal axis",
2520
+ "chart.dotStrip.dropZone.yAxis.empty": "Drop a measure here",
2521
+ "chart.dotStrip.dropZone.series.label": "Dot identity",
2522
+ "chart.dotStrip.dropZone.series.description": "Dimension that gives each dot its own row — one dot per value, named in the tooltip",
2523
+ "chart.dotStrip.dropZone.series.empty": "Drop a dimension to split into individual dots",
2512
2524
  "chart.waterfall.dropZone.xAxis.empty": "Drop a dimension here",
2513
2525
  "chart.waterfall.dropZone.yAxis.empty": "Drop a measure here",
2514
2526
  "chart.candlestick.dropZone.xAxis.empty": "Drop a time or dimension here",
@@ -2609,6 +2621,23 @@ var pn = {
2609
2621
  "chart.option.showDataLabels.description": "Display the value at each data point",
2610
2622
  "chart.option.showReferenceLineAtZero.label": "Show Zero Reference Line",
2611
2623
  "chart.option.showReferenceLineAtZero.description": "Draw a dashed line at Y = 0",
2624
+ "chart.option.showMedianMarker.label": "Show Median Marker",
2625
+ "chart.option.showMedianMarker.description": "Draw a tick at each band's median value",
2626
+ "chart.option.showBandStats.label": "Show Band Statistics",
2627
+ "chart.option.showBandStats.description": "Show the dot count and spread beside each band name",
2628
+ "chart.option.showExtremeLabels.label": "Label Extremes",
2629
+ "chart.option.showExtremeLabels.description": "Name the lowest and highest dot in each band",
2630
+ "chart.option.dotSize.label": "Dot Size",
2631
+ "chart.option.dotSize.description": "Larger dots are easier to see but spread the swarm further",
2632
+ "chart.option.dotSize.small": "Small",
2633
+ "chart.option.dotSize.medium": "Medium",
2634
+ "chart.option.dotSize.large": "Large",
2635
+ "chart.option.bandSort.label": "Band Order",
2636
+ "chart.option.bandSort.description": "How to order the bands from top to bottom",
2637
+ "chart.option.bandSort.none": "Query order",
2638
+ "chart.option.bandSort.valueDesc": "Highest median first",
2639
+ "chart.option.bandSort.valueAsc": "Lowest median first",
2640
+ "chart.option.bandSort.count": "Most dots first",
2612
2641
  "chart.option.lineType.label": "Line Interpolation",
2613
2642
  "chart.option.lineType.smooth": "Smooth (monotone)",
2614
2643
  "chart.option.lineType.linear": "Linear",
@@ -3099,6 +3128,7 @@ var pn = {
3099
3128
  "chart.runtime.noDataHint.treemap": "No data points to display in treemap chart",
3100
3129
  "chart.runtime.noDataHint.bubble": "No data points to display in bubble chart",
3101
3130
  "chart.runtime.noDataHint.boxPlot": "No data points to display in box plot chart",
3131
+ "chart.runtime.noDataHint.dotStrip": "No data points to display in dot strip plot",
3102
3132
  "chart.runtime.noDataHint.waterfall": "No data points to display in waterfall chart",
3103
3133
  "chart.runtime.noDataHint.candlestick": "No data points to display in candlestick chart",
3104
3134
  "chart.runtime.noDataHint.gauge": "No data points to display in gauge chart",
@@ -3121,6 +3151,14 @@ var pn = {
3121
3151
  "chart.runtime.noValidDataHint.pie": "No data points to display in pie chart",
3122
3152
  "chart.runtime.noValidDataHint.pieFiltered": "Filtered out {count} data points (zero or invalid values)",
3123
3153
  "chart.runtime.noValidDataHint.boxPlot": "Could not compute box plot statistics from the provided data",
3154
+ "chart.runtime.noValidDataHint.dotStrip": "No valid numeric values for the dot strip plot",
3155
+ "chart.runtime.configErrorHint.dotStrip": "Dot strip plot needs a dimension to band by and one measure",
3156
+ "chart.runtime.dotStrip.unlabelledBand": "(no value)",
3157
+ "chart.runtime.dotStrip.count": "n={count}",
3158
+ "chart.runtime.dotStrip.countTruncated": "n={count}+",
3159
+ "chart.runtime.dotStrip.noDataRecorded": "no data recorded",
3160
+ "chart.runtime.dotStrip.spread": "spread {spread}×",
3161
+ "chart.runtime.dotStrip.truncated": "Showing the first {max} bands",
3124
3162
  "chart.runtime.noValidDataHint.gauge": "Gauge value is not a valid number",
3125
3163
  "chart.runtime.noValidDataHint.kpiText": "All values are null or invalid",
3126
3164
  "chart.runtime.configError": "Configuration Error",
@@ -16139,7 +16177,118 @@ var Kf = /* @__PURE__ */ e({ barChartConfig: () => qf }), qf = {
16139
16177
  type: "axisFormat",
16140
16178
  description: "chart.configText.number_formatting_for_the_value_axis"
16141
16179
  }]
16142
- }, Rp = /* @__PURE__ */ e({ waterfallChartConfig: () => zp }), zp = {
16180
+ }, Rp = /* @__PURE__ */ e({ dotStripChartConfig: () => zp }), zp = {
16181
+ displayOptions: [
16182
+ "showGrid",
16183
+ "showTooltip",
16184
+ "hideHeader"
16185
+ ],
16186
+ dropZones: [
16187
+ {
16188
+ key: "xAxis",
16189
+ label: "chart.dotStrip.dropZone.xAxis.label",
16190
+ description: "chart.dotStrip.dropZone.xAxis.description",
16191
+ mandatory: !0,
16192
+ maxItems: 1,
16193
+ acceptTypes: ["dimension", "timeDimension"],
16194
+ emptyText: "chart.dotStrip.dropZone.xAxis.empty"
16195
+ },
16196
+ {
16197
+ key: "yAxis",
16198
+ label: "chart.dotStrip.dropZone.yAxis.label",
16199
+ description: "chart.dotStrip.dropZone.yAxis.description",
16200
+ mandatory: !0,
16201
+ maxItems: 1,
16202
+ acceptTypes: ["measure"],
16203
+ emptyText: "chart.dotStrip.dropZone.yAxis.empty"
16204
+ },
16205
+ {
16206
+ key: "series",
16207
+ label: "chart.dotStrip.dropZone.series.label",
16208
+ description: "chart.dotStrip.dropZone.series.description",
16209
+ mandatory: !1,
16210
+ maxItems: 1,
16211
+ acceptTypes: ["dimension"],
16212
+ emptyText: "chart.dotStrip.dropZone.series.empty"
16213
+ }
16214
+ ],
16215
+ clickableElements: { point: !0 },
16216
+ displayOptionsConfig: [
16217
+ {
16218
+ key: "showMedianMarker",
16219
+ label: "chart.option.showMedianMarker.label",
16220
+ type: "boolean",
16221
+ defaultValue: !0,
16222
+ description: "chart.option.showMedianMarker.description"
16223
+ },
16224
+ {
16225
+ key: "showBandStats",
16226
+ label: "chart.option.showBandStats.label",
16227
+ type: "boolean",
16228
+ defaultValue: !0,
16229
+ description: "chart.option.showBandStats.description"
16230
+ },
16231
+ {
16232
+ key: "showExtremeLabels",
16233
+ label: "chart.option.showExtremeLabels.label",
16234
+ type: "boolean",
16235
+ defaultValue: !1,
16236
+ description: "chart.option.showExtremeLabels.description"
16237
+ },
16238
+ {
16239
+ key: "dotSize",
16240
+ label: "chart.option.dotSize.label",
16241
+ type: "select",
16242
+ defaultValue: "medium",
16243
+ options: [
16244
+ {
16245
+ value: "small",
16246
+ label: "chart.option.dotSize.small"
16247
+ },
16248
+ {
16249
+ value: "medium",
16250
+ label: "chart.option.dotSize.medium"
16251
+ },
16252
+ {
16253
+ value: "large",
16254
+ label: "chart.option.dotSize.large"
16255
+ }
16256
+ ],
16257
+ description: "chart.option.dotSize.description"
16258
+ },
16259
+ {
16260
+ key: "bandSort",
16261
+ label: "chart.option.bandSort.label",
16262
+ type: "select",
16263
+ defaultValue: "none",
16264
+ options: [
16265
+ {
16266
+ value: "none",
16267
+ label: "chart.option.bandSort.none"
16268
+ },
16269
+ {
16270
+ value: "valueDesc",
16271
+ label: "chart.option.bandSort.valueDesc"
16272
+ },
16273
+ {
16274
+ value: "valueAsc",
16275
+ label: "chart.option.bandSort.valueAsc"
16276
+ },
16277
+ {
16278
+ value: "count",
16279
+ label: "chart.option.bandSort.count"
16280
+ }
16281
+ ],
16282
+ description: "chart.option.bandSort.description"
16283
+ },
16284
+ {
16285
+ key: "xAxisFormat",
16286
+ label: "chart.option.xAxisFormat.label",
16287
+ type: "axisFormat",
16288
+ description: "chart.option.xAxisFormat.description"
16289
+ }
16290
+ ]
16291
+ }, Bp = /* @__PURE__ */ e({ waterfallChartConfig: () => Vp }), Vp = {
16143
16292
  clickableElements: { bar: !0 },
16144
16293
  displayOptions: ["showTooltip", "hideHeader"],
16145
16294
  dropZones: [{
@@ -16188,7 +16337,7 @@ var Kf = /* @__PURE__ */ e({ barChartConfig: () => qf }), qf = {
16188
16337
  description: "chart.configText.number_formatting_for_the_y_axis"
16189
16338
  }
16190
16339
  ]
16191
- }, Bp = /* @__PURE__ */ e({ candlestickChartConfig: () => Vp }), Vp = {
16340
+ }, Hp = /* @__PURE__ */ e({ candlestickChartConfig: () => Up }), Up = {
16192
16341
  clickableElements: { bar: !0 },
16193
16342
  displayOptions: ["hideHeader"],
16194
16343
  dropZones: [{
@@ -16250,7 +16399,7 @@ var Kf = /* @__PURE__ */ e({ barChartConfig: () => qf }), qf = {
16250
16399
  description: "chart.configText.number_formatting_for_the_price_axis"
16251
16400
  }
16252
16401
  ]
16253
- }, Hp = /* @__PURE__ */ e({ measureProfileChartConfig: () => Up }), Up = {
16402
+ }, Wp = /* @__PURE__ */ e({ measureProfileChartConfig: () => Gp }), Gp = {
16254
16403
  displayOptions: [
16255
16404
  "showLegend",
16256
16405
  "showTooltip",
@@ -16322,7 +16471,7 @@ var Kf = /* @__PURE__ */ e({ barChartConfig: () => qf }), qf = {
16322
16471
  description: "chart.configText.number_formatting_for_the_y_axis"
16323
16472
  }
16324
16473
  ]
16325
- }, Wp = /* @__PURE__ */ e({ proportionBarChartConfig: () => Gp }), Gp = {
16474
+ }, Kp = /* @__PURE__ */ e({ proportionBarChartConfig: () => qp }), qp = {
16326
16475
  dropZones: [{
16327
16476
  key: "xAxis",
16328
16477
  label: "chart.configText.category",
@@ -16380,7 +16529,7 @@ var Kf = /* @__PURE__ */ e({ barChartConfig: () => qf }), qf = {
16380
16529
  isValid: !1,
16381
16530
  message: "chart.proportionBar.validation.measureRequired"
16382
16531
  } : { isValid: !0 }
16383
- }, Kp = /* @__PURE__ */ e({ gaugeChartConfig: () => qp }), qp = {
16532
+ }, Jp = /* @__PURE__ */ e({ gaugeChartConfig: () => Yp }), Yp = {
16384
16533
  clickableElements: {},
16385
16534
  displayOptions: ["hideHeader"],
16386
16535
  dropZones: [{
@@ -16436,7 +16585,7 @@ var Kf = /* @__PURE__ */ e({ barChartConfig: () => qf }), qf = {
16436
16585
  }, Z = {
16437
16586
  packageName: "recharts",
16438
16587
  installCommand: "npm install recharts"
16439
- }, Jp = {
16588
+ }, Xp = {
16440
16589
  bar: {
16441
16590
  label: "chart.bar.label",
16442
16591
  icon: "chartBar",
@@ -16653,6 +16802,14 @@ var Kf = /* @__PURE__ */ e({ barChartConfig: () => qf }), qf = {
16653
16802
  isAvailable: r,
16654
16803
  config: async () => (await Promise.resolve().then(() => Ip)).boxPlotChartConfig
16655
16804
  },
16805
+ dotStrip: {
16806
+ label: "chart.dotStrip.label",
16807
+ icon: "chartDotStrip",
16808
+ description: "chart.dotStrip.description",
16809
+ useCase: "chart.dotStrip.useCase",
16810
+ isAvailable: r,
16811
+ config: async () => (await Promise.resolve().then(() => Rp)).dotStripChartConfig
16812
+ },
16656
16813
  waterfall: {
16657
16814
  label: "chart.waterfall.label",
16658
16815
  icon: "chartWaterfall",
@@ -16660,7 +16817,7 @@ var Kf = /* @__PURE__ */ e({ barChartConfig: () => qf }), qf = {
16660
16817
  useCase: "chart.waterfall.useCase",
16661
16818
  isAvailable: r,
16662
16819
  dependencies: Z,
16663
- config: async () => (await Promise.resolve().then(() => Rp)).waterfallChartConfig
16820
+ config: async () => (await Promise.resolve().then(() => Bp)).waterfallChartConfig
16664
16821
  },
16665
16822
  candlestick: {
16666
16823
  label: "chart.candlestick.label",
@@ -16674,7 +16831,7 @@ var Kf = /* @__PURE__ */ e({ barChartConfig: () => qf }), qf = {
16674
16831
  available: !1,
16675
16832
  reason: "chart.availability.requiresDimension"
16676
16833
  } : { available: !0 },
16677
- config: async () => (await Promise.resolve().then(() => Bp)).candlestickChartConfig
16834
+ config: async () => (await Promise.resolve().then(() => Hp)).candlestickChartConfig
16678
16835
  },
16679
16836
  measureProfile: {
16680
16837
  label: "chart.measureProfile.label",
@@ -16686,7 +16843,7 @@ var Kf = /* @__PURE__ */ e({ barChartConfig: () => qf }), qf = {
16686
16843
  reason: "chart.availability.requiresTwoMeasures"
16687
16844
  } : { available: !0 },
16688
16845
  dependencies: Z,
16689
- config: async () => (await Promise.resolve().then(() => Hp)).measureProfileChartConfig
16846
+ config: async () => (await Promise.resolve().then(() => Wp)).measureProfileChartConfig
16690
16847
  },
16691
16848
  proportionBar: {
16692
16849
  label: "chart.proportionBar.label",
@@ -16694,7 +16851,7 @@ var Kf = /* @__PURE__ */ e({ barChartConfig: () => qf }), qf = {
16694
16851
  description: "chart.proportionBar.description",
16695
16852
  useCase: "chart.proportionBar.useCase",
16696
16853
  isAvailable: r,
16697
- config: async () => (await Promise.resolve().then(() => Wp)).proportionBarChartConfig
16854
+ config: async () => (await Promise.resolve().then(() => Kp)).proportionBarChartConfig
16698
16855
  },
16699
16856
  gauge: {
16700
16857
  label: "chart.gauge.label",
@@ -16706,10 +16863,10 @@ var Kf = /* @__PURE__ */ e({ barChartConfig: () => qf }), qf = {
16706
16863
  packageName: "d3-shape",
16707
16864
  installCommand: "npm install d3-shape"
16708
16865
  },
16709
- config: async () => (await Promise.resolve().then(() => Kp)).gaugeChartConfig
16866
+ config: async () => (await Promise.resolve().then(() => Jp)).gaugeChartConfig
16710
16867
  }
16711
16868
  };
16712
- function Yp(e, t) {
16869
+ function Zp(e, t) {
16713
16870
  return {
16714
16871
  ...t,
16715
16872
  label: e.label,
@@ -16720,7 +16877,7 @@ function Yp(e, t) {
16720
16877
  }
16721
16878
  //#endregion
16722
16879
  //#region src/client/charts/chartConfigRegistry.ts
16723
- var Xp = {
16880
+ var Qp = {
16724
16881
  bar: qf,
16725
16882
  line: Yf,
16726
16883
  area: Zf,
@@ -16744,23 +16901,24 @@ var Xp = {
16744
16901
  retentionHeatmap: Np,
16745
16902
  retentionCombined: Fp,
16746
16903
  boxPlot: Lp,
16747
- waterfall: zp,
16748
- candlestick: Vp,
16749
- measureProfile: Up,
16750
- proportionBar: Gp,
16751
- gauge: qp
16752
- }, Zp = Object.fromEntries(Object.keys(Jp).map((e) => [e, Yp(Jp[e], Xp[e])]));
16753
- function Qp(e) {
16754
- return Zp[e]?.recordGrain === !0;
16904
+ dotStrip: zp,
16905
+ waterfall: Vp,
16906
+ candlestick: Up,
16907
+ measureProfile: Gp,
16908
+ proportionBar: qp,
16909
+ gauge: Yp
16910
+ }, $p = Object.fromEntries(Object.keys(Xp).map((e) => [e, Zp(Xp[e], Qp[e])]));
16911
+ function em(e) {
16912
+ return $p[e]?.recordGrain === !0;
16755
16913
  }
16756
16914
  //#endregion
16757
16915
  //#region src/server/agent/chart-validation.ts
16758
- function $p(e) {
16916
+ function tm(e) {
16759
16917
  return Array.isArray(e) ? e.length > 0 : !!e;
16760
16918
  }
16761
- function em(e, t, n, r) {
16919
+ function nm(e, t, n, r) {
16762
16920
  for (let i of e.dropZones) {
16763
- if (!i.mandatory || $p(n?.[i.key])) continue;
16921
+ if (!i.mandatory || tm(n?.[i.key])) continue;
16764
16922
  let e = i.acceptTypes?.join("/") ?? "fields";
16765
16923
  r.push(A("server.validation.chart.dropZoneRequired", {
16766
16924
  key: i.key,
@@ -16770,35 +16928,35 @@ function em(e, t, n, r) {
16770
16928
  }));
16771
16929
  }
16772
16930
  }
16773
- function tm(e, t, n) {
16774
- if ($p(e?.xAxis)) return;
16931
+ function rm(e, t, n) {
16932
+ if (tm(e?.xAxis)) return;
16775
16933
  let r = t.dimensions ?? [], i = t.timeDimensions ?? [], a = r.length > 0 || i.length > 0;
16776
16934
  n.push(A(a ? "server.validation.chart.barXAxisRequired" : "server.validation.chart.barNeedsDimension"));
16777
16935
  }
16778
- function nm(e) {
16936
+ function im(e) {
16779
16937
  return Array.isArray(e) ? e : [e];
16780
16938
  }
16781
- function rm(e, t) {
16939
+ function am(e, t) {
16782
16940
  if (!e?.xAxis || !e?.series) return;
16783
- let n = new Set(nm(e.xAxis)), r = nm(e.series).filter((e) => n.has(e));
16941
+ let n = new Set(im(e.xAxis)), r = im(e.series).filter((e) => n.has(e));
16784
16942
  r.length > 0 && t.push(A("server.validation.chart.seriesDuplicatesXAxis", { duplicates: r.join(", ") }));
16785
16943
  }
16786
- function im(e, t, n) {
16787
- Qp(e) && t.ungrouped !== !0 && n.push(A("server.validation.chart.recordGrainNeedsUngrouped", { chartType: e }));
16944
+ function om(e, t, n) {
16945
+ em(e) && t.ungrouped !== !0 && n.push(A("server.validation.chart.recordGrainNeedsUngrouped", { chartType: e }));
16788
16946
  }
16789
- function am(e, t, n) {
16790
- let r = Zp[e];
16947
+ function sm(e, t, n) {
16948
+ let r = $p[e];
16791
16949
  if (!r || r.skipQuery) return {
16792
16950
  isValid: !0,
16793
16951
  errors: []
16794
16952
  };
16795
16953
  let i = [];
16796
- return em(r, e, t, i), im(e, n, i), e === "bar" && tm(t, n, i), rm(t, i), {
16954
+ return nm(r, e, t, i), om(e, n, i), e === "bar" && rm(t, n, i), am(t, i), {
16797
16955
  isValid: i.length === 0,
16798
16956
  errors: i
16799
16957
  };
16800
16958
  }
16801
- function om(e, t, n, r) {
16959
+ function cm(e, t, n, r) {
16802
16960
  if (!(e.acceptTypes ?? []).includes("measure")) return;
16803
16961
  let i = /* @__PURE__ */ new Set();
16804
16962
  for (let r of t.dropZones) {
@@ -16809,7 +16967,7 @@ function om(e, t, n, r) {
16809
16967
  let a = r.filter((e) => !i.has(e));
16810
16968
  a.length > 0 && (n[e.key] = a[0]);
16811
16969
  }
16812
- function sm(e, t, n) {
16970
+ function lm(e, t, n) {
16813
16971
  let r = e.acceptTypes ?? [], i = [];
16814
16972
  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;
16815
16973
  let a = i;
@@ -16820,26 +16978,26 @@ function sm(e, t, n) {
16820
16978
  let o = e.maxItems ?? Infinity, s = a.slice(0, o);
16821
16979
  s.length > 0 && (t[e.key] = s);
16822
16980
  }
16823
- function cm(e, t, n) {
16824
- let r = Zp[e];
16981
+ function um(e, t, n) {
16982
+ let r = $p[e];
16825
16983
  if (!r) return t ?? {};
16826
16984
  let i = { ...t }, a = n.timeDimensions ?? [], o = {
16827
16985
  measures: n.measures ?? [],
16828
16986
  dimensions: n.dimensions ?? [],
16829
16987
  timeDimFields: a.map((e) => e.dimension)
16830
16988
  };
16831
- for (let e of r.dropZones) e.excludeFromInference || $p(i[e.key]) || (e.key === "sizeField" || e.key === "colorField" ? om(e, r, i, o.measures) : sm(e, i, o));
16989
+ for (let e of r.dropZones) e.excludeFromInference || tm(i[e.key]) || (e.key === "sizeField" || e.key === "colorField" ? cm(e, r, i, o.measures) : lm(e, i, o));
16832
16990
  return i;
16833
16991
  }
16834
- function lm(e) {
16992
+ function dm(e) {
16835
16993
  return e ? hn(e) ? A(e) : e : "";
16836
16994
  }
16837
- function um(e) {
16995
+ function fm(e) {
16838
16996
  let t = ["\nChart config requirements by type:"];
16839
16997
  for (let n of e) {
16840
- let e = Zp[n];
16998
+ let e = $p[n];
16841
16999
  if (!e) continue;
16842
- let r = [lm(e.description), lm(e.useCase)].filter(Boolean).join(". "), i = r ? ` — ${r}.` : "", a = Qp(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);
17000
+ let r = [dm(e.description), dm(e.useCase)].filter(Boolean).join(". "), i = r ? ` — ${r}.` : "", a = em(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);
16843
17001
  if (o.length === 0 && !e.skipQuery) {
16844
17002
  t.push(` ${n}${i}${a} chartConfig auto-inferred from query.`);
16845
17003
  continue;
@@ -16858,7 +17016,7 @@ function um(e) {
16858
17016
  }
16859
17017
  //#endregion
16860
17018
  //#region src/server/ai/chart-schema.ts
16861
- var dm = {
17019
+ var pm = {
16862
17020
  columns: {
16863
17021
  type: "array",
16864
17022
  items: { type: "string" },
@@ -16869,7 +17027,7 @@ var dm = {
16869
17027
  items: { type: "string" },
16870
17028
  description: "recordsTable only: fields fetched for row context or rowLink tokens but never displayed (e.g. an id used in the URL template). Leave empty unless a field is genuinely only needed behind the scenes — anything listed here disappears from the table."
16871
17029
  }
16872
- }, fm = {
17030
+ }, mm = {
16873
17031
  columnFormats: {
16874
17032
  type: "object",
16875
17033
  description: "recordsTable only: how each column renders, keyed by field name (e.g. \"Employees.salary\"). Formats are never inferred from the data — a column is plain text unless you say otherwise, so set this for any numeric, date, status or ratio column.",
@@ -16964,7 +17122,7 @@ var dm = {
16964
17122
  ],
16965
17123
  description: "recordsTable only: rows per page (default 25)."
16966
17124
  }
16967
- }, pm = [
17125
+ }, hm = [
16968
17126
  "bar",
16969
17127
  "line",
16970
17128
  "area",
@@ -16985,7 +17143,7 @@ var dm = {
16985
17143
  "markdown",
16986
17144
  "recordsTable"
16987
17145
  ];
16988
- function mm() {
17146
+ function gm() {
16989
17147
  return [
16990
17148
  {
16991
17149
  name: "discover_cubes",
@@ -17030,7 +17188,7 @@ function mm() {
17030
17188
  },
17031
17189
  {
17032
17190
  name: "add_portlet",
17033
- description: "Add a chart visualization to the notebook.\n" + um(pm) + "\nThe query is validated before adding. The portlet fetches its own data.",
17191
+ description: "Add a chart visualization to the notebook.\n" + fm(hm) + "\nThe query is validated before adding. The portlet fetches its own data.",
17034
17192
  parameters: {
17035
17193
  type: "object",
17036
17194
  properties: {
@@ -17044,7 +17202,7 @@ function mm() {
17044
17202
  },
17045
17203
  chartType: {
17046
17204
  type: "string",
17047
- enum: pm,
17205
+ enum: hm,
17048
17206
  description: "Chart type to render"
17049
17207
  },
17050
17208
  chartConfig: {
@@ -17068,7 +17226,7 @@ function mm() {
17068
17226
  type: "object",
17069
17227
  description: "Dual Y-axis: map measure fields to \"left\" or \"right\" axis. Only for bar, line, area charts with 2+ measures of different scales. Example: {\"Sales.revenue\": \"left\", \"Sales.conversionRate\": \"right\"}"
17070
17228
  },
17071
- ...dm
17229
+ ...pm
17072
17230
  },
17073
17231
  description: "Chart axis configuration"
17074
17232
  },
@@ -17083,7 +17241,7 @@ function mm() {
17083
17241
  type: "string",
17084
17242
  enum: ["horizontal", "vertical"]
17085
17243
  },
17086
- ...fm
17244
+ ...mm
17087
17245
  },
17088
17246
  description: "Chart display configuration"
17089
17247
  }
@@ -17142,7 +17300,7 @@ function mm() {
17142
17300
  },
17143
17301
  chartType: {
17144
17302
  type: "string",
17145
- enum: pm,
17303
+ enum: hm,
17146
17304
  description: "Chart type. Use \"markdown\" for section headers."
17147
17305
  },
17148
17306
  query: {
@@ -17166,14 +17324,14 @@ function mm() {
17166
17324
  },
17167
17325
  sizeField: { type: "string" },
17168
17326
  colorField: { type: "string" },
17169
- ...dm
17327
+ ...pm
17170
17328
  },
17171
17329
  description: "Chart axis configuration"
17172
17330
  },
17173
17331
  displayConfig: {
17174
17332
  type: "object",
17175
17333
  description: "Chart display configuration (for markdown: { content, hideHeader, transparentBackground, autoHeight })",
17176
- properties: fm
17334
+ properties: mm
17177
17335
  },
17178
17336
  dashboardFilterMapping: {
17179
17337
  type: "array",
@@ -17281,7 +17439,7 @@ function mm() {
17281
17439
  }
17282
17440
  ];
17283
17441
  }
17284
- function hm(e) {
17442
+ function _m(e) {
17285
17443
  let { semanticLayer: t, securityContext: n } = e, r = /* @__PURE__ */ new Map();
17286
17444
  r.set("discover_cubes", async (e) => {
17287
17445
  let r = { cubes: (await Rf(t, n, {
@@ -17387,7 +17545,7 @@ function hm(e) {
17387
17545
  let o = !!(i.funnel || i.flow || i.retention), s;
17388
17546
  if (o) s = e.chartConfig ?? {};
17389
17547
  else {
17390
- let t = cm(r, e.chartConfig, i), n = am(r, t, i);
17548
+ let t = um(r, e.chartConfig, i), n = sm(r, t, i);
17391
17549
  if (!n.isValid) return {
17392
17550
  result: `Chart config invalid — fix these errors and retry:\n${n.errors.join("\n")}`,
17393
17551
  isError: !0
@@ -17451,7 +17609,7 @@ function hm(e) {
17451
17609
  i.push(`Portlet "${e.title}": ${c.errors.join(", ")}`);
17452
17610
  continue;
17453
17611
  }
17454
- let l = cm(r, e.chartConfig, s), u = am(r, l, s);
17612
+ let l = um(r, e.chartConfig, s), u = sm(r, l, s);
17455
17613
  if (!u.isValid) {
17456
17614
  i.push(`Portlet "${e.title}": ${u.errors.join(", ")}`);
17457
17615
  continue;
@@ -17516,7 +17674,7 @@ function hm(e) {
17516
17674
  }
17517
17675
  //#endregion
17518
17676
  //#region src/server/agent/providers/factory.ts
17519
- async function gm(e, t, n) {
17677
+ async function vm(e, t, n) {
17520
17678
  switch (e) {
17521
17679
  case "anthropic": {
17522
17680
  let { AnthropicProvider: e } = await import("./anthropic-CZh4hB-m.js");
@@ -17535,16 +17693,16 @@ async function gm(e, t, n) {
17535
17693
  }
17536
17694
  //#endregion
17537
17695
  //#region src/server/agent/handler-steps.ts
17538
- function _m(e, t) {
17696
+ function ym(e, t) {
17539
17697
  if (Array.isArray(t)) for (let n of t) e.push(n);
17540
17698
  else e.push(t);
17541
17699
  }
17542
- function vm(e) {
17700
+ function bm(e) {
17543
17701
  if (e) try {
17544
17702
  e();
17545
17703
  } catch {}
17546
17704
  }
17547
- function ym(e, t) {
17705
+ function xm(e, t) {
17548
17706
  let n = [];
17549
17707
  if (!e || e.length === 0) return n;
17550
17708
  for (let r of e) {
@@ -17577,7 +17735,7 @@ function ym(e, t) {
17577
17735
  content: typeof e.result == "string" ? e.result : JSON.stringify(e.result ?? ""),
17578
17736
  isError: e.status === "error"
17579
17737
  }));
17580
- _m(n, t.formatToolResults(i));
17738
+ ym(n, t.formatToolResults(i));
17581
17739
  } else e.length > 0 && n.push({
17582
17740
  role: "assistant",
17583
17741
  content: r.content
@@ -17585,21 +17743,21 @@ function ym(e, t) {
17585
17743
  }
17586
17744
  return n;
17587
17745
  }
17588
- function bm(e, t) {
17746
+ function Sm(e, t) {
17589
17747
  if (!(e?.type !== "tool_use" || !t)) try {
17590
17748
  e.input = JSON.parse(t);
17591
17749
  } catch {
17592
17750
  e.input = {};
17593
17751
  }
17594
17752
  }
17595
- function xm(e, t) {
17753
+ function Cm(e, t) {
17596
17754
  let n = e.contentBlocks[e.contentBlocks.length - 1];
17597
17755
  n && n.type === "text" ? n.text = (n.text || "") + t : e.contentBlocks.push({
17598
17756
  type: "text",
17599
17757
  text: t
17600
17758
  });
17601
17759
  }
17602
- function Sm(e, t) {
17760
+ function wm(e, t) {
17603
17761
  if (e.currentBlockIsToolUse && e.currentToolInputJson) {
17604
17762
  let t = e.contentBlocks[e.contentBlocks.length - 1];
17605
17763
  if (t?.type === "tool_use") try {
@@ -17614,16 +17772,16 @@ function Sm(e, t) {
17614
17772
  ...t.metadata ? { metadata: t.metadata } : {}
17615
17773
  }), e.currentToolInputJson = "", e.currentBlockIsToolUse = !0;
17616
17774
  }
17617
- function Cm(e, t) {
17775
+ function Tm(e, t) {
17618
17776
  if (t.id && t.input) {
17619
17777
  let n = e.contentBlocks.find((e) => e.type === "tool_use" && e.id === t.id);
17620
17778
  n && (n.input = t.input);
17621
17779
  } else if (e.currentBlockIsToolUse) {
17622
17780
  let t = e.contentBlocks[e.contentBlocks.length - 1];
17623
- t?.type === "tool_use" && e.currentToolInputJson && (bm(t, e.currentToolInputJson), e.currentToolInputJson = ""), e.currentBlockIsToolUse = !1;
17781
+ t?.type === "tool_use" && e.currentToolInputJson && (Sm(t, e.currentToolInputJson), e.currentToolInputJson = ""), e.currentBlockIsToolUse = !1;
17624
17782
  }
17625
17783
  }
17626
- async function* wm(e, t) {
17784
+ async function* Em(e, t) {
17627
17785
  let n = {
17628
17786
  contentBlocks: [],
17629
17787
  currentToolInputJson: "",
@@ -17634,13 +17792,13 @@ async function* wm(e, t) {
17634
17792
  let e = r;
17635
17793
  switch (e.type) {
17636
17794
  case "text_delta":
17637
- xm(n, e.text), yield {
17795
+ Cm(n, e.text), yield {
17638
17796
  type: "text_delta",
17639
17797
  data: e.text
17640
17798
  };
17641
17799
  break;
17642
17800
  case "tool_use_start":
17643
- Sm(n, e), yield {
17801
+ wm(n, e), yield {
17644
17802
  type: "tool_use_start",
17645
17803
  data: {
17646
17804
  id: e.id,
@@ -17653,7 +17811,7 @@ async function* wm(e, t) {
17653
17811
  n.currentToolInputJson += e.json;
17654
17812
  break;
17655
17813
  case "tool_use_end":
17656
- Cm(n, e);
17814
+ Tm(n, e);
17657
17815
  break;
17658
17816
  case "message_meta": e.inputTokens != null && (n.inputTokens = e.inputTokens), e.outputTokens != null && (n.outputTokens = e.outputTokens), e.stopReason && (n.stopReason = e.stopReason);
17659
17817
  }
@@ -17665,7 +17823,7 @@ async function* wm(e, t) {
17665
17823
  outputTokens: n.outputTokens
17666
17824
  };
17667
17825
  }
17668
- async function* Tm(e, t) {
17826
+ async function* Dm(e, t) {
17669
17827
  let { executor: n, observability: r, traceId: i, turn: a } = t, o = e.name, s = e.input || {}, c = e.id, l = n.get(o);
17670
17828
  if (!l) return yield {
17671
17829
  type: "tool_use_result",
@@ -17692,7 +17850,7 @@ async function* Tm(e, t) {
17692
17850
  result: e.result,
17693
17851
  ...e.isError ? { isError: !0 } : {}
17694
17852
  }
17695
- }, vm(() => r?.onToolEnd?.({
17853
+ }, bm(() => r?.onToolEnd?.({
17696
17854
  traceId: i,
17697
17855
  turn: a,
17698
17856
  toolName: o,
@@ -17715,7 +17873,7 @@ async function* Tm(e, t) {
17715
17873
  result: t,
17716
17874
  isError: !0
17717
17875
  }
17718
- }, vm(() => r?.onToolEnd?.({
17876
+ }, bm(() => r?.onToolEnd?.({
17719
17877
  traceId: i,
17720
17878
  turn: a,
17721
17879
  toolName: o,
@@ -17730,26 +17888,26 @@ async function* Tm(e, t) {
17730
17888
  };
17731
17889
  }
17732
17890
  }
17733
- async function* Em(e, t) {
17891
+ async function* Om(e, t) {
17734
17892
  let n = [];
17735
17893
  for (let r of e) {
17736
17894
  if (r.type !== "tool_use") continue;
17737
- let e = yield* Tm(r, t);
17895
+ let e = yield* Dm(r, t);
17738
17896
  n.push(e);
17739
17897
  }
17740
17898
  return n;
17741
17899
  }
17742
17900
  //#endregion
17743
17901
  //#region src/server/agent/handler.ts
17744
- var Dm = {
17902
+ var km = {
17745
17903
  anthropic: "claude-sonnet-4-6",
17746
17904
  openai: "gpt-4.1-mini",
17747
17905
  google: "gemini-3-flash-preview"
17748
17906
  };
17749
- async function* Om(e) {
17750
- let { message: t, history: n, semanticLayer: r, securityContext: i, agentConfig: a, apiKey: o } = e, s = e.sessionId || crypto.randomUUID(), c = a.observability, l = crypto.randomUUID(), u = Date.now(), d = e.providerOverride || a.provider || "anthropic", f = e.modelOverride || a.model || Dm[d] || "claude-sonnet-4-6", p = e.baseURLOverride || a.baseURL, m = a.maxTurns || 25, h = a.maxTokens || 4096, g;
17907
+ async function* Am(e) {
17908
+ let { message: t, history: n, semanticLayer: r, securityContext: i, agentConfig: a, apiKey: o } = e, s = e.sessionId || crypto.randomUUID(), c = a.observability, l = crypto.randomUUID(), u = Date.now(), d = e.providerOverride || a.provider || "anthropic", f = e.modelOverride || a.model || km[d] || "claude-sonnet-4-6", p = e.baseURLOverride || a.baseURL, m = a.maxTurns || 25, h = a.maxTokens || 4096, g;
17751
17909
  try {
17752
- g = await gm(d, o, { baseURL: p });
17910
+ g = await vm(d, o, { baseURL: p });
17753
17911
  } catch (e) {
17754
17912
  console.error("[agent] Failed to create %s provider: %s", String(d).replace(/\n|\r/g, ""), String(e instanceof Error ? e.message : e).replace(/\n|\r/g, "")), yield {
17755
17913
  type: "error",
@@ -17757,18 +17915,18 @@ async function* Om(e) {
17757
17915
  };
17758
17916
  return;
17759
17917
  }
17760
- let _ = mm(), v = hm({
17918
+ let _ = gm(), v = _m({
17761
17919
  semanticLayer: r,
17762
17920
  securityContext: i
17763
17921
  }), y = _f(r.getMetadata(i));
17764
- e.systemContext && (y += `\n\n## User Context\n\n${e.systemContext}`), vm(() => c?.onChatStart?.({
17922
+ e.systemContext && (y += `\n\n## User Context\n\n${e.systemContext}`), bm(() => c?.onChatStart?.({
17765
17923
  traceId: l,
17766
17924
  sessionId: s,
17767
17925
  message: t,
17768
17926
  model: f,
17769
17927
  historyLength: n?.length ?? 0
17770
17928
  }));
17771
- let b = ym(n, g);
17929
+ let b = xm(n, g);
17772
17930
  b.push({
17773
17931
  role: "user",
17774
17932
  content: t
@@ -17783,8 +17941,8 @@ async function* Om(e) {
17783
17941
  system: y,
17784
17942
  tools: _,
17785
17943
  messages: b
17786
- }), n = Date.now(), { contentBlocks: r, stopReason: i, inputTokens: a, outputTokens: o } = yield* wm(g, t);
17787
- if (vm(() => c?.onGenerationEnd?.({
17944
+ }), n = Date.now(), { contentBlocks: r, stopReason: i, inputTokens: a, outputTokens: o } = yield* Em(g, t);
17945
+ if (bm(() => c?.onGenerationEnd?.({
17788
17946
  traceId: l,
17789
17947
  turn: e,
17790
17948
  model: f,
@@ -17798,7 +17956,7 @@ async function* Om(e) {
17798
17956
  role: "assistant",
17799
17957
  content: r
17800
17958
  }), !g.shouldContinue(i)) break;
17801
- let s = yield* Em(r, {
17959
+ let s = yield* Om(r, {
17802
17960
  executor: v,
17803
17961
  observability: c,
17804
17962
  traceId: l,
@@ -17807,9 +17965,9 @@ async function* Om(e) {
17807
17965
  yield {
17808
17966
  type: "turn_complete",
17809
17967
  data: {}
17810
- }, _m(b, g.formatToolResults(s));
17968
+ }, ym(b, g.formatToolResults(s));
17811
17969
  }
17812
- vm(() => c?.onChatEnd?.({
17970
+ bm(() => c?.onChatEnd?.({
17813
17971
  traceId: l,
17814
17972
  sessionId: s,
17815
17973
  totalTurns: ee,
@@ -17842,7 +18000,7 @@ async function* Om(e) {
17842
18000
  function Q(e) {
17843
18001
  return e.toISOString().split("T")[0];
17844
18002
  }
17845
- function km(e, t) {
18003
+ function jm(e, t) {
17846
18004
  let n = /* @__PURE__ */ new Date(), r = Q(n);
17847
18005
  if (/days?/.test(t)) {
17848
18006
  let t = new Date(n);
@@ -17867,14 +18025,14 @@ function km(e, t) {
17867
18025
  }
17868
18026
  return null;
17869
18027
  }
17870
- function Am(e) {
18028
+ function Mm(e) {
17871
18029
  let t = parseInt(e.slice(1), 10), n = (/* @__PURE__ */ new Date()).getFullYear(), r = (t - 1) * 3, i = new Date(n, r, 1), a = new Date(n, r + 3, 0);
17872
18030
  return {
17873
18031
  dateRange: [Q(i), Q(a)],
17874
18032
  granularity: "month"
17875
18033
  };
17876
18034
  }
17877
- function jm(e, t, n, r) {
18035
+ function Nm(e, t, n, r) {
17878
18036
  let i = 0;
17879
18037
  for (let a of e.measures) {
17880
18038
  let e = [
@@ -17889,7 +18047,7 @@ function jm(e, t, n, r) {
17889
18047
  }
17890
18048
  return i;
17891
18049
  }
17892
- function Mm(e, t, n, r) {
18050
+ function Pm(e, t, n, r) {
17893
18051
  let i = e.measures.filter((e) => e.type === t.type);
17894
18052
  if (i.length > 0) {
17895
18053
  n.push(i[0].name), r.push(`Suggested ${i[0].name} based on ${t.type} intent`);
@@ -17900,7 +18058,7 @@ function Mm(e, t, n, r) {
17900
18058
  t && (n.push(t.name), r.push(`Suggested ${t.name} for counting`));
17901
18059
  }
17902
18060
  }
17903
- function Nm(e, t, n, r, i) {
18061
+ function Fm(e, t, n, r, i) {
17904
18062
  let a = 0;
17905
18063
  for (let n of t) {
17906
18064
  let t = If(e, n, "dimension");
@@ -17921,7 +18079,7 @@ function Nm(e, t, n, r, i) {
17921
18079
  }
17922
18080
  //#endregion
17923
18081
  //#region src/server/ai/suggestion.ts
17924
- function Pm() {
18082
+ function Im() {
17925
18083
  let e = /* @__PURE__ */ new Date(), t = e.toISOString().split("T")[0], n = (e) => e.toISOString().split("T")[0], r = (e) => new Date(e.getFullYear(), e.getMonth(), 1), i = (e) => new Date(e.getFullYear(), 0, 1), a = (e) => {
17926
18084
  let t = Math.floor(e.getMonth() / 3);
17927
18085
  return new Date(e.getFullYear(), t * 3, 1);
@@ -18032,16 +18190,16 @@ function Pm() {
18032
18190
  }
18033
18191
  ];
18034
18192
  }
18035
- var Fm = {
18193
+ var Lm = {
18036
18194
  funnel: /\b(funnel|conversion|drop.?off|steps?|journey|pipeline|stages?)\b/i,
18037
18195
  flow: /\b(flows?|paths?|sequence|before|after|next|previous|user.?journey)\b/i,
18038
18196
  retention: /\b(retention|cohort|return|churn|comeback|retained|day.?\d+)\b/i
18039
18197
  };
18040
- function Im(e) {
18198
+ function Rm(e) {
18041
18199
  let t = e.toLowerCase();
18042
- return Fm.funnel.test(t) ? "funnel" : Fm.flow.test(t) ? "flow" : Fm.retention.test(t) ? "retention" : "query";
18200
+ return Lm.funnel.test(t) ? "funnel" : Lm.flow.test(t) ? "flow" : Lm.retention.test(t) ? "retention" : "query";
18043
18201
  }
18044
- function Lm(e, t) {
18202
+ function zm(e, t) {
18045
18203
  let n = t || "the relevant cube";
18046
18204
  switch (e) {
18047
18205
  case "funnel": return [
@@ -18057,16 +18215,16 @@ function Lm(e, t) {
18057
18215
  case "retention": return [`Use /mcp/discover to get ${n} retention configuration and schema`, "Build retention query specifying granularity (day/week/month) and number of periods"];
18058
18216
  }
18059
18217
  }
18060
- function Rm(e) {
18061
- let t = Pm(), n = e.toLowerCase();
18218
+ function Bm(e) {
18219
+ let t = Im(), n = e.toLowerCase();
18062
18220
  for (let e of t) {
18063
18221
  let t = n.match(e.pattern);
18064
18222
  if (t) {
18065
18223
  if (t[1] && /^\d+$/.test(t[1])) {
18066
- let e = km(parseInt(t[1], 10), n);
18224
+ let e = jm(parseInt(t[1], 10), n);
18067
18225
  if (e) return e;
18068
18226
  }
18069
- return /^q[1-4]$/i.test(t[0]) ? Am(t[0]) : {
18227
+ return /^q[1-4]$/i.test(t[0]) ? Mm(t[0]) : {
18070
18228
  dateRange: e.getDateRange(),
18071
18229
  granularity: e.granularity
18072
18230
  };
@@ -18074,7 +18232,7 @@ function Rm(e) {
18074
18232
  }
18075
18233
  return null;
18076
18234
  }
18077
- function zm(e) {
18235
+ function Vm(e) {
18078
18236
  let t = e.toLowerCase();
18079
18237
  for (let { pattern: e, type: n } of [
18080
18238
  {
@@ -18103,7 +18261,7 @@ function zm(e) {
18103
18261
  };
18104
18262
  return null;
18105
18263
  }
18106
- function Bm(e) {
18264
+ function Hm(e) {
18107
18265
  let t = e.toLowerCase(), n = [], r = /\bby\s+(\w+(?:\s+\w+)?)/gi, i;
18108
18266
  for (; (i = r.exec(t)) !== null;) n.push(i[1].trim());
18109
18267
  let a = /\bper\s+(\w+)/gi;
@@ -18112,7 +18270,7 @@ function Bm(e) {
18112
18270
  for (; (i = o.exec(t)) !== null;) n.push(i[1].trim());
18113
18271
  return n;
18114
18272
  }
18115
- function Vm(e, t, n, r, i) {
18273
+ function Um(e, t, n, r, i) {
18116
18274
  if (n) {
18117
18275
  let t = e.find((e) => e.name === n);
18118
18276
  return t ? (r.push(`Using specified cube: ${n}`), [t]) : (i.push(`Specified cube '${n}' not found`), []);
@@ -18123,7 +18281,7 @@ function Vm(e, t, n, r, i) {
18123
18281
  }).map((t) => e.find((e) => e.name === t.cube)).filter((e) => e !== void 0);
18124
18282
  return a.length > 0 && r.push(`Identified relevant cubes: ${a.map((e) => e.name).join(", ")}`), a;
18125
18283
  }
18126
- function Hm(e, t) {
18284
+ function Wm(e, t) {
18127
18285
  return e === "query" ? {
18128
18286
  query: {},
18129
18287
  confidence: 0,
@@ -18137,19 +18295,19 @@ function Hm(e, t) {
18137
18295
  reasoning: [`Detected ${e} intent from natural language`],
18138
18296
  warnings: t,
18139
18297
  analysisMode: e,
18140
- nextSteps: Lm(e, void 0)
18298
+ nextSteps: zm(e, void 0)
18141
18299
  };
18142
18300
  }
18143
- function Um(e, t, n) {
18144
- let r = [], i = [], a = {}, o = Im(t), s = Vm(e, t, n, r, i);
18145
- if (s.length === 0) return Hm(o, i);
18146
- let c = s[0], l = .5, u = zm(t);
18301
+ function Gm(e, t, n) {
18302
+ let r = [], i = [], a = {}, o = Rm(t), s = Um(e, t, n, r, i);
18303
+ if (s.length === 0) return Wm(o, i);
18304
+ let c = s[0], l = .5, u = Vm(t);
18147
18305
  u && (r.push(`Detected ${u.type} aggregation intent`), l += .1);
18148
18306
  let d = [], f = t.toLowerCase();
18149
- l += jm(c, f, d, r), d.length === 0 && u && Mm(c, u, d, r), d.length === 0 && c.measures.length > 0 && (d.push(c.measures[0].name), r.push(`Using default measure: ${c.measures[0].name}`), i.push("Could not determine specific measure from query, using default")), a.measures = d;
18150
- let p = Bm(t), m = [];
18151
- l += Nm(s, p, f, m, r), m.length > 0 && (a.dimensions = m);
18152
- let h = Rm(t);
18307
+ l += Nm(c, f, d, r), d.length === 0 && u && Pm(c, u, d, r), d.length === 0 && c.measures.length > 0 && (d.push(c.measures[0].name), r.push(`Using default measure: ${c.measures[0].name}`), i.push("Could not determine specific measure from query, using default")), a.measures = d;
18308
+ let p = Hm(t), m = [];
18309
+ l += Fm(s, p, f, m, r), m.length > 0 && (a.dimensions = m);
18310
+ let h = Bm(t);
18153
18311
  if (h) {
18154
18312
  let e = c.dimensions.find((e) => e.type === "time");
18155
18313
  if (e) {
@@ -18168,7 +18326,7 @@ function Um(e, t, n) {
18168
18326
  reasoning: [`Detected ${o} intent from natural language`, ...e ? [`Found relevant cube: ${e}`] : []],
18169
18327
  warnings: i.length > 0 ? i : void 0,
18170
18328
  analysisMode: o,
18171
- nextSteps: Lm(o, e)
18329
+ nextSteps: zm(o, e)
18172
18330
  };
18173
18331
  }
18174
18332
  return {
@@ -18187,18 +18345,18 @@ function $(e, t, n, r) {
18187
18345
  message: A(t)
18188
18346
  });
18189
18347
  }
18190
- function Wm(e, t) {
18348
+ function Km(e, t) {
18191
18349
  return e.map((e) => t.get(e) || e);
18192
18350
  }
18193
- function Gm(e, t) {
18351
+ function qm(e, t) {
18194
18352
  if (t.size === 0) return;
18195
18353
  let n = JSON.parse(JSON.stringify(e));
18196
- return n.measures &&= Wm(n.measures, t), n.dimensions &&= Wm(n.dimensions, t), n.timeDimensions &&= n.timeDimensions.map((e) => ({
18354
+ return n.measures &&= Km(n.measures, t), n.dimensions &&= Km(n.dimensions, t), n.timeDimensions &&= n.timeDimensions.map((e) => ({
18197
18355
  ...e,
18198
18356
  dimension: t.get(e.dimension) || e.dimension
18199
18357
  })), n;
18200
18358
  }
18201
- function Km(e, t) {
18359
+ function Jm(e, t) {
18202
18360
  e.measures && e.measures.length > 10 && t.push({
18203
18361
  type: "performance",
18204
18362
  message: A("server.validation.ai.performanceManyMeasures", { count: e.measures.length }),
@@ -18209,7 +18367,7 @@ function Km(e, t) {
18209
18367
  suggestion: A("server.validation.ai.suggestAddDimensionFilters")
18210
18368
  });
18211
18369
  }
18212
- function qm(e, t, n) {
18370
+ function Ym(e, t, n) {
18213
18371
  let [r] = e.split("."), i = t.find((e) => e.name === r);
18214
18372
  if (!i) return;
18215
18373
  let a = i.dimensions.find((t) => t.name === e);
@@ -18223,7 +18381,7 @@ function qm(e, t, n) {
18223
18381
  suggestion: A("server.validation.ai.suggestUseTimeDimension")
18224
18382
  });
18225
18383
  }
18226
- function Jm(e, t, n, r, i) {
18384
+ function Xm(e, t, n, r, i) {
18227
18385
  let a = e.member, o = a.split(".");
18228
18386
  if (o.length !== 2) {
18229
18387
  n.push({
@@ -18271,7 +18429,7 @@ function Jm(e, t, n, r, i) {
18271
18429
  }
18272
18430
  //#endregion
18273
18431
  //#region src/server/ai/validation.ts
18274
- function Ym(e, t) {
18432
+ function Zm(e, t) {
18275
18433
  let n = null;
18276
18434
  for (let r of t) {
18277
18435
  let t = Tf(e.toLowerCase(), r.toLowerCase());
@@ -18282,7 +18440,7 @@ function Ym(e, t) {
18282
18440
  }
18283
18441
  return n;
18284
18442
  }
18285
- function Xm(e, t, n, r) {
18443
+ function Qm(e, t, n, r) {
18286
18444
  let i = e.split(".");
18287
18445
  if (i.length !== 2) {
18288
18446
  n.push({
@@ -18294,7 +18452,7 @@ function Xm(e, t, n, r) {
18294
18452
  }
18295
18453
  let [a, o] = i, s = t.find((e) => e.name === a);
18296
18454
  if (!s) {
18297
- let i = t.map((e) => e.name), s = Ym(a, i);
18455
+ let i = t.map((e) => e.name), s = Zm(a, i);
18298
18456
  s ? (n.push({
18299
18457
  type: "cube_not_found",
18300
18458
  message: A("server.validation.ai.cubeNotFoundWithSuggestion", { cubeName: a }),
@@ -18322,7 +18480,7 @@ function Xm(e, t, n, r) {
18322
18480
  correctedValue: i.field
18323
18481
  }), r.set(e, i.field);
18324
18482
  else {
18325
- let t = s.measures.map((e) => e.name.split(".").pop()), i = Ym(o, t);
18483
+ let t = s.measures.map((e) => e.name.split(".").pop()), i = Zm(o, t);
18326
18484
  if (i) {
18327
18485
  let t = `${a}.${i.field}`;
18328
18486
  n.push({
@@ -18347,7 +18505,7 @@ function Xm(e, t, n, r) {
18347
18505
  }
18348
18506
  }
18349
18507
  }
18350
- function Zm(e, t, n, r) {
18508
+ function $m(e, t, n, r) {
18351
18509
  let i = e.split(".");
18352
18510
  if (i.length !== 2) {
18353
18511
  n.push({
@@ -18359,7 +18517,7 @@ function Zm(e, t, n, r) {
18359
18517
  }
18360
18518
  let [a, o] = i, s = t.find((e) => e.name === a);
18361
18519
  if (!s) {
18362
- let i = t.map((e) => e.name), s = Ym(a, i);
18520
+ let i = t.map((e) => e.name), s = Zm(a, i);
18363
18521
  s ? (n.push({
18364
18522
  type: "cube_not_found",
18365
18523
  message: A("server.validation.ai.cubeNotFoundWithSuggestion", { cubeName: a }),
@@ -18387,7 +18545,7 @@ function Zm(e, t, n, r) {
18387
18545
  correctedValue: i.field
18388
18546
  }), r.set(e, i.field);
18389
18547
  else {
18390
- let t = s.dimensions.map((e) => e.name.split(".").pop()), i = Ym(o, t);
18548
+ let t = s.dimensions.map((e) => e.name.split(".").pop()), i = Zm(o, t);
18391
18549
  if (i) {
18392
18550
  let t = `${a}.${i.field}`;
18393
18551
  n.push({
@@ -18412,23 +18570,23 @@ function Zm(e, t, n, r) {
18412
18570
  }
18413
18571
  }
18414
18572
  }
18415
- function Qm(e, t, n, r) {
18573
+ function eh(e, t, n, r) {
18416
18574
  for (let i of e) {
18417
18575
  if ("and" in i && Array.isArray(i.and)) {
18418
- Qm(i.and, t, n, r);
18576
+ eh(i.and, t, n, r);
18419
18577
  continue;
18420
18578
  }
18421
18579
  if ("or" in i && Array.isArray(i.or)) {
18422
- Qm(i.or, t, n, r);
18580
+ eh(i.or, t, n, r);
18423
18581
  continue;
18424
18582
  }
18425
- "member" in i && Jm(i, t, n, r, Ym);
18583
+ "member" in i && Xm(i, t, n, r, Zm);
18426
18584
  }
18427
18585
  }
18428
- function $m(e, t, n, r, i) {
18586
+ function th(e, t, n, r, i) {
18429
18587
  let a = e.funnel;
18430
18588
  if (!a) return;
18431
- let o = (e, n) => Zm(e, t, n, i);
18589
+ let o = (e, n) => $m(e, t, n, i);
18432
18590
  if ($(a.bindingKey, "server.validation.ai.bindingKeyRequired.funnel", o, n), $(a.timeDimension, "server.validation.ai.timeDimensionRequired.funnel", o, n), !a.steps || !Array.isArray(a.steps)) n.push({
18433
18591
  type: "syntax_error",
18434
18592
  message: A("server.validation.ai.funnelStepsRequired")
@@ -18443,23 +18601,23 @@ function $m(e, t, n, r, i) {
18443
18601
  type: "best_practice",
18444
18602
  message: A("server.validation.ai.stepMissingName", { step: e + 1 }),
18445
18603
  suggestion: A("server.validation.ai.suggestAddStepNames")
18446
- }), o.filter && "member" in o.filter && Qm([o.filter], t, n, i);
18604
+ }), o.filter && "member" in o.filter && eh([o.filter], t, n, i);
18447
18605
  }
18448
18606
  }
18449
- function eh(e, t, n, r, i) {
18607
+ function nh(e, t, n, r, i) {
18450
18608
  let a = e.flow;
18451
18609
  if (!a) return;
18452
- let o = (e, n) => Zm(e, t, n, i);
18610
+ let o = (e, n) => $m(e, t, n, i);
18453
18611
  $(a.bindingKey, "server.validation.ai.bindingKeyRequired.flow", o, n), $(a.timeDimension, "server.validation.ai.timeDimensionRequired.flow", o, n), $(a.eventDimension, "server.validation.ai.eventDimensionRequired", o, n), a.stepsBefore === void 0 && a.stepsAfter === void 0 && r.push({
18454
18612
  type: "best_practice",
18455
18613
  message: A("server.validation.ai.stepsBothMissing"),
18456
18614
  suggestion: A("server.validation.ai.suggestSetSteps")
18457
18615
  });
18458
18616
  }
18459
- function th(e, t, n, r, i) {
18617
+ function rh(e, t, n, r, i) {
18460
18618
  let a = e.retention;
18461
18619
  if (!a) return;
18462
- let o = (e, n) => Zm(e, t, n, i);
18620
+ let o = (e, n) => $m(e, t, n, i);
18463
18621
  $(a.bindingKey, "server.validation.ai.bindingKeyRequired.retention", o, n), $(a.timeDimension, "server.validation.ai.retentionTimeDimensionRequired", o, n), a.granularity || r.push({
18464
18622
  type: "best_practice",
18465
18623
  message: A("server.validation.ai.granularityNotSpecified"),
@@ -18470,28 +18628,28 @@ function th(e, t, n, r, i) {
18470
18628
  suggestion: A("server.validation.ai.suggestSpecifyPeriods")
18471
18629
  });
18472
18630
  }
18473
- function nh(e, t, n, r, i) {
18474
- return e.funnel ? ($m(e, t, n, r, i), !0) : e.flow ? (eh(e, t, n, r, i), !0) : e.retention ? (th(e, t, n, r, i), !0) : !1;
18631
+ function ih(e, t, n, r, i) {
18632
+ return e.funnel ? (th(e, t, n, r, i), !0) : e.flow ? (nh(e, t, n, r, i), !0) : e.retention ? (rh(e, t, n, r, i), !0) : !1;
18475
18633
  }
18476
- function rh(e, t, n, r, i) {
18477
- if (e.measures) for (let r of e.measures) Xm(r, t, n, i);
18478
- if (e.dimensions) for (let r of e.dimensions) Zm(r, t, n, i);
18479
- if (e.timeDimensions) for (let a of e.timeDimensions) Zm(a.dimension, t, n, i), qm(a.dimension, t, r);
18480
- e.filters && Qm(e.filters, t, n, i), !e.measures?.length && !e.dimensions?.length && n.push({
18634
+ function ah(e, t, n, r, i) {
18635
+ if (e.measures) for (let r of e.measures) Qm(r, t, n, i);
18636
+ if (e.dimensions) for (let r of e.dimensions) $m(r, t, n, i);
18637
+ if (e.timeDimensions) for (let a of e.timeDimensions) $m(a.dimension, t, n, i), Ym(a.dimension, t, r);
18638
+ e.filters && eh(e.filters, t, n, i), !e.measures?.length && !e.dimensions?.length && n.push({
18481
18639
  type: "syntax_error",
18482
18640
  message: A("server.validation.ai.emptyQuery")
18483
- }), Km(e, r);
18641
+ }), Jm(e, r);
18484
18642
  }
18485
- function ih(e, t) {
18643
+ function oh(e, t) {
18486
18644
  let n = [], r = [], i = /* @__PURE__ */ new Map();
18487
- if (nh(e, t, n, r, i)) return {
18645
+ if (ih(e, t, n, r, i)) return {
18488
18646
  isValid: n.length === 0,
18489
18647
  errors: n,
18490
18648
  warnings: r,
18491
18649
  correctedQuery: void 0
18492
18650
  };
18493
- rh(e, t, n, r, i);
18494
- let a = Gm(e, i);
18651
+ ah(e, t, n, r, i);
18652
+ let a = qm(e, i);
18495
18653
  return {
18496
18654
  isValid: n.length === 0,
18497
18655
  errors: n,
@@ -18501,11 +18659,11 @@ function ih(e, t) {
18501
18659
  }
18502
18660
  //#endregion
18503
18661
  //#region src/server/index.ts
18504
- function ah(e) {
18662
+ function sh(e) {
18505
18663
  return new Ud({
18506
18664
  drizzle: e.drizzle,
18507
18665
  schema: e.schema
18508
18666
  });
18509
18667
  }
18510
18668
  //#endregion
18511
- export { Bd as BASE_CUBE_SET_ID, w as BaseDatabaseExecutor, $n as CTEBuilder, M as CalculatedMeasureResolver, oi as ComparisonQueryBuilder, pt as DatabendExecutor, ha as DrizzlePlanBuilder, In as DrizzleSqlBuilder, ct as DuckDBExecutor, tf as EXPLAIN_ANALYSIS_PROMPT, ci as FlowQueryBuilder, si as FunnelQueryBuilder, Si as IdentityOptimiser, Ln as JoinPathResolver, xi as LogicalPlanBuilder, Zn as LogicalPlanner, Kd as MemoryCacheProvider, Ze as MySQLExecutor, Ci as OptimiserPipeline, qe as PostgresExecutor, _a as QueryExecutor, kr as QueryValidationError, mi as RetentionQueryBuilder, Vd as SINGLE_TENANT_CONTEXT, tt as SQLiteExecutor, qd as STEP0_VALIDATION_PROMPT, Zd as STEP1_SYSTEM_PROMPT, $d as STEP2_SYSTEM_PROMPT, Yd as SYSTEM_PROMPT_TEMPLATE, Ud as SemanticLayerCompiler, yt as SnowflakeExecutor, ih as aiValidateQuery, _f as buildAgentSystemPrompt, Wd as buildAttributeDimensions, nf as buildExplainAnalysisPrompt, Jd as buildStep0Prompt, Qd as buildStep1Prompt, ef as buildStep2Prompt, Xd as buildSystemPrompt, xt as createDatabaseExecutor, mt as createDatabendExecutor, ah as createDrizzleSemanticLayer, lt as createDuckDBExecutor, Dt as createMultiCubeContext, Qe as createMySQLExecutor, Je as createPostgresExecutor, nt as createSQLiteExecutor, bt as createSnowflakeExecutor, hm as createToolExecutor, Ot as defineCube, Or as detectQueryMode, Er as detectQueryModes, Ff as discoverCubes, If as findBestFieldMatch, ni as fnv1aHash, rf as formatCubeSchemaForExplain, af as formatExistingIndexes, Yr as generateCacheKey, Dr as getActiveQueryModes, ii as getCubeInvalidationPattern, Ct as getJoinType, mm as getToolDefinitions, Om as handleAgentChat, Sr as hasComparisonMode, wr as hasFlowMode, Cr as hasFunnelMode, Tr as hasRetentionMode, Xr as normalizeQuery, E as resolveCubeReference, D as resolveSqlExpression, ri as strongHash, Um as suggestQuery };
18669
+ export { Bd as BASE_CUBE_SET_ID, w as BaseDatabaseExecutor, $n as CTEBuilder, M as CalculatedMeasureResolver, oi as ComparisonQueryBuilder, pt as DatabendExecutor, ha as DrizzlePlanBuilder, In as DrizzleSqlBuilder, ct as DuckDBExecutor, tf as EXPLAIN_ANALYSIS_PROMPT, ci as FlowQueryBuilder, si as FunnelQueryBuilder, Si as IdentityOptimiser, Ln as JoinPathResolver, xi as LogicalPlanBuilder, Zn as LogicalPlanner, Kd as MemoryCacheProvider, Ze as MySQLExecutor, Ci as OptimiserPipeline, qe as PostgresExecutor, _a as QueryExecutor, kr as QueryValidationError, mi as RetentionQueryBuilder, Vd as SINGLE_TENANT_CONTEXT, tt as SQLiteExecutor, qd as STEP0_VALIDATION_PROMPT, Zd as STEP1_SYSTEM_PROMPT, $d as STEP2_SYSTEM_PROMPT, Yd as SYSTEM_PROMPT_TEMPLATE, Ud as SemanticLayerCompiler, yt as SnowflakeExecutor, oh as aiValidateQuery, _f as buildAgentSystemPrompt, Wd as buildAttributeDimensions, nf as buildExplainAnalysisPrompt, Jd as buildStep0Prompt, Qd as buildStep1Prompt, ef as buildStep2Prompt, Xd as buildSystemPrompt, xt as createDatabaseExecutor, mt as createDatabendExecutor, sh as createDrizzleSemanticLayer, lt as createDuckDBExecutor, Dt as createMultiCubeContext, Qe as createMySQLExecutor, Je as createPostgresExecutor, nt as createSQLiteExecutor, bt as createSnowflakeExecutor, _m as createToolExecutor, Ot as defineCube, Or as detectQueryMode, Er as detectQueryModes, Ff as discoverCubes, If as findBestFieldMatch, ni as fnv1aHash, rf as formatCubeSchemaForExplain, af as formatExistingIndexes, Yr as generateCacheKey, Dr as getActiveQueryModes, ii as getCubeInvalidationPattern, Ct as getJoinType, gm as getToolDefinitions, Am as handleAgentChat, Sr as hasComparisonMode, wr as hasFlowMode, Cr as hasFunnelMode, Tr as hasRetentionMode, Xr as normalizeQuery, E as resolveCubeReference, D as resolveSqlExpression, ri as strongHash, Gm as suggestQuery };