drizzle-cube 0.6.3 → 0.6.5

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 (281) hide show
  1. package/dist/adapters/ActivityGridChart.config-Bvi50jl_.cjs +1 -0
  2. package/dist/adapters/ActivityGridChart.config-BwswifOD.js +2 -0
  3. package/dist/adapters/AreaChart.config-Cehf1Kjo.cjs +1 -0
  4. package/dist/adapters/AreaChart.config-DC-gnmli.js +2 -0
  5. package/dist/adapters/BarChart.config-BY53r96T.cjs +1 -0
  6. package/dist/adapters/BarChart.config-DJN5Oqmw.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-9hLT3yMs.js +2 -0
  8. package/dist/adapters/BoxPlotChart.config-D9P4PMTf.cjs +1 -0
  9. package/dist/adapters/BubbleChart.config-CEVSsy7u.js +2 -0
  10. package/dist/adapters/BubbleChart.config-Cji0z0Tb.cjs +1 -0
  11. package/dist/adapters/CandlestickChart.config-DPv76FmM.cjs +1 -0
  12. package/dist/adapters/CandlestickChart.config-tcHTorLu.js +2 -0
  13. package/dist/adapters/DataTable.config-D4txBrlQ.cjs +1 -0
  14. package/dist/adapters/DataTable.config-DrObkanI.js +2 -0
  15. package/dist/adapters/FunnelChart.config-BFYSkibE.js +2 -0
  16. package/dist/adapters/FunnelChart.config-BTSFeha-.cjs +1 -0
  17. package/dist/adapters/GaugeChart.config-BFz6NZfT.js +2 -0
  18. package/dist/adapters/GaugeChart.config-DJKD6oh8.cjs +1 -0
  19. package/dist/adapters/HeatMapChart.config-C3EZl9Sy.cjs +1 -0
  20. package/dist/adapters/HeatMapChart.config-jUCb5NAE.js +2 -0
  21. package/dist/adapters/KpiDelta.config-DhuealNk.js +2 -0
  22. package/dist/adapters/KpiDelta.config-m6FEIeWo.cjs +1 -0
  23. package/dist/adapters/KpiNumber.config-Cmd7eHmg.cjs +1 -0
  24. package/dist/adapters/KpiNumber.config-KQdKrkK-.js +2 -0
  25. package/dist/adapters/KpiText.config-D_pU4jH3.cjs +1 -0
  26. package/dist/adapters/KpiText.config-V8SvhllA.js +2 -0
  27. package/dist/adapters/LineChart.config-BuWM0TJx.js +2 -0
  28. package/dist/adapters/LineChart.config-CsxJ3f5A.cjs +1 -0
  29. package/dist/adapters/MarkdownChart.config-CJdjenj7.cjs +1 -0
  30. package/dist/adapters/MarkdownChart.config-oCWrAuom.js +2 -0
  31. package/dist/adapters/MeasureProfileChart.config-DBLnhtOk.cjs +1 -0
  32. package/dist/adapters/MeasureProfileChart.config-DWg0jzxA.js +2 -0
  33. package/dist/adapters/PieChart.config-D3qI6nbM.cjs +1 -0
  34. package/dist/adapters/PieChart.config-R2rcul2D.js +2 -0
  35. package/dist/adapters/RadarChart.config-BlK8QuDi.js +2 -0
  36. package/dist/adapters/RadarChart.config-fH3ce10I.cjs +1 -0
  37. package/dist/adapters/RadialBarChart.config-CqCnb27I.js +2 -0
  38. package/dist/adapters/RadialBarChart.config-DQQHJOCs.cjs +1 -0
  39. package/dist/adapters/RetentionCombinedChart.config-BFJ8i-kp.js +2 -0
  40. package/dist/adapters/RetentionCombinedChart.config-B_Wd_YjX.cjs +1 -0
  41. package/dist/adapters/RetentionHeatmap.config-BLqu9-Ft.js +2 -0
  42. package/dist/adapters/RetentionHeatmap.config-MvOPw_Dd.cjs +1 -0
  43. package/dist/adapters/SankeyChart.config-C_4u9Xiq.js +2 -0
  44. package/dist/adapters/SankeyChart.config-EH6wsjPr.cjs +1 -0
  45. package/dist/adapters/ScatterChart.config-D-MlQ7mP.js +2 -0
  46. package/dist/adapters/ScatterChart.config-DmwiEBN-.cjs +1 -0
  47. package/dist/adapters/SunburstChart.config-BRr_as_L.js +2 -0
  48. package/dist/adapters/SunburstChart.config-CptDj8e4.cjs +1 -0
  49. package/dist/adapters/TreeMapChart.config-D5wX2xaT.cjs +1 -0
  50. package/dist/adapters/TreeMapChart.config-Dyhwpwq3.js +2 -0
  51. package/dist/adapters/WaterfallChart.config-B_LGJIov.js +2 -0
  52. package/dist/adapters/WaterfallChart.config-Q4Fv196W.cjs +1 -0
  53. package/dist/adapters/compiler-D0v5KJhv.cjs +166 -0
  54. package/dist/adapters/{compiler-LKTN9PTt.js → compiler-ZruQ85ff.js} +247 -238
  55. package/dist/adapters/core/index.cjs +1 -1
  56. package/dist/adapters/core/index.js +1 -1
  57. package/dist/adapters/{core-F1pCQPde.cjs → core-CVqTwOR3.cjs} +1 -1
  58. package/dist/adapters/{core-Bbchr0ui.js → core-DoSUiMmv.js} +60 -60
  59. package/dist/adapters/express/index.cjs +2 -2
  60. package/dist/adapters/express/index.js +80 -75
  61. package/dist/adapters/fastify/index.cjs +2 -2
  62. package/dist/adapters/fastify/index.js +63 -58
  63. package/dist/adapters/{handler-DRZb2ip6.cjs → handler-DyIyrFFp.cjs} +3 -3
  64. package/dist/adapters/{handler-u8FyzPBT.js → handler-j74EJDdo.js} +28 -28
  65. package/dist/adapters/hono/index.cjs +2 -2
  66. package/dist/adapters/hono/index.js +57 -52
  67. package/dist/adapters/mcp-tools.cjs +1 -1
  68. package/dist/adapters/mcp-tools.js +2 -2
  69. package/dist/adapters/mcp-transport-BuU5CrKL.cjs +40 -0
  70. package/dist/adapters/mcp-transport-l8DhKzR5.js +601 -0
  71. package/dist/adapters/mcp-transport.d.ts +21 -3
  72. package/dist/adapters/nextjs/index.cjs +1 -1
  73. package/dist/adapters/nextjs/index.d.ts +10 -0
  74. package/dist/adapters/nextjs/index.js +114 -105
  75. package/dist/{server/openai-CmMzrs1Y.js → adapters/openai-BCSKRcbD.js} +10 -10
  76. package/dist/{server/openai-DhzGY9R4.js → adapters/openai-BjR3ohaS.js} +1 -1
  77. package/dist/{server/openai-B4kAJTSD.cjs → adapters/openai-ClVVLjNl.cjs} +2 -2
  78. package/dist/adapters/{openai-Cdf2wWZA.cjs → openai-CsVXOcJZ.cjs} +1 -1
  79. package/dist/adapters/utils-CBR-9AMD.cjs +128 -0
  80. package/dist/adapters/{utils-BPWZsX7k.js → utils-U7gV5wQL.js} +789 -788
  81. package/dist/adapters/utils.cjs +1 -1
  82. package/dist/adapters/utils.d.ts +16 -4
  83. package/dist/adapters/utils.js +1 -1
  84. package/dist/cjs/adapters/mcp-transport.d.ts +21 -3
  85. package/dist/cjs/adapters/nextjs/index.d.ts +10 -0
  86. package/dist/cjs/adapters/utils.d.ts +16 -4
  87. package/dist/cjs/client/components/AnalysisBuilder/utils/filterUtils.d.ts +4 -10
  88. package/dist/cjs/client/components/shared/utils.d.ts +2 -1
  89. package/dist/cjs/client/shared/filters/filterOperations.d.ts +95 -0
  90. package/dist/cjs/client/shared/filters/index.d.ts +10 -0
  91. package/dist/cjs/client/shared/filters/operators.d.ts +23 -0
  92. package/dist/cjs/client/shared/index.d.ts +3 -2
  93. package/dist/cjs/client/shared/types.d.ts +3 -10
  94. package/dist/cjs/client/shared/utils.d.ts +1 -59
  95. package/dist/cjs/client/utils/filterUtils.d.ts +2 -9
  96. package/dist/cjs/server/executors/sqlite-executor.d.ts +8 -2
  97. package/dist/cjs/server/logical-plan/logical-plan-builder.d.ts +0 -5
  98. package/dist/cjs/server/logical-plan/schema-builder.d.ts +19 -0
  99. package/dist/client/charts.js +13 -13
  100. package/dist/client/chunks/ConfirmModal-D6eLc9NO.js +3283 -0
  101. package/dist/client/chunks/ConfirmModal-D6eLc9NO.js.map +1 -0
  102. package/dist/client/chunks/{DashboardEditModal-CWurUU2B.js → DashboardEditModal-DFQSxR_C.js} +1157 -4011
  103. package/dist/client/chunks/DashboardEditModal-DFQSxR_C.js.map +1 -0
  104. package/dist/client/chunks/{RetentionCombinedChart-BgbDhsPz.js → RetentionCombinedChart-DY7wKLs5.js} +3 -3
  105. package/dist/client/chunks/{RetentionCombinedChart-BgbDhsPz.js.map → RetentionCombinedChart-DY7wKLs5.js.map} +1 -1
  106. package/dist/client/chunks/{RetentionHeatmap-DjXZaTPq.js → RetentionHeatmap-iNCG-dLd.js} +2 -2
  107. package/dist/client/chunks/{RetentionHeatmap-DjXZaTPq.js.map → RetentionHeatmap-iNCG-dLd.js.map} +1 -1
  108. package/dist/client/chunks/{analysis-builder-Uj_Fxv0-.js → analysis-builder-CBZ7lOC-.js} +323 -323
  109. package/dist/client/chunks/{analysis-builder-Uj_Fxv0-.js.map → analysis-builder-CBZ7lOC-.js.map} +1 -1
  110. package/dist/client/chunks/{analysis-builder-shared-AdAYIfj_.js → analysis-builder-shared-8alCn-zw.js} +989 -1064
  111. package/dist/client/chunks/analysis-builder-shared-8alCn-zw.js.map +1 -0
  112. package/dist/client/chunks/{chart-activity-grid-DX0SJbxs.js → chart-activity-grid-DDqFVWoa.js} +5 -2
  113. package/dist/client/chunks/{chart-activity-grid-DX0SJbxs.js.map → chart-activity-grid-DDqFVWoa.js.map} +1 -1
  114. package/dist/client/chunks/{chart-area-of01_62R.js → chart-area-BHxPNsmc.js} +2 -2
  115. package/dist/client/chunks/{chart-area-of01_62R.js.map → chart-area-BHxPNsmc.js.map} +1 -1
  116. package/dist/client/chunks/{chart-bar-BqelQE_I.js → chart-bar-DAO3PPcE.js} +3 -3
  117. package/dist/client/chunks/{chart-bar-BqelQE_I.js.map → chart-bar-DAO3PPcE.js.map} +1 -1
  118. package/dist/client/chunks/{chart-box-plot-kkBixZ27.js → chart-box-plot-CUpFyQQk.js} +2 -2
  119. package/dist/client/chunks/{chart-box-plot-kkBixZ27.js.map → chart-box-plot-CUpFyQQk.js.map} +1 -1
  120. package/dist/client/chunks/{chart-bubble-B2he1--4.js → chart-bubble-DvP_6_n9.js} +2 -2
  121. package/dist/client/chunks/{chart-bubble-B2he1--4.js.map → chart-bubble-DvP_6_n9.js.map} +1 -1
  122. package/dist/client/chunks/{chart-candlestick-DZp19Tzh.js → chart-candlestick-Dx8ZCMzl.js} +2 -2
  123. package/dist/client/chunks/{chart-candlestick-DZp19Tzh.js.map → chart-candlestick-Dx8ZCMzl.js.map} +1 -1
  124. package/dist/client/chunks/{chart-data-table-D4g5_jfF.js → chart-data-table-BP6DMdom.js} +32 -16
  125. package/dist/client/chunks/chart-data-table-BP6DMdom.js.map +1 -0
  126. package/dist/client/chunks/{chart-funnel-CToKSBaL.js → chart-funnel-xeVGBy-p.js} +2 -2
  127. package/dist/client/chunks/{chart-funnel-CToKSBaL.js.map → chart-funnel-xeVGBy-p.js.map} +1 -1
  128. package/dist/client/chunks/{chart-gauge-DTVezSk7.js → chart-gauge-DXQ4r3cb.js} +3 -3
  129. package/dist/client/chunks/{chart-gauge-DTVezSk7.js.map → chart-gauge-DXQ4r3cb.js.map} +1 -1
  130. package/dist/client/chunks/{chart-heat-map-DTuUl0BR.js → chart-heat-map-Pnk6rhqQ.js} +3 -3
  131. package/dist/client/chunks/{chart-heat-map-DTuUl0BR.js.map → chart-heat-map-Pnk6rhqQ.js.map} +1 -1
  132. package/dist/client/chunks/{chart-kpi-delta-BvWOt8-D.js → chart-kpi-delta-nXQnRRBr.js} +3 -3
  133. package/dist/client/chunks/{chart-kpi-delta-BvWOt8-D.js.map → chart-kpi-delta-nXQnRRBr.js.map} +1 -1
  134. package/dist/client/chunks/{chart-kpi-number-xgZmMiQY.js → chart-kpi-number-m8UGJfBr.js} +5 -5
  135. package/dist/client/chunks/{chart-kpi-number-xgZmMiQY.js.map → chart-kpi-number-m8UGJfBr.js.map} +1 -1
  136. package/dist/client/chunks/{chart-kpi-text-ZO3eFi7t.js → chart-kpi-text-CurpqmaD.js} +7 -4
  137. package/dist/client/chunks/{chart-kpi-text-ZO3eFi7t.js.map → chart-kpi-text-CurpqmaD.js.map} +1 -1
  138. package/dist/client/chunks/{chart-line-DKgrQA6c.js → chart-line-sJK-cJc0.js} +3 -3
  139. package/dist/client/chunks/{chart-line-DKgrQA6c.js.map → chart-line-sJK-cJc0.js.map} +1 -1
  140. package/dist/client/chunks/{chart-markdown-CV75S_zL.js → chart-markdown-BVrqqygz.js} +1263 -1192
  141. package/dist/client/chunks/chart-markdown-BVrqqygz.js.map +1 -0
  142. package/dist/client/chunks/{chart-measure-profile-Ket8fJyf.js → chart-measure-profile-k9_QDQbB.js} +3 -3
  143. package/dist/client/chunks/{chart-measure-profile-Ket8fJyf.js.map → chart-measure-profile-k9_QDQbB.js.map} +1 -1
  144. package/dist/client/chunks/{chart-pie-ByieAX5H.js → chart-pie-BDaaYt7a.js} +3 -3
  145. package/dist/client/chunks/{chart-pie-ByieAX5H.js.map → chart-pie-BDaaYt7a.js.map} +1 -1
  146. package/dist/client/chunks/{chart-radar-CiSwHWp4.js → chart-radar-Bz07PIVe.js} +3 -3
  147. package/dist/client/chunks/{chart-radar-CiSwHWp4.js.map → chart-radar-Bz07PIVe.js.map} +1 -1
  148. package/dist/client/chunks/{chart-radial-bar-BF6Mhl6f.js → chart-radial-bar-DpyxKQMj.js} +3 -3
  149. package/dist/client/chunks/{chart-radial-bar-BF6Mhl6f.js.map → chart-radial-bar-DpyxKQMj.js.map} +1 -1
  150. package/dist/client/chunks/{chart-sankey-DjrvKw6K.js → chart-sankey-BAeNbI-p.js} +2 -2
  151. package/dist/client/chunks/{chart-sankey-DjrvKw6K.js.map → chart-sankey-BAeNbI-p.js.map} +1 -1
  152. package/dist/client/chunks/{chart-scatter-Dd9WFqnS.js → chart-scatter-CRhGLCcy.js} +3 -3
  153. package/dist/client/chunks/{chart-scatter-Dd9WFqnS.js.map → chart-scatter-CRhGLCcy.js.map} +1 -1
  154. package/dist/client/chunks/{chart-sunburst-leGpuDj7.js → chart-sunburst-D3wV5OrK.js} +3 -3
  155. package/dist/client/chunks/{chart-sunburst-leGpuDj7.js.map → chart-sunburst-D3wV5OrK.js.map} +1 -1
  156. package/dist/client/chunks/{chart-tree-map-Ceq5sLZA.js → chart-tree-map-iI3ewOKY.js} +3 -3
  157. package/dist/client/chunks/{chart-tree-map-Ceq5sLZA.js.map → chart-tree-map-iI3ewOKY.js.map} +1 -1
  158. package/dist/client/chunks/{chart-waterfall-DyvQReN5.js → chart-waterfall-BrrYTZfs.js} +3 -3
  159. package/dist/client/chunks/{chart-waterfall-DyvQReN5.js.map → chart-waterfall-BrrYTZfs.js.map} +1 -1
  160. package/dist/client/chunks/{charts-core-DaXSt1Dd.js → charts-core-Cs-UIsQa.js} +2 -2
  161. package/dist/client/chunks/{charts-core-DaXSt1Dd.js.map → charts-core-Cs-UIsQa.js.map} +1 -1
  162. package/dist/client/chunks/charts-loader-DAJbAD7a.js +84 -0
  163. package/dist/client/chunks/{charts-loader-B0DOQMFH.js.map → charts-loader-DAJbAD7a.js.map} +1 -1
  164. package/dist/client/chunks/core-D7vPfUIe.js.map +1 -1
  165. package/dist/client/chunks/{dist-zPWyTBdU.js → dist-BwQr11Fz.js} +251 -252
  166. package/dist/client/chunks/{dist-zPWyTBdU.js.map → dist-BwQr11Fz.js.map} +1 -1
  167. package/dist/client/chunks/{exceljs.min-CIqBqwTW.js → exceljs.min-Dey-qIFL.js} +16 -16
  168. package/dist/client/chunks/{exceljs.min-CIqBqwTW.js.map → exceljs.min-Dey-qIFL.js.map} +1 -1
  169. package/dist/client/chunks/javascript-DFnKaHmQ.js.map +1 -1
  170. package/dist/client/chunks/retention-ChW9jYdy.js.map +1 -1
  171. package/dist/client/chunks/{schema-visualization-DJPTktM6.js → schema-visualization-BGT_cNon.js} +12 -12
  172. package/dist/client/chunks/{schema-visualization-DJPTktM6.js.map → schema-visualization-BGT_cNon.js.map} +1 -1
  173. package/dist/client/chunks/sql-CmVzGP4w.js.map +1 -1
  174. package/dist/client/chunks/syntaxHighlighting-Bq2Bj9Xt.js +30 -0
  175. package/dist/client/chunks/syntaxHighlighting-Bq2Bj9Xt.js.map +1 -0
  176. package/dist/client/chunks/{useDirtyStateTracking-BY_IIG1n.js → useDebounce-7suCFq9v.js} +250 -653
  177. package/dist/client/chunks/useDebounce-7suCFq9v.js.map +1 -0
  178. package/dist/client/chunks/useDirtyStateTracking-D2OiqKoQ.js +66 -0
  179. package/dist/client/chunks/useDirtyStateTracking-D2OiqKoQ.js.map +1 -0
  180. package/dist/client/chunks/{useExplainAI-PjMBmj2p.js → useExplainAI-CEf04DPE.js} +14 -14
  181. package/dist/client/chunks/{useExplainAI-PjMBmj2p.js.map → useExplainAI-CEf04DPE.js.map} +1 -1
  182. package/dist/client/chunks/useNotebookLayout-Ck3Z3uzg.js.map +1 -1
  183. package/dist/client/chunks/utils-DjLiJKS_.js +104 -0
  184. package/dist/client/chunks/utils-DjLiJKS_.js.map +1 -0
  185. package/dist/client/chunks/{vendor-D4jADu8t.js → vendor-DFAQ4Ucl.js} +5 -3
  186. package/dist/client/chunks/{vendor-D4jADu8t.js.map → vendor-DFAQ4Ucl.js.map} +1 -1
  187. package/dist/client/components/AnalysisBuilder/utils/filterUtils.d.ts +4 -10
  188. package/dist/client/components/shared/utils.d.ts +2 -1
  189. package/dist/client/components.js +4 -3
  190. package/dist/client/hooks.js +5 -4
  191. package/dist/client/icons.js +1 -1
  192. package/dist/client/index.js +34 -30
  193. package/dist/client/index.js.map +1 -1
  194. package/dist/client/providers.js +1 -1
  195. package/dist/client/schema.js +1 -1
  196. package/dist/client/shared/filters/filterOperations.d.ts +95 -0
  197. package/dist/client/shared/filters/index.d.ts +10 -0
  198. package/dist/client/shared/filters/operators.d.ts +23 -0
  199. package/dist/client/shared/index.d.ts +3 -2
  200. package/dist/client/shared/types.d.ts +3 -10
  201. package/dist/client/shared/utils.d.ts +1 -59
  202. package/dist/client/styles.css +1 -1
  203. package/dist/client/utils/filterUtils.d.ts +2 -9
  204. package/dist/client/utils.js +32 -6
  205. package/dist/client/utils.js.map +1 -0
  206. package/dist/client-bundle-stats.html +1 -1
  207. package/dist/mcp-app/mcp-app.html +145 -50
  208. package/dist/server/executors/sqlite-executor.d.ts +8 -2
  209. package/dist/server/index.cjs +34 -34
  210. package/dist/server/index.js +1557 -1547
  211. package/dist/server/logical-plan/logical-plan-builder.d.ts +0 -5
  212. package/dist/server/logical-plan/schema-builder.d.ts +19 -0
  213. package/dist/{adapters/openai-CmMzrs1Y.js → server/openai-BCSKRcbD.js} +10 -10
  214. package/dist/{adapters/openai-DhzGY9R4.js → server/openai-BjR3ohaS.js} +1 -1
  215. package/dist/{adapters/openai-B4kAJTSD.cjs → server/openai-ClVVLjNl.cjs} +2 -2
  216. package/dist/server/{openai-Cdf2wWZA.cjs → openai-CsVXOcJZ.cjs} +1 -1
  217. package/package.json +11 -7
  218. package/dist/adapters/ActivityGridChart.config-BtECymia.cjs +0 -1
  219. package/dist/adapters/ActivityGridChart.config-CTd5HYjI.js +0 -2
  220. package/dist/adapters/AreaChart.config-1B8iQnfn.js +0 -2
  221. package/dist/adapters/AreaChart.config-hnncyQL4.cjs +0 -1
  222. package/dist/adapters/BarChart.config-C-QCf1rL.cjs +0 -1
  223. package/dist/adapters/BarChart.config-CFelK1qP.js +0 -2
  224. package/dist/adapters/BoxPlotChart.config-CD9WEPyF.js +0 -2
  225. package/dist/adapters/BoxPlotChart.config-DEbLA0BX.cjs +0 -1
  226. package/dist/adapters/BubbleChart.config-B_M4hzzV.js +0 -2
  227. package/dist/adapters/BubbleChart.config-dRZZlAke.cjs +0 -1
  228. package/dist/adapters/CandlestickChart.config-Dsil2Fop.cjs +0 -1
  229. package/dist/adapters/CandlestickChart.config-fuhyFvob.js +0 -2
  230. package/dist/adapters/DataTable.config-q2gqBi6t.cjs +0 -1
  231. package/dist/adapters/DataTable.config-wIQnHX5R.js +0 -2
  232. package/dist/adapters/FunnelChart.config-Dz710ssx.js +0 -2
  233. package/dist/adapters/FunnelChart.config-YNP9CeS-.cjs +0 -1
  234. package/dist/adapters/GaugeChart.config-BG9FcMCn.cjs +0 -1
  235. package/dist/adapters/GaugeChart.config-CgwniXkd.js +0 -2
  236. package/dist/adapters/HeatMapChart.config-1zSMXXoN.cjs +0 -1
  237. package/dist/adapters/HeatMapChart.config-YVEWx6s5.js +0 -2
  238. package/dist/adapters/KpiDelta.config-BWvYXuFp.cjs +0 -1
  239. package/dist/adapters/KpiDelta.config-C_dYM64q.js +0 -2
  240. package/dist/adapters/KpiNumber.config-CXg6toZG.js +0 -2
  241. package/dist/adapters/KpiNumber.config-CZmV-yU1.cjs +0 -1
  242. package/dist/adapters/KpiText.config-BY-SJvAF.js +0 -2
  243. package/dist/adapters/KpiText.config-GSIxy0CE.cjs +0 -1
  244. package/dist/adapters/LineChart.config-CJtF8SOu.js +0 -2
  245. package/dist/adapters/LineChart.config-d0y60gw9.cjs +0 -1
  246. package/dist/adapters/MarkdownChart.config-B6w0spya.cjs +0 -1
  247. package/dist/adapters/MarkdownChart.config-BuIQcWOn.js +0 -2
  248. package/dist/adapters/MeasureProfileChart.config-Bo2n5Ae5.cjs +0 -1
  249. package/dist/adapters/MeasureProfileChart.config-C5d34lsc.js +0 -2
  250. package/dist/adapters/PieChart.config-CDxfXCIt.cjs +0 -1
  251. package/dist/adapters/PieChart.config-CuZxQc5m.js +0 -2
  252. package/dist/adapters/RadarChart.config-DpdVWyh5.cjs +0 -1
  253. package/dist/adapters/RadarChart.config-KrxwaaGu.js +0 -2
  254. package/dist/adapters/RadialBarChart.config-DpRZd0FW.js +0 -2
  255. package/dist/adapters/RadialBarChart.config-faIY4jpE.cjs +0 -1
  256. package/dist/adapters/RetentionCombinedChart.config-CUnScqnS.cjs +0 -1
  257. package/dist/adapters/RetentionCombinedChart.config-Dd8FuawP.js +0 -2
  258. package/dist/adapters/RetentionHeatmap.config-CPd6GeoQ.js +0 -2
  259. package/dist/adapters/RetentionHeatmap.config-CPlHbLom.cjs +0 -1
  260. package/dist/adapters/SankeyChart.config-DbIUqi-H.cjs +0 -1
  261. package/dist/adapters/SankeyChart.config-kzAnW0C7.js +0 -2
  262. package/dist/adapters/ScatterChart.config-4Okvn27v.js +0 -2
  263. package/dist/adapters/ScatterChart.config-4f9nNw3e.cjs +0 -1
  264. package/dist/adapters/SunburstChart.config-BsUQkIM_.js +0 -2
  265. package/dist/adapters/SunburstChart.config-lvnYkWs7.cjs +0 -1
  266. package/dist/adapters/TreeMapChart.config-S0qsgAFW.js +0 -2
  267. package/dist/adapters/TreeMapChart.config-jbwKsTYt.cjs +0 -1
  268. package/dist/adapters/WaterfallChart.config-CDQ74-pS.cjs +0 -1
  269. package/dist/adapters/WaterfallChart.config-XdtH-O5g.js +0 -2
  270. package/dist/adapters/compiler-ChGO4ZLU.cjs +0 -166
  271. package/dist/adapters/mcp-transport-Bw_zqky2.js +0 -591
  272. package/dist/adapters/mcp-transport-CNIPoe1i.cjs +0 -40
  273. package/dist/adapters/utils-_whV4fXL.cjs +0 -128
  274. package/dist/client/chunks/DashboardEditModal-CWurUU2B.js.map +0 -1
  275. package/dist/client/chunks/analysis-builder-shared-AdAYIfj_.js.map +0 -1
  276. package/dist/client/chunks/chart-data-table-D4g5_jfF.js.map +0 -1
  277. package/dist/client/chunks/chart-markdown-CV75S_zL.js.map +0 -1
  278. package/dist/client/chunks/charts-loader-B0DOQMFH.js +0 -84
  279. package/dist/client/chunks/useDirtyStateTracking-BY_IIG1n.js.map +0 -1
  280. package/dist/client/chunks/utils-Cq-j5E5I.js +0 -155
  281. package/dist/client/chunks/utils-Cq-j5E5I.js.map +0 -1
