drizzle-cube 0.6.1 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (796) hide show
  1. package/dist/adapters/ActivityGridChart.config-BtECymia.cjs +1 -0
  2. package/dist/adapters/ActivityGridChart.config-CTd5HYjI.js +2 -0
  3. package/dist/adapters/AreaChart.config-1B8iQnfn.js +2 -0
  4. package/dist/adapters/AreaChart.config-hnncyQL4.cjs +1 -0
  5. package/dist/adapters/BarChart.config-C-QCf1rL.cjs +1 -0
  6. package/dist/adapters/BarChart.config-CFelK1qP.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-CD9WEPyF.js +2 -0
  8. package/dist/adapters/BoxPlotChart.config-DEbLA0BX.cjs +1 -0
  9. package/dist/adapters/BubbleChart.config-B_M4hzzV.js +2 -0
  10. package/dist/adapters/BubbleChart.config-dRZZlAke.cjs +1 -0
  11. package/dist/adapters/CandlestickChart.config-Dsil2Fop.cjs +1 -0
  12. package/dist/adapters/CandlestickChart.config-fuhyFvob.js +2 -0
  13. package/dist/adapters/DataTable.config-q2gqBi6t.cjs +1 -0
  14. package/dist/adapters/DataTable.config-wIQnHX5R.js +2 -0
  15. package/dist/adapters/FunnelChart.config-Dz710ssx.js +2 -0
  16. package/dist/adapters/FunnelChart.config-YNP9CeS-.cjs +1 -0
  17. package/dist/adapters/GaugeChart.config-BG9FcMCn.cjs +1 -0
  18. package/dist/adapters/GaugeChart.config-CgwniXkd.js +2 -0
  19. package/dist/adapters/HeatMapChart.config-1zSMXXoN.cjs +1 -0
  20. package/dist/adapters/HeatMapChart.config-YVEWx6s5.js +2 -0
  21. package/dist/adapters/KpiDelta.config-BWvYXuFp.cjs +1 -0
  22. package/dist/adapters/KpiDelta.config-C_dYM64q.js +2 -0
  23. package/dist/adapters/KpiNumber.config-CXg6toZG.js +2 -0
  24. package/dist/adapters/KpiNumber.config-CZmV-yU1.cjs +1 -0
  25. package/dist/adapters/KpiText.config-BY-SJvAF.js +2 -0
  26. package/dist/adapters/KpiText.config-GSIxy0CE.cjs +1 -0
  27. package/dist/adapters/LineChart.config-CJtF8SOu.js +2 -0
  28. package/dist/adapters/LineChart.config-d0y60gw9.cjs +1 -0
  29. package/dist/adapters/MarkdownChart.config-B6w0spya.cjs +1 -0
  30. package/dist/adapters/MarkdownChart.config-BuIQcWOn.js +2 -0
  31. package/dist/adapters/MeasureProfileChart.config-Bo2n5Ae5.cjs +1 -0
  32. package/dist/adapters/MeasureProfileChart.config-C5d34lsc.js +2 -0
  33. package/dist/adapters/PieChart.config-CDxfXCIt.cjs +1 -0
  34. package/dist/adapters/PieChart.config-CuZxQc5m.js +2 -0
  35. package/dist/adapters/RadarChart.config-DpdVWyh5.cjs +1 -0
  36. package/dist/adapters/RadarChart.config-KrxwaaGu.js +2 -0
  37. package/dist/adapters/RadialBarChart.config-DpRZd0FW.js +2 -0
  38. package/dist/adapters/RadialBarChart.config-faIY4jpE.cjs +1 -0
  39. package/dist/adapters/RetentionCombinedChart.config-CUnScqnS.cjs +1 -0
  40. package/dist/adapters/RetentionCombinedChart.config-Dd8FuawP.js +2 -0
  41. package/dist/adapters/RetentionHeatmap.config-CPd6GeoQ.js +2 -0
  42. package/dist/adapters/RetentionHeatmap.config-CPlHbLom.cjs +1 -0
  43. package/dist/adapters/SankeyChart.config-DbIUqi-H.cjs +1 -0
  44. package/dist/adapters/SankeyChart.config-kzAnW0C7.js +2 -0
  45. package/dist/adapters/ScatterChart.config-4Okvn27v.js +2 -0
  46. package/dist/adapters/ScatterChart.config-4f9nNw3e.cjs +1 -0
  47. package/dist/adapters/SunburstChart.config-BsUQkIM_.js +2 -0
  48. package/dist/adapters/SunburstChart.config-lvnYkWs7.cjs +1 -0
  49. package/dist/adapters/TreeMapChart.config-S0qsgAFW.js +2 -0
  50. package/dist/adapters/TreeMapChart.config-jbwKsTYt.cjs +1 -0
  51. package/dist/adapters/WaterfallChart.config-CDQ74-pS.cjs +1 -0
  52. package/dist/adapters/WaterfallChart.config-XdtH-O5g.js +2 -0
  53. package/dist/adapters/chartConfigHelpers-CcvqrIWF.js +72 -0
  54. package/dist/adapters/chartConfigHelpers-DHQB-_v5.cjs +1 -0
  55. package/dist/adapters/{locale-ZLUUNUxr.cjs → compiler-ChGO4ZLU.cjs} +1 -1
  56. package/dist/adapters/{locale-DDvZDFVn.js → compiler-LKTN9PTt.js} +2 -21
  57. package/dist/adapters/core/cube-http-handler.d.ts +27 -0
  58. package/dist/adapters/core/http-port.d.ts +39 -0
  59. package/dist/adapters/core/index.cjs +1 -0
  60. package/dist/adapters/core/index.d.ts +11 -0
  61. package/dist/adapters/core/index.js +2 -0
  62. package/dist/adapters/core/mcp-handler.d.ts +13 -0
  63. package/dist/adapters/core/rest-handlers.d.ts +14 -0
  64. package/dist/adapters/core/security-context.d.ts +17 -0
  65. package/dist/adapters/core-Bbchr0ui.js +244 -0
  66. package/dist/adapters/core-F1pCQPde.cjs +1 -0
  67. package/dist/adapters/express/index.cjs +2 -2
  68. package/dist/adapters/express/index.js +93 -201
  69. package/dist/adapters/fastify/index.cjs +2 -2
  70. package/dist/adapters/fastify/index.js +79 -217
  71. package/dist/adapters/handler-DRZb2ip6.cjs +25 -0
  72. package/dist/adapters/{handler-CfgE0JSL.js → handler-u8FyzPBT.js} +1572 -1500
  73. package/dist/adapters/hono/index.cjs +2 -2
  74. package/dist/adapters/hono/index.js +69 -225
  75. package/dist/adapters/mcp-tools.cjs +1 -1
  76. package/dist/adapters/mcp-tools.js +1 -1
  77. package/dist/adapters/mcp-transport-Bw_zqky2.js +591 -0
  78. package/dist/adapters/mcp-transport-CNIPoe1i.cjs +40 -0
  79. package/dist/adapters/nextjs/index.cjs +1 -1
  80. package/dist/adapters/nextjs/index.d.ts +8 -9
  81. package/dist/adapters/nextjs/index.js +181 -288
  82. package/dist/adapters/nextjs/mcp-handler.d.ts +0 -28
  83. package/dist/adapters/{openai-D0musiYP.cjs → openai-B4kAJTSD.cjs} +3 -3
  84. package/dist/adapters/{openai-vXvLni8v.cjs → openai-Cdf2wWZA.cjs} +1 -1
  85. package/dist/adapters/{openai-B5jEiqiB.js → openai-CmMzrs1Y.js} +18 -2
  86. package/dist/adapters/{openai-cDlFSTk6.js → openai-DhzGY9R4.js} +1 -1
  87. package/dist/cjs/adapters/core/cube-http-handler.d.ts +27 -0
  88. package/dist/cjs/adapters/core/http-port.d.ts +39 -0
  89. package/dist/cjs/adapters/core/index.d.ts +11 -0
  90. package/dist/cjs/adapters/core/mcp-handler.d.ts +13 -0
  91. package/dist/cjs/adapters/core/rest-handlers.d.ts +14 -0
  92. package/dist/cjs/adapters/core/security-context.d.ts +17 -0
  93. package/dist/cjs/adapters/express/index.d.ts +114 -0
  94. package/dist/cjs/adapters/fastify/index.d.ts +113 -0
  95. package/dist/cjs/adapters/hono/agent-handler.d.ts +9 -0
  96. package/dist/cjs/adapters/hono/index.d.ts +120 -0
  97. package/dist/cjs/adapters/locale.d.ts +8 -0
  98. package/dist/cjs/adapters/mcp-tools-handlers.d.ts +18 -0
  99. package/dist/cjs/adapters/mcp-tools.d.ts +134 -0
  100. package/dist/cjs/adapters/mcp-transport.d.ts +158 -0
  101. package/dist/cjs/adapters/nextjs/index.d.ts +195 -0
  102. package/dist/cjs/adapters/nextjs/mcp-handler.d.ts +8 -0
  103. package/dist/cjs/adapters/types.d.ts +41 -0
  104. package/dist/cjs/adapters/utils.d.ts +354 -0
  105. package/dist/cjs/client/adapters/adapterRegistry.d.ts +44 -0
  106. package/dist/cjs/client/adapters/flowModeAdapter.d.ts +3 -0
  107. package/dist/cjs/client/adapters/funnelModeAdapter.d.ts +19 -0
  108. package/dist/cjs/client/adapters/index.d.ts +29 -0
  109. package/dist/cjs/client/adapters/modeAdapter.d.ts +117 -0
  110. package/dist/cjs/client/adapters/queryModeAdapter.d.ts +16 -0
  111. package/dist/cjs/client/adapters/retentionModeAdapter.d.ts +3 -0
  112. package/dist/cjs/client/charts/ChartLoader.d.ts +69 -0
  113. package/dist/cjs/client/charts/chartComponentRegistry.d.ts +38 -0
  114. package/dist/cjs/client/charts/chartConfigHelpers.d.ts +38 -0
  115. package/dist/cjs/client/charts/chartConfigRegistry.d.ts +19 -0
  116. package/dist/cjs/client/charts/chartConfigs.d.ts +142 -0
  117. package/dist/cjs/client/charts/chartPlugin.d.ts +73 -0
  118. package/dist/cjs/client/charts/chartRegistry.d.ts +73 -0
  119. package/dist/cjs/client/charts/lazyChartConfigRegistry.d.ts +100 -0
  120. package/dist/cjs/client/charts.d.ts +17 -0
  121. package/dist/cjs/client/client/BatchCoordinator.d.ts +38 -0
  122. package/dist/cjs/client/client/CubeClient.d.ts +32 -0
  123. package/dist/cjs/client/components/AIAssistant/constants.d.ts +11 -0
  124. package/dist/cjs/client/components/AIAssistant/index.d.ts +10 -0
  125. package/dist/cjs/client/components/AIAssistant/types.d.ts +49 -0
  126. package/dist/cjs/client/components/AIAssistant/utils.d.ts +17 -0
  127. package/dist/cjs/client/components/AgenticNotebook/AgentChatPanel.d.ts +27 -0
  128. package/dist/cjs/client/components/AgenticNotebook/ChatInput.d.ts +14 -0
  129. package/dist/cjs/client/components/AgenticNotebook/ChatMessage.d.ts +9 -0
  130. package/dist/cjs/client/components/AgenticNotebook/NotebookCanvas.d.ts +6 -0
  131. package/dist/cjs/client/components/AgenticNotebook/NotebookMarkdownBlock.d.ts +12 -0
  132. package/dist/cjs/client/components/AgenticNotebook/NotebookPortletBlock.d.ts +15 -0
  133. package/dist/cjs/client/components/AgenticNotebook/agentChatParts.d.ts +34 -0
  134. package/dist/cjs/client/components/AgenticNotebook/chatMessageParts.d.ts +39 -0
  135. package/dist/cjs/client/components/AgenticNotebook/index.d.ts +56 -0
  136. package/dist/cjs/client/components/AgenticNotebook/useAgentChatController.d.ts +25 -0
  137. package/dist/cjs/client/components/AgenticNotebook/useNotebookAutosave.d.ts +12 -0
  138. package/dist/cjs/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +25 -0
  139. package/dist/cjs/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +29 -0
  140. package/dist/cjs/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +18 -0
  141. package/dist/cjs/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +11 -0
  142. package/dist/cjs/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +20 -0
  143. package/dist/cjs/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +14 -0
  144. package/dist/cjs/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +16 -0
  145. package/dist/cjs/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +27 -0
  146. package/dist/cjs/client/components/AnalysisBuilder/AnalysisQueryPanel.d.ts +12 -0
  147. package/dist/cjs/client/components/AnalysisBuilder/AnalysisQueryPanelParts.d.ts +64 -0
  148. package/dist/cjs/client/components/AnalysisBuilder/AnalysisResultsHeader.d.ts +67 -0
  149. package/dist/cjs/client/components/AnalysisBuilder/AnalysisResultsPanel.d.ts +14 -0
  150. package/dist/cjs/client/components/AnalysisBuilder/AnalysisTypeSelector.d.ts +17 -0
  151. package/dist/cjs/client/components/AnalysisBuilder/BreakdownComparisonToggle.d.ts +13 -0
  152. package/dist/cjs/client/components/AnalysisBuilder/BreakdownItemCard.d.ts +12 -0
  153. package/dist/cjs/client/components/AnalysisBuilder/BreakdownRow.d.ts +26 -0
  154. package/dist/cjs/client/components/AnalysisBuilder/BreakdownSection.d.ts +9 -0
  155. package/dist/cjs/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +10 -0
  156. package/dist/cjs/client/components/AnalysisBuilder/ExecutionPlanPanel.d.ts +49 -0
  157. package/dist/cjs/client/components/AnalysisBuilder/ExecutionPlanPanelParts.d.ts +22 -0
  158. package/dist/cjs/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +16 -0
  159. package/dist/cjs/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +4 -0
  160. package/dist/cjs/client/components/AnalysisBuilder/FieldSearchItem.d.ts +6 -0
  161. package/dist/cjs/client/components/AnalysisBuilder/FieldSearchModal.d.ts +2 -0
  162. package/dist/cjs/client/components/AnalysisBuilder/FieldSearchResults.d.ts +16 -0
  163. package/dist/cjs/client/components/AnalysisBuilder/FilterConfigModal.d.ts +17 -0
  164. package/dist/cjs/client/components/AnalysisBuilder/FilterValueInput.d.ts +63 -0
  165. package/dist/cjs/client/components/AnalysisBuilder/FlowConfigPanel.d.ts +28 -0
  166. package/dist/cjs/client/components/AnalysisBuilder/FlowDepthControls.d.ts +10 -0
  167. package/dist/cjs/client/components/AnalysisBuilder/FlowModeContent.d.ts +57 -0
  168. package/dist/cjs/client/components/AnalysisBuilder/FlowVisualizationPicker.d.ts +7 -0
  169. package/dist/cjs/client/components/AnalysisBuilder/FunnelBindingKeySelector.d.ts +21 -0
  170. package/dist/cjs/client/components/AnalysisBuilder/FunnelConfigPanel.d.ts +24 -0
  171. package/dist/cjs/client/components/AnalysisBuilder/FunnelModeContent.d.ts +48 -0
  172. package/dist/cjs/client/components/AnalysisBuilder/FunnelStepCard.d.ts +25 -0
  173. package/dist/cjs/client/components/AnalysisBuilder/FunnelStepList.d.ts +26 -0
  174. package/dist/cjs/client/components/AnalysisBuilder/LegacyBooleanOptions.d.ts +8 -0
  175. package/dist/cjs/client/components/AnalysisBuilder/LimitSection.d.ts +14 -0
  176. package/dist/cjs/client/components/AnalysisBuilder/MetricItemCard.d.ts +11 -0
  177. package/dist/cjs/client/components/AnalysisBuilder/MetricRow.d.ts +23 -0
  178. package/dist/cjs/client/components/AnalysisBuilder/MetricsSection.d.ts +9 -0
  179. package/dist/cjs/client/components/AnalysisBuilder/RetentionConfigPanel.d.ts +36 -0
  180. package/dist/cjs/client/components/AnalysisBuilder/RetentionModeContent.d.ts +71 -0
  181. package/dist/cjs/client/components/AnalysisBuilder/SectionHeading.d.ts +12 -0
  182. package/dist/cjs/client/components/AnalysisBuilder/SortToggleButton.d.ts +13 -0
  183. package/dist/cjs/client/components/AnalysisBuilder/StringArrayInput.d.ts +17 -0
  184. package/dist/cjs/client/components/AnalysisBuilder/filterConfigModalUtils.d.ts +30 -0
  185. package/dist/cjs/client/components/AnalysisBuilder/hooks/useAnalysisBuilderImperativeHandle.d.ts +13 -0
  186. package/dist/cjs/client/components/AnalysisBuilder/hooks/useDragReorder.d.ts +25 -0
  187. package/dist/cjs/client/components/AnalysisBuilder/hooks/useFieldSearchKeyboard.d.ts +11 -0
  188. package/dist/cjs/client/components/AnalysisBuilder/index.d.ts +9 -0
  189. package/dist/cjs/client/components/AnalysisBuilder/types.d.ts +851 -0
  190. package/dist/cjs/client/components/AnalysisBuilder/utils/axisConfigUtils.d.ts +23 -0
  191. package/dist/cjs/client/components/AnalysisBuilder/utils/executionPlanMarkdown.d.ts +8 -0
  192. package/dist/cjs/client/components/AnalysisBuilder/utils/fieldUtils.d.ts +69 -0
  193. package/dist/cjs/client/components/AnalysisBuilder/utils/filterUtils.d.ts +19 -0
  194. package/dist/cjs/client/components/AnalysisBuilder/utils/idUtils.d.ts +11 -0
  195. package/dist/cjs/client/components/AnalysisBuilder/utils/index.d.ts +11 -0
  196. package/dist/cjs/client/components/AnalysisBuilder/utils/queryUtils.d.ts +11 -0
  197. package/dist/cjs/client/components/AnalysisBuilder/utils/recentFieldsUtils.d.ts +14 -0
  198. package/dist/cjs/client/components/AnalysisBuilder/utils/resultsPanelDerive.d.ts +68 -0
  199. package/dist/cjs/client/components/AnalysisBuilder/utils/shareStateUtils.d.ts +68 -0
  200. package/dist/cjs/client/components/AnalysisBuilder/utils/sortUtils.d.ts +7 -0
  201. package/dist/cjs/client/components/AnalysisBuilder/utils/storageUtils.d.ts +44 -0
  202. package/dist/cjs/client/components/AnalysisBuilderLazy.d.ts +4 -0
  203. package/dist/cjs/client/components/AnalyticsDashboard.d.ts +2 -0
  204. package/dist/cjs/client/components/AnalyticsPage.d.ts +1 -0
  205. package/dist/cjs/client/components/AnalyticsPortlet.d.ts +10 -0
  206. package/dist/cjs/client/components/ChartErrorBoundary.d.ts +21 -0
  207. package/dist/cjs/client/components/ChartTypeSelector.d.ts +15 -0
  208. package/dist/cjs/client/components/ColorPaletteSelector.d.ts +11 -0
  209. package/dist/cjs/client/components/ConfirmModal.d.ts +30 -0
  210. package/dist/cjs/client/components/DashboardEditModal.d.ts +15 -0
  211. package/dist/cjs/client/components/DashboardFilterPanel.d.ts +15 -0
  212. package/dist/cjs/client/components/DashboardFilters/CompactFilterBar.d.ts +13 -0
  213. package/dist/cjs/client/components/DashboardFilters/CompactFilterBarParts.d.ts +26 -0
  214. package/dist/cjs/client/components/DashboardFilters/CustomDateDropdown.d.ts +10 -0
  215. package/dist/cjs/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +20 -0
  216. package/dist/cjs/client/components/DashboardFilters/DashboardFilterConfigModalParts.d.ts +27 -0
  217. package/dist/cjs/client/components/DashboardFilters/DashboardFilterItem.d.ts +14 -0
  218. package/dist/cjs/client/components/DashboardFilters/DashboardFilterValueInput.d.ts +39 -0
  219. package/dist/cjs/client/components/DashboardFilters/DatePresetChips.d.ts +8 -0
  220. package/dist/cjs/client/components/DashboardFilters/EditModeFilterList.d.ts +13 -0
  221. package/dist/cjs/client/components/DashboardFilters/FilterChip.d.ts +12 -0
  222. package/dist/cjs/client/components/DashboardFilters/FilterEditModal.d.ts +15 -0
  223. package/dist/cjs/client/components/DashboardFilters/FilterValuePopover.d.ts +11 -0
  224. package/dist/cjs/client/components/DashboardFilters/ReadOnlyFilterList.d.ts +13 -0
  225. package/dist/cjs/client/components/DashboardFilters/XTDDropdown.d.ts +10 -0
  226. package/dist/cjs/client/components/DashboardFilters/dashboardFilterConfigModalUtils.d.ts +21 -0
  227. package/dist/cjs/client/components/DashboardFilters/useCompactFilterBar.d.ts +19 -0
  228. package/dist/cjs/client/components/DashboardFilters/useDashboardFilterConfigModal.d.ts +69 -0
  229. package/dist/cjs/client/components/DashboardFilters/useDateRangeState.d.ts +19 -0
  230. package/dist/cjs/client/components/DashboardFilters/useFilterDropdowns.d.ts +21 -0
  231. package/dist/cjs/client/components/DashboardFilters/useFilterValueFetch.d.ts +23 -0
  232. package/dist/cjs/client/components/DashboardGrid.d.ts +22 -0
  233. package/dist/cjs/client/components/DashboardPortletCard.d.ts +4 -0
  234. package/dist/cjs/client/components/DashboardThumbnailPlaceholder.d.ts +13 -0
  235. package/dist/cjs/client/components/DataBrowser/DataBrowserSidebar.d.ts +16 -0
  236. package/dist/cjs/client/components/DataBrowser/DataBrowserTable.d.ts +16 -0
  237. package/dist/cjs/client/components/DataBrowser/DataBrowserToolbar.d.ts +22 -0
  238. package/dist/cjs/client/components/DataBrowser/index.d.ts +28 -0
  239. package/dist/cjs/client/components/DataHistogram.d.ts +27 -0
  240. package/dist/cjs/client/components/DebugModal.d.ts +17 -0
  241. package/dist/cjs/client/components/DrillBreadcrumb.d.ts +7 -0
  242. package/dist/cjs/client/components/DrillMenu.d.ts +8 -0
  243. package/dist/cjs/client/components/FloatingEditToolbar.d.ts +30 -0
  244. package/dist/cjs/client/components/LoadingIndicator.d.ts +16 -0
  245. package/dist/cjs/client/components/MobileStackedLayout.d.ts +14 -0
  246. package/dist/cjs/client/components/Modal.d.ts +16 -0
  247. package/dist/cjs/client/components/PortletAnalysisModal.d.ts +27 -0
  248. package/dist/cjs/client/components/PortletContainer.d.ts +10 -0
  249. package/dist/cjs/client/components/PortletFilterConfigModal.d.ts +13 -0
  250. package/dist/cjs/client/components/RowManagedLayout.d.ts +19 -0
  251. package/dist/cjs/client/components/ScaledGridWrapper.d.ts +12 -0
  252. package/dist/cjs/client/components/SchemaVisualization/CubeNode.d.ts +25 -0
  253. package/dist/cjs/client/components/SchemaVisualization/FieldDetailPanel.d.ts +15 -0
  254. package/dist/cjs/client/components/SchemaVisualization/RelationshipEdge.d.ts +13 -0
  255. package/dist/cjs/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +3 -0
  256. package/dist/cjs/client/components/SchemaVisualization/index.d.ts +10 -0
  257. package/dist/cjs/client/components/SchemaVisualization/useERDLayout.d.ts +39 -0
  258. package/dist/cjs/client/components/SchemaVisualization/xyflowContext.d.ts +11 -0
  259. package/dist/cjs/client/components/TextPortletModal.d.ts +12 -0
  260. package/dist/cjs/client/components/analyticsPortlet/PortletChart.d.ts +31 -0
  261. package/dist/cjs/client/components/analyticsPortlet/PortletChartView.d.ts +35 -0
  262. package/dist/cjs/client/components/analyticsPortlet/PortletStates.d.ts +65 -0
  263. package/dist/cjs/client/components/analyticsPortlet/parsePortletQuery.d.ts +22 -0
  264. package/dist/cjs/client/components/analyticsPortlet/portletRenderState.d.ts +31 -0
  265. package/dist/cjs/client/components/analyticsPortlet/usePortletDebugData.d.ts +37 -0
  266. package/dist/cjs/client/components/analyticsPortlet/usePortletDrillState.d.ts +17 -0
  267. package/dist/cjs/client/components/analyticsPortlet/usePortletQueryResults.d.ts +37 -0
  268. package/dist/cjs/client/components/charts/ActivityGridChart.config.d.ts +10 -0
  269. package/dist/cjs/client/components/charts/ActivityGridChart.d.ts +4 -0
  270. package/dist/cjs/client/components/charts/ActivityGridChart.helpers.d.ts +33 -0
  271. package/dist/cjs/client/components/charts/ActivityGridChart.render.d.ts +31 -0
  272. package/dist/cjs/client/components/charts/AngledXAxisTick.d.ts +19 -0
  273. package/dist/cjs/client/components/charts/AreaChart.config.d.ts +10 -0
  274. package/dist/cjs/client/components/charts/AreaChart.d.ts +4 -0
  275. package/dist/cjs/client/components/charts/AxisFormatControls.d.ts +37 -0
  276. package/dist/cjs/client/components/charts/BarChart.config.d.ts +10 -0
  277. package/dist/cjs/client/components/charts/BarChart.d.ts +4 -0
  278. package/dist/cjs/client/components/charts/BarChart.helpers.d.ts +23 -0
  279. package/dist/cjs/client/components/charts/BarSeries.d.ts +29 -0
  280. package/dist/cjs/client/components/charts/BoxPlotChart.config.d.ts +10 -0
  281. package/dist/cjs/client/components/charts/BoxPlotChart.d.ts +4 -0
  282. package/dist/cjs/client/components/charts/BubbleChart.config.d.ts +10 -0
  283. package/dist/cjs/client/components/charts/BubbleChart.d.ts +4 -0
  284. package/dist/cjs/client/components/charts/BubbleChart.helpers.d.ts +43 -0
  285. package/dist/cjs/client/components/charts/BubbleChart.render.d.ts +21 -0
  286. package/dist/cjs/client/components/charts/CandlestickChart.config.d.ts +10 -0
  287. package/dist/cjs/client/components/charts/CandlestickChart.d.ts +4 -0
  288. package/dist/cjs/client/components/charts/ChartContainer.d.ts +7 -0
  289. package/dist/cjs/client/components/charts/ChartLegend.d.ts +7 -0
  290. package/dist/cjs/client/components/charts/ChartStates.d.ts +38 -0
  291. package/dist/cjs/client/components/charts/ChartTooltip.d.ts +7 -0
  292. package/dist/cjs/client/components/charts/DataTable.config.d.ts +10 -0
  293. package/dist/cjs/client/components/charts/DataTable.d.ts +4 -0
  294. package/dist/cjs/client/components/charts/FunnelChart.config.d.ts +14 -0
  295. package/dist/cjs/client/components/charts/FunnelChart.d.ts +11 -0
  296. package/dist/cjs/client/components/charts/FunnelChart.helpers.d.ts +25 -0
  297. package/dist/cjs/client/components/charts/FunnelViews.d.ts +16 -0
  298. package/dist/cjs/client/components/charts/GaugeChart.config.d.ts +10 -0
  299. package/dist/cjs/client/components/charts/GaugeChart.d.ts +4 -0
  300. package/dist/cjs/client/components/charts/HeatMapCanvas.d.ts +25 -0
  301. package/dist/cjs/client/components/charts/HeatMapChart.config.d.ts +13 -0
  302. package/dist/cjs/client/components/charts/HeatMapChart.d.ts +10 -0
  303. package/dist/cjs/client/components/charts/HeatMapChart.helpers.d.ts +64 -0
  304. package/dist/cjs/client/components/charts/KpiDelta.config.d.ts +10 -0
  305. package/dist/cjs/client/components/charts/KpiDelta.d.ts +4 -0
  306. package/dist/cjs/client/components/charts/KpiDelta.helpers.d.ts +20 -0
  307. package/dist/cjs/client/components/charts/KpiNumber.config.d.ts +10 -0
  308. package/dist/cjs/client/components/charts/KpiNumber.d.ts +4 -0
  309. package/dist/cjs/client/components/charts/KpiNumber.helpers.d.ts +30 -0
  310. package/dist/cjs/client/components/charts/KpiStates.d.ts +19 -0
  311. package/dist/cjs/client/components/charts/KpiText.config.d.ts +10 -0
  312. package/dist/cjs/client/components/charts/KpiText.d.ts +4 -0
  313. package/dist/cjs/client/components/charts/LineChart.config.d.ts +10 -0
  314. package/dist/cjs/client/components/charts/LineChart.d.ts +4 -0
  315. package/dist/cjs/client/components/charts/MarkdownChart.config.d.ts +10 -0
  316. package/dist/cjs/client/components/charts/MarkdownChart.d.ts +4 -0
  317. package/dist/cjs/client/components/charts/MeasureProfileChart.config.d.ts +10 -0
  318. package/dist/cjs/client/components/charts/MeasureProfileChart.d.ts +4 -0
  319. package/dist/cjs/client/components/charts/MissingDependencyFallback.d.ts +12 -0
  320. package/dist/cjs/client/components/charts/PieChart.config.d.ts +10 -0
  321. package/dist/cjs/client/components/charts/PieChart.d.ts +4 -0
  322. package/dist/cjs/client/components/charts/RadarChart.config.d.ts +10 -0
  323. package/dist/cjs/client/components/charts/RadarChart.d.ts +4 -0
  324. package/dist/cjs/client/components/charts/RadialBarChart.config.d.ts +10 -0
  325. package/dist/cjs/client/components/charts/RadialBarChart.d.ts +4 -0
  326. package/dist/cjs/client/components/charts/RetentionCombinedChart.config.d.ts +2 -0
  327. package/dist/cjs/client/components/charts/RetentionCombinedChart.d.ts +14 -0
  328. package/dist/cjs/client/components/charts/RetentionHeatmap.config.d.ts +2 -0
  329. package/dist/cjs/client/components/charts/RetentionHeatmap.d.ts +7 -0
  330. package/dist/cjs/client/components/charts/SankeyChart.config.d.ts +14 -0
  331. package/dist/cjs/client/components/charts/SankeyChart.d.ts +10 -0
  332. package/dist/cjs/client/components/charts/ScatterChart.config.d.ts +10 -0
  333. package/dist/cjs/client/components/charts/ScatterChart.d.ts +4 -0
  334. package/dist/cjs/client/components/charts/ScatterChart.helpers.d.ts +43 -0
  335. package/dist/cjs/client/components/charts/ScatterSeries.d.ts +17 -0
  336. package/dist/cjs/client/components/charts/ScatterTooltip.d.ts +21 -0
  337. package/dist/cjs/client/components/charts/SunburstChart.config.d.ts +14 -0
  338. package/dist/cjs/client/components/charts/SunburstChart.d.ts +10 -0
  339. package/dist/cjs/client/components/charts/TreeMapChart.config.d.ts +10 -0
  340. package/dist/cjs/client/components/charts/TreeMapChart.d.ts +4 -0
  341. package/dist/cjs/client/components/charts/TreeMapChart.helpers.d.ts +37 -0
  342. package/dist/cjs/client/components/charts/TreeMapContent.d.ts +24 -0
  343. package/dist/cjs/client/components/charts/TreeMapLegend.d.ts +13 -0
  344. package/dist/cjs/client/components/charts/WaterfallChart.config.d.ts +10 -0
  345. package/dist/cjs/client/components/charts/WaterfallChart.d.ts +4 -0
  346. package/dist/cjs/client/components/charts/cartesianChartHelpers.d.ts +126 -0
  347. package/dist/cjs/client/components/charts/chartAxisResolution.d.ts +32 -0
  348. package/dist/cjs/client/components/charts/chartScaffolding.d.ts +77 -0
  349. package/dist/cjs/client/components/charts/gaugeChartHelpers.d.ts +36 -0
  350. package/dist/cjs/client/components/charts/index.d.ts +25 -0
  351. package/dist/cjs/client/components/charts/kpiTextHelpers.d.ts +46 -0
  352. package/dist/cjs/client/components/charts/radarChartHelpers.d.ts +14 -0
  353. package/dist/cjs/client/components/charts/radialBarChartHelpers.d.ts +22 -0
  354. package/dist/cjs/client/components/charts/useChartDimensions.d.ts +20 -0
  355. package/dist/cjs/client/components/charts/useKpiDimensions.d.ts +30 -0
  356. package/dist/cjs/client/components/dashboard/DashboardContext.d.ts +113 -0
  357. package/dist/cjs/client/components/dashboard/DashboardCoordinator.d.ts +2 -0
  358. package/dist/cjs/client/components/dashboard/DashboardEditBar.d.ts +5 -0
  359. package/dist/cjs/client/components/dashboard/DashboardFilterBar.d.ts +8 -0
  360. package/dist/cjs/client/components/dashboard/DashboardGridSurface.d.ts +8 -0
  361. package/dist/cjs/client/components/dashboard/DashboardModals.d.ts +8 -0
  362. package/dist/cjs/client/components/dashboard/DashboardProvider.d.ts +2 -0
  363. package/dist/cjs/client/components/dashboard/DashboardToolbar.d.ts +11 -0
  364. package/dist/cjs/client/components/dashboard/LayoutModeToggle.d.ts +10 -0
  365. package/dist/cjs/client/components/dashboard/dashboardGridUtils.d.ts +17 -0
  366. package/dist/cjs/client/components/dashboard/index.d.ts +13 -0
  367. package/dist/cjs/client/components/dashboardPortletCard/FilterFieldChip.d.ts +12 -0
  368. package/dist/cjs/client/components/dashboardPortletCard/PortletCardHeader.d.ts +43 -0
  369. package/dist/cjs/client/components/dashboardPortletCard/cardStyles.d.ts +33 -0
  370. package/dist/cjs/client/components/dashboardPortletCard/filterField.d.ts +12 -0
  371. package/dist/cjs/client/components/dashboardPortletCard/propsEqual.d.ts +55 -0
  372. package/dist/cjs/client/components/dashboardPortletCard/usePortletCardActions.d.ts +16 -0
  373. package/dist/cjs/client/components/portletAnalysisModal/saveValidation.d.ts +8 -0
  374. package/dist/cjs/client/components/shared/DateRangeFilter.d.ts +4 -0
  375. package/dist/cjs/client/components/shared/DateRangeSelector.d.ts +13 -0
  376. package/dist/cjs/client/components/shared/FilterBuilder.d.ts +4 -0
  377. package/dist/cjs/client/components/shared/FilterGroup.d.ts +4 -0
  378. package/dist/cjs/client/components/shared/FilterItem.d.ts +4 -0
  379. package/dist/cjs/client/components/shared/FilterValueSelector.d.ts +4 -0
  380. package/dist/cjs/client/components/shared/dateRangeUtils.d.ts +40 -0
  381. package/dist/cjs/client/components/shared/filterDisplayUtils.d.ts +10 -0
  382. package/dist/cjs/client/components/shared/filterItem/FilterDateRangeSelector.d.ts +17 -0
  383. package/dist/cjs/client/components/shared/filterItem/FilterFieldDropdown.d.ts +16 -0
  384. package/dist/cjs/client/components/shared/filterItem/dateRangeSync.d.ts +14 -0
  385. package/dist/cjs/client/components/shared/filterItem/fieldVisuals.d.ts +5 -0
  386. package/dist/cjs/client/components/shared/filterValueSelector/FilterValueInputs.d.ts +55 -0
  387. package/dist/cjs/client/components/shared/filterValueSelector/useFilterValueSelectorState.d.ts +25 -0
  388. package/dist/cjs/client/components/shared/queryFieldUtils.d.ts +21 -0
  389. package/dist/cjs/client/components/shared/types.d.ts +60 -0
  390. package/dist/cjs/client/components/shared/utils.d.ts +71 -0
  391. package/dist/cjs/client/components.d.ts +17 -0
  392. package/dist/cjs/client/hooks/agentChatStream.d.ts +39 -0
  393. package/dist/cjs/client/hooks/analysisQueryExecutionModes.d.ts +133 -0
  394. package/dist/cjs/client/hooks/dashboard/layoutUtils.d.ts +7 -0
  395. package/dist/cjs/client/hooks/dashboard/useDashboardController.d.ts +53 -0
  396. package/dist/cjs/client/hooks/dashboard/useGridLayoutEngine.d.ts +10 -0
  397. package/dist/cjs/client/hooks/dashboard/useRowLayoutEngine.d.ts +18 -0
  398. package/dist/cjs/client/hooks/drillNavigation.d.ts +25 -0
  399. package/dist/cjs/client/hooks/queries/index.d.ts +20 -0
  400. package/dist/cjs/client/hooks/queries/useCubeLoadQuery.d.ts +85 -0
  401. package/dist/cjs/client/hooks/queries/useCubeMetaQuery.d.ts +51 -0
  402. package/dist/cjs/client/hooks/queries/useDryRunQuery.d.ts +153 -0
  403. package/dist/cjs/client/hooks/queries/useExplainAI.d.ts +62 -0
  404. package/dist/cjs/client/hooks/queries/useExplainQuery.d.ts +62 -0
  405. package/dist/cjs/client/hooks/queries/useFlowQuery.d.ts +72 -0
  406. package/dist/cjs/client/hooks/queries/useFunnelQuery.d.ts +20 -0
  407. package/dist/cjs/client/hooks/queries/useMultiCubeLoadQuery.d.ts +70 -0
  408. package/dist/cjs/client/hooks/queries/useRetentionQuery.d.ts +67 -0
  409. package/dist/cjs/client/hooks/useAgentChat.d.ts +60 -0
  410. package/dist/cjs/client/hooks/useAnalysisBuilderHook.d.ts +245 -0
  411. package/dist/cjs/client/hooks/useAnalysisEffects.d.ts +33 -0
  412. package/dist/{client/hooks/useAnalysisQueryExecution.d.ts → cjs/client/hooks/useAnalysisQuery.d.ts} +3 -3
  413. package/dist/cjs/client/hooks/useAnalysisState.d.ts +165 -0
  414. package/dist/cjs/client/hooks/useCubeFieldLabel.d.ts +16 -0
  415. package/dist/cjs/client/hooks/useDashboardHook.d.ts +123 -0
  416. package/dist/cjs/client/hooks/useDataBrowser.d.ts +67 -0
  417. package/dist/cjs/client/hooks/useDebounce.d.ts +12 -0
  418. package/dist/cjs/client/hooks/useDebounceQuery.d.ts +48 -0
  419. package/dist/cjs/client/hooks/useDirtyStateTracking.d.ts +37 -0
  420. package/dist/cjs/client/hooks/useDragAutoScroll.d.ts +18 -0
  421. package/dist/cjs/client/hooks/useDrillInteraction.d.ts +9 -0
  422. package/dist/cjs/client/hooks/useElementVisibility.d.ts +30 -0
  423. package/dist/cjs/client/hooks/useFilterValues.d.ts +19 -0
  424. package/dist/cjs/client/hooks/useNotebookLayout.d.ts +8 -0
  425. package/dist/cjs/client/hooks/useResponsiveDashboard.d.ts +16 -0
  426. package/dist/cjs/client/hooks/useScrollDetection.d.ts +29 -0
  427. package/dist/cjs/client/hooks/useTheme.d.ts +11 -0
  428. package/dist/cjs/client/hooks/useTranslation.d.ts +21 -0
  429. package/dist/cjs/client/hooks.d.ts +17 -0
  430. package/dist/cjs/client/icons/customIcons.d.ts +22 -0
  431. package/dist/cjs/client/icons/defaultIcons.d.ts +5 -0
  432. package/dist/cjs/client/icons/index.d.ts +22 -0
  433. package/dist/cjs/client/icons/registry.d.ts +58 -0
  434. package/dist/cjs/client/icons/types.d.ts +134 -0
  435. package/dist/cjs/client/icons.d.ts +2 -0
  436. package/dist/cjs/client/index.d.ts +76 -0
  437. package/dist/cjs/client/providers/CubeApiProvider.d.ts +24 -0
  438. package/dist/cjs/client/providers/CubeFeaturesProvider.d.ts +19 -0
  439. package/dist/cjs/client/providers/CubeMetaContext.d.ts +11 -0
  440. package/dist/cjs/client/providers/CubeMetaProvider.d.ts +6 -0
  441. package/dist/cjs/client/providers/CubeProvider.d.ts +70 -0
  442. package/dist/cjs/client/providers/I18nProvider.d.ts +18 -0
  443. package/dist/cjs/client/providers/ScrollContainerContext.d.ts +19 -0
  444. package/dist/cjs/client/providers.d.ts +10 -0
  445. package/dist/cjs/client/schema.d.ts +13 -0
  446. package/dist/cjs/client/shared/chartConfigBuilders.d.ts +18 -0
  447. package/dist/cjs/client/shared/chartDefaults.d.ts +59 -0
  448. package/dist/cjs/client/shared/components/CodeBlock.d.ts +13 -0
  449. package/dist/cjs/client/shared/components/QueryAnalysisPanel.d.ts +7 -0
  450. package/dist/cjs/client/shared/components/QueryAnalysisPanel.sections.d.ts +41 -0
  451. package/dist/cjs/client/shared/index.d.ts +11 -0
  452. package/dist/cjs/client/shared/queryKey.d.ts +1 -0
  453. package/dist/cjs/client/shared/queryTransforms.d.ts +20 -0
  454. package/dist/cjs/client/shared/types.d.ts +184 -0
  455. package/dist/cjs/client/shared/utils.d.ts +104 -0
  456. package/dist/cjs/client/stores/analysisBuilderStore.d.ts +578 -0
  457. package/dist/cjs/client/stores/dashboardStore.d.ts +292 -0
  458. package/dist/cjs/client/stores/dataBrowserStore.d.ts +34 -0
  459. package/dist/cjs/client/stores/index.d.ts +13 -0
  460. package/dist/cjs/client/stores/notebookStore.d.ts +157 -0
  461. package/dist/cjs/client/stores/optionsToAnalysisConfig.d.ts +17 -0
  462. package/dist/cjs/client/stores/slices/coreSlice.d.ts +96 -0
  463. package/dist/cjs/client/stores/slices/flowSlice.d.ts +69 -0
  464. package/dist/cjs/client/stores/slices/funnelSlice.d.ts +61 -0
  465. package/dist/cjs/client/stores/slices/index.d.ts +13 -0
  466. package/dist/cjs/client/stores/slices/querySlice.d.ts +55 -0
  467. package/dist/cjs/client/stores/slices/retentionSlice.d.ts +66 -0
  468. package/dist/cjs/client/stores/slices/uiSlice.d.ts +52 -0
  469. package/dist/cjs/client/theme/index.d.ts +135 -0
  470. package/dist/cjs/client/types/analysisConfig.d.ts +185 -0
  471. package/dist/cjs/client/types/drill.d.ts +240 -0
  472. package/dist/cjs/client/types/flow.d.ts +191 -0
  473. package/dist/cjs/client/types/funnel.d.ts +288 -0
  474. package/dist/cjs/client/types/retention.d.ts +301 -0
  475. package/dist/cjs/client/types.d.ts +600 -0
  476. package/dist/cjs/client/utils/axisValueFormatting.d.ts +32 -0
  477. package/dist/cjs/client/utils/chartConstants.d.ts +16 -0
  478. package/dist/cjs/client/utils/chartUtils.d.ts +35 -0
  479. package/dist/cjs/client/utils/colorPalettes.d.ts +35 -0
  480. package/dist/cjs/client/utils/comparisonUtils.d.ts +96 -0
  481. package/dist/cjs/client/utils/configMigration.d.ts +85 -0
  482. package/dist/cjs/client/utils/drillQueryBuilder.d.ts +41 -0
  483. package/dist/cjs/client/utils/exportXlsx.d.ts +20 -0
  484. package/dist/cjs/client/utils/filterUtils.d.ts +113 -0
  485. package/dist/cjs/client/utils/funnelExecution.d.ts +211 -0
  486. package/dist/cjs/client/utils/funnelValidation.d.ts +46 -0
  487. package/dist/cjs/client/utils/index.d.ts +94 -0
  488. package/dist/cjs/client/utils/joinReachability.d.ts +27 -0
  489. package/dist/cjs/client/utils/measureIcons.d.ts +11 -0
  490. package/dist/cjs/client/utils/multiQueryUtils.d.ts +86 -0
  491. package/dist/cjs/client/utils/multiQueryValidation.d.ts +69 -0
  492. package/dist/cjs/client/utils/periodUtils.d.ts +40 -0
  493. package/dist/cjs/client/utils/pivotUtils.d.ts +87 -0
  494. package/dist/cjs/client/utils/shareUtils.d.ts +61 -0
  495. package/dist/cjs/client/utils/syntaxHighlighting.d.ts +36 -0
  496. package/dist/cjs/client/utils/targetUtils.d.ts +36 -0
  497. package/dist/cjs/client/utils/thumbnail.d.ts +36 -0
  498. package/dist/cjs/client/utils/timeValueFormatting.d.ts +32 -0
  499. package/dist/cjs/client/utils.d.ts +8 -0
  500. package/dist/cjs/package.json +3 -0
  501. package/dist/cjs/server/adapters/base-adapter.d.ts +332 -0
  502. package/dist/cjs/server/adapters/databend-adapter.d.ts +63 -0
  503. package/dist/cjs/server/adapters/duckdb-adapter.d.ts +68 -0
  504. package/dist/cjs/server/adapters/mysql-adapter.d.ts +65 -0
  505. package/dist/cjs/server/adapters/postgres-adapter.d.ts +55 -0
  506. package/dist/cjs/server/adapters/singlestore-adapter.d.ts +4 -0
  507. package/dist/cjs/server/adapters/snowflake-adapter.d.ts +53 -0
  508. package/dist/cjs/server/adapters/sqlite-adapter.d.ts +120 -0
  509. package/dist/cjs/server/adapters/window-function-builder.d.ts +11 -0
  510. package/dist/cjs/server/agent/chart-validation.d.ts +22 -0
  511. package/dist/cjs/server/agent/handler-steps.d.ts +37 -0
  512. package/dist/cjs/server/agent/handler.d.ts +25 -0
  513. package/dist/cjs/server/agent/index.d.ts +11 -0
  514. package/dist/cjs/server/agent/providers/anthropic.d.ts +24 -0
  515. package/dist/cjs/server/agent/providers/factory.d.ts +12 -0
  516. package/dist/cjs/server/agent/providers/google.d.ts +23 -0
  517. package/dist/cjs/server/agent/providers/index.d.ts +6 -0
  518. package/dist/cjs/server/agent/providers/openai.d.ts +26 -0
  519. package/dist/cjs/server/agent/providers/types.d.ts +95 -0
  520. package/dist/cjs/server/agent/system-prompt.d.ts +5 -0
  521. package/dist/cjs/server/agent/tools.d.ts +28 -0
  522. package/dist/cjs/server/agent/types.d.ts +192 -0
  523. package/dist/cjs/server/ai/discovery-helpers.d.ts +29 -0
  524. package/dist/cjs/server/ai/discovery.d.ts +66 -0
  525. package/dist/cjs/server/ai/index.d.ts +10 -0
  526. package/dist/cjs/server/ai/mcp-prompts.d.ts +83 -0
  527. package/dist/cjs/server/ai/query-schema.d.ts +258 -0
  528. package/dist/cjs/server/ai/schemas.d.ts +63 -0
  529. package/dist/cjs/server/ai/suggestion-helpers.d.ts +33 -0
  530. package/dist/cjs/server/ai/suggestion.d.ts +16 -0
  531. package/dist/cjs/server/ai/validation-helpers.d.ts +21 -0
  532. package/dist/cjs/server/ai/validation.d.ts +31 -0
  533. package/dist/cjs/server/builders/analysis-utils.d.ts +106 -0
  534. package/dist/cjs/server/builders/comparison-query-builder.d.ts +70 -0
  535. package/dist/cjs/server/builders/cte-builder.d.ts +108 -0
  536. package/dist/cjs/server/builders/date-time-builder.d.ts +34 -0
  537. package/dist/cjs/server/builders/date-time-helpers.d.ts +34 -0
  538. package/dist/cjs/server/builders/filter-builder.d.ts +25 -0
  539. package/dist/cjs/server/builders/filter-operators.d.ts +23 -0
  540. package/dist/cjs/server/builders/flow-query-builder.d.ts +136 -0
  541. package/dist/cjs/server/builders/funnel-query-builder.d.ts +145 -0
  542. package/dist/cjs/server/builders/group-by-builder.d.ts +38 -0
  543. package/dist/cjs/server/builders/index.d.ts +13 -0
  544. package/dist/cjs/server/builders/measure-builder.d.ts +185 -0
  545. package/dist/cjs/server/builders/retention-query-builder.d.ts +98 -0
  546. package/dist/cjs/server/cache-providers/index.d.ts +5 -0
  547. package/dist/cjs/server/cache-providers/memory.d.ts +105 -0
  548. package/dist/cjs/server/cache-utils.d.ts +85 -0
  549. package/dist/cjs/server/compiler-metadata.d.ts +11 -0
  550. package/dist/cjs/server/compiler.d.ts +212 -0
  551. package/dist/cjs/server/cube-utils.d.ts +158 -0
  552. package/dist/cjs/server/database-utils.d.ts +18 -0
  553. package/dist/cjs/server/execution/annotation-builder.d.ts +12 -0
  554. package/dist/cjs/server/execution/filter-cache-preloader.d.ts +19 -0
  555. package/dist/cjs/server/execution/mode-router.d.ts +25 -0
  556. package/dist/cjs/server/execution/query-result-cache.d.ts +21 -0
  557. package/dist/cjs/server/execution/result-post-processor.d.ts +10 -0
  558. package/dist/cjs/server/executor.d.ts +186 -0
  559. package/dist/cjs/server/executors/base-executor.d.ts +16 -0
  560. package/dist/cjs/server/executors/databend-executor.d.ts +33 -0
  561. package/dist/cjs/server/executors/duckdb-executor.d.ts +33 -0
  562. package/dist/cjs/server/executors/explain-utils.d.ts +28 -0
  563. package/dist/cjs/server/executors/index.d.ts +21 -0
  564. package/dist/cjs/server/executors/mysql-executor.d.ts +27 -0
  565. package/dist/cjs/server/executors/postgres-executor.d.ts +27 -0
  566. package/dist/cjs/server/executors/singlestore-executor.d.ts +9 -0
  567. package/dist/cjs/server/executors/snowflake-executor.d.ts +33 -0
  568. package/dist/cjs/server/executors/sqlite-executor.d.ts +28 -0
  569. package/dist/cjs/server/explain/databend-parser.d.ts +16 -0
  570. package/dist/cjs/server/explain/duckdb-parser.d.ts +28 -0
  571. package/dist/cjs/server/explain/explain-tree.d.ts +20 -0
  572. package/dist/cjs/server/explain/index.d.ts +9 -0
  573. package/dist/cjs/server/explain/mysql-parser.d.ts +38 -0
  574. package/dist/cjs/server/explain/postgres-parser.d.ts +18 -0
  575. package/dist/cjs/server/explain/snowflake-parser.d.ts +17 -0
  576. package/dist/cjs/server/explain/sqlite-parser.d.ts +23 -0
  577. package/dist/cjs/server/filter-cache.d.ts +73 -0
  578. package/dist/cjs/server/gap-filler.d.ts +48 -0
  579. package/dist/cjs/server/index.d.ts +38 -0
  580. package/dist/cjs/server/logical-plan/cte-planner-helpers.d.ts +37 -0
  581. package/dist/cjs/server/logical-plan/cte-planner.d.ts +104 -0
  582. package/dist/cjs/server/logical-plan/filter-propagation.d.ts +44 -0
  583. package/dist/cjs/server/logical-plan/index.d.ts +19 -0
  584. package/dist/cjs/server/logical-plan/join-planner.d.ts +27 -0
  585. package/dist/cjs/server/logical-plan/logical-plan-builder.d.ts +58 -0
  586. package/dist/cjs/server/logical-plan/logical-planner.d.ts +39 -0
  587. package/dist/cjs/server/logical-plan/optimiser.d.ts +34 -0
  588. package/dist/cjs/server/logical-plan/plan-analysis-reporter.d.ts +59 -0
  589. package/dist/cjs/server/logical-plan/planner-utils.d.ts +20 -0
  590. package/dist/cjs/server/logical-plan/types.d.ts +199 -0
  591. package/dist/cjs/server/measure-classification.d.ts +40 -0
  592. package/dist/cjs/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
  593. package/dist/cjs/server/physical-plan/drizzle-sql-builder.d.ts +118 -0
  594. package/dist/cjs/server/physical-plan/index.d.ts +2 -0
  595. package/dist/cjs/server/physical-plan/processors/cte-processor.d.ts +6 -0
  596. package/dist/cjs/server/physical-plan/processors/index.d.ts +8 -0
  597. package/dist/cjs/server/physical-plan/processors/joins-processor.d.ts +6 -0
  598. package/dist/cjs/server/physical-plan/processors/keys-dedup-processor.d.ts +13 -0
  599. package/dist/cjs/server/physical-plan/processors/multi-fact-processor.d.ts +13 -0
  600. package/dist/cjs/server/physical-plan/processors/predicates-processor.d.ts +6 -0
  601. package/dist/cjs/server/physical-plan/processors/selection-processor.d.ts +6 -0
  602. package/dist/cjs/server/physical-plan/processors/shared.d.ts +38 -0
  603. package/dist/cjs/server/physical-plan/processors/window-processor.d.ts +6 -0
  604. package/dist/cjs/server/prompts/explain-analysis-prompt.d.ts +47 -0
  605. package/dist/cjs/server/prompts/index.d.ts +27 -0
  606. package/dist/cjs/server/prompts/single-step-prompt.d.ts +31 -0
  607. package/dist/cjs/server/prompts/step0-validation-prompt.d.ts +39 -0
  608. package/dist/cjs/server/prompts/step1-shape-prompt.d.ts +29 -0
  609. package/dist/cjs/server/prompts/step2-complete-prompt.d.ts +19 -0
  610. package/dist/cjs/server/prompts/types.d.ts +37 -0
  611. package/dist/cjs/server/query-handlers.d.ts +79 -0
  612. package/dist/cjs/server/query-modes.d.ts +28 -0
  613. package/dist/cjs/server/query-validator.d.ts +9 -0
  614. package/dist/cjs/server/resolvers/calculated-measure-resolver.d.ts +98 -0
  615. package/dist/cjs/server/resolvers/index.d.ts +6 -0
  616. package/dist/cjs/server/resolvers/join-path-resolver.d.ts +158 -0
  617. package/dist/cjs/server/sql-format.d.ts +11 -0
  618. package/dist/cjs/server/template-substitution.d.ts +57 -0
  619. package/dist/cjs/server/types/analysis.d.ts +189 -0
  620. package/dist/cjs/server/types/cache.d.ts +132 -0
  621. package/dist/cjs/server/types/core.d.ts +164 -0
  622. package/dist/cjs/server/types/cube.d.ts +544 -0
  623. package/dist/cjs/server/types/executor.d.ts +156 -0
  624. package/dist/cjs/server/types/flow.d.ts +144 -0
  625. package/dist/cjs/server/types/funnel.d.ts +118 -0
  626. package/dist/cjs/server/types/index.d.ts +11 -0
  627. package/dist/cjs/server/types/metadata.d.ts +113 -0
  628. package/dist/cjs/server/types/query.d.ts +153 -0
  629. package/dist/cjs/server/types/retention.d.ts +141 -0
  630. package/dist/cjs/server/types/utils.d.ts +11 -0
  631. package/dist/cjs/server/types/validation.d.ts +14 -0
  632. package/dist/client/charts/chartComponentRegistry.d.ts +1 -9
  633. package/dist/client/charts/chartConfigRegistry.d.ts +5 -1
  634. package/dist/client/charts/chartPlugin.d.ts +1 -2
  635. package/dist/client/charts/chartRegistry.d.ts +73 -0
  636. package/dist/client/charts.js +3 -3
  637. package/dist/client/chunks/{DashboardEditModal-okVfH8ZK.js → DashboardEditModal-CWurUU2B.js} +7 -7
  638. package/dist/client/chunks/{DashboardEditModal-okVfH8ZK.js.map → DashboardEditModal-CWurUU2B.js.map} +1 -1
  639. package/dist/client/chunks/{analysis-builder-DB88FojM.js → analysis-builder-Uj_Fxv0-.js} +1588 -1857
  640. package/dist/client/chunks/analysis-builder-Uj_Fxv0-.js.map +1 -0
  641. package/dist/client/chunks/{analysis-builder-shared-BVK4TYfR.js → analysis-builder-shared-AdAYIfj_.js} +1531 -1266
  642. package/dist/client/chunks/analysis-builder-shared-AdAYIfj_.js.map +1 -0
  643. package/dist/client/chunks/{chart-config-activity-grid-D_UX4NHC.js → chart-config-activity-grid-BU_bkvER.js} +1 -11
  644. package/dist/client/chunks/chart-config-activity-grid-BU_bkvER.js.map +1 -0
  645. package/dist/client/chunks/{chart-config-area-BNigHUy8.js → chart-config-area-DxwIZ4Uf.js} +1 -5
  646. package/dist/client/chunks/{chart-config-area-BNigHUy8.js.map → chart-config-area-DxwIZ4Uf.js.map} +1 -1
  647. package/dist/client/chunks/{chart-config-bar-DSO_LRTx.js → chart-config-bar-Cc8GY9aQ.js} +5 -9
  648. package/dist/client/chunks/chart-config-bar-Cc8GY9aQ.js.map +1 -0
  649. package/dist/client/chunks/{chart-config-box-plot-oW8axV2q.js → chart-config-box-plot-Bs8ovYvV.js} +3 -8
  650. package/dist/client/chunks/chart-config-box-plot-Bs8ovYvV.js.map +1 -0
  651. package/dist/client/chunks/{chart-config-bubble-gIoqVyjZ.js → chart-config-bubble-BfgY7pt8.js} +1 -11
  652. package/dist/client/chunks/chart-config-bubble-BfgY7pt8.js.map +1 -0
  653. package/dist/client/chunks/{chart-config-candlestick-N6DchAA3.js → chart-config-candlestick-jaeNNEtC.js} +1 -11
  654. package/dist/client/chunks/chart-config-candlestick-jaeNNEtC.js.map +1 -0
  655. package/dist/client/chunks/{chart-config-data-table-d7VBY-y_.js → chart-config-data-table-CRk0C0rW.js} +1 -4
  656. package/dist/client/chunks/chart-config-data-table-CRk0C0rW.js.map +1 -0
  657. package/dist/client/chunks/{chart-config-funnel-DEYMcxsD.js → chart-config-funnel-boT_LNfl.js} +1 -4
  658. package/dist/client/chunks/chart-config-funnel-boT_LNfl.js.map +1 -0
  659. package/dist/client/chunks/{chart-config-gauge-Dq-_H9UN.js → chart-config-gauge-C5uJEr97.js} +3 -8
  660. package/dist/client/chunks/chart-config-gauge-C5uJEr97.js.map +1 -0
  661. package/dist/client/chunks/{chart-config-heat-map-CfRnRNcw.js → chart-config-heat-map-CCarP44-.js} +1 -11
  662. package/dist/client/chunks/chart-config-heat-map-CCarP44-.js.map +1 -0
  663. package/dist/client/chunks/{chart-config-kpi-delta-DSQbvqu_.js → chart-config-kpi-delta-DYopvwyG.js} +3 -8
  664. package/dist/client/chunks/chart-config-kpi-delta-DYopvwyG.js.map +1 -0
  665. package/dist/client/chunks/{chart-config-kpi-number-EFSWY1We.js → chart-config-kpi-number-BhMdoArB.js} +3 -8
  666. package/dist/client/chunks/chart-config-kpi-number-BhMdoArB.js.map +1 -0
  667. package/dist/client/chunks/{chart-config-kpi-text-KM3V5X2u.js → chart-config-kpi-text-DE6Zdi53.js} +3 -8
  668. package/dist/client/chunks/chart-config-kpi-text-DE6Zdi53.js.map +1 -0
  669. package/dist/client/chunks/{chart-config-line-D6jG8PCH.js → chart-config-line-CBfM0Rds.js} +6 -10
  670. package/dist/client/chunks/chart-config-line-CBfM0Rds.js.map +1 -0
  671. package/dist/client/chunks/{chart-config-markdown-BtRIe8JN.js → chart-config-markdown-BCDyBI8K.js} +1 -4
  672. package/dist/client/chunks/chart-config-markdown-BCDyBI8K.js.map +1 -0
  673. package/dist/client/chunks/{chart-config-measure-profile-DxRGa-zf.js → chart-config-measure-profile-BgQIH1u2.js} +1 -8
  674. package/dist/client/chunks/chart-config-measure-profile-BgQIH1u2.js.map +1 -0
  675. package/dist/client/chunks/{chart-config-pie-BhzW-fdn.js → chart-config-pie-ChfFz6DV.js} +5 -9
  676. package/dist/client/chunks/chart-config-pie-ChfFz6DV.js.map +1 -0
  677. package/dist/client/chunks/{chart-config-radar-D7REP1q_.js → chart-config-radar-BlAIGnww.js} +5 -9
  678. package/dist/client/chunks/chart-config-radar-BlAIGnww.js.map +1 -0
  679. package/dist/client/chunks/{chart-config-radial-bar-Byx6qOPU.js → chart-config-radial-bar-VFerwbCO.js} +5 -9
  680. package/dist/client/chunks/chart-config-radial-bar-VFerwbCO.js.map +1 -0
  681. package/dist/client/chunks/{chart-config-sankey-BTnWA7EW.js → chart-config-sankey-BhrDxIgj.js} +1 -4
  682. package/dist/client/chunks/chart-config-sankey-BhrDxIgj.js.map +1 -0
  683. package/dist/client/chunks/{chart-config-scatter-DSYTjwRb.js → chart-config-scatter-q_olh54e.js} +1 -11
  684. package/dist/client/chunks/chart-config-scatter-q_olh54e.js.map +1 -0
  685. package/dist/client/chunks/{chart-config-sunburst-Bwjtdf7X.js → chart-config-sunburst-BOmkOnKn.js} +1 -4
  686. package/dist/client/chunks/chart-config-sunburst-BOmkOnKn.js.map +1 -0
  687. package/dist/client/chunks/{chart-config-tree-map-DVrvf3yQ.js → chart-config-tree-map-BjX88YBY.js} +5 -9
  688. package/dist/client/chunks/chart-config-tree-map-BjX88YBY.js.map +1 -0
  689. package/dist/client/chunks/{chart-config-waterfall-DmFeQdIk.js → chart-config-waterfall-QsWXVSoF.js} +3 -8
  690. package/dist/client/chunks/chart-config-waterfall-QsWXVSoF.js.map +1 -0
  691. package/dist/client/chunks/{chart-data-table-CKauQXme.js → chart-data-table-D4g5_jfF.js} +1277 -1094
  692. package/dist/client/chunks/chart-data-table-D4g5_jfF.js.map +1 -0
  693. package/dist/client/chunks/{chart-kpi-delta-Dn-jjO-2.js → chart-kpi-delta-BvWOt8-D.js} +2 -2
  694. package/dist/client/chunks/{chart-kpi-delta-Dn-jjO-2.js.map → chart-kpi-delta-BvWOt8-D.js.map} +1 -1
  695. package/dist/client/chunks/{chart-kpi-number-P_WBiO5S.js → chart-kpi-number-xgZmMiQY.js} +3 -3
  696. package/dist/client/chunks/{chart-kpi-number-P_WBiO5S.js.map → chart-kpi-number-xgZmMiQY.js.map} +1 -1
  697. package/dist/client/chunks/{chart-kpi-text-C-Y4eb5H.js → chart-kpi-text-ZO3eFi7t.js} +2 -2
  698. package/dist/client/chunks/{chart-kpi-text-C-Y4eb5H.js.map → chart-kpi-text-ZO3eFi7t.js.map} +1 -1
  699. package/dist/client/chunks/{charts-loader-DdTeCeNo.js → charts-loader-B0DOQMFH.js} +6 -6
  700. package/dist/client/chunks/{charts-loader-DdTeCeNo.js.map → charts-loader-B0DOQMFH.js.map} +1 -1
  701. package/dist/client/chunks/{schema-visualization-Cb_E9_Gd.js → schema-visualization-DJPTktM6.js} +2 -2
  702. package/dist/client/chunks/{schema-visualization-Cb_E9_Gd.js.map → schema-visualization-DJPTktM6.js.map} +1 -1
  703. package/dist/client/chunks/{useDirtyStateTracking-MbpxH_v6.js → useDirtyStateTracking-BY_IIG1n.js} +2 -2
  704. package/dist/client/chunks/{useDirtyStateTracking-MbpxH_v6.js.map → useDirtyStateTracking-BY_IIG1n.js.map} +1 -1
  705. package/dist/client/chunks/{useExplainAI-evnZkjCY.js → useExplainAI-PjMBmj2p.js} +4 -4
  706. package/dist/client/chunks/{useExplainAI-evnZkjCY.js.map → useExplainAI-PjMBmj2p.js.map} +1 -1
  707. package/dist/client/chunks/{utils-3P6z1vz5.js → utils-Cq-j5E5I.js} +2 -2
  708. package/dist/client/chunks/{utils-3P6z1vz5.js.map → utils-Cq-j5E5I.js.map} +1 -1
  709. package/dist/client/chunks/{vendor-DSpR0IW6.js → vendor-D4jADu8t.js} +2 -2
  710. package/dist/client/chunks/{vendor-DSpR0IW6.js.map → vendor-D4jADu8t.js.map} +1 -1
  711. package/dist/client/components/AIAssistant/index.d.ts +2 -2
  712. package/dist/client/components/charts/ActivityGridChart.config.d.ts +6 -1
  713. package/dist/client/components/charts/AreaChart.config.d.ts +6 -1
  714. package/dist/client/components/charts/BarChart.config.d.ts +6 -1
  715. package/dist/client/components/charts/BoxPlotChart.config.d.ts +6 -1
  716. package/dist/client/components/charts/BubbleChart.config.d.ts +6 -1
  717. package/dist/client/components/charts/CandlestickChart.config.d.ts +6 -1
  718. package/dist/client/components/charts/DataTable.config.d.ts +6 -1
  719. package/dist/client/components/charts/FunnelChart.config.d.ts +5 -0
  720. package/dist/client/components/charts/GaugeChart.config.d.ts +6 -1
  721. package/dist/client/components/charts/HeatMapChart.config.d.ts +6 -1
  722. package/dist/client/components/charts/KpiDelta.config.d.ts +6 -1
  723. package/dist/client/components/charts/KpiNumber.config.d.ts +6 -1
  724. package/dist/client/components/charts/KpiText.config.d.ts +6 -1
  725. package/dist/client/components/charts/LineChart.config.d.ts +6 -1
  726. package/dist/client/components/charts/MarkdownChart.config.d.ts +6 -1
  727. package/dist/client/components/charts/MeasureProfileChart.config.d.ts +6 -1
  728. package/dist/client/components/charts/PieChart.config.d.ts +6 -1
  729. package/dist/client/components/charts/RadarChart.config.d.ts +6 -1
  730. package/dist/client/components/charts/RadialBarChart.config.d.ts +6 -1
  731. package/dist/client/components/charts/SankeyChart.config.d.ts +5 -0
  732. package/dist/client/components/charts/ScatterChart.config.d.ts +6 -1
  733. package/dist/client/components/charts/SunburstChart.config.d.ts +5 -0
  734. package/dist/client/components/charts/TreeMapChart.config.d.ts +6 -1
  735. package/dist/client/components/charts/WaterfallChart.config.d.ts +6 -1
  736. package/dist/client/components.js +2 -2
  737. package/dist/client/hooks/analysisQueryExecutionModes.d.ts +1 -1
  738. package/dist/client/hooks/useAnalysisEffects.d.ts +33 -0
  739. package/dist/client/hooks/useAnalysisQuery.d.ts +144 -0
  740. package/dist/client/hooks/useAnalysisState.d.ts +165 -0
  741. package/dist/client/hooks.js +3 -3
  742. package/dist/client/icons/registry.d.ts +0 -6
  743. package/dist/client/icons/types.d.ts +5 -0
  744. package/dist/client/icons.js +1 -1
  745. package/dist/client/index.js +9 -9
  746. package/dist/client/providers.js +1 -1
  747. package/dist/client/schema.js +1 -1
  748. package/dist/client/utils.js +3 -3
  749. package/dist/client-bundle-stats.html +1 -1
  750. package/dist/mcp-app/mcp-app.html +34 -34
  751. package/dist/server/chartConfigHelpers-CcvqrIWF.js +72 -0
  752. package/dist/server/chartConfigHelpers-DHQB-_v5.cjs +1 -0
  753. package/dist/server/index.cjs +68 -68
  754. package/dist/server/index.js +3800 -3728
  755. package/dist/server/{openai-D0musiYP.cjs → openai-B4kAJTSD.cjs} +3 -3
  756. package/dist/server/{openai-vXvLni8v.cjs → openai-Cdf2wWZA.cjs} +1 -1
  757. package/dist/server/{openai-B5jEiqiB.js → openai-CmMzrs1Y.js} +18 -2
  758. package/dist/server/{openai-cDlFSTk6.js → openai-DhzGY9R4.js} +1 -1
  759. package/package.json +85 -29
  760. package/dist/adapters/handler-Cn0dOctE.cjs +0 -25
  761. package/dist/adapters/hono/mcp-handler.d.ts +0 -37
  762. package/dist/adapters/mcp-transport-B7ddET3M.cjs +0 -40
  763. package/dist/adapters/mcp-transport-Dfuj4j4q.js +0 -591
  764. package/dist/client/chunks/analysis-builder-DB88FojM.js.map +0 -1
  765. package/dist/client/chunks/analysis-builder-shared-BVK4TYfR.js.map +0 -1
  766. package/dist/client/chunks/chart-config-activity-grid-D_UX4NHC.js.map +0 -1
  767. package/dist/client/chunks/chart-config-bar-DSO_LRTx.js.map +0 -1
  768. package/dist/client/chunks/chart-config-box-plot-oW8axV2q.js.map +0 -1
  769. package/dist/client/chunks/chart-config-bubble-gIoqVyjZ.js.map +0 -1
  770. package/dist/client/chunks/chart-config-candlestick-N6DchAA3.js.map +0 -1
  771. package/dist/client/chunks/chart-config-data-table-d7VBY-y_.js.map +0 -1
  772. package/dist/client/chunks/chart-config-funnel-DEYMcxsD.js.map +0 -1
  773. package/dist/client/chunks/chart-config-gauge-Dq-_H9UN.js.map +0 -1
  774. package/dist/client/chunks/chart-config-heat-map-CfRnRNcw.js.map +0 -1
  775. package/dist/client/chunks/chart-config-kpi-delta-DSQbvqu_.js.map +0 -1
  776. package/dist/client/chunks/chart-config-kpi-number-EFSWY1We.js.map +0 -1
  777. package/dist/client/chunks/chart-config-kpi-text-KM3V5X2u.js.map +0 -1
  778. package/dist/client/chunks/chart-config-line-D6jG8PCH.js.map +0 -1
  779. package/dist/client/chunks/chart-config-markdown-BtRIe8JN.js.map +0 -1
  780. package/dist/client/chunks/chart-config-measure-profile-DxRGa-zf.js.map +0 -1
  781. package/dist/client/chunks/chart-config-pie-BhzW-fdn.js.map +0 -1
  782. package/dist/client/chunks/chart-config-radar-D7REP1q_.js.map +0 -1
  783. package/dist/client/chunks/chart-config-radial-bar-Byx6qOPU.js.map +0 -1
  784. package/dist/client/chunks/chart-config-sankey-BTnWA7EW.js.map +0 -1
  785. package/dist/client/chunks/chart-config-scatter-DSYTjwRb.js.map +0 -1
  786. package/dist/client/chunks/chart-config-sunburst-Bwjtdf7X.js.map +0 -1
  787. package/dist/client/chunks/chart-config-tree-map-DVrvf3yQ.js.map +0 -1
  788. package/dist/client/chunks/chart-config-waterfall-DmFeQdIk.js.map +0 -1
  789. package/dist/client/chunks/chart-data-table-CKauQXme.js.map +0 -1
  790. package/dist/client/hooks/useAnalysisAI.d.ts +0 -56
  791. package/dist/client/hooks/useAnalysisChartDefaults.d.ts +0 -35
  792. package/dist/client/hooks/useAnalysisCombinedFields.d.ts +0 -18
  793. package/dist/client/hooks/useAnalysisInitialization.d.ts +0 -25
  794. package/dist/client/hooks/useAnalysisQueryBuilder.d.ts +0 -32
  795. package/dist/client/hooks/useAnalysisShare.d.ts +0 -18
  796. package/dist/client/hooks/useAnalysisUIState.d.ts +0 -24
