drizzle-cube 0.7.1 → 0.8.1

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 (363) hide show
  1. package/dist/adapters/ActivityGridChart.config-DXUUgx0N.cjs +1 -0
  2. package/dist/adapters/ActivityGridChart.config-Dyozu3VW.js +2 -0
  3. package/dist/adapters/AreaChart.config-Di5odBXp.cjs +1 -0
  4. package/dist/adapters/AreaChart.config-KEaXP_4K.js +2 -0
  5. package/dist/adapters/BarChart.config-B-hBHykR.cjs +1 -0
  6. package/dist/adapters/BarChart.config-C5sqbn0A.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-B1R4Br7L.js +2 -0
  8. package/dist/adapters/BoxPlotChart.config-C82Fhd3c.cjs +1 -0
  9. package/dist/adapters/BubbleChart.config-CoBxmmfp.js +2 -0
  10. package/dist/adapters/BubbleChart.config-DfOnNjL-.cjs +1 -0
  11. package/dist/adapters/CandlestickChart.config-C5ggV_3j.cjs +1 -0
  12. package/dist/adapters/CandlestickChart.config-ZaJpWVuL.js +2 -0
  13. package/dist/adapters/DataTable.config-Cx2_ACdY.cjs +1 -0
  14. package/dist/adapters/DataTable.config-DkAgD-iz.js +2 -0
  15. package/dist/adapters/FunnelChart.config-CvzcECUB.js +2 -0
  16. package/dist/adapters/FunnelChart.config-DVH7IFnb.cjs +1 -0
  17. package/dist/adapters/GaugeChart.config-Csx8rt8o.cjs +1 -0
  18. package/dist/adapters/GaugeChart.config-DEmrNgMa.js +2 -0
  19. package/dist/adapters/HeatMapChart.config-BfD_dpP7.js +2 -0
  20. package/dist/adapters/HeatMapChart.config-D_jlyPJL.cjs +1 -0
  21. package/dist/adapters/KpiDelta.config-CVBdUL_n.cjs +1 -0
  22. package/dist/adapters/KpiDelta.config-D4dCXOxl.js +2 -0
  23. package/dist/adapters/KpiNumber.config-BK5pgIKz.cjs +1 -0
  24. package/dist/adapters/KpiNumber.config-D6XqjZrm.js +2 -0
  25. package/dist/adapters/KpiText.config-ChphMwG5.js +2 -0
  26. package/dist/adapters/KpiText.config-fO1wc6FH.cjs +1 -0
  27. package/dist/adapters/LineChart.config-CXJrgz1s.js +2 -0
  28. package/dist/adapters/LineChart.config-Cg_h-SiJ.cjs +1 -0
  29. package/dist/adapters/MarkdownChart.config-ByPjX-4O.cjs +1 -0
  30. package/dist/adapters/MarkdownChart.config-Df2yY9AT.js +2 -0
  31. package/dist/adapters/MeasureProfileChart.config-BBWGIteF.cjs +1 -0
  32. package/dist/adapters/MeasureProfileChart.config-C9OFbN9Z.js +2 -0
  33. package/dist/adapters/PieChart.config-C6jJj6xm.js +2 -0
  34. package/dist/adapters/PieChart.config-CmCw_8eN.cjs +1 -0
  35. package/dist/adapters/ProportionBarChart.config-B9NEyFEe.js +2 -0
  36. package/dist/adapters/ProportionBarChart.config-C3GAVPWn.cjs +1 -0
  37. package/dist/adapters/RadarChart.config-5AMwEqUJ.cjs +1 -0
  38. package/dist/adapters/RadarChart.config-Ct_b7IM5.js +2 -0
  39. package/dist/adapters/RadialBarChart.config-Bp-Sl0cm.js +2 -0
  40. package/dist/adapters/RadialBarChart.config-D14yoexI.cjs +1 -0
  41. package/dist/adapters/RecordsTable.config-D2-qmG06.cjs +1 -0
  42. package/dist/adapters/RecordsTable.config-DIwoqZCU.js +2 -0
  43. package/dist/adapters/RetentionCombinedChart.config-BWHipi5M.cjs +1 -0
  44. package/dist/adapters/RetentionCombinedChart.config-D40UgTcl.js +2 -0
  45. package/dist/adapters/RetentionHeatmap.config-GlnSLrjn.js +2 -0
  46. package/dist/adapters/RetentionHeatmap.config-MlhZf26c.cjs +1 -0
  47. package/dist/adapters/SankeyChart.config-Bf1_NHiv.js +2 -0
  48. package/dist/adapters/SankeyChart.config-BoYf6BFE.cjs +1 -0
  49. package/dist/adapters/ScatterChart.config-CV2rdGJp.js +2 -0
  50. package/dist/adapters/ScatterChart.config-DywduGF3.cjs +1 -0
  51. package/dist/adapters/SunburstChart.config-CrqiE1UZ.js +2 -0
  52. package/dist/adapters/SunburstChart.config-D5tbF_GJ.cjs +1 -0
  53. package/dist/adapters/TreeMapChart.config-BJ8HnZU0.cjs +1 -0
  54. package/dist/adapters/TreeMapChart.config-DxgIqIIj.js +2 -0
  55. package/dist/adapters/WaterfallChart.config-Cns8fLFu.js +2 -0
  56. package/dist/adapters/WaterfallChart.config-D_kdL9SN.cjs +1 -0
  57. package/dist/adapters/compiler-BxZHh0UD.cjs +166 -0
  58. package/dist/adapters/{compiler-DiYxWAKg.js → compiler-CBGD_4Et.js} +1389 -1923
  59. package/dist/adapters/core/http-port.d.ts +34 -7
  60. package/dist/adapters/core/index.cjs +1 -1
  61. package/dist/adapters/core/index.d.ts +1 -0
  62. package/dist/adapters/core/index.js +2 -2
  63. package/dist/adapters/core/rest-handlers.d.ts +1 -1
  64. package/dist/adapters/core-CIGuwGuI.cjs +1 -0
  65. package/dist/adapters/{core-BOPRmxPc.js → core-DAAnqPyN.js} +81 -65
  66. package/dist/adapters/express/index.cjs +2 -2
  67. package/dist/adapters/express/index.d.ts +11 -2
  68. package/dist/adapters/express/index.js +14 -14
  69. package/dist/adapters/fastify/index.cjs +2 -2
  70. package/dist/adapters/fastify/index.d.ts +11 -2
  71. package/dist/adapters/fastify/index.js +29 -29
  72. package/dist/{server/google-eKAc20al.js → adapters/google-DRY7jnOh.js} +46 -28
  73. package/dist/adapters/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
  74. package/dist/adapters/handler-BcYTw6zB.cjs +25 -0
  75. package/dist/adapters/{handler-DGud-C-w.js → handler-eA0VJDHj.js} +363 -266
  76. package/dist/adapters/hono/index.cjs +1 -1
  77. package/dist/adapters/hono/index.js +9 -9
  78. package/dist/adapters/mcp-tools-handlers.d.ts +10 -3
  79. package/dist/adapters/mcp-tools.cjs +1 -1
  80. package/dist/adapters/mcp-tools.js +18 -20
  81. package/dist/adapters/mcp-transport-BpG44Fvn.js +730 -0
  82. package/dist/adapters/mcp-transport-CDxZXpc-.cjs +42 -0
  83. package/dist/adapters/mcp-transport.d.ts +13 -2
  84. package/dist/adapters/nextjs/index.cjs +1 -1
  85. package/dist/adapters/nextjs/index.d.ts +5 -2
  86. package/dist/adapters/nextjs/index.js +32 -32
  87. package/dist/adapters/{openai-Crp3X_zg.js → openai-BZ48ioYp.js} +1 -1
  88. package/dist/adapters/{openai-CmdN7Sj1.cjs → openai-Bw1j-OiP.cjs} +1 -1
  89. package/dist/adapters/{openai-Dwt9bxOE.cjs → openai-CLjyL5_J.cjs} +2 -2
  90. package/dist/adapters/{openai-CGJM6Qun.js → openai-CYYjUG_3.js} +4 -4
  91. package/dist/adapters/{utils-DboNUT3A.js → utils-BagURNRb.js} +1963 -1135
  92. package/dist/adapters/utils-BiKIg2tk.cjs +128 -0
  93. package/dist/adapters/utils.cjs +1 -1
  94. package/dist/adapters/utils.d.ts +19 -5
  95. package/dist/adapters/utils.js +1 -1
  96. package/dist/cjs/adapters/core/http-port.d.ts +34 -7
  97. package/dist/cjs/adapters/core/index.d.ts +1 -0
  98. package/dist/cjs/adapters/core/rest-handlers.d.ts +1 -1
  99. package/dist/cjs/adapters/express/index.d.ts +11 -2
  100. package/dist/cjs/adapters/fastify/index.d.ts +11 -2
  101. package/dist/cjs/adapters/mcp-tools-handlers.d.ts +10 -3
  102. package/dist/cjs/adapters/mcp-transport.d.ts +13 -2
  103. package/dist/cjs/adapters/nextjs/index.d.ts +5 -2
  104. package/dist/cjs/adapters/utils.d.ts +19 -5
  105. package/dist/cjs/client/charts/chartConfigRegistry.d.ts +7 -0
  106. package/dist/cjs/client/charts/chartConfigs.d.ts +17 -1
  107. package/dist/cjs/client/client/CubeClient.d.ts +11 -1
  108. package/dist/cjs/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
  109. package/dist/cjs/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
  110. package/dist/cjs/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
  111. package/dist/cjs/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
  112. package/dist/cjs/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
  113. package/dist/cjs/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
  114. package/dist/cjs/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
  115. package/dist/cjs/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
  116. package/dist/cjs/client/components/charts/RecordsTable.config.d.ts +10 -0
  117. package/dist/cjs/client/components/charts/RecordsTable.d.ts +4 -0
  118. package/dist/cjs/client/components/charts/recordsTableHooks.d.ts +68 -0
  119. package/dist/cjs/client/icons/types.d.ts +1 -0
  120. package/dist/cjs/client/index.d.ts +2 -2
  121. package/dist/cjs/client/types.d.ts +92 -1
  122. package/dist/cjs/client/utils/recordsTableUtils.d.ts +71 -0
  123. package/dist/cjs/client/utils/rowLinkUtils.d.ts +35 -0
  124. package/dist/cjs/server/adapters/base-adapter.d.ts +46 -0
  125. package/dist/cjs/server/adapters/databend-adapter.d.ts +5 -0
  126. package/dist/cjs/server/adapters/duckdb-adapter.d.ts +5 -0
  127. package/dist/cjs/server/adapters/mysql-adapter.d.ts +14 -0
  128. package/dist/cjs/server/adapters/postgres-adapter.d.ts +15 -0
  129. package/dist/cjs/server/adapters/snowflake-adapter.d.ts +6 -0
  130. package/dist/cjs/server/adapters/sqlite-adapter.d.ts +21 -0
  131. package/dist/cjs/server/agent/chart-validation.d.ts +1 -1
  132. package/dist/cjs/server/ai/chart-schema.d.ts +117 -0
  133. package/dist/cjs/server/ai/discovery-helpers.d.ts +14 -0
  134. package/dist/cjs/server/ai/discovery.d.ts +6 -0
  135. package/dist/cjs/server/ai/query-schema.d.ts +1 -1
  136. package/dist/cjs/server/attribute-dimensions.d.ts +102 -0
  137. package/dist/cjs/server/builders/group-by-builder.d.ts +15 -0
  138. package/dist/cjs/server/cache-utils.d.ts +5 -1
  139. package/dist/cjs/server/compiler-metadata.d.ts +24 -3
  140. package/dist/cjs/server/compiler.d.ts +159 -13
  141. package/dist/cjs/server/execution/query-result-cache.d.ts +1 -1
  142. package/dist/cjs/server/executor.d.ts +15 -0
  143. package/dist/cjs/server/index.d.ts +13 -3
  144. package/dist/cjs/server/query-handlers.d.ts +2 -1
  145. package/dist/cjs/server/query-validator.d.ts +36 -4
  146. package/dist/cjs/server/types/core.d.ts +13 -0
  147. package/dist/cjs/server/types/cube.d.ts +39 -2
  148. package/dist/cjs/server/types/query.d.ts +8 -0
  149. package/dist/cli/index.cjs +130 -52
  150. package/dist/client/charts/chartConfigRegistry.d.ts +7 -0
  151. package/dist/client/charts/chartConfigs.d.ts +17 -1
  152. package/dist/client/charts.js +13 -13
  153. package/dist/client/chunks/{DashboardEditModal-BOfLdTgV.js → DashboardEditModal-_ZDMwaGX.js} +1653 -1188
  154. package/dist/client/chunks/DashboardEditModal-_ZDMwaGX.js.map +1 -0
  155. package/dist/client/chunks/{ProportionBarChart-DwoXU5VP.js → ProportionBarChart-qfpAWhIg.js} +3 -3
  156. package/dist/client/chunks/{ProportionBarChart-DwoXU5VP.js.map → ProportionBarChart-qfpAWhIg.js.map} +1 -1
  157. package/dist/client/chunks/RecordsTable-KmJy94xN.js +556 -0
  158. package/dist/client/chunks/RecordsTable-KmJy94xN.js.map +1 -0
  159. package/dist/client/chunks/{RetentionCombinedChart-BqlSV7yF.js → RetentionCombinedChart-C7X6aj97.js} +3 -3
  160. package/dist/client/chunks/{RetentionCombinedChart-BqlSV7yF.js.map → RetentionCombinedChart-C7X6aj97.js.map} +1 -1
  161. package/dist/client/chunks/{RetentionHeatmap-VdVkBg8Q.js → RetentionHeatmap-PpRpiqR_.js} +2 -2
  162. package/dist/client/chunks/{RetentionHeatmap-VdVkBg8Q.js.map → RetentionHeatmap-PpRpiqR_.js.map} +1 -1
  163. package/dist/client/chunks/{analysis-builder-DXw60SEs.js → analysis-builder-DaqyOjLX.js} +169 -168
  164. package/dist/client/chunks/{analysis-builder-DXw60SEs.js.map → analysis-builder-DaqyOjLX.js.map} +1 -1
  165. package/dist/client/chunks/{analysis-builder-shared-CEvHIlmk.js → analysis-builder-shared-ow9KAHDP.js} +965 -954
  166. package/dist/client/chunks/analysis-builder-shared-ow9KAHDP.js.map +1 -0
  167. package/dist/client/chunks/{chart-activity-grid-4jfS8khG.js → chart-activity-grid-DO82rrbW.js} +140 -84
  168. package/dist/client/chunks/chart-activity-grid-DO82rrbW.js.map +1 -0
  169. package/dist/client/chunks/{chart-area-Dol6s9no.js → chart-area-9SBeG0GM.js} +21 -21
  170. package/dist/client/chunks/{chart-area-Dol6s9no.js.map → chart-area-9SBeG0GM.js.map} +1 -1
  171. package/dist/client/chunks/{chart-bar-5_niozi2.js → chart-bar-tfgmLK2D.js} +5 -5
  172. package/dist/client/chunks/{chart-bar-5_niozi2.js.map → chart-bar-tfgmLK2D.js.map} +1 -1
  173. package/dist/client/chunks/{chart-box-plot-Dhp-VwhD.js → chart-box-plot-BuYW6j6g.js} +2 -2
  174. package/dist/client/chunks/{chart-box-plot-Dhp-VwhD.js.map → chart-box-plot-BuYW6j6g.js.map} +1 -1
  175. package/dist/client/chunks/{chart-bubble-BM2BAMSo.js → chart-bubble-BNmonWqW.js} +2 -2
  176. package/dist/client/chunks/{chart-bubble-BM2BAMSo.js.map → chart-bubble-BNmonWqW.js.map} +1 -1
  177. package/dist/client/chunks/{chart-candlestick-BNwLIBfm.js → chart-candlestick-BYeWNkKl.js} +2 -2
  178. package/dist/client/chunks/{chart-candlestick-BNwLIBfm.js.map → chart-candlestick-BYeWNkKl.js.map} +1 -1
  179. package/dist/client/chunks/{chart-data-table-DoDHQRe7.js → chart-data-table-C_oHiK6N.js} +1094 -1029
  180. package/dist/client/chunks/chart-data-table-C_oHiK6N.js.map +1 -0
  181. package/dist/client/chunks/{chart-funnel-Cd7da_sa.js → chart-funnel-B_CWC3cL.js} +2 -2
  182. package/dist/client/chunks/{chart-funnel-Cd7da_sa.js.map → chart-funnel-B_CWC3cL.js.map} +1 -1
  183. package/dist/client/chunks/{chart-gauge-DOpul-Oz.js → chart-gauge-D7VxwPnx.js} +3 -3
  184. package/dist/client/chunks/{chart-gauge-DOpul-Oz.js.map → chart-gauge-D7VxwPnx.js.map} +1 -1
  185. package/dist/client/chunks/{chart-heat-map-CeKbK655.js → chart-heat-map-q7Vf_dog.js} +3 -3
  186. package/dist/client/chunks/{chart-heat-map-CeKbK655.js.map → chart-heat-map-q7Vf_dog.js.map} +1 -1
  187. package/dist/client/chunks/{chart-kpi-delta-Dq8qUOOT.js → chart-kpi-delta-PEuA3iGs.js} +3 -3
  188. package/dist/client/chunks/{chart-kpi-delta-Dq8qUOOT.js.map → chart-kpi-delta-PEuA3iGs.js.map} +1 -1
  189. package/dist/client/chunks/{chart-kpi-number-DgiqTi9g.js → chart-kpi-number-DlxrO6Pq.js} +5 -5
  190. package/dist/client/chunks/{chart-kpi-number-DgiqTi9g.js.map → chart-kpi-number-DlxrO6Pq.js.map} +1 -1
  191. package/dist/client/chunks/{chart-kpi-text-CsZMVEnM.js → chart-kpi-text-Cx6cJu2s.js} +3 -3
  192. package/dist/client/chunks/{chart-kpi-text-CsZMVEnM.js.map → chart-kpi-text-Cx6cJu2s.js.map} +1 -1
  193. package/dist/client/chunks/{chart-line-DlwOB7C7.js → chart-line-pDe25JzB.js} +3 -3
  194. package/dist/client/chunks/{chart-line-DlwOB7C7.js.map → chart-line-pDe25JzB.js.map} +1 -1
  195. package/dist/client/chunks/{chart-markdown-DPE34SjC.js → chart-markdown-CRY15yp0.js} +2 -2
  196. package/dist/client/chunks/{chart-markdown-DPE34SjC.js.map → chart-markdown-CRY15yp0.js.map} +1 -1
  197. package/dist/client/chunks/{chart-measure-profile-BpTz1fce.js → chart-measure-profile-DyQ-vvuC.js} +3 -3
  198. package/dist/client/chunks/{chart-measure-profile-BpTz1fce.js.map → chart-measure-profile-DyQ-vvuC.js.map} +1 -1
  199. package/dist/client/chunks/{chart-pie-FGw66XAH.js → chart-pie-ZrnBycy1.js} +15 -15
  200. package/dist/client/chunks/{chart-pie-FGw66XAH.js.map → chart-pie-ZrnBycy1.js.map} +1 -1
  201. package/dist/client/chunks/{chart-radar-D-eRDoiA.js → chart-radar-BXbnYMUJ.js} +13 -13
  202. package/dist/client/chunks/{chart-radar-D-eRDoiA.js.map → chart-radar-BXbnYMUJ.js.map} +1 -1
  203. package/dist/client/chunks/{chart-radial-bar-DgtkNTs3.js → chart-radial-bar-CYxH3ryh.js} +3 -3
  204. package/dist/client/chunks/{chart-radial-bar-DgtkNTs3.js.map → chart-radial-bar-CYxH3ryh.js.map} +1 -1
  205. package/dist/client/chunks/{chart-sankey-D0hhb_EQ.js → chart-sankey-C9R_TDDh.js} +2 -2
  206. package/dist/client/chunks/{chart-sankey-D0hhb_EQ.js.map → chart-sankey-C9R_TDDh.js.map} +1 -1
  207. package/dist/client/chunks/{chart-scatter-D9EcAiMQ.js → chart-scatter-DrwRkzzl.js} +3 -3
  208. package/dist/client/chunks/{chart-scatter-D9EcAiMQ.js.map → chart-scatter-DrwRkzzl.js.map} +1 -1
  209. package/dist/client/chunks/{chart-sunburst-DCYmJ5DU.js → chart-sunburst-Bs1yqIPp.js} +3 -3
  210. package/dist/client/chunks/{chart-sunburst-DCYmJ5DU.js.map → chart-sunburst-Bs1yqIPp.js.map} +1 -1
  211. package/dist/client/chunks/{chart-tree-map-D_ACSSiB.js → chart-tree-map-BNjHhhVq.js} +3 -3
  212. package/dist/client/chunks/{chart-tree-map-D_ACSSiB.js.map → chart-tree-map-BNjHhhVq.js.map} +1 -1
  213. package/dist/client/chunks/{chart-waterfall-CVUVNa1R.js → chart-waterfall-CyoC0uLT.js} +3 -3
  214. package/dist/client/chunks/{chart-waterfall-CVUVNa1R.js.map → chart-waterfall-CyoC0uLT.js.map} +1 -1
  215. package/dist/client/chunks/charts-core-DCQ7od_L.js +190 -0
  216. package/dist/client/chunks/charts-core-DCQ7od_L.js.map +1 -0
  217. package/dist/client/chunks/charts-loader-Bya_zDIA.js +86 -0
  218. package/dist/client/chunks/charts-loader-Bya_zDIA.js.map +1 -0
  219. package/dist/client/chunks/{en-US-BE6VoG0o.js → en-US-HP6FHuNy.js} +3 -1
  220. package/dist/client/chunks/{en-US-BE6VoG0o.js.map → en-US-HP6FHuNy.js.map} +1 -1
  221. package/dist/client/chunks/{exceljs.min-DWC_b8G9.js → exceljs.min-CiByP8VQ.js} +2 -3
  222. package/dist/client/chunks/{exceljs.min-DWC_b8G9.js.map → exceljs.min-CiByP8VQ.js.map} +1 -1
  223. package/dist/client/chunks/{nl-NL-DFLVORiD.js → nl-NL-CEdoCz6Q.js} +54 -1
  224. package/dist/client/chunks/nl-NL-CEdoCz6Q.js.map +1 -0
  225. package/dist/client/chunks/{schema-visualization-C6g_LCiA.js → schema-visualization-DfXxFBIY.js} +3 -3
  226. package/dist/client/chunks/{schema-visualization-C6g_LCiA.js.map → schema-visualization-DfXxFBIY.js.map} +1 -1
  227. package/dist/client/chunks/{useDirtyStateTracking-ZfChDEd3.js → useDirtyStateTracking-BFJHiiVK.js} +15 -15
  228. package/dist/client/chunks/{useDirtyStateTracking-ZfChDEd3.js.map → useDirtyStateTracking-BFJHiiVK.js.map} +1 -1
  229. package/dist/client/chunks/{useExplainAI-im9e1rVb.js → useExplainAI-_C4WQE5I.js} +16 -16
  230. package/dist/client/chunks/{useExplainAI-im9e1rVb.js.map → useExplainAI-_C4WQE5I.js.map} +1 -1
  231. package/dist/client/chunks/{vendor-Qa1s8oSX.js → vendor-Gb3lH0cc.js} +49 -49
  232. package/dist/client/chunks/vendor-Gb3lH0cc.js.map +1 -0
  233. package/dist/client/client/CubeClient.d.ts +11 -1
  234. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
  235. package/dist/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
  236. package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
  237. package/dist/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
  238. package/dist/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
  239. package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
  240. package/dist/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
  241. package/dist/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
  242. package/dist/client/components/charts/RecordsTable.config.d.ts +10 -0
  243. package/dist/client/components/charts/RecordsTable.d.ts +4 -0
  244. package/dist/client/components/charts/recordsTableHooks.d.ts +68 -0
  245. package/dist/client/components.js +1 -1
  246. package/dist/client/hooks.js +3 -3
  247. package/dist/client/icons/types.d.ts +1 -0
  248. package/dist/client/icons.js +2 -2
  249. package/dist/client/index.d.ts +2 -2
  250. package/dist/client/index.js +213 -213
  251. package/dist/client/providers.js +1 -1
  252. package/dist/client/schema.js +1 -1
  253. package/dist/client/styles.css +1 -1
  254. package/dist/client/types.d.ts +92 -1
  255. package/dist/client/utils/recordsTableUtils.d.ts +71 -0
  256. package/dist/client/utils/rowLinkUtils.d.ts +35 -0
  257. package/dist/client/utils.js +14 -14
  258. package/dist/client-bundle-stats.html +1 -1
  259. package/dist/mcp-app/mcp-app.html +109 -109
  260. package/dist/server/adapters/base-adapter.d.ts +46 -0
  261. package/dist/server/adapters/databend-adapter.d.ts +5 -0
  262. package/dist/server/adapters/duckdb-adapter.d.ts +5 -0
  263. package/dist/server/adapters/mysql-adapter.d.ts +14 -0
  264. package/dist/server/adapters/postgres-adapter.d.ts +15 -0
  265. package/dist/server/adapters/snowflake-adapter.d.ts +6 -0
  266. package/dist/server/adapters/sqlite-adapter.d.ts +21 -0
  267. package/dist/server/agent/chart-validation.d.ts +1 -1
  268. package/dist/server/ai/chart-schema.d.ts +117 -0
  269. package/dist/server/ai/discovery-helpers.d.ts +14 -0
  270. package/dist/server/ai/discovery.d.ts +6 -0
  271. package/dist/server/ai/query-schema.d.ts +1 -1
  272. package/dist/server/attribute-dimensions.d.ts +102 -0
  273. package/dist/server/builders/group-by-builder.d.ts +15 -0
  274. package/dist/server/cache-utils.d.ts +5 -1
  275. package/dist/server/compiler-metadata.d.ts +24 -3
  276. package/dist/server/compiler.d.ts +159 -13
  277. package/dist/server/execution/query-result-cache.d.ts +1 -1
  278. package/dist/server/executor.d.ts +15 -0
  279. package/dist/{adapters/google-eKAc20al.js → server/google-DRY7jnOh.js} +46 -28
  280. package/dist/server/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
  281. package/dist/server/index.cjs +42 -38
  282. package/dist/server/index.d.ts +13 -3
  283. package/dist/server/index.js +2079 -1573
  284. package/dist/server/{openai-Czk1BdHa.js → openai-6uUf7h-5.js} +1 -1
  285. package/dist/server/{openai-DBwI1OSu.cjs → openai-BBe1XbZd.cjs} +1 -1
  286. package/dist/server/{openai-Cu4TXXjl.cjs → openai-BmADmD1e.cjs} +1 -1
  287. package/dist/server/{openai-CUf4vc3Q.js → openai-C1gLuR-0.js} +1 -1
  288. package/dist/server/query-handlers.d.ts +2 -1
  289. package/dist/server/query-validator.d.ts +36 -4
  290. package/dist/server/types/core.d.ts +13 -0
  291. package/dist/server/types/cube.d.ts +39 -2
  292. package/dist/server/types/query.d.ts +8 -0
  293. package/package.json +2 -2
  294. package/dist/adapters/ActivityGridChart.config-D6hhj345.cjs +0 -1
  295. package/dist/adapters/ActivityGridChart.config-QZKs_NYg.js +0 -2
  296. package/dist/adapters/AreaChart.config-B5XM6G22.js +0 -2
  297. package/dist/adapters/AreaChart.config-NP34BH5y.cjs +0 -1
  298. package/dist/adapters/BarChart.config-Bqlmr81N.js +0 -2
  299. package/dist/adapters/BarChart.config-C3bw-cAP.cjs +0 -1
  300. package/dist/adapters/BoxPlotChart.config-BOAvoj6x.cjs +0 -1
  301. package/dist/adapters/BoxPlotChart.config-CTXiycYY.js +0 -2
  302. package/dist/adapters/BubbleChart.config-CGFIkl4H.cjs +0 -1
  303. package/dist/adapters/BubbleChart.config-Njxx4Eq1.js +0 -2
  304. package/dist/adapters/CandlestickChart.config-BZ_yWaSo.cjs +0 -1
  305. package/dist/adapters/CandlestickChart.config-D4Svhmef.js +0 -2
  306. package/dist/adapters/DataTable.config-B-bT9puT.js +0 -2
  307. package/dist/adapters/DataTable.config-BHtt1cPM.cjs +0 -1
  308. package/dist/adapters/FunnelChart.config-C1e07O7B.cjs +0 -1
  309. package/dist/adapters/FunnelChart.config-CVEy0tV9.js +0 -2
  310. package/dist/adapters/GaugeChart.config-5PLNlQlu.js +0 -2
  311. package/dist/adapters/GaugeChart.config-Cdv6knjZ.cjs +0 -1
  312. package/dist/adapters/HeatMapChart.config-MGTfYpWJ.js +0 -2
  313. package/dist/adapters/HeatMapChart.config-jfBEi1ZI.cjs +0 -1
  314. package/dist/adapters/KpiDelta.config-D2IUsEYz.cjs +0 -1
  315. package/dist/adapters/KpiDelta.config-DT_MmAHw.js +0 -2
  316. package/dist/adapters/KpiNumber.config-ChgbKmx8.cjs +0 -1
  317. package/dist/adapters/KpiNumber.config-CvZ_FhyL.js +0 -2
  318. package/dist/adapters/KpiText.config-Bgkw8gr2.js +0 -2
  319. package/dist/adapters/KpiText.config-Bz9orqt6.cjs +0 -1
  320. package/dist/adapters/LineChart.config-BVew35dI.cjs +0 -1
  321. package/dist/adapters/LineChart.config-DSCCKXNg.js +0 -2
  322. package/dist/adapters/MarkdownChart.config-Bu6XUuhI.js +0 -2
  323. package/dist/adapters/MarkdownChart.config-E4aSVTf3.cjs +0 -1
  324. package/dist/adapters/MeasureProfileChart.config-BF249hc_.cjs +0 -1
  325. package/dist/adapters/MeasureProfileChart.config-lERVe38G.js +0 -2
  326. package/dist/adapters/PieChart.config-7Ujwp8R5.cjs +0 -1
  327. package/dist/adapters/PieChart.config-jQl2HIcA.js +0 -2
  328. package/dist/adapters/ProportionBarChart.config-o0w_Pnlt.js +0 -2
  329. package/dist/adapters/ProportionBarChart.config-phNohhhY.cjs +0 -1
  330. package/dist/adapters/RadarChart.config-BmrYBd9x.js +0 -2
  331. package/dist/adapters/RadarChart.config-Dlt3UflG.cjs +0 -1
  332. package/dist/adapters/RadialBarChart.config-CeEm8xRb.cjs +0 -1
  333. package/dist/adapters/RadialBarChart.config-Dishh6bC.js +0 -2
  334. package/dist/adapters/RetentionCombinedChart.config-BaD4ev85.cjs +0 -1
  335. package/dist/adapters/RetentionCombinedChart.config-m2FjBUi9.js +0 -2
  336. package/dist/adapters/RetentionHeatmap.config-DiMplGdk.js +0 -2
  337. package/dist/adapters/RetentionHeatmap.config-Dp6oYwQZ.cjs +0 -1
  338. package/dist/adapters/SankeyChart.config-C4Y6qzCS.cjs +0 -1
  339. package/dist/adapters/SankeyChart.config-CJHqgjQ1.js +0 -2
  340. package/dist/adapters/ScatterChart.config-C0QqvDrN.cjs +0 -1
  341. package/dist/adapters/ScatterChart.config-DywOsWPW.js +0 -2
  342. package/dist/adapters/SunburstChart.config-DE8RxpDR.cjs +0 -1
  343. package/dist/adapters/SunburstChart.config-DohowrO3.js +0 -2
  344. package/dist/adapters/TreeMapChart.config-D2gXz-zC.cjs +0 -1
  345. package/dist/adapters/TreeMapChart.config-HMlI29GG.js +0 -2
  346. package/dist/adapters/WaterfallChart.config-BO2WV2VB.js +0 -2
  347. package/dist/adapters/WaterfallChart.config-CzwGiheB.cjs +0 -1
  348. package/dist/adapters/compiler-BNjqYdmc.cjs +0 -166
  349. package/dist/adapters/core-CzFfrJzu.cjs +0 -1
  350. package/dist/adapters/handler-m6WgA9xu.cjs +0 -25
  351. package/dist/adapters/mcp-transport-B0b27YUB.cjs +0 -40
  352. package/dist/adapters/mcp-transport-BXyA4dTk.js +0 -603
  353. package/dist/adapters/utils-BoOeig94.cjs +0 -128
  354. package/dist/client/chunks/DashboardEditModal-BOfLdTgV.js.map +0 -1
  355. package/dist/client/chunks/analysis-builder-shared-CEvHIlmk.js.map +0 -1
  356. package/dist/client/chunks/chart-activity-grid-4jfS8khG.js.map +0 -1
  357. package/dist/client/chunks/chart-data-table-DoDHQRe7.js.map +0 -1
  358. package/dist/client/chunks/charts-core-BPD_hLaL.js +0 -215
  359. package/dist/client/chunks/charts-core-BPD_hLaL.js.map +0 -1
  360. package/dist/client/chunks/charts-loader-CwMcOfwT.js +0 -85
  361. package/dist/client/chunks/charts-loader-CwMcOfwT.js.map +0 -1
  362. package/dist/client/chunks/nl-NL-DFLVORiD.js.map +0 -1
  363. package/dist/client/chunks/vendor-Qa1s8oSX.js.map +0 -1
