drizzle-cube 0.4.53 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/dist/adapters/express/index.cjs +2 -2
  2. package/dist/adapters/express/index.js +92 -83
  3. package/dist/adapters/fastify/index.cjs +2 -2
  4. package/dist/adapters/fastify/index.js +126 -116
  5. package/dist/adapters/{handler-RItnSaEl.js → handler-3LGcjLtr.js} +617 -612
  6. package/dist/adapters/handler-BzzbVpcl.cjs +25 -0
  7. package/dist/adapters/hono/index.cjs +1 -1
  8. package/dist/adapters/hono/index.js +94 -86
  9. package/dist/adapters/{compiler-S6KHiOY6.js → locale-DTnJrxm1.js} +1700 -1563
  10. package/dist/adapters/locale-DueXjqMh.cjs +198 -0
  11. package/dist/adapters/locale.d.ts +8 -0
  12. package/dist/adapters/mcp-tools.cjs +1 -1
  13. package/dist/adapters/mcp-tools.js +14 -14
  14. package/dist/adapters/mcp-transport-45SiFcCH.cjs +39 -0
  15. package/dist/adapters/mcp-transport-Bxpc4mRy.js +553 -0
  16. package/dist/adapters/mcp-transport.d.ts +11 -0
  17. package/dist/adapters/nextjs/index.cjs +1 -1
  18. package/dist/adapters/nextjs/index.js +138 -122
  19. package/dist/adapters/utils-DNrj-ryp.cjs +17 -0
  20. package/dist/adapters/{utils-IH1ePsBd.js → utils-DOg9oGdt.js} +2341 -819
  21. package/dist/adapters/utils.cjs +1 -1
  22. package/dist/adapters/utils.d.ts +7 -0
  23. package/dist/adapters/utils.js +1 -1
  24. package/dist/client/charts.js +12 -12
  25. package/dist/client/chunks/{DashboardEditModal-BTdV528l.js → DashboardEditModal-cSSIAZGy.js} +1968 -1973
  26. package/dist/client/chunks/DashboardEditModal-cSSIAZGy.js.map +1 -0
  27. package/dist/client/chunks/{FieldSearchModal-D75vy4Wb.js → FieldSearchModal-CZNo4pNK.js} +550 -536
  28. package/dist/client/chunks/FieldSearchModal-CZNo4pNK.js.map +1 -0
  29. package/dist/client/chunks/KpiDelta-Dll_eCV1.js +2 -0
  30. package/dist/client/chunks/KpiNumber-BPlR92hI.js +2 -0
  31. package/dist/client/chunks/KpiText-BIxq7Jso.js +2 -0
  32. package/dist/client/chunks/{RetentionCombinedChart-DIhK5pD8.js → RetentionCombinedChart-BD8tGeM_.js} +96 -96
  33. package/dist/client/chunks/RetentionCombinedChart-BD8tGeM_.js.map +1 -0
  34. package/dist/client/chunks/{RetentionHeatmap-CyREolyP.js → RetentionHeatmap-B_5sewwi.js} +77 -77
  35. package/dist/client/chunks/RetentionHeatmap-B_5sewwi.js.map +1 -0
  36. package/dist/client/chunks/SchemaVisualization-CCICjhvv.js +2 -0
  37. package/dist/client/chunks/SchemaVisualizationLazy-DraGsMx6.js +2 -0
  38. package/dist/client/chunks/af-ZA-xDmO5F0s.js +1431 -0
  39. package/dist/client/chunks/af-ZA-xDmO5F0s.js.map +1 -0
  40. package/dist/client/chunks/{analysis-builder-C1CJ0c7L.js → analysis-builder-BeVZhiQ5.js} +1519 -1507
  41. package/dist/client/chunks/analysis-builder-BeVZhiQ5.js.map +1 -0
  42. package/dist/client/chunks/{analysis-builder-shared-rkjJfWLT.js → analysis-builder-shared-BWc7ZZnG.js} +925 -954
  43. package/dist/client/chunks/analysis-builder-shared-BWc7ZZnG.js.map +1 -0
  44. package/dist/client/chunks/chart-activity-grid-CWT0gLv4.js +2376 -0
  45. package/dist/client/chunks/chart-activity-grid-CWT0gLv4.js.map +1 -0
  46. package/dist/client/chunks/{chart-area-BwYaflNk.js → chart-area-D63kG8OT.js} +157 -157
  47. package/dist/client/chunks/chart-area-D63kG8OT.js.map +1 -0
  48. package/dist/client/chunks/{chart-bar-BiENfFgE.js → chart-bar-BEfsCLjl.js} +78 -78
  49. package/dist/client/chunks/chart-bar-BEfsCLjl.js.map +1 -0
  50. package/dist/client/chunks/{chart-box-plot-BJF1tBXC.js → chart-box-plot-o-h9MRX5.js} +111 -114
  51. package/dist/client/chunks/chart-box-plot-o-h9MRX5.js.map +1 -0
  52. package/dist/client/chunks/{chart-bubble-DQQhGVDJ.js → chart-bubble-CMDp4Pfm.js} +121 -121
  53. package/dist/client/chunks/chart-bubble-CMDp4Pfm.js.map +1 -0
  54. package/dist/client/chunks/chart-candlestick-WyANJ0Ky.js +303 -0
  55. package/dist/client/chunks/chart-candlestick-WyANJ0Ky.js.map +1 -0
  56. package/dist/client/chunks/chart-config-activity-grid-C-EkgYoa.js +51 -0
  57. package/dist/client/chunks/chart-config-activity-grid-C-EkgYoa.js.map +1 -0
  58. package/dist/client/chunks/chart-config-area-CMZpbIah.js +93 -0
  59. package/dist/client/chunks/chart-config-area-CMZpbIah.js.map +1 -0
  60. package/dist/client/chunks/chart-config-bar-B8_V4YLg.js +87 -0
  61. package/dist/client/chunks/chart-config-bar-B8_V4YLg.js.map +1 -0
  62. package/dist/client/chunks/chart-config-box-plot-Dwj7sEbU.js +35 -0
  63. package/dist/client/chunks/chart-config-box-plot-Dwj7sEbU.js.map +1 -0
  64. package/dist/client/chunks/chart-config-bubble-B0w0ZVp4.js +82 -0
  65. package/dist/client/chunks/chart-config-bubble-B0w0ZVp4.js.map +1 -0
  66. package/dist/client/chunks/chart-config-candlestick-Bvo3zeIn.js +72 -0
  67. package/dist/client/chunks/chart-config-candlestick-Bvo3zeIn.js.map +1 -0
  68. package/dist/client/chunks/{chart-config-data-table-Bhdx5Hem.js → chart-config-data-table-BQXSn4b_.js} +9 -9
  69. package/dist/client/chunks/chart-config-data-table-BQXSn4b_.js.map +1 -0
  70. package/dist/client/chunks/chart-config-funnel-BzEsHmjR.js +93 -0
  71. package/dist/client/chunks/chart-config-funnel-BzEsHmjR.js.map +1 -0
  72. package/dist/client/chunks/chart-config-gauge-C5ZiyZy7.js +64 -0
  73. package/dist/client/chunks/chart-config-gauge-C5ZiyZy7.js.map +1 -0
  74. package/dist/client/chunks/chart-config-heat-map-Cv8qNnVP.js +91 -0
  75. package/dist/client/chunks/chart-config-heat-map-Cv8qNnVP.js.map +1 -0
  76. package/dist/client/chunks/chart-config-kpi-delta-BraHQc2E.js +94 -0
  77. package/dist/client/chunks/chart-config-kpi-delta-BraHQc2E.js.map +1 -0
  78. package/dist/client/chunks/chart-config-kpi-number-CeCkx7mC.js +75 -0
  79. package/dist/client/chunks/chart-config-kpi-number-CeCkx7mC.js.map +1 -0
  80. package/dist/client/chunks/chart-config-kpi-text-CImM3SvH.js +47 -0
  81. package/dist/client/chunks/chart-config-kpi-text-CImM3SvH.js.map +1 -0
  82. package/dist/client/chunks/chart-config-line-BVKapAQK.js +104 -0
  83. package/dist/client/chunks/chart-config-line-BVKapAQK.js.map +1 -0
  84. package/dist/client/chunks/chart-config-markdown-C-_g_8te.js +117 -0
  85. package/dist/client/chunks/chart-config-markdown-C-_g_8te.js.map +1 -0
  86. package/dist/client/chunks/chart-config-measure-profile-KTVV1gO3.js +82 -0
  87. package/dist/client/chunks/chart-config-measure-profile-KTVV1gO3.js.map +1 -0
  88. package/dist/client/chunks/chart-config-pie-BZxVl25X.js +68 -0
  89. package/dist/client/chunks/chart-config-pie-BZxVl25X.js.map +1 -0
  90. package/dist/client/chunks/chart-config-radar-B7FByX3t.js +49 -0
  91. package/dist/client/chunks/chart-config-radar-B7FByX3t.js.map +1 -0
  92. package/dist/client/chunks/chart-config-radial-bar-UfW_3yyX.js +38 -0
  93. package/dist/client/chunks/chart-config-radial-bar-UfW_3yyX.js.map +1 -0
  94. package/dist/client/chunks/chart-config-sankey-DGAThN9i.js +66 -0
  95. package/dist/client/chunks/chart-config-sankey-DGAThN9i.js.map +1 -0
  96. package/dist/client/chunks/chart-config-scatter-BVVJuOnt.js +61 -0
  97. package/dist/client/chunks/chart-config-scatter-BVVJuOnt.js.map +1 -0
  98. package/dist/client/chunks/chart-config-sunburst-utejM2YS.js +45 -0
  99. package/dist/client/chunks/chart-config-sunburst-utejM2YS.js.map +1 -0
  100. package/dist/client/chunks/chart-config-tree-map-IHp97OyV.js +51 -0
  101. package/dist/client/chunks/chart-config-tree-map-IHp97OyV.js.map +1 -0
  102. package/dist/client/chunks/chart-config-waterfall-BdqG1V-x.js +59 -0
  103. package/dist/client/chunks/chart-config-waterfall-BdqG1V-x.js.map +1 -0
  104. package/dist/client/chunks/{chart-data-table-2iCsn0CF.js → chart-data-table-C3Xh9jwL.js} +1083 -1086
  105. package/dist/client/chunks/chart-data-table-C3Xh9jwL.js.map +1 -0
  106. package/dist/client/chunks/{chart-funnel-poyOf7-e.js → chart-funnel-C7pgktN5.js} +132 -132
  107. package/dist/client/chunks/chart-funnel-C7pgktN5.js.map +1 -0
  108. package/dist/client/chunks/{chart-gauge-D5J4gRky.js → chart-gauge-D2r2B_AR.js} +150 -150
  109. package/dist/client/chunks/chart-gauge-D2r2B_AR.js.map +1 -0
  110. package/dist/client/chunks/{chart-heat-map-BAMVhLGG.js → chart-heat-map-Dw2yjwfO.js} +75 -80
  111. package/dist/client/chunks/chart-heat-map-Dw2yjwfO.js.map +1 -0
  112. package/dist/client/chunks/{chart-kpi-delta-KQjUIeal.js → chart-kpi-delta-CYE0S1x_.js} +117 -117
  113. package/dist/client/chunks/chart-kpi-delta-CYE0S1x_.js.map +1 -0
  114. package/dist/client/chunks/chart-kpi-number-BlZ79xHW.js +321 -0
  115. package/dist/client/chunks/chart-kpi-number-BlZ79xHW.js.map +1 -0
  116. package/dist/client/chunks/chart-kpi-text-DY1BnxPe.js +148 -0
  117. package/dist/client/chunks/chart-kpi-text-DY1BnxPe.js.map +1 -0
  118. package/dist/client/chunks/{chart-line-B5_WntY5.js → chart-line-CBsTThTv.js} +123 -123
  119. package/dist/client/chunks/chart-line-CBsTThTv.js.map +1 -0
  120. package/dist/client/chunks/chart-markdown-BWaWVkuz.js +3474 -0
  121. package/dist/client/chunks/chart-markdown-BWaWVkuz.js.map +1 -0
  122. package/dist/client/chunks/chart-measure-profile-B41qCTBG.js +179 -0
  123. package/dist/client/chunks/chart-measure-profile-B41qCTBG.js.map +1 -0
  124. package/dist/client/chunks/chart-pie-Djbu8x2v.js +172 -0
  125. package/dist/client/chunks/chart-pie-Djbu8x2v.js.map +1 -0
  126. package/dist/client/chunks/chart-radar-BsTcKV0K.js +154 -0
  127. package/dist/client/chunks/chart-radar-BsTcKV0K.js.map +1 -0
  128. package/dist/client/chunks/chart-radial-bar-Du7XNnwE.js +148 -0
  129. package/dist/client/chunks/chart-radial-bar-Du7XNnwE.js.map +1 -0
  130. package/dist/client/chunks/{chart-sankey-BOyxfG1Q.js → chart-sankey-WwkZAhLy.js} +73 -73
  131. package/dist/client/chunks/chart-sankey-WwkZAhLy.js.map +1 -0
  132. package/dist/client/chunks/chart-scatter-D8krEYsA.js +255 -0
  133. package/dist/client/chunks/chart-scatter-D8krEYsA.js.map +1 -0
  134. package/dist/client/chunks/{chart-sunburst-D9lGEOCc.js → chart-sunburst-CIDB_pTl.js} +66 -66
  135. package/dist/client/chunks/chart-sunburst-CIDB_pTl.js.map +1 -0
  136. package/dist/client/chunks/chart-tree-map-C5C2iaWM.js +298 -0
  137. package/dist/client/chunks/chart-tree-map-C5C2iaWM.js.map +1 -0
  138. package/dist/client/chunks/{chart-waterfall-BCdUx4DC.js → chart-waterfall-BGdPrJ5Y.js} +80 -80
  139. package/dist/client/chunks/chart-waterfall-BGdPrJ5Y.js.map +1 -0
  140. package/dist/client/chunks/{charts-core-C5Yokk-x.js → charts-core-BXOqaYFn.js} +92 -92
  141. package/dist/client/chunks/charts-core-BXOqaYFn.js.map +1 -0
  142. package/dist/client/chunks/en-US-5xPTdCXg.js +35 -0
  143. package/dist/client/chunks/en-US-5xPTdCXg.js.map +1 -0
  144. package/dist/client/chunks/nl-NL-vCifBijs.js +1491 -0
  145. package/dist/client/chunks/nl-NL-vCifBijs.js.map +1 -0
  146. package/dist/client/chunks/{schema-visualization-t1KiOORo.js → schema-visualization-Xp60Ff2W.js} +352 -364
  147. package/dist/client/chunks/schema-visualization-Xp60Ff2W.js.map +1 -0
  148. package/dist/client/chunks/{useDebounce-CKqkM42n.js → useDebounce-CfmUMFau.js} +85 -85
  149. package/dist/client/chunks/useDebounce-CfmUMFau.js.map +1 -0
  150. package/dist/client/chunks/{useExplainAI-DBIfYwz-.js → useExplainAI-BKGmejIj.js} +4 -4
  151. package/dist/client/chunks/{useExplainAI-DBIfYwz-.js.map → useExplainAI-BKGmejIj.js.map} +1 -1
  152. package/dist/client/chunks/{utils--qCr8Yn5.js → utils-BldkcRHv.js} +2 -2
  153. package/dist/client/chunks/{utils--qCr8Yn5.js.map → utils-BldkcRHv.js.map} +1 -1
  154. package/dist/client/chunks/{vendor-BRlsCGnK.js → vendor-ClXpIiea.js} +2 -2
  155. package/dist/client/chunks/{vendor-BRlsCGnK.js.map → vendor-ClXpIiea.js.map} +1 -1
  156. package/dist/client/components/AnalysisBuilder/types.d.ts +6 -6
  157. package/dist/client/components.js +3 -3
  158. package/dist/client/hooks/useTranslation.d.ts +21 -0
  159. package/dist/client/hooks.js +3 -3
  160. package/dist/client/icons.js +1 -1
  161. package/dist/client/index.js +493 -488
  162. package/dist/client/index.js.map +1 -1
  163. package/dist/client/providers/CubeApiProvider.d.ts +2 -1
  164. package/dist/client/providers/CubeProvider.d.ts +7 -1
  165. package/dist/client/providers/I18nProvider.d.ts +18 -0
  166. package/dist/client/providers.js +1 -1
  167. package/dist/client/schema.js +1 -1
  168. package/dist/client/shared/types.d.ts +5 -20
  169. package/dist/client/styles.css +1 -1
  170. package/dist/client/utils.js +5 -5
  171. package/dist/client-bundle-stats.html +1 -1
  172. package/dist/mcp-app/mcp-app.html +26 -24
  173. package/dist/server/index.cjs +42 -40
  174. package/dist/server/index.js +3311 -1672
  175. package/package.json +5 -2
  176. package/dist/adapters/compiler-CRgLzmSn.cjs +0 -198
  177. package/dist/adapters/handler-DumFgnNM.cjs +0 -25
  178. package/dist/adapters/mcp-transport-C6bsIOSV.js +0 -545
  179. package/dist/adapters/mcp-transport-DMhuYmFp.cjs +0 -39
  180. package/dist/adapters/utils-CyBt-as9.cjs +0 -15
  181. package/dist/client/chunks/DashboardEditModal-BTdV528l.js.map +0 -1
  182. package/dist/client/chunks/FieldSearchModal-D75vy4Wb.js.map +0 -1
  183. package/dist/client/chunks/KpiDelta-Bk8bzKYM.js +0 -2
  184. package/dist/client/chunks/KpiNumber-CKF-8e_T.js +0 -2
  185. package/dist/client/chunks/KpiText-Iz1vIvu_.js +0 -2
  186. package/dist/client/chunks/RetentionCombinedChart-DIhK5pD8.js.map +0 -1
  187. package/dist/client/chunks/RetentionHeatmap-CyREolyP.js.map +0 -1
  188. package/dist/client/chunks/SchemaVisualization-B1GUT-FM.js +0 -2
  189. package/dist/client/chunks/SchemaVisualizationLazy-DymwT34e.js +0 -2
  190. package/dist/client/chunks/analysis-builder-C1CJ0c7L.js.map +0 -1
  191. package/dist/client/chunks/analysis-builder-shared-rkjJfWLT.js.map +0 -1
  192. package/dist/client/chunks/chart-activity-grid-DLktOINm.js +0 -806
  193. package/dist/client/chunks/chart-activity-grid-DLktOINm.js.map +0 -1
  194. package/dist/client/chunks/chart-area-BwYaflNk.js.map +0 -1
  195. package/dist/client/chunks/chart-bar-BiENfFgE.js.map +0 -1
  196. package/dist/client/chunks/chart-box-plot-BJF1tBXC.js.map +0 -1
  197. package/dist/client/chunks/chart-bubble-DQQhGVDJ.js.map +0 -1
  198. package/dist/client/chunks/chart-candlestick-C2UuXbLe.js +0 -306
  199. package/dist/client/chunks/chart-candlestick-C2UuXbLe.js.map +0 -1
  200. package/dist/client/chunks/chart-config-activity-grid-DJOU3TEz.js +0 -51
  201. package/dist/client/chunks/chart-config-activity-grid-DJOU3TEz.js.map +0 -1
  202. package/dist/client/chunks/chart-config-area-CWnWVT6a.js +0 -93
  203. package/dist/client/chunks/chart-config-area-CWnWVT6a.js.map +0 -1
  204. package/dist/client/chunks/chart-config-bar-C-7Dr1Ho.js +0 -87
  205. package/dist/client/chunks/chart-config-bar-C-7Dr1Ho.js.map +0 -1
  206. package/dist/client/chunks/chart-config-box-plot-mVOwmLdu.js +0 -35
  207. package/dist/client/chunks/chart-config-box-plot-mVOwmLdu.js.map +0 -1
  208. package/dist/client/chunks/chart-config-bubble-BPE2CeiD.js +0 -82
  209. package/dist/client/chunks/chart-config-bubble-BPE2CeiD.js.map +0 -1
  210. package/dist/client/chunks/chart-config-candlestick-BSB9DRy2.js +0 -72
  211. package/dist/client/chunks/chart-config-candlestick-BSB9DRy2.js.map +0 -1
  212. package/dist/client/chunks/chart-config-data-table-Bhdx5Hem.js.map +0 -1
  213. package/dist/client/chunks/chart-config-funnel-Cl-v-bm1.js +0 -93
  214. package/dist/client/chunks/chart-config-funnel-Cl-v-bm1.js.map +0 -1
  215. package/dist/client/chunks/chart-config-gauge-CdrUTJMJ.js +0 -64
  216. package/dist/client/chunks/chart-config-gauge-CdrUTJMJ.js.map +0 -1
  217. package/dist/client/chunks/chart-config-heat-map-DGE3NzoF.js +0 -91
  218. package/dist/client/chunks/chart-config-heat-map-DGE3NzoF.js.map +0 -1
  219. package/dist/client/chunks/chart-config-kpi-delta-DMrQerUW.js +0 -94
  220. package/dist/client/chunks/chart-config-kpi-delta-DMrQerUW.js.map +0 -1
  221. package/dist/client/chunks/chart-config-kpi-number-DCytCytn.js +0 -75
  222. package/dist/client/chunks/chart-config-kpi-number-DCytCytn.js.map +0 -1
  223. package/dist/client/chunks/chart-config-kpi-text-KdKQUvHo.js +0 -47
  224. package/dist/client/chunks/chart-config-kpi-text-KdKQUvHo.js.map +0 -1
  225. package/dist/client/chunks/chart-config-line-Bl9VDAdz.js +0 -104
  226. package/dist/client/chunks/chart-config-line-Bl9VDAdz.js.map +0 -1
  227. package/dist/client/chunks/chart-config-markdown-BX26b94i.js +0 -117
  228. package/dist/client/chunks/chart-config-markdown-BX26b94i.js.map +0 -1
  229. package/dist/client/chunks/chart-config-measure-profile-DwtRhEFh.js +0 -82
  230. package/dist/client/chunks/chart-config-measure-profile-DwtRhEFh.js.map +0 -1
  231. package/dist/client/chunks/chart-config-pie-BzBcqPMJ.js +0 -68
  232. package/dist/client/chunks/chart-config-pie-BzBcqPMJ.js.map +0 -1
  233. package/dist/client/chunks/chart-config-radar-6ZOgt__z.js +0 -49
  234. package/dist/client/chunks/chart-config-radar-6ZOgt__z.js.map +0 -1
  235. package/dist/client/chunks/chart-config-radial-bar-Df6Eta7N.js +0 -38
  236. package/dist/client/chunks/chart-config-radial-bar-Df6Eta7N.js.map +0 -1
  237. package/dist/client/chunks/chart-config-sankey-DgqKBFvN.js +0 -66
  238. package/dist/client/chunks/chart-config-sankey-DgqKBFvN.js.map +0 -1
  239. package/dist/client/chunks/chart-config-scatter-D5nVLDvi.js +0 -61
  240. package/dist/client/chunks/chart-config-scatter-D5nVLDvi.js.map +0 -1
  241. package/dist/client/chunks/chart-config-sunburst-Ca3FX9nW.js +0 -45
  242. package/dist/client/chunks/chart-config-sunburst-Ca3FX9nW.js.map +0 -1
  243. package/dist/client/chunks/chart-config-tree-map-Bjy4QNa3.js +0 -51
  244. package/dist/client/chunks/chart-config-tree-map-Bjy4QNa3.js.map +0 -1
  245. package/dist/client/chunks/chart-config-waterfall-C5K2eqR7.js +0 -59
  246. package/dist/client/chunks/chart-config-waterfall-C5K2eqR7.js.map +0 -1
  247. package/dist/client/chunks/chart-data-table-2iCsn0CF.js.map +0 -1
  248. package/dist/client/chunks/chart-funnel-poyOf7-e.js.map +0 -1
  249. package/dist/client/chunks/chart-gauge-D5J4gRky.js.map +0 -1
  250. package/dist/client/chunks/chart-heat-map-BAMVhLGG.js.map +0 -1
  251. package/dist/client/chunks/chart-kpi-delta-KQjUIeal.js.map +0 -1
  252. package/dist/client/chunks/chart-kpi-number-CsQgV_x3.js +0 -325
  253. package/dist/client/chunks/chart-kpi-number-CsQgV_x3.js.map +0 -1
  254. package/dist/client/chunks/chart-kpi-text-BR0IyeUU.js +0 -148
  255. package/dist/client/chunks/chart-kpi-text-BR0IyeUU.js.map +0 -1
  256. package/dist/client/chunks/chart-line-B5_WntY5.js.map +0 -1
  257. package/dist/client/chunks/chart-markdown-B6bENbel.js +0 -3473
  258. package/dist/client/chunks/chart-markdown-B6bENbel.js.map +0 -1
  259. package/dist/client/chunks/chart-measure-profile-yWk-obNb.js +0 -179
  260. package/dist/client/chunks/chart-measure-profile-yWk-obNb.js.map +0 -1
  261. package/dist/client/chunks/chart-pie-BodrUoHv.js +0 -172
  262. package/dist/client/chunks/chart-pie-BodrUoHv.js.map +0 -1
  263. package/dist/client/chunks/chart-radar-gG3zfLud.js +0 -154
  264. package/dist/client/chunks/chart-radar-gG3zfLud.js.map +0 -1
  265. package/dist/client/chunks/chart-radial-bar-C2IPCV8c.js +0 -148
  266. package/dist/client/chunks/chart-radial-bar-C2IPCV8c.js.map +0 -1
  267. package/dist/client/chunks/chart-sankey-BOyxfG1Q.js.map +0 -1
  268. package/dist/client/chunks/chart-scatter-B8OwlsAX.js +0 -255
  269. package/dist/client/chunks/chart-scatter-B8OwlsAX.js.map +0 -1
  270. package/dist/client/chunks/chart-sunburst-D9lGEOCc.js.map +0 -1
  271. package/dist/client/chunks/chart-tree-map-DZaKy9he.js +0 -298
  272. package/dist/client/chunks/chart-tree-map-DZaKy9he.js.map +0 -1
  273. package/dist/client/chunks/chart-waterfall-BCdUx4DC.js.map +0 -1
  274. package/dist/client/chunks/charts-core-C5Yokk-x.js.map +0 -1
  275. package/dist/client/chunks/schema-visualization-t1KiOORo.js.map +0 -1
  276. package/dist/client/chunks/useDebounce-CKqkM42n.js.map +0 -1
