drizzle-cube 0.4.42 → 0.4.44
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/README.md +1 -1
- package/dist/adapters/compiler-CA6iopu7.cjs +198 -0
- package/dist/adapters/{mcp-transport-tB5a7Het.js → compiler-O3T1u7jl.js} +1172 -1779
- package/dist/adapters/express/index.cjs +2 -2
- package/dist/adapters/express/index.js +27 -26
- package/dist/adapters/fastify/index.cjs +2 -2
- package/dist/adapters/fastify/index.js +26 -25
- package/dist/adapters/{google-Dgo9-Kb5.cjs → google-BOAwi9Ib.cjs} +1 -1
- package/dist/adapters/{google-CT4kgmBf.js → google-CBfBGU4F.js} +1 -1
- package/dist/adapters/{handler-dHHEEbG9.cjs → handler-BO2nq6IS.cjs} +2 -2
- package/dist/adapters/{handler-fto6TSVn.js → handler-CjVc3ytc.js} +4 -4
- package/dist/adapters/hono/index.cjs +2 -2
- package/dist/adapters/hono/index.js +30 -29
- package/dist/adapters/mcp-tools.cjs +1 -0
- package/dist/adapters/mcp-tools.d.ts +128 -0
- package/dist/adapters/mcp-tools.js +69 -0
- package/dist/adapters/mcp-transport--zhJJHJc.js +370 -0
- package/dist/adapters/mcp-transport-MOoCDu2M.cjs +58 -0
- package/dist/adapters/mcp-transport.d.ts +44 -0
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +23 -22
- package/dist/{server/openai-DKpZPCay.cjs → adapters/openai-4JP2B6pB.cjs} +1 -1
- package/dist/adapters/{openai-Ckpe7iU7.js → openai-BAnEZgKZ.js} +1 -1
- package/dist/adapters/{openai-Bc8qwEKW.cjs → openai-C4BD8xnN.cjs} +1 -1
- package/dist/adapters/{openai-DxeVtl8X.js → openai-CaSQEduB.js} +1 -1
- package/dist/adapters/{utils-_2o905Fi.js → utils-C7Nrw9Wb.js} +7 -3
- package/dist/adapters/{utils-2MwxiQ2o.cjs → utils-tNZ6Cvzw.cjs} +1 -1
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.js +1 -1
- package/dist/client/charts.js +12 -12
- package/dist/client/chunks/{DashboardEditModal-4zzjtZRR.js → DashboardEditModal-BTdV528l.js} +1421 -1396
- package/dist/client/chunks/DashboardEditModal-BTdV528l.js.map +1 -0
- package/dist/client/chunks/{FieldSearchModal-trURu9Sa.js → FieldSearchModal-D75vy4Wb.js} +4 -4
- package/dist/client/chunks/{FieldSearchModal-trURu9Sa.js.map → FieldSearchModal-D75vy4Wb.js.map} +1 -1
- package/dist/client/chunks/KpiDelta-Bk8bzKYM.js +2 -0
- package/dist/client/chunks/KpiNumber-CKF-8e_T.js +2 -0
- package/dist/client/chunks/KpiText-Iz1vIvu_.js +2 -0
- package/dist/client/chunks/{RetentionCombinedChart-B1hUYaXt.js → RetentionCombinedChart-DIhK5pD8.js} +3 -3
- package/dist/client/chunks/{RetentionCombinedChart-B1hUYaXt.js.map → RetentionCombinedChart-DIhK5pD8.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-Dn2ocjVf.js → RetentionHeatmap-CyREolyP.js} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-Dn2ocjVf.js.map → RetentionHeatmap-CyREolyP.js.map} +1 -1
- package/dist/client/chunks/SchemaVisualization-B1GUT-FM.js +2 -0
- package/dist/client/chunks/SchemaVisualizationLazy-DymwT34e.js +2 -0
- package/dist/client/chunks/{analysis-builder-B7XSIMkr.js → analysis-builder-C1CJ0c7L.js} +52 -52
- package/dist/client/chunks/{analysis-builder-B7XSIMkr.js.map → analysis-builder-C1CJ0c7L.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-DaqtrLxd.js → analysis-builder-shared-rkjJfWLT.js} +9 -9
- package/dist/client/chunks/{analysis-builder-shared-DaqtrLxd.js.map → analysis-builder-shared-rkjJfWLT.js.map} +1 -1
- package/dist/client/chunks/{chart-activity-grid-wR2Twpo7.js → chart-activity-grid-DLktOINm.js} +2 -2
- package/dist/client/chunks/{chart-activity-grid-wR2Twpo7.js.map → chart-activity-grid-DLktOINm.js.map} +1 -1
- package/dist/client/chunks/{chart-area-e9ysnatQ.js → chart-area-BwYaflNk.js} +3 -3
- package/dist/client/chunks/{chart-area-e9ysnatQ.js.map → chart-area-BwYaflNk.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-CPt67rLR.js → chart-bar-BiENfFgE.js} +4 -4
- package/dist/client/chunks/{chart-bar-CPt67rLR.js.map → chart-bar-BiENfFgE.js.map} +1 -1
- package/dist/client/chunks/{chart-box-plot-Dp_nqQen.js → chart-box-plot-BJF1tBXC.js} +3 -3
- package/dist/client/chunks/{chart-box-plot-Dp_nqQen.js.map → chart-box-plot-BJF1tBXC.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-CYQ8loeS.js → chart-bubble-DQQhGVDJ.js} +3 -3
- package/dist/client/chunks/{chart-bubble-CYQ8loeS.js.map → chart-bubble-DQQhGVDJ.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-DTeSf7C5.js → chart-candlestick-C2UuXbLe.js} +3 -3
- package/dist/client/chunks/{chart-candlestick-DTeSf7C5.js.map → chart-candlestick-C2UuXbLe.js.map} +1 -1
- package/dist/client/chunks/{chart-config-activity-grid-BSWS08cI.js → chart-config-activity-grid-DJOU3TEz.js} +2 -2
- package/dist/client/chunks/{chart-config-activity-grid-BSWS08cI.js.map → chart-config-activity-grid-DJOU3TEz.js.map} +1 -1
- package/dist/client/chunks/{chart-config-area-DKwgcHp4.js → chart-config-area-CWnWVT6a.js} +2 -2
- package/dist/client/chunks/{chart-config-area-DKwgcHp4.js.map → chart-config-area-CWnWVT6a.js.map} +1 -1
- package/dist/client/chunks/{chart-config-bar-deTjEhap.js → chart-config-bar-C-7Dr1Ho.js} +2 -2
- package/dist/client/chunks/{chart-config-bar-deTjEhap.js.map → chart-config-bar-C-7Dr1Ho.js.map} +1 -1
- package/dist/client/chunks/{chart-config-box-plot-DU4iWk3V.js → chart-config-box-plot-mVOwmLdu.js} +2 -2
- package/dist/client/chunks/{chart-config-box-plot-DU4iWk3V.js.map → chart-config-box-plot-mVOwmLdu.js.map} +1 -1
- package/dist/client/chunks/{chart-config-bubble-B8FSHSW-.js → chart-config-bubble-BPE2CeiD.js} +2 -2
- package/dist/client/chunks/{chart-config-bubble-B8FSHSW-.js.map → chart-config-bubble-BPE2CeiD.js.map} +1 -1
- package/dist/client/chunks/{chart-config-candlestick-BGfyWFft.js → chart-config-candlestick-BSB9DRy2.js} +2 -2
- package/dist/client/chunks/{chart-config-candlestick-BGfyWFft.js.map → chart-config-candlestick-BSB9DRy2.js.map} +1 -1
- package/dist/client/chunks/{chart-config-data-table-DKRcGa8t.js → chart-config-data-table-Bhdx5Hem.js} +2 -2
- package/dist/client/chunks/{chart-config-data-table-DKRcGa8t.js.map → chart-config-data-table-Bhdx5Hem.js.map} +1 -1
- package/dist/client/chunks/{chart-config-funnel-Bt4iGFo_.js → chart-config-funnel-Cl-v-bm1.js} +2 -2
- package/dist/client/chunks/{chart-config-funnel-Bt4iGFo_.js.map → chart-config-funnel-Cl-v-bm1.js.map} +1 -1
- package/dist/client/chunks/{chart-config-gauge-Bk4Jjp3W.js → chart-config-gauge-CdrUTJMJ.js} +2 -2
- package/dist/client/chunks/{chart-config-gauge-Bk4Jjp3W.js.map → chart-config-gauge-CdrUTJMJ.js.map} +1 -1
- package/dist/client/chunks/{chart-config-heat-map-CkHsqkrY.js → chart-config-heat-map-DGE3NzoF.js} +2 -2
- package/dist/client/chunks/{chart-config-heat-map-CkHsqkrY.js.map → chart-config-heat-map-DGE3NzoF.js.map} +1 -1
- package/dist/client/chunks/{chart-config-kpi-delta-CkUX98JV.js → chart-config-kpi-delta-DMrQerUW.js} +2 -2
- package/dist/client/chunks/{chart-config-kpi-delta-CkUX98JV.js.map → chart-config-kpi-delta-DMrQerUW.js.map} +1 -1
- package/dist/client/chunks/{chart-config-kpi-number-DcxyiUgs.js → chart-config-kpi-number-DCytCytn.js} +2 -2
- package/dist/client/chunks/{chart-config-kpi-number-DcxyiUgs.js.map → chart-config-kpi-number-DCytCytn.js.map} +1 -1
- package/dist/client/chunks/{chart-config-kpi-text-DI4mj8CN.js → chart-config-kpi-text-KdKQUvHo.js} +2 -2
- package/dist/client/chunks/{chart-config-kpi-text-DI4mj8CN.js.map → chart-config-kpi-text-KdKQUvHo.js.map} +1 -1
- package/dist/client/chunks/{chart-config-line--j7-dLue.js → chart-config-line-Bl9VDAdz.js} +2 -2
- package/dist/client/chunks/{chart-config-line--j7-dLue.js.map → chart-config-line-Bl9VDAdz.js.map} +1 -1
- package/dist/client/chunks/{chart-config-markdown-DUjvVjV4.js → chart-config-markdown-BX26b94i.js} +2 -2
- package/dist/client/chunks/{chart-config-markdown-DUjvVjV4.js.map → chart-config-markdown-BX26b94i.js.map} +1 -1
- package/dist/client/chunks/{chart-config-measure-profile-B9FKBNGc.js → chart-config-measure-profile-DwtRhEFh.js} +2 -2
- package/dist/client/chunks/{chart-config-measure-profile-B9FKBNGc.js.map → chart-config-measure-profile-DwtRhEFh.js.map} +1 -1
- package/dist/client/chunks/{chart-config-pie-yU4jipl9.js → chart-config-pie-BzBcqPMJ.js} +2 -2
- package/dist/client/chunks/{chart-config-pie-yU4jipl9.js.map → chart-config-pie-BzBcqPMJ.js.map} +1 -1
- package/dist/client/chunks/{chart-config-radar-R9Fkc8wL.js → chart-config-radar-6ZOgt__z.js} +2 -2
- package/dist/client/chunks/{chart-config-radar-R9Fkc8wL.js.map → chart-config-radar-6ZOgt__z.js.map} +1 -1
- package/dist/client/chunks/{chart-config-radial-bar-DeoXfpIp.js → chart-config-radial-bar-Df6Eta7N.js} +2 -2
- package/dist/client/chunks/{chart-config-radial-bar-DeoXfpIp.js.map → chart-config-radial-bar-Df6Eta7N.js.map} +1 -1
- package/dist/client/chunks/{chart-config-sankey-CXEsxo6s.js → chart-config-sankey-DgqKBFvN.js} +2 -2
- package/dist/client/chunks/{chart-config-sankey-CXEsxo6s.js.map → chart-config-sankey-DgqKBFvN.js.map} +1 -1
- package/dist/client/chunks/{chart-config-scatter-MVUFupub.js → chart-config-scatter-D5nVLDvi.js} +2 -2
- package/dist/client/chunks/{chart-config-scatter-MVUFupub.js.map → chart-config-scatter-D5nVLDvi.js.map} +1 -1
- package/dist/client/chunks/{chart-config-sunburst-Z_gqIY5u.js → chart-config-sunburst-Ca3FX9nW.js} +2 -2
- package/dist/client/chunks/{chart-config-sunburst-Z_gqIY5u.js.map → chart-config-sunburst-Ca3FX9nW.js.map} +1 -1
- package/dist/client/chunks/{chart-config-tree-map-BD-xAeIy.js → chart-config-tree-map-Bjy4QNa3.js} +2 -2
- package/dist/client/chunks/{chart-config-tree-map-BD-xAeIy.js.map → chart-config-tree-map-Bjy4QNa3.js.map} +1 -1
- package/dist/client/chunks/{chart-config-waterfall-CHwVkXZc.js → chart-config-waterfall-C5K2eqR7.js} +2 -2
- package/dist/client/chunks/{chart-config-waterfall-CHwVkXZc.js.map → chart-config-waterfall-C5K2eqR7.js.map} +1 -1
- package/dist/client/chunks/{chart-data-table-BZ7StNWv.js → chart-data-table-2iCsn0CF.js} +1099 -933
- package/dist/client/chunks/chart-data-table-2iCsn0CF.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-C9JRW79j.js → chart-funnel-poyOf7-e.js} +3 -3
- package/dist/client/chunks/{chart-funnel-C9JRW79j.js.map → chart-funnel-poyOf7-e.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-_Xdgk_qI.js → chart-gauge-D5J4gRky.js} +3 -3
- package/dist/client/chunks/{chart-gauge-_Xdgk_qI.js.map → chart-gauge-D5J4gRky.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-BOMQeUDL.js → chart-heat-map-BAMVhLGG.js} +3 -3
- package/dist/client/chunks/{chart-heat-map-BOMQeUDL.js.map → chart-heat-map-BAMVhLGG.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-C2tdpWki.js → chart-kpi-delta-KQjUIeal.js} +71 -73
- package/dist/client/chunks/{chart-kpi-delta-C2tdpWki.js.map → chart-kpi-delta-KQjUIeal.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-BUNKM7yg.js → chart-kpi-number-CsQgV_x3.js} +62 -63
- package/dist/client/chunks/{chart-kpi-number-BUNKM7yg.js.map → chart-kpi-number-CsQgV_x3.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-COF8iN0K.js → chart-kpi-text-BR0IyeUU.js} +26 -27
- package/dist/client/chunks/{chart-kpi-text-COF8iN0K.js.map → chart-kpi-text-BR0IyeUU.js.map} +1 -1
- package/dist/client/chunks/{chart-line-D3SEwXDS.js → chart-line-B5_WntY5.js} +4 -4
- package/dist/client/chunks/{chart-line-D3SEwXDS.js.map → chart-line-B5_WntY5.js.map} +1 -1
- package/dist/client/chunks/{chart-markdown-DMekYkKz.js → chart-markdown-B6bENbel.js} +2 -2
- package/dist/client/chunks/{chart-markdown-DMekYkKz.js.map → chart-markdown-B6bENbel.js.map} +1 -1
- package/dist/client/chunks/{chart-measure-profile-BPhI1Z9s.js → chart-measure-profile-yWk-obNb.js} +4 -4
- package/dist/client/chunks/{chart-measure-profile-BPhI1Z9s.js.map → chart-measure-profile-yWk-obNb.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-COl3Rmdk.js → chart-pie-BodrUoHv.js} +4 -4
- package/dist/client/chunks/{chart-pie-COl3Rmdk.js.map → chart-pie-BodrUoHv.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-BKZXylBB.js → chart-radar-gG3zfLud.js} +4 -4
- package/dist/client/chunks/{chart-radar-BKZXylBB.js.map → chart-radar-gG3zfLud.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-CMfC7SPd.js → chart-radial-bar-C2IPCV8c.js} +4 -4
- package/dist/client/chunks/{chart-radial-bar-CMfC7SPd.js.map → chart-radial-bar-C2IPCV8c.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-8nRYnupt.js → chart-sankey-BOyxfG1Q.js} +3 -3
- package/dist/client/chunks/{chart-sankey-8nRYnupt.js.map → chart-sankey-BOyxfG1Q.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-xQMa3dUt.js → chart-scatter-B8OwlsAX.js} +4 -4
- package/dist/client/chunks/{chart-scatter-xQMa3dUt.js.map → chart-scatter-B8OwlsAX.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-BGhJ4fui.js → chart-sunburst-D9lGEOCc.js} +4 -4
- package/dist/client/chunks/{chart-sunburst-BGhJ4fui.js.map → chart-sunburst-D9lGEOCc.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-Cn1pmrAw.js → chart-tree-map-DZaKy9he.js} +4 -4
- package/dist/client/chunks/{chart-tree-map-Cn1pmrAw.js.map → chart-tree-map-DZaKy9he.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-C2nVN4pn.js → chart-waterfall-BCdUx4DC.js} +4 -4
- package/dist/client/chunks/{chart-waterfall-C2nVN4pn.js.map → chart-waterfall-BCdUx4DC.js.map} +1 -1
- package/dist/client/chunks/{charts-core-Cy3rHADX.js → charts-core-C5Yokk-x.js} +2 -2
- package/dist/client/chunks/{charts-core-Cy3rHADX.js.map → charts-core-C5Yokk-x.js.map} +1 -1
- package/dist/client/chunks/{core-BdWfCZ3y.js → core-DcfMGTVa.js} +2 -2
- package/dist/client/chunks/{core-BdWfCZ3y.js.map → core-DcfMGTVa.js.map} +1 -1
- package/dist/client/chunks/{dist-BWPE2m_X.js → dist-eZurnOde.js} +1 -1
- package/dist/client/chunks/{dist-BWPE2m_X.js.map → dist-eZurnOde.js.map} +1 -1
- package/dist/client/chunks/exceljs.min-CcjgM-qg.js +31986 -0
- package/dist/client/chunks/exceljs.min-CcjgM-qg.js.map +1 -0
- package/dist/client/chunks/{javascript-O1RIRkZr.js → javascript-DFvvCuoP.js} +1 -1
- package/dist/client/chunks/{javascript-O1RIRkZr.js.map → javascript-DFvvCuoP.js.map} +1 -1
- package/dist/client/chunks/{json-C5bX2tt1.js → json-BBm9TlrA.js} +1 -1
- package/dist/client/chunks/{json-C5bX2tt1.js.map → json-BBm9TlrA.js.map} +1 -1
- package/dist/client/chunks/{rolldown-runtime-lc2dmIiU.js → rolldown-runtime-CCl2IeXn.js} +5 -2
- package/dist/client/chunks/{schema-visualization-DVdfx6N8.js → schema-visualization-t1KiOORo.js} +261 -265
- package/dist/client/chunks/{schema-visualization-DVdfx6N8.js.map → schema-visualization-t1KiOORo.js.map} +1 -1
- package/dist/client/chunks/{sql-D2qikO5q.js → sql-k0GA6oZ_.js} +1 -1
- package/dist/client/chunks/{sql-D2qikO5q.js.map → sql-k0GA6oZ_.js.map} +1 -1
- package/dist/client/chunks/{syntaxHighlighting-BYYWYmjr.js → syntaxHighlighting-CnDujqwg.js} +2 -2
- package/dist/client/chunks/{syntaxHighlighting-BYYWYmjr.js.map → syntaxHighlighting-CnDujqwg.js.map} +1 -1
- package/dist/client/chunks/{useDebounce-Bel8J05v.js → useDebounce-CKqkM42n.js} +11 -14
- package/dist/client/chunks/{useDebounce-Bel8J05v.js.map → useDebounce-CKqkM42n.js.map} +1 -1
- package/dist/client/chunks/{useExplainAI-CxdzY2N0.js → useExplainAI-DBIfYwz-.js} +12 -12
- package/dist/client/chunks/{useExplainAI-CxdzY2N0.js.map → useExplainAI-DBIfYwz-.js.map} +1 -1
- package/dist/client/chunks/{utils-CMkS7h9x.js → utils--qCr8Yn5.js} +2 -2
- package/dist/client/chunks/utils--qCr8Yn5.js.map +1 -0
- package/dist/client/chunks/{vendor-BoWEubRu.js → vendor-BRlsCGnK.js} +46 -46
- package/dist/client/chunks/{vendor-BoWEubRu.js.map → vendor-BRlsCGnK.js.map} +1 -1
- package/dist/client/components.js +3 -3
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons/types.d.ts +1 -0
- package/dist/client/icons.js +1 -1
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.js +168 -168
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers.js +1 -1
- package/dist/client/schema.js +1 -1
- package/dist/client/types.d.ts +6 -0
- package/dist/client/utils/exportXlsx.d.ts +20 -0
- package/dist/client/utils/index.d.ts +1 -0
- package/dist/client/utils.js +7 -7
- package/dist/client-bundle-stats.html +1 -1
- package/dist/server/index.cjs +2 -2
- package/dist/server/index.js +8 -4
- package/dist/server/{openai-DqCEogm0.js → openai-CqZg6zYL.js} +1 -1
- package/dist/server/{openai-0HbLlZq6.cjs → openai-D9Zjuby1.cjs} +1 -1
- package/dist/{adapters/openai-C96O8M75.cjs → server/openai-DmuEbFd6.cjs} +1 -1
- package/dist/server/{openai-DnGeU9PT.js → openai-rwauPzCT.js} +1 -1
- package/package.json +11 -1
- package/dist/adapters/mcp-transport-ro4OL4BW.cjs +0 -255
- package/dist/client/chunks/DashboardEditModal-4zzjtZRR.js.map +0 -1
- package/dist/client/chunks/chart-data-table-BZ7StNWv.js.map +0 -1
- package/dist/client/chunks/utils-CMkS7h9x.js.map +0 -1
- /package/dist/adapters/{anthropic-BIva8k1r.cjs → anthropic-Cto4Jxqt.cjs} +0 -0
- /package/dist/adapters/{anthropic-B_rg0BhK.js → anthropic-DpEbCVvF.js} +0 -0
- /package/dist/adapters/{dist-Boc63-1q.cjs → dist-BnyV9wfA.cjs} +0 -0
- /package/dist/adapters/{dist-De5fzUEM.js → dist-DjVh2RFz.js} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { a as e, f as t, o as n, r, u as i } from "../utils-
|
|
2
|
-
import {
|
|
1
|
+
import { a as e, f as t, o as n, r, u as i } from "../utils-C7Nrw9Wb.js";
|
|
2
|
+
import { t as a } from "../compiler-O3T1u7jl.js";
|
|
3
|
+
import { a as o, c as s, d as c, f as l, h as u, l as d, m as f, n as p, o as m, p as h, r as g, s as _, t as v, u as y } from "../mcp-transport--zhJJHJc.js";
|
|
3
4
|
import { Hono as b } from "hono";
|
|
4
5
|
//#region node_modules/hono/dist/middleware/cors/index.js
|
|
5
6
|
var x = (e) => {
|
|
@@ -16,14 +17,14 @@ var x = (e) => {
|
|
|
16
17
|
allowHeaders: [],
|
|
17
18
|
exposeHeaders: [],
|
|
18
19
|
...e
|
|
19
|
-
}, n = ((e) => typeof e == "string" ? e === "*" ? () => e : (t) => e === t ? t : null : typeof e == "function" ? e : (t) => e.includes(t) ? t : null)(t.origin), r = ((e) => typeof e == "function" ? e : Array.isArray(e) ? () => e : () => [])(t.allowMethods);
|
|
20
|
+
}, n = ((e) => typeof e == "string" ? e === "*" ? t.credentials ? (e) => e || null : () => e : (t) => e === t ? t : null : typeof e == "function" ? e : (t) => e.includes(t) ? t : null)(t.origin), r = ((e) => typeof e == "function" ? e : Array.isArray(e) ? () => e : () => [])(t.allowMethods);
|
|
20
21
|
return async function(e, i) {
|
|
21
22
|
function a(t, n) {
|
|
22
23
|
e.res.headers.set(t, n);
|
|
23
24
|
}
|
|
24
25
|
let o = await n(e.req.header("origin") || "", e);
|
|
25
26
|
if (o && a("Access-Control-Allow-Origin", o), t.credentials && a("Access-Control-Allow-Credentials", "true"), t.exposeHeaders?.length && a("Access-Control-Expose-Headers", t.exposeHeaders.join(",")), e.req.method === "OPTIONS") {
|
|
26
|
-
t.origin !== "*" && a("Vary", "Origin"), t.maxAge != null && a("Access-Control-Max-Age", t.maxAge.toString());
|
|
27
|
+
(t.origin !== "*" || t.credentials) && a("Vary", "Origin"), t.maxAge != null && a("Access-Control-Max-Age", t.maxAge.toString());
|
|
27
28
|
let n = await r(e.req.header("origin") || "", e);
|
|
28
29
|
n.length && a("Access-Control-Allow-Methods", n.join(","));
|
|
29
30
|
let i = t.allowHeaders;
|
|
@@ -37,7 +38,7 @@ var x = (e) => {
|
|
|
37
38
|
statusText: "No Content"
|
|
38
39
|
});
|
|
39
40
|
}
|
|
40
|
-
await i(), t.origin !== "*" && e.header("Vary", "Origin", { append: !0 });
|
|
41
|
+
await i(), (t.origin !== "*" || t.credentials) && e.header("Vary", "Origin", { append: !0 });
|
|
41
42
|
};
|
|
42
43
|
};
|
|
43
44
|
//#endregion
|
|
@@ -47,7 +48,7 @@ function S(S) {
|
|
|
47
48
|
if (!S.semanticLayer && (!C || C.length === 0)) throw Error("Either semanticLayer or a non-empty cubes array must be provided");
|
|
48
49
|
let N = new b();
|
|
49
50
|
O && N.use("/*", x(O));
|
|
50
|
-
let P = S.semanticLayer ?? new
|
|
51
|
+
let P = S.semanticLayer ?? new a({
|
|
51
52
|
drizzle: w,
|
|
52
53
|
schema: T,
|
|
53
54
|
engineType: D,
|
|
@@ -159,7 +160,7 @@ function S(S) {
|
|
|
159
160
|
}
|
|
160
161
|
}), M && N.post(`${k}/agent/chat`, async (e) => {
|
|
161
162
|
try {
|
|
162
|
-
let { handleAgentChat: t } = await import("../handler-
|
|
163
|
+
let { handleAgentChat: t } = await import("../handler-CjVc3ytc.js"), { message: n, sessionId: r, history: i } = await e.req.json();
|
|
163
164
|
if (!n || typeof n != "string") return e.json({ error: "message is required and must be a string" }, 400);
|
|
164
165
|
let a = (M.apiKey || "").trim();
|
|
165
166
|
if (M.allowClientApiKey) {
|
|
@@ -214,22 +215,22 @@ function S(S) {
|
|
|
214
215
|
description: "Current cube metadata as JSON",
|
|
215
216
|
mimeType: "application/json",
|
|
216
217
|
text: JSON.stringify(P.getMetadata(), null, 2)
|
|
217
|
-
}, t = [...
|
|
218
|
+
}, t = [..._(), e], n = m(), r = j.basePath ?? "/mcp";
|
|
218
219
|
N.post(`${r}`, async (e) => {
|
|
219
|
-
let r =
|
|
220
|
+
let r = f(e.req.header("origin"), j.allowedOrigins ? { allowedOrigins: j.allowedOrigins } : {});
|
|
220
221
|
if (!r.valid) return e.json(p(null, -32600, r.reason), 403);
|
|
221
222
|
let i = e.req.header("accept");
|
|
222
|
-
if (!
|
|
223
|
-
let a =
|
|
223
|
+
if (!h(i)) return e.json(p(null, -32600, "Accept header must include both application/json and text/event-stream"), 400);
|
|
224
|
+
let a = d(e.req.header());
|
|
224
225
|
if (!a.ok) return e.json({
|
|
225
226
|
error: "Unsupported MCP protocol version",
|
|
226
227
|
supported: a.supported
|
|
227
228
|
}, 426);
|
|
228
|
-
let
|
|
229
|
-
if (!
|
|
230
|
-
let
|
|
229
|
+
let m = y(await e.req.json().catch(() => null));
|
|
230
|
+
if (!m) return e.json(p(null, -32600, "Invalid JSON-RPC 2.0 request"), 400);
|
|
231
|
+
let _ = u(i), b = m.method === "initialize";
|
|
231
232
|
try {
|
|
232
|
-
let r = await
|
|
233
|
+
let r = await o(m.method, m.params, {
|
|
233
234
|
semanticLayer: P,
|
|
234
235
|
extractSecurityContext: E,
|
|
235
236
|
rawRequest: e,
|
|
@@ -238,11 +239,11 @@ function S(S) {
|
|
|
238
239
|
resources: t,
|
|
239
240
|
prompts: n
|
|
240
241
|
});
|
|
241
|
-
if (
|
|
242
|
-
let i = g(
|
|
243
|
-
if (
|
|
244
|
-
let e = new TextEncoder(), t =
|
|
245
|
-
n.enqueue(e.encode(`id: ${t}\n\n`)), n.enqueue(e.encode(
|
|
242
|
+
if (s(m)) return e.body(null, 202);
|
|
243
|
+
let i = g(m.id ?? null, r), u = b && r && typeof r == "object" && "sessionId" in r ? r.sessionId : void 0, d = {};
|
|
244
|
+
if (u && (d[v] = u), _) {
|
|
245
|
+
let e = new TextEncoder(), t = c(), n = new ReadableStream({ start(n) {
|
|
246
|
+
n.enqueue(e.encode(`id: ${t}\n\n`)), n.enqueue(e.encode(l(i, t))), n.close();
|
|
246
247
|
} });
|
|
247
248
|
return new Response(n, {
|
|
248
249
|
status: 200,
|
|
@@ -250,18 +251,18 @@ function S(S) {
|
|
|
250
251
|
"Content-Type": "text/event-stream",
|
|
251
252
|
"Cache-Control": "no-cache",
|
|
252
253
|
Connection: "keep-alive",
|
|
253
|
-
...
|
|
254
|
+
...d
|
|
254
255
|
}
|
|
255
256
|
});
|
|
256
257
|
}
|
|
257
|
-
return e.json(i, 200,
|
|
258
|
+
return e.json(i, 200, d);
|
|
258
259
|
} catch (t) {
|
|
259
|
-
if (
|
|
260
|
+
if (s(m)) return console.error("MCP notification processing error:", t), e.body(null, 202);
|
|
260
261
|
console.error("MCP RPC error:", t);
|
|
261
|
-
let n = t?.code ?? -32603, r = t?.data, i = t.message || "MCP request failed", a = p(
|
|
262
|
-
if (
|
|
263
|
-
let e = new TextEncoder(), t =
|
|
264
|
-
n.enqueue(e.encode(`id: ${t}\n\n`)), n.enqueue(e.encode(
|
|
262
|
+
let n = t?.code ?? -32603, r = t?.data, i = t.message || "MCP request failed", a = p(m.id ?? null, n, i, r);
|
|
263
|
+
if (_) {
|
|
264
|
+
let e = new TextEncoder(), t = c(), n = new ReadableStream({ start(n) {
|
|
265
|
+
n.enqueue(e.encode(`id: ${t}\n\n`)), n.enqueue(e.encode(l(a, t))), n.close();
|
|
265
266
|
} });
|
|
266
267
|
return new Response(n, {
|
|
267
268
|
status: 200,
|
|
@@ -275,9 +276,9 @@ function S(S) {
|
|
|
275
276
|
return e.json(a, 200);
|
|
276
277
|
}
|
|
277
278
|
}), N.delete(`${r}`, (e) => e.json({ error: "Session termination not supported" }, 405)), N.get(`${r}`, (e) => {
|
|
278
|
-
let t = new TextEncoder(), n =
|
|
279
|
+
let t = new TextEncoder(), n = c(), r, i = new ReadableStream({
|
|
279
280
|
start(e) {
|
|
280
|
-
e.enqueue(t.encode(
|
|
281
|
+
e.enqueue(t.encode(l({
|
|
281
282
|
jsonrpc: "2.0",
|
|
282
283
|
method: "mcp/ready",
|
|
283
284
|
params: { protocol: "streamable-http" }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./utils-tNZ6Cvzw.cjs`),t=require(`./mcp-transport-MOoCDu2M.cjs`);function n(e){return{content:[{type:`text`,text:typeof e==`string`?e:JSON.stringify(e)}],isError:!1}}function r(e){return{content:[{type:`text`,text:e instanceof Error?e.message:String(e)}],isError:!0}}function i(i){let{semanticLayer:a,getSecurityContext:o,toolPrefix:s=`drizzle_cube_`,tools:c=[`discover`,`validate`,`load`],prompts:l=t.o(),resources:u=t.s()}=i,d=t.i(),f=new Map(d.map(e=>[e.name,e])),p=c.filter(e=>f.has(e)).map(e=>{let t=f.get(e);return{name:`${s}${e}`,description:t.description,inputSchema:t.inputSchema}}),m=p.map(e=>e.name),h=new Set;for(let e of c)h.add(e),h.add(`${s}${e}`);function g(e){return h.has(e)}async function _(t,i,l){let u=t.startsWith(s)?t.slice(s.length):t;if(!c.includes(u))return r(`Unknown tool: ${t}`);try{switch(u){case`discover`:return n(await e.d(a,i||{}));case`validate`:{let t=i||{};return t.query?n(await e.h(a,t)):r(`query is required`)}case`load`:{let t=i||{};return t.query?n(await e.p(a,await o(l),t)):r(`query is required`)}default:return r(`Unknown tool: ${t}`)}}catch(e){return r(e)}}return{definitions:p,handle:_,handles:g,prompts:l,resources:u,toolNames:m}}exports.getCubeTools=i;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { SemanticLayerCompiler, SecurityContext } from '../server';
|
|
2
|
+
import { DiscoverRequest, ValidateRequest, LoadRequest } from './utils';
|
|
3
|
+
import { MCPPrompt } from '../server/ai/mcp-prompts';
|
|
4
|
+
import { MCPResource } from './mcp-transport';
|
|
5
|
+
export type { MCPPrompt, MCPResource, DiscoverRequest, ValidateRequest, LoadRequest };
|
|
6
|
+
export type { SecurityContext } from '../server';
|
|
7
|
+
/**
|
|
8
|
+
* MCP tool content block (matches MCP spec)
|
|
9
|
+
*/
|
|
10
|
+
export interface MCPToolContent {
|
|
11
|
+
type: 'text';
|
|
12
|
+
text: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* MCP tool result (matches MCP spec CallToolResult)
|
|
16
|
+
*/
|
|
17
|
+
export interface MCPToolResult {
|
|
18
|
+
content: MCPToolContent[];
|
|
19
|
+
isError: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* MCP tool definition (matches MCP spec Tool)
|
|
23
|
+
*/
|
|
24
|
+
export interface MCPToolDefinition {
|
|
25
|
+
name: string;
|
|
26
|
+
description: string;
|
|
27
|
+
inputSchema: {
|
|
28
|
+
type: 'object';
|
|
29
|
+
required?: string[];
|
|
30
|
+
properties: Record<string, unknown>;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Options for creating composable cube tools
|
|
35
|
+
*/
|
|
36
|
+
export interface GetCubeToolsOptions {
|
|
37
|
+
/** The semantic layer compiler instance with registered cubes */
|
|
38
|
+
semanticLayer: SemanticLayerCompiler;
|
|
39
|
+
/**
|
|
40
|
+
* Extract security context for query execution.
|
|
41
|
+
* Called when the `load` tool is invoked.
|
|
42
|
+
* Receives whatever metadata your MCP server provides (auth info, request context, etc.)
|
|
43
|
+
*/
|
|
44
|
+
getSecurityContext: (meta?: unknown) => SecurityContext | Promise<SecurityContext>;
|
|
45
|
+
/**
|
|
46
|
+
* Optional tool name prefix. Defaults to 'drizzle_cube_'.
|
|
47
|
+
* Set to '' for no prefix, or provide your own like 'analytics_'.
|
|
48
|
+
*/
|
|
49
|
+
toolPrefix?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Which tools to expose. Defaults to all: ['discover', 'validate', 'load']
|
|
52
|
+
*/
|
|
53
|
+
tools?: ('discover' | 'validate' | 'load')[];
|
|
54
|
+
/** Custom MCP prompts (defaults to built-in drizzle-cube prompts) */
|
|
55
|
+
prompts?: MCPPrompt[];
|
|
56
|
+
/** Custom MCP resources (defaults to built-in drizzle-cube resources) */
|
|
57
|
+
resources?: MCPResource[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The composable tools object returned by getCubeTools()
|
|
61
|
+
*/
|
|
62
|
+
export interface CubeTools {
|
|
63
|
+
/** Tool definitions for MCP tools/list responses */
|
|
64
|
+
definitions: MCPToolDefinition[];
|
|
65
|
+
/**
|
|
66
|
+
* Execute a tool by name. Returns MCP-spec-compliant result.
|
|
67
|
+
* @param name - Tool name (with or without prefix)
|
|
68
|
+
* @param args - Tool arguments from the MCP client
|
|
69
|
+
* @param meta - Optional metadata passed to getSecurityContext
|
|
70
|
+
*/
|
|
71
|
+
handle: (name: string, args: unknown, meta?: unknown) => Promise<MCPToolResult>;
|
|
72
|
+
/**
|
|
73
|
+
* Check if a tool name is handled by these cube tools
|
|
74
|
+
* @param name - Tool name to check (with or without prefix)
|
|
75
|
+
*/
|
|
76
|
+
handles: (name: string) => boolean;
|
|
77
|
+
/** MCP prompts for prompts/list responses */
|
|
78
|
+
prompts: MCPPrompt[];
|
|
79
|
+
/** MCP resources for resources/list responses */
|
|
80
|
+
resources: MCPResource[];
|
|
81
|
+
/** The tool names this instance handles (with prefix applied) */
|
|
82
|
+
toolNames: string[];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create composable MCP tools for your semantic layer.
|
|
86
|
+
*
|
|
87
|
+
* Returns tool definitions, a handler function, and prompts/resources
|
|
88
|
+
* that you can register on any MCP server.
|
|
89
|
+
*
|
|
90
|
+
* @example With @modelcontextprotocol/sdk
|
|
91
|
+
* ```typescript
|
|
92
|
+
* import { Server } from '@modelcontextprotocol/sdk/server/index.js'
|
|
93
|
+
* import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'
|
|
94
|
+
* import { getCubeTools } from 'drizzle-cube/mcp'
|
|
95
|
+
*
|
|
96
|
+
* const cubeTools = getCubeTools({
|
|
97
|
+
* semanticLayer,
|
|
98
|
+
* getSecurityContext: async (meta) => ({ orgId: meta.authInfo?.orgId })
|
|
99
|
+
* })
|
|
100
|
+
*
|
|
101
|
+
* const server = new Server({ name: 'my-server', version: '1.0.0' })
|
|
102
|
+
*
|
|
103
|
+
* server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
104
|
+
* tools: [...myOtherTools, ...cubeTools.definitions]
|
|
105
|
+
* }))
|
|
106
|
+
*
|
|
107
|
+
* server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
108
|
+
* if (cubeTools.handles(req.params.name)) {
|
|
109
|
+
* return cubeTools.handle(req.params.name, req.params.arguments, req)
|
|
110
|
+
* }
|
|
111
|
+
* return handleOtherTools(req)
|
|
112
|
+
* })
|
|
113
|
+
* ```
|
|
114
|
+
*
|
|
115
|
+
* @example With Hono + postgrest-mcp style
|
|
116
|
+
* ```typescript
|
|
117
|
+
* import { getCubeTools } from 'drizzle-cube/mcp'
|
|
118
|
+
*
|
|
119
|
+
* const cubeTools = getCubeTools({
|
|
120
|
+
* semanticLayer,
|
|
121
|
+
* getSecurityContext: async () => ({ orgId: 'default' })
|
|
122
|
+
* })
|
|
123
|
+
*
|
|
124
|
+
* // Merge with your existing PostgREST tools
|
|
125
|
+
* const allTools = [...postgrestTools, ...cubeTools.definitions]
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
export declare function getCubeTools(options: GetCubeToolsOptions): CubeTools;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { d as e, h as t, p as n } from "./utils-C7Nrw9Wb.js";
|
|
2
|
+
import { i as r, o as i, s as a } from "./mcp-transport--zhJJHJc.js";
|
|
3
|
+
//#region src/adapters/mcp-tools.ts
|
|
4
|
+
function o(e) {
|
|
5
|
+
return {
|
|
6
|
+
content: [{
|
|
7
|
+
type: "text",
|
|
8
|
+
text: typeof e == "string" ? e : JSON.stringify(e)
|
|
9
|
+
}],
|
|
10
|
+
isError: !1
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function s(e) {
|
|
14
|
+
return {
|
|
15
|
+
content: [{
|
|
16
|
+
type: "text",
|
|
17
|
+
text: e instanceof Error ? e.message : String(e)
|
|
18
|
+
}],
|
|
19
|
+
isError: !0
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function c(c) {
|
|
23
|
+
let { semanticLayer: l, getSecurityContext: u, toolPrefix: d = "drizzle_cube_", tools: f = [
|
|
24
|
+
"discover",
|
|
25
|
+
"validate",
|
|
26
|
+
"load"
|
|
27
|
+
], prompts: p = i(), resources: m = a() } = c, h = r(), g = new Map(h.map((e) => [e.name, e])), _ = f.filter((e) => g.has(e)).map((e) => {
|
|
28
|
+
let t = g.get(e);
|
|
29
|
+
return {
|
|
30
|
+
name: `${d}${e}`,
|
|
31
|
+
description: t.description,
|
|
32
|
+
inputSchema: t.inputSchema
|
|
33
|
+
};
|
|
34
|
+
}), v = _.map((e) => e.name), y = /* @__PURE__ */ new Set();
|
|
35
|
+
for (let e of f) y.add(e), y.add(`${d}${e}`);
|
|
36
|
+
function b(e) {
|
|
37
|
+
return y.has(e);
|
|
38
|
+
}
|
|
39
|
+
async function x(r, i, a) {
|
|
40
|
+
let c = r.startsWith(d) ? r.slice(d.length) : r;
|
|
41
|
+
if (!f.includes(c)) return s(`Unknown tool: ${r}`);
|
|
42
|
+
try {
|
|
43
|
+
switch (c) {
|
|
44
|
+
case "discover": return o(await e(l, i || {}));
|
|
45
|
+
case "validate": {
|
|
46
|
+
let e = i || {};
|
|
47
|
+
return e.query ? o(await t(l, e)) : s("query is required");
|
|
48
|
+
}
|
|
49
|
+
case "load": {
|
|
50
|
+
let e = i || {};
|
|
51
|
+
return e.query ? o(await n(l, await u(a), e)) : s("query is required");
|
|
52
|
+
}
|
|
53
|
+
default: return s(`Unknown tool: ${r}`);
|
|
54
|
+
}
|
|
55
|
+
} catch (e) {
|
|
56
|
+
return s(e);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
definitions: _,
|
|
61
|
+
handle: x,
|
|
62
|
+
handles: b,
|
|
63
|
+
prompts: p,
|
|
64
|
+
resources: m,
|
|
65
|
+
toolNames: v
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { c as getCubeTools };
|