@@ -172,5 +172,16 @@ export declare function resolveMcpResources(resources?: MCPResourceResolver): MC
172
172
  * project-specific guidance like custom cube semantics).
173
173
  */
174
174
  export declare function resolveMcpInstructions(instructions?: MCPInstructionsResolver): string;
175
- export declare function buildMcpSchemaResource(semanticLayer: SemanticLayerCompiler): MCPResource;
176
- export declare function buildMcpResources(semanticLayer: SemanticLayerCompiler, resources?: MCPResourceResolver): MCPResource[];
175
+ /**
176
+ * The `drizzle-cube://schema` resource: this caller's cube metadata as JSON.
177
+ *
178
+ * Its body is tenant-specific, so it must be built per request under the
179
+ * caller's security context. Building it once at handler construction — as this
180
+ * used to be — would freeze every tenant's view to the base set.
181
+ */
182
+ export declare function buildMcpSchemaResource(semanticLayer: SemanticLayerCompiler, securityContext: SecurityContext): MCPResource;
183
+ /**
184
+ * Static resources plus this caller's schema resource. Call per request, never
185
+ * at setup time — see {@link buildMcpSchemaResource}.
186
+ */
187
+ export declare function buildMcpResources(semanticLayer: SemanticLayerCompiler, securityContext: SecurityContext, resources?: MCPResourceResolver): MCPResource[];
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-BoOeig94.cjs"),t=require("../compiler-BNjqYdmc.cjs"),n=require("../mcp-transport-B0b27YUB.cjs"),r=require("../core-CzFfrJzu.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)=>{let i=await e.extractSecurityContext(t,n),a=r.a(e=>t.headers.get(e));return r.o(i,a)},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=o(e),n=r.t({semanticLayer:t,onError:e=>{process.env.NODE_ENV!==`test`&&console.error(`Next.js handler error:`,e)},mcp:e.mcp}),i=e.cors?{...e.cors,allowedHeaders:r.i(e.cors.allowedHeaders)}:void 0;return{httpHandler:n,corsHeaders:e=>i?c(e,i):{},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-m6WgA9xu.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
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-BiKIg2tk.cjs"),t=require("../compiler-BxZHh0UD.cjs"),n=require("../mcp-transport-CDxZXpc-.cjs"),r=require("../core-CIGuwGuI.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.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)=>{let i=await e.extractSecurityContext(t,n),a=r.s(e=>t.headers.get(e));return r.c(i,a)},cors:e.cors?{...e.cors,allowedHeaders:r.o(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=o(e),n=r.t({semanticLayer:t,onError:e=>{process.env.NODE_ENV!==`test`&&console.error(`Next.js handler error:`,e)},mcp:e.mcp}),i=e.cors?{...e.cors,allowedHeaders:r.o(e.cors.allowedHeaders)}:void 0;return{httpHandler:n,corsHeaders:e=>i?c(e,i):{},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.o(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,baseContext:r}=l(e);return async function(e,i){return t.handleMetaGet(u(e,n(e)),r(e,i))}}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{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(),l=await n(t,o),u=await e.p(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 discover handler error:`,t),i.NextResponse.json(e.i(t instanceof Error?t.message:`Discovery failed`,500),{status:500})}}}function y(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.naturalLanguage)return i.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let l=await n(t,o),u=await e.d(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 suggest handler error:`,t),i.NextResponse.json(e.i(t instanceof Error?t.message:`Query suggestion failed`,500),{status:500})}}}function b(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.f(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 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.l(t.headers.get(`authorization`)))return i.NextResponse.json({error:`Bearer token required`},{status:401,headers:{"WWW-Authenticate":n.s(c.resourceMetadataUrl)}});if(t.method===`DELETE`||t.method===`GET`){let e=n.C(t.headers.get(`origin`),n.h(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-BcYTw6zB.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;
@@ -26,9 +26,12 @@ export interface NextCorsOptions {
26
26
  }
27
27
  export interface NextAdapterOptions {
28
28
  /**
29
- * Array of cube definitions to register
29
+ * Array of cube definitions to register.
30
+ * Required unless `semanticLayer` is provided — `createSemanticLayer` returns
31
+ * an injected compiler untouched, so a caller managing their own (which
32
+ * per-tenant cube sets require) supplies no cubes here.
30
33
  */
31
- cubes: Cube[];
34
+ cubes?: Cube[];
32
35
  /**
33
36
  * Drizzle database instance (REQUIRED)
34
37
  * This is the core of drizzle-cube - Drizzle ORM integration
@@ -1,11 +1,11 @@
1
- import { d as e, f as t, i as n, m as r, p as i } from "../utils-DboNUT3A.js";
2
- import { t as a } from "../compiler-DiYxWAKg.js";
3
- import { C as o, c as s, g as c, u as l, v as u, x as d } from "../mcp-transport-BXyA4dTk.js";
4
- import { a as f, i as p, o as m, r as h, t as g } from "../core-BOPRmxPc.js";
1
+ import { d as e, f as t, i as n, m as r, p as i } from "../utils-BagURNRb.js";
2
+ import { t as a } from "../compiler-CBGD_4Et.js";
3
+ import { C as o, _ as s, h as c, l, s as u, x as d } from "../mcp-transport-BpG44Fvn.js";
4
+ import { c as f, o as p, r as m, s as h, t as g } from "../core-DAAnqPyN.js";
5
5
  import { NextResponse as _ } from "next/server";
6
6
  //#region src/adapters/nextjs/mcp-handler.ts
7
7
  function v(e, t) {
8
- let n = new TextEncoder(), r = u(), i = new ReadableStream({ start(e) {
8
+ let n = new TextEncoder(), r = s(), i = new ReadableStream({ start(e) {
9
9
  e.enqueue(n.encode(d({
10
10
  jsonrpc: "2.0",
11
11
  method: "mcp/ready",
@@ -41,8 +41,8 @@ function y(e) {
41
41
  function b(e) {
42
42
  return {
43
43
  extractSecurityContext: async (t, n) => {
44
- let r = await e.extractSecurityContext(t, n), i = f((e) => t.headers.get(e));
45
- return m(r, i);
44
+ let r = await e.extractSecurityContext(t, n), i = h((e) => t.headers.get(e));
45
+ return f(r, i);
46
46
  },
47
47
  cors: e.cors ? {
48
48
  ...e.cors,
@@ -132,9 +132,9 @@ function T(e) {
132
132
  };
133
133
  }
134
134
  function E(e) {
135
- let { httpHandler: t, corsHeaders: n } = S(e);
136
- return async function(e, r) {
137
- return t.handleMetaGet(C(e, n(e)));
135
+ let { httpHandler: t, corsHeaders: n, baseContext: r } = S(e);
136
+ return async function(e, i) {
137
+ return t.handleMetaGet(C(e, n(e)), r(e, i));
138
138
  };
139
139
  }
140
140
  function D(e) {
@@ -167,40 +167,40 @@ function A(e) {
167
167
  };
168
168
  }
169
169
  function j(e) {
170
- let { cors: t } = b(e), r = y(e);
171
- return async function(e, a) {
170
+ let { extractSecurityContext: t, cors: r } = b(e), a = y(e);
171
+ return async function(e, o) {
172
172
  try {
173
173
  if (e.method !== "POST") return _.json(n("Method not allowed - use POST", 405), { status: 405 });
174
- let a = await e.json(), o = await i(r, a);
175
- return _.json(o, { headers: t ? x(e, t) : {} });
174
+ let s = await e.json(), c = await t(e, o), l = await i(a, c, s);
175
+ return _.json(l, { headers: r ? x(e, r) : {} });
176
176
  } catch (e) {
177
177
  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 });
178
178
  }
179
179
  };
180
180
  }
181
181
  function M(t) {
182
- let { cors: r } = b(t), i = y(t);
183
- return async function(t, a) {
182
+ let { extractSecurityContext: r, cors: i } = b(t), a = y(t);
183
+ return async function(t, o) {
184
184
  try {
185
185
  if (t.method !== "POST") return _.json(n("Method not allowed - use POST", 405), { status: 405 });
186
- let a = await t.json();
187
- if (!a.naturalLanguage) return _.json(n("naturalLanguage field is required", 400), { status: 400 });
188
- let o = await e(i, a);
189
- return _.json(o, { headers: r ? x(t, r) : {} });
186
+ let s = await t.json();
187
+ if (!s.naturalLanguage) return _.json(n("naturalLanguage field is required", 400), { status: 400 });
188
+ let c = await r(t, o), l = await e(a, c, s);
189
+ return _.json(l, { headers: i ? x(t, i) : {} });
190
190
  } catch (e) {
191
191
  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 });
192
192
  }
193
193
  };
194
194
  }
195
195
  function N(e) {
196
- let { cors: r } = b(e), i = y(e);
197
- return async function(e, a) {
196
+ let { extractSecurityContext: r, cors: i } = b(e), a = y(e);
197
+ return async function(e, o) {
198
198
  try {
199
199
  if (e.method !== "POST") return _.json(n("Method not allowed - use POST", 405), { status: 405 });
200
- let a = await e.json();
201
- if (!a.query) return _.json(n("query field is required", 400), { status: 400 });
202
- let o = await t(i, a);
203
- return _.json(o, { headers: r ? x(e, r) : {} });
200
+ let s = await e.json();
201
+ if (!s.query) return _.json(n("query field is required", 400), { status: 400 });
202
+ let c = await r(e, o), l = await t(a, c, s);
203
+ return _.json(l, { headers: i ? x(e, i) : {} });
204
204
  } catch (e) {
205
205
  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 });
206
206
  }
@@ -221,19 +221,19 @@ function P(e) {
221
221
  };
222
222
  }
223
223
  function F(e) {
224
- let { httpHandler: t, corsHeaders: r, baseContext: i } = S(e), { mcp: a = { enabled: !0 } } = e, u = (e, t) => {
224
+ let { httpHandler: t, corsHeaders: r, baseContext: i } = S(e), { mcp: a = { enabled: !0 } } = e, s = (e, t) => {
225
225
  Object.entries(r(e)).forEach(([e, n]) => t.set(e, n));
226
226
  };
227
227
  return async function(e, d) {
228
228
  if (a.resourceMetadataUrl && !l(e.headers.get("authorization"))) return _.json({ error: "Bearer token required" }, {
229
229
  status: 401,
230
- headers: { "WWW-Authenticate": s(a.resourceMetadataUrl) }
230
+ headers: { "WWW-Authenticate": u(a.resourceMetadataUrl) }
231
231
  });
232
232
  if (e.method === "DELETE" || e.method === "GET") {
233
233
  let t = o(e.headers.get("origin"), c(a));
234
234
  if (!t.valid) return _.json({ error: t.reason }, { status: 403 });
235
235
  }
236
- 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 });
236
+ return e.method === "DELETE" ? _.json({ error: "Session termination not supported" }, { status: 405 }) : e.method === "GET" ? v(e, s) : e.method === "POST" ? t.handleMcpPost(C(e, r(e)), i(e, d)) : _.json(n("Method not allowed - use POST", 405), { status: 405 });
237
237
  };
238
238
  }
239
239
  function I(e) {
@@ -243,7 +243,7 @@ function I(e) {
243
243
  return async function(i, a) {
244
244
  try {
245
245
  if (i.method !== "POST") return _.json({ error: "Method not allowed - use POST" }, { status: 405 });
246
- let { handleAgentChat: o } = await import("../handler-DGud-C-w.js"), { message: s, sessionId: c, history: l } = await i.json();
246
+ let { handleAgentChat: o } = await import("../handler-eA0VJDHj.js"), { message: s, sessionId: c, history: l } = await i.json();
247
247
  if (!s || typeof s != "string") return _.json({ error: "message is required and must be a string" }, { status: 400 });
248
248
  let u = (n.apiKey || "").trim();
249
249
  if (n.allowClientApiKey) {
@@ -251,14 +251,14 @@ function I(e) {
251
251
  e && (u = e.trim());
252
252
  }
253
253
  if (!u) return _.json({ error: "No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header." }, { status: 401 });
254
- 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) {
254
+ 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, h = m(await e.extractSecurityContext(i, a), (e) => i.headers.get(e) ?? void 0), g = n.buildSystemContext?.(h), v = new TextEncoder(), y = new ReadableStream({ async start(e) {
255
255
  try {
256
256
  let t = o({
257
257
  message: s,
258
258
  sessionId: c,
259
259
  history: l,
260
260
  semanticLayer: r,
261
- securityContext: m,
261
+ securityContext: h,
262
262
  agentConfig: n,
263
263
  apiKey: u,
264
264
  systemContext: g,
@@ -70,7 +70,7 @@ var r = class {
70
70
  try {
71
71
  let t = await import(
72
72
  /* webpackIgnore: true */
73
- "./openai-CGJM6Qun.js"
73
+ "./openai-CYYjUG_3.js"
74
74
  );
75
75
  e = t.default || t.OpenAI || t;
76
76
  } catch {
@@ -1 +1 @@
1
- function*e(e,t){let n=e.index??0;if(e.id&&(t.set(n,{id:e.id,name:e.function?.name||``,arguments:``}),yield{type:`tool_use_start`,id:e.id,name:e.function?.name||``}),e.function?.name&&t.has(n)){let r=t.get(n);r.name||=e.function.name}if(e.function?.arguments){let r=t.get(n);r&&(r.arguments+=e.function.arguments,yield{type:`tool_input_delta`,json:e.function.arguments})}}function*t(e,t){for(let[e,n]of t){let r={};try{n.arguments&&(r=JSON.parse(n.arguments))}catch{}yield{type:`tool_use_end`,id:n.id,input:r},t.delete(e)}yield{type:`message_meta`,stopReason:e}}function*n(n,r){n.usage&&(yield{type:`message_meta`,inputTokens:n.usage.prompt_tokens,outputTokens:n.usage.completion_tokens,stopReason:``});let i=n.choices?.[0];if(!i)return;let a=i.delta;if(a){if(a.content&&(yield{type:`text_delta`,text:a.content}),a.tool_calls)for(let t of a.tool_calls)yield*e(t,r);i.finish_reason&&(yield*t(i.finish_reason,r))}}var r=class{client;apiKey;baseURL;initialized=!1;constructor(e,t){this.apiKey=e,this.baseURL=t?.baseURL}async ensureClient(){if(this.initialized)return;let e;try{let t=await Promise.resolve().then(()=>require("./openai-Dwt9bxOE.cjs"));e=t.default||t.OpenAI||t}catch{throw Error(`openai is required for the OpenAI provider. Install it with: npm install openai`)}let t={apiKey:this.apiKey};this.baseURL&&(t.baseURL=this.baseURL),this.client=new e(t),this.initialized=!0}async createStream(e){await this.ensureClient();let{messages:t}=this.formatMessages(e.messages,e.system);return this.client.chat.completions.create({model:e.model,max_completion_tokens:e.maxTokens,tools:this.formatTools(e.tools),messages:t,stream:!0,stream_options:{include_usage:!0}})}async*parseStreamEvents(e){let t=new Map;for await(let r of e)yield*n(r,t)}formatTools(e){return e.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:e.parameters}}))}formatMessages(e,t){let n=[{role:`system`,content:t}];for(let t of e)if(t.role===`user`)n.push({role:`user`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)});else if(t.role===`assistant`){if(typeof t.content==`string`)n.push({role:`assistant`,content:t.content});else{let e=t.content,r=e.filter(e=>e.type===`text`).map(e=>e.text).join(``),i=e.filter(e=>e.type===`tool_use`).map(e=>({id:e.id,type:`function`,function:{name:e.name,arguments:JSON.stringify(e.input||{})}})),a={role:`assistant`};r&&(a.content=r),i.length>0&&(a.tool_calls=i),n.push(a)}}else t.role===`tool`?n.push(t):t.role===`tool_result`&&n.push({role:`user`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)});return{messages:n}}formatToolResults(e){return e.map(e=>({role:`tool`,tool_call_id:e.toolUseId,content:e.content}))}shouldContinue(e){return e===`tool_calls`}formatError(e){if(!e||!(e instanceof Error))return`Something went wrong. Please try again.`;let t=e.message||``,n=e;return n.status===429?`Too many requests. Please wait a moment and try again.`:n.status===401?`Authentication failed. Please check your API key configuration.`:n.status===503||n.status===502?`The AI service is temporarily unavailable. Please try again in a moment.`:n.status===400?`There was a problem with the request. Please try again.`:t.startsWith(`{`)||t.startsWith(`Error: {`)?`The AI service encountered an error. Please try again.`:t}};exports.OpenAIProvider=r;
1
+ function*e(e,t){let n=e.index??0;if(e.id&&(t.set(n,{id:e.id,name:e.function?.name||``,arguments:``}),yield{type:`tool_use_start`,id:e.id,name:e.function?.name||``}),e.function?.name&&t.has(n)){let r=t.get(n);r.name||=e.function.name}if(e.function?.arguments){let r=t.get(n);r&&(r.arguments+=e.function.arguments,yield{type:`tool_input_delta`,json:e.function.arguments})}}function*t(e,t){for(let[e,n]of t){let r={};try{n.arguments&&(r=JSON.parse(n.arguments))}catch{}yield{type:`tool_use_end`,id:n.id,input:r},t.delete(e)}yield{type:`message_meta`,stopReason:e}}function*n(n,r){n.usage&&(yield{type:`message_meta`,inputTokens:n.usage.prompt_tokens,outputTokens:n.usage.completion_tokens,stopReason:``});let i=n.choices?.[0];if(!i)return;let a=i.delta;if(a){if(a.content&&(yield{type:`text_delta`,text:a.content}),a.tool_calls)for(let t of a.tool_calls)yield*e(t,r);i.finish_reason&&(yield*t(i.finish_reason,r))}}var r=class{client;apiKey;baseURL;initialized=!1;constructor(e,t){this.apiKey=e,this.baseURL=t?.baseURL}async ensureClient(){if(this.initialized)return;let e;try{let t=await Promise.resolve().then(()=>require("./openai-CLjyL5_J.cjs"));e=t.default||t.OpenAI||t}catch{throw Error(`openai is required for the OpenAI provider. Install it with: npm install openai`)}let t={apiKey:this.apiKey};this.baseURL&&(t.baseURL=this.baseURL),this.client=new e(t),this.initialized=!0}async createStream(e){await this.ensureClient();let{messages:t}=this.formatMessages(e.messages,e.system);return this.client.chat.completions.create({model:e.model,max_completion_tokens:e.maxTokens,tools:this.formatTools(e.tools),messages:t,stream:!0,stream_options:{include_usage:!0}})}async*parseStreamEvents(e){let t=new Map;for await(let r of e)yield*n(r,t)}formatTools(e){return e.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:e.parameters}}))}formatMessages(e,t){let n=[{role:`system`,content:t}];for(let t of e)if(t.role===`user`)n.push({role:`user`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)});else if(t.role===`assistant`){if(typeof t.content==`string`)n.push({role:`assistant`,content:t.content});else{let e=t.content,r=e.filter(e=>e.type===`text`).map(e=>e.text).join(``),i=e.filter(e=>e.type===`tool_use`).map(e=>({id:e.id,type:`function`,function:{name:e.name,arguments:JSON.stringify(e.input||{})}})),a={role:`assistant`};r&&(a.content=r),i.length>0&&(a.tool_calls=i),n.push(a)}}else t.role===`tool`?n.push(t):t.role===`tool_result`&&n.push({role:`user`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)});return{messages:n}}formatToolResults(e){return e.map(e=>({role:`tool`,tool_call_id:e.toolUseId,content:e.content}))}shouldContinue(e){return e===`tool_calls`}formatError(e){if(!e||!(e instanceof Error))return`Something went wrong. Please try again.`;let t=e.message||``,n=e;return n.status===429?`Too many requests. Please wait a moment and try again.`:n.status===401?`Authentication failed. Please check your API key configuration.`:n.status===503||n.status===502?`The AI service is temporarily unavailable. Please try again in a moment.`:n.status===400?`There was a problem with the request. Please try again.`:t.startsWith(`{`)||t.startsWith(`Error: {`)?`The AI service encountered an error. Please try again.`:t}};exports.OpenAIProvider=r;