drizzle-cube 0.7.1 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/ActivityGridChart.config-DXUUgx0N.cjs +1 -0
- package/dist/adapters/ActivityGridChart.config-Dyozu3VW.js +2 -0
- package/dist/adapters/AreaChart.config-Di5odBXp.cjs +1 -0
- package/dist/adapters/AreaChart.config-KEaXP_4K.js +2 -0
- package/dist/adapters/BarChart.config-B-hBHykR.cjs +1 -0
- package/dist/adapters/BarChart.config-C5sqbn0A.js +2 -0
- package/dist/adapters/BoxPlotChart.config-B1R4Br7L.js +2 -0
- package/dist/adapters/BoxPlotChart.config-C82Fhd3c.cjs +1 -0
- package/dist/adapters/BubbleChart.config-CoBxmmfp.js +2 -0
- package/dist/adapters/BubbleChart.config-DfOnNjL-.cjs +1 -0
- package/dist/adapters/CandlestickChart.config-C5ggV_3j.cjs +1 -0
- package/dist/adapters/CandlestickChart.config-ZaJpWVuL.js +2 -0
- package/dist/adapters/DataTable.config-Cx2_ACdY.cjs +1 -0
- package/dist/adapters/DataTable.config-DkAgD-iz.js +2 -0
- package/dist/adapters/FunnelChart.config-CvzcECUB.js +2 -0
- package/dist/adapters/FunnelChart.config-DVH7IFnb.cjs +1 -0
- package/dist/adapters/GaugeChart.config-Csx8rt8o.cjs +1 -0
- package/dist/adapters/GaugeChart.config-DEmrNgMa.js +2 -0
- package/dist/adapters/HeatMapChart.config-BfD_dpP7.js +2 -0
- package/dist/adapters/HeatMapChart.config-D_jlyPJL.cjs +1 -0
- package/dist/adapters/KpiDelta.config-CVBdUL_n.cjs +1 -0
- package/dist/adapters/KpiDelta.config-D4dCXOxl.js +2 -0
- package/dist/adapters/KpiNumber.config-BK5pgIKz.cjs +1 -0
- package/dist/adapters/KpiNumber.config-D6XqjZrm.js +2 -0
- package/dist/adapters/KpiText.config-ChphMwG5.js +2 -0
- package/dist/adapters/KpiText.config-fO1wc6FH.cjs +1 -0
- package/dist/adapters/LineChart.config-CXJrgz1s.js +2 -0
- package/dist/adapters/LineChart.config-Cg_h-SiJ.cjs +1 -0
- package/dist/adapters/MarkdownChart.config-ByPjX-4O.cjs +1 -0
- package/dist/adapters/MarkdownChart.config-Df2yY9AT.js +2 -0
- package/dist/adapters/MeasureProfileChart.config-BBWGIteF.cjs +1 -0
- package/dist/adapters/MeasureProfileChart.config-C9OFbN9Z.js +2 -0
- package/dist/adapters/PieChart.config-C6jJj6xm.js +2 -0
- package/dist/adapters/PieChart.config-CmCw_8eN.cjs +1 -0
- package/dist/adapters/ProportionBarChart.config-B9NEyFEe.js +2 -0
- package/dist/adapters/ProportionBarChart.config-C3GAVPWn.cjs +1 -0
- package/dist/adapters/RadarChart.config-5AMwEqUJ.cjs +1 -0
- package/dist/adapters/RadarChart.config-Ct_b7IM5.js +2 -0
- package/dist/adapters/RadialBarChart.config-Bp-Sl0cm.js +2 -0
- package/dist/adapters/RadialBarChart.config-D14yoexI.cjs +1 -0
- package/dist/adapters/RecordsTable.config-D2-qmG06.cjs +1 -0
- package/dist/adapters/RecordsTable.config-DIwoqZCU.js +2 -0
- package/dist/adapters/RetentionCombinedChart.config-BWHipi5M.cjs +1 -0
- package/dist/adapters/RetentionCombinedChart.config-D40UgTcl.js +2 -0
- package/dist/adapters/RetentionHeatmap.config-GlnSLrjn.js +2 -0
- package/dist/adapters/RetentionHeatmap.config-MlhZf26c.cjs +1 -0
- package/dist/adapters/SankeyChart.config-Bf1_NHiv.js +2 -0
- package/dist/adapters/SankeyChart.config-BoYf6BFE.cjs +1 -0
- package/dist/adapters/ScatterChart.config-CV2rdGJp.js +2 -0
- package/dist/adapters/ScatterChart.config-DywduGF3.cjs +1 -0
- package/dist/adapters/SunburstChart.config-CrqiE1UZ.js +2 -0
- package/dist/adapters/SunburstChart.config-D5tbF_GJ.cjs +1 -0
- package/dist/adapters/TreeMapChart.config-BJ8HnZU0.cjs +1 -0
- package/dist/adapters/TreeMapChart.config-DxgIqIIj.js +2 -0
- package/dist/adapters/WaterfallChart.config-Cns8fLFu.js +2 -0
- package/dist/adapters/WaterfallChart.config-D_kdL9SN.cjs +1 -0
- package/dist/adapters/compiler-BxZHh0UD.cjs +166 -0
- package/dist/adapters/{compiler-DiYxWAKg.js → compiler-CBGD_4Et.js} +1389 -1923
- package/dist/adapters/core/http-port.d.ts +34 -7
- package/dist/adapters/core/index.cjs +1 -1
- package/dist/adapters/core/index.d.ts +1 -0
- package/dist/adapters/core/index.js +2 -2
- package/dist/adapters/core/rest-handlers.d.ts +1 -1
- package/dist/adapters/core-CIGuwGuI.cjs +1 -0
- package/dist/adapters/{core-BOPRmxPc.js → core-DAAnqPyN.js} +81 -65
- package/dist/adapters/express/index.cjs +2 -2
- package/dist/adapters/express/index.d.ts +11 -2
- package/dist/adapters/express/index.js +14 -14
- package/dist/adapters/fastify/index.cjs +2 -2
- package/dist/adapters/fastify/index.d.ts +11 -2
- package/dist/adapters/fastify/index.js +29 -29
- package/dist/{server/google-eKAc20al.js → adapters/google-DRY7jnOh.js} +46 -28
- package/dist/adapters/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
- package/dist/adapters/handler-BcYTw6zB.cjs +25 -0
- package/dist/adapters/{handler-DGud-C-w.js → handler-eA0VJDHj.js} +363 -266
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +9 -9
- package/dist/adapters/mcp-tools-handlers.d.ts +10 -3
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +18 -20
- package/dist/adapters/mcp-transport-BpG44Fvn.js +730 -0
- package/dist/adapters/mcp-transport-CDxZXpc-.cjs +42 -0
- package/dist/adapters/mcp-transport.d.ts +13 -2
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.d.ts +5 -2
- package/dist/adapters/nextjs/index.js +32 -32
- package/dist/adapters/{openai-Crp3X_zg.js → openai-BZ48ioYp.js} +1 -1
- package/dist/adapters/{openai-CmdN7Sj1.cjs → openai-Bw1j-OiP.cjs} +1 -1
- package/dist/adapters/{openai-Dwt9bxOE.cjs → openai-CLjyL5_J.cjs} +2 -2
- package/dist/adapters/{openai-CGJM6Qun.js → openai-CYYjUG_3.js} +4 -4
- package/dist/adapters/{utils-DboNUT3A.js → utils-BagURNRb.js} +1963 -1135
- package/dist/adapters/utils-BiKIg2tk.cjs +128 -0
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.d.ts +19 -5
- package/dist/adapters/utils.js +1 -1
- package/dist/cjs/adapters/core/http-port.d.ts +34 -7
- package/dist/cjs/adapters/core/index.d.ts +1 -0
- package/dist/cjs/adapters/core/rest-handlers.d.ts +1 -1
- package/dist/cjs/adapters/express/index.d.ts +11 -2
- package/dist/cjs/adapters/fastify/index.d.ts +11 -2
- package/dist/cjs/adapters/mcp-tools-handlers.d.ts +10 -3
- package/dist/cjs/adapters/mcp-transport.d.ts +13 -2
- package/dist/cjs/adapters/nextjs/index.d.ts +5 -2
- package/dist/cjs/adapters/utils.d.ts +19 -5
- package/dist/cjs/client/charts/chartConfigRegistry.d.ts +7 -0
- package/dist/cjs/client/charts/chartConfigs.d.ts +17 -1
- package/dist/cjs/client/client/CubeClient.d.ts +11 -1
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
- package/dist/cjs/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
- package/dist/cjs/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
- package/dist/cjs/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
- package/dist/cjs/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
- package/dist/cjs/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
- package/dist/cjs/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
- package/dist/cjs/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
- package/dist/cjs/client/components/charts/RecordsTable.config.d.ts +10 -0
- package/dist/cjs/client/components/charts/RecordsTable.d.ts +4 -0
- package/dist/cjs/client/components/charts/recordsTableHooks.d.ts +68 -0
- package/dist/cjs/client/icons/types.d.ts +1 -0
- package/dist/cjs/client/index.d.ts +2 -2
- package/dist/cjs/client/types.d.ts +92 -1
- package/dist/cjs/client/utils/recordsTableUtils.d.ts +71 -0
- package/dist/cjs/client/utils/rowLinkUtils.d.ts +35 -0
- package/dist/cjs/server/adapters/base-adapter.d.ts +46 -0
- package/dist/cjs/server/adapters/databend-adapter.d.ts +5 -0
- package/dist/cjs/server/adapters/duckdb-adapter.d.ts +5 -0
- package/dist/cjs/server/adapters/mysql-adapter.d.ts +14 -0
- package/dist/cjs/server/adapters/postgres-adapter.d.ts +15 -0
- package/dist/cjs/server/adapters/snowflake-adapter.d.ts +6 -0
- package/dist/cjs/server/adapters/sqlite-adapter.d.ts +21 -0
- package/dist/cjs/server/agent/chart-validation.d.ts +1 -1
- package/dist/cjs/server/ai/chart-schema.d.ts +117 -0
- package/dist/cjs/server/ai/discovery-helpers.d.ts +14 -0
- package/dist/cjs/server/ai/discovery.d.ts +6 -0
- package/dist/cjs/server/ai/query-schema.d.ts +1 -1
- package/dist/cjs/server/attribute-dimensions.d.ts +102 -0
- package/dist/cjs/server/builders/group-by-builder.d.ts +15 -0
- package/dist/cjs/server/cache-utils.d.ts +5 -1
- package/dist/cjs/server/compiler-metadata.d.ts +24 -3
- package/dist/cjs/server/compiler.d.ts +159 -13
- package/dist/cjs/server/execution/query-result-cache.d.ts +1 -1
- package/dist/cjs/server/executor.d.ts +15 -0
- package/dist/cjs/server/index.d.ts +13 -3
- package/dist/cjs/server/query-handlers.d.ts +2 -1
- package/dist/cjs/server/query-validator.d.ts +36 -4
- package/dist/cjs/server/types/core.d.ts +13 -0
- package/dist/cjs/server/types/cube.d.ts +39 -2
- package/dist/cjs/server/types/query.d.ts +8 -0
- package/dist/cli/index.cjs +130 -52
- package/dist/client/charts/chartConfigRegistry.d.ts +7 -0
- package/dist/client/charts/chartConfigs.d.ts +17 -1
- package/dist/client/charts.js +13 -13
- package/dist/client/chunks/{DashboardEditModal-BOfLdTgV.js → DashboardEditModal-_ZDMwaGX.js} +1653 -1188
- package/dist/client/chunks/DashboardEditModal-_ZDMwaGX.js.map +1 -0
- package/dist/client/chunks/{ProportionBarChart-DwoXU5VP.js → ProportionBarChart-qfpAWhIg.js} +3 -3
- package/dist/client/chunks/{ProportionBarChart-DwoXU5VP.js.map → ProportionBarChart-qfpAWhIg.js.map} +1 -1
- package/dist/client/chunks/RecordsTable-KmJy94xN.js +556 -0
- package/dist/client/chunks/RecordsTable-KmJy94xN.js.map +1 -0
- package/dist/client/chunks/{RetentionCombinedChart-BqlSV7yF.js → RetentionCombinedChart-C7X6aj97.js} +3 -3
- package/dist/client/chunks/{RetentionCombinedChart-BqlSV7yF.js.map → RetentionCombinedChart-C7X6aj97.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-VdVkBg8Q.js → RetentionHeatmap-PpRpiqR_.js} +2 -2
- package/dist/client/chunks/{RetentionHeatmap-VdVkBg8Q.js.map → RetentionHeatmap-PpRpiqR_.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-DXw60SEs.js → analysis-builder-DaqyOjLX.js} +169 -168
- package/dist/client/chunks/{analysis-builder-DXw60SEs.js.map → analysis-builder-DaqyOjLX.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-CEvHIlmk.js → analysis-builder-shared-ow9KAHDP.js} +965 -954
- package/dist/client/chunks/analysis-builder-shared-ow9KAHDP.js.map +1 -0
- package/dist/client/chunks/{chart-activity-grid-4jfS8khG.js → chart-activity-grid-DO82rrbW.js} +140 -84
- package/dist/client/chunks/chart-activity-grid-DO82rrbW.js.map +1 -0
- package/dist/client/chunks/{chart-area-Dol6s9no.js → chart-area-9SBeG0GM.js} +21 -21
- package/dist/client/chunks/{chart-area-Dol6s9no.js.map → chart-area-9SBeG0GM.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-5_niozi2.js → chart-bar-tfgmLK2D.js} +5 -5
- package/dist/client/chunks/{chart-bar-5_niozi2.js.map → chart-bar-tfgmLK2D.js.map} +1 -1
- package/dist/client/chunks/{chart-box-plot-Dhp-VwhD.js → chart-box-plot-BuYW6j6g.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-Dhp-VwhD.js.map → chart-box-plot-BuYW6j6g.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-BM2BAMSo.js → chart-bubble-BNmonWqW.js} +2 -2
- package/dist/client/chunks/{chart-bubble-BM2BAMSo.js.map → chart-bubble-BNmonWqW.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-BNwLIBfm.js → chart-candlestick-BYeWNkKl.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-BNwLIBfm.js.map → chart-candlestick-BYeWNkKl.js.map} +1 -1
- package/dist/client/chunks/{chart-data-table-DoDHQRe7.js → chart-data-table-C_oHiK6N.js} +1094 -1029
- package/dist/client/chunks/chart-data-table-C_oHiK6N.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-Cd7da_sa.js → chart-funnel-B_CWC3cL.js} +2 -2
- package/dist/client/chunks/{chart-funnel-Cd7da_sa.js.map → chart-funnel-B_CWC3cL.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-DOpul-Oz.js → chart-gauge-D7VxwPnx.js} +3 -3
- package/dist/client/chunks/{chart-gauge-DOpul-Oz.js.map → chart-gauge-D7VxwPnx.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-CeKbK655.js → chart-heat-map-q7Vf_dog.js} +3 -3
- package/dist/client/chunks/{chart-heat-map-CeKbK655.js.map → chart-heat-map-q7Vf_dog.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-Dq8qUOOT.js → chart-kpi-delta-PEuA3iGs.js} +3 -3
- package/dist/client/chunks/{chart-kpi-delta-Dq8qUOOT.js.map → chart-kpi-delta-PEuA3iGs.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-DgiqTi9g.js → chart-kpi-number-DlxrO6Pq.js} +5 -5
- package/dist/client/chunks/{chart-kpi-number-DgiqTi9g.js.map → chart-kpi-number-DlxrO6Pq.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-CsZMVEnM.js → chart-kpi-text-Cx6cJu2s.js} +3 -3
- package/dist/client/chunks/{chart-kpi-text-CsZMVEnM.js.map → chart-kpi-text-Cx6cJu2s.js.map} +1 -1
- package/dist/client/chunks/{chart-line-DlwOB7C7.js → chart-line-pDe25JzB.js} +3 -3
- package/dist/client/chunks/{chart-line-DlwOB7C7.js.map → chart-line-pDe25JzB.js.map} +1 -1
- package/dist/client/chunks/{chart-markdown-DPE34SjC.js → chart-markdown-CRY15yp0.js} +2 -2
- package/dist/client/chunks/{chart-markdown-DPE34SjC.js.map → chart-markdown-CRY15yp0.js.map} +1 -1
- package/dist/client/chunks/{chart-measure-profile-BpTz1fce.js → chart-measure-profile-DyQ-vvuC.js} +3 -3
- package/dist/client/chunks/{chart-measure-profile-BpTz1fce.js.map → chart-measure-profile-DyQ-vvuC.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-FGw66XAH.js → chart-pie-ZrnBycy1.js} +15 -15
- package/dist/client/chunks/{chart-pie-FGw66XAH.js.map → chart-pie-ZrnBycy1.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-D-eRDoiA.js → chart-radar-BXbnYMUJ.js} +13 -13
- package/dist/client/chunks/{chart-radar-D-eRDoiA.js.map → chart-radar-BXbnYMUJ.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-DgtkNTs3.js → chart-radial-bar-CYxH3ryh.js} +3 -3
- package/dist/client/chunks/{chart-radial-bar-DgtkNTs3.js.map → chart-radial-bar-CYxH3ryh.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-D0hhb_EQ.js → chart-sankey-C9R_TDDh.js} +2 -2
- package/dist/client/chunks/{chart-sankey-D0hhb_EQ.js.map → chart-sankey-C9R_TDDh.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-D9EcAiMQ.js → chart-scatter-DrwRkzzl.js} +3 -3
- package/dist/client/chunks/{chart-scatter-D9EcAiMQ.js.map → chart-scatter-DrwRkzzl.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-DCYmJ5DU.js → chart-sunburst-Bs1yqIPp.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-DCYmJ5DU.js.map → chart-sunburst-Bs1yqIPp.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-D_ACSSiB.js → chart-tree-map-BNjHhhVq.js} +3 -3
- package/dist/client/chunks/{chart-tree-map-D_ACSSiB.js.map → chart-tree-map-BNjHhhVq.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-CVUVNa1R.js → chart-waterfall-CyoC0uLT.js} +3 -3
- package/dist/client/chunks/{chart-waterfall-CVUVNa1R.js.map → chart-waterfall-CyoC0uLT.js.map} +1 -1
- package/dist/client/chunks/charts-core-DCQ7od_L.js +190 -0
- package/dist/client/chunks/charts-core-DCQ7od_L.js.map +1 -0
- package/dist/client/chunks/charts-loader-Bya_zDIA.js +86 -0
- package/dist/client/chunks/charts-loader-Bya_zDIA.js.map +1 -0
- package/dist/client/chunks/{en-US-BE6VoG0o.js → en-US-HP6FHuNy.js} +3 -1
- package/dist/client/chunks/{en-US-BE6VoG0o.js.map → en-US-HP6FHuNy.js.map} +1 -1
- package/dist/client/chunks/{exceljs.min-DWC_b8G9.js → exceljs.min-CiByP8VQ.js} +2 -3
- package/dist/client/chunks/{exceljs.min-DWC_b8G9.js.map → exceljs.min-CiByP8VQ.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-DFLVORiD.js → nl-NL-CEdoCz6Q.js} +54 -1
- package/dist/client/chunks/nl-NL-CEdoCz6Q.js.map +1 -0
- package/dist/client/chunks/{schema-visualization-C6g_LCiA.js → schema-visualization-DfXxFBIY.js} +3 -3
- package/dist/client/chunks/{schema-visualization-C6g_LCiA.js.map → schema-visualization-DfXxFBIY.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-ZfChDEd3.js → useDirtyStateTracking-BFJHiiVK.js} +15 -15
- package/dist/client/chunks/{useDirtyStateTracking-ZfChDEd3.js.map → useDirtyStateTracking-BFJHiiVK.js.map} +1 -1
- package/dist/client/chunks/{useExplainAI-im9e1rVb.js → useExplainAI-_C4WQE5I.js} +16 -16
- package/dist/client/chunks/{useExplainAI-im9e1rVb.js.map → useExplainAI-_C4WQE5I.js.map} +1 -1
- package/dist/client/chunks/{vendor-Qa1s8oSX.js → vendor-Gb3lH0cc.js} +49 -49
- package/dist/client/chunks/vendor-Gb3lH0cc.js.map +1 -0
- package/dist/client/client/CubeClient.d.ts +11 -1
- package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
- package/dist/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
- package/dist/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
- package/dist/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
- package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
- package/dist/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
- package/dist/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
- package/dist/client/components/charts/RecordsTable.config.d.ts +10 -0
- package/dist/client/components/charts/RecordsTable.d.ts +4 -0
- package/dist/client/components/charts/recordsTableHooks.d.ts +68 -0
- package/dist/client/components.js +1 -1
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons/types.d.ts +1 -0
- package/dist/client/icons.js +2 -2
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.js +213 -213
- package/dist/client/providers.js +1 -1
- package/dist/client/schema.js +1 -1
- package/dist/client/styles.css +1 -1
- package/dist/client/types.d.ts +92 -1
- package/dist/client/utils/recordsTableUtils.d.ts +71 -0
- package/dist/client/utils/rowLinkUtils.d.ts +35 -0
- package/dist/client/utils.js +14 -14
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +109 -109
- package/dist/server/adapters/base-adapter.d.ts +46 -0
- package/dist/server/adapters/databend-adapter.d.ts +5 -0
- package/dist/server/adapters/duckdb-adapter.d.ts +5 -0
- package/dist/server/adapters/mysql-adapter.d.ts +14 -0
- package/dist/server/adapters/postgres-adapter.d.ts +15 -0
- package/dist/server/adapters/snowflake-adapter.d.ts +6 -0
- package/dist/server/adapters/sqlite-adapter.d.ts +21 -0
- package/dist/server/agent/chart-validation.d.ts +1 -1
- package/dist/server/ai/chart-schema.d.ts +117 -0
- package/dist/server/ai/discovery-helpers.d.ts +14 -0
- package/dist/server/ai/discovery.d.ts +6 -0
- package/dist/server/ai/query-schema.d.ts +1 -1
- package/dist/server/attribute-dimensions.d.ts +102 -0
- package/dist/server/builders/group-by-builder.d.ts +15 -0
- package/dist/server/cache-utils.d.ts +5 -1
- package/dist/server/compiler-metadata.d.ts +24 -3
- package/dist/server/compiler.d.ts +159 -13
- package/dist/server/execution/query-result-cache.d.ts +1 -1
- package/dist/server/executor.d.ts +15 -0
- package/dist/{adapters/google-eKAc20al.js → server/google-DRY7jnOh.js} +46 -28
- package/dist/server/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
- package/dist/server/index.cjs +42 -38
- package/dist/server/index.d.ts +13 -3
- package/dist/server/index.js +2079 -1573
- package/dist/server/{openai-Czk1BdHa.js → openai-6uUf7h-5.js} +1 -1
- package/dist/server/{openai-DBwI1OSu.cjs → openai-BBe1XbZd.cjs} +1 -1
- package/dist/server/{openai-Cu4TXXjl.cjs → openai-BmADmD1e.cjs} +1 -1
- package/dist/server/{openai-CUf4vc3Q.js → openai-C1gLuR-0.js} +1 -1
- package/dist/server/query-handlers.d.ts +2 -1
- package/dist/server/query-validator.d.ts +36 -4
- package/dist/server/types/core.d.ts +13 -0
- package/dist/server/types/cube.d.ts +39 -2
- package/dist/server/types/query.d.ts +8 -0
- package/package.json +2 -2
- package/dist/adapters/ActivityGridChart.config-D6hhj345.cjs +0 -1
- package/dist/adapters/ActivityGridChart.config-QZKs_NYg.js +0 -2
- package/dist/adapters/AreaChart.config-B5XM6G22.js +0 -2
- package/dist/adapters/AreaChart.config-NP34BH5y.cjs +0 -1
- package/dist/adapters/BarChart.config-Bqlmr81N.js +0 -2
- package/dist/adapters/BarChart.config-C3bw-cAP.cjs +0 -1
- package/dist/adapters/BoxPlotChart.config-BOAvoj6x.cjs +0 -1
- package/dist/adapters/BoxPlotChart.config-CTXiycYY.js +0 -2
- package/dist/adapters/BubbleChart.config-CGFIkl4H.cjs +0 -1
- package/dist/adapters/BubbleChart.config-Njxx4Eq1.js +0 -2
- package/dist/adapters/CandlestickChart.config-BZ_yWaSo.cjs +0 -1
- package/dist/adapters/CandlestickChart.config-D4Svhmef.js +0 -2
- package/dist/adapters/DataTable.config-B-bT9puT.js +0 -2
- package/dist/adapters/DataTable.config-BHtt1cPM.cjs +0 -1
- package/dist/adapters/FunnelChart.config-C1e07O7B.cjs +0 -1
- package/dist/adapters/FunnelChart.config-CVEy0tV9.js +0 -2
- package/dist/adapters/GaugeChart.config-5PLNlQlu.js +0 -2
- package/dist/adapters/GaugeChart.config-Cdv6knjZ.cjs +0 -1
- package/dist/adapters/HeatMapChart.config-MGTfYpWJ.js +0 -2
- package/dist/adapters/HeatMapChart.config-jfBEi1ZI.cjs +0 -1
- package/dist/adapters/KpiDelta.config-D2IUsEYz.cjs +0 -1
- package/dist/adapters/KpiDelta.config-DT_MmAHw.js +0 -2
- package/dist/adapters/KpiNumber.config-ChgbKmx8.cjs +0 -1
- package/dist/adapters/KpiNumber.config-CvZ_FhyL.js +0 -2
- package/dist/adapters/KpiText.config-Bgkw8gr2.js +0 -2
- package/dist/adapters/KpiText.config-Bz9orqt6.cjs +0 -1
- package/dist/adapters/LineChart.config-BVew35dI.cjs +0 -1
- package/dist/adapters/LineChart.config-DSCCKXNg.js +0 -2
- package/dist/adapters/MarkdownChart.config-Bu6XUuhI.js +0 -2
- package/dist/adapters/MarkdownChart.config-E4aSVTf3.cjs +0 -1
- package/dist/adapters/MeasureProfileChart.config-BF249hc_.cjs +0 -1
- package/dist/adapters/MeasureProfileChart.config-lERVe38G.js +0 -2
- package/dist/adapters/PieChart.config-7Ujwp8R5.cjs +0 -1
- package/dist/adapters/PieChart.config-jQl2HIcA.js +0 -2
- package/dist/adapters/ProportionBarChart.config-o0w_Pnlt.js +0 -2
- package/dist/adapters/ProportionBarChart.config-phNohhhY.cjs +0 -1
- package/dist/adapters/RadarChart.config-BmrYBd9x.js +0 -2
- package/dist/adapters/RadarChart.config-Dlt3UflG.cjs +0 -1
- package/dist/adapters/RadialBarChart.config-CeEm8xRb.cjs +0 -1
- package/dist/adapters/RadialBarChart.config-Dishh6bC.js +0 -2
- package/dist/adapters/RetentionCombinedChart.config-BaD4ev85.cjs +0 -1
- package/dist/adapters/RetentionCombinedChart.config-m2FjBUi9.js +0 -2
- package/dist/adapters/RetentionHeatmap.config-DiMplGdk.js +0 -2
- package/dist/adapters/RetentionHeatmap.config-Dp6oYwQZ.cjs +0 -1
- package/dist/adapters/SankeyChart.config-C4Y6qzCS.cjs +0 -1
- package/dist/adapters/SankeyChart.config-CJHqgjQ1.js +0 -2
- package/dist/adapters/ScatterChart.config-C0QqvDrN.cjs +0 -1
- package/dist/adapters/ScatterChart.config-DywOsWPW.js +0 -2
- package/dist/adapters/SunburstChart.config-DE8RxpDR.cjs +0 -1
- package/dist/adapters/SunburstChart.config-DohowrO3.js +0 -2
- package/dist/adapters/TreeMapChart.config-D2gXz-zC.cjs +0 -1
- package/dist/adapters/TreeMapChart.config-HMlI29GG.js +0 -2
- package/dist/adapters/WaterfallChart.config-BO2WV2VB.js +0 -2
- package/dist/adapters/WaterfallChart.config-CzwGiheB.cjs +0 -1
- package/dist/adapters/compiler-BNjqYdmc.cjs +0 -166
- package/dist/adapters/core-CzFfrJzu.cjs +0 -1
- package/dist/adapters/handler-m6WgA9xu.cjs +0 -25
- package/dist/adapters/mcp-transport-B0b27YUB.cjs +0 -40
- package/dist/adapters/mcp-transport-BXyA4dTk.js +0 -603
- package/dist/adapters/utils-BoOeig94.cjs +0 -128
- package/dist/client/chunks/DashboardEditModal-BOfLdTgV.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-CEvHIlmk.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-4jfS8khG.js.map +0 -1
- package/dist/client/chunks/chart-data-table-DoDHQRe7.js.map +0 -1
- package/dist/client/chunks/charts-core-BPD_hLaL.js +0 -215
- package/dist/client/chunks/charts-core-BPD_hLaL.js.map +0 -1
- package/dist/client/chunks/charts-loader-CwMcOfwT.js +0 -85
- package/dist/client/chunks/charts-loader-CwMcOfwT.js.map +0 -1
- package/dist/client/chunks/nl-NL-DFLVORiD.js.map +0 -1
- package/dist/client/chunks/vendor-Qa1s8oSX.js.map +0 -1
|
@@ -1,9 +1,72 @@
|
|
|
1
1
|
import { SemanticQuery, QueryResult, SecurityContext, DatabaseExecutor, CubeMetadata, Cube, QueryAnalysis, CacheConfig, ExplainOptions, ExplainResult, ExecutionOptions, RLSSetupFn } from './types/index.js';
|
|
2
|
+
import { QueryValidationResult } from './query-validator.js';
|
|
2
3
|
import { PlanOptimiser } from './logical-plan/index.js';
|
|
3
4
|
export { validateQueryAgainstCubes } from './query-validator.js';
|
|
5
|
+
export type { QueryValidationIssue, QueryValidationResult } from './query-validator.js';
|
|
6
|
+
/**
|
|
7
|
+
* Identifier of the base cube set — the cubes registered with {@link
|
|
8
|
+
* SemanticLayerCompiler.registerCube}, shared by every tenant. The empty string
|
|
9
|
+
* is used so a set id can never collide with it (`registerCubeSet` rejects it).
|
|
10
|
+
*/
|
|
11
|
+
export declare const BASE_CUBE_SET_ID = "";
|
|
12
|
+
/**
|
|
13
|
+
* Security context for deployments with no tenancy at all.
|
|
14
|
+
*
|
|
15
|
+
* Every cube-resolving method requires a `SecurityContext` so that omitting one
|
|
16
|
+
* is a compile error rather than a silent fall back to the wrong tenant's
|
|
17
|
+
* cubes. Single-tenant callers pass this constant to say "no tenancy here" out
|
|
18
|
+
* loud, instead of an anonymous `{}` that reads like an oversight.
|
|
19
|
+
*/
|
|
20
|
+
export declare const SINGLE_TENANT_CONTEXT: SecurityContext;
|
|
21
|
+
/** Reported to `onCubeSetRegistered` after each {@link SemanticLayerCompiler.registerCubeSet}. */
|
|
22
|
+
export interface CubeSetRegistrationInfo {
|
|
23
|
+
/** The set that was registered. */
|
|
24
|
+
setId: string;
|
|
25
|
+
/** Cubes in the set after merging over the base set. */
|
|
26
|
+
cubeCount: number;
|
|
27
|
+
/** Total dimensions across those cubes — the number that explains a slow boot. */
|
|
28
|
+
dimensionCount: number;
|
|
29
|
+
/**
|
|
30
|
+
* Monotonic across the whole compiler — incremented on every registration of
|
|
31
|
+
* any set, never reset. Part of the cache key, so results computed from
|
|
32
|
+
* superseded definitions can never be served.
|
|
33
|
+
*/
|
|
34
|
+
generation: number;
|
|
35
|
+
/** Wall-clock cost of this registration. */
|
|
36
|
+
durationMs: number;
|
|
37
|
+
}
|
|
38
|
+
/** Aggregate registration cost, for a single summary line after the boot loop. */
|
|
39
|
+
export interface CubeSetStats {
|
|
40
|
+
/** Number of registered sets, excluding the base set. */
|
|
41
|
+
setCount: number;
|
|
42
|
+
/** Total cubes across all sets (merged), excluding the base set. */
|
|
43
|
+
cubeCount: number;
|
|
44
|
+
/** Sum of every set's most recent registration time. */
|
|
45
|
+
totalRegistrationMs: number;
|
|
46
|
+
/** The most expensive set to register, if any sets are registered. */
|
|
47
|
+
slowestSet?: {
|
|
48
|
+
setId: string;
|
|
49
|
+
durationMs: number;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
4
52
|
export declare class SemanticLayerCompiler {
|
|
5
|
-
|
|
6
|
-
private
|
|
53
|
+
/** Cubes shared by every tenant. */
|
|
54
|
+
private baseCubes;
|
|
55
|
+
/** Per-tenant overlays, keyed by cube-set id. */
|
|
56
|
+
private cubeSets;
|
|
57
|
+
/** Generated metadata per cube set (`BASE_CUBE_SET_ID` for the base set). */
|
|
58
|
+
private metadataCache;
|
|
59
|
+
/** Bumped on every base-set mutation; part of every set's cache key. */
|
|
60
|
+
private baseGeneration;
|
|
61
|
+
/**
|
|
62
|
+
* Monotonic registration counter, never reset. Used as each set's generation
|
|
63
|
+
* so that unregistering a set and registering a different one under the same
|
|
64
|
+
* id cannot reproduce an earlier cache key and serve its stale results.
|
|
65
|
+
*/
|
|
66
|
+
private registrationCounter;
|
|
67
|
+
private contextToCubeSetId?;
|
|
68
|
+
private missingCubeSet;
|
|
69
|
+
private onCubeSetRegistered?;
|
|
7
70
|
private cacheConfig?;
|
|
8
71
|
private rlsSetup?;
|
|
9
72
|
private planOptimiser?;
|
|
@@ -29,6 +92,25 @@ export declare class SemanticLayerCompiler {
|
|
|
29
92
|
* Defaults to a no-op IdentityOptimiser when omitted.
|
|
30
93
|
*/
|
|
31
94
|
planOptimiser?: PlanOptimiser;
|
|
95
|
+
/**
|
|
96
|
+
* Maps a security context to the cube set that serves it — drizzle-cube's
|
|
97
|
+
* equivalent of Cube's `contextToAppId`. Return `undefined` (or omit this
|
|
98
|
+
* option entirely) to serve the base set, which is the single-tenant
|
|
99
|
+
* behaviour and the default.
|
|
100
|
+
*/
|
|
101
|
+
contextToCubeSetId?: (securityContext: SecurityContext) => string | number | undefined;
|
|
102
|
+
/**
|
|
103
|
+
* What to do when `contextToCubeSetId` names a set that is not registered.
|
|
104
|
+
* `'base'` (default) serves the base set; `'throw'` fails the request, for
|
|
105
|
+
* deployments where every tenant is required to have its own set.
|
|
106
|
+
*/
|
|
107
|
+
missingCubeSet?: 'base' | 'throw';
|
|
108
|
+
/**
|
|
109
|
+
* Called after each `registerCubeSet` with its cost. Registering a set per
|
|
110
|
+
* tenant is real startup work, so it is reported rather than hidden; emit
|
|
111
|
+
* it to your own logger or metrics.
|
|
112
|
+
*/
|
|
113
|
+
onCubeSetRegistered?: (info: CubeSetRegistrationInfo) => void;
|
|
32
114
|
});
|
|
33
115
|
/**
|
|
34
116
|
* Set or update the database connection
|
|
@@ -65,12 +147,75 @@ export declare class SemanticLayerCompiler {
|
|
|
65
147
|
* Validates calculated measures during registration
|
|
66
148
|
*/
|
|
67
149
|
registerCube(cube: Cube): void;
|
|
150
|
+
/**
|
|
151
|
+
* Register the cubes that serve one tenant, overlaying the base set.
|
|
152
|
+
*
|
|
153
|
+
* Cubes are matched to the base set by name, so a set can either add cubes or
|
|
154
|
+
* replace a base cube with a tenant-specific version (the usual case for
|
|
155
|
+
* generated per-tenant dimensions). Call once per tenant at application boot;
|
|
156
|
+
* calling again for the same id replaces that set and invalidates its cached
|
|
157
|
+
* metadata and query results.
|
|
158
|
+
*/
|
|
159
|
+
registerCubeSet(setId: string, cubes: Cube[]): void;
|
|
160
|
+
/**
|
|
161
|
+
* Remove a tenant's cube set. That tenant then resolves to the base set (or
|
|
162
|
+
* throws, under `missingCubeSet: 'throw'`).
|
|
163
|
+
* Returns true if the set existed.
|
|
164
|
+
*/
|
|
165
|
+
unregisterCubeSet(setId: string): boolean;
|
|
166
|
+
/** Whether a cube set is registered for this id. */
|
|
167
|
+
hasCubeSet(setId: string): boolean;
|
|
168
|
+
/** Ids of every registered cube set, excluding the base set. */
|
|
169
|
+
getCubeSetIds(): string[];
|
|
170
|
+
/**
|
|
171
|
+
* Aggregate registration cost across all sets — for the single summary line
|
|
172
|
+
* worth logging after a boot loop.
|
|
173
|
+
*/
|
|
174
|
+
getCubeSetStats(): CubeSetStats;
|
|
175
|
+
/**
|
|
176
|
+
* Validate and enrich a cube ahead of registration, against the cubes that
|
|
177
|
+
* will be visible alongside it.
|
|
178
|
+
*/
|
|
179
|
+
private prepareCube;
|
|
180
|
+
/** Base cubes with an overlay applied over them, by cube name. */
|
|
181
|
+
private mergeWithBase;
|
|
182
|
+
/** Recompute every set's merged view — after any base-set mutation. */
|
|
183
|
+
private rebuildAllMergedSets;
|
|
184
|
+
/**
|
|
185
|
+
* Resolve the cube set serving this security context.
|
|
186
|
+
*
|
|
187
|
+
* Returns {@link BASE_CUBE_SET_ID} when no mapping is configured or the
|
|
188
|
+
* mapping yields nothing. A configured id that has no registered set falls
|
|
189
|
+
* back to the base set, or throws under `missingCubeSet: 'throw'`.
|
|
190
|
+
*/
|
|
191
|
+
private resolveSetId;
|
|
192
|
+
/**
|
|
193
|
+
* The cubes this security context may see.
|
|
194
|
+
*
|
|
195
|
+
* This is the only path by which cube *contents* are read for a query,
|
|
196
|
+
* metadata, validation or MCP response — so no such path can reach a cube
|
|
197
|
+
* list without a security context. The returned map must be treated as
|
|
198
|
+
* read-only; it is the live merged view, not a copy.
|
|
199
|
+
*/
|
|
200
|
+
private resolveCubes;
|
|
201
|
+
/**
|
|
202
|
+
* Cache-key component identifying which cube definitions produced a result.
|
|
203
|
+
*
|
|
204
|
+
* Appended unconditionally to every query cache key: the security-context
|
|
205
|
+
* hash is not enough, because `includeSecurityContext: false` and a custom
|
|
206
|
+
* `securityContextSerializer` can both hash two tenants identically. The
|
|
207
|
+
* generation makes re-registering a set invalidate its cached results, so a
|
|
208
|
+
* retyped or renamed dimension cannot be served stale for the TTL.
|
|
209
|
+
*/
|
|
210
|
+
private cubeSetCacheKey;
|
|
68
211
|
/**
|
|
69
212
|
* Validate that all string-based cube references in joins resolve to registered cubes.
|
|
70
213
|
* Call after all cubes are registered for strict startup validation.
|
|
71
214
|
* Throws an error listing all unresolved references.
|
|
72
215
|
*/
|
|
73
216
|
validateCubeReferences(): void;
|
|
217
|
+
/** Join targets naming a cube that is absent from the given cube scope. */
|
|
218
|
+
private unresolvedJoinRefs;
|
|
74
219
|
/**
|
|
75
220
|
* Validate calculated measures in a cube
|
|
76
221
|
* Checks template syntax, dependency existence, and circular dependencies
|
|
@@ -79,15 +224,17 @@ export declare class SemanticLayerCompiler {
|
|
|
79
224
|
/**
|
|
80
225
|
* Get a cube by name
|
|
81
226
|
*/
|
|
82
|
-
getCube(name: string): Cube | undefined;
|
|
227
|
+
getCube(name: string, securityContext: SecurityContext): Cube | undefined;
|
|
83
228
|
/**
|
|
84
229
|
* Get all registered cubes
|
|
85
230
|
*/
|
|
86
|
-
getAllCubes(): Cube[];
|
|
231
|
+
getAllCubes(securityContext: SecurityContext): Cube[];
|
|
87
232
|
/**
|
|
88
|
-
* Get all cubes as a Map for multi-cube queries
|
|
233
|
+
* Get all cubes as a Map for multi-cube queries.
|
|
234
|
+
*
|
|
235
|
+
* Returns the live merged view for this context — treat it as read-only.
|
|
89
236
|
*/
|
|
90
|
-
getAllCubesMap(): Map<string, Cube>;
|
|
237
|
+
getAllCubesMap(securityContext: SecurityContext): Map<string, Cube>;
|
|
91
238
|
/**
|
|
92
239
|
* Unified query execution method that handles both single and multi-cube queries
|
|
93
240
|
* @param options.skipCache - Skip cache lookup (but still cache the fresh result)
|
|
@@ -107,7 +254,7 @@ export declare class SemanticLayerCompiler {
|
|
|
107
254
|
* Uses caching to improve performance for repeated requests
|
|
108
255
|
* Cache is invalidated when cubes are modified (registerCube, removeCube, clearCubes)
|
|
109
256
|
*/
|
|
110
|
-
getMetadata(): CubeMetadata[];
|
|
257
|
+
getMetadata(securityContext: SecurityContext): CubeMetadata[];
|
|
111
258
|
/**
|
|
112
259
|
* Extract column name from Drizzle column reference
|
|
113
260
|
* Handles different column types and extracts the actual column name
|
|
@@ -172,7 +319,7 @@ export declare class SemanticLayerCompiler {
|
|
|
172
319
|
/**
|
|
173
320
|
* Check if a cube exists
|
|
174
321
|
*/
|
|
175
|
-
hasCube(name: string): boolean;
|
|
322
|
+
hasCube(name: string, securityContext: SecurityContext): boolean;
|
|
176
323
|
/**
|
|
177
324
|
* Unregister a cube by name.
|
|
178
325
|
* Returns true if the cube existed and was removed, false if not found.
|
|
@@ -191,18 +338,17 @@ export declare class SemanticLayerCompiler {
|
|
|
191
338
|
* Called whenever cubes are modified
|
|
192
339
|
*/
|
|
193
340
|
private invalidateMetadataCache;
|
|
341
|
+
/** Cubes for an already-resolved set id. */
|
|
342
|
+
private cubeSetId2Cubes;
|
|
194
343
|
/**
|
|
195
344
|
* Get cube names
|
|
196
345
|
*/
|
|
197
|
-
getCubeNames(): string[];
|
|
346
|
+
getCubeNames(securityContext: SecurityContext): string[];
|
|
198
347
|
/**
|
|
199
348
|
* Validate a query against registered cubes
|
|
200
349
|
* Ensures all referenced cubes and fields exist
|
|
201
350
|
*/
|
|
202
|
-
validateQuery(query: SemanticQuery):
|
|
203
|
-
isValid: boolean;
|
|
204
|
-
errors: string[];
|
|
205
|
-
};
|
|
351
|
+
validateQuery(query: SemanticQuery, securityContext: SecurityContext): QueryValidationResult;
|
|
206
352
|
/**
|
|
207
353
|
* Analyze query planning decisions for debugging and transparency
|
|
208
354
|
* Returns detailed metadata about how the query would be planned
|
|
@@ -6,7 +6,7 @@ export declare class QueryResultCache {
|
|
|
6
6
|
* Returns the cache key when caching is enabled and a provider is configured,
|
|
7
7
|
* otherwise undefined (which disables lookup and store).
|
|
8
8
|
*/
|
|
9
|
-
generateKey(query: SemanticQuery, securityContext: SecurityContext): string | undefined;
|
|
9
|
+
generateKey(query: SemanticQuery, securityContext: SecurityContext, cubeSetKey?: string): string | undefined;
|
|
10
10
|
/**
|
|
11
11
|
* Look up a cached result. Returns the cached value (with cache metadata
|
|
12
12
|
* attached) on a hit, or undefined on miss / bypass / no-cache. Emits
|
|
@@ -95,6 +95,21 @@ export declare class QueryExecutor {
|
|
|
95
95
|
* (e.g. comparison period sub-queries cache at the comparison level).
|
|
96
96
|
*/
|
|
97
97
|
private executeStandardQuery;
|
|
98
|
+
/**
|
|
99
|
+
* Count the rows the query would return with no limit or offset — Cube's
|
|
100
|
+
* `total`.
|
|
101
|
+
*
|
|
102
|
+
* Rebuilds the *same* physical plan with pagination and ordering stripped and
|
|
103
|
+
* counts over it as a subquery. The wrapper is what makes a grouped query
|
|
104
|
+
* count groups rather than base rows, and rebuilding from `planQuery` rather
|
|
105
|
+
* than reading the paginated query's effective values matters because
|
|
106
|
+
* `applyLimitAndOffset` injects a default limit when an offset arrives
|
|
107
|
+
* without one.
|
|
108
|
+
*
|
|
109
|
+
* Runs inside the caller's RLS context, so the count sees exactly the rows
|
|
110
|
+
* the page did.
|
|
111
|
+
*/
|
|
112
|
+
private executeTotalCount;
|
|
98
113
|
/**
|
|
99
114
|
* Create a query context with optional filter cache.
|
|
100
115
|
*/
|
|
@@ -1,18 +1,36 @@
|
|
|
1
1
|
//#region src/server/agent/providers/google.ts
|
|
2
|
-
function e(
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
function e(n, r = 0) {
|
|
3
|
+
if (!n || typeof n != "object") return "value";
|
|
4
|
+
let i = n, a = i.enum;
|
|
5
|
+
if (Array.isArray(a) && a.length > 0) return a.map((e) => typeof e == "string" ? `"${e}"` : String(e)).join("|");
|
|
6
|
+
let o = typeof i.type == "string" ? i.type.toLowerCase() : "value";
|
|
7
|
+
if (o === "array") return r >= t ? "array" : `array of ${e(i.items, r + 1)}`;
|
|
8
|
+
if (o === "object") {
|
|
9
|
+
let n = i.properties;
|
|
10
|
+
if (!n || r >= t) return "object";
|
|
11
|
+
let a = new Set(Array.isArray(i.required) ? i.required : []);
|
|
12
|
+
return `{ ${Object.entries(n).map(([t, n]) => {
|
|
13
|
+
let i = a.has(t) ? " (required)" : "";
|
|
14
|
+
return `${t}: ${e(n, r + 1)}${i}`;
|
|
15
|
+
}).join(", ")} }`;
|
|
16
|
+
}
|
|
17
|
+
return o;
|
|
18
|
+
}
|
|
19
|
+
var t = 3;
|
|
20
|
+
function n(t) {
|
|
21
|
+
let r = {}, i = [];
|
|
22
|
+
for (let [a, o] of Object.entries(t)) if (a === "type" && typeof o == "string") r[a] = o.toUpperCase();
|
|
23
|
+
else if (a === "properties" && typeof o == "object" && o) {
|
|
24
|
+
let e = {};
|
|
25
|
+
for (let [t, r] of Object.entries(o)) e[t] = typeof r == "object" && r ? n(r) : r;
|
|
26
|
+
r[a] = e;
|
|
27
|
+
} else a === "items" && typeof o == "object" && o ? r[a] = n(o) : (a === "anyOf" || a === "oneOf" || a === "allOf") && Array.isArray(o) ? r[a] = o.map((e) => e && typeof e == "object" ? n(e) : e) : a === "additionalProperties" ? o && typeof o == "object" && i.push(`Each value is: ${e(o)}.`) : a === "enum" && Array.isArray(o) && o.some((e) => typeof e != "string") ? i.push(`Allowed values: ${o.join(", ")}.`) : r[a] = o;
|
|
28
|
+
return i.length > 0 && (r.description = [typeof r.description == "string" ? r.description : "", ...i].filter(Boolean).join(" ")), r;
|
|
11
29
|
}
|
|
12
|
-
function
|
|
30
|
+
function r(e) {
|
|
13
31
|
return e === "STOP" ? "stop" : e === "MAX_TOKENS" ? "max_tokens" : e;
|
|
14
32
|
}
|
|
15
|
-
function*
|
|
33
|
+
function* i(e) {
|
|
16
34
|
if (e.text && !e.thought && (yield {
|
|
17
35
|
type: "text_delta",
|
|
18
36
|
text: e.text
|
|
@@ -29,7 +47,7 @@ function* n(e) {
|
|
|
29
47
|
}, yield { type: "tool_use_end" };
|
|
30
48
|
}
|
|
31
49
|
}
|
|
32
|
-
function
|
|
50
|
+
function a(e) {
|
|
33
51
|
let t = e._toolResults;
|
|
34
52
|
if (t && t.length > 0) return {
|
|
35
53
|
role: "user",
|
|
@@ -47,7 +65,7 @@ function r(e) {
|
|
|
47
65
|
parts: [{ text: n }]
|
|
48
66
|
} : null;
|
|
49
67
|
}
|
|
50
|
-
function
|
|
68
|
+
function o(e) {
|
|
51
69
|
let t = [];
|
|
52
70
|
for (let n of e) if (n.type === "text" && n.text) t.push({ text: n.text });
|
|
53
71
|
else if (n.type === "tool_use") {
|
|
@@ -59,8 +77,8 @@ function i(e) {
|
|
|
59
77
|
}
|
|
60
78
|
return t;
|
|
61
79
|
}
|
|
62
|
-
function
|
|
63
|
-
if (e.role === "tool_result") return
|
|
80
|
+
function s(e) {
|
|
81
|
+
if (e.role === "tool_result") return a(e);
|
|
64
82
|
if (e.role === "user") return {
|
|
65
83
|
role: "user",
|
|
66
84
|
parts: [{ text: typeof e.content == "string" ? e.content : JSON.stringify(e.content) }]
|
|
@@ -70,7 +88,7 @@ function a(e) {
|
|
|
70
88
|
role: "model",
|
|
71
89
|
parts: [{ text: e.content }]
|
|
72
90
|
};
|
|
73
|
-
let t =
|
|
91
|
+
let t = o(e.content);
|
|
74
92
|
return t.length > 0 ? {
|
|
75
93
|
role: "model",
|
|
76
94
|
parts: t
|
|
@@ -78,7 +96,7 @@ function a(e) {
|
|
|
78
96
|
}
|
|
79
97
|
return null;
|
|
80
98
|
}
|
|
81
|
-
var
|
|
99
|
+
var c = class {
|
|
82
100
|
apiKey;
|
|
83
101
|
sdk;
|
|
84
102
|
initialized = !1;
|
|
@@ -111,7 +129,7 @@ var o = class {
|
|
|
111
129
|
})).stream;
|
|
112
130
|
}
|
|
113
131
|
async *parseStreamEvents(e) {
|
|
114
|
-
let
|
|
132
|
+
let t = "stop", n = !1;
|
|
115
133
|
for await (let a of e) {
|
|
116
134
|
let e = a;
|
|
117
135
|
e.usageMetadata && (yield {
|
|
@@ -122,26 +140,26 @@ var o = class {
|
|
|
122
140
|
});
|
|
123
141
|
let o = e.candidates?.[0];
|
|
124
142
|
if (!o) continue;
|
|
125
|
-
o.finishReason && (
|
|
143
|
+
o.finishReason && (t = r(o.finishReason));
|
|
126
144
|
let s = o.content?.parts;
|
|
127
|
-
if (s) for (let e of s) for (let t of
|
|
145
|
+
if (s) for (let e of s) for (let t of i(e)) t.type === "tool_use_start" && (n = !0), yield t;
|
|
128
146
|
}
|
|
129
147
|
yield {
|
|
130
148
|
type: "message_meta",
|
|
131
|
-
stopReason:
|
|
149
|
+
stopReason: n ? "tool_use" : t
|
|
132
150
|
};
|
|
133
151
|
}
|
|
134
|
-
formatTools(
|
|
135
|
-
return
|
|
136
|
-
name:
|
|
137
|
-
description:
|
|
138
|
-
parameters: e
|
|
152
|
+
formatTools(e) {
|
|
153
|
+
return e.map((e) => ({
|
|
154
|
+
name: e.name,
|
|
155
|
+
description: e.description,
|
|
156
|
+
parameters: n(e.parameters)
|
|
139
157
|
}));
|
|
140
158
|
}
|
|
141
159
|
formatMessages(e, t) {
|
|
142
160
|
let n = [];
|
|
143
161
|
for (let t of e) {
|
|
144
|
-
let e =
|
|
162
|
+
let e = s(t);
|
|
145
163
|
e && n.push(e);
|
|
146
164
|
}
|
|
147
165
|
return { messages: n };
|
|
@@ -163,4 +181,4 @@ var o = class {
|
|
|
163
181
|
}
|
|
164
182
|
};
|
|
165
183
|
//#endregion
|
|
166
|
-
export {
|
|
184
|
+
export { c as GoogleProvider };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function e(
|
|
2
|
-
`),_toolResults:e}}shouldContinue(e){return e===`tool_use`}formatError(e){if(!e||!(e instanceof Error))return`Something went wrong. Please try again.`;let t=e.message||``,n=e;return n.status===429?`Too many requests. Please wait a moment and try again.`:n.status===403||n.status===401?`Authentication failed. Please check your API key configuration.`:n.status===503||n.status===500?`The AI service is temporarily unavailable. Please try again in a moment.`:t.includes(`SAFETY`)?`The request was blocked by safety filters. Please rephrase your request.`:t.includes(`RECITATION`)?`The response was blocked due to recitation concerns. Please try a different query.`:t.startsWith(`{`)||t.startsWith(`[`)?`The AI service encountered an error. Please try again.`:t}};exports.GoogleProvider=
|
|
1
|
+
function e(n,r=0){if(!n||typeof n!=`object`)return`value`;let i=n,a=i.enum;if(Array.isArray(a)&&a.length>0)return a.map(e=>typeof e==`string`?`"${e}"`:String(e)).join(`|`);let o=typeof i.type==`string`?i.type.toLowerCase():`value`;if(o===`array`)return r>=t?`array`:`array of ${e(i.items,r+1)}`;if(o===`object`){let n=i.properties;if(!n||r>=t)return`object`;let a=new Set(Array.isArray(i.required)?i.required:[]);return`{ ${Object.entries(n).map(([t,n])=>{let i=a.has(t)?` (required)`:``;return`${t}: ${e(n,r+1)}${i}`}).join(`, `)} }`}return o}var t=3;function n(t){let r={},i=[];for(let[a,o]of Object.entries(t))if(a===`type`&&typeof o==`string`)r[a]=o.toUpperCase();else if(a===`properties`&&typeof o==`object`&&o){let e={};for(let[t,r]of Object.entries(o))e[t]=typeof r==`object`&&r?n(r):r;r[a]=e}else a===`items`&&typeof o==`object`&&o?r[a]=n(o):(a===`anyOf`||a===`oneOf`||a===`allOf`)&&Array.isArray(o)?r[a]=o.map(e=>e&&typeof e==`object`?n(e):e):a===`additionalProperties`?o&&typeof o==`object`&&i.push(`Each value is: ${e(o)}.`):a===`enum`&&Array.isArray(o)&&o.some(e=>typeof e!=`string`)?i.push(`Allowed values: ${o.join(`, `)}.`):r[a]=o;return i.length>0&&(r.description=[typeof r.description==`string`?r.description:``,...i].filter(Boolean).join(` `)),r}function r(e){return e===`STOP`?`stop`:e===`MAX_TOKENS`?`max_tokens`:e}function*i(e){if(e.text&&!e.thought&&(yield{type:`text_delta`,text:e.text}),e.functionCall){let t=`gemini-tc-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,n=e.thoughtSignature?{thoughtSignature:e.thoughtSignature}:void 0;yield{type:`tool_use_start`,id:t,name:e.functionCall.name,...n?{metadata:n}:{}},yield{type:`tool_input_delta`,json:JSON.stringify(e.functionCall.args||{})},yield{type:`tool_use_end`}}}function a(e){let t=e._toolResults;if(t&&t.length>0)return{role:`user`,parts:t.map(e=>({functionResponse:{name:e.toolName||e.toolUseId,response:{content:e.content,isError:e.isError||!1}}}))};let n=typeof e.content==`string`?e.content:JSON.stringify(e.content);return n?{role:`user`,parts:[{text:n}]}:null}function o(e){let t=[];for(let n of e)if(n.type===`text`&&n.text)t.push({text:n.text});else if(n.type===`tool_use`){let e={functionCall:{name:n.name,args:n.input||{}}};n.metadata?.thoughtSignature&&(e.thoughtSignature=n.metadata.thoughtSignature),t.push(e)}return t}function s(e){if(e.role===`tool_result`)return a(e);if(e.role===`user`)return{role:`user`,parts:[{text:typeof e.content==`string`?e.content:JSON.stringify(e.content)}]};if(e.role===`assistant`){if(typeof e.content==`string`)return{role:`model`,parts:[{text:e.content}]};let t=o(e.content);return t.length>0?{role:`model`,parts:t}:null}return null}var c=class{apiKey;sdk;initialized=!1;constructor(e){this.apiKey=e}async ensureSDK(){if(!this.initialized){try{this.sdk=await Promise.resolve().then(()=>require("./dist-CohrBmKe.cjs"))}catch{throw Error(`@google/generative-ai is required for the Google provider. Install it with: npm install @google/generative-ai`)}this.initialized=!0}}async createStream(e){await this.ensureSDK();let{GoogleGenerativeAI:t}=this.sdk,n=new t(this.apiKey).getGenerativeModel({model:e.model,systemInstruction:e.system,generationConfig:{maxOutputTokens:e.maxTokens}}),{messages:r}=this.formatMessages(e.messages,e.system),i=this.formatTools(e.tools);return(await n.generateContentStream({contents:r,tools:i.length>0?[{functionDeclarations:i}]:void 0})).stream}async*parseStreamEvents(e){let t=`stop`,n=!1;for await(let a of e){let e=a;e.usageMetadata&&(yield{type:`message_meta`,inputTokens:e.usageMetadata.promptTokenCount,outputTokens:e.usageMetadata.candidatesTokenCount,stopReason:``});let o=e.candidates?.[0];if(!o)continue;o.finishReason&&(t=r(o.finishReason));let s=o.content?.parts;if(s)for(let e of s)for(let t of i(e))t.type===`tool_use_start`&&(n=!0),yield t}yield{type:`message_meta`,stopReason:n?`tool_use`:t}}formatTools(e){return e.map(e=>({name:e.name,description:e.description,parameters:n(e.parameters)}))}formatMessages(e,t){let n=[];for(let t of e){let e=s(t);e&&n.push(e)}return{messages:n}}formatToolResults(e){return{role:`tool_result`,content:e.map(e=>`${e.toolName||e.toolUseId}: ${e.content}`).join(`
|
|
2
|
+
`),_toolResults:e}}shouldContinue(e){return e===`tool_use`}formatError(e){if(!e||!(e instanceof Error))return`Something went wrong. Please try again.`;let t=e.message||``,n=e;return n.status===429?`Too many requests. Please wait a moment and try again.`:n.status===403||n.status===401?`Authentication failed. Please check your API key configuration.`:n.status===503||n.status===500?`The AI service is temporarily unavailable. Please try again in a moment.`:t.includes(`SAFETY`)?`The request was blocked by safety filters. Please rephrase your request.`:t.includes(`RECITATION`)?`The response was blocked due to recitation concerns. Please try a different query.`:t.startsWith(`{`)||t.startsWith(`[`)?`The AI service encountered an error. Please try again.`:t}};exports.GoogleProvider=c;
|