@@ -1,3 +1,3 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-_whV4fXL.cjs"),t=require("../locale-ZLUUNUxr.cjs"),n=require("../mcp-transport-B7ddET3M.cjs");var r=function(r,i,a){let{cubes:o,drizzle:s,schema:c,extractSecurityContext:l,engineType:u,cors:d,basePath:f=`/cubejs-api/v1`,bodyLimit:p=10485760,cache:m,mcp:h={enabled:!0},agent:g}=i;if(!o||o.length===0)return a(Error(`At least one cube must be provided in the cubes array`));let _=async e=>t.r(await l(e),t.n(t=>e.headers[t.toLowerCase()]));if(d){let e={...d,allowedHeaders:t.t(d.allowedHeaders)};r.register(import(`@fastify/cors`),e)}r.addHook(`onRequest`,async(e,t)=>{e.method===`POST`&&(e.body=void 0)});let v=new t.i({drizzle:s,schema:c,engineType:u,cache:m,rlsSetup:i.rlsSetup});if(o.forEach(e=>{v.registerCube(e)}),r.post(`${f}/load`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(t,n)=>{try{let r=t.body,i=r.query||r,a=await _(t),o=v.validateQuery(i);if(!o.isValid)return n.status(400).send(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=t.headers[`x-cache-control`]===`no-cache`;return e.r(i,await v.executeMultiCubeQuery(i,a,{skipCache:s}),v)}catch(r){return t.log.error(r,`Query execution error`),n.status(500).send(e.i(r instanceof Error?r.message:`Query execution failed`,500))}}),r.get(`${f}/load`,{schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}},async(t,n)=>{try{let{query:r}=t.query,i;try{i=JSON.parse(r)}catch{return n.status(400).send(e.i(`Invalid JSON in query parameter`,400))}let a=await _(t),o=v.validateQuery(i);if(!o.isValid)return n.status(400).send(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=t.headers[`x-cache-control`]===`no-cache`,c=await v.executeMultiCubeQuery(i,a,{skipCache:s});return e.r(i,c,v)}catch(r){return t.log.error(r,`Query execution error`),n.status(500).send(e.i(r instanceof Error?r.message:`Query execution failed`,500))}}),r.post(`${f}/batch`,{bodyLimit:p,schema:{body:{type:`object`,required:[`queries`],properties:{queries:{type:`array`,items:{type:`object`}}}}}},async(t,n)=>{try{let{queries:r}=t.body;return!r||!Array.isArray(r)?n.status(400).send(e.i(`Request body must contain a "queries" array`,400)):r.length===0?n.status(400).send(e.i(`Queries array cannot be empty`,400)):await e.l(r,await _(t),v,{skipCache:t.headers[`x-cache-control`]===`no-cache`})}catch(r){return t.log.error(r,`Batch execution error`),n.status(500).send(e.i(r instanceof Error?r.message:`Batch execution failed`,500))}}),r.get(`${f}/meta`,async(t,n)=>{try{return e.a(v.getMetadata())}catch(r){return t.log.error(r,`Metadata error`),n.status(500).send(e.i(r instanceof Error?r.message:`Failed to fetch metadata`,500))}}),r.post(`${f}/sql`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(t,n)=>{try{let r=t.body,i=await _(t),a=v.validateQuery(r);if(!a.isValid)return n.status(400).send(e.i(`Query validation failed: ${a.errors.join(`, `)}`,400));let o=r.measures?.[0]||r.dimensions?.[0];if(!o)return n.status(400).send(e.i(`No measures or dimensions specified`,400));let s=o.split(`.`)[0];return e.o(r,await v.generateSQL(s,r,i))}catch(r){return t.log.error({err:String(r).replace(/\n|\r/g,``)},`SQL generation error`),n.status(500).send(e.i(r instanceof Error?r.message:`SQL generation failed`,500))}}),r.get(`${f}/sql`,{schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}},async(t,n)=>{try{let{query:r}=t.query,i=JSON.parse(r),a=await _(t),o=v.validateQuery(i);if(!o.isValid)return n.status(400).send(e.i(`Query validation failed: ${o.errors.join(`, `)}`,400));let s=i.measures?.[0]||i.dimensions?.[0];if(!s)return n.status(400).send(e.i(`No measures or dimensions specified`,400));let c=s.split(`.`)[0];return e.o(i,await v.generateSQL(c,i,a))}catch(r){return t.log.error({err:String(r).replace(/\n|\r/g,``)},`SQL generation error`),n.status(500).send(e.i(r instanceof Error?r.message:`SQL generation failed`,500))}}),r.post(`${f}/dry-run`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(t,n)=>{try{let n=t.body;return await e.u(n.query||n,await _(t),v)}catch(e){return t.log.error(e,`Dry-run error`),n.status(400).send({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}),r.get(`${f}/dry-run`,{schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}},async(t,n)=>{try{let{query:n}=t.query;return await e.u(JSON.parse(n),await _(t),v)}catch(e){return t.log.error(e,`Dry-run error`),n.status(400).send({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1})}}),r.post(`${f}/explain`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(e,t)=>{try{let n=e.body,r=n.query||n,i=n.options||{},a=await _(e),o=v.validateQuery(r);return o.isValid?await v.explainQuery(r,a,i):t.status(400).send({error:`Query validation failed: ${o.errors.join(`, `)}`})}catch(n){return e.log.error(n,`Explain error`),t.status(500).send({error:n instanceof Error?n.message:`Explain query failed`})}}),g&&r.post(`${f}/agent/chat`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(e,t)=>{try{let{handleAgentChat:n}=await Promise.resolve().then(()=>require("../handler-Cn0dOctE.cjs")),{message:r,sessionId:i,history:a}=e.body;if(!r||typeof r!=`string`)return t.status(400).send({error:`message is required and must be a string`});let o=(g.apiKey||``).trim();if(g.allowClientApiKey){let t=e.headers[`x-agent-api-key`];t&&(o=t.trim())}if(!o)return t.status(401).send({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`});let s=g.allowClientApiKey?e.headers[`x-agent-provider`]:void 0,c=g.allowClientApiKey?e.headers[`x-agent-model`]:void 0,l=g.allowClientApiKey?e.headers[`x-agent-provider-endpoint`]:void 0,u=await _(e),d=g.buildSystemContext?.(u);t.raw.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});try{let e=n({message:r,sessionId:i,history:a,semanticLayer:v,securityContext:u,agentConfig:g,apiKey:o,systemContext:d,providerOverride:s,modelOverride:c,baseURLOverride:l});for await(let n of e)t.raw.write(`data: ${JSON.stringify(n)}\n\n`)}catch(e){let n={type:`error`,data:{message:e instanceof Error?e.message:`Stream failed`}};t.raw.write(`data: ${JSON.stringify(n)}\n\n`)}finally{t.raw.end()}}catch(n){if(e.log.error(n,`Agent chat error`),!t.raw.headersSent)return t.status(500).send({error:n instanceof Error?n.message:`Agent chat failed`})}}),h.enabled!==!1){let e=n.o(v,h.resources),t=n.y(h.prompts),i=n.v(h.instructions),a=h.basePath??`/mcp`;r.post(`${a}`,{bodyLimit:p,schema:{body:{type:`object`,additionalProperties:!0}}},async(r,a)=>{if(h.resourceMetadataUrl&&!n.u(r.headers.authorization))return a.header(`WWW-Authenticate`,n.c(h.resourceMetadataUrl)),a.status(401).send({error:`Bearer token required`});let o=n.S(r.headers.origin,h.allowedOrigins?{allowedOrigins:h.allowedOrigins}:{});if(!o.valid)return a.status(403).send(n.i(null,-32600,o.reason));let s=r.headers.accept;if(!n.x(s))return a.status(400).send(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`));let c=n.h(r.headers);if(!c.ok)return a.status(426).send({error:`Unsupported MCP protocol version`,supported:c.supported});let l=n.g(r.body);if(!l)return a.status(400).send(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`));let u=n.C(s),d=l.method===`initialize`;try{let o=await n.l(l.method,l.params,{semanticLayer:v,extractSecurityContext:(e,t)=>_(e),rawRequest:r,rawResponse:a,negotiatedProtocol:c.negotiated,resources:e,prompts:t,instructions:i,appEnabled:!!h.app,appConfig:typeof h.app==`object`?h.app:void 0,serverName:h.serverName});if(n.m(l))return a.status(202).send();let s=d&&o&&typeof o==`object`&&`sessionId`in o?o.sessionId:void 0;s&&a.header(n.r,s);let f=n.a(l.id??null,o);if(u){let e=n._();a.header(`Content-Type`,`text/event-stream`).header(`Cache-Control`,`no-cache`).header(`Connection`,`keep-alive`).send(`id: ${e}\n\n${n.b(f,e)}`);return}return a.send(f)}catch(e){if(n.m(l))return r.log.error({err:String(e).replace(/\n|\r/g,``)},`MCP notification processing error`),a.status(202).send();r.log.error({err:String(e).replace(/\n|\r/g,``)},`MCP RPC error`);let t=e?.code??-32603,i=e?.data,o=e.message||`MCP request failed`,s=n.i(l.id??null,t,o,i);if(u){let e=n._();a.header(`Content-Type`,`text/event-stream`).header(`Cache-Control`,`no-cache`).header(`Connection`,`keep-alive`).send(`id: ${e}\n\n${n.b(s,e)}`);return}return a.send(s)}}),r.get(`${a}`,async(e,t)=>{if(h.resourceMetadataUrl&&!n.u(e.headers.authorization))return t.header(`WWW-Authenticate`,n.c(h.resourceMetadataUrl)),t.status(401).send({error:`Bearer token required`});let r=n._();t.raw.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}),t.raw.write(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},r,15e3));let i=setInterval(()=>{t.raw.write(`: keep-alive
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils-_whV4fXL.cjs"),t=require("../compiler-ChGO4ZLU.cjs"),n=require("../mcp-transport-CNIPoe1i.cjs"),r=require("../core-F1pCQPde.cjs");function i(e,t){let n=e.headers[t.toLowerCase()];return Array.isArray(n)?n[0]:n}function a(e,t){return{getHeader:t=>i(e,t),getBody:async()=>e.body,getQueryParam:t=>e.query?.[t],send:(e,n)=>t.status(e).send(n),setHeader:(e,n)=>{t.header(e,n)},sendEmpty:e=>t.status(e).send(),sendSse:(e,n)=>(t.header(`Content-Type`,`text/event-stream`),t.header(`Cache-Control`,`no-cache`),t.header(`Connection`,`keep-alive`),t.status(e).send(n))}}var o=function(o,s,c){let{cubes:l,drizzle:u,schema:d,extractSecurityContext:f,engineType:p,cors:m,basePath:h=`/cubejs-api/v1`,bodyLimit:g=10485760,cache:_,mcp:v={enabled:!0},agent:y}=s;if(!l||l.length===0)return c(Error(`At least one cube must be provided in the cubes array`));if(m){let e={...m,allowedHeaders:r.i(m.allowedHeaders)};o.register(import(`@fastify/cors`),e)}o.addHook(`onRequest`,async(e,t)=>{e.method===`POST`&&(e.body=void 0)});let b=new t.t({drizzle:u,schema:d,engineType:p,cache:_,rlsSetup:s.rlsSetup});l.forEach(e=>{b.registerCube(e)});let x=r.t({semanticLayer:b,onError:e=>o.log.error(e,`Query execution error`),mcp:v}),S=e=>()=>f(e),C={bodyLimit:g,schema:{body:{type:`object`,additionalProperties:!0}}},w={schema:{querystring:{type:`object`,properties:{query:{type:`string`}},required:[`query`]}}};if(o.post(`${h}/load`,C,(e,t)=>x.handleLoadPost(a(e,t),S(e))),o.get(`${h}/load`,w,(e,t)=>x.handleLoadGet(a(e,t),S(e))),o.post(`${h}/batch`,{bodyLimit:g,schema:{body:{type:`object`,required:[`queries`],properties:{queries:{type:`array`,items:{type:`object`}}}}}},(e,t)=>x.handleBatchPost(a(e,t),S(e))),o.get(`${h}/meta`,(e,t)=>x.handleMetaGet(a(e,t))),o.post(`${h}/sql`,C,(e,t)=>x.handleSqlPost(a(e,t),S(e))),o.get(`${h}/sql`,w,(e,t)=>x.handleSqlGet(a(e,t),S(e))),o.post(`${h}/dry-run`,C,(e,t)=>x.handleDryRunPost(a(e,t),S(e))),o.get(`${h}/dry-run`,w,(e,t)=>x.handleDryRunGet(a(e,t),S(e))),o.post(`${h}/explain`,C,(e,t)=>x.handleExplainPost(a(e,t),S(e))),y&&o.post(`${h}/agent/chat`,{bodyLimit:g,schema:{body:{type:`object`,additionalProperties:!0}}},async(e,t)=>{try{let{handleAgentChat:n}=await Promise.resolve().then(()=>require("../handler-DRZb2ip6.cjs")),{message:a,sessionId:o,history:s}=e.body;if(!a||typeof a!=`string`)return t.status(400).send({error:`message is required and must be a string`});let c=(y.apiKey||``).trim();if(y.allowClientApiKey){let t=i(e,`x-agent-api-key`);t&&(c=t.trim())}if(!c)return t.status(401).send({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`});let l=y.allowClientApiKey?i(e,`x-agent-provider`):void 0,u=y.allowClientApiKey?i(e,`x-agent-model`):void 0,d=y.allowClientApiKey?i(e,`x-agent-provider-endpoint`):void 0,p=r.r(await f(e),t=>i(e,t)),m=y.buildSystemContext?.(p);t.raw.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});try{let e=n({message:a,sessionId:o,history:s,semanticLayer:b,securityContext:p,agentConfig:y,apiKey:c,systemContext:m,providerOverride:l,modelOverride:u,baseURLOverride:d});for await(let n of e)t.raw.write(`data: ${JSON.stringify(n)}\n\n`)}catch(e){let n={type:`error`,data:{message:e instanceof Error?e.message:`Stream failed`}};t.raw.write(`data: ${JSON.stringify(n)}\n\n`)}finally{t.raw.end()}}catch(n){if(e.log.error(n,`Agent chat error`),!t.raw.headersSent)return t.status(500).send({error:n instanceof Error?n.message:`Agent chat failed`})}}),v.enabled!==!1){let e=v.basePath??`/mcp`;o.post(`${e}`,{bodyLimit:g,schema:{body:{type:`object`,additionalProperties:!0}}},(e,t)=>x.handleMcpPost(a(e,t),S(e))),o.get(`${e}`,async(e,t)=>{if(v.resourceMetadataUrl&&!n.u(e.headers.authorization))return t.header(`WWW-Authenticate`,n.c(v.resourceMetadataUrl)),t.status(401).send({error:`Bearer token required`});let r=n._();t.raw.writeHead(200,{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}),t.raw.write(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},r,15e3));let i=setInterval(()=>{t.raw.write(`: keep-alive
2
2
 
