drizzle-cube 0.5.3 → 0.5.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 (202) hide show
  1. package/dist/adapters/express/index.cjs +2 -2
  2. package/dist/adapters/express/index.js +105 -104
  3. package/dist/adapters/fastify/index.cjs +2 -2
  4. package/dist/adapters/fastify/index.js +107 -106
  5. package/dist/adapters/{google-CBfBGU4F.js → google-CT4kgmBf.js} +1 -1
  6. package/dist/adapters/{google-BOAwi9Ib.cjs → google-Dgo9-Kb5.cjs} +1 -1
  7. package/dist/adapters/{handler-Cqf-CqAS.cjs → handler-C1Qs8JMY.cjs} +13 -13
  8. package/dist/adapters/{handler-BC3nFNxV.js → handler-CoaNnZyf.js} +154 -34
  9. package/dist/adapters/hono/index.cjs +1 -1
  10. package/dist/adapters/hono/index.js +99 -98
  11. package/dist/adapters/{locale-BoiA6WiV.cjs → locale-CTuvUGBs.cjs} +7 -7
  12. package/dist/adapters/{locale-D9VQkLXt.js → locale-wMBdZ3Ks.js} +1 -1
  13. package/dist/adapters/mcp-tools.cjs +1 -1
  14. package/dist/adapters/mcp-tools.js +8 -3
  15. package/dist/adapters/mcp-transport-B_HoB1HQ.js +579 -0
  16. package/dist/adapters/mcp-transport-bQzyrBPI.cjs +40 -0
  17. package/dist/adapters/mcp-transport.d.ts +22 -0
  18. package/dist/adapters/nextjs/index.cjs +1 -1
  19. package/dist/adapters/nextjs/index.js +136 -135
  20. package/dist/adapters/{openai-B4N3KfTG.cjs → openai-BjLV_Wjx.cjs} +1 -1
  21. package/dist/adapters/{openai-BWdm0JvG.js → openai-DQawCWQb.js} +1 -1
  22. package/dist/adapters/utils-CIRA5_JO.cjs +128 -0
  23. package/dist/adapters/{utils-CTYvfZ3I.js → utils-hC7Z8V39.js} +1114 -664
  24. package/dist/adapters/utils.cjs +1 -1
  25. package/dist/adapters/utils.d.ts +52 -5
  26. package/dist/adapters/utils.js +1 -1
  27. package/dist/client/charts/chartConfigs.d.ts +34 -0
  28. package/dist/client/charts.js +12 -12
  29. package/dist/client/chunks/{DashboardEditModal-IU_0dgfC.js → DashboardEditModal-DayTXEH0.js} +10 -10
  30. package/dist/client/chunks/{DashboardEditModal-IU_0dgfC.js.map → DashboardEditModal-DayTXEH0.js.map} +1 -1
  31. package/dist/client/chunks/{FieldSearchModal-BCWanpPX.js → FieldSearchModal-B7Mr8UNT.js} +4 -4
  32. package/dist/client/chunks/{FieldSearchModal-BCWanpPX.js.map → FieldSearchModal-B7Mr8UNT.js.map} +1 -1
  33. package/dist/client/chunks/KpiDelta-C-hZ1x01.js +2 -0
  34. package/dist/client/chunks/KpiNumber-Beo8CK0a.js +2 -0
  35. package/dist/client/chunks/KpiText-ytYiRTRO.js +2 -0
  36. package/dist/client/chunks/{RetentionCombinedChart-CQMBODsK.js → RetentionCombinedChart-D3dRmoos.js} +3 -3
  37. package/dist/client/chunks/{RetentionCombinedChart-CQMBODsK.js.map → RetentionCombinedChart-D3dRmoos.js.map} +1 -1
  38. package/dist/client/chunks/{RetentionHeatmap-B_5sewwi.js → RetentionHeatmap-DHPnn0qH.js} +2 -2
  39. package/dist/client/chunks/{RetentionHeatmap-B_5sewwi.js.map → RetentionHeatmap-DHPnn0qH.js.map} +1 -1
  40. package/dist/client/chunks/SchemaVisualization-DbYZBTyi.js +2 -0
  41. package/dist/client/chunks/SchemaVisualizationLazy-BGo-1S3q.js +2 -0
  42. package/dist/client/chunks/{af-ZA-xDmO5F0s.js → af-ZA-BtTNqvHF.js} +8 -3
  43. package/dist/client/chunks/af-ZA-BtTNqvHF.js.map +1 -0
  44. package/dist/client/chunks/{analysis-builder-Dm6eD_AX.js → analysis-builder-lcGl099d.js} +245 -255
  45. package/dist/client/chunks/analysis-builder-lcGl099d.js.map +1 -0
  46. package/dist/client/chunks/{analysis-builder-shared-DT5bXwCA.js → analysis-builder-shared-6BRZcEnu.js} +391 -459
  47. package/dist/client/chunks/analysis-builder-shared-6BRZcEnu.js.map +1 -0
  48. package/dist/client/chunks/{chart-activity-grid-CWT0gLv4.js → chart-activity-grid-BnY-jaoa.js} +26 -6
  49. package/dist/client/chunks/chart-activity-grid-BnY-jaoa.js.map +1 -0
  50. package/dist/client/chunks/{chart-area-DDti9Qtp.js → chart-area-G3OvLLK4.js} +2 -2
  51. package/dist/client/chunks/{chart-area-DDti9Qtp.js.map → chart-area-G3OvLLK4.js.map} +1 -1
  52. package/dist/client/chunks/{chart-bar-B3s9qDlh.js → chart-bar-MLIWiLrc.js} +3 -3
  53. package/dist/client/chunks/{chart-bar-B3s9qDlh.js.map → chart-bar-MLIWiLrc.js.map} +1 -1
  54. package/dist/client/chunks/{chart-box-plot-o-h9MRX5.js → chart-box-plot-c2XqKTWq.js} +2 -2
  55. package/dist/client/chunks/{chart-box-plot-o-h9MRX5.js.map → chart-box-plot-c2XqKTWq.js.map} +1 -1
  56. package/dist/client/chunks/{chart-bubble-CMDp4Pfm.js → chart-bubble-CAGvnYb1.js} +2 -2
  57. package/dist/client/chunks/{chart-bubble-CMDp4Pfm.js.map → chart-bubble-CAGvnYb1.js.map} +1 -1
  58. package/dist/client/chunks/{chart-candlestick-WyANJ0Ky.js → chart-candlestick-oSPk-KQp.js} +2 -2
  59. package/dist/client/chunks/{chart-candlestick-WyANJ0Ky.js.map → chart-candlestick-oSPk-KQp.js.map} +1 -1
  60. package/dist/client/chunks/{chart-config-activity-grid-C-EkgYoa.js → chart-config-activity-grid-Dssynumw.js} +8 -1
  61. package/dist/client/chunks/chart-config-activity-grid-Dssynumw.js.map +1 -0
  62. package/dist/client/chunks/{chart-config-area-CMZpbIah.js → chart-config-area-40fbx2Ah.js} +8 -1
  63. package/dist/client/chunks/chart-config-area-40fbx2Ah.js.map +1 -0
  64. package/dist/client/chunks/{chart-config-bar-B8_V4YLg.js → chart-config-bar-CUWHwOPN.js} +8 -1
  65. package/dist/client/chunks/chart-config-bar-CUWHwOPN.js.map +1 -0
  66. package/dist/client/chunks/{chart-config-box-plot-Dwj7sEbU.js → chart-config-box-plot-D3Y0ien3.js} +8 -1
  67. package/dist/client/chunks/chart-config-box-plot-D3Y0ien3.js.map +1 -0
  68. package/dist/client/chunks/{chart-config-bubble-B0w0ZVp4.js → chart-config-bubble-BXSTKLn-.js} +8 -1
  69. package/dist/client/chunks/chart-config-bubble-BXSTKLn-.js.map +1 -0
  70. package/dist/client/chunks/{chart-config-candlestick-Bvo3zeIn.js → chart-config-candlestick-DEuD2Av0.js} +8 -1
  71. package/dist/client/chunks/chart-config-candlestick-DEuD2Av0.js.map +1 -0
  72. package/dist/client/chunks/{chart-config-gauge-C5ZiyZy7.js → chart-config-gauge-CCva3FfA.js} +5 -1
  73. package/dist/client/chunks/chart-config-gauge-CCva3FfA.js.map +1 -0
  74. package/dist/client/chunks/{chart-config-heat-map-Cv8qNnVP.js → chart-config-heat-map-Db4Z8UUn.js} +8 -1
  75. package/dist/client/chunks/chart-config-heat-map-Db4Z8UUn.js.map +1 -0
  76. package/dist/client/chunks/{chart-config-kpi-delta-BraHQc2E.js → chart-config-kpi-delta-BfLf3iyi.js} +8 -1
  77. package/dist/client/chunks/chart-config-kpi-delta-BfLf3iyi.js.map +1 -0
  78. package/dist/client/chunks/{chart-config-kpi-number-CeCkx7mC.js → chart-config-kpi-number-DWKFc9PX.js} +5 -1
  79. package/dist/client/chunks/chart-config-kpi-number-DWKFc9PX.js.map +1 -0
  80. package/dist/client/chunks/{chart-config-kpi-text-CImM3SvH.js → chart-config-kpi-text-Dr4OG6cY.js} +5 -1
  81. package/dist/client/chunks/chart-config-kpi-text-Dr4OG6cY.js.map +1 -0
  82. package/dist/client/chunks/{chart-config-line-BVKapAQK.js → chart-config-line-DGYYdDw9.js} +8 -1
  83. package/dist/client/chunks/chart-config-line-DGYYdDw9.js.map +1 -0
  84. package/dist/client/chunks/{chart-config-measure-profile-KTVV1gO3.js → chart-config-measure-profile-sB3n_Azv.js} +5 -1
  85. package/dist/client/chunks/chart-config-measure-profile-sB3n_Azv.js.map +1 -0
  86. package/dist/client/chunks/{chart-config-pie-BZxVl25X.js → chart-config-pie-kte7OXa9.js} +8 -1
  87. package/dist/client/chunks/chart-config-pie-kte7OXa9.js.map +1 -0
  88. package/dist/client/chunks/{chart-config-radar-B7FByX3t.js → chart-config-radar-C9IxP5tc.js} +8 -1
  89. package/dist/client/chunks/chart-config-radar-C9IxP5tc.js.map +1 -0
  90. package/dist/client/chunks/{chart-config-radial-bar-UfW_3yyX.js → chart-config-radial-bar-C3WJ8Uhm.js} +8 -1
  91. package/dist/client/chunks/chart-config-radial-bar-C3WJ8Uhm.js.map +1 -0
  92. package/dist/client/chunks/{chart-config-scatter-BVVJuOnt.js → chart-config-scatter-BVN_29G5.js} +8 -1
  93. package/dist/client/chunks/chart-config-scatter-BVN_29G5.js.map +1 -0
  94. package/dist/client/chunks/{chart-config-tree-map-IHp97OyV.js → chart-config-tree-map-meeJEDi8.js} +8 -1
  95. package/dist/client/chunks/chart-config-tree-map-meeJEDi8.js.map +1 -0
  96. package/dist/client/chunks/{chart-config-waterfall-BdqG1V-x.js → chart-config-waterfall-CaPeWZMl.js} +8 -1
  97. package/dist/client/chunks/chart-config-waterfall-CaPeWZMl.js.map +1 -0
  98. package/dist/client/chunks/{chart-data-table-Qrt6EAno.js → chart-data-table-BRXHT2H-.js} +68 -68
  99. package/dist/client/chunks/chart-data-table-BRXHT2H-.js.map +1 -0
  100. package/dist/client/chunks/{chart-funnel-C7pgktN5.js → chart-funnel-aQ7G_CqU.js} +2 -2
  101. package/dist/client/chunks/{chart-funnel-C7pgktN5.js.map → chart-funnel-aQ7G_CqU.js.map} +1 -1
  102. package/dist/client/chunks/{chart-gauge-D2r2B_AR.js → chart-gauge-DqbDKr9E.js} +2 -2
  103. package/dist/client/chunks/{chart-gauge-D2r2B_AR.js.map → chart-gauge-DqbDKr9E.js.map} +1 -1
  104. package/dist/client/chunks/{chart-heat-map-Dw2yjwfO.js → chart-heat-map--6QnhUM8.js} +2 -2
  105. package/dist/client/chunks/{chart-heat-map-Dw2yjwfO.js.map → chart-heat-map--6QnhUM8.js.map} +1 -1
  106. package/dist/client/chunks/{chart-kpi-delta-CgldZ7zO.js → chart-kpi-delta-DOSpRjfs.js} +3 -3
  107. package/dist/client/chunks/{chart-kpi-delta-CgldZ7zO.js.map → chart-kpi-delta-DOSpRjfs.js.map} +1 -1
  108. package/dist/client/chunks/{chart-kpi-number-ByfuX1ki.js → chart-kpi-number-BcMjeKm8.js} +5 -5
  109. package/dist/client/chunks/{chart-kpi-number-ByfuX1ki.js.map → chart-kpi-number-BcMjeKm8.js.map} +1 -1
  110. package/dist/client/chunks/{chart-kpi-text-DeNuDraJ.js → chart-kpi-text-BI9isc2i.js} +3 -3
  111. package/dist/client/chunks/{chart-kpi-text-DeNuDraJ.js.map → chart-kpi-text-BI9isc2i.js.map} +1 -1
  112. package/dist/client/chunks/{chart-line-RdZwtk27.js → chart-line-C0IHQteu.js} +3 -3
  113. package/dist/client/chunks/{chart-line-RdZwtk27.js.map → chart-line-C0IHQteu.js.map} +1 -1
  114. package/dist/client/chunks/{chart-markdown-CiGRZdJj.js → chart-markdown-BmgSMqPg.js} +2 -2
  115. package/dist/client/chunks/{chart-markdown-CiGRZdJj.js.map → chart-markdown-BmgSMqPg.js.map} +1 -1
  116. package/dist/client/chunks/{chart-measure-profile-Ckjw9bX6.js → chart-measure-profile-DEyLW1fd.js} +3 -3
  117. package/dist/client/chunks/{chart-measure-profile-Ckjw9bX6.js.map → chart-measure-profile-DEyLW1fd.js.map} +1 -1
  118. package/dist/client/chunks/{chart-pie-BvY4FY__.js → chart-pie-DSIekr7p.js} +3 -3
  119. package/dist/client/chunks/{chart-pie-BvY4FY__.js.map → chart-pie-DSIekr7p.js.map} +1 -1
  120. package/dist/client/chunks/{chart-radar-DjiiEAmc.js → chart-radar-SGl62hK8.js} +3 -3
  121. package/dist/client/chunks/{chart-radar-DjiiEAmc.js.map → chart-radar-SGl62hK8.js.map} +1 -1
  122. package/dist/client/chunks/{chart-radial-bar-lla_JEYu.js → chart-radial-bar-C42EykOa.js} +3 -3
  123. package/dist/client/chunks/{chart-radial-bar-lla_JEYu.js.map → chart-radial-bar-C42EykOa.js.map} +1 -1
  124. package/dist/client/chunks/{chart-sankey-WwkZAhLy.js → chart-sankey-DguImp0W.js} +2 -2
  125. package/dist/client/chunks/{chart-sankey-WwkZAhLy.js.map → chart-sankey-DguImp0W.js.map} +1 -1
  126. package/dist/client/chunks/{chart-scatter-DwXnI0rr.js → chart-scatter-Doeox4OP.js} +3 -3
  127. package/dist/client/chunks/{chart-scatter-DwXnI0rr.js.map → chart-scatter-Doeox4OP.js.map} +1 -1
  128. package/dist/client/chunks/{chart-sunburst-CIDB_pTl.js → chart-sunburst-F3tgCpL-.js} +3 -3
  129. package/dist/client/chunks/{chart-sunburst-CIDB_pTl.js.map → chart-sunburst-F3tgCpL-.js.map} +1 -1
  130. package/dist/client/chunks/{chart-tree-map-DJHoA26f.js → chart-tree-map-DvuSCIc8.js} +3 -3
  131. package/dist/client/chunks/{chart-tree-map-DJHoA26f.js.map → chart-tree-map-DvuSCIc8.js.map} +1 -1
  132. package/dist/client/chunks/{chart-waterfall-Y7c8csO5.js → chart-waterfall-Be5duXlO.js} +3 -3
  133. package/dist/client/chunks/{chart-waterfall-Y7c8csO5.js.map → chart-waterfall-Be5duXlO.js.map} +1 -1
  134. package/dist/client/chunks/{charts-core-BXOqaYFn.js → charts-core-XlOwoP_r.js} +2 -2
  135. package/dist/client/chunks/{charts-core-BXOqaYFn.js.map → charts-core-XlOwoP_r.js.map} +1 -1
  136. package/dist/client/chunks/{nl-NL-vCifBijs.js → nl-NL-BLDeSy_P.js} +24 -4
  137. package/dist/client/chunks/nl-NL-BLDeSy_P.js.map +1 -0
  138. package/dist/client/chunks/{schema-visualization-DWwJukK7.js → schema-visualization-CM5ikSWB.js} +4 -4
  139. package/dist/client/chunks/{schema-visualization-DWwJukK7.js.map → schema-visualization-CM5ikSWB.js.map} +1 -1
  140. package/dist/client/chunks/{useDebounce-DyJVREop.js → useDebounce-NEZQbfxN.js} +4 -4
  141. package/dist/client/chunks/{useDebounce-DyJVREop.js.map → useDebounce-NEZQbfxN.js.map} +1 -1
  142. package/dist/client/chunks/{useExplainAI-CxSkjocM.js → useExplainAI-DivfI0dW.js} +4 -4
  143. package/dist/client/chunks/{useExplainAI-CxSkjocM.js.map → useExplainAI-DivfI0dW.js.map} +1 -1
  144. package/dist/client/chunks/{utils-BHZdKxua.js → utils-Ctl_cVNR.js} +2 -2
  145. package/dist/client/chunks/{utils-BHZdKxua.js.map → utils-Ctl_cVNR.js.map} +1 -1
  146. package/dist/client/chunks/{vendor-CBD_Olr0.js → vendor-BcLQ6iVZ.js} +2 -2
  147. package/dist/client/chunks/{vendor-CBD_Olr0.js.map → vendor-BcLQ6iVZ.js.map} +1 -1
  148. package/dist/client/components/AnalysisBuilder/types.d.ts +2 -2
  149. package/dist/client/components.js +3 -3
  150. package/dist/client/hooks.js +3 -3
  151. package/dist/client/icons.js +1 -1
  152. package/dist/client/index.js +14 -14
  153. package/dist/client/providers.js +1 -1
  154. package/dist/client/schema.js +1 -1
  155. package/dist/client/shared/chartDefaults.d.ts +5 -10
  156. package/dist/client/utils.js +5 -5
  157. package/dist/client-bundle-stats.html +1 -1
  158. package/dist/mcp-app/mcp-app.html +24 -24
  159. package/dist/server/index.cjs +135 -134
  160. package/dist/server/index.js +1128 -948
  161. package/package.json +2 -2
  162. package/dist/adapters/mcp-prompts-BUFyQLHQ.js +0 -377
  163. package/dist/adapters/mcp-prompts-B_NvEJT_.cjs +0 -111
  164. package/dist/adapters/mcp-transport-B0mgxRnJ.js +0 -579
  165. package/dist/adapters/mcp-transport-irsahKmD.cjs +0 -39
  166. package/dist/adapters/utils-XPOzzMdY.cjs +0 -17
  167. package/dist/client/chunks/KpiDelta-_igN6cJa.js +0 -2
  168. package/dist/client/chunks/KpiNumber-t5n8PtRU.js +0 -2
  169. package/dist/client/chunks/KpiText-BCZJJ6a0.js +0 -2
  170. package/dist/client/chunks/SchemaVisualization-BUUhlOvG.js +0 -2
  171. package/dist/client/chunks/SchemaVisualizationLazy-CwaPCUL0.js +0 -2
  172. package/dist/client/chunks/af-ZA-xDmO5F0s.js.map +0 -1
  173. package/dist/client/chunks/analysis-builder-Dm6eD_AX.js.map +0 -1
  174. package/dist/client/chunks/analysis-builder-shared-DT5bXwCA.js.map +0 -1
  175. package/dist/client/chunks/chart-activity-grid-CWT0gLv4.js.map +0 -1
  176. package/dist/client/chunks/chart-config-activity-grid-C-EkgYoa.js.map +0 -1
  177. package/dist/client/chunks/chart-config-area-CMZpbIah.js.map +0 -1
  178. package/dist/client/chunks/chart-config-bar-B8_V4YLg.js.map +0 -1
  179. package/dist/client/chunks/chart-config-box-plot-Dwj7sEbU.js.map +0 -1
  180. package/dist/client/chunks/chart-config-bubble-B0w0ZVp4.js.map +0 -1
  181. package/dist/client/chunks/chart-config-candlestick-Bvo3zeIn.js.map +0 -1
  182. package/dist/client/chunks/chart-config-gauge-C5ZiyZy7.js.map +0 -1
  183. package/dist/client/chunks/chart-config-heat-map-Cv8qNnVP.js.map +0 -1
  184. package/dist/client/chunks/chart-config-kpi-delta-BraHQc2E.js.map +0 -1
  185. package/dist/client/chunks/chart-config-kpi-number-CeCkx7mC.js.map +0 -1
  186. package/dist/client/chunks/chart-config-kpi-text-CImM3SvH.js.map +0 -1
  187. package/dist/client/chunks/chart-config-line-BVKapAQK.js.map +0 -1
  188. package/dist/client/chunks/chart-config-measure-profile-KTVV1gO3.js.map +0 -1
  189. package/dist/client/chunks/chart-config-pie-BZxVl25X.js.map +0 -1
  190. package/dist/client/chunks/chart-config-radar-B7FByX3t.js.map +0 -1
  191. package/dist/client/chunks/chart-config-radial-bar-UfW_3yyX.js.map +0 -1
  192. package/dist/client/chunks/chart-config-scatter-BVVJuOnt.js.map +0 -1
  193. package/dist/client/chunks/chart-config-tree-map-IHp97OyV.js.map +0 -1
  194. package/dist/client/chunks/chart-config-waterfall-BdqG1V-x.js.map +0 -1
  195. package/dist/client/chunks/chart-data-table-Qrt6EAno.js.map +0 -1
  196. package/dist/client/chunks/nl-NL-vCifBijs.js.map +0 -1
  197. /package/dist/adapters/{anthropic-Cto4Jxqt.cjs → anthropic-BIva8k1r.cjs} +0 -0
  198. /package/dist/adapters/{anthropic-DpEbCVvF.js → anthropic-B_rg0BhK.js} +0 -0
  199. /package/dist/adapters/{dist-BnyV9wfA.cjs → dist-Boc63-1q.cjs} +0 -0
  200. /package/dist/adapters/{dist-DjVh2RFz.js → dist-De5fzUEM.js} +0 -0
  201. /package/dist/adapters/{openai-CoqT_FM5.cjs → openai-Bgri5TJc.cjs} +0 -0
  202. /package/dist/adapters/{openai-D0Nsvc9L.js → openai-CuUGrKaK.js} +0 -0