@@ -82,12 +82,16 @@ export declare const MCP_PROTOCOL_VERSION_HEADER = "mcp-protocol-version";
82
82
  export declare function validateAcceptHeader(accept: string | null | undefined): boolean;
83
83
  export interface OriginValidationOptions {
84
84
  /**
85
- * List of allowed origins (e.g., ['http://localhost:3000', 'https://myapp.com'])
86
- * If not provided, defaults to localhost origins only
85
+ * List of allowed origins (e.g., ['http://localhost:3000', 'https://myapp.com']).
86
+ * If not provided, the default policy admits loopback origins (localhost / 127.x /
87
+ * [::1]) plus non-browser clients that send no Origin header; any other browser
88
+ * Origin is rejected. Include the wildcard `'*'` to allow ALL origins (permissive
89
+ * mode — discouraged; prefer listing exact origins or enabling auth).
87
90
  */
88
91
  allowedOrigins?: string[];
89
92
  /**
90
- * If true, allows requests without an Origin header (non-browser clients)
93
+ * If true, allows requests without an Origin header (non-browser / server-to-server
94
+ * clients such as the Claude MCP connector, curl, Postman).
91
95
  * @default true
92
96
  */
93
97
  allowMissingOrigin?: boolean;
@@ -97,6 +101,11 @@ export interface OriginValidationOptions {
97
101
  * Servers MUST validate Origin to prevent DNS rebinding attacks.
98
102
  * If Origin is present and invalid, MUST respond with 403 Forbidden.
99
103
  *
104
+ * Default policy (no `allowedOrigins`): admit loopback origins and requests with no
105
+ * Origin header (non-browser / server-to-server clients); reject every other browser
106
+ * Origin. Configure `allowedOrigins` to expose a browser front-end, or include `'*'`
107
+ * to restore fully-permissive behavior.
108
+ *
100
109
  * @returns { valid: true } if allowed, or { valid: false, reason: string } if blocked
101
110
  */
102
111
  export declare function validateOriginHeader(origin: string | null | undefined, options?: OriginValidationOptions): {
@@ -105,6 +114,15 @@ export declare function validateOriginHeader(origin: string | null | undefined,
105
114
  valid: false;
106
115
  reason: string;
107
116
  };
117
+ /**
118
+ * Build {@link OriginValidationOptions} from an MCP config, forwarding the
119
+ * configured allowlist (if any) so `validateOriginHeader` applies the same policy
120
+ * for POST, GET, and DELETE `/mcp` across every adapter. When `allowedOrigins` is
121
+ * absent, the loopback-only default policy applies.
122
+ */
123
+ export declare function originOptionsFromMcp(mcp: {
124
+ allowedOrigins?: string[];
125
+ }): OriginValidationOptions;
108
126
  /**
109
127
  * Extract a Bearer token from an Authorization header.
110
128
  * Returns the token string if present and well-formed, or null otherwise.
@@ -1 +1 @@
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("next/server");function a(e,t){let r=new TextEncoder,a=n._(),o=new ReadableStream({start(e){e.enqueue(r.encode(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},a,15e3)))}}),s=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});return t(e,s),new i.NextResponse(o,{status:200,headers:s})}function o(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 s(e){return{extractSecurityContext:async(t,n)=>r.o(await e.extractSecurityContext(t,n),r.a(e=>t.headers.get(e))),cors:e.cors?{...e.cors,allowedHeaders:r.i(e.cors.allowedHeaders)}:void 0}}function c(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 l(e){let t=r.t({semanticLayer:o(e),onError:e=>{process.env.NODE_ENV!==`test`&&console.error(`Next.js handler error:`,e)},mcp:e.mcp}),n=e.cors?{...e.cors,allowedHeaders:r.i(e.cors.allowedHeaders)}:void 0;return{httpHandler:t,corsHeaders:e=>n?c(e,n):{},baseContext:(t,n)=>()=>e.extractSecurityContext(t,n)}}function u(e,t){let n={};return{getHeader:t=>e.headers.get(t)??void 0,getBody:async()=>{try{return await e.json()}catch{return null}},getQueryParam:t=>e.nextUrl.searchParams.get(t)??void 0,send:(e,r)=>i.NextResponse.json(r,{status:e,headers:{...t,...n}}),setHeader:(e,t)=>{n[e]=t},sendEmpty:e=>new i.NextResponse(null,{status:e,headers:{...t,...n}}),sendSse:(e,r)=>new i.NextResponse(r,{status:e,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...t,...n}})}}function d(e){return async function(t){let n=c(t,{...e,allowedHeaders:r.i(e.allowedHeaders)});return new Response(null,{status:200,headers:n})}}function f(t){let{httpHandler:n,corsHeaders:r,baseContext:a}=l(t);return async function(t,o){let s=u(t,r(t));return t.method===`POST`?n.handleLoadPost(s,a(t,o)):t.method===`GET`?n.handleLoadGet(s,a(t,o)):i.NextResponse.json(e.i(`Method not allowed`,405),{status:405})}}function p(e){let{httpHandler:t,corsHeaders:n}=l(e);return async function(e,r){return t.handleMetaGet(u(e,n(e)))}}function m(t){let{httpHandler:n,corsHeaders:r,baseContext:a}=l(t);return async function(t,o){let s=u(t,r(t));return t.method===`POST`?n.handleSqlPost(s,a(t,o)):t.method===`GET`?n.handleSqlGet(s,a(t,o)):i.NextResponse.json(e.i(`Method not allowed`,405),{status:405})}}function h(e){let{httpHandler:t,corsHeaders:n,baseContext:r}=l(e);return async function(e,a){let o=u(e,n(e));return e.method===`POST`?t.handleDryRunPost(o,r(e,a)):e.method===`GET`?t.handleDryRunGet(o,r(e,a)):i.NextResponse.json({error:`Method not allowed`,valid:!1},{status:405})}}function g(t){let{httpHandler:n,corsHeaders:r,baseContext:a}=l(t);return async function(t,o){return t.method===`POST`?n.handleBatchPost(u(t,r(t)),a(t,o)):i.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405})}}function _(e){let{httpHandler:t,corsHeaders:n,baseContext:r}=l(e);return async function(e,a){return e.method===`POST`?t.handleExplainPost(u(e,n(e)),r(e,a)):i.NextResponse.json({error:`Method not allowed`},{status:405})}}function v(t){let{cors:n}=s(t),r=o(t);return async function(t,a){try{if(t.method!==`POST`)return i.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await e.p(r,await t.json());return i.NextResponse.json(a,{headers:n?c(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js discover handler error:`,t),i.NextResponse.json(e.i(t instanceof Error?t.message:`Discovery failed`,500),{status:500})}}}function y(t){let{cors:n}=s(t),r=o(t);return async function(t,a){try{if(t.method!==`POST`)return i.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await t.json();if(!a.naturalLanguage)return i.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let o=await e.d(r,a);return i.NextResponse.json(o,{headers:n?c(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js suggest handler error:`,t),i.NextResponse.json(e.i(t instanceof Error?t.message:`Query suggestion failed`,500),{status:500})}}}function b(t){let{cors:n}=s(t),r=o(t);return async function(t,a){try{if(t.method!==`POST`)return i.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await t.json();if(!a.query)return i.NextResponse.json(e.i(`query field is required`,400),{status:400});let o=await e.f(r,a);return i.NextResponse.json(o,{headers:n?c(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js validate handler error:`,t),i.NextResponse.json(e.i(t instanceof Error?t.message:`Query validation failed`,500),{status:500})}}}function x(t){let{extractSecurityContext:n,cors:r}=s(t),a=o(t);return async function(t,o){try{if(t.method!==`POST`)return i.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let s=await t.json();if(!s.query)return i.NextResponse.json(e.i(`query field is required`,400),{status:400});let l=await e.m(a,await n(t,o),s);return i.NextResponse.json(l,{headers:r?c(t,r):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP load handler error:`,t),i.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function S(t){let{httpHandler:r,corsHeaders:o,baseContext:s}=l(t),{mcp:c={enabled:!0}}=t,d=(e,t)=>{Object.entries(o(e)).forEach(([e,n])=>t.set(e,n))};return async function(t,l){return c.resourceMetadataUrl&&!n.u(t.headers.get(`authorization`))?i.NextResponse.json({error:`Bearer token required`},{status:401,headers:{"WWW-Authenticate":n.c(c.resourceMetadataUrl)}}):t.method===`DELETE`?i.NextResponse.json({error:`Session termination not supported`},{status:405}):t.method===`GET`?a(t,d):t.method===`POST`?r.handleMcpPost(u(t,o(t)),s(t,l)):i.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405})}}function C(e){let{cors:t}=s(e),{agent:n}=e;if(!n)throw Error(`agent config is required for createAgentChatHandler`);let a=o(e);return async function(o,s){try{if(o.method!==`POST`)return i.NextResponse.json({error:`Method not allowed - use POST`},{status:405});let{handleAgentChat:l}=await Promise.resolve().then(()=>require("../handler-DRZb2ip6.cjs")),{message:u,sessionId:d,history:f}=await o.json();if(!u||typeof u!=`string`)return i.NextResponse.json({error:`message is required and must be a string`},{status:400});let p=(n.apiKey||``).trim();if(n.allowClientApiKey){let e=o.headers.get(`x-agent-api-key`);e&&(p=e.trim())}if(!p)return i.NextResponse.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},{status:401});let m=n.allowClientApiKey&&o.headers.get(`x-agent-provider`)||void 0,h=n.allowClientApiKey&&o.headers.get(`x-agent-model`)||void 0,g=n.allowClientApiKey&&o.headers.get(`x-agent-provider-endpoint`)||void 0,_=r.r(await e.extractSecurityContext(o,s),e=>o.headers.get(e)??void 0),v=n.buildSystemContext?.(_),y=new TextEncoder,b=new ReadableStream({async start(e){try{let t=l({message:u,sessionId:d,history:f,semanticLayer:a,securityContext:_,agentConfig:n,apiKey:p,systemContext:v,providerOverride:m,modelOverride:h,baseURLOverride:g});for await(let n of t){let t=`data: ${JSON.stringify(n)}\n\n`;e.enqueue(y.encode(t))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(y.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}}),x=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(t){let e=c(o,t);Object.entries(e).forEach(([e,t])=>x.set(e,t))}return new Response(b,{status:200,headers:x})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js agent chat handler error:`,e),i.NextResponse.json({error:e instanceof Error?e.message:`Agent chat failed`},{status:500})}}}function w(e){let{mcp:t={enabled:!0}}=e,n={load:f(e),meta:p(e),sql:m(e),dryRun:h(e),batch:g(e),explain:_(e)};return t.enabled!==!1&&(n.mcpRpc=S(e)),e.agent&&(n.agentChat=C(e)),n}exports.createAgentChatHandler=C,exports.createBatchHandler=g,exports.createCubeHandlers=w,exports.createDiscoverHandler=v,exports.createDryRunHandler=h,exports.createExplainHandler=_,exports.createLoadHandler=f,exports.createMcpLoadHandler=x,exports.createMcpRpcHandler=S,exports.createMetaHandler=p,exports.createOptionsHandler=d,exports.createSqlHandler=m,exports.createSuggestHandler=y,exports.createValidateHandler=b;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-CBR-9AMD.cjs"),t=require("../compiler-D0v5KJhv.cjs"),n=require("../mcp-transport-BuU5CrKL.cjs"),r=require("../core-CVqTwOR3.cjs");let i=require("next/server");function a(e,t){let r=new TextEncoder,a=n.v(),o=new ReadableStream({start(e){e.enqueue(r.encode(n.x({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},a,15e3)))}}),s=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});return t(e,s),new i.NextResponse(o,{status:200,headers:s})}function o(e){if(e.semanticLayer)return e.semanticLayer;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 s(e){return{extractSecurityContext:async(t,n)=>r.o(await e.extractSecurityContext(t,n),r.a(e=>t.headers.get(e))),cors:e.cors?{...e.cors,allowedHeaders:r.i(e.cors.allowedHeaders)}:void 0}}function c(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 l(e){let t=r.t({semanticLayer:o(e),onError:e=>{process.env.NODE_ENV!==`test`&&console.error(`Next.js handler error:`,e)},mcp:e.mcp}),n=e.cors?{...e.cors,allowedHeaders:r.i(e.cors.allowedHeaders)}:void 0;return{httpHandler:t,corsHeaders:e=>n?c(e,n):{},baseContext:(t,n)=>()=>e.extractSecurityContext(t,n)}}function u(e,t){let n={};return{getHeader:t=>e.headers.get(t)??void 0,getBody:async()=>{try{return await e.json()}catch{return null}},getQueryParam:t=>e.nextUrl.searchParams.get(t)??void 0,send:(e,r)=>i.NextResponse.json(r,{status:e,headers:{...t,...n}}),setHeader:(e,t)=>{n[e]=t},sendEmpty:e=>new i.NextResponse(null,{status:e,headers:{...t,...n}}),sendSse:(e,r)=>new i.NextResponse(r,{status:e,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...t,...n}})}}function d(e){return async function(t){let n=c(t,{...e,allowedHeaders:r.i(e.allowedHeaders)});return new Response(null,{status:200,headers:n})}}function f(t){let{httpHandler:n,corsHeaders:r,baseContext:a}=l(t);return async function(t,o){let s=u(t,r(t));return t.method===`POST`?n.handleLoadPost(s,a(t,o)):t.method===`GET`?n.handleLoadGet(s,a(t,o)):i.NextResponse.json(e.i(`Method not allowed`,405),{status:405})}}function p(e){let{httpHandler:t,corsHeaders:n}=l(e);return async function(e,r){return t.handleMetaGet(u(e,n(e)))}}function m(t){let{httpHandler:n,corsHeaders:r,baseContext:a}=l(t);return async function(t,o){let s=u(t,r(t));return t.method===`POST`?n.handleSqlPost(s,a(t,o)):t.method===`GET`?n.handleSqlGet(s,a(t,o)):i.NextResponse.json(e.i(`Method not allowed`,405),{status:405})}}function h(e){let{httpHandler:t,corsHeaders:n,baseContext:r}=l(e);return async function(e,a){let o=u(e,n(e));return e.method===`POST`?t.handleDryRunPost(o,r(e,a)):e.method===`GET`?t.handleDryRunGet(o,r(e,a)):i.NextResponse.json({error:`Method not allowed`,valid:!1},{status:405})}}function g(t){let{httpHandler:n,corsHeaders:r,baseContext:a}=l(t);return async function(t,o){return t.method===`POST`?n.handleBatchPost(u(t,r(t)),a(t,o)):i.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405})}}function _(e){let{httpHandler:t,corsHeaders:n,baseContext:r}=l(e);return async function(e,a){return e.method===`POST`?t.handleExplainPost(u(e,n(e)),r(e,a)):i.NextResponse.json({error:`Method not allowed`},{status:405})}}function v(t){let{cors:n}=s(t),r=o(t);return async function(t,a){try{if(t.method!==`POST`)return i.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await t.json(),o=await e.p(r,a);return i.NextResponse.json(o,{headers:n?c(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js discover handler error:`,t),i.NextResponse.json(e.i(t instanceof Error?t.message:`Discovery failed`,500),{status:500})}}}function y(t){let{cors:n}=s(t),r=o(t);return async function(t,a){try{if(t.method!==`POST`)return i.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await t.json();if(!a.naturalLanguage)return i.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let o=await e.d(r,a);return i.NextResponse.json(o,{headers:n?c(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js suggest handler error:`,t),i.NextResponse.json(e.i(t instanceof Error?t.message:`Query suggestion failed`,500),{status:500})}}}function b(t){let{cors:n}=s(t),r=o(t);return async function(t,a){try{if(t.method!==`POST`)return i.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=await t.json();if(!a.query)return i.NextResponse.json(e.i(`query field is required`,400),{status:400});let o=await e.f(r,a);return i.NextResponse.json(o,{headers:n?c(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js validate handler error:`,t),i.NextResponse.json(e.i(t instanceof Error?t.message:`Query validation failed`,500),{status:500})}}}function x(t){let{extractSecurityContext:n,cors:r}=s(t),a=o(t);return async function(t,o){try{if(t.method!==`POST`)return i.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let s=await t.json();if(!s.query)return i.NextResponse.json(e.i(`query field is required`,400),{status:400});let l=await n(t,o),u=await e.m(a,l,s);return i.NextResponse.json(u,{headers:r?c(t,r):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP load handler error:`,t),i.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function S(t){let{httpHandler:r,corsHeaders:o,baseContext:s}=l(t),{mcp:c={enabled:!0}}=t,d=(e,t)=>{Object.entries(o(e)).forEach(([e,n])=>t.set(e,n))};return async function(t,l){if(c.resourceMetadataUrl&&!n.u(t.headers.get(`authorization`)))return i.NextResponse.json({error:`Bearer token required`},{status:401,headers:{"WWW-Authenticate":n.c(c.resourceMetadataUrl)}});if(t.method===`DELETE`||t.method===`GET`){let e=n.C(t.headers.get(`origin`),n.g(c));if(!e.valid)return i.NextResponse.json({error:e.reason},{status:403})}return t.method===`DELETE`?i.NextResponse.json({error:`Session termination not supported`},{status:405}):t.method===`GET`?a(t,d):t.method===`POST`?r.handleMcpPost(u(t,o(t)),s(t,l)):i.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405})}}function C(e){let{cors:t}=s(e),{agent:n}=e;if(!n)throw Error(`agent config is required for createAgentChatHandler`);let a=o(e);return async function(o,s){try{if(o.method!==`POST`)return i.NextResponse.json({error:`Method not allowed - use POST`},{status:405});let{handleAgentChat:l}=await Promise.resolve().then(()=>require("../handler-DyIyrFFp.cjs")),{message:u,sessionId:d,history:f}=await o.json();if(!u||typeof u!=`string`)return i.NextResponse.json({error:`message is required and must be a string`},{status:400});let p=(n.apiKey||``).trim();if(n.allowClientApiKey){let e=o.headers.get(`x-agent-api-key`);e&&(p=e.trim())}if(!p)return i.NextResponse.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},{status:401});let m=n.allowClientApiKey&&o.headers.get(`x-agent-provider`)||void 0,h=n.allowClientApiKey&&o.headers.get(`x-agent-model`)||void 0,g=n.allowClientApiKey&&o.headers.get(`x-agent-provider-endpoint`)||void 0,_=r.r(await e.extractSecurityContext(o,s),e=>o.headers.get(e)??void 0),v=n.buildSystemContext?.(_),y=new TextEncoder,b=new ReadableStream({async start(e){try{let t=l({message:u,sessionId:d,history:f,semanticLayer:a,securityContext:_,agentConfig:n,apiKey:p,systemContext:v,providerOverride:m,modelOverride:h,baseURLOverride:g});for await(let n of t){let t=`data: ${JSON.stringify(n)}\n\n`;e.enqueue(y.encode(t))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(y.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}}),x=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(t){let e=c(o,t);Object.entries(e).forEach(([e,t])=>x.set(e,t))}return new Response(b,{status:200,headers:x})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js agent chat handler error:`,e),i.NextResponse.json({error:e instanceof Error?e.message:`Agent chat failed`},{status:500})}}}function w(e){let{mcp:t={enabled:!0}}=e,n=o(e),r={...e,semanticLayer:n},i={load:f(r),meta:p(r),sql:m(r),dryRun:h(r),batch:g(r),explain:_(r)};return t.enabled!==!1&&(i.mcpRpc=S(r)),e.agent&&(i.agentChat=C(r)),i}exports.createAgentChatHandler=C,exports.createBatchHandler=g,exports.createCubeHandlers=w,exports.createDiscoverHandler=v,exports.createDryRunHandler=h,exports.createExplainHandler=_,exports.createLoadHandler=f,exports.createMcpLoadHandler=x,exports.createMcpRpcHandler=S,exports.createMetaHandler=p,exports.createOptionsHandler=d,exports.createSqlHandler=m,exports.createSuggestHandler=y,exports.createValidateHandler=b;
@@ -1,6 +1,7 @@
1
1
  import { NextRequest } from 'next/server';
2
2
  import { SemanticQuery, SecurityContext, DatabaseExecutor, DrizzleDatabase, Cube, CacheConfig, RLSSetupFn } from '../../server/index.js';
3
3
  import { AgentConfig } from '../../server/agent/types.js';
4
+ import { SemanticLayerCompiler } from '../../server/compiler.js';
4
5
  import { PostgresJsDatabase } from 'drizzle-orm/postgres-js';
5
6
  import { MySql2Database } from 'drizzle-orm/mysql2';
6
7
  import { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
@@ -100,6 +101,15 @@ export interface NextAdapterOptions {
100
101
  * to configure RLS (e.g., set JWT claims and switch Postgres roles), then runs the query.
101
102
  */
102
103
  rlsSetup?: RLSSetupFn;
104
+ /**
105
+ * Pre-built semantic layer to reuse across handlers.
106
+ * When provided, the adapter reuses this compiler instead of constructing a
107
+ * new one (and skips cube registration — register cubes on it yourself).
108
+ * `createCubeHandlers` sets this internally so every handler it returns shares
109
+ * one compiler, keeping metadata/result caches consistent. Mirrors the Hono
110
+ * adapter's `semanticLayer` option.
111
+ */
112
+ semanticLayer?: SemanticLayerCompiler;
103
113
  }
104
114
  export interface RouteContext {
105
115
  params?: Record<string, string | string[]>;
@@ -1,12 +1,12 @@
1
- import { d as e, f as t, i as n, m as r, p as i } from "../utils-BPWZsX7k.js";
2
- import { t as a } from "../compiler-LKTN9PTt.js";
3
- import { _ as o, b as s, c, u as l } from "../mcp-transport-Bw_zqky2.js";
4
- import { a as u, i as d, o as f, r as p, t as m } from "../core-Bbchr0ui.js";
5
- import { NextResponse as h } from "next/server";
1
+ import { d as e, f as t, i as n, m as r, p as i } from "../utils-U7gV5wQL.js";
2
+ import { t as a } from "../compiler-ZruQ85ff.js";
3
+ import { C as o, c as s, g as c, u as l, v as u, x as d } from "../mcp-transport-l8DhKzR5.js";
4
+ import { a as f, i as p, o as m, r as h, t as g } from "../core-DoSUiMmv.js";
5
+ import { NextResponse as _ } from "next/server";
6
6
  //#region src/adapters/nextjs/mcp-handler.ts
7
- function g(e, t) {
8
- let n = new TextEncoder(), r = o(), i = new ReadableStream({ start(e) {
9
- e.enqueue(n.encode(s({
7
+ function v(e, t) {
8
+ let n = new TextEncoder(), r = u(), i = new ReadableStream({ start(e) {
9
+ e.enqueue(n.encode(d({
10
10
  jsonrpc: "2.0",
11
11
  method: "mcp/ready",
12
12
  params: { protocol: "streamable-http" }
@@ -16,14 +16,15 @@ function g(e, t) {
16
16
  "Cache-Control": "no-cache",
17
17
  Connection: "keep-alive"
18
18
  });
19
- return t(e, a), new h(i, {
19
+ return t(e, a), new _(i, {
20
20
  status: 200,
21
21
  headers: a
22
22
  });
23
23
  }
24
24
  //#endregion
25
25
  //#region src/adapters/nextjs/index.ts
26
- function _(e) {
26
+ function y(e) {
27
+ if (e.semanticLayer) return e.semanticLayer;
27
28
  let { cubes: t, drizzle: n, schema: r, engineType: i, cache: o, rlsSetup: s } = e;
28
29
  if (!t || t.length === 0) throw Error("At least one cube must be provided in the cubes array");
29
30
  let c = new a({
@@ -37,37 +38,37 @@ function _(e) {
37
38
  c.registerCube(e);
38
39
  }), c;
39
40
  }
40
- function v(e) {
41
+ function b(e) {
41
42
  return {
42
- extractSecurityContext: async (t, n) => f(await e.extractSecurityContext(t, n), u((e) => t.headers.get(e))),
43
+ extractSecurityContext: async (t, n) => m(await e.extractSecurityContext(t, n), f((e) => t.headers.get(e))),
43
44
  cors: e.cors ? {
44
45
  ...e.cors,
45
- allowedHeaders: d(e.cors.allowedHeaders)
46
+ allowedHeaders: p(e.cors.allowedHeaders)
46
47
  } : void 0
47
48
  };
48
49
  }
49
- function y(e, t) {
50
+ function x(e, t) {
50
51
  let n = e.headers.get("origin"), r = {};
51
52
  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;
52
53
  }
53
- function b(e) {
54
- let t = m({
55
- semanticLayer: _(e),
54
+ function S(e) {
55
+ let t = g({
56
+ semanticLayer: y(e),
56
57
  onError: (e) => {
57
58
  process.env.NODE_ENV !== "test" && console.error("Next.js handler error:", e);
58
59
  },
59
60
  mcp: e.mcp
60
61
  }), n = e.cors ? {
61
62
  ...e.cors,
62
- allowedHeaders: d(e.cors.allowedHeaders)
63
+ allowedHeaders: p(e.cors.allowedHeaders)
63
64
  } : void 0;
64
65
  return {
65
66
  httpHandler: t,
66
- corsHeaders: (e) => n ? y(e, n) : {},
67
+ corsHeaders: (e) => n ? x(e, n) : {},
67
68
  baseContext: (t, n) => () => e.extractSecurityContext(t, n)
68
69
  };
69
70
  }
70
- function x(e, t) {
71
+ function C(e, t) {
71
72
  let n = {};
72
73
  return {
73
74
  getHeader: (t) => e.headers.get(t) ?? void 0,
@@ -79,7 +80,7 @@ function x(e, t) {
79
80
  }
80
81
  },
81
82
  getQueryParam: (t) => e.nextUrl.searchParams.get(t) ?? void 0,
82
- send: (e, r) => h.json(r, {
83
+ send: (e, r) => _.json(r, {
83
84
  status: e,
84
85
  headers: {
85
86
  ...t,
@@ -89,14 +90,14 @@ function x(e, t) {
89
90
  setHeader: (e, t) => {
90
91
  n[e] = t;
91
92
  },
92
- sendEmpty: (e) => new h(null, {
93
+ sendEmpty: (e) => new _(null, {
93
94
  status: e,
94
95
  headers: {
95
96
  ...t,
96
97
  ...n
97
98
  }
98
99
  }),
99
- sendSse: (e, r) => new h(r, {
100
+ sendSse: (e, r) => new _(r, {
100
101
  status: e,
101
102
  headers: {
102
103
  "Content-Type": "text/event-stream",
@@ -108,11 +109,11 @@ function x(e, t) {
108
109
  })
109
110
  };
110
111
  }
111
- function S(e) {
112
+ function w(e) {
112
113
  return async function(t) {
113
- let n = y(t, {
114
+ let n = x(t, {
114
115
  ...e,
115
- allowedHeaders: d(e.allowedHeaders)
116
+ allowedHeaders: p(e.allowedHeaders)
116
117
  });
117
118
  return new Response(null, {
118
119
  status: 200,
@@ -120,142 +121,147 @@ function S(e) {
120
121
  });
121
122
  };
122
123
  }
123
- function C(e) {
124
- let { httpHandler: t, corsHeaders: r, baseContext: i } = b(e);
124
+ function T(e) {
125
+ let { httpHandler: t, corsHeaders: r, baseContext: i } = S(e);
125
126
  return async function(e, a) {
126
- let o = x(e, r(e));
127
- return e.method === "POST" ? t.handleLoadPost(o, i(e, a)) : e.method === "GET" ? t.handleLoadGet(o, i(e, a)) : h.json(n("Method not allowed", 405), { status: 405 });
127
+ let o = C(e, r(e));
128
+ return e.method === "POST" ? t.handleLoadPost(o, i(e, a)) : e.method === "GET" ? t.handleLoadGet(o, i(e, a)) : _.json(n("Method not allowed", 405), { status: 405 });
128
129
  };
129
130
  }
130
- function w(e) {
131
- let { httpHandler: t, corsHeaders: n } = b(e);
131
+ function E(e) {
132
+ let { httpHandler: t, corsHeaders: n } = S(e);
132
133
  return async function(e, r) {
133
- return t.handleMetaGet(x(e, n(e)));
134
+ return t.handleMetaGet(C(e, n(e)));
134
135
  };
135
136
  }
136
- function T(e) {
137
- let { httpHandler: t, corsHeaders: r, baseContext: i } = b(e);
137
+ function D(e) {
138
+ let { httpHandler: t, corsHeaders: r, baseContext: i } = S(e);
138
139
  return async function(e, a) {
139
- let o = x(e, r(e));
140
- return e.method === "POST" ? t.handleSqlPost(o, i(e, a)) : e.method === "GET" ? t.handleSqlGet(o, i(e, a)) : h.json(n("Method not allowed", 405), { status: 405 });
140
+ let o = C(e, r(e));
141
+ return e.method === "POST" ? t.handleSqlPost(o, i(e, a)) : e.method === "GET" ? t.handleSqlGet(o, i(e, a)) : _.json(n("Method not allowed", 405), { status: 405 });
141
142
  };
142
143
  }
143
- function E(e) {
144
- let { httpHandler: t, corsHeaders: n, baseContext: r } = b(e);
144
+ function O(e) {
145
+ let { httpHandler: t, corsHeaders: n, baseContext: r } = S(e);
145
146
  return async function(e, i) {
146
- let a = x(e, n(e));
147
- return e.method === "POST" ? t.handleDryRunPost(a, r(e, i)) : e.method === "GET" ? t.handleDryRunGet(a, r(e, i)) : h.json({
147
+ let a = C(e, n(e));
148
+ return e.method === "POST" ? t.handleDryRunPost(a, r(e, i)) : e.method === "GET" ? t.handleDryRunGet(a, r(e, i)) : _.json({
148
149
  error: "Method not allowed",
149
150
  valid: !1
150
151
  }, { status: 405 });
151
152
  };
152
153
  }
153
- function D(e) {
154
- let { httpHandler: t, corsHeaders: r, baseContext: i } = b(e);
154
+ function k(e) {
155
+ let { httpHandler: t, corsHeaders: r, baseContext: i } = S(e);
155
156
  return async function(e, a) {
156
- return e.method === "POST" ? t.handleBatchPost(x(e, r(e)), i(e, a)) : h.json(n("Method not allowed - use POST", 405), { status: 405 });
157
+ return e.method === "POST" ? t.handleBatchPost(C(e, r(e)), i(e, a)) : _.json(n("Method not allowed - use POST", 405), { status: 405 });
157
158
  };
158
159
  }
159
- function O(e) {
160
- let { httpHandler: t, corsHeaders: n, baseContext: r } = b(e);
160
+ function A(e) {
161
+ let { httpHandler: t, corsHeaders: n, baseContext: r } = S(e);
161
162
  return async function(e, i) {
162
- return e.method === "POST" ? t.handleExplainPost(x(e, n(e)), r(e, i)) : h.json({ error: "Method not allowed" }, { status: 405 });
163
+ return e.method === "POST" ? t.handleExplainPost(C(e, n(e)), r(e, i)) : _.json({ error: "Method not allowed" }, { status: 405 });
163
164
  };
164
165
  }
165
- function k(e) {
166
- let { cors: t } = v(e), r = _(e);
166
+ function j(e) {
167
+ let { cors: t } = b(e), r = y(e);
167
168
  return async function(e, a) {
168
169
  try {
169
- if (e.method !== "POST") return h.json(n("Method not allowed - use POST", 405), { status: 405 });
170
- let a = await i(r, await e.json());
171
- return h.json(a, { headers: t ? y(e, t) : {} });
170
+ if (e.method !== "POST") return _.json(n("Method not allowed - use POST", 405), { status: 405 });
171
+ let a = await e.json(), o = await i(r, a);
172
+ return _.json(o, { headers: t ? x(e, t) : {} });
172
173
  } catch (e) {
173
- return process.env.NODE_ENV !== "test" && console.error("Next.js discover handler error:", e), h.json(n(e instanceof Error ? e.message : "Discovery failed", 500), { status: 500 });
174
+ return process.env.NODE_ENV !== "test" && console.error("Next.js discover handler error:", e), _.json(n(e instanceof Error ? e.message : "Discovery failed", 500), { status: 500 });
174
175
  }
175
176
  };
176
177
  }
177
- function A(t) {
178
- let { cors: r } = v(t), i = _(t);
178
+ function M(t) {
179
+ let { cors: r } = b(t), i = y(t);
179
180
  return async function(t, a) {
180
181
  try {
181
- if (t.method !== "POST") return h.json(n("Method not allowed - use POST", 405), { status: 405 });
182
+ if (t.method !== "POST") return _.json(n("Method not allowed - use POST", 405), { status: 405 });
182
183
  let a = await t.json();
183
- if (!a.naturalLanguage) return h.json(n("naturalLanguage field is required", 400), { status: 400 });
184
+ if (!a.naturalLanguage) return _.json(n("naturalLanguage field is required", 400), { status: 400 });
184
185
  let o = await e(i, a);
185
- return h.json(o, { headers: r ? y(t, r) : {} });
186
+ return _.json(o, { headers: r ? x(t, r) : {} });
186
187
  } catch (e) {
187
- return process.env.NODE_ENV !== "test" && console.error("Next.js suggest handler error:", e), h.json(n(e instanceof Error ? e.message : "Query suggestion failed", 500), { status: 500 });
188
+ return process.env.NODE_ENV !== "test" && console.error("Next.js suggest handler error:", e), _.json(n(e instanceof Error ? e.message : "Query suggestion failed", 500), { status: 500 });
188
189
  }
189
190
  };
190
191
  }
191
- function j(e) {
192
- let { cors: r } = v(e), i = _(e);
192
+ function N(e) {
193
+ let { cors: r } = b(e), i = y(e);
193
194
  return async function(e, a) {
194
195
  try {
195
- if (e.method !== "POST") return h.json(n("Method not allowed - use POST", 405), { status: 405 });
196
+ if (e.method !== "POST") return _.json(n("Method not allowed - use POST", 405), { status: 405 });
196
197
  let a = await e.json();
197
- if (!a.query) return h.json(n("query field is required", 400), { status: 400 });
198
+ if (!a.query) return _.json(n("query field is required", 400), { status: 400 });
198
199
  let o = await t(i, a);
199
- return h.json(o, { headers: r ? y(e, r) : {} });
200
+ return _.json(o, { headers: r ? x(e, r) : {} });
200
201
  } catch (e) {
201
- return process.env.NODE_ENV !== "test" && console.error("Next.js validate handler error:", e), h.json(n(e instanceof Error ? e.message : "Query validation failed", 500), { status: 500 });
202
+ return process.env.NODE_ENV !== "test" && console.error("Next.js validate handler error:", e), _.json(n(e instanceof Error ? e.message : "Query validation failed", 500), { status: 500 });
202
203
  }
203
204
  };
204
205
  }
205
- function M(e) {
206
- let { extractSecurityContext: t, cors: i } = v(e), a = _(e);
206
+ function P(e) {
207
+ let { extractSecurityContext: t, cors: i } = b(e), a = y(e);
207
208
  return async function(e, o) {
208
209
  try {
209
- if (e.method !== "POST") return h.json(n("Method not allowed - use POST", 405), { status: 405 });
210
+ if (e.method !== "POST") return _.json(n("Method not allowed - use POST", 405), { status: 405 });
210
211
  let s = await e.json();
211
- if (!s.query) return h.json(n("query field is required", 400), { status: 400 });
212
- let c = await r(a, await t(e, o), s);
213
- return h.json(c, { headers: i ? y(e, i) : {} });
212
+ if (!s.query) return _.json(n("query field is required", 400), { status: 400 });
213
+ let c = await t(e, o), l = await r(a, c, s);
214
+ return _.json(l, { headers: i ? x(e, i) : {} });
214
215
  } catch (e) {
215
- return process.env.NODE_ENV !== "test" && console.error("Next.js MCP load handler error:", e), h.json(n(e instanceof Error ? e.message : "Query execution failed", 500), { status: 500 });
216
+ return process.env.NODE_ENV !== "test" && console.error("Next.js MCP load handler error:", e), _.json(n(e instanceof Error ? e.message : "Query execution failed", 500), { status: 500 });
216
217
  }
217
218
  };
218
219
  }
219
- function N(e) {
220
- let { httpHandler: t, corsHeaders: r, baseContext: i } = b(e), { mcp: a = { enabled: !0 } } = e, o = (e, t) => {
220
+ function F(e) {
221
+ let { httpHandler: t, corsHeaders: r, baseContext: i } = S(e), { mcp: a = { enabled: !0 } } = e, u = (e, t) => {
221
222
  Object.entries(r(e)).forEach(([e, n]) => t.set(e, n));
222
223
  };
223
- return async function(e, s) {
224
- return a.resourceMetadataUrl && !l(e.headers.get("authorization")) ? h.json({ error: "Bearer token required" }, {
224
+ return async function(e, d) {
225
+ if (a.resourceMetadataUrl && !l(e.headers.get("authorization"))) return _.json({ error: "Bearer token required" }, {
225
226
  status: 401,
226
- headers: { "WWW-Authenticate": c(a.resourceMetadataUrl) }
227
- }) : e.method === "DELETE" ? h.json({ error: "Session termination not supported" }, { status: 405 }) : e.method === "GET" ? g(e, o) : e.method === "POST" ? t.handleMcpPost(x(e, r(e)), i(e, s)) : h.json(n("Method not allowed - use POST", 405), { status: 405 });
227
+ headers: { "WWW-Authenticate": s(a.resourceMetadataUrl) }
228
+ });
229
+ if (e.method === "DELETE" || e.method === "GET") {
230
+ let t = o(e.headers.get("origin"), c(a));
231
+ if (!t.valid) return _.json({ error: t.reason }, { status: 403 });
232
+ }
233
+ return e.method === "DELETE" ? _.json({ error: "Session termination not supported" }, { status: 405 }) : e.method === "GET" ? v(e, u) : e.method === "POST" ? t.handleMcpPost(C(e, r(e)), i(e, d)) : _.json(n("Method not allowed - use POST", 405), { status: 405 });
228
234
  };
229
235
  }
230
- function P(e) {
231
- let { cors: t } = v(e), { agent: n } = e;
236
+ function I(e) {
237
+ let { cors: t } = b(e), { agent: n } = e;
232
238
  if (!n) throw Error("agent config is required for createAgentChatHandler");
233
- let r = _(e);
239
+ let r = y(e);
234
240
  return async function(i, a) {
235
241
  try {
236
- if (i.method !== "POST") return h.json({ error: "Method not allowed - use POST" }, { status: 405 });
237
- let { handleAgentChat: o } = await import("../handler-u8FyzPBT.js"), { message: s, sessionId: c, history: l } = await i.json();
238
- if (!s || typeof s != "string") return h.json({ error: "message is required and must be a string" }, { status: 400 });
242
+ if (i.method !== "POST") return _.json({ error: "Method not allowed - use POST" }, { status: 405 });
243
+ let { handleAgentChat: o } = await import("../handler-j74EJDdo.js"), { message: s, sessionId: c, history: l } = await i.json();
244
+ if (!s || typeof s != "string") return _.json({ error: "message is required and must be a string" }, { status: 400 });
239
245
  let u = (n.apiKey || "").trim();
240
246
  if (n.allowClientApiKey) {
241
247
  let e = i.headers.get("x-agent-api-key");
242
248
  e && (u = e.trim());
243
249
  }
244
- if (!u) return h.json({ error: "No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header." }, { status: 401 });
245
- let d = n.allowClientApiKey && i.headers.get("x-agent-provider") || void 0, f = n.allowClientApiKey && i.headers.get("x-agent-model") || void 0, m = n.allowClientApiKey && i.headers.get("x-agent-provider-endpoint") || void 0, g = p(await e.extractSecurityContext(i, a), (e) => i.headers.get(e) ?? void 0), _ = n.buildSystemContext?.(g), v = new TextEncoder(), b = new ReadableStream({ async start(e) {
250
+ if (!u) return _.json({ error: "No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header." }, { status: 401 });
251
+ let d = n.allowClientApiKey && i.headers.get("x-agent-provider") || void 0, f = n.allowClientApiKey && i.headers.get("x-agent-model") || void 0, p = n.allowClientApiKey && i.headers.get("x-agent-provider-endpoint") || void 0, m = h(await e.extractSecurityContext(i, a), (e) => i.headers.get(e) ?? void 0), g = n.buildSystemContext?.(m), v = new TextEncoder(), y = new ReadableStream({ async start(e) {
246
252
  try {
247
253
  let t = o({
248
254
  message: s,
249
255
  sessionId: c,
250
256
  history: l,
251
257
  semanticLayer: r,
252
- securityContext: g,
258
+ securityContext: m,
253
259
  agentConfig: n,
254
260
  apiKey: u,
255
- systemContext: _,
261
+ systemContext: g,
256
262
  providerOverride: d,
257
263
  modelOverride: f,
258
- baseURLOverride: m
264
+ baseURLOverride: p
259
265
  });
260
266
  for await (let n of t) {
261
267
  let t = `data: ${JSON.stringify(n)}\n\n`;
@@ -270,34 +276,37 @@ function P(e) {
270
276
  } finally {
271
277
  e.close();
272
278
  }
273
- } }), x = new Headers({
279
+ } }), b = new Headers({
274
280
  "Content-Type": "text/event-stream",
275
281
  "Cache-Control": "no-cache",
276
282
  Connection: "keep-alive"
277
283
  });
278
284
  if (t) {
279
- let e = y(i, t);
280
- Object.entries(e).forEach(([e, t]) => x.set(e, t));
285
+ let e = x(i, t);
286
+ Object.entries(e).forEach(([e, t]) => b.set(e, t));
281
287
  }
282
- return new Response(b, {
288
+ return new Response(y, {
283
289
  status: 200,
284
- headers: x
290
+ headers: b
285
291
  });
286
292
  } catch (e) {
287
- return process.env.NODE_ENV !== "test" && console.error("Next.js agent chat handler error:", e), h.json({ error: e instanceof Error ? e.message : "Agent chat failed" }, { status: 500 });
293
+ return process.env.NODE_ENV !== "test" && console.error("Next.js agent chat handler error:", e), _.json({ error: e instanceof Error ? e.message : "Agent chat failed" }, { status: 500 });
288
294
  }
289
295
  };
290
296
  }
291
- function F(e) {
292
- let { mcp: t = { enabled: !0 } } = e, n = {
293
- load: C(e),
294
- meta: w(e),
295
- sql: T(e),
296
- dryRun: E(e),
297
- batch: D(e),
298
- explain: O(e)
297
+ function L(e) {
298
+ let { mcp: t = { enabled: !0 } } = e, n = y(e), r = {
299
+ ...e,
300
+ semanticLayer: n
301
+ }, i = {
302
+ load: T(r),
303
+ meta: E(r),
304
+ sql: D(r),
305
+ dryRun: O(r),
306
+ batch: k(r),
307
+ explain: A(r)
299
308
  };
300
- return t.enabled !== !1 && (n.mcpRpc = N(e)), e.agent && (n.agentChat = P(e)), n;
309
+ return t.enabled !== !1 && (i.mcpRpc = F(r)), e.agent && (i.agentChat = I(r)), i;
301
310
  }
302
311
  //#endregion
303
- export { P as createAgentChatHandler, D as createBatchHandler, F as createCubeHandlers, k as createDiscoverHandler, E as createDryRunHandler, O as createExplainHandler, C as createLoadHandler, M as createMcpLoadHandler, N as createMcpRpcHandler, w as createMetaHandler, S as createOptionsHandler, T as createSqlHandler, A as createSuggestHandler, j as createValidateHandler };
312
+ export { I as createAgentChatHandler, k as createBatchHandler, L as createCubeHandlers, j as createDiscoverHandler, O as createDryRunHandler, A as createExplainHandler, T as createLoadHandler, P as createMcpLoadHandler, F as createMcpRpcHandler, E as createMetaHandler, w as createOptionsHandler, D as createSqlHandler, M as createSuggestHandler, N as createValidateHandler };
@@ -15,7 +15,7 @@ function t(e, t, n, r) {
15
15
  var n = function() {
16
16
  let { crypto: e } = globalThis;
17
17
  if (e?.randomUUID) return n = e.randomUUID.bind(e), e.randomUUID();
18
- let t = new Uint8Array(1), r = e ? () => e.getRandomValues(t)[0] : () => Math.random() * 255 & 255;
18
+ let t = /* @__PURE__ */ new Uint8Array(1), r = e ? () => e.getRandomValues(t)[0] : () => Math.random() * 255 & 255;
19
19
  return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (e) => (e ^ r() & 15 >> e / 4).toString(16));
20
20
  };
21
21
  //#endregion
@@ -481,7 +481,7 @@ function qe(e) {
481
481
  //#region node_modules/openai/internal/decoders/line.mjs
482
482
  var T, E, Je = class {
483
483
  constructor() {
484
- T.set(this, void 0), E.set(this, void 0), e(this, T, new Uint8Array(), "f"), e(this, E, null, "f");
484
+ T.set(this, void 0), E.set(this, void 0), e(this, T, /* @__PURE__ */ new Uint8Array(), "f"), e(this, E, null, "f");
485
485
  }
486
486
  decode(n) {
487
487
  if (n == null) return [];
@@ -506,7 +506,7 @@ var T, E, Je = class {
506
506
  return t(this, T, "f").length ? this.decode("\n") : [];
507
507
  }
508
508
  };
509
- T = /* @__PURE__ */ new WeakMap(), E = /* @__PURE__ */ new WeakMap(), Je.NEWLINE_CHARS = new Set(["\n", "\r"]), Je.NEWLINE_REGEXP = /\r\n|[\n\r]/g;
509
+ T = /* @__PURE__ */ new WeakMap(), E = /* @__PURE__ */ new WeakMap(), Je.NEWLINE_CHARS = /* @__PURE__ */ new Set(["\n", "\r"]), Je.NEWLINE_REGEXP = /\r\n|[\n\r]/g;
510
510
  function Ye(e, t) {
511
511
  for (let n = t ?? 0; n < e.length; n++) {
512
512
  if (e[n] === 10) return {
@@ -689,7 +689,7 @@ async function* ot(e, t) {
689
689
  }
690
690
  }
691
691
  async function* st(e) {
692
- let t = new Uint8Array();
692
+ let t = /* @__PURE__ */ new Uint8Array();
693
693
  for await (let n of e) {
694
694
  if (n == null) continue;
695
695
  let e = n instanceof ArrayBuffer ? new Uint8Array(n) : typeof n == "string" ? Ge(n) : n, r = new Uint8Array(t.length + e.length);
@@ -837,7 +837,7 @@ var mt, ht = class {
837
837
  return this.data ?? [];
838
838
  }
839
839
  hasNextPage() {
840
- return this.has_more === !1 ? !1 : super.hasNextPage();
840
+ return this.has_more !== !1 && super.hasNextPage();
841
841
  }
842
842
  nextPageRequestOptions() {
843
843
  let e = this.getPaginatedItems(), t = e[e.length - 1]?.id;
@@ -857,7 +857,7 @@ var mt, ht = class {
857
857
  return this.data ?? [];
858
858
  }
859
859
  hasNextPage() {
860
- return this.has_more === !1 ? !1 : super.hasNextPage();
860
+ return this.has_more !== !1 && super.hasNextPage();
861
861
  }
862
862
  nextPageRequestOptions() {
863
863
  let e = this.last_id;
@@ -877,7 +877,7 @@ var mt, ht = class {
877
877
  return this.data ?? [];
878
878
  }
879
879
  hasNextPage() {
880
- return this.has_more === !1 ? !1 : super.hasNextPage();
880
+ return this.has_more !== !1 && super.hasNextPage();
881
881
  }
882
882
  nextPageRequestOptions() {
883
883
  let e = this.next;
@@ -1466,7 +1466,7 @@ var On = (e, t) => {
1466
1466
  throw new En(`${e} at position ${r}`);
1467
1467
  }, o = () => (d(), r >= n && i("Unexpected end of input"), e[r] === "\"" ? s() : e[r] === "{" ? c() : e[r] === "[" ? l() : e.substring(r, r + 4) === "null" || L.NULL & t && n - r < 4 && "null".startsWith(e.substring(r)) ? (r += 4, null) : e.substring(r, r + 4) === "true" || L.BOOL & t && n - r < 4 && "true".startsWith(e.substring(r)) ? (r += 4, !0) : e.substring(r, r + 5) === "false" || L.BOOL & t && n - r < 5 && "false".startsWith(e.substring(r)) ? (r += 5, !1) : e.substring(r, r + 8) === "Infinity" || L.INFINITY & t && n - r < 8 && "Infinity".startsWith(e.substring(r)) ? (r += 8, Infinity) : e.substring(r, r + 9) === "-Infinity" || L.MINUS_INFINITY & t && 1 < n - r && n - r < 9 && "-Infinity".startsWith(e.substring(r)) ? (r += 9, -Infinity) : e.substring(r, r + 3) === "NaN" || L.NAN & t && n - r < 3 && "NaN".startsWith(e.substring(r)) ? (r += 3, NaN) : u()), s = () => {
1468
1468
  let o = r, s = !1;
1469
- for (r++; r < n && (e[r] !== "\"" || s && e[r - 1] === "\\");) s = e[r] === "\\" ? !s : !1, r++;
1469
+ for (r++; r < n && (e[r] !== "\"" || s && e[r - 1] === "\\");) s = e[r] === "\\" && !s, r++;
1470
1470
  if (e.charAt(r) == "\"") try {
1471
1471
  return JSON.parse(e.substring(o, ++r - Number(s)));
1472
1472
  } catch (e) {
@@ -3924,7 +3924,7 @@ var di = class extends N {
3924
3924
  });
3925
3925
  }
3926
3926
  async waitForProcessing(e, { pollInterval: t = 5e3, maxWait: n = 1800 * 1e3 } = {}) {
3927
- let r = new Set([
3927
+ let r = /* @__PURE__ */ new Set([
3928
3928
  "processed",
3929
3929
  "error",
3930
3930
  "deleted"
@@ -5375,7 +5375,7 @@ var ga = class extends $ {
5375
5375
  };
5376
5376
  return n.bearerAuth && typeof this._options.apiKey == "string" ? U([{ "api-key": this.apiKey }]) : super.authHeaders(e, n);
5377
5377
  }
5378
- }, _a = new Set([
5378
+ }, _a = /* @__PURE__ */ new Set([
5379
5379
  "/completions",
5380
5380
  "/chat/completions",
5381
5381
  "/embeddings",
@@ -70,7 +70,7 @@ var r = class {
70
70
  try {
71
71
  let t = await import(
72
72
  /* webpackIgnore: true */
73
- "./openai-CmMzrs1Y.js"
73
+ "./openai-BCSKRcbD.js"
74
74
  );
75
75
  e = t.default || t.OpenAI || t;
76
76
  } catch {