3
- `)},15e3);e.raw.on(`close`,()=>{clearInterval(i)})}),r.delete(`${a}`,async(e,t)=>h.resourceMetadataUrl&&!n.u(e.headers.authorization)?(t.header(`WWW-Authenticate`,n.c(h.resourceMetadataUrl)),t.status(401).send({error:`Bearer token required`})):t.status(405).send({error:`Session termination not supported`}))}r.setErrorHandler(async(t,n,r)=>(n.log.error(t,`Fastify cube adapter error`),r.statusCode<400&&r.status(500),e.i(t instanceof Error?t:String(t),r.statusCode))),a()};async function i(e,t){await e.register(r,t)}function a(e){let t=require("fastify")({logger:!0});return t.register(r,e),t}exports.createCubeApp=a,exports.cubePlugin=r,exports.registerCubeRoutes=i;
3
+ `)},15e3);e.raw.on(`close`,()=>{clearInterval(i)})}),o.delete(`${e}`,async(e,t)=>v.resourceMetadataUrl&&!n.u(e.headers.authorization)?(t.header(`WWW-Authenticate`,n.c(v.resourceMetadataUrl)),t.status(401).send({error:`Bearer token required`})):t.status(405).send({error:`Session termination not supported`}))}o.setErrorHandler(async(t,n,r)=>(n.log.error(t,`Fastify cube adapter error`),r.statusCode<400&&r.status(500),e.i(t instanceof Error?t:String(t),r.statusCode))),c()};async function s(e,t){await e.register(o,t)}function c(e){let t=require("fastify")({logger:!0});return t.register(o,e),t}exports.createCubeApp=c,exports.cubePlugin=o,exports.registerCubeRoutes=s;
@@ -1,66 +1,65 @@
1
- import { a as e, i as t, k as n, l as r, o as i, r as a, u as o } from "../utils-BPWZsX7k.js";
2
- import { i as s, n as c, r as l, t as u } from "../locale-DDvZDFVn.js";
3
- import { C as d, S as f, _ as p, a as m, b as h, c as g, g as _, h as v, i as y, l as b, m as x, o as S, r as C, u as w, v as T, x as E, y as D } from "../mcp-transport-Dfuj4j4q.js";
1
+ import { i as e, k as t } from "../utils-BPWZsX7k.js";
2
+ import { t as n } from "../compiler-LKTN9PTt.js";
3
+ import { _ as r, b as i, c as a, u as o } from "../mcp-transport-Bw_zqky2.js";
4
+ import { i as s, r as c, t as l } from "../core-Bbchr0ui.js";
4
5
  //#region src/adapters/fastify/index.ts