@@ -1,5 +1,4 @@
1
- import { _ as e, d as t, g as n, p as r } from "./utils-CTYvfZ3I.js";
2
- import { a as i, n as a, r as o, t as s } from "./mcp-prompts-BUFyQLHQ.js";
1
+ import { C as e, S as t, _ as n, d as r, g as i, p as a, v as o, y as s } from "./utils-hC7Z8V39.js";
3
2
  //#region src/server/agent/system-prompt.ts
4
3
  function c(e) {
5
4
  if (e.length === 0) return "No cubes are currently available.";
@@ -171,15 +170,15 @@ function u(e) {
171
170
  "",
172
171
  "---",
173
172
  "",
174
- l(a),
173
+ l(o),
175
174
  "",
176
175
  "---",
177
176
  "",
178
- l(o),
177
+ l(s),
179
178
  "",
180
179
  "---",
181
180
  "",
182
- l(s),
181
+ l(n),
183
182
  "",
184
183
  "---",
185
184
  "",
@@ -244,6 +243,13 @@ var d = {
244
243
  description: "chart.bar.description",
245
244
  useCase: "chart.bar.useCase",
246
245
  clickableElements: { bar: !0 },
246
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
247
+ available: !1,
248
+ reason: "chart.availability.requiresMeasure"
249
+ } : t < 1 ? {
250
+ available: !1,
251
+ reason: "chart.availability.requiresDimension"
252
+ } : { available: !0 },
247
253
  dropZones: [
248
254
  {
249
255
  key: "xAxis",
@@ -325,6 +331,13 @@ var d = {
325
331
  description: "chart.line.description",
326
332
  useCase: "chart.line.useCase",
327
333
  clickableElements: { point: !0 },
334
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
335
+ available: !1,
336
+ reason: "chart.availability.requiresMeasure"
337
+ } : t < 1 ? {
338
+ available: !1,
339
+ reason: "chart.availability.requiresDimension"
340
+ } : { available: !0 },
328
341
  dropZones: [
329
342
  {
330
343
  key: "xAxis",
@@ -422,6 +435,13 @@ var d = {
422
435
  label: "chart.area.label",
423
436
  description: "chart.area.description",
424
437
  useCase: "chart.area.useCase",
438
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
439
+ available: !1,
440
+ reason: "chart.availability.requiresMeasure"
441
+ } : t < 1 ? {
442
+ available: !1,
443
+ reason: "chart.availability.requiresDimension"
444
+ } : { available: !0 },
425
445
  dropZones: [
426
446
  {
427
447
  key: "xAxis",
@@ -510,6 +530,13 @@ var d = {
510
530
  description: "chart.pie.description",
511
531
  useCase: "chart.pie.useCase",
512
532
  clickableElements: { slice: !0 },
533
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
534
+ available: !1,
535
+ reason: "chart.availability.requiresMeasure"
536
+ } : t < 1 ? {
537
+ available: !1,
538
+ reason: "chart.availability.requiresDimension"
539
+ } : { available: !0 },
513
540
  dropZones: [{
514
541
  key: "xAxis",
515
542
  label: "chart.configText.categories",
@@ -571,6 +598,13 @@ var d = {
571
598
  label: "chart.scatter.label",
572
599
  description: "chart.scatter.description",
573
600
  useCase: "chart.scatter.useCase",
601
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
602
+ available: !1,
603
+ reason: "chart.availability.requiresMeasure"
604
+ } : e < 2 && t < 1 ? {
605
+ available: !1,
606
+ reason: "chart.availability.scatter"
607
+ } : { available: !0 },
574
608
  dropZones: [
575
609
  {
576
610
  key: "xAxis",
@@ -626,6 +660,13 @@ var d = {
626
660
  label: "chart.bubble.label",
627
661
  description: "chart.bubble.description",
628
662
  useCase: "chart.bubble.useCase",
663
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 2 ? {
664
+ available: !1,
665
+ reason: "chart.availability.requiresTwoMeasures"
666
+ } : t < 1 ? {
667
+ available: !1,
668
+ reason: "chart.availability.bubble"
669
+ } : { available: !0 },
629
670
  dropZones: [
630
671
  {
631
672
  key: "xAxis",
@@ -702,6 +743,13 @@ var d = {
702
743
  label: "chart.radar.label",
703
744
  description: "chart.radar.description",
704
745
  useCase: "chart.radar.useCase",
746
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
747
+ available: !1,
748
+ reason: "chart.availability.requiresMeasure"
749
+ } : t < 1 ? {
750
+ available: !1,
751
+ reason: "chart.availability.requiresDimension"
752
+ } : { available: !0 },
705
753
  dropZones: [
706
754
  {
707
755
  key: "xAxis",
@@ -745,6 +793,13 @@ var d = {
745
793
  label: "chart.radialBar.label",
746
794
  description: "chart.radialBar.description",
747
795
  useCase: "chart.radialBar.useCase",
796
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
797
+ available: !1,
798
+ reason: "chart.availability.requiresMeasure"
799
+ } : t < 1 ? {
800
+ available: !1,
801
+ reason: "chart.availability.requiresDimension"
802
+ } : { available: !0 },
748
803
  dropZones: [{
749
804
  key: "xAxis",
750
805
  label: "chart.configText.categories",
@@ -777,6 +832,13 @@ var d = {
777
832
  label: "chart.treemap.label",
778
833
  description: "chart.treemap.description",
779
834
  useCase: "chart.treemap.useCase",
835
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
836
+ available: !1,
837
+ reason: "chart.availability.requiresMeasure"
838
+ } : t < 1 ? {
839
+ available: !1,
840
+ reason: "chart.availability.requiresDimension"
841
+ } : { available: !0 },
780
842
  dropZones: [
781
843
  {
782
844
  key: "xAxis",
@@ -846,6 +908,13 @@ var d = {
846
908
  label: "chart.activityGrid.label",
847
909
  description: "chart.activityGrid.description",
848
910
  useCase: "chart.activityGrid.useCase",
911
+ isAvailable: ({ measureCount: e, timeDimensionCount: t }) => e < 1 ? {
912
+ available: !1,
913
+ reason: "chart.availability.requiresMeasure"
914
+ } : t < 1 ? {
915
+ available: !1,
916
+ reason: "chart.availability.requiresTimeDimension"
917
+ } : { available: !0 },
849
918
  dropZones: [{
850
919
  key: "dateField",
851
920
  label: "chart.configText.time_dimension",
@@ -891,6 +960,10 @@ var d = {
891
960
  label: "chart.kpiNumber.label",
892
961
  description: "chart.kpiNumber.description",
893
962
  useCase: "chart.kpiNumber.useCase",
963
+ isAvailable: ({ measureCount: e }) => e < 1 ? {
964
+ available: !1,
965
+ reason: "chart.availability.requiresMeasure"
966
+ } : { available: !0 },
894
967
  dropZones: [{
895
968
  key: "yAxis",
896
969
  label: "chart.configText.value",
@@ -960,6 +1033,13 @@ var d = {
960
1033
  label: "chart.kpiDelta.label",
961
1034
  description: "chart.kpiDelta.description",
962
1035
  useCase: "chart.kpiDelta.useCase",
1036
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
1037
+ available: !1,
1038
+ reason: "chart.availability.requiresMeasure"
1039
+ } : t < 1 ? {
1040
+ available: !1,
1041
+ reason: "chart.availability.requiresDimension"
1042
+ } : { available: !0 },
963
1043
  dropZones: [{
964
1044
  key: "yAxis",
965
1045
  label: "chart.configText.value",
@@ -1048,6 +1128,10 @@ var d = {
1048
1128
  label: "chart.kpiText.label",
1049
1129
  description: "chart.kpiText.description",
1050
1130
  useCase: "chart.kpiText.useCase",
1131
+ isAvailable: ({ measureCount: e }) => e < 1 ? {
1132
+ available: !1,
1133
+ reason: "chart.availability.requiresMeasure"
1134
+ } : { available: !0 },
1051
1135
  dropZones: [{
1052
1136
  key: "yAxis",
1053
1137
  label: "chart.configText.value",
@@ -1386,6 +1470,13 @@ var d = {
1386
1470
  label: "chart.heatmap.label",
1387
1471
  description: "chart.heatmap.description",
1388
1472
  useCase: "chart.heatmap.useCase",
1473
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
1474
+ available: !1,
1475
+ reason: "chart.availability.requiresMeasure"
1476
+ } : t < 2 ? {
1477
+ available: !1,
1478
+ reason: "chart.availability.requiresTwoDimensions"
1479
+ } : { available: !0 },
1389
1480
  dropZones: [
1390
1481
  {
1391
1482
  key: "xAxis",
@@ -1540,6 +1631,13 @@ var d = {
1540
1631
  label: "chart.boxPlot.label",
1541
1632
  description: "chart.boxPlot.description",
1542
1633
  useCase: "chart.boxPlot.useCase",
1634
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
1635
+ available: !1,
1636
+ reason: "chart.availability.requiresMeasure"
1637
+ } : t < 1 ? {
1638
+ available: !1,
1639
+ reason: "chart.availability.requiresDimension"
1640
+ } : { available: !0 },
1543
1641
  displayOptions: ["hideHeader"],
1544
1642
  dropZones: [{
1545
1643
  key: "xAxis",
@@ -1570,6 +1668,13 @@ var d = {
1570
1668
  description: "chart.waterfall.description",
1571
1669
  useCase: "chart.waterfall.useCase",
1572
1670
  clickableElements: { bar: !0 },
1671
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
1672
+ available: !1,
1673
+ reason: "chart.availability.requiresMeasure"
1674
+ } : t < 1 ? {
1675
+ available: !1,
1676
+ reason: "chart.availability.requiresDimension"
1677
+ } : { available: !0 },
1573
1678
  displayOptions: ["showTooltip", "hideHeader"],
1574
1679
  dropZones: [{
1575
1680
  key: "xAxis",
@@ -1624,6 +1729,13 @@ var d = {
1624
1729
  useCase: "chart.candlestick.useCase",
1625
1730
  clickableElements: { bar: !0 },
1626
1731
  displayOptions: ["hideHeader"],
1732
+ isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 2 ? {
1733
+ available: !1,
1734
+ reason: "chart.availability.requiresTwoMeasures"
1735
+ } : t < 1 ? {
1736
+ available: !1,
1737
+ reason: "chart.availability.requiresDimension"
1738
+ } : { available: !0 },
1627
1739
  dropZones: [{
1628
1740
  key: "xAxis",
1629
1741
  label: "chart.configText.x_axis_time_category",
@@ -1693,6 +1805,10 @@ var d = {
1693
1805
  "showTooltip",
1694
1806
  "hideHeader"
1695
1807
  ],
1808
+ isAvailable: ({ measureCount: e }) => e < 2 ? {
1809
+ available: !1,
1810
+ reason: "chart.availability.requiresTwoMeasures"
1811
+ } : { available: !0 },
1696
1812
  dropZones: [{
1697
1813
  key: "yAxis",
1698
1814
  label: "chart.configText.measures_x_axis_order",
@@ -1766,6 +1882,10 @@ var d = {
1766
1882
  useCase: "chart.gauge.useCase",
1767
1883
  clickableElements: {},
1768
1884
  displayOptions: ["hideHeader"],
1885
+ isAvailable: ({ measureCount: e }) => e < 1 ? {
1886
+ available: !1,
1887
+ reason: "chart.availability.requiresMeasure"
1888
+ } : { available: !0 },
1769
1889
  dropZones: [{
1770
1890
  key: "yAxis",
1771
1891
  label: "chart.configText.value_measure",
@@ -1974,7 +2094,7 @@ function g() {
1974
2094
  description: "Execute a semantic query and return data results. Supports standard queries (measures/dimensions) and analysis modes (funnel/flow/retention). Only provide ONE mode per call.",
1975
2095
  parameters: {
1976
2096
  type: "object",
1977
- properties: i
2097
+ properties: t
1978
2098
  }
1979
2099
  },
1980
2100
  {
@@ -2214,9 +2334,9 @@ function g() {
2214
2334
  ];
2215
2335
  }
2216
2336
  function _(e) {
2217
- let { semanticLayer: i, securityContext: a } = e, o = /* @__PURE__ */ new Map();
2337
+ let { semanticLayer: t, securityContext: n } = e, o = /* @__PURE__ */ new Map();
2218
2338
  o.set("discover_cubes", async (e) => {
2219
- let n = { cubes: (await t(i, {
2339
+ let n = { cubes: (await r(t, {
2220
2340
  topic: e.topic,
2221
2341
  intent: e.intent,
2222
2342
  limit: e.limit,
@@ -2237,11 +2357,11 @@ function _(e) {
2237
2357
  })) };
2238
2358
  return { result: JSON.stringify(n) + "\n[IMPORTANT: Your next response MUST start with a brief text message BEFORE any tool calls.]" };
2239
2359
  }), o.set("get_cube_metadata", async () => {
2240
- let e = i.getMetadata();
2360
+ let e = t.getMetadata();
2241
2361
  return { result: JSON.stringify(e) };
2242
2362
  });
2243
2363
  let s = /* @__PURE__ */ new Map();
2244
- for (let e of i.getMetadata()) s.set(e.name, {
2364
+ for (let e of t.getMetadata()) s.set(e.name, {
2245
2365
  measures: (e.measures || []).map((e) => e.name),
2246
2366
  dimensions: (e.dimensions || []).map((e) => e.name)
2247
2367
  });
@@ -2251,7 +2371,7 @@ function _(e) {
2251
2371
  };
2252
2372
  return o.set("execute_query", async (e) => {
2253
2373
  try {
2254
- let t = (e, t) => {
2374
+ let r = (e, t) => {
2255
2375
  if (!Array.isArray(e)) return;
2256
2376
  let n = [];
2257
2377
  for (let r of e) {
@@ -2261,9 +2381,9 @@ function _(e) {
2261
2381
  }
2262
2382
  if (n.length > 0) throw Error(`Invalid ${t}:\n${n.join("\n")}`);
2263
2383
  };
2264
- t(e.measures, "measures"), t(e.dimensions, "dimensions");
2265
- let n;
2266
- n = e.funnel ? { funnel: e.funnel } : e.flow ? { flow: e.flow } : e.retention ? { retention: e.retention } : {
2384
+ r(e.measures, "measures"), r(e.dimensions, "dimensions");
2385
+ let i;
2386
+ i = e.funnel ? { funnel: e.funnel } : e.flow ? { flow: e.flow } : e.retention ? { retention: e.retention } : {
2267
2387
  measures: e.measures,
2268
2388
  dimensions: e.dimensions,
2269
2389
  filters: e.filters,
@@ -2273,7 +2393,7 @@ function _(e) {
2273
2393
  offset: e.offset,
2274
2394
  ungrouped: e.ungrouped
2275
2395
  };
2276
- let o = await r(i, a, { query: n });
2396
+ let o = await a(t, n, { query: i });
2277
2397
  return { result: JSON.stringify({
2278
2398
  rowCount: o.data.length,
2279
2399
  data: o.data,
@@ -2297,7 +2417,7 @@ function _(e) {
2297
2417
  };
2298
2418
  }
2299
2419
  }), o.set("add_portlet", async (e) => {
2300
- let t = {
2420
+ let n = {
2301
2421
  number: "kpiNumber",
2302
2422
  retention: "retentionHeatmap"
2303
2423
  }[e.chartType] ?? e.chartType, r;
@@ -2309,8 +2429,8 @@ function _(e) {
2309
2429
  isError: !0
2310
2430
  };
2311
2431
  }
2312
- r = n(r);
2313
- let a = i.validateQuery(r);
2432
+ r = i(r);
2433
+ let a = t.validateQuery(r);
2314
2434
  if (!a.isValid) return {
2315
2435
  result: `Invalid query — fix these errors and retry:\n${a.errors.join("\n")}\n\nAttempted query:\n${JSON.stringify(r, null, 2)}`,
2316
2436
  isError: !0
@@ -2318,23 +2438,23 @@ function _(e) {
2318
2438
  let o = !!(r.funnel || r.flow || r.retention), s;
2319
2439
  if (o) s = e.chartConfig ?? {};
2320
2440
  else {
2321
- let n = p(t, e.chartConfig, r), i = f(t, n, r);
2441
+ let t = p(n, e.chartConfig, r), i = f(n, t, r);
2322
2442
  if (!i.isValid) return {
2323
2443
  result: `Chart config invalid — fix these errors and retry:\n${i.errors.join("\n")}`,
2324
2444
  isError: !0
2325
2445
  };
2326
- s = n;
2446
+ s = t;
2327
2447
  }
2328
2448
  let c = `portlet-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`, l = {
2329
2449
  id: c,
2330
2450
  title: e.title,
2331
2451
  query: e.query,
2332
- chartType: t,
2452
+ chartType: n,
2333
2453
  chartConfig: s,
2334
2454
  displayConfig: e.displayConfig
2335
2455
  };
2336
2456
  return {
2337
- result: `Portlet "${e.title}" added to notebook (id: ${c}, chart: ${t}). [Reminder: in your next response, start with a brief sentence about what you will do next BEFORE making any tool calls.]`,
2457
+ result: `Portlet "${e.title}" added to notebook (id: ${c}, chart: ${n}). [Reminder: in your next response, start with a brief sentence about what you will do next BEFORE making any tool calls.]`,
2338
2458
  sideEffect: {
2339
2459
  type: "add_portlet",
2340
2460
  data: l
@@ -2355,28 +2475,28 @@ function _(e) {
2355
2475
  };
2356
2476
  }), o.set("save_as_dashboard", async (e) => {
2357
2477
  try {
2358
- let t = e.portlets;
2359
- if (!t || t.length === 0) return {
2478
+ let n = e.portlets;
2479
+ if (!n || n.length === 0) return {
2360
2480
  result: "Dashboard must contain at least one portlet.",
2361
2481
  isError: !0
2362
2482
  };
2363
2483
  let r = [];
2364
- for (let e of t) {
2484
+ for (let e of n) {
2365
2485
  if (e.chartType === "markdown") continue;
2366
- let t = e.query;
2367
- if (!t) {
2486
+ let n = e.query;
2487
+ if (!n) {
2368
2488
  r.push(`Portlet "${e.title}": missing query`);
2369
2489
  continue;
2370
2490
  }
2371
2491
  let a;
2372
2492
  try {
2373
- a = JSON.parse(t);
2493
+ a = JSON.parse(n);
2374
2494
  } catch {
2375
2495
  r.push(`Portlet "${e.title}": invalid JSON query`);
2376
2496
  continue;
2377
2497
  }
2378
- a = n(a);
2379
- let o = i.validateQuery(a);
2498
+ a = i(a);
2499
+ let o = t.validateQuery(a);
2380
2500
  o.isValid || r.push(`Portlet "${e.title}": ${o.errors.join(", ")}`);
2381
2501
  }
2382
2502
  if (r.length > 0) return {
@@ -2384,7 +2504,7 @@ function _(e) {
2384
2504
  isError: !0
2385
2505
  };
2386
2506
  let a = {
2387
- portlets: t.map((e) => {
2507
+ portlets: n.map((e) => {
2388
2508
  let t = e.chartType, n = t === "markdown", r = n ? "query" : e.analysisType || "query", i = r === "funnel" ? "funnel" : r === "flow" ? "flow" : r === "retention" ? "retention" : "query", a = e.query || "{}", o;
2389
2509
  try {
2390
2510
  o = JSON.parse(a);
@@ -2440,15 +2560,15 @@ function _(e) {
2440
2560
  async function v(e, t, n) {
2441
2561
  switch (e) {
2442
2562
  case "anthropic": {
2443
- let { AnthropicProvider: e } = await import("./anthropic-DpEbCVvF.js");
2563
+ let { AnthropicProvider: e } = await import("./anthropic-B_rg0BhK.js");
2444
2564
  return new e(t);
2445
2565
  }
2446
2566
  case "openai": {
2447
- let { OpenAIProvider: e } = await import("./openai-BWdm0JvG.js");
2567
+ let { OpenAIProvider: e } = await import("./openai-DQawCWQb.js");
2448
2568
  return new e(t, n);
2449
2569
  }
2450
2570
  case "google": {
2451
- let { GoogleProvider: e } = await import("./google-CBfBGU4F.js");
2571
+ let { GoogleProvider: e } = await import("./google-CT4kgmBf.js");
2452
2572
  return new e(t);
2453
2573
  }
2454
2574
  default: throw Error(`Unknown LLM provider: "${e}". Supported providers: anthropic, openai, google`);
@@ -1,3 +1,3 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../utils-XPOzzMdY.cjs`),t=require(`../locale-BoiA6WiV.cjs`),n=require(`../mcp-transport-irsahKmD.cjs`);let r=require(`hono`);var i=e=>{let t={origin:`*`,allowMethods:[`GET`,`HEAD`,`PUT`,`POST`,`DELETE`,`PATCH`],allowHeaders:[],exposeHeaders:[],...e},n=(e=>typeof e==`string`?e===`*`?t.credentials?e=>e||null:()=>e:t=>e===t?t:null:typeof e==`function`?e:t=>e.includes(t)?t:null)(t.origin),r=(e=>typeof e==`function`?e:Array.isArray(e)?()=>e:()=>[])(t.allowMethods);return async function(e,i){function a(t,n){e.res.headers.set(t,n)}let o=await n(e.req.header(`origin`)||``,e);if(o&&a(`Access-Control-Allow-Origin`,o),t.credentials&&a(`Access-Control-Allow-Credentials`,`true`),t.exposeHeaders?.length&&a(`Access-Control-Expose-Headers`,t.exposeHeaders.join(`,`)),e.req.method===`OPTIONS`){(t.origin!==`*`||t.credentials)&&a(`Vary`,`Origin`),t.maxAge!=null&&a(`Access-Control-Max-Age`,t.maxAge.toString());let n=await r(e.req.header(`origin`)||``,e);n.length&&a(`Access-Control-Allow-Methods`,n.join(`,`));let i=t.allowHeaders;if(!i?.length){let t=e.req.header(`Access-Control-Request-Headers`);t&&(i=t.split(/\s*,\s*/))}return i?.length&&(a(`Access-Control-Allow-Headers`,i.join(`,`)),e.res.headers.append(`Vary`,`Access-Control-Request-Headers`)),e.res.headers.delete(`Content-Length`),e.res.headers.delete(`Content-Type`),new Response(null,{headers:e.res.headers,status:204,statusText:`No Content`})}await i(),(t.origin!==`*`||t.credentials)&&e.header(`Vary`,`Origin`,{append:!0})}};function a(a){let{cubes:o,drizzle:s,schema:c,extractSecurityContext:l,engineType:u,cors:d,basePath:f=`/cubejs-api/v1`,cache:p,mcp:m={enabled:!0},agent:h}=a;if(!a.semanticLayer&&(!o||o.length===0))throw Error(`Either semanticLayer or a non-empty cubes array must be provided`);let g=new r.Hono,_=async e=>t.r(await l(e),t.n(t=>e.req.header(t)));if(d){let e={...d,allowHeaders:t.t(d.allowHeaders)};g.use(`/*`,i(e))}let v=a.semanticLayer??new t.i({drizzle:s,schema:c,engineType:u,cache:p,rlsSetup:a.rlsSetup});if(!a.semanticLayer&&o&&o.forEach(e=>{v.registerCube(e)}),g.post(`${f}/load`,async t=>{try{let n=await t.req.json(),r=n.query||n,i=await _(t),a=v.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=t.req.header(`x-cache-control`)===`no-cache`,s=await v.executeMultiCubeQuery(r,i,{skipCache:o});return t.json(e.r(r,s,v))}catch(e){return console.error(`Query execution error:`,e),t.json({error:e instanceof Error?e.message:`Query execution failed`},500)}}),g.get(`${f}/load`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`},400);let r;try{r=JSON.parse(n)}catch{return t.json({error:`Invalid JSON in query parameter`},400)}let i=await _(t),a=v.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=t.req.header(`x-cache-control`)===`no-cache`,s=await v.executeMultiCubeQuery(r,i,{skipCache:o});return t.json(e.r(r,s,v))}catch(e){return console.error(`Query execution error:`,e),t.json({error:e instanceof Error?e.message:`Query execution failed`},500)}}),g.post(`${f}/batch`,async t=>{try{let{queries:n}=await t.req.json();if(!n||!Array.isArray(n))return t.json({error:`Request body must contain a "queries" array`},400);if(n.length===0)return t.json({error:`Queries array cannot be empty`},400);let r=await e.u(n,await _(t),v,{skipCache:t.req.header(`x-cache-control`)===`no-cache`});return t.json(r)}catch(e){return console.error(`Batch execution error:`,e),t.json({error:e instanceof Error?e.message:`Batch execution failed`},500)}}),g.get(`${f}/meta`,t=>{try{let n=v.getMetadata();return t.json(e.a(n))}catch(e){return console.error(`Metadata error:`,e),t.json({error:e instanceof Error?e.message:`Failed to fetch metadata`},500)}}),g.post(`${f}/sql`,async t=>{try{let n=await t.req.json(),r=await _(t),i=v.validateQuery(n);if(!i.isValid)return t.json({error:`Query validation failed: ${i.errors.join(`, `)}`},400);let a=n.measures?.[0]||n.dimensions?.[0];if(!a)return t.json({error:`No measures or dimensions specified`},400);let o=a.split(`.`)[0],s=await v.generateSQL(o,n,r);return t.json(e.o(n,s))}catch(e){return console.error(`SQL generation error:`,e),t.json({error:e instanceof Error?e.message:`SQL generation failed`},500)}}),g.get(`${f}/sql`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`},400);let r=JSON.parse(n),i=await _(t),a=v.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=r.measures?.[0]||r.dimensions?.[0];if(!o)return t.json({error:`No measures or dimensions specified`},400);let s=o.split(`.`)[0],c=await v.generateSQL(s,r,i);return t.json(e.o(r,c))}catch(e){return console.error(`SQL generation error:`,e),t.json({error:e instanceof Error?e.message:`SQL generation failed`},500)}}),g.post(`${f}/dry-run`,async t=>{try{let n=await t.req.json(),r=await e.f(n.query||n,await _(t),v);return t.json(r)}catch(e){return console.error(`Dry-run error:`,e),t.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},400)}}),g.get(`${f}/dry-run`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`,valid:!1},400);let r=await e.f(JSON.parse(n),await _(t),v);return t.json(r)}catch(e){return console.error(`Dry-run error:`,e),t.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},400)}}),g.post(`${f}/explain`,async e=>{try{let t=await e.req.json(),n=t.query||t,r=t.options||{},i=await _(e),a=v.validateQuery(n);if(!a.isValid)return e.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=await v.explainQuery(n,i,r);return e.json(o)}catch(t){return console.error(`Explain error:`,t),e.json({error:t instanceof Error?t.message:`Explain query failed`},500)}}),h&&g.post(`${f}/agent/chat`,async e=>{try{let{handleAgentChat:t}=await Promise.resolve().then(()=>require(`../handler-Cqf-CqAS.cjs`)),{message:n,sessionId:r,history:i}=await e.req.json();if(!n||typeof n!=`string`)return e.json({error:`message is required and must be a string`},400);let a=(h.apiKey||``).trim();if(h.allowClientApiKey){let t=e.req.header(`x-agent-api-key`);t&&(a=t.trim())}if(!a)return e.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},401);let o=h.allowClientApiKey?e.req.header(`x-agent-provider`):void 0,s=h.allowClientApiKey?e.req.header(`x-agent-model`):void 0,c=h.allowClientApiKey?e.req.header(`x-agent-provider-endpoint`):void 0,l=await _(e),u=h.buildSystemContext?.(l),d=new TextEncoder,f=new ReadableStream({async start(e){try{let f=t({message:n,sessionId:r,history:i,semanticLayer:v,securityContext:l,agentConfig:h,apiKey:a,systemContext:u,providerOverride:o,modelOverride:s,baseURLOverride:c});for await(let t of f){let n=`data: ${JSON.stringify(t)}\n\n`;e.enqueue(d.encode(n))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(d.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}});return new Response(f,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}})}catch(t){return console.error(`Agent chat error:`,t),e.json({error:t instanceof Error?t.message:`Agent chat failed`},500)}}),m.enabled!==!1){let e=n.o(v,m.resources),t=n.v(m.prompts),r=m.basePath??`/mcp`;g.post(`${r}`,async r=>{if(m.resourceMetadataUrl&&!n.u(r.req.header(`authorization`)))return r.header(`WWW-Authenticate`,n.c(m.resourceMetadataUrl)),r.json({error:`Bearer token required`},401);let i=n.x(r.req.header(`origin`),m.allowedOrigins?{allowedOrigins:m.allowedOrigins}:{});if(!i.valid)return r.json(n.i(null,-32600,i.reason),403);let a=r.req.header(`accept`);if(!n.b(a))return r.json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`),400);let o=n.h(r.req.header());if(!o.ok)return r.json({error:`Unsupported MCP protocol version`,supported:o.supported},426);let s=n.g(await r.req.json().catch(()=>null));if(!s)return r.json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`),400);let c=n.S(a),l=s.method===`initialize`;try{let i=await n.l(s.method,s.params,{semanticLayer:v,extractSecurityContext:(e,t)=>_(e),rawRequest:r,rawResponse:null,negotiatedProtocol:o.negotiated,resources:e,prompts:t,appEnabled:!!m.app,appConfig:typeof m.app==`object`?m.app:void 0,serverName:m.serverName});if(n.m(s))return r.body(null,202);let a=n.a(s.id??null,i),u=l&&i&&typeof i==`object`&&`sessionId`in i?i.sessionId:void 0,d={};if(u&&(d[n.r]=u),c){let e=new TextEncoder,t=n._(),r=new ReadableStream({start(r){r.enqueue(e.encode(`id: ${t}\n\n`)),r.enqueue(e.encode(n.y(a,t))),r.close()}});return new Response(r,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...d}})}return r.json(a,200,d)}catch(e){if(n.m(s))return console.error(`MCP notification processing error:`,e),r.body(null,202);console.error(`MCP RPC error:`,e);let t=e?.code??-32603,i=e?.data,a=e.message||`MCP request failed`,o=n.i(s.id??null,t,a,i);if(c){let e=new TextEncoder,t=n._(),r=new ReadableStream({start(r){r.enqueue(e.encode(`id: ${t}\n\n`)),r.enqueue(e.encode(n.y(o,t))),r.close()}});return new Response(r,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}})}return r.json(o,200)}}),g.delete(`${r}`,e=>m.resourceMetadataUrl&&!n.u(e.req.header(`authorization`))?(e.header(`WWW-Authenticate`,n.c(m.resourceMetadataUrl)),e.json({error:`Bearer token required`},401)):e.json({error:`Session termination not supported`},405)),g.get(`${r}`,e=>{if(m.resourceMetadataUrl&&!n.u(e.req.header(`authorization`)))return e.header(`WWW-Authenticate`,n.c(m.resourceMetadataUrl)),e.json({error:`Bearer token required`},401);let t=new TextEncoder,r=n._(),i,a=new ReadableStream({start(e){e.enqueue(t.encode(n.y({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},r,15e3))),i=setInterval(()=>{e.enqueue(t.encode(`: keep-alive
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../utils-CIRA5_JO.cjs`),t=require(`../locale-CTuvUGBs.cjs`),n=require(`../mcp-transport-bQzyrBPI.cjs`);let r=require(`hono`);var i=e=>{let t={origin:`*`,allowMethods:[`GET`,`HEAD`,`PUT`,`POST`,`DELETE`,`PATCH`],allowHeaders:[],exposeHeaders:[],...e},n=(e=>typeof e==`string`?e===`*`?t.credentials?e=>e||null:()=>e:t=>e===t?t:null:typeof e==`function`?e:t=>e.includes(t)?t:null)(t.origin),r=(e=>typeof e==`function`?e:Array.isArray(e)?()=>e:()=>[])(t.allowMethods);return async function(e,i){function a(t,n){e.res.headers.set(t,n)}let o=await n(e.req.header(`origin`)||``,e);if(o&&a(`Access-Control-Allow-Origin`,o),t.credentials&&a(`Access-Control-Allow-Credentials`,`true`),t.exposeHeaders?.length&&a(`Access-Control-Expose-Headers`,t.exposeHeaders.join(`,`)),e.req.method===`OPTIONS`){(t.origin!==`*`||t.credentials)&&a(`Vary`,`Origin`),t.maxAge!=null&&a(`Access-Control-Max-Age`,t.maxAge.toString());let n=await r(e.req.header(`origin`)||``,e);n.length&&a(`Access-Control-Allow-Methods`,n.join(`,`));let i=t.allowHeaders;if(!i?.length){let t=e.req.header(`Access-Control-Request-Headers`);t&&(i=t.split(/\s*,\s*/))}return i?.length&&(a(`Access-Control-Allow-Headers`,i.join(`,`)),e.res.headers.append(`Vary`,`Access-Control-Request-Headers`)),e.res.headers.delete(`Content-Length`),e.res.headers.delete(`Content-Type`),new Response(null,{headers:e.res.headers,status:204,statusText:`No Content`})}await i(),(t.origin!==`*`||t.credentials)&&e.header(`Vary`,`Origin`,{append:!0})}};function a(a){let{cubes:o,drizzle:s,schema:c,extractSecurityContext:l,engineType:u,cors:d,basePath:f=`/cubejs-api/v1`,cache:p,mcp:m={enabled:!0},agent:h}=a;if(!a.semanticLayer&&(!o||o.length===0))throw Error(`Either semanticLayer or a non-empty cubes array must be provided`);let g=new r.Hono,_=async e=>t.r(await l(e),t.n(t=>e.req.header(t)));if(d){let e={...d,allowHeaders:t.t(d.allowHeaders)};g.use(`/*`,i(e))}let v=a.semanticLayer??new t.i({drizzle:s,schema:c,engineType:u,cache:p,rlsSetup:a.rlsSetup});if(!a.semanticLayer&&o&&o.forEach(e=>{v.registerCube(e)}),g.post(`${f}/load`,async t=>{try{let n=await t.req.json(),r=n.query||n,i=await _(t),a=v.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=t.req.header(`x-cache-control`)===`no-cache`,s=await v.executeMultiCubeQuery(r,i,{skipCache:o});return t.json(e.r(r,s,v))}catch(e){return console.error(`Query execution error:`,e),t.json({error:e instanceof Error?e.message:`Query execution failed`},500)}}),g.get(`${f}/load`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`},400);let r;try{r=JSON.parse(n)}catch{return t.json({error:`Invalid JSON in query parameter`},400)}let i=await _(t),a=v.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=t.req.header(`x-cache-control`)===`no-cache`,s=await v.executeMultiCubeQuery(r,i,{skipCache:o});return t.json(e.r(r,s,v))}catch(e){return console.error(`Query execution error:`,e),t.json({error:e instanceof Error?e.message:`Query execution failed`},500)}}),g.post(`${f}/batch`,async t=>{try{let{queries:n}=await t.req.json();if(!n||!Array.isArray(n))return t.json({error:`Request body must contain a "queries" array`},400);if(n.length===0)return t.json({error:`Queries array cannot be empty`},400);let r=await e.u(n,await _(t),v,{skipCache:t.req.header(`x-cache-control`)===`no-cache`});return t.json(r)}catch(e){return console.error(`Batch execution error:`,e),t.json({error:e instanceof Error?e.message:`Batch execution failed`},500)}}),g.get(`${f}/meta`,t=>{try{let n=v.getMetadata();return t.json(e.a(n))}catch(e){return console.error(`Metadata error:`,e),t.json({error:e instanceof Error?e.message:`Failed to fetch metadata`},500)}}),g.post(`${f}/sql`,async t=>{try{let n=await t.req.json(),r=await _(t),i=v.validateQuery(n);if(!i.isValid)return t.json({error:`Query validation failed: ${i.errors.join(`, `)}`},400);let a=n.measures?.[0]||n.dimensions?.[0];if(!a)return t.json({error:`No measures or dimensions specified`},400);let o=a.split(`.`)[0],s=await v.generateSQL(o,n,r);return t.json(e.o(n,s))}catch(e){return console.error(`SQL generation error:`,e),t.json({error:e instanceof Error?e.message:`SQL generation failed`},500)}}),g.get(`${f}/sql`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`},400);let r=JSON.parse(n),i=await _(t),a=v.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=r.measures?.[0]||r.dimensions?.[0];if(!o)return t.json({error:`No measures or dimensions specified`},400);let s=o.split(`.`)[0],c=await v.generateSQL(s,r,i);return t.json(e.o(r,c))}catch(e){return console.error(`SQL generation error:`,e),t.json({error:e instanceof Error?e.message:`SQL generation failed`},500)}}),g.post(`${f}/dry-run`,async t=>{try{let n=await t.req.json(),r=await e.f(n.query||n,await _(t),v);return t.json(r)}catch(e){return console.error(`Dry-run error:`,e),t.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},400)}}),g.get(`${f}/dry-run`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`,valid:!1},400);let r=await e.f(JSON.parse(n),await _(t),v);return t.json(r)}catch(e){return console.error(`Dry-run error:`,e),t.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},400)}}),g.post(`${f}/explain`,async e=>{try{let t=await e.req.json(),n=t.query||t,r=t.options||{},i=await _(e),a=v.validateQuery(n);if(!a.isValid)return e.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=await v.explainQuery(n,i,r);return e.json(o)}catch(t){return console.error(`Explain error:`,t),e.json({error:t instanceof Error?t.message:`Explain query failed`},500)}}),h&&g.post(`${f}/agent/chat`,async e=>{try{let{handleAgentChat:t}=await Promise.resolve().then(()=>require(`../handler-C1Qs8JMY.cjs`)),{message:n,sessionId:r,history:i}=await e.req.json();if(!n||typeof n!=`string`)return e.json({error:`message is required and must be a string`},400);let a=(h.apiKey||``).trim();if(h.allowClientApiKey){let t=e.req.header(`x-agent-api-key`);t&&(a=t.trim())}if(!a)return e.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},401);let o=h.allowClientApiKey?e.req.header(`x-agent-provider`):void 0,s=h.allowClientApiKey?e.req.header(`x-agent-model`):void 0,c=h.allowClientApiKey?e.req.header(`x-agent-provider-endpoint`):void 0,l=await _(e),u=h.buildSystemContext?.(l),d=new TextEncoder,f=new ReadableStream({async start(e){try{let f=t({message:n,sessionId:r,history:i,semanticLayer:v,securityContext:l,agentConfig:h,apiKey:a,systemContext:u,providerOverride:o,modelOverride:s,baseURLOverride:c});for await(let t of f){let n=`data: ${JSON.stringify(t)}\n\n`;e.enqueue(d.encode(n))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(d.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}});return new Response(f,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}})}catch(t){return console.error(`Agent chat error:`,t),e.json({error:t instanceof Error?t.message:`Agent chat failed`},500)}}),m.enabled!==!1){let e=n.o(v,m.resources),t=n.y(m.prompts),r=n.v(m.instructions),i=m.basePath??`/mcp`;g.post(`${i}`,async i=>{if(m.resourceMetadataUrl&&!n.u(i.req.header(`authorization`)))return i.header(`WWW-Authenticate`,n.c(m.resourceMetadataUrl)),i.json({error:`Bearer token required`},401);let a=n.S(i.req.header(`origin`),m.allowedOrigins?{allowedOrigins:m.allowedOrigins}:{});if(!a.valid)return i.json(n.i(null,-32600,a.reason),403);let o=i.req.header(`accept`);if(!n.x(o))return i.json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`),400);let s=n.h(i.req.header());if(!s.ok)return i.json({error:`Unsupported MCP protocol version`,supported:s.supported},426);let c=n.g(await i.req.json().catch(()=>null));if(!c)return i.json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`),400);let l=n.C(o),u=c.method===`initialize`;try{let a=await n.l(c.method,c.params,{semanticLayer:v,extractSecurityContext:(e,t)=>_(e),rawRequest:i,rawResponse:null,negotiatedProtocol:s.negotiated,resources:e,prompts:t,instructions:r,appEnabled:!!m.app,appConfig:typeof m.app==`object`?m.app:void 0,serverName:m.serverName});if(n.m(c))return i.body(null,202);let o=n.a(c.id??null,a),d=u&&a&&typeof a==`object`&&`sessionId`in a?a.sessionId:void 0,f={};if(d&&(f[n.r]=d),l){let e=new TextEncoder,t=n._(),r=new ReadableStream({start(r){r.enqueue(e.encode(`id: ${t}\n\n`)),r.enqueue(e.encode(n.b(o,t))),r.close()}});return new Response(r,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...f}})}return i.json(o,200,f)}catch(e){if(n.m(c))return console.error(`MCP notification processing error:`,e),i.body(null,202);console.error(`MCP RPC error:`,e);let t=e?.code??-32603,r=e?.data,a=e.message||`MCP request failed`,o=n.i(c.id??null,t,a,r);if(l){let e=new TextEncoder,t=n._(),r=new ReadableStream({start(r){r.enqueue(e.encode(`id: ${t}\n\n`)),r.enqueue(e.encode(n.b(o,t))),r.close()}});return new Response(r,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}})}return i.json(o,200)}}),g.delete(`${i}`,e=>m.resourceMetadataUrl&&!n.u(e.req.header(`authorization`))?(e.header(`WWW-Authenticate`,n.c(m.resourceMetadataUrl)),e.json({error:`Bearer token required`},401)):e.json({error:`Session termination not supported`},405)),g.get(`${i}`,e=>{if(m.resourceMetadataUrl&&!n.u(e.req.header(`authorization`)))return e.header(`WWW-Authenticate`,n.c(m.resourceMetadataUrl)),e.json({error:`Bearer token required`},401);let t=new TextEncoder,r=n._(),i,a=new ReadableStream({start(e){e.enqueue(t.encode(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},r,15e3))),i=setInterval(()=>{e.enqueue(t.encode(`: keep-alive
2
2
 
3
3
  `))},15e3)},cancel(){clearInterval(i)}});return new Response(a,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}})})}return g}function o(e,t){let n=a(t);return e.route(`/`,n),e}function s(e){return o(new r.Hono,e)}exports.createCubeApp=s,exports.createCubeRoutes=a,exports.mountCubeRoutes=o;