@@ -89,6 +89,17 @@ export declare function validateOriginHeader(origin: string | null | undefined,
89
89
  valid: false;
90
90
  reason: string;
91
91
  };
92
+ /**
93
+ * Extract a Bearer token from an Authorization header.
94
+ * Returns the token string if present and well-formed, or null otherwise.
95
+ */
96
+ export declare function extractBearerToken(authHeader: string | null | undefined): string | null;
97
+ /**
98
+ * Build a WWW-Authenticate challenge header value per MCP / RFC 9728.
99
+ * Points the client to the Protected Resource Metadata document so it can
100
+ * discover the authorization server and begin the OAuth 2.1 flow.
101
+ */
102
+ export declare function buildWwwAuthenticateChallenge(resourceMetadataUrl: string): string;
92
103
  export declare function serializeSseEvent(payload: unknown, eventId?: string, retryMs?: number): string;
93
104
  export declare function buildJsonRpcError(id: JsonRpcId, code: number, message: string, data?: unknown): JsonRpcResponse;
94
105
  export declare function buildJsonRpcResult(id: JsonRpcId, result: unknown): JsonRpcResponse;
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../utils-CyBt-as9.cjs`),t=require(`../compiler-CRgLzmSn.cjs`),n=require(`../mcp-transport-DMhuYmFp.cjs`);let r=require(`next/server`);function i(e){let{cubes:n,drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s}=e;if(!n||n.length===0)throw Error(`At least one cube must be provided in the cubes array`);let c=new t.t({drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s});return n.forEach(e=>{c.registerCube(e)}),c}function a(e,t){let n=e.headers.get(`origin`),r={};return t.origin&&(typeof t.origin==`string`?r[`Access-Control-Allow-Origin`]=t.origin:Array.isArray(t.origin)?n&&t.origin.includes(n)&&(r[`Access-Control-Allow-Origin`]=n):typeof t.origin==`function`&&n&&t.origin(n)&&(r[`Access-Control-Allow-Origin`]=n)),t.methods&&(r[`Access-Control-Allow-Methods`]=t.methods.join(`, `)),t.allowedHeaders&&(r[`Access-Control-Allow-Headers`]=t.allowedHeaders.join(`, `)),t.credentials&&(r[`Access-Control-Allow-Credentials`]=`true`),r}function o(e){return async function(t){let n=a(t,e);return new Response(null,{status:200,headers:n})}}function s(t){let{extractSecurityContext:n,cors:o}=t,s=i(t);return async function(t,i){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{c=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await n(t,i),u=s.validateQuery(c);if(!u.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=t.headers.get(`x-cache-control`)===`no-cache`,f=await s.executeMultiCubeQuery(c,l,{skipCache:d}),p=e.r(c,f,s);return r.NextResponse.json(p,{headers:o?a(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function c(t){let{cors:n}=t,o=i(t);return async function(t,i){try{let i=e.a(o.getMetadata());return r.NextResponse.json(i,{headers:n?a(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js meta handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Failed to fetch metadata`,500),{status:500})}}}function l(t){let{extractSecurityContext:n,cors:o}=t,s=i(t);return async function(t,i){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{c=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await n(t,i),u=s.validateQuery(c);if(!u.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=c.measures?.[0]||c.dimensions?.[0];if(!d)return r.NextResponse.json(e.i(`No measures or dimensions specified`,400),{status:400});let f=d.split(`.`)[0],p=await s.generateSQL(f,c,l),m=e.o(c,p);return r.NextResponse.json(m,{headers:o?a(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js SQL handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`SQL generation failed`,500),{status:500})}}}function u(t){let{extractSecurityContext:n,cors:o}=t,s=i(t);return async function(t,i){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let e=t.nextUrl.searchParams.get(`query`);if(!e)return r.NextResponse.json({error:`Query parameter is required`,valid:!1},{status:400});try{c=JSON.parse(e)}catch{return r.NextResponse.json({error:`Invalid JSON in query parameter`,valid:!1},{status:400})}}else return r.NextResponse.json({error:`Method not allowed`,valid:!1},{status:405});let l=await n(t,i),u=await e.f(c,l,s);return r.NextResponse.json(u,{headers:o?a(t,o):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js dry-run handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},{status:400})}}}function d(t){let{extractSecurityContext:n,cors:o}=t,s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let{queries:c}=await t.json();if(!c||!Array.isArray(c))return r.NextResponse.json(e.i(`Request body must contain a "queries" array`,400),{status:400});if(c.length===0)return r.NextResponse.json(e.i(`Queries array cannot be empty`,400),{status:400});let l=await e.u(c,await n(t,i),s,{skipCache:t.headers.get(`x-cache-control`)===`no-cache`});return r.NextResponse.json(l,{headers:o?a(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js batch handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Batch execution failed`,500),{status:500})}}}function f(e){let{extractSecurityContext:t,cors:n}=e,o=i(e);return async function(e,i){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed`},{status:405});let s=await e.json(),c=s.query||s,l=s.options||{},u=await t(e,i),d=o.validateQuery(c);if(!d.isValid)return r.NextResponse.json({error:`Query validation failed: ${d.errors.join(`, `)}`},{status:400});let f=await o.explainQuery(c,u,l);return r.NextResponse.json(f,{headers:n?a(e,n):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js explain handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Explain query failed`},{status:500})}}}function p(t){let{cors:n}=t,o=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await e.d(o,await t.json());return r.NextResponse.json(i,{headers:n?a(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js discover handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Discovery failed`,500),{status:500})}}}function m(t){let{cors:n}=t,o=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await t.json();if(!i.naturalLanguage)return r.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let s=await e.m(o,i);return r.NextResponse.json(s,{headers:n?a(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js suggest handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query suggestion failed`,500),{status:500})}}}function h(t){let{cors:n}=t,o=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await t.json();if(!i.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let s=await e.h(o,i);return r.NextResponse.json(s,{headers:n?a(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js validate handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query validation failed`,500),{status:500})}}}function g(t){let{extractSecurityContext:n,cors:o}=t,s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let c=await t.json();if(!c.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let l=await e.p(s,await n(t,i),c);return r.NextResponse.json(l,{headers:o?a(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function _(t){let{extractSecurityContext:o,cors:s,mcp:c={enabled:!0}}=t,l=i(t);return async function(t){if(t.method===`DELETE`)return r.NextResponse.json({error:`Session termination not supported`},{status:405});if(t.method===`GET`){let e=new TextEncoder,i=n.m(),o=new ReadableStream({start(t){t.enqueue(e.encode(n.h({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},i,15e3)))}}),c=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(s){let e=a(t,s);Object.entries(e).forEach(([e,t])=>c.set(e,t))}return new r.NextResponse(o,{status:200,headers:c})}if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=n._(t.headers.get(`origin`),c.allowedOrigins?{allowedOrigins:c.allowedOrigins}:{});if(!i.valid)return r.NextResponse.json(n.i(null,-32600,i.reason),{status:403});let u=t.headers.get(`accept`);if(!n.g(u))return r.NextResponse.json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`),{status:400});let d=n.f(Object.fromEntries(t.headers.entries()));if(!d.ok)return r.NextResponse.json({error:`Unsupported MCP protocol version`,supported:d.supported},{status:426});let f;try{f=await t.json()}catch{f=null}let p=n.p(f);if(!p)return r.NextResponse.json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`),{status:400});let m=n.v(u),h=p.method===`initialize`,g=(e,n=200,i={})=>r.NextResponse.json(e,{status:n,headers:{...s?a(t,s):{},...i}});try{let e=await n.s(p.method,p.params,{semanticLayer:l,extractSecurityContext:e=>o(e),rawRequest:t,rawResponse:null,appEnabled:!!c.app});if(n.d(p))return new r.NextResponse(null,{status:202});let i=h&&e&&typeof e==`object`&&`sessionId`in e?e.sessionId:void 0,u={};i&&(u[n.r]=i);let d=n.a(p.id??null,e);if(m){let e=new TextEncoder,i=n.m(),o=new ReadableStream({start(t){t.enqueue(e.encode(`id: ${i}\n\n`)),t.enqueue(e.encode(n.h(d,i))),t.close()}}),c=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...u});if(s){let e=a(t,s);Object.entries(e).forEach(([e,t])=>c.set(e,t))}return new r.NextResponse(o,{status:200,headers:c})}return g(d,200,u)}catch(e){if(n.d(p))return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP notification processing error:`,e),new r.NextResponse(null,{status:202});process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP RPC handler error:`,e);let i=e?.code??-32603,o=e?.data,c=e.message||`MCP request failed`,l=n.i(p.id??null,i,c,o);if(m){let e=new TextEncoder,i=n.m(),o=new ReadableStream({start(t){t.enqueue(e.encode(`id: ${i}\n\n`)),t.enqueue(e.encode(n.h(l,i))),t.close()}}),c=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(s){let e=a(t,s);Object.entries(e).forEach(([e,t])=>c.set(e,t))}return new r.NextResponse(o,{status:200,headers:c})}return g(l,200)}}}function v(e){let{extractSecurityContext:t,cors:n,agent:o}=e;if(!o)throw Error(`agent config is required for createAgentChatHandler`);let s=i(e);return async function(e,i){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed - use POST`},{status:405});let{handleAgentChat:c}=await Promise.resolve().then(()=>require(`../handler-DumFgnNM.cjs`)),{message:l,sessionId:u,history:d}=await e.json();if(!l||typeof l!=`string`)return r.NextResponse.json({error:`message is required and must be a string`},{status:400});let f=(o.apiKey||``).trim();if(o.allowClientApiKey){let t=e.headers.get(`x-agent-api-key`);t&&(f=t.trim())}if(!f)return r.NextResponse.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},{status:401});let p=o.allowClientApiKey&&e.headers.get(`x-agent-provider`)||void 0,m=o.allowClientApiKey&&e.headers.get(`x-agent-model`)||void 0,h=o.allowClientApiKey&&e.headers.get(`x-agent-provider-endpoint`)||void 0,g=await t(e,i),_=o.buildSystemContext?.(g),v=new TextEncoder,y=new ReadableStream({async start(e){try{let t=c({message:l,sessionId:u,history:d,semanticLayer:s,securityContext:g,agentConfig:o,apiKey:f,systemContext:_,providerOverride:p,modelOverride:m,baseURLOverride:h});for await(let n of t){let t=`data: ${JSON.stringify(n)}\n\n`;e.enqueue(v.encode(t))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(v.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}}),b=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(n){let t=a(e,n);Object.entries(t).forEach(([e,t])=>b.set(e,t))}return new Response(y,{status:200,headers:b})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js agent chat handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Agent chat failed`},{status:500})}}}function y(e){let{mcp:t={enabled:!0}}=e,n={load:s(e),meta:c(e),sql:l(e),dryRun:u(e),batch:d(e),explain:f(e)};return t.enabled!==!1&&(n.mcpRpc=_(e)),e.agent&&(n.agentChat=v(e)),n}exports.createAgentChatHandler=v,exports.createBatchHandler=d,exports.createCubeHandlers=y,exports.createDiscoverHandler=p,exports.createDryRunHandler=u,exports.createExplainHandler=f,exports.createLoadHandler=s,exports.createMcpLoadHandler=g,exports.createMcpRpcHandler=_,exports.createMetaHandler=c,exports.createOptionsHandler=o,exports.createSqlHandler=l,exports.createSuggestHandler=m,exports.createValidateHandler=h;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../utils-DNrj-ryp.cjs`),t=require(`../locale-DueXjqMh.cjs`),n=require(`../mcp-transport-45SiFcCH.cjs`);let r=require(`next/server`);function i(e){let{cubes:n,drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s}=e;if(!n||n.length===0)throw Error(`At least one cube must be provided in the cubes array`);let c=new t.i({drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s});return n.forEach(e=>{c.registerCube(e)}),c}function a(e){return{extractSecurityContext:async(n,r)=>t.r(await e.extractSecurityContext(n,r),t.n(e=>n.headers.get(e))),cors:e.cors?{...e.cors,allowedHeaders:t.t(e.cors.allowedHeaders)}:void 0}}function o(e,t){let n=e.headers.get(`origin`),r={};return t.origin&&(typeof t.origin==`string`?r[`Access-Control-Allow-Origin`]=t.origin:Array.isArray(t.origin)?n&&t.origin.includes(n)&&(r[`Access-Control-Allow-Origin`]=n):typeof t.origin==`function`&&n&&t.origin(n)&&(r[`Access-Control-Allow-Origin`]=n)),t.methods&&(r[`Access-Control-Allow-Methods`]=t.methods.join(`, `)),t.allowedHeaders&&(r[`Access-Control-Allow-Headers`]=t.allowedHeaders.join(`, `)),t.credentials&&(r[`Access-Control-Allow-Credentials`]=`true`),r}function s(e){return async function(n){let r=o(n,{...e,allowedHeaders:t.t(e.allowedHeaders)});return new Response(null,{status:200,headers:r})}}function c(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{let a;if(t.method===`POST`){let e=await t.json();a=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{a=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await n(t,i),u=c.validateQuery(a);if(!u.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=t.headers.get(`x-cache-control`)===`no-cache`,f=await c.executeMultiCubeQuery(a,l,{skipCache:d}),p=e.r(a,f,c);return r.NextResponse.json(p,{headers:s?o(t,s):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function l(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{let i=e.a(s.getMetadata());return r.NextResponse.json(i,{headers:n?o(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js meta handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Failed to fetch metadata`,500),{status:500})}}}function u(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{let a;if(t.method===`POST`){let e=await t.json();a=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{a=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await n(t,i),u=c.validateQuery(a);if(!u.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=a.measures?.[0]||a.dimensions?.[0];if(!d)return r.NextResponse.json(e.i(`No measures or dimensions specified`,400),{status:400});let f=d.split(`.`)[0],p=await c.generateSQL(f,a,l),m=e.o(a,p);return r.NextResponse.json(m,{headers:s?o(t,s):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js SQL handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`SQL generation failed`,500),{status:500})}}}function d(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{let a;if(t.method===`POST`){let e=await t.json();a=e.query||e}else if(t.method===`GET`){let e=t.nextUrl.searchParams.get(`query`);if(!e)return r.NextResponse.json({error:`Query parameter is required`,valid:!1},{status:400});try{a=JSON.parse(e)}catch{return r.NextResponse.json({error:`Invalid JSON in query parameter`,valid:!1},{status:400})}}else return r.NextResponse.json({error:`Method not allowed`,valid:!1},{status:405});let l=await n(t,i),u=await e.f(a,l,c);return r.NextResponse.json(u,{headers:s?o(t,s):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js dry-run handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},{status:400})}}}function f(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let{queries:a}=await t.json();if(!a||!Array.isArray(a))return r.NextResponse.json(e.i(`Request body must contain a "queries" array`,400),{status:400});if(a.length===0)return r.NextResponse.json(e.i(`Queries array cannot be empty`,400),{status:400});let l=await e.u(a,await n(t,i),c,{skipCache:t.headers.get(`x-cache-control`)===`no-cache`});return r.NextResponse.json(l,{headers:s?o(t,s):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js batch handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Batch execution failed`,500),{status:500})}}}function p(e){let{extractSecurityContext:t,cors:n}=a(e),s=i(e);return async function(e,i){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed`},{status:405});let a=await e.json(),c=a.query||a,l=a.options||{},u=await t(e,i),d=s.validateQuery(c);if(!d.isValid)return r.NextResponse.json({error:`Query validation failed: ${d.errors.join(`, `)}`},{status:400});let f=await s.explainQuery(c,u,l);return r.NextResponse.json(f,{headers:n?o(e,n):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js explain handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Explain query failed`},{status:500})}}}function m(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await e.d(s,await t.json());return r.NextResponse.json(i,{headers:n?o(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js discover handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Discovery failed`,500),{status:500})}}}function h(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await t.json();if(!i.naturalLanguage)return r.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let a=await e.m(s,i);return r.NextResponse.json(a,{headers:n?o(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js suggest handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query suggestion failed`,500),{status:500})}}}function g(t){let{cors:n}=a(t),s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await t.json();if(!i.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let a=await e.h(s,i);return r.NextResponse.json(a,{headers:n?o(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js validate handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query validation failed`,500),{status:500})}}}function _(t){let{extractSecurityContext:n,cors:s}=a(t),c=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await t.json();if(!a.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let l=await e.p(c,await n(t,i),a);return r.NextResponse.json(l,{headers:s?o(t,s):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function v(t){let{extractSecurityContext:s,cors:c}=a(t),{mcp:l={enabled:!0}}=t,u=i(t);return async function(t){if(l.resourceMetadataUrl&&!n.l(t.headers.get(`authorization`)))return r.NextResponse.json({error:`Bearer token required`},{status:401,headers:{"WWW-Authenticate":n.s(l.resourceMetadataUrl)}});if(t.method===`DELETE`)return r.NextResponse.json({error:`Session termination not supported`},{status:405});if(t.method===`GET`){let e=new TextEncoder,i=n.g(),a=new ReadableStream({start(t){t.enqueue(e.encode(n._({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},i,15e3)))}}),s=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(c){let e=o(t,c);Object.entries(e).forEach(([e,t])=>s.set(e,t))}return new r.NextResponse(a,{status:200,headers:s})}if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=n.y(t.headers.get(`origin`),l.allowedOrigins?{allowedOrigins:l.allowedOrigins}:{});if(!i.valid)return r.NextResponse.json(n.i(null,-32600,i.reason),{status:403});let a=t.headers.get(`accept`);if(!n.v(a))return r.NextResponse.json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`),{status:400});let d=n.m(Object.fromEntries(t.headers.entries()));if(!d.ok)return r.NextResponse.json({error:`Unsupported MCP protocol version`,supported:d.supported},{status:426});let f;try{f=await t.json()}catch{f=null}let p=n.h(f);if(!p)return r.NextResponse.json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`),{status:400});let m=n.b(a),h=p.method===`initialize`,g=(e,n=200,i={})=>r.NextResponse.json(e,{status:n,headers:{...c?o(t,c):{},...i}});try{let e=await n.c(p.method,p.params,{semanticLayer:u,extractSecurityContext:e=>s(e),rawRequest:t,rawResponse:null,appEnabled:!!l.app});if(n.p(p))return new r.NextResponse(null,{status:202});let i=h&&e&&typeof e==`object`&&`sessionId`in e?e.sessionId:void 0,a={};i&&(a[n.r]=i);let d=n.a(p.id??null,e);if(m){let e=new TextEncoder,i=n.g(),s=new ReadableStream({start(t){t.enqueue(e.encode(`id: ${i}\n\n`)),t.enqueue(e.encode(n._(d,i))),t.close()}}),l=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...a});if(c){let e=o(t,c);Object.entries(e).forEach(([e,t])=>l.set(e,t))}return new r.NextResponse(s,{status:200,headers:l})}return g(d,200,a)}catch(e){if(n.p(p))return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP notification processing error:`,e),new r.NextResponse(null,{status:202});process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP RPC handler error:`,e);let i=e?.code??-32603,a=e?.data,s=e.message||`MCP request failed`,l=n.i(p.id??null,i,s,a);if(m){let e=new TextEncoder,i=n.g(),a=new ReadableStream({start(t){t.enqueue(e.encode(`id: ${i}\n\n`)),t.enqueue(e.encode(n._(l,i))),t.close()}}),s=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(c){let e=o(t,c);Object.entries(e).forEach(([e,t])=>s.set(e,t))}return new r.NextResponse(a,{status:200,headers:s})}return g(l,200)}}}function y(e){let{extractSecurityContext:t,cors:n}=a(e),{agent:s}=e;if(!s)throw Error(`agent config is required for createAgentChatHandler`);let c=i(e);return async function(e,i){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed - use POST`},{status:405});let{handleAgentChat:a}=await Promise.resolve().then(()=>require(`../handler-BzzbVpcl.cjs`)),{message:l,sessionId:u,history:d}=await e.json();if(!l||typeof l!=`string`)return r.NextResponse.json({error:`message is required and must be a string`},{status:400});let f=(s.apiKey||``).trim();if(s.allowClientApiKey){let t=e.headers.get(`x-agent-api-key`);t&&(f=t.trim())}if(!f)return r.NextResponse.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},{status:401});let p=s.allowClientApiKey&&e.headers.get(`x-agent-provider`)||void 0,m=s.allowClientApiKey&&e.headers.get(`x-agent-model`)||void 0,h=s.allowClientApiKey&&e.headers.get(`x-agent-provider-endpoint`)||void 0,g=await t(e,i),_=s.buildSystemContext?.(g),v=new TextEncoder,y=new ReadableStream({async start(e){try{let t=a({message:l,sessionId:u,history:d,semanticLayer:c,securityContext:g,agentConfig:s,apiKey:f,systemContext:_,providerOverride:p,modelOverride:m,baseURLOverride:h});for await(let n of t){let t=`data: ${JSON.stringify(n)}\n\n`;e.enqueue(v.encode(t))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(v.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}}),b=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(n){let t=o(e,n);Object.entries(t).forEach(([e,t])=>b.set(e,t))}return new Response(y,{status:200,headers:b})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js agent chat handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Agent chat failed`},{status:500})}}}function b(e){let{mcp:t={enabled:!0}}=e,n={load:c(e),meta:l(e),sql:u(e),dryRun:d(e),batch:f(e),explain:p(e)};return t.enabled!==!1&&(n.mcpRpc=v(e)),e.agent&&(n.agentChat=y(e)),n}exports.createAgentChatHandler=y,exports.createBatchHandler=f,exports.createCubeHandlers=b,exports.createDiscoverHandler=m,exports.createDryRunHandler=d,exports.createExplainHandler=p,exports.createLoadHandler=c,exports.createMcpLoadHandler=_,exports.createMcpRpcHandler=v,exports.createMetaHandler=l,exports.createOptionsHandler=s,exports.createSqlHandler=u,exports.createSuggestHandler=h,exports.createValidateHandler=g;
@@ -1,9 +1,9 @@
1
- import { a as e, d as t, f as n, h as r, i, m as a, o, p as s, r as c, u as l } from "../utils-IH1ePsBd.js";
2
- import { t as u } from "../compiler-S6KHiOY6.js";
3
- import { _ as d, a as f, d as p, f as m, g as h, h as g, i as _, m as v, p as y, r as b, s as x, v as S } from "../mcp-transport-C6bsIOSV.js";
4
- import { NextResponse as C } from "next/server";
1
+ import { a as e, d as t, f as n, h as r, i, m as a, o, p as s, r as c, u as l } from "../utils-DOg9oGdt.js";
2
+ import { i as u, n as d, r as f, t as p } from "../locale-DTnJrxm1.js";
3
+ import { _ as m, a as h, b as g, c as _, g as v, h as y, i as b, l as x, m as S, p as C, r as w, s as T, v as E, y as D } from "../mcp-transport-Bxpc4mRy.js";
4
+ import { NextResponse as O } from "next/server";
5
5
  //#region src/adapters/nextjs/index.ts
