drizzle-cube 0.6.2 → 0.6.4

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 (328) hide show
  1. package/dist/adapters/ActivityGridChart.config-BtECymia.cjs +1 -0
  2. package/dist/adapters/ActivityGridChart.config-CTd5HYjI.js +2 -0
  3. package/dist/adapters/AreaChart.config-1B8iQnfn.js +2 -0
  4. package/dist/adapters/AreaChart.config-hnncyQL4.cjs +1 -0
  5. package/dist/adapters/BarChart.config-C-QCf1rL.cjs +1 -0
  6. package/dist/adapters/BarChart.config-CFelK1qP.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-CD9WEPyF.js +2 -0
  8. package/dist/adapters/BoxPlotChart.config-DEbLA0BX.cjs +1 -0
  9. package/dist/adapters/BubbleChart.config-B_M4hzzV.js +2 -0
  10. package/dist/adapters/BubbleChart.config-dRZZlAke.cjs +1 -0
  11. package/dist/adapters/CandlestickChart.config-Dsil2Fop.cjs +1 -0
  12. package/dist/adapters/CandlestickChart.config-fuhyFvob.js +2 -0
  13. package/dist/adapters/DataTable.config-q2gqBi6t.cjs +1 -0
  14. package/dist/adapters/DataTable.config-wIQnHX5R.js +2 -0
  15. package/dist/adapters/FunnelChart.config-Dz710ssx.js +2 -0
  16. package/dist/adapters/FunnelChart.config-YNP9CeS-.cjs +1 -0
  17. package/dist/adapters/GaugeChart.config-BG9FcMCn.cjs +1 -0
  18. package/dist/adapters/GaugeChart.config-CgwniXkd.js +2 -0
  19. package/dist/adapters/HeatMapChart.config-1zSMXXoN.cjs +1 -0
  20. package/dist/adapters/HeatMapChart.config-YVEWx6s5.js +2 -0
  21. package/dist/adapters/KpiDelta.config-BWvYXuFp.cjs +1 -0
  22. package/dist/adapters/KpiDelta.config-C_dYM64q.js +2 -0
  23. package/dist/adapters/KpiNumber.config-CXg6toZG.js +2 -0
  24. package/dist/adapters/KpiNumber.config-CZmV-yU1.cjs +1 -0
  25. package/dist/adapters/KpiText.config-BY-SJvAF.js +2 -0
  26. package/dist/adapters/KpiText.config-GSIxy0CE.cjs +1 -0
  27. package/dist/adapters/LineChart.config-CJtF8SOu.js +2 -0
  28. package/dist/adapters/LineChart.config-d0y60gw9.cjs +1 -0
  29. package/dist/adapters/MarkdownChart.config-B6w0spya.cjs +1 -0
  30. package/dist/adapters/MarkdownChart.config-BuIQcWOn.js +2 -0
  31. package/dist/adapters/MeasureProfileChart.config-Bo2n5Ae5.cjs +1 -0
  32. package/dist/adapters/MeasureProfileChart.config-C5d34lsc.js +2 -0
  33. package/dist/adapters/PieChart.config-CDxfXCIt.cjs +1 -0
  34. package/dist/adapters/PieChart.config-CuZxQc5m.js +2 -0
  35. package/dist/adapters/RadarChart.config-DpdVWyh5.cjs +1 -0
  36. package/dist/adapters/RadarChart.config-KrxwaaGu.js +2 -0
  37. package/dist/adapters/RadialBarChart.config-DpRZd0FW.js +2 -0
  38. package/dist/adapters/RadialBarChart.config-faIY4jpE.cjs +1 -0
  39. package/dist/adapters/RetentionCombinedChart.config-CUnScqnS.cjs +1 -0
  40. package/dist/adapters/RetentionCombinedChart.config-Dd8FuawP.js +2 -0
  41. package/dist/adapters/RetentionHeatmap.config-CPd6GeoQ.js +2 -0
  42. package/dist/adapters/RetentionHeatmap.config-CPlHbLom.cjs +1 -0
  43. package/dist/adapters/SankeyChart.config-DbIUqi-H.cjs +1 -0
  44. package/dist/adapters/SankeyChart.config-kzAnW0C7.js +2 -0
  45. package/dist/adapters/ScatterChart.config-4Okvn27v.js +2 -0
  46. package/dist/adapters/ScatterChart.config-4f9nNw3e.cjs +1 -0
  47. package/dist/adapters/SunburstChart.config-BsUQkIM_.js +2 -0
  48. package/dist/adapters/SunburstChart.config-lvnYkWs7.cjs +1 -0
  49. package/dist/adapters/TreeMapChart.config-S0qsgAFW.js +2 -0
  50. package/dist/adapters/TreeMapChart.config-jbwKsTYt.cjs +1 -0
  51. package/dist/adapters/WaterfallChart.config-CDQ74-pS.cjs +1 -0
  52. package/dist/adapters/WaterfallChart.config-XdtH-O5g.js +2 -0
  53. package/dist/adapters/chartConfigHelpers-CcvqrIWF.js +72 -0
  54. package/dist/adapters/chartConfigHelpers-DHQB-_v5.cjs +1 -0
  55. package/dist/adapters/compiler-DyyBaLry.cjs +166 -0
  56. package/dist/adapters/{locale-DDvZDFVn.js → compiler-lG6eNsoI.js} +215 -230
  57. package/dist/adapters/core/cube-http-handler.d.ts +27 -0
  58. package/dist/adapters/core/http-port.d.ts +39 -0
  59. package/dist/adapters/core/index.cjs +1 -0
  60. package/dist/adapters/core/index.d.ts +11 -0
  61. package/dist/adapters/core/index.js +2 -0
  62. package/dist/adapters/core/mcp-handler.d.ts +13 -0
  63. package/dist/adapters/core/rest-handlers.d.ts +14 -0
  64. package/dist/adapters/core/security-context.d.ts +17 -0
  65. package/dist/adapters/core-Bbchr0ui.js +244 -0
  66. package/dist/adapters/core-F1pCQPde.cjs +1 -0
  67. package/dist/adapters/express/index.cjs +2 -2
  68. package/dist/adapters/express/index.js +93 -201
  69. package/dist/adapters/fastify/index.cjs +2 -2
  70. package/dist/adapters/fastify/index.js +79 -217
  71. package/dist/adapters/handler-DRZb2ip6.cjs +25 -0
  72. package/dist/adapters/{handler-CtaSua-i.js → handler-u8FyzPBT.js} +1572 -1500
  73. package/dist/adapters/hono/index.cjs +2 -2
  74. package/dist/adapters/hono/index.js +69 -225
  75. package/dist/adapters/mcp-tools.cjs +1 -1
  76. package/dist/adapters/mcp-tools.js +1 -1
  77. package/dist/adapters/mcp-transport-Bw_zqky2.js +591 -0
  78. package/dist/adapters/mcp-transport-CNIPoe1i.cjs +40 -0
  79. package/dist/adapters/nextjs/index.cjs +1 -1
  80. package/dist/adapters/nextjs/index.d.ts +18 -9
  81. package/dist/adapters/nextjs/index.js +186 -289
  82. package/dist/adapters/nextjs/mcp-handler.d.ts +0 -28
  83. package/dist/adapters/{openai-D-6l1Y8h.cjs → openai-B4kAJTSD.cjs} +1 -1
  84. package/dist/adapters/{openai-DTSTMiXL.cjs → openai-Cdf2wWZA.cjs} +1 -1
  85. package/dist/adapters/{openai-CmVRIbUg.js → openai-CmMzrs1Y.js} +1 -1
  86. package/dist/adapters/{openai-CtXqeznO.js → openai-DhzGY9R4.js} +1 -1
  87. package/dist/cjs/adapters/core/cube-http-handler.d.ts +27 -0
  88. package/dist/cjs/adapters/core/http-port.d.ts +39 -0
  89. package/dist/cjs/adapters/core/index.d.ts +11 -0
  90. package/dist/cjs/adapters/core/mcp-handler.d.ts +13 -0
  91. package/dist/cjs/adapters/core/rest-handlers.d.ts +14 -0
  92. package/dist/cjs/adapters/core/security-context.d.ts +17 -0
  93. package/dist/cjs/adapters/nextjs/index.d.ts +18 -9
  94. package/dist/cjs/adapters/nextjs/mcp-handler.d.ts +0 -28
  95. package/dist/cjs/client/charts/chartComponentRegistry.d.ts +1 -9
  96. package/dist/cjs/client/charts/chartConfigRegistry.d.ts +5 -1
  97. package/dist/cjs/client/charts/chartPlugin.d.ts +1 -2
  98. package/dist/cjs/client/charts/chartRegistry.d.ts +73 -0
  99. package/dist/cjs/client/components/AIAssistant/index.d.ts +2 -2
  100. package/dist/cjs/client/components/AnalysisBuilder/utils/filterUtils.d.ts +4 -10
  101. package/dist/cjs/client/components/charts/ActivityGridChart.config.d.ts +6 -1
  102. package/dist/cjs/client/components/charts/AreaChart.config.d.ts +6 -1
  103. package/dist/cjs/client/components/charts/BarChart.config.d.ts +6 -1
  104. package/dist/cjs/client/components/charts/BoxPlotChart.config.d.ts +6 -1
  105. package/dist/cjs/client/components/charts/BubbleChart.config.d.ts +6 -1
  106. package/dist/cjs/client/components/charts/CandlestickChart.config.d.ts +6 -1
  107. package/dist/cjs/client/components/charts/DataTable.config.d.ts +6 -1
  108. package/dist/cjs/client/components/charts/FunnelChart.config.d.ts +5 -0
  109. package/dist/cjs/client/components/charts/GaugeChart.config.d.ts +6 -1
  110. package/dist/cjs/client/components/charts/HeatMapChart.config.d.ts +6 -1
  111. package/dist/cjs/client/components/charts/KpiDelta.config.d.ts +6 -1
  112. package/dist/cjs/client/components/charts/KpiNumber.config.d.ts +6 -1
  113. package/dist/cjs/client/components/charts/KpiText.config.d.ts +6 -1
  114. package/dist/cjs/client/components/charts/LineChart.config.d.ts +6 -1
  115. package/dist/cjs/client/components/charts/MarkdownChart.config.d.ts +6 -1
  116. package/dist/cjs/client/components/charts/MeasureProfileChart.config.d.ts +6 -1
  117. package/dist/cjs/client/components/charts/PieChart.config.d.ts +6 -1
  118. package/dist/cjs/client/components/charts/RadarChart.config.d.ts +6 -1
  119. package/dist/cjs/client/components/charts/RadialBarChart.config.d.ts +6 -1
  120. package/dist/cjs/client/components/charts/SankeyChart.config.d.ts +5 -0
  121. package/dist/cjs/client/components/charts/ScatterChart.config.d.ts +6 -1
  122. package/dist/cjs/client/components/charts/SunburstChart.config.d.ts +5 -0
  123. package/dist/cjs/client/components/charts/TreeMapChart.config.d.ts +6 -1
  124. package/dist/cjs/client/components/charts/WaterfallChart.config.d.ts +6 -1
  125. package/dist/cjs/client/components/shared/utils.d.ts +2 -1
  126. package/dist/cjs/client/hooks/analysisQueryExecutionModes.d.ts +1 -1
  127. package/dist/cjs/client/hooks/useAnalysisEffects.d.ts +33 -0
  128. package/dist/{client/hooks/useAnalysisQueryExecution.d.ts → cjs/client/hooks/useAnalysisQuery.d.ts} +3 -3
  129. package/dist/cjs/client/hooks/useAnalysisState.d.ts +165 -0
  130. package/dist/cjs/client/icons/registry.d.ts +0 -6
  131. package/dist/cjs/client/icons/types.d.ts +5 -0
  132. package/dist/cjs/client/shared/filters/filterOperations.d.ts +95 -0
  133. package/dist/cjs/client/shared/filters/index.d.ts +10 -0
  134. package/dist/cjs/client/shared/filters/operators.d.ts +23 -0
  135. package/dist/cjs/client/shared/index.d.ts +3 -2
  136. package/dist/cjs/client/shared/types.d.ts +3 -10
  137. package/dist/cjs/client/shared/utils.d.ts +1 -59
  138. package/dist/cjs/client/utils/filterUtils.d.ts +2 -9
  139. package/dist/cjs/server/logical-plan/logical-plan-builder.d.ts +0 -5
  140. package/dist/cjs/server/logical-plan/schema-builder.d.ts +19 -0
  141. package/dist/client/charts/chartComponentRegistry.d.ts +1 -9
  142. package/dist/client/charts/chartConfigRegistry.d.ts +5 -1
  143. package/dist/client/charts/chartPlugin.d.ts +1 -2
  144. package/dist/client/charts/chartRegistry.d.ts +73 -0
  145. package/dist/client/charts.js +3 -3
  146. package/dist/client/chunks/{DashboardEditModal-okVfH8ZK.js → DashboardEditModal-Cs1ig1_V.js} +1522 -1121
  147. package/dist/client/chunks/DashboardEditModal-Cs1ig1_V.js.map +1 -0
  148. package/dist/client/chunks/{analysis-builder-DB88FojM.js → analysis-builder-B64yaeDe.js} +1609 -1878
  149. package/dist/client/chunks/analysis-builder-B64yaeDe.js.map +1 -0
  150. package/dist/client/chunks/{analysis-builder-shared-BVK4TYfR.js → analysis-builder-shared-CD0n2Nb8.js} +1545 -1355
  151. package/dist/client/chunks/analysis-builder-shared-CD0n2Nb8.js.map +1 -0
  152. package/dist/client/chunks/{chart-config-activity-grid-D_UX4NHC.js → chart-config-activity-grid-BU_bkvER.js} +1 -11
  153. package/dist/client/chunks/chart-config-activity-grid-BU_bkvER.js.map +1 -0
  154. package/dist/client/chunks/{chart-config-area-BNigHUy8.js → chart-config-area-DxwIZ4Uf.js} +1 -5
  155. package/dist/client/chunks/{chart-config-area-BNigHUy8.js.map → chart-config-area-DxwIZ4Uf.js.map} +1 -1
  156. package/dist/client/chunks/{chart-config-bar-DSO_LRTx.js → chart-config-bar-Cc8GY9aQ.js} +5 -9
  157. package/dist/client/chunks/chart-config-bar-Cc8GY9aQ.js.map +1 -0
  158. package/dist/client/chunks/{chart-config-box-plot-oW8axV2q.js → chart-config-box-plot-Bs8ovYvV.js} +3 -8
  159. package/dist/client/chunks/chart-config-box-plot-Bs8ovYvV.js.map +1 -0
  160. package/dist/client/chunks/{chart-config-bubble-gIoqVyjZ.js → chart-config-bubble-BfgY7pt8.js} +1 -11
  161. package/dist/client/chunks/chart-config-bubble-BfgY7pt8.js.map +1 -0
  162. package/dist/client/chunks/{chart-config-candlestick-N6DchAA3.js → chart-config-candlestick-jaeNNEtC.js} +1 -11
  163. package/dist/client/chunks/chart-config-candlestick-jaeNNEtC.js.map +1 -0
  164. package/dist/client/chunks/{chart-config-data-table-d7VBY-y_.js → chart-config-data-table-CRk0C0rW.js} +1 -4
  165. package/dist/client/chunks/chart-config-data-table-CRk0C0rW.js.map +1 -0
  166. package/dist/client/chunks/{chart-config-funnel-DEYMcxsD.js → chart-config-funnel-boT_LNfl.js} +1 -4
  167. package/dist/client/chunks/chart-config-funnel-boT_LNfl.js.map +1 -0
  168. package/dist/client/chunks/{chart-config-gauge-Dq-_H9UN.js → chart-config-gauge-C5uJEr97.js} +3 -8
  169. package/dist/client/chunks/chart-config-gauge-C5uJEr97.js.map +1 -0
  170. package/dist/client/chunks/{chart-config-heat-map-CfRnRNcw.js → chart-config-heat-map-CCarP44-.js} +1 -11
  171. package/dist/client/chunks/chart-config-heat-map-CCarP44-.js.map +1 -0
  172. package/dist/client/chunks/{chart-config-kpi-delta-DSQbvqu_.js → chart-config-kpi-delta-DYopvwyG.js} +3 -8
  173. package/dist/client/chunks/chart-config-kpi-delta-DYopvwyG.js.map +1 -0
  174. package/dist/client/chunks/{chart-config-kpi-number-EFSWY1We.js → chart-config-kpi-number-BhMdoArB.js} +3 -8
  175. package/dist/client/chunks/chart-config-kpi-number-BhMdoArB.js.map +1 -0
  176. package/dist/client/chunks/{chart-config-kpi-text-KM3V5X2u.js → chart-config-kpi-text-DE6Zdi53.js} +3 -8
  177. package/dist/client/chunks/chart-config-kpi-text-DE6Zdi53.js.map +1 -0
  178. package/dist/client/chunks/{chart-config-line-D6jG8PCH.js → chart-config-line-CBfM0Rds.js} +6 -10
  179. package/dist/client/chunks/chart-config-line-CBfM0Rds.js.map +1 -0
  180. package/dist/client/chunks/{chart-config-markdown-BtRIe8JN.js → chart-config-markdown-BCDyBI8K.js} +1 -4
  181. package/dist/client/chunks/chart-config-markdown-BCDyBI8K.js.map +1 -0
  182. package/dist/client/chunks/{chart-config-measure-profile-DxRGa-zf.js → chart-config-measure-profile-BgQIH1u2.js} +1 -8
  183. package/dist/client/chunks/chart-config-measure-profile-BgQIH1u2.js.map +1 -0
  184. package/dist/client/chunks/{chart-config-pie-BhzW-fdn.js → chart-config-pie-ChfFz6DV.js} +5 -9
  185. package/dist/client/chunks/chart-config-pie-ChfFz6DV.js.map +1 -0
  186. package/dist/client/chunks/{chart-config-radar-D7REP1q_.js → chart-config-radar-BlAIGnww.js} +5 -9
  187. package/dist/client/chunks/chart-config-radar-BlAIGnww.js.map +1 -0
  188. package/dist/client/chunks/{chart-config-radial-bar-Byx6qOPU.js → chart-config-radial-bar-VFerwbCO.js} +5 -9
  189. package/dist/client/chunks/chart-config-radial-bar-VFerwbCO.js.map +1 -0
  190. package/dist/client/chunks/{chart-config-sankey-BTnWA7EW.js → chart-config-sankey-BhrDxIgj.js} +1 -4
  191. package/dist/client/chunks/chart-config-sankey-BhrDxIgj.js.map +1 -0
  192. package/dist/client/chunks/{chart-config-scatter-DSYTjwRb.js → chart-config-scatter-q_olh54e.js} +1 -11
  193. package/dist/client/chunks/chart-config-scatter-q_olh54e.js.map +1 -0
  194. package/dist/client/chunks/{chart-config-sunburst-Bwjtdf7X.js → chart-config-sunburst-BOmkOnKn.js} +1 -4
  195. package/dist/client/chunks/chart-config-sunburst-BOmkOnKn.js.map +1 -0
  196. package/dist/client/chunks/{chart-config-tree-map-DVrvf3yQ.js → chart-config-tree-map-BjX88YBY.js} +5 -9
  197. package/dist/client/chunks/chart-config-tree-map-BjX88YBY.js.map +1 -0
  198. package/dist/client/chunks/{chart-config-waterfall-DmFeQdIk.js → chart-config-waterfall-QsWXVSoF.js} +3 -8
  199. package/dist/client/chunks/chart-config-waterfall-QsWXVSoF.js.map +1 -0
  200. package/dist/client/chunks/{chart-data-table-CKauQXme.js → chart-data-table-D4g5_jfF.js} +1277 -1094
  201. package/dist/client/chunks/chart-data-table-D4g5_jfF.js.map +1 -0
  202. package/dist/client/chunks/{chart-kpi-delta-Dn-jjO-2.js → chart-kpi-delta-BvWOt8-D.js} +2 -2
  203. package/dist/client/chunks/{chart-kpi-delta-Dn-jjO-2.js.map → chart-kpi-delta-BvWOt8-D.js.map} +1 -1
  204. package/dist/client/chunks/{chart-kpi-number-P_WBiO5S.js → chart-kpi-number-xgZmMiQY.js} +3 -3
  205. package/dist/client/chunks/{chart-kpi-number-P_WBiO5S.js.map → chart-kpi-number-xgZmMiQY.js.map} +1 -1
  206. package/dist/client/chunks/{chart-kpi-text-C-Y4eb5H.js → chart-kpi-text-ZO3eFi7t.js} +2 -2
  207. package/dist/client/chunks/{chart-kpi-text-C-Y4eb5H.js.map → chart-kpi-text-ZO3eFi7t.js.map} +1 -1
  208. package/dist/client/chunks/{charts-loader-DdTeCeNo.js → charts-loader-B0DOQMFH.js} +6 -6
  209. package/dist/client/chunks/{charts-loader-DdTeCeNo.js.map → charts-loader-B0DOQMFH.js.map} +1 -1
  210. package/dist/client/chunks/{schema-visualization-Cb_E9_Gd.js → schema-visualization-DJPTktM6.js} +2 -2
  211. package/dist/client/chunks/{schema-visualization-Cb_E9_Gd.js.map → schema-visualization-DJPTktM6.js.map} +1 -1
  212. package/dist/client/chunks/{useDirtyStateTracking-MbpxH_v6.js → useDirtyStateTracking-BT6zqCFl.js} +250 -591
  213. package/dist/client/chunks/useDirtyStateTracking-BT6zqCFl.js.map +1 -0
  214. package/dist/client/chunks/{useExplainAI-evnZkjCY.js → useExplainAI-Dq_meKNN.js} +4 -4
  215. package/dist/client/chunks/{useExplainAI-evnZkjCY.js.map → useExplainAI-Dq_meKNN.js.map} +1 -1
  216. package/dist/client/chunks/{utils-3P6z1vz5.js → utils-Cq-j5E5I.js} +2 -2
  217. package/dist/client/chunks/{utils-3P6z1vz5.js.map → utils-Cq-j5E5I.js.map} +1 -1
  218. package/dist/client/chunks/{vendor-DSpR0IW6.js → vendor-D4jADu8t.js} +2 -2
  219. package/dist/client/chunks/{vendor-DSpR0IW6.js.map → vendor-D4jADu8t.js.map} +1 -1
  220. package/dist/client/components/AIAssistant/index.d.ts +2 -2
  221. package/dist/client/components/AnalysisBuilder/utils/filterUtils.d.ts +4 -10
  222. package/dist/client/components/charts/ActivityGridChart.config.d.ts +6 -1
  223. package/dist/client/components/charts/AreaChart.config.d.ts +6 -1
  224. package/dist/client/components/charts/BarChart.config.d.ts +6 -1
  225. package/dist/client/components/charts/BoxPlotChart.config.d.ts +6 -1
  226. package/dist/client/components/charts/BubbleChart.config.d.ts +6 -1
  227. package/dist/client/components/charts/CandlestickChart.config.d.ts +6 -1
  228. package/dist/client/components/charts/DataTable.config.d.ts +6 -1
  229. package/dist/client/components/charts/FunnelChart.config.d.ts +5 -0
  230. package/dist/client/components/charts/GaugeChart.config.d.ts +6 -1
  231. package/dist/client/components/charts/HeatMapChart.config.d.ts +6 -1
  232. package/dist/client/components/charts/KpiDelta.config.d.ts +6 -1
  233. package/dist/client/components/charts/KpiNumber.config.d.ts +6 -1
  234. package/dist/client/components/charts/KpiText.config.d.ts +6 -1
  235. package/dist/client/components/charts/LineChart.config.d.ts +6 -1
  236. package/dist/client/components/charts/MarkdownChart.config.d.ts +6 -1
  237. package/dist/client/components/charts/MeasureProfileChart.config.d.ts +6 -1
  238. package/dist/client/components/charts/PieChart.config.d.ts +6 -1
  239. package/dist/client/components/charts/RadarChart.config.d.ts +6 -1
  240. package/dist/client/components/charts/RadialBarChart.config.d.ts +6 -1
  241. package/dist/client/components/charts/SankeyChart.config.d.ts +5 -0
  242. package/dist/client/components/charts/ScatterChart.config.d.ts +6 -1
  243. package/dist/client/components/charts/SunburstChart.config.d.ts +5 -0
  244. package/dist/client/components/charts/TreeMapChart.config.d.ts +6 -1
  245. package/dist/client/components/charts/WaterfallChart.config.d.ts +6 -1
  246. package/dist/client/components/shared/utils.d.ts +2 -1
  247. package/dist/client/components.js +3 -3
  248. package/dist/client/hooks/analysisQueryExecutionModes.d.ts +1 -1
  249. package/dist/client/hooks/useAnalysisEffects.d.ts +33 -0
  250. package/dist/{cjs/client/hooks/useAnalysisQueryExecution.d.ts → client/hooks/useAnalysisQuery.d.ts} +3 -3
  251. package/dist/client/hooks/useAnalysisState.d.ts +165 -0
  252. package/dist/client/hooks.js +3 -3
  253. package/dist/client/icons/registry.d.ts +0 -6
  254. package/dist/client/icons/types.d.ts +5 -0
  255. package/dist/client/icons.js +1 -1
  256. package/dist/client/index.js +17 -17
  257. package/dist/client/index.js.map +1 -1
  258. package/dist/client/providers.js +1 -1
  259. package/dist/client/schema.js +1 -1
  260. package/dist/client/shared/filters/filterOperations.d.ts +95 -0
  261. package/dist/client/shared/filters/index.d.ts +10 -0
  262. package/dist/client/shared/filters/operators.d.ts +23 -0
  263. package/dist/client/shared/index.d.ts +3 -2
  264. package/dist/client/shared/types.d.ts +3 -10
  265. package/dist/client/shared/utils.d.ts +1 -59
  266. package/dist/client/utils/filterUtils.d.ts +2 -9
  267. package/dist/client/utils.js +3 -3
  268. package/dist/client-bundle-stats.html +1 -1
  269. package/dist/mcp-app/mcp-app.html +34 -34
  270. package/dist/server/chartConfigHelpers-CcvqrIWF.js +72 -0
  271. package/dist/server/chartConfigHelpers-DHQB-_v5.cjs +1 -0
  272. package/dist/server/index.cjs +68 -68
  273. package/dist/server/index.js +3899 -3823
  274. package/dist/server/logical-plan/logical-plan-builder.d.ts +0 -5
  275. package/dist/server/logical-plan/schema-builder.d.ts +19 -0
  276. package/dist/server/{openai-D-6l1Y8h.cjs → openai-B4kAJTSD.cjs} +1 -1
  277. package/dist/server/{openai-DTSTMiXL.cjs → openai-Cdf2wWZA.cjs} +1 -1
  278. package/dist/server/{openai-CmVRIbUg.js → openai-CmMzrs1Y.js} +1 -1
  279. package/dist/server/{openai-CtXqeznO.js → openai-DhzGY9R4.js} +1 -1
  280. package/package.json +13 -3
  281. package/dist/adapters/handler-OwxSBJH8.cjs +0 -25
  282. package/dist/adapters/hono/mcp-handler.d.ts +0 -37
  283. package/dist/adapters/locale-ZLUUNUxr.cjs +0 -166
  284. package/dist/adapters/mcp-transport-B7ddET3M.cjs +0 -40
  285. package/dist/adapters/mcp-transport-Dfuj4j4q.js +0 -591
  286. package/dist/cjs/adapters/hono/mcp-handler.d.ts +0 -37
  287. package/dist/cjs/client/hooks/useAnalysisAI.d.ts +0 -56
  288. package/dist/cjs/client/hooks/useAnalysisChartDefaults.d.ts +0 -35
  289. package/dist/cjs/client/hooks/useAnalysisCombinedFields.d.ts +0 -18
  290. package/dist/cjs/client/hooks/useAnalysisInitialization.d.ts +0 -25
  291. package/dist/cjs/client/hooks/useAnalysisQueryBuilder.d.ts +0 -32
  292. package/dist/cjs/client/hooks/useAnalysisShare.d.ts +0 -18
  293. package/dist/cjs/client/hooks/useAnalysisUIState.d.ts +0 -24
  294. package/dist/client/chunks/DashboardEditModal-okVfH8ZK.js.map +0 -1
  295. package/dist/client/chunks/analysis-builder-DB88FojM.js.map +0 -1
  296. package/dist/client/chunks/analysis-builder-shared-BVK4TYfR.js.map +0 -1
  297. package/dist/client/chunks/chart-config-activity-grid-D_UX4NHC.js.map +0 -1
  298. package/dist/client/chunks/chart-config-bar-DSO_LRTx.js.map +0 -1
  299. package/dist/client/chunks/chart-config-box-plot-oW8axV2q.js.map +0 -1
  300. package/dist/client/chunks/chart-config-bubble-gIoqVyjZ.js.map +0 -1
  301. package/dist/client/chunks/chart-config-candlestick-N6DchAA3.js.map +0 -1
  302. package/dist/client/chunks/chart-config-data-table-d7VBY-y_.js.map +0 -1
  303. package/dist/client/chunks/chart-config-funnel-DEYMcxsD.js.map +0 -1
  304. package/dist/client/chunks/chart-config-gauge-Dq-_H9UN.js.map +0 -1
  305. package/dist/client/chunks/chart-config-heat-map-CfRnRNcw.js.map +0 -1
  306. package/dist/client/chunks/chart-config-kpi-delta-DSQbvqu_.js.map +0 -1
  307. package/dist/client/chunks/chart-config-kpi-number-EFSWY1We.js.map +0 -1
  308. package/dist/client/chunks/chart-config-kpi-text-KM3V5X2u.js.map +0 -1
  309. package/dist/client/chunks/chart-config-line-D6jG8PCH.js.map +0 -1
  310. package/dist/client/chunks/chart-config-markdown-BtRIe8JN.js.map +0 -1
  311. package/dist/client/chunks/chart-config-measure-profile-DxRGa-zf.js.map +0 -1
  312. package/dist/client/chunks/chart-config-pie-BhzW-fdn.js.map +0 -1
  313. package/dist/client/chunks/chart-config-radar-D7REP1q_.js.map +0 -1
  314. package/dist/client/chunks/chart-config-radial-bar-Byx6qOPU.js.map +0 -1
  315. package/dist/client/chunks/chart-config-sankey-BTnWA7EW.js.map +0 -1
  316. package/dist/client/chunks/chart-config-scatter-DSYTjwRb.js.map +0 -1
  317. package/dist/client/chunks/chart-config-sunburst-Bwjtdf7X.js.map +0 -1
  318. package/dist/client/chunks/chart-config-tree-map-DVrvf3yQ.js.map +0 -1
  319. package/dist/client/chunks/chart-config-waterfall-DmFeQdIk.js.map +0 -1
  320. package/dist/client/chunks/chart-data-table-CKauQXme.js.map +0 -1
  321. package/dist/client/chunks/useDirtyStateTracking-MbpxH_v6.js.map +0 -1
  322. package/dist/client/hooks/useAnalysisAI.d.ts +0 -56
  323. package/dist/client/hooks/useAnalysisChartDefaults.d.ts +0 -35
  324. package/dist/client/hooks/useAnalysisCombinedFields.d.ts +0 -18
  325. package/dist/client/hooks/useAnalysisInitialization.d.ts +0 -25
  326. package/dist/client/hooks/useAnalysisQueryBuilder.d.ts +0 -32
  327. package/dist/client/hooks/useAnalysisShare.d.ts +0 -18
  328. package/dist/client/hooks/useAnalysisUIState.d.ts +0 -24