5
- var O = function(n, O, k) {
6
- let { cubes: A, drizzle: j, schema: M, extractSecurityContext: N, engineType: P, cors: F, basePath: I = "/cubejs-api/v1", bodyLimit: L = 10485760, cache: R, mcp: z = { enabled: !0 }, agent: B } = O;
7
- if (!A || A.length === 0) return k(/* @__PURE__ */ Error("At least one cube must be provided in the cubes array"));
8
- let V = async (e) => l(await N(e), c((t) => e.headers[t.toLowerCase()]));
9
- if (F) {
6
+ function u(e, t) {
7
+ let n = e.headers[t.toLowerCase()];
8
+ return Array.isArray(n) ? n[0] : n;
9
+ }
10
+ function d(e, t) {
11
+ return {
12
+ getHeader: (t) => u(e, t),
13
+ getBody: async () => e.body,
14
+ getQueryParam: (t) => e.query?.[t],
15
+ send: (e, n) => t.status(e).send(n),
16
+ setHeader: (e, n) => {
17
+ t.header(e, n);
18
+ },
19
+ sendEmpty: (e) => t.status(e).send(),
20
+ sendSse: (e, n) => (t.header("Content-Type", "text/event-stream"), t.header("Cache-Control", "no-cache"), t.header("Connection", "keep-alive"), t.status(e).send(n))
21
+ };
22
+ }
23
+ var f = function(t, f, p) {
24
+ let { cubes: m, drizzle: h, schema: g, extractSecurityContext: _, engineType: v, cors: y, basePath: b = "/cubejs-api/v1", bodyLimit: x = 10485760, cache: S, mcp: C = { enabled: !0 }, agent: w } = f;
25
+ if (!m || m.length === 0) return p(/* @__PURE__ */ Error("At least one cube must be provided in the cubes array"));
26
+ if (y) {
10
27
  let e = {
11
- ...F,
12
- allowedHeaders: u(F.allowedHeaders)
28
+ ...y,
29
+ allowedHeaders: s(y.allowedHeaders)
13
30
  };
14
- n.register(import("@fastify/cors"), e);
31
+ t.register(import("@fastify/cors"), e);
15
32
  }
16
- n.addHook("onRequest", async (e, t) => {
33
+ t.addHook("onRequest", async (e, t) => {
17
34
  e.method === "POST" && (e.body = void 0);
18
35
  });
19
- let H = new s({
20
- drizzle: j,
21
- schema: M,
22
- engineType: P,
23
- cache: R,
24
- rlsSetup: O.rlsSetup
36
+ let T = new n({
37
+ drizzle: h,
38
+ schema: g,
39
+ engineType: v,
40
+ cache: S,
41
+ rlsSetup: f.rlsSetup
25
42
  });
26
- if (A.forEach((e) => {
27
- H.registerCube(e);
28
- }), n.post(`${I}/load`, {
29
- bodyLimit: L,
43
+ m.forEach((e) => {
44
+ T.registerCube(e);
45
+ });
46
+ let E = l({
47
+ semanticLayer: T,
48
+ onError: (e) => t.log.error(e, "Query execution error"),
49
+ mcp: C
50
+ }), D = (e) => () => _(e), O = {
51
+ bodyLimit: x,
30
52
  schema: { body: {
31
53
  type: "object",
32
54
  additionalProperties: !0
33
55
  } }
34
- }, async (e, n) => {
35
- try {
36
- let r = e.body, i = r.query || r, o = await V(e), s = H.validateQuery(i);
37
- if (!s.isValid) return n.status(400).send(t(`Query validation failed: ${s.errors.join(", ")}`, 400));
38
- let c = e.headers["x-cache-control"] === "no-cache";
39
- return a(i, await H.executeMultiCubeQuery(i, o, { skipCache: c }), H);
40
- } catch (r) {
41
- return e.log.error(r, "Query execution error"), n.status(500).send(t(r instanceof Error ? r.message : "Query execution failed", 500));
42
- }
43
- }), n.get(`${I}/load`, { schema: { querystring: {
56
+ }, k = { schema: { querystring: {
44
57
  type: "object",
45
58
  properties: { query: { type: "string" } },
46
59
  required: ["query"]
47
- } } }, async (e, n) => {
48
- try {
49
- let { query: r } = e.query, i;
50
- try {
51
- i = JSON.parse(r);
52
- } catch {
53
- return n.status(400).send(t("Invalid JSON in query parameter", 400));
54
- }
55
- let o = await V(e), s = H.validateQuery(i);
56
- if (!s.isValid) return n.status(400).send(t(`Query validation failed: ${s.errors.join(", ")}`, 400));
57
- let c = e.headers["x-cache-control"] === "no-cache", l = await H.executeMultiCubeQuery(i, o, { skipCache: c });
58
- return a(i, l, H);
59
- } catch (r) {
60
- return e.log.error(r, "Query execution error"), n.status(500).send(t(r instanceof Error ? r.message : "Query execution failed", 500));
61
- }
62
- }), n.post(`${I}/batch`, {
63
- bodyLimit: L,
60
+ } } };
61
+ if (t.post(`${b}/load`, O, (e, t) => E.handleLoadPost(d(e, t), D(e))), t.get(`${b}/load`, k, (e, t) => E.handleLoadGet(d(e, t), D(e))), t.post(`${b}/batch`, {
62
+ bodyLimit: x,
64
63
  schema: { body: {
65
64
  type: "object",
66
65
  required: ["queries"],
@@ -69,111 +68,23 @@ var O = function(n, O, k) {
69
68
  items: { type: "object" }
70
69
  } }
71
70
  } }
72
- }, async (e, n) => {
73
- try {
74
- let { queries: i } = e.body;
75
- return !i || !Array.isArray(i) ? n.status(400).send(t("Request body must contain a \"queries\" array", 400)) : i.length === 0 ? n.status(400).send(t("Queries array cannot be empty", 400)) : await r(i, await V(e), H, { skipCache: e.headers["x-cache-control"] === "no-cache" });
76
- } catch (r) {
77
- return e.log.error(r, "Batch execution error"), n.status(500).send(t(r instanceof Error ? r.message : "Batch execution failed", 500));
78
- }
79
- }), n.get(`${I}/meta`, async (n, r) => {
80
- try {
81
- return e(H.getMetadata());
82
- } catch (e) {
83
- return n.log.error(e, "Metadata error"), r.status(500).send(t(e instanceof Error ? e.message : "Failed to fetch metadata", 500));
84
- }
85
- }), n.post(`${I}/sql`, {
86
- bodyLimit: L,
87
- schema: { body: {
88
- type: "object",
89
- additionalProperties: !0
90
- } }
91
- }, async (e, n) => {
92
- try {
93
- let r = e.body, a = await V(e), o = H.validateQuery(r);
94
- if (!o.isValid) return n.status(400).send(t(`Query validation failed: ${o.errors.join(", ")}`, 400));
95
- let s = r.measures?.[0] || r.dimensions?.[0];
96
- if (!s) return n.status(400).send(t("No measures or dimensions specified", 400));
97
- let c = s.split(".")[0];
98
- return i(r, await H.generateSQL(c, r, a));
99
- } catch (r) {
100
- return e.log.error({ err: String(r).replace(/\n|\r/g, "") }, "SQL generation error"), n.status(500).send(t(r instanceof Error ? r.message : "SQL generation failed", 500));
101
- }
102
- }), n.get(`${I}/sql`, { schema: { querystring: {
103
- type: "object",
104
- properties: { query: { type: "string" } },
105
- required: ["query"]
106
- } } }, async (e, n) => {
107
- try {
108
- let { query: r } = e.query, a = JSON.parse(r), o = await V(e), s = H.validateQuery(a);
109
- if (!s.isValid) return n.status(400).send(t(`Query validation failed: ${s.errors.join(", ")}`, 400));
110
- let c = a.measures?.[0] || a.dimensions?.[0];
111
- if (!c) return n.status(400).send(t("No measures or dimensions specified", 400));
112
- let l = c.split(".")[0];
113
- return i(a, await H.generateSQL(l, a, o));
114
- } catch (r) {
115
- return e.log.error({ err: String(r).replace(/\n|\r/g, "") }, "SQL generation error"), n.status(500).send(t(r instanceof Error ? r.message : "SQL generation failed", 500));
116
- }
117
- }), n.post(`${I}/dry-run`, {
118
- bodyLimit: L,
71
+ }, (e, t) => E.handleBatchPost(d(e, t), D(e))), t.get(`${b}/meta`, (e, t) => E.handleMetaGet(d(e, t))), t.post(`${b}/sql`, O, (e, t) => E.handleSqlPost(d(e, t), D(e))), t.get(`${b}/sql`, k, (e, t) => E.handleSqlGet(d(e, t), D(e))), t.post(`${b}/dry-run`, O, (e, t) => E.handleDryRunPost(d(e, t), D(e))), t.get(`${b}/dry-run`, k, (e, t) => E.handleDryRunGet(d(e, t), D(e))), t.post(`${b}/explain`, O, (e, t) => E.handleExplainPost(d(e, t), D(e))), w && t.post(`${b}/agent/chat`, {
72
+ bodyLimit: x,
119
73
  schema: { body: {
120
74
  type: "object",
121
75
  additionalProperties: !0
122
76
  } }
123
77
  }, async (e, t) => {
124
78
  try {
125
- let t = e.body;
126
- return await o(t.query || t, await V(e), H);
127
- } catch (n) {
128
- return e.log.error(n, "Dry-run error"), t.status(400).send({
129
- error: n instanceof Error ? n.message : "Dry-run validation failed",
130
- valid: !1
131
- });
132
- }
133
- }), n.get(`${I}/dry-run`, { schema: { querystring: {
134
- type: "object",
135
- properties: { query: { type: "string" } },
136
- required: ["query"]
137
- } } }, async (e, t) => {
138
- try {
139
- let { query: t } = e.query;
140
- return await o(JSON.parse(t), await V(e), H);
141
- } catch (n) {
142
- return e.log.error(n, "Dry-run error"), t.status(400).send({
143
- error: n instanceof Error ? n.message : "Dry-run validation failed",
144
- valid: !1
145
- });
146
- }
147
- }), n.post(`${I}/explain`, {
148
- bodyLimit: L,
149
- schema: { body: {
150
- type: "object",
151
- additionalProperties: !0
152
- } }
153
- }, async (e, t) => {
154
- try {
155
- let n = e.body, r = n.query || n, i = n.options || {}, a = await V(e), o = H.validateQuery(r);
156
- return o.isValid ? await H.explainQuery(r, a, i) : t.status(400).send({ error: `Query validation failed: ${o.errors.join(", ")}` });
157
- } catch (n) {
158
- return e.log.error(n, "Explain error"), t.status(500).send({ error: n instanceof Error ? n.message : "Explain query failed" });
159
- }
160
- }), B && n.post(`${I}/agent/chat`, {
161
- bodyLimit: L,
162
- schema: { body: {
163
- type: "object",
164
- additionalProperties: !0
165
- } }
166
- }, async (e, t) => {
167
- try {
168
- let { handleAgentChat: n } = await import("../handler-CfgE0JSL.js"), { message: r, sessionId: i, history: a } = e.body;
79
+ let { handleAgentChat: n } = await import("../handler-u8FyzPBT.js"), { message: r, sessionId: i, history: a } = e.body;
169
80
  if (!r || typeof r != "string") return t.status(400).send({ error: "message is required and must be a string" });
170
- let o = (B.apiKey || "").trim();
171
- if (B.allowClientApiKey) {
172
- let t = e.headers["x-agent-api-key"];
81
+ let o = (w.apiKey || "").trim();
82
+ if (w.allowClientApiKey) {
83
+ let t = u(e, "x-agent-api-key");
173
84
  t && (o = t.trim());
174
85
  }
175
86
  if (!o) return t.status(401).send({ error: "No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header." });
176
- let s = B.allowClientApiKey ? e.headers["x-agent-provider"] : void 0, c = B.allowClientApiKey ? e.headers["x-agent-model"] : void 0, l = B.allowClientApiKey ? e.headers["x-agent-provider-endpoint"] : void 0, u = await V(e), d = B.buildSystemContext?.(u);
87
+ let s = w.allowClientApiKey ? u(e, "x-agent-provider") : void 0, l = w.allowClientApiKey ? u(e, "x-agent-model") : void 0, d = w.allowClientApiKey ? u(e, "x-agent-provider-endpoint") : void 0, f = c(await _(e), (t) => u(e, t)), p = w.buildSystemContext?.(f);
177
88
  t.raw.writeHead(200, {
178
89
  "Content-Type": "text/event-stream",
179
90
  "Cache-Control": "no-cache",
@@ -184,14 +95,14 @@ var O = function(n, O, k) {
184
95
  message: r,
185
96
  sessionId: i,
186
97
  history: a,
187
- semanticLayer: H,
188
- securityContext: u,
189
- agentConfig: B,
98
+ semanticLayer: T,
99
+ securityContext: f,
100
+ agentConfig: w,
190
101
  apiKey: o,
191
- systemContext: d,
102
+ systemContext: p,
192
103
  providerOverride: s,
193
- modelOverride: c,
194
- baseURLOverride: l
104
+ modelOverride: l,
105
+ baseURLOverride: d
195
106
  });
196
107
  for await (let n of e) t.raw.write(`data: ${JSON.stringify(n)}\n\n`);
197
108
  } catch (e) {
@@ -206,91 +117,42 @@ var O = function(n, O, k) {
206
117
  } catch (n) {
207
118
  if (e.log.error(n, "Agent chat error"), !t.raw.headersSent) return t.status(500).send({ error: n instanceof Error ? n.message : "Agent chat failed" });
208
119
  }
209
- }), z.enabled !== !1) {
210
- let e = S(H, z.resources), t = D(z.prompts), r = T(z.instructions), i = z.basePath ?? "/mcp";
211
- n.post(`${i}`, {
212
- bodyLimit: L,
120
+ }), C.enabled !== !1) {
121
+ let e = C.basePath ?? "/mcp";
122
+ t.post(`${e}`, {
123
+ bodyLimit: x,
213
124
  schema: { body: {
214
125
  type: "object",
215
126
  additionalProperties: !0
216
127
  } }
217
- }, async (n, i) => {
218
- if (z.resourceMetadataUrl && !w(n.headers.authorization)) return i.header("WWW-Authenticate", g(z.resourceMetadataUrl)), i.status(401).send({ error: "Bearer token required" });
219
- let a = f(n.headers.origin, z.allowedOrigins ? { allowedOrigins: z.allowedOrigins } : {});
220
- if (!a.valid) return i.status(403).send(y(null, -32600, a.reason));
221
- let o = n.headers.accept;
222
- if (!E(o)) return i.status(400).send(y(null, -32600, "Accept header must include both application/json and text/event-stream"));
223
- let s = v(n.headers);
224
- if (!s.ok) return i.status(426).send({
225
- error: "Unsupported MCP protocol version",
226
- supported: s.supported
227
- });
228
- let c = _(n.body);
229
- if (!c) return i.status(400).send(y(null, -32600, "Invalid JSON-RPC 2.0 request"));
230
- let l = d(o), u = c.method === "initialize";
231
- try {
232
- let a = await b(c.method, c.params, {
233
- semanticLayer: H,
234
- extractSecurityContext: (e, t) => V(e),
235
- rawRequest: n,
236
- rawResponse: i,
237
- negotiatedProtocol: s.negotiated,
238
- resources: e,
239
- prompts: t,
240
- instructions: r,
241
- appEnabled: !!z.app,
242
- appConfig: typeof z.app == "object" ? z.app : void 0,
243
- serverName: z.serverName
244
- });
245
- if (x(c)) return i.status(202).send();
246
- let o = u && a && typeof a == "object" && "sessionId" in a ? a.sessionId : void 0;
247
- o && i.header(C, o);
248
- let d = m(c.id ?? null, a);
249
- if (l) {
250
- let e = p();
251
- i.header("Content-Type", "text/event-stream").header("Cache-Control", "no-cache").header("Connection", "keep-alive").send(`id: ${e}\n\n${h(d, e)}`);
252
- return;
253
- }
254
- return i.send(d);
255
- } catch (e) {
256
- if (x(c)) return n.log.error({ err: String(e).replace(/\n|\r/g, "") }, "MCP notification processing error"), i.status(202).send();
257
- n.log.error({ err: String(e).replace(/\n|\r/g, "") }, "MCP RPC error");
258
- let t = e?.code ?? -32603, r = e?.data, a = e.message || "MCP request failed", o = y(c.id ?? null, t, a, r);
259
- if (l) {
260
- let e = p();
261
- i.header("Content-Type", "text/event-stream").header("Cache-Control", "no-cache").header("Connection", "keep-alive").send(`id: ${e}\n\n${h(o, e)}`);
262
- return;
263
- }
264
- return i.send(o);
265
- }
266
- }), n.get(`${i}`, async (e, t) => {
267
- if (z.resourceMetadataUrl && !w(e.headers.authorization)) return t.header("WWW-Authenticate", g(z.resourceMetadataUrl)), t.status(401).send({ error: "Bearer token required" });
268
- let n = p();
128
+ }, (e, t) => E.handleMcpPost(d(e, t), D(e))), t.get(`${e}`, async (e, t) => {
129
+ if (C.resourceMetadataUrl && !o(e.headers.authorization)) return t.header("WWW-Authenticate", a(C.resourceMetadataUrl)), t.status(401).send({ error: "Bearer token required" });
130
+ let n = r();
269
131
  t.raw.writeHead(200, {
270
132
  "Content-Type": "text/event-stream",
271
133
  "Cache-Control": "no-cache",
272
134
  Connection: "keep-alive"
273
- }), t.raw.write(h({
135
+ }), t.raw.write(i({
274
136
  jsonrpc: "2.0",
275
137
  method: "mcp/ready",
276
138
  params: { protocol: "streamable-http" }
277
139
  }, n, 15e3));
278
- let r = setInterval(() => {
140
+ let s = setInterval(() => {
279
141
  t.raw.write(": keep-alive\n\n");
280
142
  }, 15e3);
281
143
  e.raw.on("close", () => {
282
- clearInterval(r);
144
+ clearInterval(s);
283
145
  });
284
- }), n.delete(`${i}`, async (e, t) => z.resourceMetadataUrl && !w(e.headers.authorization) ? (t.header("WWW-Authenticate", g(z.resourceMetadataUrl)), t.status(401).send({ error: "Bearer token required" })) : t.status(405).send({ error: "Session termination not supported" }));
146
+ }), t.delete(`${e}`, async (e, t) => C.resourceMetadataUrl && !o(e.headers.authorization) ? (t.header("WWW-Authenticate", a(C.resourceMetadataUrl)), t.status(401).send({ error: "Bearer token required" })) : t.status(405).send({ error: "Session termination not supported" }));
285
147
  }
286
- n.setErrorHandler(async (e, n, r) => (n.log.error(e, "Fastify cube adapter error"), r.statusCode < 400 && r.status(500), t(e instanceof Error ? e : String(e), r.statusCode))), k();
148
+ t.setErrorHandler(async (t, n, r) => (n.log.error(t, "Fastify cube adapter error"), r.statusCode < 400 && r.status(500), e(t instanceof Error ? t : String(t), r.statusCode))), p();
287
149
  };
288
- async function k(e, t) {
289
- await e.register(O, t);
150
+ async function p(e, t) {
151
+ await e.register(f, t);
290
152
  }
291
- function A(e) {
292
- let t = n("fastify")({ logger: !0 });
293
- return t.register(O, e), t;
153
+ function m(e) {
154
+ let n = t("fastify")({ logger: !0 });
155
+ return n.register(f, e), n;
294
156
  }
295
157
  //#endregion
296
- export { A as createCubeApp, O as cubePlugin, k as registerCubeRoutes };
158
+ export { m as createCubeApp, f as cubePlugin, p as registerCubeRoutes };
@@ -0,0 +1,25 @@
1
+ const e=require("./utils-_whV4fXL.cjs"),t=require("./chartConfigHelpers-DHQB-_v5.cjs");function n(e,t){if(!(!t.measures||t.measures.length===0)){e.push(``),e.push(`**Measures:**`);for(let n of t.measures){let r=n.description?` - ${n.description}`:``;e.push(`- \`${t.name}.${n.name}\` (${n.type})${r}`)}}}function r(e,t){if(!(!t.dimensions||t.dimensions.length===0)){e.push(``),e.push(`**Dimensions:**`);for(let n of t.dimensions){let r=n.description?` - ${n.description}`:``;e.push(`- \`${t.name}.${n.name}\` (${n.type})${r}`)}}}function i(e,t){if(!(!t.relationships||t.relationships.length===0)){e.push(``),e.push(`**Joins:**`);for(let n of t.relationships)e.push(`- → \`${n.targetCube}\` (${n.relationship})`)}}function a(e,t){t.meta?.eventStream&&(e.push(``),e.push(`**Event Stream:** Yes (supports funnel, flow, retention queries)`),t.meta.eventStream.bindingKey&&e.push(`- Binding key: \`${t.name}.${t.meta.eventStream.bindingKey}\``),t.meta.eventStream.timeDimension&&e.push(`- Time dimension: \`${t.name}.${t.meta.eventStream.timeDimension}\``))}function o(e){if(e.length===0)return`No cubes are currently available.`;let t=[`## Available Cubes`,``];for(let o of e)t.push(`### ${o.name}`),o.description&&t.push(o.description),n(t,o),r(t,o),i(t,o),a(t,o),t.push(``);return t.join(`
2
+ `)}function s(e){return e.messages.map(e=>e.content.text).join(`
3
+
4
+ `)}function c(t){return[`# Drizzle Cube Analytics Agent`,``,`You are an analytics agent that helps users explore and visualize data.`,`You have access to a semantic layer with cubes (data models) that you can query.`,``,`## Your Workflow`,``,`For EACH insight, follow this cycle — do NOT batch all queries first:`,``,"1. **Discover** available cubes using `discover_cubes` (once at the start)",`2. **For each analysis point**, repeat this cycle:`," a. `execute_query` — get the data"," b. `add_markdown` — explain the results and insight"," c. `add_portlet` — visualize the results",``,`Call all three (query → markdown → portlet) in a single turn before moving on to the next analysis.`,`Do NOT run multiple queries first and add charts later — the user sees results in real-time.`,``,`## Important Guidelines`,``,`- ALWAYS discover cubes first before attempting queries`,"- Field names MUST be EXACTLY `CubeName.fieldName` — two parts separated by a single dot. Examples: `PullRequests.count`, `Teams.name`, `Employees.department`."," WRONG patterns that WILL FAIL: `Teams.Teams.name` (double-prefixed), `PullRequests.PullRequests.count` (double-prefixed), `PullRequests` (bare cube), `Teams_count` (underscore). Use the EXACT field names from discover results — copy them verbatim, do not prefix them again.",`- Order keys MUST be one of the measures or dimensions already listed in that query. You CANNOT order by a field that is not in measures or dimensions — add it to measures first, or remove it from order.`,"- After EVERY `execute_query`, IMMEDIATELY call `add_markdown` and `add_portlet` in the SAME turn — never defer visualizations to a later turn",`- Choose appropriate chart types: bar for categories, line for trends, table for detailed data`,`- If a query fails, explain the error and try an alternative approach`,``,`## Output Format Rules`,``,`### CRITICAL: Always think before acting`,`- EVERY single turn MUST begin with a text message (1-2 sentences) BEFORE any tool calls. This is your #1 rule — never violate it.`,`- This applies to EVERY turn, including turns where you are adding visualizations or explanations to the notebook.`,`- Even when adding multiple charts in sequence, each turn must start with a brief status like "Now I'll chart the productivity breakdown." or "Next, let me show the department comparison."`,`- Example good turn: "Let me see what data is available." → discover_cubes`,`- Example good turn: "I'll add a chart showing the top employees." → add_markdown → add_portlet`,`- Example bad turn: (no text) → add_portlet ← NEVER do this`,``,`### Text vs Notebook`,"- ALL analysis, findings, methodology, and insights MUST go through `add_markdown` tool calls — never in your text responses",`- Your text responses must be 1-2 short sentences (under 50 words) summarizing what you are about to do next — status updates only`,`- Never use markdown formatting (headers, bullets, bold, code blocks) in text responses — plain sentences only`,`- Write text responses as a friendly analyst would — use plain business language the user understands`,`- NEVER mention internal terms like "cube", "query syntax", "field names", "measures", "dimensions", "portlet", "prefix format", or tool names in text responses`,`- Instead of "Let me correct the query syntax and retry" → "Let me fix that and try again"`,`- Instead of "I'll query the PullRequests cube" → "I'll look at the pull request data"`,`- Instead of "Adding a portlet with the results" → "Here's a chart of the results"`,``,`### Notebook content rules`,"- Before each `add_portlet`, ALWAYS call `add_markdown` first to explain WHY you are adding this visualization and what it shows","- Before calling `add_portlet`, verify the query is valid: all fields in `order` must also appear in `measures` or `dimensions`",'- Never put data tables in markdown blocks — use `add_portlet` with chartType "table" instead',"- Think out loud in the notebook: use `add_markdown` to share your reasoning at each step so users can follow along",`- NEVER use emojis in text responses or markdown content — no 📊, 📈, ✅, 🔍, etc. Write in plain, professional language.`,``,`## Chart Selection Guide`,``,`Choose the chart type that best communicates the answer to the user's question. Think about what the data represents and what insight the user needs — do NOT default to the first option in this table. Consider the number of data points, whether values are categorical or temporal, and whether the user is comparing, trending, or summarizing.`,``,`| Intent / Data Shape | Chart Type |`,`|---|---|`,"| Compare discrete categories or rankings | `bar` |","| Trend over time (one or few series) | `line` |","| Trend over time showing volume/magnitude | `area` |","| Part-of-whole breakdown | `pie` (≤7 slices) |","| Correlation between two measures | `scatter` |","| Correlation with size/color third dimension | `bubble` |","| Intensity across two categorical dimensions | `heatmap` |","| Multi-variable comparison across categories | `radar` |","| Distribution/spread of values | `boxPlot` |","| Detailed row-level data or many columns | `table` |","| Single headline number — ONLY when user explicitly asks for a KPI card or single number | `kpiNumber` |","| Headline metric with period-over-period change — ONLY when user asks about change in a single metric | `kpiDelta` |",``,`Analysis-mode-specific chart types (require the corresponding analysis mode):`,``,`| Analysis Mode | Chart Type | Description |`,`|---|---|---|`,"| Funnel | `funnel` | Sequential step conversion bars with conversion rates |","| Flow | `sankey` | Flow diagram showing paths between states/steps |","| Flow | `sunburst` | Radial rings showing forward paths from a starting event |","| Retention | `retentionHeatmap` | Cohort × period retention matrix |","| Retention | `retentionCombined` | Retention with line chart, heatmap, or combined modes |",``,'**Chart selection priorities:** Default to `bar` for categories, `line` for time series, `table` for exploratory data. Use `kpiNumber`/`kpiDelta` only as a last resort — they are appropriate only when the user explicitly asks for a single headline number or KPI card. If the query returns multiple rows or the user asks a general question like "show me revenue", prefer `bar` or `table` over `kpiNumber`.',``,`## Chart Axis Configuration Rules`,``,"**Bar charts MUST have an xAxis.** Put a dimension in `chartConfig.xAxis` so bars have category labels. If your query has no dimensions, add one or use `table` instead.",``,"**Never duplicate xAxis in series.** Putting the same dimension in both `xAxis` and `series` creates a sparse, broken-looking chart. The `series` field is ONLY for splitting bars into grouped/stacked sub-series by a SECOND dimension.",``,`Correct bar chart examples:`,'- Categories only: `xAxis: ["Cube.category"], yAxis: ["Cube.count"]` — no series needed','- Grouped bars: `xAxis: ["Cube.category"], yAxis: ["Cube.count"], series: ["Cube.status"]` — series is a DIFFERENT dimension','- Multiple measures: `xAxis: ["Cube.category"], yAxis: ["Cube.count", "Cube.total"]` — each measure becomes a bar group',``,`Wrong:`,'- `xAxis: [], yAxis: ["Cube.avg1", "Cube.avg2"]` — missing xAxis, bars have no labels','- `xAxis: ["Cube.size"], series: ["Cube.size"]` — same field in both, creates sparse chart',``,"**Dual Y-axis for multi-measure charts.** When a `bar`, `line`, or `area` chart has 2+ measures with different scales (e.g. revenue in thousands vs conversion rate as a percentage), use `chartConfig.yAxisAssignment` to put them on separate axes:","```json",`{`,` "xAxis": ["Sales.month"],`,` "yAxis": ["Sales.revenue", "Sales.conversionRate"],`,` "yAxisAssignment": { "Sales.revenue": "left", "Sales.conversionRate": "right" }`,`}`,"```",`Only use dual axis when measures have genuinely different scales. If both measures share the same unit/scale, keep them on the same (left) axis — omit yAxisAssignment entirely.`,``,`## Analysis Mode Decision Tree`,``,`The default mode is **query** (standard measures/dimensions). Switch to a special mode only when the user's question matches:`,``,`- **Funnel mode** — "What is the conversion rate from step A → B → C?"`," - Requires: an event-stream cube with `capabilities.funnel = true` from `discover_cubes`"," - Execute: `execute_query` with `funnel` param:",' `{ bindingKey: "Events.userId", timeDimension: "Events.timestamp", steps: [{ name: "Signup", filter: { member: "Events.eventName", operator: "equals", values: ["signup"] }}, { name: "Purchase", filter: { member: "Events.eventName", operator: "equals", values: ["purchase"] }}] }`',' - Visualize: `add_portlet` with `chartType: "funnel"` and `query` as JSON string containing `{ "funnel": { ... } }`',``,`- **Flow mode** — "What paths do users take after signup?"`," - Requires: `capabilities.flow = true` from `discover_cubes`"," - Execute: `execute_query` with `flow` param:",' `{ bindingKey: "Events.userId", timeDimension: "Events.timestamp", eventDimension: "Events.eventName", startingStep: { name: "Signup", filter: { member: "Events.eventName", operator: "equals", values: ["signup"] }}, stepsBefore: 0, stepsAfter: 3 }`',' - Visualize: `add_portlet` with `chartType: "sankey"` (or `"sunburst"`) and `query` as JSON string containing `{ "flow": { ... } }`',``,`- **Retention mode** — "What % of users come back after 7 days?"`," - Requires: `capabilities.retention = true` from `discover_cubes`"," - Execute: `execute_query` with `retention` param:",' `{ timeDimension: "Events.timestamp", bindingKey: "Events.userId", dateRange: { start: "2024-01-01", end: "2024-03-31" }, granularity: "week", periods: 8, retentionType: "classic" }`',' - Visualize: `add_portlet` with `chartType: "retentionCombined"` (or `"retentionHeatmap"`) and `query` as JSON string containing `{ "retention": { ... } }`',``,"Before using funnel/flow/retention, check the `capabilities` object returned by `discover_cubes`. If the required capability is `false`, explain to the user that the data model does not support that analysis mode.",``,`Event-stream cubes are marked in the Available Cubes section below with **Event Stream: Yes** and list their binding key and time dimension.`,``,`---`,``,s(e._),``,`---`,``,s(e.v),``,`---`,``,s(e.g),``,`---`,``,`## Save as Dashboard`,``,"ONLY call `save_as_dashboard` when the user EXPLICITLY asks to save, export, or convert the notebook into a dashboard. NEVER save a dashboard on your own initiative — wait for the user to request it.",``,`### Layout Rules`,`- Dashboard grid is 12 columns wide`,`- KPI cards: w=3, h=3 — place at the top in a row of 4`,`- Overview charts (bar, line, area): w=6, h=4`,`- Wide charts (heatmap, table): w=12, h=5`,`- Section headers (markdown): w=12, h=1`,``,`### Section Headers`,'Use `chartType: "markdown"` portlets as section headers to organize the dashboard:',"```json",`{`,` "id": "header-overview",`,` "title": "Overview",`,` "chartType": "markdown",`,` "displayConfig": {`,` "content": "## Overview",`,` "hideHeader": true,`,` "transparentBackground": true,`,` "autoHeight": true`,` },`,` "w": 12, "h": 1, "x": 0, "y": 0`,`}`,"```",``,`### Dashboard Filters`,"- ALWAYS include a universal date filter with `isUniversalTime: true`",`- Add dimension filters for key fields used across portlets (e.g., department, status, region)`,`- Use human-readable labels (e.g., "Department" not "Employees.departmentName")`,"- Map filters to portlets using `dashboardFilterMapping` — list the filter IDs that apply","- To apply a filter to a different field for one portlet, use `{ filterId, member }` instead of a plain ID (e.g. remap a Customer filter to `Invoices.customerId`); the target field must be join-reachable from the portlet query",`- When promoting a hardcoded filter to a dashboard filter, REMOVE that filter from the portlet query`,``,`### Analysis Types`,'- Standard query portlets: `analysisType: "query"` (default)','- Funnel portlets: `analysisType: "funnel"`, query contains `{ "funnel": {...} }`, chartType `"funnel"`','- Flow portlets: `analysisType: "flow"`, query contains `{ "flow": {...} }`, chartType `"sankey"` or `"sunburst"`','- Retention portlets: `analysisType: "retention"`, query contains `{ "retention": {...} }`, chartType `"retentionHeatmap"` or `"retentionCombined"`',``,`### CRITICAL: Only use portlets from the notebook`,"- ONLY include portlets that you already added to the notebook via `add_portlet` during this conversation",`- Do NOT invent new queries or charts that were not part of the analysis — the dashboard is a direct conversion of the notebook`,`- Reuse the exact same queries, chart types, and chart configs from the notebook portlets`,`- Arrange the existing portlets in a sensible layout (KPIs at top, charts in middle, tables at bottom)`,`- You may add section header markdown portlets to organize the layout, but do not add new data portlets`,``,`---`,``,o(t)].join(`
5
+ `)}var l={clickableElements:{bar:!0},dropZones:[{key:`xAxis`,label:`chart.dropZone.xAxis.label`,description:`chart.dropZone.xAxis.description`,mandatory:!1,acceptTypes:[`dimension`,`timeDimension`],emptyText:`chart.bar.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.dropZone.yAxis.label`,description:`chart.configText.measures_for_bar_heights`,mandatory:!0,acceptTypes:[`measure`],emptyText:`chart.bar.dropZone.yAxis.empty`,enableDualAxis:!0},{key:`series`,label:`chart.dropZone.series.label`,description:`chart.dropZone.series.description`,mandatory:!1,acceptTypes:[`dimension`],emptyText:`chart.bar.dropZone.series.empty`}],displayOptions:[`showLegend`,`showGrid`,`showTooltip`,`showAllXLabels`,`hideHeader`],displayOptionsConfig:[t.o(`chart.configText.how_to_stack_multiple_bar_series`),t.s,t.n,t.a]},u={clickableElements:{point:!0},dropZones:[{key:`xAxis`,label:`chart.configText.x_axis_time_categories`,description:`chart.configText.time_dimensions_or_dimensions_for_x_axis`,mandatory:!0,acceptTypes:[`dimension`,`timeDimension`],emptyText:`chart.line.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.dropZone.yAxis.label`,description:`chart.configText.measures_for_line_values`,mandatory:!0,acceptTypes:[`measure`],emptyText:`chart.line.dropZone.yAxis.empty`,enableDualAxis:!0},{key:`series`,label:`chart.configText.series_multiple_lines`,description:`chart.configText.dimensions_to_create_separate_lines`,mandatory:!1,acceptTypes:[`dimension`],emptyText:`chart.line.dropZone.series.empty`}],displayOptions:[`showLegend`,`showGrid`,`showTooltip`,`showAllXLabels`,`hideHeader`],displayOptionsConfig:[t.t,t.s,{key:`priorPeriodStyle`,label:`chart.option.priorPeriodStyle.label`,type:`select`,defaultValue:`dashed`,options:[{value:`dashed`,label:`chart.option.priorPeriodStyle.dashed`},{value:`dotted`,label:`chart.option.priorPeriodStyle.dotted`},{value:`solid`,label:`chart.option.priorPeriodStyle.solid`}],description:`chart.option.priorPeriodStyle.description`},{key:`priorPeriodOpacity`,label:`chart.option.priorPeriodOpacity.label`,type:`number`,defaultValue:.5,min:.1,max:1,step:.1,description:`chart.option.priorPeriodOpacity.description`},t.n,t.a]},d={dropZones:[{key:`xAxis`,label:`chart.configText.x_axis_time_categories`,description:`chart.configText.time_dimensions_or_dimensions_for_x_axis`,mandatory:!0,acceptTypes:[`dimension`,`timeDimension`],emptyText:`chart.area.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.dropZone.yAxis.label`,description:`chart.configText.measures_for_area_values`,mandatory:!0,acceptTypes:[`measure`],emptyText:`chart.area.dropZone.yAxis.empty`,enableDualAxis:!0},{key:`series`,label:`chart.configText.series_stack_areas`,description:`chart.configText.dimensions_to_create_stacked_areas`,mandatory:!1,acceptTypes:[`dimension`],emptyText:`chart.area.dropZone.series.empty`}],displayOptions:[`showLegend`,`showGrid`,`showTooltip`,`showAllXLabels`,`hideHeader`],displayOptionsConfig:[t.o(`chart.configText.how_to_stack_multiple_area_series`),t.t,t.s,t.n,t.a]},f={clickableElements:{slice:!0},dropZones:[{key:`xAxis`,label:`chart.configText.categories`,description:`chart.configText.dimension_for_pie_slices`,mandatory:!0,maxItems:1,acceptTypes:[`dimension`],emptyText:`chart.pie.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.configText.values`,description:`chart.configText.measure_for_slice_sizes`,mandatory:!0,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.pie.dropZone.yAxis.empty`}],displayOptions:[`showLegend`,`showTooltip`,`hideHeader`],displayOptionsConfig:[{key:`innerRadius`,label:`chart.option.innerRadius.label`,type:`select`,description:`chart.configText.hollow_center_size_0_percent_solid_pie_higher_donut_style`,defaultValue:`0%`,options:[{value:`0%`,label:`chart.configText.none_pie`},{value:`20%`,label:`chart.configText.20_percent`},{value:`40%`,label:`chart.configText.40_percent`},{value:`60%`,label:`chart.configText.60_percent`},{value:`80%`,label:`chart.configText.80_percent`}]},t.c()]},p={dropZones:[{key:`xAxis`,label:`chart.runtime.axisFormat.xAxis`,description:`chart.configText.measure_or_dimension_for_x_position`,mandatory:!0,maxItems:1,acceptTypes:[`dimension`,`timeDimension`,`measure`],emptyText:`chart.scatter.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.configText.y_axis`,description:`chart.configText.measure_for_y_position`,mandatory:!0,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.scatter.dropZone.yAxis.empty`},{key:`series`,label:`chart.configText.series_color_groups`,description:`chart.configText.dimension_to_color_points_by_category`,mandatory:!1,maxItems:1,acceptTypes:[`dimension`],emptyText:`chart.scatter.dropZone.series.empty`}],displayOptions:[`showLegend`,`showGrid`,`showTooltip`,`hideHeader`],displayOptionsConfig:[{key:`xAxisFormat`,label:`chart.option.xAxisFormat.label`,type:`axisFormat`,description:`chart.option.xAxisFormat.description`},{key:`leftYAxisFormat`,label:`chart.option.yAxisFormat.label`,type:`axisFormat`,description:`chart.option.yAxisFormat.description`}]},m={dropZones:[{key:`xAxis`,label:`chart.runtime.axisFormat.xAxis`,description:`chart.configText.horizontal_axis_position`,mandatory:!0,maxItems:1,acceptTypes:[`dimension`,`timeDimension`,`measure`],emptyText:`chart.bubble.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.configText.y_axis`,description:`chart.configText.vertical_axis_position`,mandatory:!0,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.bubble.dropZone.yAxis.empty`},{key:`sizeField`,label:`chart.configText.bubble_radius`,description:`chart.configText.size_of_bubbles_based_on_this_measure`,mandatory:!0,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.bubble.dropZone.sizeField.empty`},{key:`series`,label:`chart.configText.bubble_labels`,description:`chart.configText.field_to_use_for_bubble_labels_and_identification`,mandatory:!0,maxItems:1,acceptTypes:[`dimension`],emptyText:`chart.bubble.dropZone.series.empty`},{key:`colorField`,label:`chart.configText.bubble_colour`,description:`chart.configText.color_bubbles_by_this_field_optional`,mandatory:!1,maxItems:1,acceptTypes:[`dimension`,`measure`],emptyText:`chart.bubble.dropZone.colorField.empty`}],displayOptions:[`showLegend`,`showGrid`,`showTooltip`,`minBubbleSize`,`maxBubbleSize`,`bubbleOpacity`,`hideHeader`],displayOptionsConfig:[{key:`xAxisFormat`,label:`chart.option.xAxisFormat.label`,type:`axisFormat`,description:`chart.option.xAxisFormat.description`},{key:`leftYAxisFormat`,label:`chart.option.yAxisFormat.label`,type:`axisFormat`,description:`chart.configText.number_formatting_for_y_axis_and_values`}]},h={dropZones:[{key:`xAxis`,label:`chart.configText.axes_categories`,description:`chart.configText.dimensions_for_radar_axes`,mandatory:!0,acceptTypes:[`dimension`],emptyText:`chart.radar.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.configText.values`,description:`chart.configText.measures_for_radar_values`,mandatory:!0,acceptTypes:[`measure`],emptyText:`chart.radar.dropZone.yAxis.empty`},{key:`series`,label:`chart.configText.series_multiple_shapes`,description:`chart.configText.dimensions_to_create_multiple_radar_shapes`,mandatory:!1,acceptTypes:[`dimension`],emptyText:`chart.radar.dropZone.series.empty`}],displayOptions:[`showLegend`,`showGrid`,`showTooltip`,`hideHeader`],displayOptionsConfig:[t.c()]},g={dropZones:[{key:`xAxis`,label:`chart.configText.categories`,description:`chart.configText.dimensions_for_radial_segments`,mandatory:!0,acceptTypes:[`dimension`],emptyText:`chart.radialBar.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.configText.values`,description:`chart.configText.measures_for_radial_bar_lengths`,mandatory:!0,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.radialBar.dropZone.yAxis.empty`}],displayOptions:[`showLegend`,`showTooltip`,`hideHeader`],displayOptionsConfig:[t.c()]},_={dropZones:[{key:`xAxis`,label:`chart.configText.categories`,description:`chart.configText.dimensions_for_treemap_rectangles`,mandatory:!0,acceptTypes:[`dimension`],emptyText:`chart.treemap.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.configText.size`,description:`chart.configText.measure_for_rectangle_sizes`,mandatory:!0,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.treemap.dropZone.yAxis.empty`},{key:`series`,label:`chart.configText.color_groups`,description:`chart.configText.dimension_to_color_rectangles_by_category`,mandatory:!1,maxItems:1,acceptTypes:[`dimension`],emptyText:`chart.treemap.dropZone.series.empty`}],displayOptions:[`showLegend`,`showTooltip`,`hideHeader`],displayOptionsConfig:[t.c(`chart.configText.number_formatting_for_size_values`)],clickableElements:{cell:!0}},v={dropZones:[{key:`xAxis`,label:`chart.configText.columns`,description:`chart.configText.all_fields_to_display_as_columns`,mandatory:!1,acceptTypes:[`dimension`,`timeDimension`,`measure`],emptyText:`chart.table.dropZone.xAxis.empty`}],displayOptions:[`hideHeader`],displayOptionsConfig:[{key:`leftYAxisFormat`,label:`chart.option.valueFormat.label`,type:`axisFormat`,description:`chart.configText.number_formatting_for_numeric_values`}]},y={dropZones:[{key:`dateField`,label:`chart.configText.time_dimension`,description:`chart.configText.time_field_that_determines_grid_structure_granularity_affects_layout`,mandatory:!0,maxItems:1,acceptTypes:[`timeDimension`],emptyText:`chart.activityGrid.dropZone.dateField.empty`},{key:`valueField`,label:`chart.configText.activity_measure`,description:`chart.configText.measure_used_for_activity_intensity_color_coding`,mandatory:!0,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.activityGrid.dropZone.valueField.empty`}],displayOptions:[`showLabels`,`showTooltip`,`hideHeader`],displayOptionsConfig:[{key:`fitToWidth`,label:`chart.option.fitToWidth.label`,type:`boolean`,defaultValue:!1,description:`chart.option.fitToWidth.description`}],validate:e=>{let{dateField:t,valueField:n}=e;return!t||Array.isArray(t)&&t.length===0?{isValid:!1,message:`chart.activityGrid.validation.timeDimensionRequired`}:!n||Array.isArray(n)&&n.length===0?{isValid:!1,message:`chart.activityGrid.validation.measureRequired`}:{isValid:!0}},clickableElements:{cell:!0}},b={dropZones:[{key:`yAxis`,label:`chart.configText.value`,description:`chart.configText.measure_to_display_as_kpi_number`,mandatory:!0,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.kpiNumber.dropZone.yAxis.empty`}],displayOptionsConfig:[{key:`target`,label:`chart.runtime.tooltip.targetValue`,type:`string`,placeholder:`e.g., 100`,description:`chart.configText.target_value_to_compare_against_first_value_used_if_multiple_provided`},{key:`prefix`,label:`chart.option.prefix.label`,type:`string`,placeholder:`e.g., $, €, #`,description:`chart.option.prefix.description`},{key:`suffix`,label:`chart.option.suffix.label`,type:`string`,placeholder:`e.g., %, units, items`,description:`chart.option.suffix.description`},{key:`decimals`,label:`chart.option.decimals.label`,type:`number`,defaultValue:0,min:0,max:10,step:1,description:`chart.option.decimals.description`},{key:`valueColorIndex`,label:`chart.configText.value_color`,type:`paletteColor`,defaultValue:0,description:`chart.configText.color_from_the_dashboard_palette_for_the_kpi_value_text`},{key:`useLastCompletePeriod`,label:`chart.option.useLastCompletePeriod.label`,type:`boolean`,defaultValue:!0,description:`chart.configText.exclude_current_incomplete_period_from_aggregation_e_g_partial_week_mont`},{key:`skipLastPeriod`,label:`chart.option.skipLastPeriod.label`,type:`boolean`,defaultValue:!1,description:`chart.option.skipLastPeriod.description`}],displayOptions:[`hideHeader`]},x={dropZones:[{key:`yAxis`,label:`chart.configText.value`,description:`chart.configText.measure_to_track_changes_for`,mandatory:!0,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.kpiDelta.dropZone.yAxis.empty`},{key:`xAxis`,label:`chart.configText.dimension_optional`,description:`chart.configText.dimension_for_ordering_data_typically_time`,mandatory:!1,maxItems:1,acceptTypes:[`dimension`,`timeDimension`],emptyText:`chart.kpiDelta.dropZone.xAxis.empty`}],displayOptionsConfig:[{key:`prefix`,label:`chart.option.prefix.label`,type:`string`,placeholder:`e.g., $, €, #`,description:`chart.option.prefix.description`},{key:`suffix`,label:`chart.option.suffix.label`,type:`string`,placeholder:`e.g., %, units, items`,description:`chart.option.suffix.description`},{key:`decimals`,label:`chart.option.decimals.label`,type:`number`,defaultValue:1,min:0,max:10,step:1,description:`chart.option.decimals.description`},{key:`positiveColorIndex`,label:`chart.configText.positive_change_color`,type:`paletteColor`,defaultValue:2,description:`chart.configText.color_for_positive_changes_increases`},{key:`negativeColorIndex`,label:`chart.configText.negative_change_color`,type:`paletteColor`,defaultValue:3,description:`chart.configText.color_for_negative_changes_decreases`},{key:`showHistogram`,label:`chart.option.showHistogram.label`,type:`boolean`,defaultValue:!0,description:`chart.option.showHistogram.description`},{key:`useLastCompletePeriod`,label:`chart.option.useLastCompletePeriod.label`,type:`boolean`,defaultValue:!0,description:`chart.configText.exclude_current_incomplete_period_from_delta_calculation_e_g_partial_wee`},{key:`skipLastPeriod`,label:`chart.option.skipLastPeriod.label`,type:`boolean`,defaultValue:!1,description:`chart.option.skipLastPeriod.description`}],displayOptions:[`hideHeader`],validate:e=>!e.yAxis||Array.isArray(e.yAxis)&&e.yAxis.length===0?{isValid:!1,message:`chart.kpiDelta.validation.measureRequired`}:{isValid:!0}},S={dropZones:[{key:`yAxis`,label:`chart.configText.value`,description:`chart.configText.measure_to_display_in_the_kpi_text_template`,mandatory:!0,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.kpiText.dropZone.yAxis.empty`}],displayOptionsConfig:[{key:`template`,label:`chart.configText.text_template`,type:`string`,placeholder:"e.g., Total Revenue: ${value}",description:`chart.configText.template_for_displaying_the_text_use_value_to_insert_the_measure_value`},{key:`decimals`,label:`chart.option.decimals.label`,type:`number`,defaultValue:0,min:0,max:10,step:1,description:`chart.configText.number_of_decimal_places_to_display_for_numeric_values`},{key:`valueColorIndex`,label:`chart.configText.value_color`,type:`paletteColor`,defaultValue:0,description:`chart.configText.color_from_the_dashboard_palette_for_the_kpi_value_text`}],displayOptions:[`hideHeader`]},C={skipQuery:!0,dropZones:[],displayOptionsConfig:[{key:`content`,label:`chart.configText.markdown_content`,type:`string`,placeholder:`# Welcome
6
+
7
+ Add your **markdown** content here:
8
+
9
+ - Lists with bullets
10
+ - [Links](https://example.com)
11
+ - *Italic* and **bold** text
12
+
13
+ ---
14
+
15
+ Use --- for horizontal rules.`,description:`chart.configText.enter_markdown_text_supports_headers_bold_text_italic_text_links_text_ur`},{key:`accentColorIndex`,label:`chart.configText.accent_color`,type:`paletteColor`,defaultValue:0,description:`chart.configText.color_from_the_dashboard_palette_for_headers_bullets_and_links`},{key:`fontSize`,label:`chart.option.fontSize.label`,type:`select`,defaultValue:`medium`,options:[{value:`small`,label:`chart.option.fontSize.small`},{value:`medium`,label:`chart.option.fontSize.medium`},{value:`large`,label:`chart.option.fontSize.large`}],description:`chart.configText.overall_text_size_for_the_markdown_content`},{key:`alignment`,label:`chart.option.alignment.label`,type:`select`,defaultValue:`left`,options:[{value:`left`,label:`chart.option.accentBorder.left`},{value:`center`,label:`chart.option.alignment.center`},{value:`right`,label:`chart.option.alignment.right`}],description:`chart.configText.horizontal_alignment_of_the_markdown_content`},{key:`hideHeader`,label:`chart.option.hideHeader.label`,type:`boolean`,defaultValue:!0,description:`chart.option.hideHeader.description`},{key:`transparentBackground`,label:`chart.option.transparentBackground.label`,type:`boolean`,defaultValue:!1,description:`chart.option.transparentBackground.description`},{key:`autoHeight`,label:`chart.option.autoHeight.label`,type:`boolean`,defaultValue:!0,description:`chart.option.autoHeight.description`},{key:`accentBorder`,label:`chart.option.accentBorder.label`,type:`select`,defaultValue:`none`,options:[{value:`none`,label:`chart.option.accentBorder.none`},{value:`left`,label:`chart.option.accentBorder.left`},{value:`top`,label:`chart.option.accentBorder.top`},{value:`bottom`,label:`chart.option.accentBorder.bottom`}],description:`chart.configText.add_an_accent_colored_border_on_one_side_of_the_content`}]},w={dropZones:[{key:`xAxis`,label:`chart.configText.step_name`,description:`chart.configText.step_names_auto_populated_from_funnel_steps`,mandatory:!1,maxItems:1,acceptTypes:[`dimension`],emptyText:`chart.funnel.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.configText.step_count`,description:`chart.configText.count_at_each_step_auto_calculated`,mandatory:!1,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.funnel.dropZone.yAxis.empty`}],displayOptions:[`hideHeader`],displayOptionsConfig:[{key:`funnelStyle`,label:`chart.option.funnelStyle.label`,type:`buttonGroup`,defaultValue:`bars`,options:[{value:`bars`,label:`chart.option.funnelStyle.bars`},{value:`funnel`,label:`chart.option.funnelStyle.funnel`}],description:`chart.configText.visualization_style`},{key:`funnelOrientation`,label:`chart.option.funnelOrientation.label`,type:`buttonGroup`,defaultValue:`horizontal`,options:[{value:`horizontal`,label:`chart.option.funnelOrientation.horizontal`},{value:`vertical`,label:`chart.option.funnelOrientation.vertical`}]},{key:`hideSummaryFooter`,label:`chart.option.hideSummaryFooter.label`,type:`boolean`,defaultValue:!1,description:`chart.option.hideSummaryFooter.description`},{key:`showFunnelConversion`,label:`chart.option.showConversion.label`,type:`boolean`,defaultValue:!0,description:`chart.option.showConversion.description`},{key:`showFunnelAvgTime`,label:`chart.option.showAvgTime.label`,type:`boolean`,defaultValue:!1,description:`chart.option.showAvgTime.description`},{key:`showFunnelMedianTime`,label:`chart.option.showMedianTime.label`,type:`boolean`,defaultValue:!1,description:`chart.option.showMedianTime.description`},{key:`showFunnelP90Time`,label:`chart.option.showP90Time.label`,type:`boolean`,defaultValue:!1,description:`chart.option.showP90Time.description`}]},T={dropZones:[{key:`xAxis`,label:`chart.configText.event_type`,description:`chart.configText.event_dimension_that_categorizes_flow_nodes`,mandatory:!1,maxItems:1,acceptTypes:[`dimension`],emptyText:`chart.sankey.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.configText.flow_count`,description:`chart.configText.count_of_entities_following_each_path`,mandatory:!1,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.sankey.dropZone.yAxis.empty`}],displayOptions:[`hideHeader`],displayOptionsConfig:[{key:`linkOpacity`,label:`chart.option.linkOpacity.label`,type:`buttonGroup`,defaultValue:`0.5`,options:[{value:`0.3`,label:`chart.option.linkOpacity.light`},{value:`0.5`,label:`chart.option.fontSize.medium`},{value:`0.7`,label:`chart.option.linkOpacity.dark`}],description:`chart.configText.opacity_of_flow_links`},{key:`showNodeLabels`,label:`chart.option.showNodeLabels.label`,type:`boolean`,defaultValue:!0,description:`chart.option.showNodeLabels.description`},{key:`hideSummaryFooter`,label:`chart.option.hideSummaryFooter.label`,type:`boolean`,defaultValue:!0,description:`chart.configText.hide_the_statistics_footer_below_the_chart`}]},E={dropZones:[{key:`xAxis`,label:`chart.configText.event_type`,description:`chart.configText.event_dimension_that_categorizes_flow_nodes`,mandatory:!1,maxItems:1,acceptTypes:[`dimension`],emptyText:`chart.sunburst.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.configText.flow_count`,description:`chart.configText.count_of_entities_following_each_path`,mandatory:!1,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.sunburst.dropZone.yAxis.empty`}],displayOptions:[`hideHeader`],displayOptionsConfig:[{key:`innerRadius`,label:`chart.option.innerRadius.label`,type:`number`,defaultValue:40,min:0,max:100,step:10,description:`chart.configText.size_of_the_center_hole_0_for_full_circle`},{key:`hideSummaryFooter`,label:`chart.option.hideSummaryFooter.label`,type:`boolean`,defaultValue:!0,description:`chart.configText.hide_the_statistics_footer_below_the_chart`}]},D={dropZones:[{key:`xAxis`,label:`chart.configText.columns_x_axis`,description:`chart.configText.dimension_for_column_categories`,mandatory:!0,maxItems:1,acceptTypes:[`dimension`],emptyText:`chart.heatmap.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.configText.rows_y_axis`,description:`chart.configText.dimension_for_row_categories`,mandatory:!0,maxItems:1,acceptTypes:[`dimension`],emptyText:`chart.heatmap.dropZone.yAxis.empty`},{key:`valueField`,label:`chart.configText.value_color_intensity`,description:`chart.configText.measure_that_determines_cell_color`,mandatory:!0,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.heatmap.dropZone.valueField.empty`}],displayOptions:[`showLegend`,`showTooltip`],displayOptionsConfig:[{key:`showLabels`,label:`chart.option.showLabels.label`,type:`boolean`,defaultValue:!1,description:`chart.option.showLabels.description`},{key:`cellShape`,label:`chart.option.cellShape.label`,type:`select`,defaultValue:`rect`,options:[{value:`rect`,label:`chart.option.cellShape.rectangle`},{value:`circle`,label:`chart.option.cellShape.circle`}]},{key:`xAxisFormat`,label:`chart.option.xAxisFormat.label`,type:`axisFormat`,description:`chart.configText.number_formatting_for_x_axis_labels`},{key:`yAxisFormat`,label:`chart.option.yAxisFormat.label`,type:`axisFormat`,description:`chart.configText.number_formatting_for_y_axis_labels`},{key:`valueFormat`,label:`chart.option.valueFormat.label`,type:`axisFormat`,description:`chart.configText.number_formatting_for_cell_values_and_legend`}],validate:e=>e.xAxis?.length?e.yAxis?.length?e.valueField?.length?{isValid:!0}:{isValid:!1,message:`chart.heatmap.validation.valueRequired`}:{isValid:!1,message:`chart.heatmap.validation.yAxisRequired`}:{isValid:!1,message:`chart.heatmap.validation.xAxisRequired`}},O={dropZones:[],displayOptionsConfig:[{key:`showLegend`,label:`chart.option.showLegend.label`,type:`boolean`,defaultValue:!0,description:`chart.configText.show_the_color_intensity_legend`},{key:`showTooltip`,label:`chart.option.showTooltip.label`,type:`boolean`,defaultValue:!0,description:`chart.option.showTooltip.description`}]},k={dropZones:[],displayOptionsConfig:[{key:`retentionDisplayMode`,label:`chart.option.retentionDisplayMode.label`,type:`select`,defaultValue:`line`,options:[{value:`line`,label:`chart.option.retentionDisplayMode.lineChart`},{value:`heatmap`,label:`chart.option.retentionDisplayMode.heatmapTable`},{value:`combined`,label:`chart.option.retentionDisplayMode.combined`}],description:`chart.configText.choose_how_to_visualize_retention_data`},{key:`showLegend`,label:`chart.option.showLegend.label`,type:`boolean`,defaultValue:!0,description:`chart.configText.show_the_legend_for_breakdown_segments`},{key:`showGrid`,label:`chart.option.showGrid.label`,type:`boolean`,defaultValue:!0,description:`chart.option.showGrid.description`},{key:`showTooltip`,label:`chart.option.showTooltip.label`,type:`boolean`,defaultValue:!0,description:`chart.option.showTooltip.description`}]},A={displayOptions:[`hideHeader`],dropZones:[{key:`xAxis`,label:`chart.configText.x_axis_groups`,description:`chart.configText.dimension_to_group_boxes_by_e_g_symbol_platform`,mandatory:!0,maxItems:1,acceptTypes:[`dimension`,`timeDimension`],emptyText:`chart.boxPlot.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.configText.y_axis_measures`,description:`chart.configText.drop_1_measure_for_auto_mode_3_for_avg_stddev_median_mode_or_5_for_min_q`,mandatory:!0,maxItems:5,acceptTypes:[`measure`],emptyText:`chart.boxPlot.dropZone.yAxis.empty`}],displayOptionsConfig:[{key:`leftYAxisFormat`,label:`chart.option.yAxisFormat.label`,type:`axisFormat`,description:`chart.configText.number_formatting_for_the_value_axis`}]},j={clickableElements:{bar:!0},displayOptions:[`showTooltip`,`hideHeader`],dropZones:[{key:`xAxis`,label:`chart.dropZone.xAxis.label`,description:`chart.configText.dimension_labels_for_each_bar_segment_e_g_symbol_transaction_type`,mandatory:!0,maxItems:1,acceptTypes:[`dimension`,`timeDimension`],emptyText:`chart.waterfall.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.configText.y_axis_value`,description:`chart.configText.single_measure_whose_values_are_summed_cumulatively`,mandatory:!0,maxItems:1,acceptTypes:[`measure`],emptyText:`chart.waterfall.dropZone.yAxis.empty`}],displayOptionsConfig:[{key:`showTotal`,label:`chart.option.showTotal.label`,type:`boolean`,defaultValue:!0,description:`chart.option.showTotal.description`},{key:`showConnectorLine`,label:`chart.option.showConnectorLine.label`,type:`boolean`,defaultValue:!0,description:`chart.option.showConnectorLine.description`},{key:`showDataLabels`,label:`chart.option.showDataLabels.label`,type:`boolean`,defaultValue:!1,description:`chart.configText.display_the_value_above_each_bar_segment`},{key:`leftYAxisFormat`,label:`chart.option.yAxisFormat.label`,type:`axisFormat`,description:`chart.configText.number_formatting_for_the_y_axis`}]},M={clickableElements:{bar:!0},displayOptions:[`hideHeader`],dropZones:[{key:`xAxis`,label:`chart.configText.x_axis_time_category`,description:`chart.configText.time_dimension_or_category_for_each_candle_e_g_date_symbol`,mandatory:!0,maxItems:1,acceptTypes:[`timeDimension`,`dimension`],emptyText:`chart.candlestick.dropZone.xAxis.empty`},{key:`yAxis`,label:`chart.configText.ohlc_measures_open_close_high_low`,description:`chart.configText.drop_2_4_measures_in_order_open_close_high_low_ohlc_mode_for_range_mode_`,mandatory:!0,acceptTypes:[`measure`],emptyText:`chart.candlestick.dropZone.yAxis.empty`}],displayOptionsConfig:[{key:`rangeMode`,label:`chart.option.rangeMode.label`,type:`select`,defaultValue:`ohlc`,options:[{value:`ohlc`,label:`chart.option.rangeMode.ohlc`},{value:`range`,label:`chart.option.rangeMode.range`}],description:`chart.option.rangeMode.description`},{key:`bullColor`,label:`chart.option.bullColor.label`,type:`color`,defaultValue:`#22c55e`,description:`chart.option.bullColor.description`},{key:`bearColor`,label:`chart.option.bearColor.label`,type:`color`,defaultValue:`#ef4444`,description:`chart.option.bearColor.description`},{key:`showWicks`,label:`chart.option.showWicks.label`,type:`boolean`,defaultValue:!0,description:`chart.option.showWicks.description`},{key:`leftYAxisFormat`,label:`chart.option.yAxisFormat.label`,type:`axisFormat`,description:`chart.configText.number_formatting_for_the_price_axis`}]},N={displayOptions:[`showLegend`,`showTooltip`,`hideHeader`],dropZones:[{key:`yAxis`,label:`chart.configText.measures_x_axis_order`,description:`chart.configText.add_2_or_more_measures_they_become_the_x_axis_categories_in_the_order_li`,mandatory:!0,acceptTypes:[`measure`],emptyText:`chart.measureProfile.dropZone.yAxis.empty`},{key:`series`,label:`chart.configText.series_split_into_multiple_lines`,description:`chart.configText.dimension_to_split_data_into_separate_profile_lines_e_g_symbol_platform`,mandatory:!1,maxItems:1,acceptTypes:[`dimension`],emptyText:`chart.measureProfile.dropZone.series.empty`}],displayOptionsConfig:[{key:`showReferenceLineAtZero`,label:`chart.option.showReferenceLineAtZero.label`,type:`boolean`,defaultValue:!0,description:`chart.option.showReferenceLineAtZero.description`},{key:`showDataLabels`,label:`chart.option.showDataLabels.label`,type:`boolean`,defaultValue:!1,description:`chart.configText.display_value_at_each_data_point`},{key:`showLegend`,label:`chart.option.showLegend.label`,type:`boolean`,defaultValue:!0,description:`chart.configText.show_series_legend_only_visible_with_a_series_dimension`},{key:`lineType`,label:`chart.option.lineType.label`,type:`select`,defaultValue:`monotone`,options:[{value:`monotone`,label:`chart.option.lineType.smooth`},{value:`linear`,label:`chart.option.lineType.linear`},{value:`step`,label:`chart.option.lineType.step`}],description:`chart.option.lineType.description`},{key:`leftYAxisFormat`,label:`chart.option.yAxisFormat.label`,type:`axisFormat`,description:`chart.configText.number_formatting_for_the_y_axis`}]},P={clickableElements:{},displayOptions:[`hideHeader`],dropZones:[{key:`yAxis`,label:`chart.configText.value_measure`,description:`chart.configText.current_value_to_display_on_the_gauge_e_g_current_equity_margin_used`,mandatory:!0,maxItems:2,acceptTypes:[`measure`],emptyText:`chart.gauge.dropZone.yAxis.empty`}],displayOptionsConfig:[{key:`minValue`,label:`chart.option.minValue.label`,type:`number`,defaultValue:0,description:`chart.option.minValue.description`},{key:`maxValue`,label:`chart.option.maxValue.label`,type:`number`,description:`chart.option.maxValue.description`},{key:`thresholds`,label:`chart.configText.threshold_bands`,type:`string`,placeholder:`[{"value":0.33,"color":"#22c55e"},{"value":0.66,"color":"#f59e0b"},{"value":1,"color":"#ef4444"}]`,description:`chart.configText.array_of_value_0_1_fraction_color_bands_shown_as_outer_arc_markers`},{key:`showCenterLabel`,label:`chart.option.showCentreLabel.label`,type:`boolean`,defaultValue:!0,description:`chart.option.showCentreLabel.description`},{key:`showPercentage`,label:`chart.option.showPercentage.label`,type:`boolean`,defaultValue:!1,description:`chart.option.showPercentage.description`},{key:`leftYAxisFormat`,label:`chart.option.valueFormat.label`,type:`axisFormat`,description:`chart.configText.number_formatting_for_the_displayed_value_and_axis_labels`}]},F={packageName:`recharts`,installCommand:`npm install recharts`},I={bar:{label:`chart.bar.label`,icon:`chartBar`,description:`chart.bar.description`,useCase:`chart.bar.useCase`,isAvailable:t.i,dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./BarChart.config-C-QCf1rL.cjs"))).barChartConfig},line:{label:`chart.line.label`,icon:`chartLine`,description:`chart.line.description`,useCase:`chart.line.useCase`,isAvailable:t.i,dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./LineChart.config-d0y60gw9.cjs"))).lineChartConfig},area:{label:`chart.area.label`,icon:`chartArea`,description:`chart.area.description`,useCase:`chart.area.useCase`,isAvailable:t.i,dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./AreaChart.config-hnncyQL4.cjs"))).areaChartConfig},pie:{label:`chart.pie.label`,icon:`chartPie`,description:`chart.pie.description`,useCase:`chart.pie.useCase`,isAvailable:t.i,dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./PieChart.config-CDxfXCIt.cjs"))).pieChartConfig},scatter:{label:`chart.scatter.label`,icon:`chartScatter`,description:`chart.scatter.description`,useCase:`chart.scatter.useCase`,isAvailable:({measureCount:e,dimensionCount:t})=>e<1?{available:!1,reason:`chart.availability.requiresMeasure`}:e<2&&t<1?{available:!1,reason:`chart.availability.scatter`}:{available:!0},dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./ScatterChart.config-4f9nNw3e.cjs"))).scatterChartConfig},bubble:{label:`chart.bubble.label`,icon:`chartBubble`,description:`chart.bubble.description`,useCase:`chart.bubble.useCase`,isAvailable:({measureCount:e,dimensionCount:t})=>e<2?{available:!1,reason:`chart.availability.requiresTwoMeasures`}:t<1?{available:!1,reason:`chart.availability.bubble`}:{available:!0},dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./BubbleChart.config-dRZZlAke.cjs"))).bubbleChartConfig},radar:{label:`chart.radar.label`,icon:`chartRadar`,description:`chart.radar.description`,useCase:`chart.radar.useCase`,isAvailable:t.i,dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./RadarChart.config-DpdVWyh5.cjs"))).radarChartConfig},radialBar:{label:`chart.radialBar.label`,icon:`chartRadialBar`,description:`chart.radialBar.description`,useCase:`chart.radialBar.useCase`,isAvailable:t.i,dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./RadialBarChart.config-faIY4jpE.cjs"))).radialBarChartConfig},treemap:{label:`chart.treemap.label`,icon:`chartTreemap`,description:`chart.treemap.description`,useCase:`chart.treemap.useCase`,isAvailable:t.i,dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./TreeMapChart.config-jbwKsTYt.cjs"))).treemapChartConfig},table:{label:`chart.table.label`,icon:`chartTable`,description:`chart.table.description`,useCase:`chart.table.useCase`,config:async()=>(await Promise.resolve().then(()=>require("./DataTable.config-q2gqBi6t.cjs"))).dataTableConfig},activityGrid:{label:`chart.activityGrid.label`,icon:`chartActivityGrid`,description:`chart.activityGrid.description`,useCase:`chart.activityGrid.useCase`,isAvailable:({measureCount:e,timeDimensionCount:t})=>e<1?{available:!1,reason:`chart.availability.requiresMeasure`}:t<1?{available:!1,reason:`chart.availability.requiresTimeDimension`}:{available:!0},config:async()=>(await Promise.resolve().then(()=>require("./ActivityGridChart.config-BtECymia.cjs"))).activityGridChartConfig},kpiNumber:{label:`chart.kpiNumber.label`,icon:`chartKpiNumber`,description:`chart.kpiNumber.description`,useCase:`chart.kpiNumber.useCase`,isAvailable:t.r,config:async()=>(await Promise.resolve().then(()=>require("./KpiNumber.config-CZmV-yU1.cjs"))).kpiNumberConfig},kpiDelta:{label:`chart.kpiDelta.label`,icon:`chartKpiDelta`,description:`chart.kpiDelta.description`,useCase:`chart.kpiDelta.useCase`,isAvailable:t.i,config:async()=>(await Promise.resolve().then(()=>require("./KpiDelta.config-BWvYXuFp.cjs"))).kpiDeltaConfig},kpiText:{label:`chart.kpiText.label`,icon:`chartKpiText`,description:`chart.kpiText.description`,useCase:`chart.kpiText.useCase`,isAvailable:t.r,config:async()=>(await Promise.resolve().then(()=>require("./KpiText.config-GSIxy0CE.cjs"))).kpiTextConfig},markdown:{label:`chart.markdown.label`,icon:`chartMarkdown`,description:`chart.markdown.description`,useCase:`chart.markdown.useCase`,config:async()=>(await Promise.resolve().then(()=>require("./MarkdownChart.config-B6w0spya.cjs"))).markdownConfig},funnel:{label:`chart.funnel.label`,icon:`chartFunnel`,description:`chart.funnel.description`,useCase:`chart.funnel.useCase`,dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./FunnelChart.config-YNP9CeS-.cjs"))).funnelChartConfig},sankey:{label:`chart.sankey.label`,icon:`chartSankey`,description:`chart.sankey.description`,useCase:`chart.sankey.useCase`,dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./SankeyChart.config-DbIUqi-H.cjs"))).sankeyChartConfig},sunburst:{label:`chart.sunburst.label`,icon:`chartSunburst`,description:`chart.sunburst.description`,useCase:`chart.sunburst.useCase`,dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./SunburstChart.config-lvnYkWs7.cjs"))).sunburstChartConfig},heatmap:{label:`chart.heatmap.label`,icon:`chartHeatmap`,description:`chart.heatmap.description`,useCase:`chart.heatmap.useCase`,isAvailable:({measureCount:e,dimensionCount:t})=>e<1?{available:!1,reason:`chart.availability.requiresMeasure`}:t<2?{available:!1,reason:`chart.availability.requiresTwoDimensions`}:{available:!0},dependencies:{packageName:`@nivo/heatmap`,installCommand:`npm install @nivo/heatmap`},config:async()=>(await Promise.resolve().then(()=>require("./HeatMapChart.config-1zSMXXoN.cjs"))).heatmapChartConfig},retentionHeatmap:{label:`chart.retentionHeatmap.label`,icon:`chartRetention`,description:`chart.retentionHeatmap.description`,useCase:`chart.retentionHeatmap.useCase`,config:async()=>(await Promise.resolve().then(()=>require("./RetentionHeatmap.config-CPlHbLom.cjs"))).retentionHeatmapConfig},retentionCombined:{label:`chart.retentionCombined.label`,icon:`chartRetention`,description:`chart.retentionCombined.description`,useCase:`chart.retentionCombined.useCase`,config:async()=>(await Promise.resolve().then(()=>require("./RetentionCombinedChart.config-CUnScqnS.cjs"))).retentionCombinedConfig},boxPlot:{label:`chart.boxPlot.label`,icon:`chartBoxPlot`,description:`chart.boxPlot.description`,useCase:`chart.boxPlot.useCase`,isAvailable:t.i,config:async()=>(await Promise.resolve().then(()=>require("./BoxPlotChart.config-DEbLA0BX.cjs"))).boxPlotChartConfig},waterfall:{label:`chart.waterfall.label`,icon:`chartWaterfall`,description:`chart.waterfall.description`,useCase:`chart.waterfall.useCase`,isAvailable:t.i,dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./WaterfallChart.config-CDQ74-pS.cjs"))).waterfallChartConfig},candlestick:{label:`chart.candlestick.label`,icon:`chartCandlestick`,description:`chart.candlestick.description`,useCase:`chart.candlestick.useCase`,isAvailable:({measureCount:e,dimensionCount:t})=>e<2?{available:!1,reason:`chart.availability.requiresTwoMeasures`}:t<1?{available:!1,reason:`chart.availability.requiresDimension`}:{available:!0},config:async()=>(await Promise.resolve().then(()=>require("./CandlestickChart.config-Dsil2Fop.cjs"))).candlestickChartConfig},measureProfile:{label:`chart.measureProfile.label`,icon:`chartMeasureProfile`,description:`chart.measureProfile.description`,useCase:`chart.measureProfile.useCase`,isAvailable:({measureCount:e})=>e<2?{available:!1,reason:`chart.availability.requiresTwoMeasures`}:{available:!0},dependencies:F,config:async()=>(await Promise.resolve().then(()=>require("./MeasureProfileChart.config-Bo2n5Ae5.cjs"))).measureProfileChartConfig},gauge:{label:`chart.gauge.label`,icon:`chartGauge`,description:`chart.gauge.description`,useCase:`chart.gauge.useCase`,isAvailable:t.r,dependencies:{packageName:`d3-shape`,installCommand:`npm install d3-shape`},config:async()=>(await Promise.resolve().then(()=>require("./GaugeChart.config-BG9FcMCn.cjs"))).gaugeChartConfig}};function ee(e,t){return{...t,label:e.label,description:e.description,useCase:e.useCase,isAvailable:e.isAvailable}}var L={bar:l,line:u,area:d,pie:f,scatter:p,bubble:m,radar:h,radialBar:g,treemap:_,table:v,activityGrid:y,kpiNumber:b,kpiDelta:x,kpiText:S,markdown:C,funnel:w,sankey:T,sunburst:E,heatmap:D,retentionHeatmap:O,retentionCombined:k,boxPlot:A,waterfall:j,candlestick:M,measureProfile:N,gauge:P},R=Object.fromEntries(Object.keys(I).map(e=>[e,ee(I[e],L[e])]));function z(e){return Array.isArray(e)?e.length>0:!!e}function te(t,n,r,i){for(let a of t.dropZones){if(!a.mandatory||z(r?.[a.key]))continue;let t=a.acceptTypes?.join(`/`)??`fields`;i.push(e.O(`server.validation.chart.dropZoneRequired`,{key:a.key,chartType:n,label:a.label,acceptDesc:t}))}}function ne(t,n,r){if(z(t?.xAxis))return;let i=n.dimensions??[],a=n.timeDimensions??[],o=i.length>0||a.length>0;r.push(e.O(o?`server.validation.chart.barXAxisRequired`:`server.validation.chart.barNeedsDimension`))}function B(e){return Array.isArray(e)?e:[e]}function V(t,n){if(!t?.xAxis||!t?.series)return;let r=new Set(B(t.xAxis)),i=B(t.series).filter(e=>r.has(e));i.length>0&&n.push(e.O(`server.validation.chart.seriesDuplicatesXAxis`,{duplicates:i.join(`, `)}))}function H(e,t,n){let r=R[e];if(!r||r.skipQuery)return{isValid:!0,errors:[]};let i=[];return te(r,e,t,i),e===`bar`&&ne(t,n,i),V(t,i),{isValid:i.length===0,errors:i}}function U(e,t,n,r){if(!(e.acceptTypes??[]).includes(`measure`))return;let i=new Set;for(let r of t.dropZones){if(r.key===e.key)continue;let t=n[r.key];Array.isArray(t)?t.forEach(e=>i.add(e)):typeof t==`string`&&i.add(t)}let a=r.filter(e=>!i.has(e));a.length>0&&(n[e.key]=a[0])}function W(e,t,n){let r=e.acceptTypes??[],i=[];if(r.includes(`dimension`)&&i.push(...n.dimensions),r.includes(`timeDimension`)&&i.push(...n.timeDimFields),r.includes(`measure`)&&i.push(...n.measures),i.length===0)return;let a=i;if(e.key===`series`){let e=new Set(Array.isArray(t.xAxis)?t.xAxis:t.xAxis?[t.xAxis]:[]);if(a=i.filter(t=>!e.has(t)),a.length===0)return}let o=e.maxItems??1/0,s=a.slice(0,o);s.length>0&&(t[e.key]=s)}function G(e,t,n){let r=R[e];if(!r)return t??{};let i={...t},a=n.timeDimensions??[],o={measures:n.measures??[],dimensions:n.dimensions??[],timeDimFields:a.map(e=>e.dimension)};for(let e of r.dropZones)z(i[e.key])||(e.key===`sizeField`||e.key===`colorField`?U(e,r,i,o.measures):W(e,i,o));return i}function K(e){let t=[`
16
+ Chart config requirements by type:`];for(let n of e){let e=R[n];if(!e)continue;let r=[e.description??``,e.useCase??``].filter(Boolean).join(`. `),i=r?` — ${r}.`:``,a=e.dropZones.filter(e=>e.mandatory);if(a.length===0&&!e.skipQuery){t.push(` ${n}${i} chartConfig auto-inferred from query.`);continue}if(e.skipQuery){t.push(` ${n}${i} No query needed.`);continue}let o=a.map(e=>{let t=e.acceptTypes?.join(`/`)??`any`,n=e.maxItems?` (max ${e.maxItems})`:``;return`${e.key}=[${t}]${n}`});t.push(` ${n}${i} Requires ${o.join(`, `)}.`)}return t.join(`
17
+ `)}var q=[`bar`,`line`,`area`,`pie`,`scatter`,`radar`,`bubble`,`table`,`kpiNumber`,`kpiDelta`,`funnel`,`heatmap`,`sankey`,`sunburst`,`retentionHeatmap`,`retentionCombined`,`boxPlot`,`markdown`];function J(){return[{name:`discover_cubes`,description:`Search for available data cubes by topic or intent. Call this FIRST to understand what data is available. Returns cube names, measures, dimensions, and relationships.`,parameters:{type:`object`,properties:{topic:{type:`string`,description:`Keyword to search (e.g., "sales", "employees")`},intent:{type:`string`,description:`Natural language goal (e.g., "analyze productivity trends")`},limit:{type:`number`,description:`Max results (default: 10)`},minScore:{type:`number`,description:`Min relevance 0-1 (default: 0.1)`}}}},{name:`get_cube_metadata`,description:`Get full metadata for all registered cubes including all measures, dimensions, types, and relationships. Use this for detailed schema information.`,parameters:{type:`object`,properties:{}}},{name:`execute_query`,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.`,parameters:{type:`object`,properties:e.x}},{name:`add_portlet`,description:`Add a chart visualization to the notebook.
18
+ `+K(q)+`
19
+ The query is validated before adding. The portlet fetches its own data.`,parameters:{type:`object`,properties:{title:{type:`string`,description:`Title for the visualization`},query:{type:`string`,description:`JSON string of the query. Standard: {"measures":[...],"dimensions":[...]}. Funnel: {"funnel":{"bindingKey":"...","timeDimension":"...","steps":[...]}}. Flow: {"flow":{"bindingKey":"...","timeDimension":"...","eventDimension":"...","startingStep":{...}}}. Retention: {"retention":{"timeDimension":"...","bindingKey":"...","dateRange":{"start":"...","end":"..."},"granularity":"...","periods":N}}.`},chartType:{type:`string`,enum:q,description:`Chart type to render`},chartConfig:{type:`object`,properties:{xAxis:{type:`array`,items:{type:`string`}},yAxis:{type:`array`,items:{type:`string`}},series:{type:`array`,items:{type:`string`}},sizeField:{type:`string`},colorField:{type:`string`},yAxisAssignment:{type:`object`,description:`Dual Y-axis: map measure fields to "left" or "right" axis. Only for bar, line, area charts with 2+ measures of different scales. Example: {"Sales.revenue": "left", "Sales.conversionRate": "right"}`}},description:`Chart axis configuration`},displayConfig:{type:`object`,properties:{showLegend:{type:`boolean`},showGrid:{type:`boolean`},showTooltip:{type:`boolean`},stacked:{type:`boolean`},orientation:{type:`string`,enum:[`horizontal`,`vertical`]}},description:`Chart display configuration`}},required:[`title`,`query`,`chartType`]}},{name:`add_markdown`,description:`Add an explanation or analysis text block to the notebook. Use markdown formatting. Use this to explain findings, methodology, and insights alongside visualizations.`,parameters:{type:`object`,properties:{title:{type:`string`,description:`Optional title for the text block`},content:{type:`string`,description:`Markdown content to display`}},required:[`content`]}},{name:`save_as_dashboard`,description:`Convert the current notebook analysis into a persistent dashboard. Constructs a professional DashboardConfig with proper grid layout, section headers (markdown portlets), and dashboard-level filters. Call this when the user asks to save/export the notebook as a dashboard.`,parameters:{type:`object`,properties:{title:{type:`string`,description:`Dashboard title`},description:{type:`string`,description:`Optional dashboard description`},portlets:{type:`array`,items:{type:`object`,properties:{id:{type:`string`,description:`Unique portlet ID`},title:{type:`string`,description:`Portlet title`},chartType:{type:`string`,enum:q,description:`Chart type. Use "markdown" for section headers.`},query:{type:`string`,description:`JSON string of the query. Omit or leave empty for markdown portlets.`},chartConfig:{type:`object`,properties:{xAxis:{type:`array`,items:{type:`string`}},yAxis:{type:`array`,items:{type:`string`}},series:{type:`array`,items:{type:`string`}},sizeField:{type:`string`},colorField:{type:`string`}},description:`Chart axis configuration`},displayConfig:{type:`object`,description:`Chart display configuration (for markdown: { content, hideHeader, transparentBackground, autoHeight })`},dashboardFilterMapping:{type:`array`,items:{anyOf:[{type:`string`},{type:`object`,properties:{filterId:{type:`string`,description:`Dashboard filter ID`},member:{type:`string`,description:`Optional field to remap the filter to for this portlet (e.g. "Invoices.customerId")`}},required:[`filterId`]}]},description:`Dashboard filters that apply to this portlet: filter IDs, or { filterId, member } entries to remap a filter to a different field for this portlet`},analysisType:{type:`string`,enum:[`query`,`funnel`,`flow`,`retention`],description:`Analysis type (default: "query")`},w:{type:`number`,description:`Grid width (1-12)`},h:{type:`number`,description:`Grid height in row units`},x:{type:`number`,description:`Grid x position (0-11)`},y:{type:`number`,description:`Grid y position`}},required:[`id`,`title`,`chartType`,`w`,`h`,`x`,`y`]},description:`Array of portlet configurations for the dashboard`},filters:{type:`array`,items:{type:`object`,properties:{id:{type:`string`,description:`Unique filter ID`},label:{type:`string`,description:`Display label for the filter`},filter:{type:`object`,properties:{member:{type:`string`},operator:{type:`string`},values:{type:`array`,items:{}}},required:[`member`,`operator`],description:`The filter definition`},isUniversalTime:{type:`boolean`,description:`When true, applies to all time dimensions in portlets`}},required:[`id`,`label`,`filter`]},description:`Dashboard-level filters`},colorPalette:{type:`string`,description:`Color palette name`}},required:[`title`,`portlets`]}}]}function Y(t){let{semanticLayer:n,securityContext:r}=t,i=new Map;i.set(`discover_cubes`,async t=>{let r={cubes:(await e.p(n,{topic:t.topic,intent:t.intent,limit:t.limit,minScore:t.minScore})).cubes.map(e=>({cube:e.cube,title:e.title,description:e.description,relevanceScore:e.relevanceScore,suggestedMeasures:e.suggestedMeasures,suggestedDimensions:e.suggestedDimensions,capabilities:e.capabilities,...e.capabilities.funnel||e.capabilities.flow||e.capabilities.retention?{analysisConfig:{candidateBindingKeys:e.analysisConfig?.candidateBindingKeys?.map(e=>e.dimension)??[],candidateTimeDimensions:e.analysisConfig?.candidateTimeDimensions?.map(e=>e.dimension)??[],...e.analysisConfig?.candidateEventDimensions?.length?{candidateEventDimensions:e.analysisConfig.candidateEventDimensions.map(e=>e.dimension)}:{}}}:{}}))};return{result:JSON.stringify(r)+`
20
+ [IMPORTANT: Your next response MUST start with a brief text message BEFORE any tool calls.]`}}),i.set(`get_cube_metadata`,async()=>{let e=n.getMetadata();return{result:JSON.stringify(e)}});let a=new Map;for(let e of n.getMetadata())a.set(e.name,{measures:(e.measures||[]).map(e=>e.name),dimensions:(e.dimensions||[]).map(e=>e.name)});let o=(e,t)=>{let n=a.get(e),r=t===`measures`?n?.measures:n?.dimensions;return!r||r.length===0?``:` Available ${t}: ${r.slice(0,5).map(e=>`"${e}"`).join(`, `)}`};return i.set(`execute_query`,async t=>{try{let i=(e,t)=>{if(!Array.isArray(e))return;let n=[];for(let r of e){if(typeof r!=`string`)continue;let e=r.split(`.`);e.length===1?n.push(`"${r}" is not valid — must be "CubeName.fieldName".${o(r,t)}`):e.length===2&&e[0]===e[1]&&n.push(`"${r}" is WRONG — "${e[0]}" is the cube name, not a ${t.replace(/s$/,``)}.${o(e[0],t)}`)}if(n.length>0)throw Error(`Invalid ${t}:\n${n.join(`
21
+ `)}`)};i(t.measures,`measures`),i(t.dimensions,`dimensions`);let a;a=t.funnel?{funnel:t.funnel}:t.flow?{flow:t.flow}:t.retention?{retention:t.retention}:{measures:t.measures,dimensions:t.dimensions,filters:t.filters,timeDimensions:t.timeDimensions,order:t.order,limit:t.limit,offset:t.offset,ungrouped:t.ungrouped};let s=await e.m(n,r,{query:a});return{result:JSON.stringify({rowCount:s.data.length,data:s.data,annotation:s.annotation})+`
22
+ [IMPORTANT: Your next response MUST start with a brief text message BEFORE any tool calls. Now call add_markdown and add_portlet to visualize these results.]`}}catch(e){let n={measures:t.measures,dimensions:t.dimensions,filters:t.filters,timeDimensions:t.timeDimensions,order:t.order,limit:t.limit,...t.funnel?{funnel:t.funnel}:{},...t.flow?{flow:t.flow}:{},...t.retention?{retention:t.retention}:{}};return{result:`Query execution failed: ${e instanceof Error?e.message:`Unknown error`}\n\nAttempted query:\n${JSON.stringify(n,null,2)}`,isError:!0}}}),i.set(`add_portlet`,async t=>{let r={number:`kpiNumber`,retention:`retentionHeatmap`}[t.chartType]??t.chartType,i;try{i=JSON.parse(t.query)}catch{return{result:"Invalid query: could not parse JSON string. Ensure `query` is a valid JSON string.",isError:!0}}i=e.h(i);let a=n.validateQuery(i);if(!a.isValid)return{result:`Invalid query — fix these errors and retry:\n${a.errors.join(`
23
+ `)}\n\nAttempted query:\n${JSON.stringify(i,null,2)}`,isError:!0};let o=!!(i.funnel||i.flow||i.retention),s;if(o)s=t.chartConfig??{};else{let e=G(r,t.chartConfig,i),n=H(r,e,i);if(!n.isValid)return{result:`Chart config invalid — fix these errors and retry:\n${n.errors.join(`
24
+ `)}`,isError:!0};s=e}let c=`portlet-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,l={id:c,title:t.title,query:t.query,chartType:r,chartConfig:s,displayConfig:t.displayConfig};return{result:`Portlet "${t.title}" added to notebook (id: ${c}, chart: ${r}). [Reminder: in your next response, start with a brief sentence about what you will do next BEFORE making any tool calls.]`,sideEffect:{type:`add_portlet`,data:l}}}),i.set(`add_markdown`,async e=>{let t=`markdown-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,n=e.content||e.text||e.markdown||``,r={id:t,title:e.title,content:n};return{result:`Markdown block added to notebook (id: ${t}). [Reminder: in your next response, start with a brief sentence about what you will do next BEFORE making any tool calls.]`,sideEffect:{type:`add_markdown`,data:r}}}),i.set(`save_as_dashboard`,async t=>{try{let r=t.portlets;if(!r||r.length===0)return{result:`Dashboard must contain at least one portlet.`,isError:!0};let i=[];for(let t of r){if(t.chartType===`markdown`)continue;let r=t.query;if(!r){i.push(`Portlet "${t.title}": missing query`);continue}let a;try{a=JSON.parse(r)}catch{i.push(`Portlet "${t.title}": invalid JSON query`);continue}a=e.h(a);let o=n.validateQuery(a);o.isValid||i.push(`Portlet "${t.title}": ${o.errors.join(`, `)}`)}if(i.length>0)return{result:`Dashboard has invalid portlets — fix these errors and retry:\n${i.join(`
25
+ `)}`,isError:!0};let a={portlets:r.map(e=>{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;try{o=JSON.parse(a)}catch{o={}}let s={version:1,analysisType:i,activeView:`chart`,charts:{[i]:{chartType:t,chartConfig:e.chartConfig||{},displayConfig:e.displayConfig||{}}},query:n?{}:o};return{id:e.id,title:e.title,analysisConfig:s,dashboardFilterMapping:e.dashboardFilterMapping,w:e.w,h:e.h,x:e.x,y:e.y}}),filters:t.filters,colorPalette:t.colorPalette},o=t.title;return{result:`Dashboard "${o}" created with ${a.portlets.length} portlets and ${a.filters?.length||0} filters.`,sideEffect:{type:`dashboard_saved`,data:{title:o,description:t.description,dashboardConfig:a}}}}catch(e){return{result:`Failed to save dashboard: ${e instanceof Error?e.message:`Unknown error`}`,isError:!0}}}),i}async function X(e,t,n){switch(e){case`anthropic`:{let{AnthropicProvider:e}=await Promise.resolve().then(()=>require("./anthropic-DG4r1LSm.cjs"));return new e(t)}case`openai`:{let{OpenAIProvider:e}=await Promise.resolve().then(()=>require("./openai-Cdf2wWZA.cjs"));return new e(t,n)}case`google`:{let{GoogleProvider:e}=await Promise.resolve().then(()=>require("./google-BOnRIN1w.cjs"));return new e(t)}default:throw Error(`Unknown LLM provider: "${e}". Supported providers: anthropic, openai, google`)}}function Z(e,t){if(Array.isArray(t))for(let n of t)e.push(n);else e.push(t)}function Q(e){if(e)try{e()}catch{}}function re(e,t){let n=[];if(!e||e.length===0)return n;for(let r of e){if(r.role===`user`){n.push({role:`user`,content:r.content});continue}if(r.role!==`assistant`)continue;let e=[];if(r.content&&e.push({type:`text`,text:r.content}),r.toolCalls&&r.toolCalls.length>0){for(let t of r.toolCalls)e.push({type:`tool_use`,id:t.id,name:t.name,input:t.input||{}});n.push({role:`assistant`,content:e});let i=r.toolCalls.map(e=>({toolUseId:e.id,toolName:e.name,content:typeof e.result==`string`?e.result:JSON.stringify(e.result??``),isError:e.status===`error`}));Z(n,t.formatToolResults(i))}else e.length>0&&n.push({role:`assistant`,content:r.content})}return n}function ie(e,t){if(!(e?.type!==`tool_use`||!t))try{e.input=JSON.parse(t)}catch{e.input={}}}function $(e,t){let n=e.contentBlocks[e.contentBlocks.length-1];n&&n.type===`text`?n.text=(n.text||``)+t:e.contentBlocks.push({type:`text`,text:t})}function ae(e,t){if(e.currentBlockIsToolUse&&e.currentToolInputJson){let t=e.contentBlocks[e.contentBlocks.length-1];if(t?.type===`tool_use`)try{t.input=JSON.parse(e.currentToolInputJson)}catch{}}e.contentBlocks.push({type:`tool_use`,id:t.id,name:t.name,input:{},...t.metadata?{metadata:t.metadata}:{}}),e.currentToolInputJson=``,e.currentBlockIsToolUse=!0}function oe(e,t){if(t.id&&t.input){let n=e.contentBlocks.find(e=>e.type===`tool_use`&&e.id===t.id);n&&(n.input=t.input)}else if(e.currentBlockIsToolUse){let t=e.contentBlocks[e.contentBlocks.length-1];t?.type===`tool_use`&&e.currentToolInputJson&&(ie(t,e.currentToolInputJson),e.currentToolInputJson=``),e.currentBlockIsToolUse=!1}}async function*se(e,t){let n={contentBlocks:[],currentToolInputJson:``,currentBlockIsToolUse:!1,stopReason:``};for await(let r of e.parseStreamEvents(t)){let e=r;switch(e.type){case`text_delta`:$(n,e.text),yield{type:`text_delta`,data:e.text};break;case`tool_use_start`:ae(n,e),yield{type:`tool_use_start`,data:{id:e.id,name:e.name,input:void 0}};break;case`tool_input_delta`:n.currentToolInputJson+=e.json;break;case`tool_use_end`:oe(n,e);break;case`message_meta`:e.inputTokens!=null&&(n.inputTokens=e.inputTokens),e.outputTokens!=null&&(n.outputTokens=e.outputTokens),e.stopReason&&(n.stopReason=e.stopReason);break}}return{contentBlocks:n.contentBlocks,stopReason:n.stopReason,inputTokens:n.inputTokens,outputTokens:n.outputTokens}}async function*ce(e,t){let{executor:n,observability:r,traceId:i,turn:a}=t,o=e.name,s=e.input||{},c=e.id,l=n.get(o);if(!l)return yield{type:`tool_use_result`,data:{id:c,name:o,result:`Unknown tool: ${o}`,isError:!0}},{toolUseId:c,toolName:o,content:`Unknown tool: ${o}`,isError:!0};let u=Date.now();try{let e=await l(s);return e.sideEffect&&(yield e.sideEffect),yield{type:`tool_use_result`,data:{id:c,name:o,result:e.result,...e.isError?{isError:!0}:{}}},Q(()=>r?.onToolEnd?.({traceId:i,turn:a,toolName:o,toolUseId:c,isError:!!e.isError,durationMs:Date.now()-u})),{toolUseId:c,toolName:o,content:e.result,...e.isError?{isError:!0}:{}}}catch(e){let t=e instanceof Error?e.message:`Tool execution failed`;return yield{type:`tool_use_result`,data:{id:c,name:o,result:t,isError:!0}},Q(()=>r?.onToolEnd?.({traceId:i,turn:a,toolName:o,toolUseId:c,isError:!0,durationMs:Date.now()-u})),{toolUseId:c,toolName:o,content:t,isError:!0}}}async function*le(e,t){let n=[];for(let r of e){if(r.type!==`tool_use`)continue;let e=yield*ce(r,t);n.push(e)}return n}var ue={anthropic:`claude-sonnet-4-6`,openai:`gpt-4.1-mini`,google:`gemini-3-flash-preview`};async function*de(t){let{message:n,history:r,semanticLayer:i,securityContext:a,agentConfig:o,apiKey:s}=t,l=t.sessionId||crypto.randomUUID(),u=o.observability,d=crypto.randomUUID(),f=Date.now(),p=t.providerOverride||o.provider||`anthropic`,m=t.modelOverride||o.model||ue[p]||`claude-sonnet-4-6`,h=t.baseURLOverride||o.baseURL,g=o.maxTurns||25,_=o.maxTokens||4096,v;try{v=await X(p,s,{baseURL:h})}catch(t){console.error(`[agent] Failed to create %s provider: %s`,String(p).replace(/\n|\r/g,``),String(t instanceof Error?t.message:t).replace(/\n|\r/g,``)),yield{type:`error`,data:{message:t instanceof Error?t.message:e.O(`server.errors.llmInitFailed`)}};return}let y=J(),b=Y({semanticLayer:i,securityContext:a}),x=c(i.getMetadata());t.systemContext&&(x+=`\n\n## User Context\n\n${t.systemContext}`),Q(()=>u?.onChatStart?.({traceId:d,sessionId:l,message:n,model:m,historyLength:r?.length??0}));let S=re(r,v);S.push({role:`user`,content:n});let C=0;try{for(let e=0;e<g;e++){C=e+1;let t=await v.createStream({model:m,maxTokens:_,system:x,tools:y,messages:S}),n=Date.now(),{contentBlocks:r,stopReason:i,inputTokens:a,outputTokens:o}=yield*se(v,t);if(Q(()=>u?.onGenerationEnd?.({traceId:d,turn:e,model:m,stopReason:i,inputTokens:a,outputTokens:o,durationMs:Date.now()-n,input:S,output:r})),S.push({role:`assistant`,content:r}),!v.shouldContinue(i))break;let s=yield*le(r,{executor:b,observability:u,traceId:d,turn:e});yield{type:`turn_complete`,data:{}},Z(S,v.formatToolResults(s))}Q(()=>u?.onChatEnd?.({traceId:d,sessionId:l,totalTurns:C,durationMs:Date.now()-f})),yield{type:`done`,data:{sessionId:l||``,traceId:d}}}catch(e){try{u?.onChatEnd?.({traceId:d,sessionId:l,totalTurns:0,durationMs:Date.now()-f,error:e instanceof Error?e.message:`Unknown error`})}catch{}console.error(`[agent] Chat error (provider=%s, model=%s): %s`,String(p).replace(/\n|\r/g,``),String(m).replace(/\n|\r/g,``),String(e instanceof Error?e.message:e).replace(/\n|\r/g,``)),yield{type:`error`,data:{message:v.formatError(e)}}}}exports.C=f,exports.E=l,exports.S=p,exports.T=u,exports._=v,exports.a=A,exports.b=h,exports.c=D,exports.d=w,exports.f=C,exports.g=y,exports.h=b,exports.handleAgentChat=de,exports.i=j,exports.l=E,exports.m=x,exports.n=N,exports.o=k,exports.p=S,exports.r=M,exports.s=O,exports.t=P,exports.u=T,exports.v=_,exports.w=d,exports.x=m,exports.y=g;