6
- function w(e) {
6
+ function k(e) {
7
7
  let { cubes: t, drizzle: n, schema: r, engineType: i, cache: a, rlsSetup: o } = e;
8
8
  if (!t || t.length === 0) throw Error("At least one cube must be provided in the cubes array");
9
9
  let s = new u({
@@ -17,21 +17,33 @@ function w(e) {
17
17
  s.registerCube(e);
18
18
  }), s;
19
19
  }
20
- function T(e, t) {
20
+ function A(e) {
21
+ return {
22
+ extractSecurityContext: async (t, n) => f(await e.extractSecurityContext(t, n), d((e) => t.headers.get(e))),
23
+ cors: e.cors ? {
24
+ ...e.cors,
25
+ allowedHeaders: p(e.cors.allowedHeaders)
26
+ } : void 0
27
+ };
28
+ }
29
+ function j(e, t) {
21
30
  let n = e.headers.get("origin"), r = {};
22
31
  return t.origin && (typeof t.origin == "string" ? r["Access-Control-Allow-Origin"] = t.origin : Array.isArray(t.origin) ? n && t.origin.includes(n) && (r["Access-Control-Allow-Origin"] = n) : typeof t.origin == "function" && n && t.origin(n) && (r["Access-Control-Allow-Origin"] = n)), t.methods && (r["Access-Control-Allow-Methods"] = t.methods.join(", ")), t.allowedHeaders && (r["Access-Control-Allow-Headers"] = t.allowedHeaders.join(", ")), t.credentials && (r["Access-Control-Allow-Credentials"] = "true"), r;
23
32
  }
24
- function E(e) {
33
+ function M(e) {
25
34
  return async function(t) {
26
- let n = T(t, e);
35
+ let n = j(t, {
36
+ ...e,
37
+ allowedHeaders: p(e.allowedHeaders)
38
+ });
27
39
  return new Response(null, {
28
40
  status: 200,
29
41
  headers: n
30
42
  });
31
43
  };
32
44
  }
33
- function D(e) {
34
- let { extractSecurityContext: t, cors: n } = e, r = w(e);
45
+ function N(e) {
46
+ let { extractSecurityContext: t, cors: n } = A(e), r = k(e);
35
47
  return async function(e, a) {
36
48
  try {
37
49
  let o;
@@ -40,35 +52,35 @@ function D(e) {
40
52
  o = t.query || t;
41
53
  } else if (e.method === "GET") {
42
54
  let t = e.nextUrl.searchParams.get("query");
43
- if (!t) return C.json(i("Query parameter is required", 400), { status: 400 });
55
+ if (!t) return O.json(i("Query parameter is required", 400), { status: 400 });
44
56
  try {
45
57
  o = JSON.parse(t);
46
58
  } catch {
47
- return C.json(i("Invalid JSON in query parameter", 400), { status: 400 });
59
+ return O.json(i("Invalid JSON in query parameter", 400), { status: 400 });
48
60
  }
49
- } else return C.json(i("Method not allowed", 405), { status: 405 });
61
+ } else return O.json(i("Method not allowed", 405), { status: 405 });
50
62
  let s = await t(e, a), l = r.validateQuery(o);
51
- if (!l.isValid) return C.json(i(`Query validation failed: ${l.errors.join(", ")}`, 400), { status: 400 });
63
+ if (!l.isValid) return O.json(i(`Query validation failed: ${l.errors.join(", ")}`, 400), { status: 400 });
52
64
  let u = e.headers.get("x-cache-control") === "no-cache", d = await r.executeMultiCubeQuery(o, s, { skipCache: u }), f = c(o, d, r);
53
- return C.json(f, { headers: n ? T(e, n) : {} });
65
+ return O.json(f, { headers: n ? j(e, n) : {} });
54
66
  } catch (e) {
55
- return process.env.NODE_ENV !== "test" && console.error("Next.js load handler error:", e), C.json(i(e instanceof Error ? e.message : "Query execution failed", 500), { status: 500 });
67
+ return process.env.NODE_ENV !== "test" && console.error("Next.js load handler error:", e), O.json(i(e instanceof Error ? e.message : "Query execution failed", 500), { status: 500 });
56
68
  }
57
69
  };
58
70
  }
59
- function O(t) {
60
- let { cors: n } = t, r = w(t);
71
+ function P(t) {
72
+ let { cors: n } = A(t), r = k(t);
61
73
  return async function(t, a) {
62
74
  try {
63
75
  let i = e(r.getMetadata());
64
- return C.json(i, { headers: n ? T(t, n) : {} });
76
+ return O.json(i, { headers: n ? j(t, n) : {} });
65
77
  } catch (e) {
66
- return process.env.NODE_ENV !== "test" && console.error("Next.js meta handler error:", e), C.json(i(e instanceof Error ? e.message : "Failed to fetch metadata", 500), { status: 500 });
78
+ return process.env.NODE_ENV !== "test" && console.error("Next.js meta handler error:", e), O.json(i(e instanceof Error ? e.message : "Failed to fetch metadata", 500), { status: 500 });
67
79
  }
68
80
  };
69
81
  }
70
- function k(e) {
71
- let { extractSecurityContext: t, cors: n } = e, r = w(e);
82
+ function F(e) {
83
+ let { extractSecurityContext: t, cors: n } = A(e), r = k(e);
72
84
  return async function(e, a) {
73
85
  try {
74
86
  let s;
@@ -77,26 +89,26 @@ function k(e) {
77
89
  s = t.query || t;
78
90
  } else if (e.method === "GET") {
79
91
  let t = e.nextUrl.searchParams.get("query");
80
- if (!t) return C.json(i("Query parameter is required", 400), { status: 400 });
92
+ if (!t) return O.json(i("Query parameter is required", 400), { status: 400 });
81
93
  try {
82
94
  s = JSON.parse(t);
83
95
  } catch {
84
- return C.json(i("Invalid JSON in query parameter", 400), { status: 400 });
96
+ return O.json(i("Invalid JSON in query parameter", 400), { status: 400 });
85
97
  }
86
- } else return C.json(i("Method not allowed", 405), { status: 405 });
98
+ } else return O.json(i("Method not allowed", 405), { status: 405 });
87
99
  let c = await t(e, a), l = r.validateQuery(s);
88
- if (!l.isValid) return C.json(i(`Query validation failed: ${l.errors.join(", ")}`, 400), { status: 400 });
100
+ if (!l.isValid) return O.json(i(`Query validation failed: ${l.errors.join(", ")}`, 400), { status: 400 });
89
101
  let u = s.measures?.[0] || s.dimensions?.[0];
90
- if (!u) return C.json(i("No measures or dimensions specified", 400), { status: 400 });
102
+ if (!u) return O.json(i("No measures or dimensions specified", 400), { status: 400 });
91
103
  let d = u.split(".")[0], f = await r.generateSQL(d, s, c), p = o(s, f);
92
- return C.json(p, { headers: n ? T(e, n) : {} });
104
+ return O.json(p, { headers: n ? j(e, n) : {} });
93
105
  } catch (e) {
94
- return process.env.NODE_ENV !== "test" && console.error("Next.js SQL handler error:", e), C.json(i(e instanceof Error ? e.message : "SQL generation failed", 500), { status: 500 });
106
+ return process.env.NODE_ENV !== "test" && console.error("Next.js SQL handler error:", e), O.json(i(e instanceof Error ? e.message : "SQL generation failed", 500), { status: 500 });
95
107
  }
96
108
  };
97
109
  }
98
- function A(e) {
99
- let { extractSecurityContext: t, cors: r } = e, i = w(e);
110
+ function I(e) {
111
+ let { extractSecurityContext: t, cors: r } = A(e), i = k(e);
100
112
  return async function(e, a) {
101
113
  try {
102
114
  let o;
@@ -105,122 +117,126 @@ function A(e) {
105
117
  o = t.query || t;
106
118
  } else if (e.method === "GET") {
107
119
  let t = e.nextUrl.searchParams.get("query");
108
- if (!t) return C.json({
120
+ if (!t) return O.json({
109
121
  error: "Query parameter is required",
110
122
  valid: !1
111
123
  }, { status: 400 });
112
124
  try {
113
125
  o = JSON.parse(t);
114
126
  } catch {
115
- return C.json({
127
+ return O.json({
116
128
  error: "Invalid JSON in query parameter",
117
129
  valid: !1
118
130
  }, { status: 400 });
119
131
  }
120
- } else return C.json({
132
+ } else return O.json({
121
133
  error: "Method not allowed",
122
134
  valid: !1
123
135
  }, { status: 405 });
124
136
  let s = await t(e, a), c = await n(o, s, i);
125
- return C.json(c, { headers: r ? T(e, r) : {} });
137
+ return O.json(c, { headers: r ? j(e, r) : {} });
126
138
  } catch (e) {
127
- return process.env.NODE_ENV !== "test" && console.error("Next.js dry-run handler error:", e), C.json({
139
+ return process.env.NODE_ENV !== "test" && console.error("Next.js dry-run handler error:", e), O.json({
128
140
  error: e instanceof Error ? e.message : "Dry-run validation failed",
129
141
  valid: !1
130
142
  }, { status: 400 });
131
143
  }
132
144
  };
133
145
  }
134
- function j(e) {
135
- let { extractSecurityContext: t, cors: n } = e, r = w(e);
146
+ function L(e) {
147
+ let { extractSecurityContext: t, cors: n } = A(e), r = k(e);
136
148
  return async function(e, a) {
137
149
  try {
138
- if (e.method !== "POST") return C.json(i("Method not allowed - use POST", 405), { status: 405 });
150
+ if (e.method !== "POST") return O.json(i("Method not allowed - use POST", 405), { status: 405 });
139
151
  let { queries: o } = await e.json();
140
- if (!o || !Array.isArray(o)) return C.json(i("Request body must contain a \"queries\" array", 400), { status: 400 });
141
- if (o.length === 0) return C.json(i("Queries array cannot be empty", 400), { status: 400 });
152
+ if (!o || !Array.isArray(o)) return O.json(i("Request body must contain a \"queries\" array", 400), { status: 400 });
153
+ if (o.length === 0) return O.json(i("Queries array cannot be empty", 400), { status: 400 });
142
154
  let s = await l(o, await t(e, a), r, { skipCache: e.headers.get("x-cache-control") === "no-cache" });
143
- return C.json(s, { headers: n ? T(e, n) : {} });
155
+ return O.json(s, { headers: n ? j(e, n) : {} });
144
156
  } catch (e) {
145
- return process.env.NODE_ENV !== "test" && console.error("Next.js batch handler error:", e), C.json(i(e instanceof Error ? e.message : "Batch execution failed", 500), { status: 500 });
157
+ return process.env.NODE_ENV !== "test" && console.error("Next.js batch handler error:", e), O.json(i(e instanceof Error ? e.message : "Batch execution failed", 500), { status: 500 });
146
158
  }
147
159
  };
148
160
  }
149
- function M(e) {
150
- let { extractSecurityContext: t, cors: n } = e, r = w(e);
161
+ function R(e) {
162
+ let { extractSecurityContext: t, cors: n } = A(e), r = k(e);
151
163
  return async function(e, i) {
152
164
  try {
153
- if (e.method !== "POST") return C.json({ error: "Method not allowed" }, { status: 405 });
165
+ if (e.method !== "POST") return O.json({ error: "Method not allowed" }, { status: 405 });
154
166
  let a = await e.json(), o = a.query || a, s = a.options || {}, c = await t(e, i), l = r.validateQuery(o);
155
- if (!l.isValid) return C.json({ error: `Query validation failed: ${l.errors.join(", ")}` }, { status: 400 });
167
+ if (!l.isValid) return O.json({ error: `Query validation failed: ${l.errors.join(", ")}` }, { status: 400 });
156
168
  let u = await r.explainQuery(o, c, s);
157
- return C.json(u, { headers: n ? T(e, n) : {} });
169
+ return O.json(u, { headers: n ? j(e, n) : {} });
158
170
  } catch (e) {
159
- return process.env.NODE_ENV !== "test" && console.error("Next.js explain handler error:", e), C.json({ error: e instanceof Error ? e.message : "Explain query failed" }, { status: 500 });
171
+ return process.env.NODE_ENV !== "test" && console.error("Next.js explain handler error:", e), O.json({ error: e instanceof Error ? e.message : "Explain query failed" }, { status: 500 });
160
172
  }
161
173
  };
162
174
  }
163
- function N(e) {
164
- let { cors: n } = e, r = w(e);
175
+ function z(e) {
176
+ let { cors: n } = A(e), r = k(e);
165
177
  return async function(e, a) {
166
178
  try {
167
- if (e.method !== "POST") return C.json(i("Method not allowed - use POST", 405), { status: 405 });
179
+ if (e.method !== "POST") return O.json(i("Method not allowed - use POST", 405), { status: 405 });
168
180
  let a = await t(r, await e.json());
169
- return C.json(a, { headers: n ? T(e, n) : {} });
181
+ return O.json(a, { headers: n ? j(e, n) : {} });
170
182
  } catch (e) {
171
- return process.env.NODE_ENV !== "test" && console.error("Next.js discover handler error:", e), C.json(i(e instanceof Error ? e.message : "Discovery failed", 500), { status: 500 });
183
+ return process.env.NODE_ENV !== "test" && console.error("Next.js discover handler error:", e), O.json(i(e instanceof Error ? e.message : "Discovery failed", 500), { status: 500 });
172
184
  }
173
185
  };
174
186
  }
175
- function P(e) {
176
- let { cors: t } = e, n = w(e);
187
+ function B(e) {
188
+ let { cors: t } = A(e), n = k(e);
177
189
  return async function(e, r) {
178
190
  try {
179
- if (e.method !== "POST") return C.json(i("Method not allowed - use POST", 405), { status: 405 });
191
+ if (e.method !== "POST") return O.json(i("Method not allowed - use POST", 405), { status: 405 });
180
192
  let r = await e.json();
181
- if (!r.naturalLanguage) return C.json(i("naturalLanguage field is required", 400), { status: 400 });
193
+ if (!r.naturalLanguage) return O.json(i("naturalLanguage field is required", 400), { status: 400 });
182
194
  let o = await a(n, r);
183
- return C.json(o, { headers: t ? T(e, t) : {} });
195
+ return O.json(o, { headers: t ? j(e, t) : {} });
184
196
  } catch (e) {
185
- return process.env.NODE_ENV !== "test" && console.error("Next.js suggest handler error:", e), C.json(i(e instanceof Error ? e.message : "Query suggestion failed", 500), { status: 500 });
197
+ return process.env.NODE_ENV !== "test" && console.error("Next.js suggest handler error:", e), O.json(i(e instanceof Error ? e.message : "Query suggestion failed", 500), { status: 500 });
186
198
  }
187
199
  };
188
200
  }
189
- function F(e) {
190
- let { cors: t } = e, n = w(e);
201
+ function V(e) {
202
+ let { cors: t } = A(e), n = k(e);
191
203
  return async function(e, a) {
192
204
  try {
193
- if (e.method !== "POST") return C.json(i("Method not allowed - use POST", 405), { status: 405 });
205
+ if (e.method !== "POST") return O.json(i("Method not allowed - use POST", 405), { status: 405 });
194
206
  let a = await e.json();
195
- if (!a.query) return C.json(i("query field is required", 400), { status: 400 });
207
+ if (!a.query) return O.json(i("query field is required", 400), { status: 400 });
196
208
  let o = await r(n, a);
197
- return C.json(o, { headers: t ? T(e, t) : {} });
209
+ return O.json(o, { headers: t ? j(e, t) : {} });
198
210
  } catch (e) {
199
- return process.env.NODE_ENV !== "test" && console.error("Next.js validate handler error:", e), C.json(i(e instanceof Error ? e.message : "Query validation failed", 500), { status: 500 });
211
+ return process.env.NODE_ENV !== "test" && console.error("Next.js validate handler error:", e), O.json(i(e instanceof Error ? e.message : "Query validation failed", 500), { status: 500 });
200
212
  }
201
213
  };
202
214
  }
203
- function I(e) {
204
- let { extractSecurityContext: t, cors: n } = e, r = w(e);
215
+ function H(e) {
216
+ let { extractSecurityContext: t, cors: n } = A(e), r = k(e);
205
217
  return async function(e, a) {
206
218
  try {
207
- if (e.method !== "POST") return C.json(i("Method not allowed - use POST", 405), { status: 405 });
219
+ if (e.method !== "POST") return O.json(i("Method not allowed - use POST", 405), { status: 405 });
208
220
  let o = await e.json();
209
- if (!o.query) return C.json(i("query field is required", 400), { status: 400 });
221
+ if (!o.query) return O.json(i("query field is required", 400), { status: 400 });
210
222
  let c = await s(r, await t(e, a), o);
211
- return C.json(c, { headers: n ? T(e, n) : {} });
223
+ return O.json(c, { headers: n ? j(e, n) : {} });
212
224
  } catch (e) {
213
- return process.env.NODE_ENV !== "test" && console.error("Next.js MCP load handler error:", e), C.json(i(e instanceof Error ? e.message : "Query execution failed", 500), { status: 500 });
225
+ return process.env.NODE_ENV !== "test" && console.error("Next.js MCP load handler error:", e), O.json(i(e instanceof Error ? e.message : "Query execution failed", 500), { status: 500 });
214
226
  }
215
227
  };
216
228
  }
217
- function L(e) {
218
- let { extractSecurityContext: t, cors: n, mcp: r = { enabled: !0 } } = e, a = w(e);
229
+ function U(e) {
230
+ let { extractSecurityContext: t, cors: n } = A(e), { mcp: r = { enabled: !0 } } = e, a = k(e);
219
231
  return async function(e) {
220
- if (e.method === "DELETE") return C.json({ error: "Session termination not supported" }, { status: 405 });
232
+ if (r.resourceMetadataUrl && !x(e.headers.get("authorization"))) return O.json({ error: "Bearer token required" }, {
233
+ status: 401,
234
+ headers: { "WWW-Authenticate": T(r.resourceMetadataUrl) }
235
+ });
236
+ if (e.method === "DELETE") return O.json({ error: "Session termination not supported" }, { status: 405 });
221
237
  if (e.method === "GET") {
222
238
  let t = new TextEncoder(), r = v(), i = new ReadableStream({ start(e) {
223
- e.enqueue(t.encode(g({
239
+ e.enqueue(t.encode(m({
224
240
  jsonrpc: "2.0",
225
241
  method: "mcp/ready",
226
242
  params: { protocol: "streamable-http" }
@@ -231,21 +247,21 @@ function L(e) {
231
247
  Connection: "keep-alive"
232
248
  });
233
249
  if (n) {
234
- let t = T(e, n);
250
+ let t = j(e, n);
235
251
  Object.entries(t).forEach(([e, t]) => a.set(e, t));
236
252
  }
237
- return new C(i, {
253
+ return new O(i, {
238
254
  status: 200,
239
255
  headers: a
240
256
  });
241
257
  }
242
- if (e.method !== "POST") return C.json(i("Method not allowed - use POST", 405), { status: 405 });
243
- let o = d(e.headers.get("origin"), r.allowedOrigins ? { allowedOrigins: r.allowedOrigins } : {});
244
- if (!o.valid) return C.json(_(null, -32600, o.reason), { status: 403 });
258
+ if (e.method !== "POST") return O.json(i("Method not allowed - use POST", 405), { status: 405 });
259
+ let o = D(e.headers.get("origin"), r.allowedOrigins ? { allowedOrigins: r.allowedOrigins } : {});
260
+ if (!o.valid) return O.json(b(null, -32600, o.reason), { status: 403 });
245
261
  let s = e.headers.get("accept");
246
- if (!h(s)) return C.json(_(null, -32600, "Accept header must include both application/json and text/event-stream"), { status: 400 });
247
- let c = m(Object.fromEntries(e.headers.entries()));
248
- if (!c.ok) return C.json({
262
+ if (!E(s)) return O.json(b(null, -32600, "Accept header must include both application/json and text/event-stream"), { status: 400 });
263
+ let c = S(Object.fromEntries(e.headers.entries()));
264
+ if (!c.ok) return O.json({
249
265
  error: "Unsupported MCP protocol version",
250
266
  supported: c.supported
251
267
  }, { status: 426 });
@@ -256,29 +272,29 @@ function L(e) {
256
272
  l = null;
257
273
  }
258
274
  let u = y(l);
259
- if (!u) return C.json(_(null, -32600, "Invalid JSON-RPC 2.0 request"), { status: 400 });
260
- let w = S(s), E = u.method === "initialize", D = (t, r = 200, i = {}) => C.json(t, {
275
+ if (!u) return O.json(b(null, -32600, "Invalid JSON-RPC 2.0 request"), { status: 400 });
276
+ let d = g(s), f = u.method === "initialize", p = (t, r = 200, i = {}) => O.json(t, {
261
277
  status: r,
262
278
  headers: {
263
- ...n ? T(e, n) : {},
279
+ ...n ? j(e, n) : {},
264
280
  ...i
265
281
  }
266
282
  });
267
283
  try {
268
- let i = await x(u.method, u.params, {
284
+ let i = await _(u.method, u.params, {
269
285
  semanticLayer: a,
270
286
  extractSecurityContext: (e) => t(e),
271
287
  rawRequest: e,
272
288
  rawResponse: null,
273
289
  appEnabled: !!r.app
274
290
  });
275
- if (p(u)) return new C(null, { status: 202 });
276
- let o = E && i && typeof i == "object" && "sessionId" in i ? i.sessionId : void 0, s = {};
277
- o && (s[b] = o);
278
- let c = f(u.id ?? null, i);
279
- if (w) {
291
+ if (C(u)) return new O(null, { status: 202 });
292
+ let o = f && i && typeof i == "object" && "sessionId" in i ? i.sessionId : void 0, s = {};
293
+ o && (s[w] = o);
294
+ let c = h(u.id ?? null, i);
295
+ if (d) {
280
296
  let t = new TextEncoder(), r = v(), i = new ReadableStream({ start(e) {
281
- e.enqueue(t.encode(`id: ${r}\n\n`)), e.enqueue(t.encode(g(c, r))), e.close();
297
+ e.enqueue(t.encode(`id: ${r}\n\n`)), e.enqueue(t.encode(m(c, r))), e.close();
282
298
  } }), a = new Headers({
283
299
  "Content-Type": "text/event-stream",
284
300
  "Cache-Control": "no-cache",
@@ -286,55 +302,55 @@ function L(e) {
286
302
  ...s
287
303
  });
288
304
  if (n) {
289
- let t = T(e, n);
305
+ let t = j(e, n);
290
306
  Object.entries(t).forEach(([e, t]) => a.set(e, t));
291
307
  }
292
- return new C(i, {
308
+ return new O(i, {
293
309
  status: 200,
294
310
  headers: a
295
311
  });
296
312
  }
297
- return D(c, 200, s);
313
+ return p(c, 200, s);
298
314
  } catch (t) {
299
- if (p(u)) return process.env.NODE_ENV !== "test" && console.error("Next.js MCP notification processing error:", t), new C(null, { status: 202 });
315
+ if (C(u)) return process.env.NODE_ENV !== "test" && console.error("Next.js MCP notification processing error:", t), new O(null, { status: 202 });
300
316
  process.env.NODE_ENV !== "test" && console.error("Next.js MCP RPC handler error:", t);
301
- let r = t?.code ?? -32603, i = t?.data, a = t.message || "MCP request failed", o = _(u.id ?? null, r, a, i);
302
- if (w) {
317
+ let r = t?.code ?? -32603, i = t?.data, a = t.message || "MCP request failed", o = b(u.id ?? null, r, a, i);
318
+ if (d) {
303
319
  let t = new TextEncoder(), r = v(), i = new ReadableStream({ start(e) {
304
- e.enqueue(t.encode(`id: ${r}\n\n`)), e.enqueue(t.encode(g(o, r))), e.close();
320
+ e.enqueue(t.encode(`id: ${r}\n\n`)), e.enqueue(t.encode(m(o, r))), e.close();
305
321
  } }), a = new Headers({
306
322
  "Content-Type": "text/event-stream",
307
323
  "Cache-Control": "no-cache",
308
324
  Connection: "keep-alive"
309
325
  });
310
326
  if (n) {
311
- let t = T(e, n);
327
+ let t = j(e, n);
312
328
  Object.entries(t).forEach(([e, t]) => a.set(e, t));
313
329
  }
314
- return new C(i, {
330
+ return new O(i, {
315
331
  status: 200,
316
332
  headers: a
317
333
  });
318
334
  }
319
- return D(o, 200);
335
+ return p(o, 200);
320
336
  }
321
337
  };
322
338
  }
323
- function R(e) {
324
- let { extractSecurityContext: t, cors: n, agent: r } = e;
339
+ function W(e) {
340
+ let { extractSecurityContext: t, cors: n } = A(e), { agent: r } = e;
325
341
  if (!r) throw Error("agent config is required for createAgentChatHandler");
326
- let i = w(e);
342
+ let i = k(e);
327
343
  return async function(e, a) {
328
344
  try {
329
- if (e.method !== "POST") return C.json({ error: "Method not allowed - use POST" }, { status: 405 });
330
- let { handleAgentChat: o } = await import("../handler-RItnSaEl.js"), { message: s, sessionId: c, history: l } = await e.json();
331
- if (!s || typeof s != "string") return C.json({ error: "message is required and must be a string" }, { status: 400 });
345
+ if (e.method !== "POST") return O.json({ error: "Method not allowed - use POST" }, { status: 405 });
346
+ let { handleAgentChat: o } = await import("../handler-3LGcjLtr.js"), { message: s, sessionId: c, history: l } = await e.json();
347
+ if (!s || typeof s != "string") return O.json({ error: "message is required and must be a string" }, { status: 400 });
332
348
  let u = (r.apiKey || "").trim();
333
349
  if (r.allowClientApiKey) {
334
350
  let t = e.headers.get("x-agent-api-key");
335
351
  t && (u = t.trim());
336
352
  }
337
- if (!u) return C.json({ error: "No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header." }, { status: 401 });
353
+ if (!u) return O.json({ error: "No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header." }, { status: 401 });
338
354
  let d = r.allowClientApiKey && e.headers.get("x-agent-provider") || void 0, f = r.allowClientApiKey && e.headers.get("x-agent-model") || void 0, p = r.allowClientApiKey && e.headers.get("x-agent-provider-endpoint") || void 0, m = await t(e, a), h = r.buildSystemContext?.(m), g = new TextEncoder(), _ = new ReadableStream({ async start(e) {
339
355
  try {
340
356
  let t = o({
@@ -369,7 +385,7 @@ function R(e) {
369
385
  Connection: "keep-alive"
370
386
  });
371
387
  if (n) {
372
- let t = T(e, n);
388
+ let t = j(e, n);
373
389
  Object.entries(t).forEach(([e, t]) => v.set(e, t));
374
390
  }
375
391
  return new Response(_, {
@@ -377,20 +393,20 @@ function R(e) {
377
393
  headers: v
378
394
  });
379
395
  } catch (e) {
380
- return process.env.NODE_ENV !== "test" && console.error("Next.js agent chat handler error:", e), C.json({ error: e instanceof Error ? e.message : "Agent chat failed" }, { status: 500 });
396
+ return process.env.NODE_ENV !== "test" && console.error("Next.js agent chat handler error:", e), O.json({ error: e instanceof Error ? e.message : "Agent chat failed" }, { status: 500 });
381
397
  }
382
398
  };
383
399
  }
384
- function z(e) {
400
+ function G(e) {
385
401
  let { mcp: t = { enabled: !0 } } = e, n = {
386
- load: D(e),
387
- meta: O(e),
388
- sql: k(e),
389
- dryRun: A(e),
390
- batch: j(e),
391
- explain: M(e)
402
+ load: N(e),
403
+ meta: P(e),
404
+ sql: F(e),
405
+ dryRun: I(e),
406
+ batch: L(e),
407
+ explain: R(e)
392
408
  };
393
- return t.enabled !== !1 && (n.mcpRpc = L(e)), e.agent && (n.agentChat = R(e)), n;
409
+ return t.enabled !== !1 && (n.mcpRpc = U(e)), e.agent && (n.agentChat = W(e)), n;
394
410
  }
395
411
  //#endregion
396
- export { R as createAgentChatHandler, j as createBatchHandler, z as createCubeHandlers, N as createDiscoverHandler, A as createDryRunHandler, M as createExplainHandler, D as createLoadHandler, I as createMcpLoadHandler, L as createMcpRpcHandler, O as createMetaHandler, E as createOptionsHandler, k as createSqlHandler, P as createSuggestHandler, F as createValidateHandler };
412
+ export { W as createAgentChatHandler, L as createBatchHandler, G as createCubeHandlers, z as createDiscoverHandler, I as createDryRunHandler, R as createExplainHandler, N as createLoadHandler, H as createMcpLoadHandler, U as createMcpRpcHandler, P as createMetaHandler, M as createOptionsHandler, F as createSqlHandler, B as createSuggestHandler, V as createValidateHandler };