drizzle-cube 0.5.6 → 0.5.8
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/{server/dist-DxegvyZF.cjs → adapters/dist-BOdf-GQO.cjs} +1 -1
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +4 -4
- package/dist/adapters/fastify/index.cjs +2 -2
- package/dist/adapters/fastify/index.js +4 -4
- package/dist/{server/google-BXwMolCu.js → adapters/google-CFYljAOF.js} +1 -1
- package/dist/adapters/{google-Dgo9-Kb5.cjs → google-DUlXeeDA.cjs} +1 -1
- package/dist/adapters/{handler-Odsi9_Rd.js → handler-Cx8QYLk6.js} +20 -6
- package/dist/adapters/{handler-C0nUppAK.cjs → handler-CzbCuS6_.cjs} +4 -4
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +7 -7
- package/dist/adapters/{locale-Dy3LcTwN.js → locale-BPB7flIG.js} +16 -1
- package/dist/adapters/{locale-Dv6bl_eU.cjs → locale-tIMrNcCr.cjs} +6 -6
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +2 -2
- package/dist/adapters/mcp-transport-C2QzXm6h.cjs +40 -0
- package/dist/adapters/mcp-transport-D0B3S1tB.js +579 -0
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +4 -4
- package/dist/{server/openai-zpXlGbbF.js → adapters/openai-B5jEiqiB.js} +2139 -948
- package/dist/{server/openai-CLWSwD-D.js → adapters/openai-BZdAA7Ji.js} +1 -1
- package/dist/adapters/openai-D0musiYP.cjs +17 -0
- package/dist/adapters/{openai-BjLV_Wjx.cjs → openai-D_U4V0kT.cjs} +1 -1
- package/dist/adapters/{utils-Bd5mzZfk.js → utils-D9JPLmfl.js} +24 -10
- package/dist/adapters/{utils-DklqMBHn.cjs → utils-KV37IBIv.cjs} +4 -4
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.js +1 -1
- package/dist/client/charts/ChartLoader.d.ts +1 -1
- package/dist/client/charts.js +13 -13
- package/dist/client/chunks/DashboardEditModal-CjCIAT-J.js +9682 -0
- package/dist/client/chunks/DashboardEditModal-CjCIAT-J.js.map +1 -0
- package/dist/client/chunks/{RetentionCombinedChart-CivIny9P.js → RetentionCombinedChart-BPkfcTa8.js} +4 -4
- package/dist/client/chunks/{RetentionCombinedChart-CivIny9P.js.map → RetentionCombinedChart-BPkfcTa8.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-BHCgwZmB.js → RetentionHeatmap-DGzLzr7h.js} +3 -3
- package/dist/client/chunks/{RetentionHeatmap-BHCgwZmB.js.map → RetentionHeatmap-DGzLzr7h.js.map} +1 -1
- package/dist/client/chunks/{af-ZA-BdL6DOWy.js → af-ZA-BTaChuqI.js} +1 -1
- package/dist/client/chunks/{af-ZA-BdL6DOWy.js.map → af-ZA-BTaChuqI.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-MoGvbMRe.js → analysis-builder-MuMIzoRq.js} +244 -244
- package/dist/client/chunks/{analysis-builder-MoGvbMRe.js.map → analysis-builder-MuMIzoRq.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-DmyRh2O3.js → analysis-builder-shared-CYVwSPqt.js} +289 -289
- package/dist/client/chunks/{analysis-builder-shared-DmyRh2O3.js.map → analysis-builder-shared-CYVwSPqt.js.map} +1 -1
- package/dist/client/chunks/{chart-activity-grid-Bdb8U_NC.js → chart-activity-grid-DmruKPab.js} +13 -8
- package/dist/client/chunks/{chart-activity-grid-Bdb8U_NC.js.map → chart-activity-grid-DmruKPab.js.map} +1 -1
- package/dist/client/chunks/{chart-area-BZEnT-tf.js → chart-area-DHCPM4Em.js} +3 -3
- package/dist/client/chunks/{chart-area-BZEnT-tf.js.map → chart-area-DHCPM4Em.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-CTmdv_v0.js → chart-bar-KddciGDv.js} +4 -4
- package/dist/client/chunks/{chart-bar-CTmdv_v0.js.map → chart-bar-KddciGDv.js.map} +1 -1
- package/dist/client/chunks/{chart-box-plot-CYObdFtp.js → chart-box-plot-DYKfyOI8.js} +3 -3
- package/dist/client/chunks/{chart-box-plot-CYObdFtp.js.map → chart-box-plot-DYKfyOI8.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-CjFprySz.js → chart-bubble-CfqiB538.js} +3 -3
- package/dist/client/chunks/{chart-bubble-CjFprySz.js.map → chart-bubble-CfqiB538.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-D2HoM3B5.js → chart-candlestick-Dwc92Mrj.js} +3 -3
- package/dist/client/chunks/{chart-candlestick-D2HoM3B5.js.map → chart-candlestick-Dwc92Mrj.js.map} +1 -1
- package/dist/client/chunks/{chart-config-activity-grid-Bom99j9m.js → chart-config-activity-grid-D_UX4NHC.js} +2 -2
- package/dist/client/chunks/{chart-config-activity-grid-Bom99j9m.js.map → chart-config-activity-grid-D_UX4NHC.js.map} +1 -1
- package/dist/client/chunks/{chart-config-area-DtYTKZxS.js → chart-config-area-Bq_UsW3x.js} +2 -2
- package/dist/client/chunks/{chart-config-area-DtYTKZxS.js.map → chart-config-area-Bq_UsW3x.js.map} +1 -1
- package/dist/client/chunks/{chart-config-bar-7v5JVY2y.js → chart-config-bar-_JEGZnAu.js} +2 -2
- package/dist/client/chunks/{chart-config-bar-7v5JVY2y.js.map → chart-config-bar-_JEGZnAu.js.map} +1 -1
- package/dist/client/chunks/{chart-config-box-plot-BHGv-wqu.js → chart-config-box-plot-DJ-dWWXA.js} +2 -2
- package/dist/client/chunks/{chart-config-box-plot-BHGv-wqu.js.map → chart-config-box-plot-DJ-dWWXA.js.map} +1 -1
- package/dist/client/chunks/{chart-config-bubble-BkHm-mfu.js → chart-config-bubble-gIoqVyjZ.js} +2 -2
- package/dist/client/chunks/{chart-config-bubble-BkHm-mfu.js.map → chart-config-bubble-gIoqVyjZ.js.map} +1 -1
- package/dist/client/chunks/{chart-config-candlestick-D1aaHvTe.js → chart-config-candlestick-N6DchAA3.js} +2 -2
- package/dist/client/chunks/{chart-config-candlestick-D1aaHvTe.js.map → chart-config-candlestick-N6DchAA3.js.map} +1 -1
- package/dist/client/chunks/{chart-config-data-table-B_Hw8w2J.js → chart-config-data-table-d7VBY-y_.js} +2 -2
- package/dist/client/chunks/{chart-config-data-table-B_Hw8w2J.js.map → chart-config-data-table-d7VBY-y_.js.map} +1 -1
- package/dist/client/chunks/{chart-config-funnel-DL8PSGuL.js → chart-config-funnel-DEYMcxsD.js} +2 -2
- package/dist/client/chunks/{chart-config-funnel-DL8PSGuL.js.map → chart-config-funnel-DEYMcxsD.js.map} +1 -1
- package/dist/client/chunks/{chart-config-gauge-BVLxuA3f.js → chart-config-gauge-DSwC04l0.js} +2 -2
- package/dist/client/chunks/{chart-config-gauge-BVLxuA3f.js.map → chart-config-gauge-DSwC04l0.js.map} +1 -1
- package/dist/client/chunks/{chart-config-heat-map-CjudGdui.js → chart-config-heat-map-CfRnRNcw.js} +2 -2
- package/dist/client/chunks/{chart-config-heat-map-CjudGdui.js.map → chart-config-heat-map-CfRnRNcw.js.map} +1 -1
- package/dist/client/chunks/{chart-config-kpi-delta-Bf47hGqD.js → chart-config-kpi-delta-D6BIkHL3.js} +2 -2
- package/dist/client/chunks/{chart-config-kpi-delta-Bf47hGqD.js.map → chart-config-kpi-delta-D6BIkHL3.js.map} +1 -1
- package/dist/client/chunks/{chart-config-kpi-number-QTQRNgOi.js → chart-config-kpi-number-Bx-V9a62.js} +2 -2
- package/dist/client/chunks/{chart-config-kpi-number-QTQRNgOi.js.map → chart-config-kpi-number-Bx-V9a62.js.map} +1 -1
- package/dist/client/chunks/{chart-config-kpi-text-BRze2eyh.js → chart-config-kpi-text-CcqC1u-8.js} +2 -2
- package/dist/client/chunks/{chart-config-kpi-text-BRze2eyh.js.map → chart-config-kpi-text-CcqC1u-8.js.map} +1 -1
- package/dist/client/chunks/{chart-config-line-BFeCqmKH.js → chart-config-line-Db3jDsWc.js} +2 -2
- package/dist/client/chunks/{chart-config-line-BFeCqmKH.js.map → chart-config-line-Db3jDsWc.js.map} +1 -1
- package/dist/client/chunks/{chart-config-markdown-EWYckwXv.js → chart-config-markdown-BtRIe8JN.js} +2 -2
- package/dist/client/chunks/{chart-config-markdown-EWYckwXv.js.map → chart-config-markdown-BtRIe8JN.js.map} +1 -1
- package/dist/client/chunks/{chart-config-measure-profile-B9nIhqKR.js → chart-config-measure-profile-DxRGa-zf.js} +2 -2
- package/dist/client/chunks/{chart-config-measure-profile-B9nIhqKR.js.map → chart-config-measure-profile-DxRGa-zf.js.map} +1 -1
- package/dist/client/chunks/{chart-config-pie-6LHtEyMM.js → chart-config-pie-DD4SmRTF.js} +2 -2
- package/dist/client/chunks/{chart-config-pie-6LHtEyMM.js.map → chart-config-pie-DD4SmRTF.js.map} +1 -1
- package/dist/client/chunks/{chart-config-radar-BuLS6Inn.js → chart-config-radar-CC2XAaGr.js} +2 -2
- package/dist/client/chunks/{chart-config-radar-BuLS6Inn.js.map → chart-config-radar-CC2XAaGr.js.map} +1 -1
- package/dist/client/chunks/{chart-config-radial-bar-BP0eMohx.js → chart-config-radial-bar-DmxKx1R0.js} +2 -2
- package/dist/client/chunks/{chart-config-radial-bar-BP0eMohx.js.map → chart-config-radial-bar-DmxKx1R0.js.map} +1 -1
- package/dist/client/chunks/{chart-config-sankey-CT8oGIGP.js → chart-config-sankey-BTnWA7EW.js} +2 -2
- package/dist/client/chunks/{chart-config-sankey-CT8oGIGP.js.map → chart-config-sankey-BTnWA7EW.js.map} +1 -1
- package/dist/client/chunks/{chart-config-scatter-DOSpN07Z.js → chart-config-scatter-DSYTjwRb.js} +2 -2
- package/dist/client/chunks/{chart-config-scatter-DOSpN07Z.js.map → chart-config-scatter-DSYTjwRb.js.map} +1 -1
- package/dist/client/chunks/{chart-config-sunburst-BSUX_YoB.js → chart-config-sunburst-Bwjtdf7X.js} +2 -2
- package/dist/client/chunks/{chart-config-sunburst-BSUX_YoB.js.map → chart-config-sunburst-Bwjtdf7X.js.map} +1 -1
- package/dist/client/chunks/{chart-config-tree-map-D8GuAgVB.js → chart-config-tree-map-BI-oQStO.js} +2 -2
- package/dist/client/chunks/{chart-config-tree-map-D8GuAgVB.js.map → chart-config-tree-map-BI-oQStO.js.map} +1 -1
- package/dist/client/chunks/{chart-config-waterfall-BDi7BoJP.js → chart-config-waterfall-DSnyixbI.js} +2 -2
- package/dist/client/chunks/{chart-config-waterfall-BDi7BoJP.js.map → chart-config-waterfall-DSnyixbI.js.map} +1 -1
- package/dist/client/chunks/{chart-data-table-DT4uBZaq.js → chart-data-table-BO4sXsim.js} +842 -834
- package/dist/client/chunks/chart-data-table-BO4sXsim.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-B9crR3b3.js → chart-funnel-DnWRsmnS.js} +3 -3
- package/dist/client/chunks/{chart-funnel-B9crR3b3.js.map → chart-funnel-DnWRsmnS.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-DAMFsicz.js → chart-gauge-CgMeqeGb.js} +3 -3
- package/dist/client/chunks/{chart-gauge-DAMFsicz.js.map → chart-gauge-CgMeqeGb.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-BxgM_X1G.js → chart-heat-map-DcGm9SWK.js} +3 -3
- package/dist/client/chunks/{chart-heat-map-BxgM_X1G.js.map → chart-heat-map-DcGm9SWK.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-DJKL02Ut.js → chart-kpi-delta-C2wKPqCb.js} +6 -6
- package/dist/client/chunks/{chart-kpi-delta-DJKL02Ut.js.map → chart-kpi-delta-C2wKPqCb.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-CuNEYbRx.js → chart-kpi-number-gWYF44ol.js} +8 -8
- package/dist/client/chunks/{chart-kpi-number-CuNEYbRx.js.map → chart-kpi-number-gWYF44ol.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-u8FJaZDQ.js → chart-kpi-text-DIYtJtk4.js} +4 -4
- package/dist/client/chunks/{chart-kpi-text-u8FJaZDQ.js.map → chart-kpi-text-DIYtJtk4.js.map} +1 -1
- package/dist/client/chunks/{chart-line-BZhzOjRl.js → chart-line-9BEGN5Ti.js} +4 -4
- package/dist/client/chunks/{chart-line-BZhzOjRl.js.map → chart-line-9BEGN5Ti.js.map} +1 -1
- package/dist/client/chunks/chart-markdown-dgUetjyM.js +3654 -0
- package/dist/client/chunks/chart-markdown-dgUetjyM.js.map +1 -0
- package/dist/client/chunks/{chart-measure-profile-BnpIOS4Q.js → chart-measure-profile-ClfpLs4q.js} +4 -4
- package/dist/client/chunks/{chart-measure-profile-BnpIOS4Q.js.map → chart-measure-profile-ClfpLs4q.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-CsdzxmSK.js → chart-pie-BjAIhyOi.js} +4 -4
- package/dist/client/chunks/{chart-pie-CsdzxmSK.js.map → chart-pie-BjAIhyOi.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-C_9RwMKw.js → chart-radar-Dgkcl2bN.js} +4 -4
- package/dist/client/chunks/{chart-radar-C_9RwMKw.js.map → chart-radar-Dgkcl2bN.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-CewRelyQ.js → chart-radial-bar-DdWJjAhK.js} +4 -4
- package/dist/client/chunks/{chart-radial-bar-CewRelyQ.js.map → chart-radial-bar-DdWJjAhK.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-ItraHWH1.js → chart-sankey-M3XpO_ah.js} +3 -3
- package/dist/client/chunks/{chart-sankey-ItraHWH1.js.map → chart-sankey-M3XpO_ah.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-k2IJbO2Y.js → chart-scatter-DaHYP_OL.js} +4 -4
- package/dist/client/chunks/{chart-scatter-k2IJbO2Y.js.map → chart-scatter-DaHYP_OL.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-NsFRuqi9.js → chart-sunburst-A_u6lqlS.js} +4 -4
- package/dist/client/chunks/{chart-sunburst-NsFRuqi9.js.map → chart-sunburst-A_u6lqlS.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-Cj_ewpwJ.js → chart-tree-map-uiwUU4nb.js} +4 -4
- package/dist/client/chunks/{chart-tree-map-Cj_ewpwJ.js.map → chart-tree-map-uiwUU4nb.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-C-MTFcOz.js → chart-waterfall-BuhMoagf.js} +4 -4
- package/dist/client/chunks/{chart-waterfall-C-MTFcOz.js.map → chart-waterfall-BuhMoagf.js.map} +1 -1
- package/dist/client/chunks/{charts-core-vZA3zPKb.js → charts-core-jRtb0S2M.js} +2 -2
- package/dist/client/chunks/{charts-core-vZA3zPKb.js.map → charts-core-jRtb0S2M.js.map} +1 -1
- package/dist/client/chunks/{core-Su6tIYhp.js → core-D7vPfUIe.js} +84 -84
- package/dist/client/chunks/{core-Su6tIYhp.js.map → core-D7vPfUIe.js.map} +1 -1
- package/dist/client/chunks/{dist-BTq3NoG3.js → dist-zPWyTBdU.js} +1 -1
- package/dist/client/chunks/{dist-BTq3NoG3.js.map → dist-zPWyTBdU.js.map} +1 -1
- package/dist/client/chunks/{en-US-D-1JPTPv.js → en-US-BE6VoG0o.js} +1 -1
- package/dist/client/chunks/{en-US-D-1JPTPv.js.map → en-US-BE6VoG0o.js.map} +1 -1
- package/dist/client/chunks/{exceljs.min-Dc1cBQ5l.js → exceljs.min-CIqBqwTW.js} +2 -2
- package/dist/client/chunks/{exceljs.min-Dc1cBQ5l.js.map → exceljs.min-CIqBqwTW.js.map} +1 -1
- package/dist/client/chunks/{javascript-YXkoOgWa.js → javascript-DFnKaHmQ.js} +3 -3
- package/dist/client/chunks/{javascript-YXkoOgWa.js.map → javascript-DFnKaHmQ.js.map} +1 -1
- package/dist/client/chunks/{json-O7MKB_4V.js → json-Cu6rbgWf.js} +1 -1
- package/dist/client/chunks/{json-O7MKB_4V.js.map → json-Cu6rbgWf.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-BErZMygi.js → nl-NL-CpVs7ox3.js} +7 -2
- package/dist/client/chunks/{nl-NL-BErZMygi.js.map → nl-NL-CpVs7ox3.js.map} +1 -1
- package/dist/client/chunks/{providers-DX3Vw5kc.js → providers-DwQCKdGW.js} +1 -1
- package/dist/client/chunks/{providers-DX3Vw5kc.js.map → providers-DwQCKdGW.js.map} +1 -1
- package/dist/client/chunks/{retention-YhT1Oohi.js → retention-ChW9jYdy.js} +1 -1
- package/dist/client/chunks/{retention-YhT1Oohi.js.map → retention-ChW9jYdy.js.map} +1 -1
- package/dist/client/chunks/{schema-visualization-BY9L2nBQ.js → schema-visualization-DE09kQE3.js} +5 -5
- package/dist/client/chunks/{schema-visualization-BY9L2nBQ.js.map → schema-visualization-DE09kQE3.js.map} +1 -1
- package/dist/client/chunks/{sql-r2a-9CCK.js → sql-CmVzGP4w.js} +1 -1
- package/dist/client/chunks/{sql-r2a-9CCK.js.map → sql-CmVzGP4w.js.map} +1 -1
- package/dist/client/chunks/{useDebounce-DGfYXtkm.js → useDirtyStateTracking-CoeQbprt.js} +99 -37
- package/dist/client/chunks/useDirtyStateTracking-CoeQbprt.js.map +1 -0
- package/dist/client/chunks/{useExplainAI-CD0KuKwY.js → useExplainAI-DlnXWdmz.js} +19 -19
- package/dist/client/chunks/{useExplainAI-CD0KuKwY.js.map → useExplainAI-DlnXWdmz.js.map} +1 -1
- package/dist/client/chunks/{useNotebookLayout-DKkMenhj.js → useNotebookLayout-Ck3Z3uzg.js} +2 -2
- package/dist/client/chunks/{useNotebookLayout-DKkMenhj.js.map → useNotebookLayout-Ck3Z3uzg.js.map} +1 -1
- package/dist/client/chunks/{utils-D2SCtAkZ.js → utils-CTKNaXS8.js} +40 -13
- package/dist/client/chunks/utils-CTKNaXS8.js.map +1 -0
- package/dist/client/chunks/{vendor-CfR5hJGc.js → vendor-CPIYyeuD.js} +102 -97
- package/dist/client/chunks/vendor-CPIYyeuD.js.map +1 -0
- package/dist/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +2 -1
- package/dist/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchItem.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchModal.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FilterConfigModal.d.ts +2 -1
- package/dist/client/components/AnalysisBuilder/LimitSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +1 -1
- package/dist/client/components/AnalyticsDashboard.d.ts +1 -1
- package/dist/client/components/AnalyticsPage.d.ts +1 -1
- package/dist/client/components/ChartErrorBoundary.d.ts +1 -1
- package/dist/client/components/ChartTypeSelector.d.ts +1 -1
- package/dist/client/components/ColorPaletteSelector.d.ts +1 -1
- package/dist/client/components/DashboardEditModal.d.ts +2 -1
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +1 -1
- package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +1 -1
- package/dist/client/components/DashboardGrid.d.ts +3 -1
- package/dist/client/components/DashboardThumbnailPlaceholder.d.ts +1 -1
- package/dist/client/components/DataBrowser/DataBrowserSidebar.d.ts +1 -1
- package/dist/client/components/DataBrowser/DataBrowserToolbar.d.ts +1 -1
- package/dist/client/components/DataBrowser/index.d.ts +1 -1
- package/dist/client/components/DataHistogram.d.ts +1 -1
- package/dist/client/components/DebugModal.d.ts +1 -1
- package/dist/client/components/DrillBreadcrumb.d.ts +2 -1
- package/dist/client/components/LoadingIndicator.d.ts +1 -1
- package/dist/client/components/MobileStackedLayout.d.ts +1 -1
- package/dist/client/components/PortletAnalysisModal.d.ts +1 -1
- package/dist/client/components/PortletContainer.d.ts +1 -1
- package/dist/client/components/PortletFilterConfigModal.d.ts +6 -4
- package/dist/client/components/RowManagedLayout.d.ts +1 -1
- package/dist/client/components/ScaledGridWrapper.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/CubeNode.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/RelationshipEdge.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/index.d.ts +1 -1
- package/dist/client/components/TextPortletModal.d.ts +1 -1
- package/dist/client/components/charts/AxisFormatControls.d.ts +2 -2
- package/dist/client/components/charts/ChartContainer.d.ts +1 -1
- package/dist/client/components/charts/ChartLegend.d.ts +1 -1
- package/dist/client/components/charts/ChartTooltip.d.ts +1 -1
- package/dist/client/components/charts/MissingDependencyFallback.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardContext.d.ts +113 -0
- package/dist/client/components/dashboard/DashboardCoordinator.d.ts +2 -0
- package/dist/client/components/dashboard/DashboardFilterBar.d.ts +8 -0
- package/dist/client/components/dashboard/DashboardGridSurface.d.ts +8 -0
- package/dist/client/components/dashboard/DashboardModals.d.ts +8 -0
- package/dist/client/components/dashboard/DashboardProvider.d.ts +2 -0
- package/dist/client/components/dashboard/DashboardToolbar.d.ts +11 -0
- package/dist/client/components/dashboard/dashboardGridUtils.d.ts +17 -0
- package/dist/client/components/dashboard/index.d.ts +13 -0
- package/dist/client/components.d.ts +2 -0
- package/dist/client/components.js +3 -4
- package/dist/client/hooks/dashboard/useDashboardController.d.ts +2 -2
- package/dist/client/hooks/useDashboardHook.d.ts +2 -2
- package/dist/client/hooks.js +5 -6
- package/dist/client/icons.d.ts +1 -1
- package/dist/client/icons.js +2 -2
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.js +161 -163
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers/CubeApiProvider.d.ts +1 -1
- package/dist/client/providers/CubeFeaturesProvider.d.ts +1 -1
- package/dist/client/providers/CubeMetaProvider.d.ts +1 -1
- package/dist/client/providers/CubeProvider.d.ts +1 -1
- package/dist/client/providers/I18nProvider.d.ts +1 -1
- package/dist/client/providers.js +3 -3
- package/dist/client/schema.js +1 -1
- package/dist/client/stores/analysisBuilderStore.d.ts +1 -1
- package/dist/client/stores/dashboardStore.d.ts +1 -1
- package/dist/client/stores/dataBrowserStore.d.ts +1 -1
- package/dist/client/stores/notebookStore.d.ts +1 -1
- package/dist/client/styles.css +1 -1
- package/dist/client/types/drill.d.ts +1 -1
- package/dist/client/types.d.ts +7 -2
- package/dist/client/utils/drillQueryBuilder.d.ts +2 -2
- package/dist/client/utils/filterUtils.d.ts +33 -5
- package/dist/client/utils/joinReachability.d.ts +27 -0
- package/dist/client/utils.js +6 -7
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +78 -52
- package/dist/{adapters/dist-Boc63-1q.cjs → server/dist-BOdf-GQO.cjs} +1 -1
- package/dist/{adapters/google-CT4kgmBf.js → server/google-CFYljAOF.js} +1 -1
- package/dist/server/{google-DzQWXFwF.cjs → google-DUlXeeDA.cjs} +1 -1
- package/dist/server/index.cjs +11 -11
- package/dist/server/index.d.ts +2 -5050
- package/dist/server/index.js +58 -15
- package/dist/{adapters/openai-CuUGrKaK.js → server/openai-B5jEiqiB.js} +2139 -948
- package/dist/{adapters/openai-DQawCWQb.js → server/openai-BZdAA7Ji.js} +1 -1
- package/dist/server/openai-D0musiYP.cjs +17 -0
- package/dist/server/{openai-BfiZU0rG.cjs → openai-D_U4V0kT.cjs} +1 -1
- package/dist/server/server/adapters/base-adapter.d.ts +287 -0
- package/dist/server/server/adapters/databend-adapter.d.ts +114 -0
- package/dist/server/server/adapters/duckdb-adapter.d.ts +122 -0
- package/dist/server/server/adapters/mysql-adapter.d.ts +122 -0
- package/dist/server/server/adapters/postgres-adapter.d.ts +119 -0
- package/dist/server/server/adapters/singlestore-adapter.d.ts +4 -0
- package/dist/server/server/adapters/snowflake-adapter.d.ts +116 -0
- package/dist/server/server/adapters/sqlite-adapter.d.ts +140 -0
- package/dist/server/server/agent/chart-validation.d.ts +27 -0
- package/dist/server/server/agent/handler.d.ts +25 -0
- package/dist/server/server/agent/index.d.ts +11 -0
- package/dist/server/server/agent/providers/anthropic.d.ts +24 -0
- package/dist/server/server/agent/providers/factory.d.ts +12 -0
- package/dist/server/server/agent/providers/google.d.ts +23 -0
- package/dist/server/server/agent/providers/index.d.ts +6 -0
- package/dist/server/server/agent/providers/openai.d.ts +26 -0
- package/dist/server/server/agent/providers/types.d.ts +95 -0
- package/dist/server/server/agent/system-prompt.d.ts +5 -0
- package/dist/server/server/agent/tools.d.ts +28 -0
- package/dist/server/server/agent/types.d.ts +192 -0
- package/dist/server/server/ai/discovery.d.ts +62 -0
- package/dist/server/server/ai/index.d.ts +10 -0
- package/dist/server/server/ai/mcp-prompts.d.ts +83 -0
- package/dist/server/server/ai/query-schema.d.ts +258 -0
- package/dist/server/server/ai/schemas.d.ts +63 -0
- package/dist/server/server/ai/suggestion.d.ts +19 -0
- package/dist/server/server/ai/validation.d.ts +34 -0
- package/dist/server/server/builders/comparison-query-builder.d.ts +70 -0
- package/dist/server/server/builders/cte-builder.d.ts +62 -0
- package/dist/server/server/builders/date-time-builder.d.ts +29 -0
- package/dist/server/server/builders/filter-builder.d.ts +23 -0
- package/dist/server/server/builders/flow-query-builder.d.ts +109 -0
- package/dist/server/server/builders/funnel-query-builder.d.ts +134 -0
- package/dist/server/server/builders/group-by-builder.d.ts +27 -0
- package/dist/server/server/builders/index.d.ts +13 -0
- package/dist/server/server/builders/measure-builder.d.ts +142 -0
- package/dist/server/server/builders/retention-query-builder.d.ts +100 -0
- package/dist/server/server/cache-providers/index.d.ts +5 -0
- package/dist/server/server/cache-providers/memory.d.ts +105 -0
- package/dist/server/server/cache-utils.d.ts +65 -0
- package/dist/server/server/compiler.d.ts +218 -0
- package/dist/server/server/cube-utils.d.ts +133 -0
- package/dist/server/server/database-utils.d.ts +18 -0
- package/dist/server/server/executor.d.ts +183 -0
- package/dist/server/server/executors/base-executor.d.ts +16 -0
- package/dist/server/server/executors/databend-executor.d.ts +33 -0
- package/dist/server/server/executors/duckdb-executor.d.ts +33 -0
- package/dist/server/server/executors/index.d.ts +21 -0
- package/dist/server/server/executors/mysql-executor.d.ts +27 -0
- package/dist/server/server/executors/postgres-executor.d.ts +27 -0
- package/dist/server/server/executors/singlestore-executor.d.ts +9 -0
- package/dist/server/server/executors/snowflake-executor.d.ts +33 -0
- package/dist/server/server/executors/sqlite-executor.d.ts +28 -0
- package/dist/server/server/explain/databend-parser.d.ts +16 -0
- package/dist/server/server/explain/duckdb-parser.d.ts +28 -0
- package/dist/server/server/explain/index.d.ts +9 -0
- package/dist/server/server/explain/mysql-parser.d.ts +38 -0
- package/dist/server/server/explain/postgres-parser.d.ts +18 -0
- package/dist/server/server/explain/snowflake-parser.d.ts +17 -0
- package/dist/server/server/explain/sqlite-parser.d.ts +23 -0
- package/dist/server/server/filter-cache.d.ts +73 -0
- package/dist/server/server/gap-filler.d.ts +42 -0
- package/dist/server/server/index.d.ts +36 -0
- package/dist/server/server/logical-plan/index.d.ts +14 -0
- package/dist/server/server/logical-plan/logical-plan-builder.d.ts +58 -0
- package/dist/server/server/logical-plan/logical-planner.d.ts +232 -0
- package/dist/server/server/logical-plan/optimiser.d.ts +32 -0
- package/dist/server/server/logical-plan/types.d.ts +191 -0
- package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
- package/dist/server/server/physical-plan/drizzle-sql-builder.d.ts +107 -0
- package/dist/server/server/physical-plan/index.d.ts +2 -0
- package/dist/server/server/physical-plan/processors/cte-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/index.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/joins-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/predicates-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/selection-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/shared.d.ts +33 -0
- package/dist/server/server/physical-plan/processors/window-processor.d.ts +6 -0
- package/dist/server/server/prompts/explain-analysis-prompt.d.ts +47 -0
- package/dist/server/server/prompts/index.d.ts +27 -0
- package/dist/server/server/prompts/single-step-prompt.d.ts +31 -0
- package/dist/server/server/prompts/step0-validation-prompt.d.ts +39 -0
- package/dist/server/server/prompts/step1-shape-prompt.d.ts +29 -0
- package/dist/server/server/prompts/step2-complete-prompt.d.ts +19 -0
- package/dist/server/server/prompts/types.d.ts +37 -0
- package/dist/server/server/resolvers/calculated-measure-resolver.d.ts +93 -0
- package/dist/server/server/resolvers/index.d.ts +6 -0
- package/dist/server/server/resolvers/join-path-resolver.d.ts +152 -0
- package/dist/server/server/template-substitution.d.ts +57 -0
- package/dist/server/server/types/analysis.d.ts +189 -0
- package/dist/server/server/types/cache.d.ts +132 -0
- package/dist/server/server/types/core.d.ts +164 -0
- package/dist/server/server/types/cube.d.ts +530 -0
- package/dist/server/server/types/executor.d.ts +156 -0
- package/dist/server/server/types/flow.d.ts +143 -0
- package/dist/server/server/types/funnel.d.ts +118 -0
- package/dist/server/server/types/index.d.ts +11 -0
- package/dist/server/server/types/metadata.d.ts +113 -0
- package/dist/server/server/types/query.d.ts +153 -0
- package/dist/server/server/types/retention.d.ts +141 -0
- package/dist/server/server/types/utils.d.ts +11 -0
- package/package.json +6 -6
- package/dist/adapters/mcp-transport-BCtjU0lC.cjs +0 -40
- package/dist/adapters/mcp-transport-DW_Uks-O.js +0 -579
- package/dist/adapters/openai-Bgri5TJc.cjs +0 -16
- package/dist/client/chunks/DashboardEditModal-BiJwVv0b.js +0 -6696
- package/dist/client/chunks/DashboardEditModal-BiJwVv0b.js.map +0 -1
- package/dist/client/chunks/FieldSearchModal-DdcbCwAi.js +0 -2660
- package/dist/client/chunks/FieldSearchModal-DdcbCwAi.js.map +0 -1
- package/dist/client/chunks/chart-data-table-DT4uBZaq.js.map +0 -1
- package/dist/client/chunks/chart-markdown-DEtjn8gx.js +0 -3539
- package/dist/client/chunks/chart-markdown-DEtjn8gx.js.map +0 -1
- package/dist/client/chunks/syntaxHighlighting-5zHcjn27.js +0 -30
- package/dist/client/chunks/syntaxHighlighting-5zHcjn27.js.map +0 -1
- package/dist/client/chunks/useDebounce-DGfYXtkm.js.map +0 -1
- package/dist/client/chunks/useDirtyStateTracking-KAjwj1Ht.js +0 -66
- package/dist/client/chunks/useDirtyStateTracking-KAjwj1Ht.js.map +0 -1
- package/dist/client/chunks/utils-D2SCtAkZ.js.map +0 -1
- package/dist/client/chunks/vendor-CfR5hJGc.js.map +0 -1
- package/dist/server/openai-BwsBio1K.cjs +0 -16
- /package/dist/adapters/{express → adapters/express}/index.d.ts +0 -0
- /package/dist/adapters/{fastify → adapters/fastify}/index.d.ts +0 -0
- /package/dist/adapters/{hono → adapters/hono}/index.d.ts +0 -0
- /package/dist/adapters/{locale.d.ts → adapters/locale.d.ts} +0 -0
- /package/dist/adapters/{mcp-tools.d.ts → adapters/mcp-tools.d.ts} +0 -0
- /package/dist/adapters/{mcp-transport.d.ts → adapters/mcp-transport.d.ts} +0 -0
- /package/dist/adapters/{nextjs → adapters/nextjs}/index.d.ts +0 -0
- /package/dist/adapters/{types.d.ts → adapters/types.d.ts} +0 -0
- /package/dist/adapters/{utils.d.ts → adapters/utils.d.ts} +0 -0
- /package/dist/adapters/{anthropic-B_rg0BhK.js → anthropic-CZh4hB-m.js} +0 -0
- /package/dist/adapters/{anthropic-BIva8k1r.cjs → anthropic-DG4r1LSm.cjs} +0 -0
- /package/dist/adapters/{dist-De5fzUEM.js → dist-CH3hwAUk.js} +0 -0
- /package/dist/client/chunks/{rolldown-runtime-CKnJJeip.js → rolldown-runtime-CWhphoD1.js} +0 -0
- /package/dist/server/{anthropic-BsNspi1r.js → anthropic-CZh4hB-m.js} +0 -0
- /package/dist/server/{anthropic-DsCEX6Fm.cjs → anthropic-DG4r1LSm.cjs} +0 -0
- /package/dist/server/{dist-CMWZC51B.js → dist-CH3hwAUk.js} +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SemanticLayerCompiler } from '../compiler';
|
|
2
|
+
import { SecurityContext } from '../types';
|
|
3
|
+
import { AgentSSEEvent } from './types';
|
|
4
|
+
import { ToolDefinition } from './providers/types';
|
|
5
|
+
/**
|
|
6
|
+
* Result of executing a tool call
|
|
7
|
+
*/
|
|
8
|
+
export interface ToolExecutionResult {
|
|
9
|
+
/** String content to return as tool_result */
|
|
10
|
+
result: string;
|
|
11
|
+
/** Whether the tool call errored */
|
|
12
|
+
isError?: boolean;
|
|
13
|
+
/** Optional SSE event to emit as a side effect (add_portlet, add_markdown) */
|
|
14
|
+
sideEffect?: AgentSSEEvent;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Returns the array of tool definitions for the Anthropic Messages API.
|
|
18
|
+
* Plain JSON schema — no Zod dependency.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getToolDefinitions(): ToolDefinition[];
|
|
21
|
+
/**
|
|
22
|
+
* Create a tool executor map that closes over the semantic layer and security context.
|
|
23
|
+
* Returns a Map<toolName, handler> where each handler takes parsed input and returns a result.
|
|
24
|
+
*/
|
|
25
|
+
export declare function createToolExecutor(options: {
|
|
26
|
+
semanticLayer: SemanticLayerCompiler;
|
|
27
|
+
securityContext: SecurityContext;
|
|
28
|
+
}): Map<string, (input: Record<string, unknown>) => Promise<ToolExecutionResult>>;
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { ChartType, ChartAxisConfig, ChartDisplayConfig, DashboardConfig } from '../../client/types';
|
|
2
|
+
/**
|
|
3
|
+
* A tool call from a prior conversation turn (for history replay)
|
|
4
|
+
*/
|
|
5
|
+
export interface AgentHistoryToolCall {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
input?: unknown;
|
|
9
|
+
result?: unknown;
|
|
10
|
+
status: 'running' | 'complete' | 'error';
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A message from a prior conversation (for history replay)
|
|
14
|
+
*/
|
|
15
|
+
export interface AgentHistoryMessage {
|
|
16
|
+
role: 'user' | 'assistant';
|
|
17
|
+
content: string;
|
|
18
|
+
toolCalls?: AgentHistoryToolCall[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Request body for the agent chat endpoint
|
|
22
|
+
*/
|
|
23
|
+
export interface AgentChatRequest {
|
|
24
|
+
/** User message to send to the agent */
|
|
25
|
+
message: string;
|
|
26
|
+
/** Session ID for multi-turn conversations */
|
|
27
|
+
sessionId?: string;
|
|
28
|
+
/** Prior conversation history for session continuity (e.g. after notebook reload) */
|
|
29
|
+
history?: AgentHistoryMessage[];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Observability hooks for tracing agent chat lifecycle events.
|
|
33
|
+
* Called synchronously (fire-and-forget) — implementations should not throw.
|
|
34
|
+
*/
|
|
35
|
+
export interface AgentObservabilityHooks {
|
|
36
|
+
/** Called once when agent chat starts */
|
|
37
|
+
onChatStart?: (event: {
|
|
38
|
+
traceId: string;
|
|
39
|
+
sessionId?: string;
|
|
40
|
+
message: string;
|
|
41
|
+
model: string;
|
|
42
|
+
historyLength: number;
|
|
43
|
+
}) => void;
|
|
44
|
+
/** Called after each LLM API call completes */
|
|
45
|
+
onGenerationEnd?: (event: {
|
|
46
|
+
traceId: string;
|
|
47
|
+
turn: number;
|
|
48
|
+
model: string;
|
|
49
|
+
stopReason: string;
|
|
50
|
+
inputTokens?: number;
|
|
51
|
+
outputTokens?: number;
|
|
52
|
+
durationMs: number;
|
|
53
|
+
/** Messages array sent to the API */
|
|
54
|
+
input?: unknown;
|
|
55
|
+
/** Assistant content blocks from the response */
|
|
56
|
+
output?: unknown;
|
|
57
|
+
}) => void;
|
|
58
|
+
/** Called after each tool execution */
|
|
59
|
+
onToolEnd?: (event: {
|
|
60
|
+
traceId: string;
|
|
61
|
+
turn: number;
|
|
62
|
+
toolName: string;
|
|
63
|
+
toolUseId: string;
|
|
64
|
+
isError: boolean;
|
|
65
|
+
durationMs: number;
|
|
66
|
+
}) => void;
|
|
67
|
+
/** Called when agent chat completes */
|
|
68
|
+
onChatEnd?: (event: {
|
|
69
|
+
traceId: string;
|
|
70
|
+
sessionId?: string;
|
|
71
|
+
totalTurns: number;
|
|
72
|
+
durationMs: number;
|
|
73
|
+
error?: string;
|
|
74
|
+
}) => void;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Agent configuration options (provided in adapter options).
|
|
78
|
+
* Supports multiple LLM providers — defaults to Anthropic for backward compatibility.
|
|
79
|
+
* All providers use direct HTTP API calls — no subprocess spawning, fully edge-runtime compatible.
|
|
80
|
+
*/
|
|
81
|
+
export interface AgentConfig {
|
|
82
|
+
/**
|
|
83
|
+
* LLM provider to use (default: 'anthropic').
|
|
84
|
+
* - 'anthropic': Claude models via @anthropic-ai/sdk
|
|
85
|
+
* - 'openai': OpenAI models via openai SDK (also supports Groq, Together, Mistral, Ollama via baseURL)
|
|
86
|
+
* - 'google': Gemini models via @google/generative-ai
|
|
87
|
+
*/
|
|
88
|
+
provider?: 'anthropic' | 'openai' | 'google';
|
|
89
|
+
/**
|
|
90
|
+
* Base URL for OpenAI-compatible providers.
|
|
91
|
+
* Only used when provider is 'openai'. Examples:
|
|
92
|
+
* - Groq: 'https://api.groq.com/openai/v1'
|
|
93
|
+
* - Together: 'https://api.together.xyz/v1'
|
|
94
|
+
* - Ollama: 'http://localhost:11434/v1'
|
|
95
|
+
*/
|
|
96
|
+
baseURL?: string;
|
|
97
|
+
/** Server-side API key for the selected provider */
|
|
98
|
+
apiKey?: string;
|
|
99
|
+
/** Model to use (default depends on provider: 'claude-sonnet-4-6' for Anthropic, 'gpt-4.1-mini' for OpenAI, 'gemini-3-flash-preview' for Google) */
|
|
100
|
+
model?: string;
|
|
101
|
+
/** Maximum agentic turns per request (default: 25) */
|
|
102
|
+
maxTurns?: number;
|
|
103
|
+
/** Maximum tokens per response (default: 4096) */
|
|
104
|
+
maxTokens?: number;
|
|
105
|
+
/** Allow X-Agent-Api-Key header to override server apiKey */
|
|
106
|
+
allowClientApiKey?: boolean;
|
|
107
|
+
/** Optional observability hooks for tracing */
|
|
108
|
+
observability?: AgentObservabilityHooks;
|
|
109
|
+
/**
|
|
110
|
+
* Build per-request system context for the LLM prompt from the authenticated security context.
|
|
111
|
+
* Called on every agent chat request with the resolved security context.
|
|
112
|
+
* The returned string is appended to the system prompt under "## User Context".
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* buildSystemContext: (securityContext) =>
|
|
116
|
+
* `User: ${securityContext.userName}, Role: ${securityContext.role}`
|
|
117
|
+
*/
|
|
118
|
+
buildSystemContext?: (securityContext: Record<string, unknown>) => string | undefined;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Data for an add_portlet tool call
|
|
122
|
+
*/
|
|
123
|
+
export interface PortletBlockData {
|
|
124
|
+
id: string;
|
|
125
|
+
title: string;
|
|
126
|
+
query: string;
|
|
127
|
+
chartType: ChartType;
|
|
128
|
+
chartConfig?: ChartAxisConfig;
|
|
129
|
+
displayConfig?: ChartDisplayConfig;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Data for an add_markdown tool call
|
|
133
|
+
*/
|
|
134
|
+
export interface MarkdownBlockData {
|
|
135
|
+
id: string;
|
|
136
|
+
title?: string;
|
|
137
|
+
content: string;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Data emitted when the agent saves a dashboard via the save_as_dashboard tool.
|
|
141
|
+
* The client receives this via SSE and can persist the config however it chooses.
|
|
142
|
+
*/
|
|
143
|
+
export interface DashboardSavedData {
|
|
144
|
+
title: string;
|
|
145
|
+
description?: string;
|
|
146
|
+
dashboardConfig: DashboardConfig;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* SSE events emitted by the agent handler
|
|
150
|
+
*/
|
|
151
|
+
export type AgentSSEEvent = {
|
|
152
|
+
type: 'text_delta';
|
|
153
|
+
data: string;
|
|
154
|
+
} | {
|
|
155
|
+
type: 'tool_use_start';
|
|
156
|
+
data: {
|
|
157
|
+
id: string;
|
|
158
|
+
name: string;
|
|
159
|
+
input?: unknown;
|
|
160
|
+
};
|
|
161
|
+
} | {
|
|
162
|
+
type: 'tool_use_result';
|
|
163
|
+
data: {
|
|
164
|
+
id: string;
|
|
165
|
+
name: string;
|
|
166
|
+
result?: unknown;
|
|
167
|
+
isError?: boolean;
|
|
168
|
+
};
|
|
169
|
+
} | {
|
|
170
|
+
type: 'add_portlet';
|
|
171
|
+
data: PortletBlockData;
|
|
172
|
+
} | {
|
|
173
|
+
type: 'add_markdown';
|
|
174
|
+
data: MarkdownBlockData;
|
|
175
|
+
} | {
|
|
176
|
+
type: 'dashboard_saved';
|
|
177
|
+
data: DashboardSavedData;
|
|
178
|
+
} | {
|
|
179
|
+
type: 'turn_complete';
|
|
180
|
+
data: Record<string, never>;
|
|
181
|
+
} | {
|
|
182
|
+
type: 'done';
|
|
183
|
+
data: {
|
|
184
|
+
sessionId: string;
|
|
185
|
+
traceId?: string;
|
|
186
|
+
};
|
|
187
|
+
} | {
|
|
188
|
+
type: 'error';
|
|
189
|
+
data: {
|
|
190
|
+
message: string;
|
|
191
|
+
};
|
|
192
|
+
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { CubeMetadata } from '../types/metadata';
|
|
2
|
+
import { QUERY_SCHEMAS } from './schemas';
|
|
3
|
+
/**
|
|
4
|
+
* Discovery result for a cube
|
|
5
|
+
*/
|
|
6
|
+
export interface CubeDiscoveryResult {
|
|
7
|
+
cube: string;
|
|
8
|
+
title: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
relevanceScore: number;
|
|
11
|
+
matchedOn: ('name' | 'title' | 'description' | 'exampleQuestions' | 'measures' | 'dimensions')[];
|
|
12
|
+
suggestedMeasures: string[];
|
|
13
|
+
suggestedDimensions: string[];
|
|
14
|
+
capabilities: {
|
|
15
|
+
query: true;
|
|
16
|
+
funnel: boolean;
|
|
17
|
+
flow: boolean;
|
|
18
|
+
retention: boolean;
|
|
19
|
+
};
|
|
20
|
+
analysisConfig?: {
|
|
21
|
+
candidateBindingKeys: Array<{
|
|
22
|
+
dimension: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
}>;
|
|
25
|
+
candidateTimeDimensions: Array<{
|
|
26
|
+
dimension: string;
|
|
27
|
+
description?: string;
|
|
28
|
+
}>;
|
|
29
|
+
candidateEventDimensions: Array<{
|
|
30
|
+
dimension: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
}>;
|
|
33
|
+
};
|
|
34
|
+
hints?: string[];
|
|
35
|
+
querySchemas?: typeof QUERY_SCHEMAS;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Discovery request options
|
|
39
|
+
*/
|
|
40
|
+
export interface DiscoveryOptions {
|
|
41
|
+
/** Topic or intent to search for */
|
|
42
|
+
topic?: string;
|
|
43
|
+
/** Natural language intent */
|
|
44
|
+
intent?: string;
|
|
45
|
+
/** Maximum number of results */
|
|
46
|
+
limit?: number;
|
|
47
|
+
/** Minimum relevance score (0-1) */
|
|
48
|
+
minScore?: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Discover relevant cubes based on topic or intent
|
|
52
|
+
*/
|
|
53
|
+
export declare function discoverCubes(metadata: CubeMetadata[], options?: DiscoveryOptions): CubeDiscoveryResult[];
|
|
54
|
+
/**
|
|
55
|
+
* Find the best matching field across all cubes
|
|
56
|
+
*/
|
|
57
|
+
export declare function findBestFieldMatch(metadata: CubeMetadata[], fieldName: string, fieldType?: 'measure' | 'dimension'): {
|
|
58
|
+
field: string;
|
|
59
|
+
cube: string;
|
|
60
|
+
score: number;
|
|
61
|
+
type: 'measure' | 'dimension';
|
|
62
|
+
} | null;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI-Ready Data Layer Utilities
|
|
3
|
+
* Schema-aware intelligence for AI agents - no server-side LLM required
|
|
4
|
+
*/
|
|
5
|
+
export { discoverCubes, findBestFieldMatch, type CubeDiscoveryResult, type DiscoveryOptions } from './discovery';
|
|
6
|
+
export { suggestQuery, type QuerySuggestion } from './suggestion';
|
|
7
|
+
export { validateQuery, type ValidationResult, type ValidationError, type ValidationWarning } from './validation';
|
|
8
|
+
export { QUERY_SCHEMAS, type QuerySchemas } from './schemas';
|
|
9
|
+
export { QUERY_PARAMS_SCHEMA, QUERY_LANGUAGE_REFERENCE } from './query-schema';
|
|
10
|
+
export { MCP_PROMPTS, MCP_GUIDE_PROMPT, QUERY_LANGUAGE_PROMPT, QUERY_RULES_PROMPT, QUERY_BUILDING_PROMPT, DATE_FILTERING_PROMPT, DEFAULT_MCP_INSTRUCTIONS, getDefaultMCPPrompts, getDefaultMcpInstructions, type MCPPrompt } from './mcp-prompts';
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Prompts for AI Agents
|
|
3
|
+
*
|
|
4
|
+
* These prompts provide guidance for AI agents using the Drizzle Cube MCP server.
|
|
5
|
+
* They help prevent common query mistakes and ensure correct query construction.
|
|
6
|
+
*
|
|
7
|
+
* Structure: 3 focused prompts (down from 4 redundant ones):
|
|
8
|
+
* - MCP_GUIDE_PROMPT: Workflow (discover -> validate -> load) + cross-cube joins
|
|
9
|
+
* - QUERY_LANGUAGE_PROMPT: TS DSL reference (single source of truth from query-schema.ts)
|
|
10
|
+
* - DATE_FILTERING_PROMPT: Decision tree for the #1 mistake
|
|
11
|
+
*
|
|
12
|
+
* QUERY_RULES_PROMPT and QUERY_BUILDING_PROMPT are kept as backward-compatible aliases.
|
|
13
|
+
*/
|
|
14
|
+
export interface MCPPrompt {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
messages: Array<{
|
|
18
|
+
role: 'user' | 'assistant';
|
|
19
|
+
content: {
|
|
20
|
+
type: 'text';
|
|
21
|
+
text: string;
|
|
22
|
+
};
|
|
23
|
+
}>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Main workflow guide for using drizzle-cube MCP tools
|
|
27
|
+
*/
|
|
28
|
+
export declare const MCP_GUIDE_PROMPT: MCPPrompt;
|
|
29
|
+
/**
|
|
30
|
+
* Query language reference — imports the TypeScript DSL from query-schema.ts
|
|
31
|
+
* Replaces both QUERY_RULES_PROMPT and QUERY_BUILDING_PROMPT
|
|
32
|
+
*/
|
|
33
|
+
export declare const QUERY_LANGUAGE_PROMPT: MCPPrompt;
|
|
34
|
+
/**
|
|
35
|
+
* Critical guide specifically for date filtering vs time grouping — the #1 mistake
|
|
36
|
+
*/
|
|
37
|
+
export declare const DATE_FILTERING_PROMPT: MCPPrompt;
|
|
38
|
+
/**
|
|
39
|
+
* Backward-compatible alias — now references the unified query language prompt
|
|
40
|
+
*/
|
|
41
|
+
export declare const QUERY_RULES_PROMPT: MCPPrompt;
|
|
42
|
+
/**
|
|
43
|
+
* Backward-compatible alias — now references the unified query language prompt
|
|
44
|
+
*/
|
|
45
|
+
export declare const QUERY_BUILDING_PROMPT: MCPPrompt;
|
|
46
|
+
/**
|
|
47
|
+
* All MCP prompts for the Drizzle Cube server
|
|
48
|
+
*/
|
|
49
|
+
export declare const MCP_PROMPTS: MCPPrompt[];
|
|
50
|
+
/**
|
|
51
|
+
* Get all default MCP prompts
|
|
52
|
+
*/
|
|
53
|
+
export declare function getDefaultMCPPrompts(): MCPPrompt[];
|
|
54
|
+
/**
|
|
55
|
+
* Default instructions returned in the MCP `initialize` result.
|
|
56
|
+
*
|
|
57
|
+
* Per the MCP spec (InitializeResult.instructions), this string is the only
|
|
58
|
+
* server-authored guidance that clients are expected to surface to the model
|
|
59
|
+
* (e.g. by adding it to the system prompt). `prompts/*` and `resources/*` are
|
|
60
|
+
* pull-based and are usually invoked by the *user* (slash commands) — not by
|
|
61
|
+
* the model — so we cannot rely on them for correctness.
|
|
62
|
+
*
|
|
63
|
+
* The instructions therefore:
|
|
64
|
+
* 1. Mandate the discover → (validate) → load workflow.
|
|
65
|
+
* 2. Tell the model that the `discover` tool response itself contains the
|
|
66
|
+
* full query language reference (`queryLanguageReference`) and the date
|
|
67
|
+
* filtering decision tree (`dateFilteringGuide`). The model MUST read
|
|
68
|
+
* those fields before constructing any query — they are the source of
|
|
69
|
+
* truth for syntax, operators, and analysis modes.
|
|
70
|
+
* 3. Inline the single most-violated rule (aggregated totals vs time
|
|
71
|
+
* series) so that even a model that ignores the discover payload still
|
|
72
|
+
* sees it once in its system prompt.
|
|
73
|
+
*
|
|
74
|
+
* Keep this body short (< ~2 KB) — long instructions get truncated or
|
|
75
|
+
* deprioritised by some clients.
|
|
76
|
+
*/
|
|
77
|
+
export declare const DEFAULT_MCP_INSTRUCTIONS: string;
|
|
78
|
+
/**
|
|
79
|
+
* Get the default MCP instructions string returned in the `initialize` result.
|
|
80
|
+
* Exposed as a function (not just a const) so consumers can wrap or extend it
|
|
81
|
+
* via the `instructions` resolver in `MCPOptions`.
|
|
82
|
+
*/
|
|
83
|
+
export declare function getDefaultMcpInstructions(): string;
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Query Schema — Single Source of Truth
|
|
3
|
+
*
|
|
4
|
+
* This module defines the canonical query parameter schema used by BOTH:
|
|
5
|
+
* - MCP `load` tool (mcp-transport.ts)
|
|
6
|
+
* - Agent `execute_query` tool (agent/tools.ts)
|
|
7
|
+
*
|
|
8
|
+
* It also exports a TypeScript DSL reference string used in prompts.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* JSON Schema for query parameters shared across MCP and Agent tools.
|
|
12
|
+
* Covers regular queries (measures/dimensions/filters/timeDimensions/order/limit/offset/ungrouped)
|
|
13
|
+
* and analysis modes (funnel/flow/retention).
|
|
14
|
+
*/
|
|
15
|
+
export declare const QUERY_PARAMS_SCHEMA: {
|
|
16
|
+
readonly measures: {
|
|
17
|
+
readonly type: "array";
|
|
18
|
+
readonly items: {
|
|
19
|
+
readonly type: "string";
|
|
20
|
+
readonly pattern: "^[A-Z][a-zA-Z0-9]*\\.[a-zA-Z][a-zA-Z0-9]*$";
|
|
21
|
+
};
|
|
22
|
+
readonly description: "Aggregation measures — EXACTLY \"CubeName.measureName\" (two parts, one dot). Copy field names verbatim from discover results. WRONG: \"Sales.Sales.count\" (double-prefixed). RIGHT: \"Sales.count\".";
|
|
23
|
+
};
|
|
24
|
+
readonly dimensions: {
|
|
25
|
+
readonly type: "array";
|
|
26
|
+
readonly items: {
|
|
27
|
+
readonly type: "string";
|
|
28
|
+
readonly pattern: "^[A-Z][a-zA-Z0-9]*\\.[a-zA-Z][a-zA-Z0-9]*$";
|
|
29
|
+
};
|
|
30
|
+
readonly description: "Grouping dimensions — EXACTLY \"CubeName.dimensionName\" (two parts, one dot). Copy from discover results. Can include dimensions from RELATED cubes via joins. WRONG: \"Teams.Teams.name\". RIGHT: \"Teams.name\".";
|
|
31
|
+
};
|
|
32
|
+
readonly filters: {
|
|
33
|
+
readonly type: "array";
|
|
34
|
+
readonly items: {
|
|
35
|
+
readonly type: "object";
|
|
36
|
+
readonly properties: {
|
|
37
|
+
readonly member: {
|
|
38
|
+
readonly type: "string";
|
|
39
|
+
readonly description: "\"CubeName.fieldName\"";
|
|
40
|
+
};
|
|
41
|
+
readonly operator: {
|
|
42
|
+
readonly type: "string";
|
|
43
|
+
readonly enum: readonly ["equals", "notEquals", "contains", "notContains", "startsWith", "notStartsWith", "endsWith", "notEndsWith", "gt", "gte", "lt", "lte", "between", "notBetween", "in", "notIn", "like", "notLike", "ilike", "regex", "notRegex", "set", "notSet", "isEmpty", "isNotEmpty", "inDateRange", "beforeDate", "afterDate", "arrayContains", "arrayOverlaps", "arrayContained"];
|
|
44
|
+
};
|
|
45
|
+
readonly values: {
|
|
46
|
+
readonly type: "array";
|
|
47
|
+
readonly items: {};
|
|
48
|
+
readonly description: "Filter values. Omit for set/notSet/isEmpty/isNotEmpty.";
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
readonly required: readonly ["member", "operator"];
|
|
52
|
+
};
|
|
53
|
+
readonly description: "Filter conditions. Flat array — for AND/OR logic use { \"and\": [...] } or { \"or\": [...] } wrappers.";
|
|
54
|
+
};
|
|
55
|
+
readonly timeDimensions: {
|
|
56
|
+
readonly type: "array";
|
|
57
|
+
readonly items: {
|
|
58
|
+
readonly type: "object";
|
|
59
|
+
readonly properties: {
|
|
60
|
+
readonly dimension: {
|
|
61
|
+
readonly type: "string";
|
|
62
|
+
readonly description: "\"CubeName.timeDimension\"";
|
|
63
|
+
};
|
|
64
|
+
readonly granularity: {
|
|
65
|
+
readonly type: "string";
|
|
66
|
+
readonly enum: readonly ["second", "minute", "hour", "day", "week", "month", "quarter", "year"];
|
|
67
|
+
readonly description: "Time bucket size. REQUIRED for time series; omit only for date range filtering.";
|
|
68
|
+
};
|
|
69
|
+
readonly dateRange: {
|
|
70
|
+
readonly description: "Relative string (\"last 7 days\", \"this month\", \"last quarter\") or absolute tuple [\"YYYY-MM-DD\", \"YYYY-MM-DD\"]";
|
|
71
|
+
};
|
|
72
|
+
readonly fillMissingDates: {
|
|
73
|
+
readonly type: "boolean";
|
|
74
|
+
readonly description: "Fill gaps in time series with fillMissingDatesValue (default: true). Requires granularity + dateRange.";
|
|
75
|
+
};
|
|
76
|
+
readonly compareDateRange: {
|
|
77
|
+
readonly type: "array";
|
|
78
|
+
readonly items: {};
|
|
79
|
+
readonly description: "Period-over-period comparison. Array of date ranges: [\"last 30 days\", [\"2024-01-01\", \"2024-01-30\"]]";
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
readonly required: readonly ["dimension"];
|
|
83
|
+
};
|
|
84
|
+
readonly description: "Time dimensions with optional granularity for time series. Use filters with inDateRange for aggregated totals instead.";
|
|
85
|
+
};
|
|
86
|
+
readonly order: {
|
|
87
|
+
readonly type: "object";
|
|
88
|
+
readonly description: "Sort order. Keys MUST be a measure or dimension already in this query, in \"CubeName.fieldName\" format. Values: \"asc\" or \"desc\". Example: {\"Sales.revenue\": \"desc\"}";
|
|
89
|
+
};
|
|
90
|
+
readonly limit: {
|
|
91
|
+
readonly type: "number";
|
|
92
|
+
readonly description: "Maximum rows to return";
|
|
93
|
+
};
|
|
94
|
+
readonly offset: {
|
|
95
|
+
readonly type: "number";
|
|
96
|
+
readonly description: "Number of rows to skip (for pagination)";
|
|
97
|
+
};
|
|
98
|
+
readonly ungrouped: {
|
|
99
|
+
readonly type: "boolean";
|
|
100
|
+
readonly description: "When true, returns raw row-level data without GROUP BY. Requires at least one dimension. Incompatible with count/countDistinct measures and analysis modes.";
|
|
101
|
+
};
|
|
102
|
+
readonly funnel: {
|
|
103
|
+
readonly type: "object";
|
|
104
|
+
readonly properties: {
|
|
105
|
+
readonly bindingKey: {
|
|
106
|
+
readonly type: "string";
|
|
107
|
+
readonly description: "Entity identifier dimension (e.g., \"Events.userId\")";
|
|
108
|
+
};
|
|
109
|
+
readonly timeDimension: {
|
|
110
|
+
readonly type: "string";
|
|
111
|
+
readonly description: "Time ordering dimension (e.g., \"Events.timestamp\")";
|
|
112
|
+
};
|
|
113
|
+
readonly steps: {
|
|
114
|
+
readonly type: "array";
|
|
115
|
+
readonly items: {
|
|
116
|
+
readonly type: "object";
|
|
117
|
+
readonly properties: {
|
|
118
|
+
readonly name: {
|
|
119
|
+
readonly type: "string";
|
|
120
|
+
readonly description: "Human-readable step name";
|
|
121
|
+
};
|
|
122
|
+
readonly filter: {
|
|
123
|
+
readonly description: "Filter or array of filters for this step";
|
|
124
|
+
};
|
|
125
|
+
readonly timeToConvert: {
|
|
126
|
+
readonly type: "string";
|
|
127
|
+
readonly description: "ISO 8601 duration — max time from previous step (e.g., \"P7D\" for 7 days, \"PT1H\" for 1 hour)";
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
readonly required: readonly ["name"];
|
|
131
|
+
};
|
|
132
|
+
readonly description: "Ordered funnel steps (minimum 2). Put inDateRange time filter ONLY on step 0.";
|
|
133
|
+
};
|
|
134
|
+
readonly includeTimeMetrics: {
|
|
135
|
+
readonly type: "boolean";
|
|
136
|
+
readonly description: "Include avg/median/p90 time-to-convert per step";
|
|
137
|
+
};
|
|
138
|
+
readonly globalTimeWindow: {
|
|
139
|
+
readonly type: "string";
|
|
140
|
+
readonly description: "ISO 8601 duration — all steps must complete within this window from step 0";
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
readonly required: readonly ["bindingKey", "timeDimension", "steps"];
|
|
144
|
+
readonly description: "Funnel analysis. When provided, measures/dimensions are ignored.";
|
|
145
|
+
};
|
|
146
|
+
readonly flow: {
|
|
147
|
+
readonly type: "object";
|
|
148
|
+
readonly properties: {
|
|
149
|
+
readonly bindingKey: {
|
|
150
|
+
readonly type: "string";
|
|
151
|
+
readonly description: "Entity identifier dimension (e.g., \"Events.userId\")";
|
|
152
|
+
};
|
|
153
|
+
readonly timeDimension: {
|
|
154
|
+
readonly type: "string";
|
|
155
|
+
readonly description: "Time ordering dimension (e.g., \"Events.timestamp\")";
|
|
156
|
+
};
|
|
157
|
+
readonly eventDimension: {
|
|
158
|
+
readonly type: "string";
|
|
159
|
+
readonly description: "Dimension whose values become node labels (e.g., \"Events.eventType\")";
|
|
160
|
+
};
|
|
161
|
+
readonly startingStep: {
|
|
162
|
+
readonly type: "object";
|
|
163
|
+
readonly properties: {
|
|
164
|
+
readonly name: {
|
|
165
|
+
readonly type: "string";
|
|
166
|
+
readonly description: "Display name for the starting step";
|
|
167
|
+
};
|
|
168
|
+
readonly filter: {
|
|
169
|
+
readonly description: "Filter(s) identifying the starting event";
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
readonly required: readonly ["name"];
|
|
173
|
+
readonly description: "The anchor point — an object with { name, filter }, NOT a plain string.";
|
|
174
|
+
};
|
|
175
|
+
readonly stepsBefore: {
|
|
176
|
+
readonly type: "number";
|
|
177
|
+
readonly description: "Steps to explore before starting step (0-5)";
|
|
178
|
+
};
|
|
179
|
+
readonly stepsAfter: {
|
|
180
|
+
readonly type: "number";
|
|
181
|
+
readonly description: "Steps to explore after starting step (0-5)";
|
|
182
|
+
};
|
|
183
|
+
readonly entityLimit: {
|
|
184
|
+
readonly type: "number";
|
|
185
|
+
readonly description: "Max entities to process (performance tuning)";
|
|
186
|
+
};
|
|
187
|
+
readonly outputMode: {
|
|
188
|
+
readonly type: "string";
|
|
189
|
+
readonly enum: readonly ["sankey", "sunburst"];
|
|
190
|
+
readonly description: "Visualization mode (default: sankey)";
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
readonly required: readonly ["bindingKey", "timeDimension", "eventDimension", "startingStep"];
|
|
194
|
+
readonly description: "Flow (path) analysis. When provided, measures/dimensions are ignored.";
|
|
195
|
+
};
|
|
196
|
+
readonly retention: {
|
|
197
|
+
readonly type: "object";
|
|
198
|
+
readonly properties: {
|
|
199
|
+
readonly timeDimension: {
|
|
200
|
+
readonly type: "string";
|
|
201
|
+
readonly description: "Timestamp dimension (e.g., \"Events.timestamp\")";
|
|
202
|
+
};
|
|
203
|
+
readonly bindingKey: {
|
|
204
|
+
readonly type: "string";
|
|
205
|
+
readonly description: "Entity identifier (e.g., \"Events.userId\")";
|
|
206
|
+
};
|
|
207
|
+
readonly dateRange: {
|
|
208
|
+
readonly type: "object";
|
|
209
|
+
readonly properties: {
|
|
210
|
+
readonly start: {
|
|
211
|
+
readonly type: "string";
|
|
212
|
+
readonly description: "YYYY-MM-DD";
|
|
213
|
+
};
|
|
214
|
+
readonly end: {
|
|
215
|
+
readonly type: "string";
|
|
216
|
+
readonly description: "YYYY-MM-DD";
|
|
217
|
+
};
|
|
218
|
+
};
|
|
219
|
+
readonly required: readonly ["start", "end"];
|
|
220
|
+
readonly description: "Cohort date range — MUST be an object { start, end }, NOT an array or string.";
|
|
221
|
+
};
|
|
222
|
+
readonly granularity: {
|
|
223
|
+
readonly type: "string";
|
|
224
|
+
readonly enum: readonly ["day", "week", "month"];
|
|
225
|
+
readonly description: "Period size for retention buckets";
|
|
226
|
+
};
|
|
227
|
+
readonly periods: {
|
|
228
|
+
readonly type: "number";
|
|
229
|
+
readonly description: "Number of retention periods to calculate";
|
|
230
|
+
};
|
|
231
|
+
readonly retentionType: {
|
|
232
|
+
readonly type: "string";
|
|
233
|
+
readonly enum: readonly ["classic", "rolling"];
|
|
234
|
+
readonly description: "classic = returned in period N exactly; rolling = returned in period N or later";
|
|
235
|
+
};
|
|
236
|
+
readonly cohortFilters: {
|
|
237
|
+
readonly description: "Optional filters on cohort entry events";
|
|
238
|
+
};
|
|
239
|
+
readonly activityFilters: {
|
|
240
|
+
readonly description: "Optional filters on return activity events";
|
|
241
|
+
};
|
|
242
|
+
readonly breakdownDimensions: {
|
|
243
|
+
readonly type: "array";
|
|
244
|
+
readonly items: {
|
|
245
|
+
readonly type: "string";
|
|
246
|
+
};
|
|
247
|
+
readonly description: "Segment retention by these dimensions (e.g., [\"Events.country\"])";
|
|
248
|
+
};
|
|
249
|
+
};
|
|
250
|
+
readonly required: readonly ["timeDimension", "bindingKey", "dateRange", "granularity", "periods"];
|
|
251
|
+
readonly description: "Retention (cohort) analysis. When provided, measures/dimensions are ignored.";
|
|
252
|
+
};
|
|
253
|
+
};
|
|
254
|
+
/**
|
|
255
|
+
* TypeScript DSL reference for query construction.
|
|
256
|
+
* Used in MCP prompts and agent system prompt as the authoritative query language spec.
|
|
257
|
+
*/
|
|
258
|
+
export declare const QUERY_LANGUAGE_REFERENCE: string;
|