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