@@ -1,145 +1,82 @@
1
- import { a as e, i as t, l as n, o as r, r as i, u as a } from "../utils-BPWZsX7k.js";
2
- import { i as o, n as s, r as c, t as l } from "../locale-DDvZDFVn.js";
3
- import { C as u, S as d, _ as f, a as p, b as m, c as h, g, h as _, i as v, l as y, m as b, o as x, r as S, u as C, v as w, x as T, y as E } from "../mcp-transport-Dfuj4j4q.js";
4
- import D, { Router as O } from "express";
5
- import k from "cors";
1
+ import { i as e } from "../utils-BPWZsX7k.js";
2
+ import { t } from "../compiler-lG6eNsoI.js";
3
+ import { _ as n, b as r, c as i, u as a } from "../mcp-transport-Bw_zqky2.js";
4
+ import { i as o, r as s, t as c } from "../core-Bbchr0ui.js";
5
+ import l, { Router as u } from "express";
6
+ import d from "cors";
6
7
  //#region src/adapters/express/index.ts
7
- function A(A) {
8
- let { cubes: j, drizzle: M, schema: N, extractSecurityContext: P, engineType: F, cors: I, basePath: L = "/cubejs-api/v1", jsonLimit: R = "10mb", cache: z, mcp: B = { enabled: !0 }, agent: V } = A;
9
- if (!j || j.length === 0) throw Error("At least one cube must be provided in the cubes array");
10
- let H = O(), U = async (e, t) => c(await P(e, t), s((t) => e.get(t)));
11
- if (I) {
8
+ function f(e, t) {
9
+ return {
10
+ getHeader: (t) => e.get(t),
11
+ getBody: async () => e.body,
12
+ getQueryParam: (t) => e.query[t],
13
+ send: (e, n) => t.status(e).json(n),
14
+ setHeader: (e, n) => {
15
+ t.setHeader(e, n);
16
+ },
17
+ sendEmpty: (e) => t.status(e).end(),
18
+ sendSse: (e, n) => (t.status(e), t.setHeader("Content-Type", "text/event-stream"), t.setHeader("Cache-Control", "no-cache"), t.setHeader("Connection", "keep-alive"), t.write(n), t.end())
19
+ };
20
+ }
21
+ function p(p) {
22
+ let { cubes: m, drizzle: h, schema: g, extractSecurityContext: _, engineType: v, cors: y, basePath: b = "/cubejs-api/v1", jsonLimit: x = "10mb", cache: S, mcp: C = { enabled: !0 }, agent: w } = p;
23
+ if (!m || m.length === 0) throw Error("At least one cube must be provided in the cubes array");
24
+ let T = u();
25
+ if (y) {
12
26
  let e = {
13
- ...I,
14
- allowedHeaders: l(I.allowedHeaders)
27
+ ...y,
28
+ allowedHeaders: o(y.allowedHeaders)
15
29
  };
16
- H.use(k(e));
30
+ T.use(d(e));
17
31
  }
18
- H.use(D.json({ limit: R })), H.use(D.urlencoded({
32
+ T.use(l.json({ limit: x })), T.use(l.urlencoded({
19
33
  extended: !0,
20
- limit: R
34
+ limit: x
21
35
  }));
22
- let W = new o({
23
- drizzle: M,
24
- schema: N,
25
- engineType: F,
26
- cache: z,
27
- rlsSetup: A.rlsSetup
36
+ let E = new t({
37
+ drizzle: h,
38
+ schema: g,
39
+ engineType: v,
40
+ cache: S,
41
+ rlsSetup: p.rlsSetup
28
42
  });
29
- if (j.forEach((e) => {
30
- W.registerCube(e);
31
- }), H.post(`${L}/load`, async (e, n) => {
32
- try {
33
- let r = e.body.query || e.body, a = await U(e, n), o = W.validateQuery(r);
34
- if (!o.isValid) return n.status(400).json(t(`Query validation failed: ${o.errors.join(", ")}`, 400));
35
- let s = e.headers["x-cache-control"] === "no-cache", c = await W.executeMultiCubeQuery(r, a, { skipCache: s });
36
- n.json(i(r, c, W));
37
- } catch (e) {
38
- console.error("Query execution error:", e), n.status(500).json(t(e instanceof Error ? e.message : "Query execution failed", 500));
39
- }
40
- }), H.get(`${L}/load`, async (e, n) => {
41
- try {
42
- let r = e.query.query;
43
- if (!r) return n.status(400).json(t("Query parameter is required", 400));
44
- let a;
45
- try {
46
- a = JSON.parse(r);
47
- } catch {
48
- return n.status(400).json(t("Invalid JSON in query parameter", 400));
49
- }
50
- let o = await U(e, n), s = W.validateQuery(a);
51
- if (!s.isValid) return n.status(400).json(t(`Query validation failed: ${s.errors.join(", ")}`, 400));
52
- let c = e.headers["x-cache-control"] === "no-cache", l = await W.executeMultiCubeQuery(a, o, { skipCache: c });
53
- n.json(i(a, l, W));
54
- } catch (e) {
55
- console.error("Query execution error:", e), n.status(500).json(t(e instanceof Error ? e.message : "Query execution failed", 500));
56
- }
57
- }), H.post(`${L}/batch`, async (e, r) => {
58
- try {
59
- let { queries: i } = e.body;
60
- if (!i || !Array.isArray(i)) return r.status(400).json(t("Request body must contain a \"queries\" array", 400));
61
- if (i.length === 0) return r.status(400).json(t("Queries array cannot be empty", 400));
62
- let a = await n(i, await U(e, r), W, { skipCache: e.headers["x-cache-control"] === "no-cache" });
63
- r.json(a);
64
- } catch (e) {
65
- console.error("Batch execution error:", e), r.status(500).json(t(e instanceof Error ? e.message : "Batch execution failed", 500));
66
- }
67
- }), H.get(`${L}/meta`, (n, r) => {
68
- try {
69
- let t = W.getMetadata();
70
- r.json(e(t));
71
- } catch (e) {
72
- console.error("Metadata error:", e), r.status(500).json(t(e instanceof Error ? e.message : "Failed to fetch metadata", 500));
73
- }
74
- }), H.post(`${L}/sql`, async (e, n) => {
75
- try {
76
- let i = e.body, a = await U(e, n), o = W.validateQuery(i);
77
- if (!o.isValid) return n.status(400).json(t(`Query validation failed: ${o.errors.join(", ")}`, 400));
78
- let s = i.measures?.[0] || i.dimensions?.[0];
79
- if (!s) return n.status(400).json(t("No measures or dimensions specified", 400));
80
- let c = s.split(".")[0], l = await W.generateSQL(c, i, a);
81
- n.json(r(i, l));
82
- } catch (e) {
83
- console.error("SQL generation error:", String(e).replace(/\n|\r/g, "")), n.status(500).json(t(e instanceof Error ? e.message : "SQL generation failed", 500));
84
- }
85
- }), H.get(`${L}/sql`, async (e, n) => {
86
- try {
87
- let i = e.query.query;
88
- if (!i) return n.status(400).json(t("Query parameter is required", 400));
89
- let a = JSON.parse(i), o = await U(e, n), s = W.validateQuery(a);
90
- if (!s.isValid) return n.status(400).json(t(`Query validation failed: ${s.errors.join(", ")}`, 400));
91
- let c = a.measures?.[0] || a.dimensions?.[0];
92
- if (!c) return n.status(400).json(t("No measures or dimensions specified", 400));
93
- let l = c.split(".")[0], u = await W.generateSQL(l, a, o);
94
- n.json(r(a, u));
95
- } catch (e) {
96
- console.error("SQL generation error:", String(e).replace(/\n|\r/g, "")), n.status(500).json(t(e instanceof Error ? e.message : "SQL generation failed", 500));
97
- }
98
- }), H.post(`${L}/dry-run`, async (e, t) => {
99
- try {
100
- let n = await a(e.body.query || e.body, await U(e, t), W);
101
- t.json(n);
102
- } catch (e) {
103
- console.error("Dry-run error:", e), t.status(400).json({
104
- error: e instanceof Error ? e.message : "Dry-run validation failed",
105
- valid: !1
106
- });
107
- }
108
- }), H.get(`${L}/dry-run`, async (e, t) => {
109
- try {
110
- let n = e.query.query;
111
- if (!n) return t.status(400).json({
112
- error: "Query parameter is required",
113
- valid: !1
114
- });
115
- let r = await a(JSON.parse(n), await U(e, t), W);
116
- t.json(r);
117
- } catch (e) {
118
- console.error("Dry-run error:", e), t.status(400).json({
119
- error: e instanceof Error ? e.message : "Dry-run validation failed",
120
- valid: !1
121
- });
122
- }
123
- }), H.post(`${L}/explain`, async (e, t) => {
124
- try {
125
- let n = e.body.query || e.body, r = e.body.options || {}, i = await U(e, t), a = W.validateQuery(n);
126
- if (!a.isValid) return t.status(400).json({ error: `Query validation failed: ${a.errors.join(", ")}` });
127
- let o = await W.explainQuery(n, i, r);
128
- t.json(o);
129
- } catch (e) {
130
- console.error("Explain error:", e), t.status(500).json({ error: e instanceof Error ? e.message : "Explain query failed" });
131
- }
132
- }), V && H.post(`${L}/agent/chat`, async (e, t) => {
43
+ m.forEach((e) => {
44
+ E.registerCube(e);
45
+ });
46
+ let D = c({
47
+ semanticLayer: E,
48
+ onError: (e) => console.error("Query execution error:", e),
49
+ mcp: C
50
+ }), O = (e, t) => () => _(e, t);
51
+ if (T.post(`${b}/load`, async (e, t) => {
52
+ await D.handleLoadPost(f(e, t), O(e, t));
53
+ }), T.get(`${b}/load`, async (e, t) => {
54
+ await D.handleLoadGet(f(e, t), O(e, t));
55
+ }), T.post(`${b}/batch`, async (e, t) => {
56
+ await D.handleBatchPost(f(e, t), O(e, t));
57
+ }), T.get(`${b}/meta`, (e, t) => {
58
+ D.handleMetaGet(f(e, t));
59
+ }), T.post(`${b}/sql`, async (e, t) => {
60
+ await D.handleSqlPost(f(e, t), O(e, t));
61
+ }), T.get(`${b}/sql`, async (e, t) => {
62
+ await D.handleSqlGet(f(e, t), O(e, t));
63
+ }), T.post(`${b}/dry-run`, async (e, t) => {
64
+ await D.handleDryRunPost(f(e, t), O(e, t));
65
+ }), T.get(`${b}/dry-run`, async (e, t) => {
66
+ await D.handleDryRunGet(f(e, t), O(e, t));
67
+ }), T.post(`${b}/explain`, async (e, t) => {
68
+ await D.handleExplainPost(f(e, t), O(e, t));
69
+ }), w && T.post(`${b}/agent/chat`, async (e, t) => {
133
70
  try {
134
- let { handleAgentChat: n } = await import("../handler-CtaSua-i.js"), { message: r, sessionId: i, history: a } = e.body;
71
+ let { handleAgentChat: n } = await import("../handler-u8FyzPBT.js"), { message: r, sessionId: i, history: a } = e.body;
135
72
  if (!r || typeof r != "string") return t.status(400).json({ error: "message is required and must be a string" });
136
- let o = (V.apiKey || "").trim();
137
- if (V.allowClientApiKey) {
73
+ let o = (w.apiKey || "").trim();
74
+ if (w.allowClientApiKey) {
138
75
  let t = e.headers["x-agent-api-key"];
139
76
  t && (o = t.trim());
140
77
  }
141
78
  if (!o) return t.status(401).json({ error: "No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header." });
142
- let s = V.allowClientApiKey ? e.headers["x-agent-provider"] : void 0, c = V.allowClientApiKey ? e.headers["x-agent-model"] : void 0, l = V.allowClientApiKey ? e.headers["x-agent-provider-endpoint"] : void 0, u = await U(e, t), d = V.buildSystemContext?.(u);
79
+ let c = w.allowClientApiKey ? e.headers["x-agent-provider"] : void 0, l = w.allowClientApiKey ? e.headers["x-agent-model"] : void 0, u = w.allowClientApiKey ? e.headers["x-agent-provider-endpoint"] : void 0, d = s(await _(e, t), (t) => e.get(t)), f = w.buildSystemContext?.(d);
143
80
  t.writeHead(200, {
144
81
  "Content-Type": "text/event-stream",
145
82
  "Cache-Control": "no-cache",
@@ -150,14 +87,14 @@ function A(A) {
150
87
  message: r,
151
88
  sessionId: i,
152
89
  history: a,
153
- semanticLayer: W,
154
- securityContext: u,
155
- agentConfig: V,
90
+ semanticLayer: E,
91
+ securityContext: d,
92
+ agentConfig: w,
156
93
  apiKey: o,
157
- systemContext: d,
158
- providerOverride: s,
159
- modelOverride: c,
160
- baseURLOverride: l
94
+ systemContext: f,
95
+ providerOverride: c,
96
+ modelOverride: l,
97
+ baseURLOverride: u
161
98
  });
162
99
  for await (let n of e) t.write(`data: ${JSON.stringify(n)}\n\n`);
163
100
  } catch (e) {
@@ -172,81 +109,36 @@ function A(A) {
172
109
  } catch (e) {
173
110
  console.error("Agent chat error:", e), t.headersSent || t.status(500).json({ error: e instanceof Error ? e.message : "Agent chat failed" });
174
111
  }
175
- }), B.enabled !== !1) {
176
- let e = x(W, B.resources), t = E(B.prompts), n = w(B.instructions), r = B.basePath ?? "/mcp";
177
- H.post(`${r}`, async (r, i) => {
178
- if (B.resourceMetadataUrl && !C(r.headers.authorization)) return i.setHeader("WWW-Authenticate", h(B.resourceMetadataUrl)), i.status(401).json({ error: "Bearer token required" });
179
- let a = d(r.headers.origin, B.allowedOrigins ? { allowedOrigins: B.allowedOrigins } : {});
180
- if (!a.valid) return i.status(403).json(v(null, -32600, a.reason));
181
- let o = r.headers.accept;
182
- if (!T(o)) return i.status(400).json(v(null, -32600, "Accept header must include both application/json and text/event-stream"));
183
- let s = _(r.headers);
184
- if (!s.ok) return i.status(426).json({
185
- error: "Unsupported MCP protocol version",
186
- supported: s.supported
187
- });
188
- let c = g(r.body);
189
- if (!c) return i.status(400).json(v(null, -32600, "Invalid JSON-RPC 2.0 request"));
190
- let l = u(o), x = c.method === "initialize";
191
- try {
192
- let a = await y(c.method, c.params, {
193
- semanticLayer: W,
194
- extractSecurityContext: (e, t) => U(e, t),
195
- rawRequest: r,
196
- rawResponse: i,
197
- negotiatedProtocol: s.negotiated,
198
- resources: e,
199
- prompts: t,
200
- instructions: n,
201
- appEnabled: !!B.app,
202
- appConfig: typeof B.app == "object" ? B.app : void 0,
203
- serverName: B.serverName
204
- });
205
- if (b(c)) return i.status(202).end();
206
- let o = x && a && typeof a == "object" && "sessionId" in a ? a.sessionId : void 0;
207
- o && i.setHeader(S, o);
208
- let u = p(c.id ?? null, a);
209
- if (l) {
210
- let e = f();
211
- return i.status(200), i.setHeader("Content-Type", "text/event-stream"), i.setHeader("Cache-Control", "no-cache"), i.setHeader("Connection", "keep-alive"), i.write(`id: ${e}\n\n`), i.write(m(u, e)), i.end();
212
- }
213
- return i.json(u);
214
- } catch (e) {
215
- if (b(c)) return console.error("MCP notification processing error:", String(e).replace(/\n|\r/g, "")), i.status(202).end();
216
- console.error("MCP RPC error:", String(e).replace(/\n|\r/g, ""));
217
- let t = e?.code ?? -32603, n = e?.data, r = e.message || "MCP request failed", a = v(c.id ?? null, t, r, n);
218
- if (l) {
219
- let e = f();
220
- return i.status(200), i.setHeader("Content-Type", "text/event-stream"), i.setHeader("Cache-Control", "no-cache"), i.setHeader("Connection", "keep-alive"), i.write(`id: ${e}\n\n`), i.write(m(a, e)), i.end();
221
- }
222
- return i.status(200).json(a);
223
- }
224
- }), H.get(`${r}`, async (e, t) => {
225
- if (B.resourceMetadataUrl && !C(e.headers.authorization)) return t.setHeader("WWW-Authenticate", h(B.resourceMetadataUrl)), t.status(401).json({ error: "Bearer token required" });
226
- let n = f();
227
- t.status(200), t.setHeader("Content-Type", "text/event-stream"), t.setHeader("Cache-Control", "no-cache"), t.setHeader("Connection", "keep-alive"), t.write(m({
112
+ }), C.enabled !== !1) {
113
+ let e = C.basePath ?? "/mcp";
114
+ T.post(`${e}`, async (e, t) => {
115
+ await D.handleMcpPost(f(e, t), O(e, t));
116
+ }), T.get(`${e}`, async (e, t) => {
117
+ if (C.resourceMetadataUrl && !a(e.headers.authorization)) return t.setHeader("WWW-Authenticate", i(C.resourceMetadataUrl)), t.status(401).json({ error: "Bearer token required" });
118
+ let o = n();
119
+ t.status(200), t.setHeader("Content-Type", "text/event-stream"), t.setHeader("Cache-Control", "no-cache"), t.setHeader("Connection", "keep-alive"), t.write(r({
228
120
  jsonrpc: "2.0",
229
121
  method: "mcp/ready",
230
122
  params: { protocol: "streamable-http" }
231
- }, n, 15e3));
232
- let r = setInterval(() => {
123
+ }, o, 15e3));
124
+ let s = setInterval(() => {
233
125
  t.write(": keep-alive\n\n");
234
126
  }, 15e3);
235
127
  e.on("close", () => {
236
- clearInterval(r);
128
+ clearInterval(s);
237
129
  });
238
- }), H.delete(`${r}`, (e, t) => B.resourceMetadataUrl && !C(e.headers.authorization) ? (t.setHeader("WWW-Authenticate", h(B.resourceMetadataUrl)), t.status(401).json({ error: "Bearer token required" })) : t.status(405).json({ error: "Session termination not supported" }));
130
+ }), T.delete(`${e}`, (e, t) => C.resourceMetadataUrl && !a(e.headers.authorization) ? (t.setHeader("WWW-Authenticate", i(C.resourceMetadataUrl)), t.status(401).json({ error: "Bearer token required" })) : t.status(405).json({ error: "Session termination not supported" }));
239
131
  }
240
- return H.use((e, n, r, i) => {
241
- console.error("Express adapter error:", e), r.headersSent || r.status(500).json(t(e, 500));
242
- }), H;
132
+ return T.use((t, n, r, i) => {
133
+ console.error("Express adapter error:", t), r.headersSent || r.status(500).json(e(t, 500));
134
+ }), T;
243
135
  }
244
- function j(e, t) {
245
- let n = A(t);
136
+ function m(e, t) {
137
+ let n = p(t);
246
138
  return e.use("/", n), e;
247
139
  }
248
- function M(e) {
249
- return j(D(), e);
140
+ function h(e) {
141
+ return m(l(), e);
250
142
  }
251
143
  //#endregion
252
- export { M as createCubeApp, A as createCubeRouter, j as mountCubeRoutes };
144
+ export { h as createCubeApp, p as createCubeRouter, m as mountCubeRoutes };
@@ -1,3 +1,3 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-_whV4fXL.cjs"),t=require("../locale-ZLUUNUxr.cjs"),n=require("../mcp-transport-B7ddET3M.cjs");var r=function(r,i,a){let{cubes:o,drizzle:s,schema:c,extractSecurityContext:l,engineType:u,cors:d,basePath:f=`/cubejs-api/v1`,bodyLimit:p=10485760,cache:m,mcp:h={enabled:!0},agent:g}=i;if(!o||o.length===0)return a(Error(`At least one cube must be provided in the cubes array`));let _=async e=>t.r(await l(e),t.n(t=>e.headers[t.toLowerCase()]));if(d){let e={...d,allowedHeaders:t.t(d.allowedHeaders)};r.register(import(`@fastify/cors`),e)}r.addHook(`onRequest`,async(e,t)=>{e.method===`POST`&&(e.body=void 0)});let v=new t.i({drizzle:s,schema:c,engineType:u,cache:m,rlsSetup:i.rlsSetup});if(o.forEach(e=>{v.registerCube(e)}),r.post(`${f}/load`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(t,n)=>{try{let r=t.body,i=r.query||r,a=await _(t),o=v.validateQuery(i);if(!o.isValid)return n.status(400).send(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=t.headers[`x-cache-control`]===`no-cache`;return e.r(i,await v.executeMultiCubeQuery(i,a,{skipCache:s}),v)}catch(r){return t.log.error(r,`Query execution error`),n.status(500).send(e.i(r instanceof Error?r.message:`Query execution failed`,500))}}),r.get(`${f}/load`,{schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}},async(t,n)=>{try{let{query:r}=t.query,i;try{i=JSON.parse(r)}catch{return n.status(400).send(e.i(`Invalid JSON in query parameter`,400))}let a=await _(t),o=v.validateQuery(i);if(!o.isValid)return n.status(400).send(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=t.headers[`x-cache-control`]===`no-cache`,c=await v.executeMultiCubeQuery(i,a,{skipCache:s});return e.r(i,c,v)}catch(r){return t.log.error(r,`Query execution error`),n.status(500).send(e.i(r instanceof Error?r.message:`Query execution failed`,500))}}),r.post(`${f}/batch`,{bodyLimit:p,schema:{body:{type:`object`,required:[`queries`],properties:{queries:{type:`array`,items:{type:`object`}}}}}},async(t,n)=>{try{let{queries:r}=t.body;return!r||!Array.isArray(r)?n.status(400).send(e.i(`Request body must contain a "queries" array`,400)):r.length===0?n.status(400).send(e.i(`Queries array cannot be empty`,400)):await e.l(r,await _(t),v,{skipCache:t.headers[`x-cache-control`]===`no-cache`})}catch(r){return t.log.error(r,`Batch execution error`),n.status(500).send(e.i(r instanceof Error?r.message:`Batch execution failed`,500))}}),r.get(`${f}/meta`,async(t,n)=>{try{return e.a(v.getMetadata())}catch(r){return t.log.error(r,`Metadata error`),n.status(500).send(e.i(r instanceof Error?r.message:`Failed to fetch metadata`,500))}}),r.post(`${f}/sql`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(t,n)=>{try{let r=t.body,i=await _(t),a=v.validateQuery(r);if(!a.isValid)return n.status(400).send(e.i(`Query validation failed: ${a.errors.join(`, `)}`,400));let o=r.measures?.[0]||r.dimensions?.[0];if(!o)return n.status(400).send(e.i(`No measures or dimensions specified`,400));let s=o.split(`.`)[0];return e.o(r,await v.generateSQL(s,r,i))}catch(r){return t.log.error({err:String(r).replace(/\n|\r/g,``)},`SQL generation error`),n.status(500).send(e.i(r instanceof Error?r.message:`SQL generation failed`,500))}}),r.get(`${f}/sql`,{schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}},async(t,n)=>{try{let{query:r}=t.query,i=JSON.parse(r),a=await _(t),o=v.validateQuery(i);if(!o.isValid)return n.status(400).send(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=i.measures?.[0]||i.dimensions?.[0];if(!s)return n.status(400).send(e.i(`No measures or dimensions specified`,400));let c=s.split(`.`)[0];return e.o(i,await v.generateSQL(c,i,a))}catch(r){return t.log.error({err:String(r).replace(/\n|\r/g,``)},`SQL generation error`),n.status(500).send(e.i(r instanceof Error?r.message:`SQL generation failed`,500))}}),r.post(`${f}/dry-run`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(t,n)=>{try{let n=t.body;return await e.u(n.query||n,await _(t),v)}catch(e){return t.log.error(e,`Dry-run error`),n.status(400).send({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}),r.get(`${f}/dry-run`,{schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}},async(t,n)=>{try{let{query:n}=t.query;return await e.u(JSON.parse(n),await _(t),v)}catch(e){return t.log.error(e,`Dry-run error`),n.status(400).send({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}),r.post(`${f}/explain`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(e,t)=>{try{let n=e.body,r=n.query||n,i=n.options||{},a=await _(e),o=v.validateQuery(r);return o.isValid?await v.explainQuery(r,a,i):t.status(400).send({error:`Query validation failed: ${o.errors.join(`, `)}`})}catch(n){return e.log.error(n,`Explain error`),t.status(500).send({error:n instanceof Error?n.message:`Explain query failed`})}}),g&&r.post(`${f}/agent/chat`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(e,t)=>{try{let{handleAgentChat:n}=await Promise.resolve().then(()=>require("../handler-OwxSBJH8.cjs")),{message:r,sessionId:i,history:a}=e.body;if(!r||typeof r!=`string`)return t.status(400).send({error:`message is required and must be a string`});let o=(g.apiKey||``).trim();if(g.allowClientApiKey){let t=e.headers[`x-agent-api-key`];t&&(o=t.trim())}if(!o)return t.status(401).send({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`});let s=g.allowClientApiKey?e.headers[`x-agent-provider`]:void 0,c=g.allowClientApiKey?e.headers[`x-agent-model`]:void 0,l=g.allowClientApiKey?e.headers[`x-agent-provider-endpoint`]:void 0,u=await _(e),d=g.buildSystemContext?.(u);t.raw.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});try{let e=n({message:r,sessionId:i,history:a,semanticLayer:v,securityContext:u,agentConfig:g,apiKey:o,systemContext:d,providerOverride:s,modelOverride:c,baseURLOverride:l});for await(let n of e)t.raw.write(`data: ${JSON.stringify(n)}\n\n`)}catch(e){let n={type:`error`,data:{message:e instanceof Error?e.message:`Stream failed`}};t.raw.write(`data: ${JSON.stringify(n)}\n\n`)}finally{t.raw.end()}}catch(n){if(e.log.error(n,`Agent chat error`),!t.raw.headersSent)return t.status(500).send({error:n instanceof Error?n.message:`Agent chat failed`})}}),h.enabled!==!1){let e=n.o(v,h.resources),t=n.y(h.prompts),i=n.v(h.instructions),a=h.basePath??`/mcp`;r.post(`${a}`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(r,a)=>{if(h.resourceMetadataUrl&&!n.u(r.headers.authorization))return a.header(`WWW-Authenticate`,n.c(h.resourceMetadataUrl)),a.status(401).send({error:`Bearer token required`});let o=n.S(r.headers.origin,h.allowedOrigins?{allowedOrigins:h.allowedOrigins}:{});if(!o.valid)return a.status(403).send(n.i(null,-32600,o.reason));let s=r.headers.accept;if(!n.x(s))return a.status(400).send(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`));let c=n.h(r.headers);if(!c.ok)return a.status(426).send({error:`Unsupported MCP protocol version`,supported:c.supported});let l=n.g(r.body);if(!l)return a.status(400).send(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`));let u=n.C(s),d=l.method===`initialize`;try{let o=await n.l(l.method,l.params,{semanticLayer:v,extractSecurityContext:(e,t)=>_(e),rawRequest:r,rawResponse:a,negotiatedProtocol:c.negotiated,resources:e,prompts:t,instructions:i,appEnabled:!!h.app,appConfig:typeof h.app==`object`?h.app:void 0,serverName:h.serverName});if(n.m(l))return a.status(202).send();let s=d&&o&&typeof o==`object`&&`sessionId`in o?o.sessionId:void 0;s&&a.header(n.r,s);let f=n.a(l.id??null,o);if(u){let e=n._();a.header(`Content-Type`,`text/event-stream`).header(`Cache-Control`,`no-cache`).header(`Connection`,`keep-alive`).send(`id: ${e}\n\n${n.b(f,e)}`);return}return a.send(f)}catch(e){if(n.m(l))return r.log.error({err:String(e).replace(/\n|\r/g,``)},`MCP notification processing error`),a.status(202).send();r.log.error({err:String(e).replace(/\n|\r/g,``)},`MCP RPC error`);let t=e?.code??-32603,i=e?.data,o=e.message||`MCP request failed`,s=n.i(l.id??null,t,o,i);if(u){let e=n._();a.header(`Content-Type`,`text/event-stream`).header(`Cache-Control`,`no-cache`).header(`Connection`,`keep-alive`).send(`id: ${e}\n\n${n.b(s,e)}`);return}return a.send(s)}}),r.get(`${a}`,async(e,t)=>{if(h.resourceMetadataUrl&&!n.u(e.headers.authorization))return t.header(`WWW-Authenticate`,n.c(h.resourceMetadataUrl)),t.status(401).send({error:`Bearer token required`});let r=n._();t.raw.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}),t.raw.write(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},r,15e3));let i=setInterval(()=>{t.raw.write(`: keep-alive
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-_whV4fXL.cjs"),t=require("../compiler-DyyBaLry.cjs"),n=require("../mcp-transport-CNIPoe1i.cjs"),r=require("../core-F1pCQPde.cjs");function i(e,t){let n=e.headers[t.toLowerCase()];return Array.isArray(n)?n[0]:n}function a(e,t){return{getHeader:t=>i(e,t),getBody:async()=>e.body,getQueryParam:t=>e.query?.[t],send:(e,n)=>t.status(e).send(n),setHeader:(e,n)=>{t.header(e,n)},sendEmpty:e=>t.status(e).send(),sendSse:(e,n)=>(t.header(`Content-Type`,`text/event-stream`),t.header(`Cache-Control`,`no-cache`),t.header(`Connection`,`keep-alive`),t.status(e).send(n))}}var o=function(o,s,c){let{cubes:l,drizzle:u,schema:d,extractSecurityContext:f,engineType:p,cors:m,basePath:h=`/cubejs-api/v1`,bodyLimit:g=10485760,cache:_,mcp:v={enabled:!0},agent:y}=s;if(!l||l.length===0)return c(Error(`At least one cube must be provided in the cubes array`));if(m){let e={...m,allowedHeaders:r.i(m.allowedHeaders)};o.register(import(`@fastify/cors`),e)}o.addHook(`onRequest`,async(e,t)=>{e.method===`POST`&&(e.body=void 0)});let b=new t.t({drizzle:u,schema:d,engineType:p,cache:_,rlsSetup:s.rlsSetup});l.forEach(e=>{b.registerCube(e)});let x=r.t({semanticLayer:b,onError:e=>o.log.error(e,`Query execution error`),mcp:v}),S=e=>()=>f(e),C={bodyLimit:g,schema:{body:{type:`object`,additionalProperties:!0}}},w={schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}};if(o.post(`${h}/load`,C,(e,t)=>x.handleLoadPost(a(e,t),S(e))),o.get(`${h}/load`,w,(e,t)=>x.handleLoadGet(a(e,t),S(e))),o.post(`${h}/batch`,{bodyLimit:g,schema:{body:{type:`object`,required:[`queries`],properties:{queries:{type:`array`,items:{type:`object`}}}}}},(e,t)=>x.handleBatchPost(a(e,t),S(e))),o.get(`${h}/meta`,(e,t)=>x.handleMetaGet(a(e,t))),o.post(`${h}/sql`,C,(e,t)=>x.handleSqlPost(a(e,t),S(e))),o.get(`${h}/sql`,w,(e,t)=>x.handleSqlGet(a(e,t),S(e))),o.post(`${h}/dry-run`,C,(e,t)=>x.handleDryRunPost(a(e,t),S(e))),o.get(`${h}/dry-run`,w,(e,t)=>x.handleDryRunGet(a(e,t),S(e))),o.post(`${h}/explain`,C,(e,t)=>x.handleExplainPost(a(e,t),S(e))),y&&o.post(`${h}/agent/chat`,{bodyLimit:g,schema:{body:{type:`object`,additionalProperties:!0}}},async(e,t)=>{try{let{handleAgentChat:n}=await Promise.resolve().then(()=>require("../handler-DRZb2ip6.cjs")),{message:a,sessionId:o,history:s}=e.body;if(!a||typeof a!=`string`)return t.status(400).send({error:`message is required and must be a string`});let c=(y.apiKey||``).trim();if(y.allowClientApiKey){let t=i(e,`x-agent-api-key`);t&&(c=t.trim())}if(!c)return t.status(401).send({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`});let l=y.allowClientApiKey?i(e,`x-agent-provider`):void 0,u=y.allowClientApiKey?i(e,`x-agent-model`):void 0,d=y.allowClientApiKey?i(e,`x-agent-provider-endpoint`):void 0,p=r.r(await f(e),t=>i(e,t)),m=y.buildSystemContext?.(p);t.raw.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});try{let e=n({message:a,sessionId:o,history:s,semanticLayer:b,securityContext:p,agentConfig:y,apiKey:c,systemContext:m,providerOverride:l,modelOverride:u,baseURLOverride:d});for await(let n of e)t.raw.write(`data: ${JSON.stringify(n)}\n\n`)}catch(e){let n={type:`error`,data:{message:e instanceof Error?e.message:`Stream failed`}};t.raw.write(`data: ${JSON.stringify(n)}\n\n`)}finally{t.raw.end()}}catch(n){if(e.log.error(n,`Agent chat error`),!t.raw.headersSent)return t.status(500).send({error:n instanceof Error?n.message:`Agent chat failed`})}}),v.enabled!==!1){let e=v.basePath??`/mcp`;o.post(`${e}`,{bodyLimit:g,schema:{body:{type:`object`,additionalProperties:!0}}},(e,t)=>x.handleMcpPost(a(e,t),S(e))),o.get(`${e}`,async(e,t)=>{if(v.resourceMetadataUrl&&!n.u(e.headers.authorization))return t.header(`WWW-Authenticate`,n.c(v.resourceMetadataUrl)),t.status(401).send({error:`Bearer token required`});let r=n._();t.raw.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}),t.raw.write(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},r,15e3));let i=setInterval(()=>{t.raw.write(`: keep-alive
2
2
 
3
- `)},15e3);e.raw.on(`close`,()=>{clearInterval(i)})}),r.delete(`${a}`,async(e,t)=>h.resourceMetadataUrl&&!n.u(e.headers.authorization)?(t.header(`WWW-Authenticate`,n.c(h.resourceMetadataUrl)),t.status(401).send({error:`Bearer token required`})):t.status(405).send({error:`Session termination not supported`}))}r.setErrorHandler(async(t,n,r)=>(n.log.error(t,`Fastify cube adapter error`),r.statusCode<400&&r.status(500),e.i(t instanceof Error?t:String(t),r.statusCode))),a()};async function i(e,t){await e.register(r,t)}function a(e){let t=require("fastify")({logger:!0});return t.register(r,e),t}exports.createCubeApp=a,exports.cubePlugin=r,exports.registerCubeRoutes=i;
3
+ `)},15e3);e.raw.on(`close`,()=>{clearInterval(i)})}),o.delete(`${e}`,async(e,t)=>v.resourceMetadataUrl&&!n.u(e.headers.authorization)?(t.header(`WWW-Authenticate`,n.c(v.resourceMetadataUrl)),t.status(401).send({error:`Bearer token required`})):t.status(405).send({error:`Session termination not supported`}))}o.setErrorHandler(async(t,n,r)=>(n.log.error(t,`Fastify cube adapter error`),r.statusCode<400&&r.status(500),e.i(t instanceof Error?t:String(t),r.statusCode))),c()};async function s(e,t){await e.register(o,t)}function c(e){let t=require("fastify")({logger:!0});return t.register(o,e),t}exports.createCubeApp=c,exports.cubePlugin=o,exports.registerCubeRoutes=s;