drizzle-cube 0.5.3 → 0.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/express/index.cjs +2 -2
- package/dist/adapters/express/index.js +105 -104
- package/dist/adapters/fastify/index.cjs +2 -2
- package/dist/adapters/fastify/index.js +107 -106
- package/dist/adapters/{google-CBfBGU4F.js → google-CT4kgmBf.js} +1 -1
- package/dist/adapters/{google-BOAwi9Ib.cjs → google-Dgo9-Kb5.cjs} +1 -1
- package/dist/adapters/{handler-Cqf-CqAS.cjs → handler-C1Qs8JMY.cjs} +13 -13
- package/dist/adapters/{handler-BC3nFNxV.js → handler-CoaNnZyf.js} +154 -34
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +99 -98
- package/dist/adapters/{locale-BoiA6WiV.cjs → locale-CTuvUGBs.cjs} +7 -7
- package/dist/adapters/{locale-D9VQkLXt.js → locale-wMBdZ3Ks.js} +1 -1
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +8 -3
- package/dist/adapters/mcp-transport-B_HoB1HQ.js +579 -0
- package/dist/adapters/mcp-transport-bQzyrBPI.cjs +40 -0
- package/dist/adapters/mcp-transport.d.ts +22 -0
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +136 -135
- package/dist/adapters/{openai-B4N3KfTG.cjs → openai-BjLV_Wjx.cjs} +1 -1
- package/dist/adapters/{openai-BWdm0JvG.js → openai-DQawCWQb.js} +1 -1
- package/dist/adapters/utils-CIRA5_JO.cjs +128 -0
- package/dist/adapters/{utils-CTYvfZ3I.js → utils-hC7Z8V39.js} +1114 -664
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.d.ts +52 -5
- package/dist/adapters/utils.js +1 -1
- package/dist/client/charts/chartConfigs.d.ts +34 -0
- package/dist/client/charts.js +12 -12
- package/dist/client/chunks/{DashboardEditModal-IU_0dgfC.js → DashboardEditModal-DayTXEH0.js} +10 -10
- package/dist/client/chunks/{DashboardEditModal-IU_0dgfC.js.map → DashboardEditModal-DayTXEH0.js.map} +1 -1
- package/dist/client/chunks/{FieldSearchModal-BCWanpPX.js → FieldSearchModal-B7Mr8UNT.js} +4 -4
- package/dist/client/chunks/{FieldSearchModal-BCWanpPX.js.map → FieldSearchModal-B7Mr8UNT.js.map} +1 -1
- package/dist/client/chunks/KpiDelta-C-hZ1x01.js +2 -0
- package/dist/client/chunks/KpiNumber-Beo8CK0a.js +2 -0
- package/dist/client/chunks/KpiText-ytYiRTRO.js +2 -0
- package/dist/client/chunks/{RetentionCombinedChart-CQMBODsK.js → RetentionCombinedChart-D3dRmoos.js} +3 -3
- package/dist/client/chunks/{RetentionCombinedChart-CQMBODsK.js.map → RetentionCombinedChart-D3dRmoos.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-B_5sewwi.js → RetentionHeatmap-DHPnn0qH.js} +2 -2
- package/dist/client/chunks/{RetentionHeatmap-B_5sewwi.js.map → RetentionHeatmap-DHPnn0qH.js.map} +1 -1
- package/dist/client/chunks/SchemaVisualization-DbYZBTyi.js +2 -0
- package/dist/client/chunks/SchemaVisualizationLazy-BGo-1S3q.js +2 -0
- package/dist/client/chunks/{af-ZA-xDmO5F0s.js → af-ZA-BtTNqvHF.js} +8 -3
- package/dist/client/chunks/af-ZA-BtTNqvHF.js.map +1 -0
- package/dist/client/chunks/{analysis-builder-Dm6eD_AX.js → analysis-builder-lcGl099d.js} +245 -255
- package/dist/client/chunks/analysis-builder-lcGl099d.js.map +1 -0
- package/dist/client/chunks/{analysis-builder-shared-DT5bXwCA.js → analysis-builder-shared-6BRZcEnu.js} +391 -459
- package/dist/client/chunks/analysis-builder-shared-6BRZcEnu.js.map +1 -0
- package/dist/client/chunks/{chart-activity-grid-CWT0gLv4.js → chart-activity-grid-BnY-jaoa.js} +26 -6
- package/dist/client/chunks/chart-activity-grid-BnY-jaoa.js.map +1 -0
- package/dist/client/chunks/{chart-area-DDti9Qtp.js → chart-area-G3OvLLK4.js} +2 -2
- package/dist/client/chunks/{chart-area-DDti9Qtp.js.map → chart-area-G3OvLLK4.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-B3s9qDlh.js → chart-bar-MLIWiLrc.js} +3 -3
- package/dist/client/chunks/{chart-bar-B3s9qDlh.js.map → chart-bar-MLIWiLrc.js.map} +1 -1
- package/dist/client/chunks/{chart-box-plot-o-h9MRX5.js → chart-box-plot-c2XqKTWq.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-o-h9MRX5.js.map → chart-box-plot-c2XqKTWq.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-CMDp4Pfm.js → chart-bubble-CAGvnYb1.js} +2 -2
- package/dist/client/chunks/{chart-bubble-CMDp4Pfm.js.map → chart-bubble-CAGvnYb1.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-WyANJ0Ky.js → chart-candlestick-oSPk-KQp.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-WyANJ0Ky.js.map → chart-candlestick-oSPk-KQp.js.map} +1 -1
- package/dist/client/chunks/{chart-config-activity-grid-C-EkgYoa.js → chart-config-activity-grid-Dssynumw.js} +8 -1
- package/dist/client/chunks/chart-config-activity-grid-Dssynumw.js.map +1 -0
- package/dist/client/chunks/{chart-config-area-CMZpbIah.js → chart-config-area-40fbx2Ah.js} +8 -1
- package/dist/client/chunks/chart-config-area-40fbx2Ah.js.map +1 -0
- package/dist/client/chunks/{chart-config-bar-B8_V4YLg.js → chart-config-bar-CUWHwOPN.js} +8 -1
- package/dist/client/chunks/chart-config-bar-CUWHwOPN.js.map +1 -0
- package/dist/client/chunks/{chart-config-box-plot-Dwj7sEbU.js → chart-config-box-plot-D3Y0ien3.js} +8 -1
- package/dist/client/chunks/chart-config-box-plot-D3Y0ien3.js.map +1 -0
- package/dist/client/chunks/{chart-config-bubble-B0w0ZVp4.js → chart-config-bubble-BXSTKLn-.js} +8 -1
- package/dist/client/chunks/chart-config-bubble-BXSTKLn-.js.map +1 -0
- package/dist/client/chunks/{chart-config-candlestick-Bvo3zeIn.js → chart-config-candlestick-DEuD2Av0.js} +8 -1
- package/dist/client/chunks/chart-config-candlestick-DEuD2Av0.js.map +1 -0
- package/dist/client/chunks/{chart-config-gauge-C5ZiyZy7.js → chart-config-gauge-CCva3FfA.js} +5 -1
- package/dist/client/chunks/chart-config-gauge-CCva3FfA.js.map +1 -0
- package/dist/client/chunks/{chart-config-heat-map-Cv8qNnVP.js → chart-config-heat-map-Db4Z8UUn.js} +8 -1
- package/dist/client/chunks/chart-config-heat-map-Db4Z8UUn.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-delta-BraHQc2E.js → chart-config-kpi-delta-BfLf3iyi.js} +8 -1
- package/dist/client/chunks/chart-config-kpi-delta-BfLf3iyi.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-number-CeCkx7mC.js → chart-config-kpi-number-DWKFc9PX.js} +5 -1
- package/dist/client/chunks/chart-config-kpi-number-DWKFc9PX.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-text-CImM3SvH.js → chart-config-kpi-text-Dr4OG6cY.js} +5 -1
- package/dist/client/chunks/chart-config-kpi-text-Dr4OG6cY.js.map +1 -0
- package/dist/client/chunks/{chart-config-line-BVKapAQK.js → chart-config-line-DGYYdDw9.js} +8 -1
- package/dist/client/chunks/chart-config-line-DGYYdDw9.js.map +1 -0
- package/dist/client/chunks/{chart-config-measure-profile-KTVV1gO3.js → chart-config-measure-profile-sB3n_Azv.js} +5 -1
- package/dist/client/chunks/chart-config-measure-profile-sB3n_Azv.js.map +1 -0
- package/dist/client/chunks/{chart-config-pie-BZxVl25X.js → chart-config-pie-kte7OXa9.js} +8 -1
- package/dist/client/chunks/chart-config-pie-kte7OXa9.js.map +1 -0
- package/dist/client/chunks/{chart-config-radar-B7FByX3t.js → chart-config-radar-C9IxP5tc.js} +8 -1
- package/dist/client/chunks/chart-config-radar-C9IxP5tc.js.map +1 -0
- package/dist/client/chunks/{chart-config-radial-bar-UfW_3yyX.js → chart-config-radial-bar-C3WJ8Uhm.js} +8 -1
- package/dist/client/chunks/chart-config-radial-bar-C3WJ8Uhm.js.map +1 -0
- package/dist/client/chunks/{chart-config-scatter-BVVJuOnt.js → chart-config-scatter-BVN_29G5.js} +8 -1
- package/dist/client/chunks/chart-config-scatter-BVN_29G5.js.map +1 -0
- package/dist/client/chunks/{chart-config-tree-map-IHp97OyV.js → chart-config-tree-map-meeJEDi8.js} +8 -1
- package/dist/client/chunks/chart-config-tree-map-meeJEDi8.js.map +1 -0
- package/dist/client/chunks/{chart-config-waterfall-BdqG1V-x.js → chart-config-waterfall-CaPeWZMl.js} +8 -1
- package/dist/client/chunks/chart-config-waterfall-CaPeWZMl.js.map +1 -0
- package/dist/client/chunks/{chart-data-table-Qrt6EAno.js → chart-data-table-BRXHT2H-.js} +68 -68
- package/dist/client/chunks/chart-data-table-BRXHT2H-.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-C7pgktN5.js → chart-funnel-aQ7G_CqU.js} +2 -2
- package/dist/client/chunks/{chart-funnel-C7pgktN5.js.map → chart-funnel-aQ7G_CqU.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-D2r2B_AR.js → chart-gauge-DqbDKr9E.js} +2 -2
- package/dist/client/chunks/{chart-gauge-D2r2B_AR.js.map → chart-gauge-DqbDKr9E.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-Dw2yjwfO.js → chart-heat-map--6QnhUM8.js} +2 -2
- package/dist/client/chunks/{chart-heat-map-Dw2yjwfO.js.map → chart-heat-map--6QnhUM8.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-CgldZ7zO.js → chart-kpi-delta-DOSpRjfs.js} +3 -3
- package/dist/client/chunks/{chart-kpi-delta-CgldZ7zO.js.map → chart-kpi-delta-DOSpRjfs.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-ByfuX1ki.js → chart-kpi-number-BcMjeKm8.js} +5 -5
- package/dist/client/chunks/{chart-kpi-number-ByfuX1ki.js.map → chart-kpi-number-BcMjeKm8.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-DeNuDraJ.js → chart-kpi-text-BI9isc2i.js} +3 -3
- package/dist/client/chunks/{chart-kpi-text-DeNuDraJ.js.map → chart-kpi-text-BI9isc2i.js.map} +1 -1
- package/dist/client/chunks/{chart-line-RdZwtk27.js → chart-line-C0IHQteu.js} +3 -3
- package/dist/client/chunks/{chart-line-RdZwtk27.js.map → chart-line-C0IHQteu.js.map} +1 -1
- package/dist/client/chunks/{chart-markdown-CiGRZdJj.js → chart-markdown-BmgSMqPg.js} +2 -2
- package/dist/client/chunks/{chart-markdown-CiGRZdJj.js.map → chart-markdown-BmgSMqPg.js.map} +1 -1
- package/dist/client/chunks/{chart-measure-profile-Ckjw9bX6.js → chart-measure-profile-DEyLW1fd.js} +3 -3
- package/dist/client/chunks/{chart-measure-profile-Ckjw9bX6.js.map → chart-measure-profile-DEyLW1fd.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-BvY4FY__.js → chart-pie-DSIekr7p.js} +3 -3
- package/dist/client/chunks/{chart-pie-BvY4FY__.js.map → chart-pie-DSIekr7p.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-DjiiEAmc.js → chart-radar-SGl62hK8.js} +3 -3
- package/dist/client/chunks/{chart-radar-DjiiEAmc.js.map → chart-radar-SGl62hK8.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-lla_JEYu.js → chart-radial-bar-C42EykOa.js} +3 -3
- package/dist/client/chunks/{chart-radial-bar-lla_JEYu.js.map → chart-radial-bar-C42EykOa.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-WwkZAhLy.js → chart-sankey-DguImp0W.js} +2 -2
- package/dist/client/chunks/{chart-sankey-WwkZAhLy.js.map → chart-sankey-DguImp0W.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-DwXnI0rr.js → chart-scatter-Doeox4OP.js} +3 -3
- package/dist/client/chunks/{chart-scatter-DwXnI0rr.js.map → chart-scatter-Doeox4OP.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-CIDB_pTl.js → chart-sunburst-F3tgCpL-.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-CIDB_pTl.js.map → chart-sunburst-F3tgCpL-.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-DJHoA26f.js → chart-tree-map-DvuSCIc8.js} +3 -3
- package/dist/client/chunks/{chart-tree-map-DJHoA26f.js.map → chart-tree-map-DvuSCIc8.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-Y7c8csO5.js → chart-waterfall-Be5duXlO.js} +3 -3
- package/dist/client/chunks/{chart-waterfall-Y7c8csO5.js.map → chart-waterfall-Be5duXlO.js.map} +1 -1
- package/dist/client/chunks/{charts-core-BXOqaYFn.js → charts-core-XlOwoP_r.js} +2 -2
- package/dist/client/chunks/{charts-core-BXOqaYFn.js.map → charts-core-XlOwoP_r.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-vCifBijs.js → nl-NL-BLDeSy_P.js} +24 -4
- package/dist/client/chunks/nl-NL-BLDeSy_P.js.map +1 -0
- package/dist/client/chunks/{schema-visualization-DWwJukK7.js → schema-visualization-CM5ikSWB.js} +4 -4
- package/dist/client/chunks/{schema-visualization-DWwJukK7.js.map → schema-visualization-CM5ikSWB.js.map} +1 -1
- package/dist/client/chunks/{useDebounce-DyJVREop.js → useDebounce-NEZQbfxN.js} +4 -4
- package/dist/client/chunks/{useDebounce-DyJVREop.js.map → useDebounce-NEZQbfxN.js.map} +1 -1
- package/dist/client/chunks/{useExplainAI-CxSkjocM.js → useExplainAI-DivfI0dW.js} +4 -4
- package/dist/client/chunks/{useExplainAI-CxSkjocM.js.map → useExplainAI-DivfI0dW.js.map} +1 -1
- package/dist/client/chunks/{utils-BHZdKxua.js → utils-Ctl_cVNR.js} +2 -2
- package/dist/client/chunks/{utils-BHZdKxua.js.map → utils-Ctl_cVNR.js.map} +1 -1
- package/dist/client/chunks/{vendor-CBD_Olr0.js → vendor-BcLQ6iVZ.js} +2 -2
- package/dist/client/chunks/{vendor-CBD_Olr0.js.map → vendor-BcLQ6iVZ.js.map} +1 -1
- package/dist/client/components/AnalysisBuilder/types.d.ts +2 -2
- package/dist/client/components.js +3 -3
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.js +1 -1
- package/dist/client/index.js +14 -14
- package/dist/client/providers.js +1 -1
- package/dist/client/schema.js +1 -1
- package/dist/client/shared/chartDefaults.d.ts +5 -10
- package/dist/client/utils.js +5 -5
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +24 -24
- package/dist/server/index.cjs +135 -134
- package/dist/server/index.js +1128 -948
- package/package.json +2 -2
- package/dist/adapters/mcp-prompts-BUFyQLHQ.js +0 -377
- package/dist/adapters/mcp-prompts-B_NvEJT_.cjs +0 -111
- package/dist/adapters/mcp-transport-B0mgxRnJ.js +0 -579
- package/dist/adapters/mcp-transport-irsahKmD.cjs +0 -39
- package/dist/adapters/utils-XPOzzMdY.cjs +0 -17
- package/dist/client/chunks/KpiDelta-_igN6cJa.js +0 -2
- package/dist/client/chunks/KpiNumber-t5n8PtRU.js +0 -2
- package/dist/client/chunks/KpiText-BCZJJ6a0.js +0 -2
- package/dist/client/chunks/SchemaVisualization-BUUhlOvG.js +0 -2
- package/dist/client/chunks/SchemaVisualizationLazy-CwaPCUL0.js +0 -2
- package/dist/client/chunks/af-ZA-xDmO5F0s.js.map +0 -1
- package/dist/client/chunks/analysis-builder-Dm6eD_AX.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-DT5bXwCA.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-CWT0gLv4.js.map +0 -1
- package/dist/client/chunks/chart-config-activity-grid-C-EkgYoa.js.map +0 -1
- package/dist/client/chunks/chart-config-area-CMZpbIah.js.map +0 -1
- package/dist/client/chunks/chart-config-bar-B8_V4YLg.js.map +0 -1
- package/dist/client/chunks/chart-config-box-plot-Dwj7sEbU.js.map +0 -1
- package/dist/client/chunks/chart-config-bubble-B0w0ZVp4.js.map +0 -1
- package/dist/client/chunks/chart-config-candlestick-Bvo3zeIn.js.map +0 -1
- package/dist/client/chunks/chart-config-gauge-C5ZiyZy7.js.map +0 -1
- package/dist/client/chunks/chart-config-heat-map-Cv8qNnVP.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-delta-BraHQc2E.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-number-CeCkx7mC.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-text-CImM3SvH.js.map +0 -1
- package/dist/client/chunks/chart-config-line-BVKapAQK.js.map +0 -1
- package/dist/client/chunks/chart-config-measure-profile-KTVV1gO3.js.map +0 -1
- package/dist/client/chunks/chart-config-pie-BZxVl25X.js.map +0 -1
- package/dist/client/chunks/chart-config-radar-B7FByX3t.js.map +0 -1
- package/dist/client/chunks/chart-config-radial-bar-UfW_3yyX.js.map +0 -1
- package/dist/client/chunks/chart-config-scatter-BVVJuOnt.js.map +0 -1
- package/dist/client/chunks/chart-config-tree-map-IHp97OyV.js.map +0 -1
- package/dist/client/chunks/chart-config-waterfall-BdqG1V-x.js.map +0 -1
- package/dist/client/chunks/chart-data-table-Qrt6EAno.js.map +0 -1
- package/dist/client/chunks/nl-NL-vCifBijs.js.map +0 -1
- /package/dist/adapters/{anthropic-Cto4Jxqt.cjs → anthropic-BIva8k1r.cjs} +0 -0
- /package/dist/adapters/{anthropic-DpEbCVvF.js → anthropic-B_rg0BhK.js} +0 -0
- /package/dist/adapters/{dist-BnyV9wfA.cjs → dist-Boc63-1q.cjs} +0 -0
- /package/dist/adapters/{dist-DjVh2RFz.js → dist-De5fzUEM.js} +0 -0
- /package/dist/adapters/{openai-CoqT_FM5.cjs → openai-Bgri5TJc.cjs} +0 -0
- /package/dist/adapters/{openai-D0Nsvc9L.js → openai-CuUGrKaK.js} +0 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as i, n as a, r as o, t as s } from "./mcp-prompts-BUFyQLHQ.js";
|
|
1
|
+
import { C as e, S as t, _ as n, d as r, g as i, p as a, v as o, y as s } from "./utils-hC7Z8V39.js";
|
|
3
2
|
//#region src/server/agent/system-prompt.ts
|
|
4
3
|
function c(e) {
|
|
5
4
|
if (e.length === 0) return "No cubes are currently available.";
|
|
@@ -171,15 +170,15 @@ function u(e) {
|
|
|
171
170
|
"",
|
|
172
171
|
"---",
|
|
173
172
|
"",
|
|
174
|
-
l(
|
|
173
|
+
l(o),
|
|
175
174
|
"",
|
|
176
175
|
"---",
|
|
177
176
|
"",
|
|
178
|
-
l(
|
|
177
|
+
l(s),
|
|
179
178
|
"",
|
|
180
179
|
"---",
|
|
181
180
|
"",
|
|
182
|
-
l(
|
|
181
|
+
l(n),
|
|
183
182
|
"",
|
|
184
183
|
"---",
|
|
185
184
|
"",
|
|
@@ -244,6 +243,13 @@ var d = {
|
|
|
244
243
|
description: "chart.bar.description",
|
|
245
244
|
useCase: "chart.bar.useCase",
|
|
246
245
|
clickableElements: { bar: !0 },
|
|
246
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
|
|
247
|
+
available: !1,
|
|
248
|
+
reason: "chart.availability.requiresMeasure"
|
|
249
|
+
} : t < 1 ? {
|
|
250
|
+
available: !1,
|
|
251
|
+
reason: "chart.availability.requiresDimension"
|
|
252
|
+
} : { available: !0 },
|
|
247
253
|
dropZones: [
|
|
248
254
|
{
|
|
249
255
|
key: "xAxis",
|
|
@@ -325,6 +331,13 @@ var d = {
|
|
|
325
331
|
description: "chart.line.description",
|
|
326
332
|
useCase: "chart.line.useCase",
|
|
327
333
|
clickableElements: { point: !0 },
|
|
334
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
|
|
335
|
+
available: !1,
|
|
336
|
+
reason: "chart.availability.requiresMeasure"
|
|
337
|
+
} : t < 1 ? {
|
|
338
|
+
available: !1,
|
|
339
|
+
reason: "chart.availability.requiresDimension"
|
|
340
|
+
} : { available: !0 },
|
|
328
341
|
dropZones: [
|
|
329
342
|
{
|
|
330
343
|
key: "xAxis",
|
|
@@ -422,6 +435,13 @@ var d = {
|
|
|
422
435
|
label: "chart.area.label",
|
|
423
436
|
description: "chart.area.description",
|
|
424
437
|
useCase: "chart.area.useCase",
|
|
438
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
|
|
439
|
+
available: !1,
|
|
440
|
+
reason: "chart.availability.requiresMeasure"
|
|
441
|
+
} : t < 1 ? {
|
|
442
|
+
available: !1,
|
|
443
|
+
reason: "chart.availability.requiresDimension"
|
|
444
|
+
} : { available: !0 },
|
|
425
445
|
dropZones: [
|
|
426
446
|
{
|
|
427
447
|
key: "xAxis",
|
|
@@ -510,6 +530,13 @@ var d = {
|
|
|
510
530
|
description: "chart.pie.description",
|
|
511
531
|
useCase: "chart.pie.useCase",
|
|
512
532
|
clickableElements: { slice: !0 },
|
|
533
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
|
|
534
|
+
available: !1,
|
|
535
|
+
reason: "chart.availability.requiresMeasure"
|
|
536
|
+
} : t < 1 ? {
|
|
537
|
+
available: !1,
|
|
538
|
+
reason: "chart.availability.requiresDimension"
|
|
539
|
+
} : { available: !0 },
|
|
513
540
|
dropZones: [{
|
|
514
541
|
key: "xAxis",
|
|
515
542
|
label: "chart.configText.categories",
|
|
@@ -571,6 +598,13 @@ var d = {
|
|
|
571
598
|
label: "chart.scatter.label",
|
|
572
599
|
description: "chart.scatter.description",
|
|
573
600
|
useCase: "chart.scatter.useCase",
|
|
601
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
|
|
602
|
+
available: !1,
|
|
603
|
+
reason: "chart.availability.requiresMeasure"
|
|
604
|
+
} : e < 2 && t < 1 ? {
|
|
605
|
+
available: !1,
|
|
606
|
+
reason: "chart.availability.scatter"
|
|
607
|
+
} : { available: !0 },
|
|
574
608
|
dropZones: [
|
|
575
609
|
{
|
|
576
610
|
key: "xAxis",
|
|
@@ -626,6 +660,13 @@ var d = {
|
|
|
626
660
|
label: "chart.bubble.label",
|
|
627
661
|
description: "chart.bubble.description",
|
|
628
662
|
useCase: "chart.bubble.useCase",
|
|
663
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 2 ? {
|
|
664
|
+
available: !1,
|
|
665
|
+
reason: "chart.availability.requiresTwoMeasures"
|
|
666
|
+
} : t < 1 ? {
|
|
667
|
+
available: !1,
|
|
668
|
+
reason: "chart.availability.bubble"
|
|
669
|
+
} : { available: !0 },
|
|
629
670
|
dropZones: [
|
|
630
671
|
{
|
|
631
672
|
key: "xAxis",
|
|
@@ -702,6 +743,13 @@ var d = {
|
|
|
702
743
|
label: "chart.radar.label",
|
|
703
744
|
description: "chart.radar.description",
|
|
704
745
|
useCase: "chart.radar.useCase",
|
|
746
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
|
|
747
|
+
available: !1,
|
|
748
|
+
reason: "chart.availability.requiresMeasure"
|
|
749
|
+
} : t < 1 ? {
|
|
750
|
+
available: !1,
|
|
751
|
+
reason: "chart.availability.requiresDimension"
|
|
752
|
+
} : { available: !0 },
|
|
705
753
|
dropZones: [
|
|
706
754
|
{
|
|
707
755
|
key: "xAxis",
|
|
@@ -745,6 +793,13 @@ var d = {
|
|
|
745
793
|
label: "chart.radialBar.label",
|
|
746
794
|
description: "chart.radialBar.description",
|
|
747
795
|
useCase: "chart.radialBar.useCase",
|
|
796
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
|
|
797
|
+
available: !1,
|
|
798
|
+
reason: "chart.availability.requiresMeasure"
|
|
799
|
+
} : t < 1 ? {
|
|
800
|
+
available: !1,
|
|
801
|
+
reason: "chart.availability.requiresDimension"
|
|
802
|
+
} : { available: !0 },
|
|
748
803
|
dropZones: [{
|
|
749
804
|
key: "xAxis",
|
|
750
805
|
label: "chart.configText.categories",
|
|
@@ -777,6 +832,13 @@ var d = {
|
|
|
777
832
|
label: "chart.treemap.label",
|
|
778
833
|
description: "chart.treemap.description",
|
|
779
834
|
useCase: "chart.treemap.useCase",
|
|
835
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
|
|
836
|
+
available: !1,
|
|
837
|
+
reason: "chart.availability.requiresMeasure"
|
|
838
|
+
} : t < 1 ? {
|
|
839
|
+
available: !1,
|
|
840
|
+
reason: "chart.availability.requiresDimension"
|
|
841
|
+
} : { available: !0 },
|
|
780
842
|
dropZones: [
|
|
781
843
|
{
|
|
782
844
|
key: "xAxis",
|
|
@@ -846,6 +908,13 @@ var d = {
|
|
|
846
908
|
label: "chart.activityGrid.label",
|
|
847
909
|
description: "chart.activityGrid.description",
|
|
848
910
|
useCase: "chart.activityGrid.useCase",
|
|
911
|
+
isAvailable: ({ measureCount: e, timeDimensionCount: t }) => e < 1 ? {
|
|
912
|
+
available: !1,
|
|
913
|
+
reason: "chart.availability.requiresMeasure"
|
|
914
|
+
} : t < 1 ? {
|
|
915
|
+
available: !1,
|
|
916
|
+
reason: "chart.availability.requiresTimeDimension"
|
|
917
|
+
} : { available: !0 },
|
|
849
918
|
dropZones: [{
|
|
850
919
|
key: "dateField",
|
|
851
920
|
label: "chart.configText.time_dimension",
|
|
@@ -891,6 +960,10 @@ var d = {
|
|
|
891
960
|
label: "chart.kpiNumber.label",
|
|
892
961
|
description: "chart.kpiNumber.description",
|
|
893
962
|
useCase: "chart.kpiNumber.useCase",
|
|
963
|
+
isAvailable: ({ measureCount: e }) => e < 1 ? {
|
|
964
|
+
available: !1,
|
|
965
|
+
reason: "chart.availability.requiresMeasure"
|
|
966
|
+
} : { available: !0 },
|
|
894
967
|
dropZones: [{
|
|
895
968
|
key: "yAxis",
|
|
896
969
|
label: "chart.configText.value",
|
|
@@ -960,6 +1033,13 @@ var d = {
|
|
|
960
1033
|
label: "chart.kpiDelta.label",
|
|
961
1034
|
description: "chart.kpiDelta.description",
|
|
962
1035
|
useCase: "chart.kpiDelta.useCase",
|
|
1036
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
|
|
1037
|
+
available: !1,
|
|
1038
|
+
reason: "chart.availability.requiresMeasure"
|
|
1039
|
+
} : t < 1 ? {
|
|
1040
|
+
available: !1,
|
|
1041
|
+
reason: "chart.availability.requiresDimension"
|
|
1042
|
+
} : { available: !0 },
|
|
963
1043
|
dropZones: [{
|
|
964
1044
|
key: "yAxis",
|
|
965
1045
|
label: "chart.configText.value",
|
|
@@ -1048,6 +1128,10 @@ var d = {
|
|
|
1048
1128
|
label: "chart.kpiText.label",
|
|
1049
1129
|
description: "chart.kpiText.description",
|
|
1050
1130
|
useCase: "chart.kpiText.useCase",
|
|
1131
|
+
isAvailable: ({ measureCount: e }) => e < 1 ? {
|
|
1132
|
+
available: !1,
|
|
1133
|
+
reason: "chart.availability.requiresMeasure"
|
|
1134
|
+
} : { available: !0 },
|
|
1051
1135
|
dropZones: [{
|
|
1052
1136
|
key: "yAxis",
|
|
1053
1137
|
label: "chart.configText.value",
|
|
@@ -1386,6 +1470,13 @@ var d = {
|
|
|
1386
1470
|
label: "chart.heatmap.label",
|
|
1387
1471
|
description: "chart.heatmap.description",
|
|
1388
1472
|
useCase: "chart.heatmap.useCase",
|
|
1473
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
|
|
1474
|
+
available: !1,
|
|
1475
|
+
reason: "chart.availability.requiresMeasure"
|
|
1476
|
+
} : t < 2 ? {
|
|
1477
|
+
available: !1,
|
|
1478
|
+
reason: "chart.availability.requiresTwoDimensions"
|
|
1479
|
+
} : { available: !0 },
|
|
1389
1480
|
dropZones: [
|
|
1390
1481
|
{
|
|
1391
1482
|
key: "xAxis",
|
|
@@ -1540,6 +1631,13 @@ var d = {
|
|
|
1540
1631
|
label: "chart.boxPlot.label",
|
|
1541
1632
|
description: "chart.boxPlot.description",
|
|
1542
1633
|
useCase: "chart.boxPlot.useCase",
|
|
1634
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
|
|
1635
|
+
available: !1,
|
|
1636
|
+
reason: "chart.availability.requiresMeasure"
|
|
1637
|
+
} : t < 1 ? {
|
|
1638
|
+
available: !1,
|
|
1639
|
+
reason: "chart.availability.requiresDimension"
|
|
1640
|
+
} : { available: !0 },
|
|
1543
1641
|
displayOptions: ["hideHeader"],
|
|
1544
1642
|
dropZones: [{
|
|
1545
1643
|
key: "xAxis",
|
|
@@ -1570,6 +1668,13 @@ var d = {
|
|
|
1570
1668
|
description: "chart.waterfall.description",
|
|
1571
1669
|
useCase: "chart.waterfall.useCase",
|
|
1572
1670
|
clickableElements: { bar: !0 },
|
|
1671
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
|
|
1672
|
+
available: !1,
|
|
1673
|
+
reason: "chart.availability.requiresMeasure"
|
|
1674
|
+
} : t < 1 ? {
|
|
1675
|
+
available: !1,
|
|
1676
|
+
reason: "chart.availability.requiresDimension"
|
|
1677
|
+
} : { available: !0 },
|
|
1573
1678
|
displayOptions: ["showTooltip", "hideHeader"],
|
|
1574
1679
|
dropZones: [{
|
|
1575
1680
|
key: "xAxis",
|
|
@@ -1624,6 +1729,13 @@ var d = {
|
|
|
1624
1729
|
useCase: "chart.candlestick.useCase",
|
|
1625
1730
|
clickableElements: { bar: !0 },
|
|
1626
1731
|
displayOptions: ["hideHeader"],
|
|
1732
|
+
isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 2 ? {
|
|
1733
|
+
available: !1,
|
|
1734
|
+
reason: "chart.availability.requiresTwoMeasures"
|
|
1735
|
+
} : t < 1 ? {
|
|
1736
|
+
available: !1,
|
|
1737
|
+
reason: "chart.availability.requiresDimension"
|
|
1738
|
+
} : { available: !0 },
|
|
1627
1739
|
dropZones: [{
|
|
1628
1740
|
key: "xAxis",
|
|
1629
1741
|
label: "chart.configText.x_axis_time_category",
|
|
@@ -1693,6 +1805,10 @@ var d = {
|
|
|
1693
1805
|
"showTooltip",
|
|
1694
1806
|
"hideHeader"
|
|
1695
1807
|
],
|
|
1808
|
+
isAvailable: ({ measureCount: e }) => e < 2 ? {
|
|
1809
|
+
available: !1,
|
|
1810
|
+
reason: "chart.availability.requiresTwoMeasures"
|
|
1811
|
+
} : { available: !0 },
|
|
1696
1812
|
dropZones: [{
|
|
1697
1813
|
key: "yAxis",
|
|
1698
1814
|
label: "chart.configText.measures_x_axis_order",
|
|
@@ -1766,6 +1882,10 @@ var d = {
|
|
|
1766
1882
|
useCase: "chart.gauge.useCase",
|
|
1767
1883
|
clickableElements: {},
|
|
1768
1884
|
displayOptions: ["hideHeader"],
|
|
1885
|
+
isAvailable: ({ measureCount: e }) => e < 1 ? {
|
|
1886
|
+
available: !1,
|
|
1887
|
+
reason: "chart.availability.requiresMeasure"
|
|
1888
|
+
} : { available: !0 },
|
|
1769
1889
|
dropZones: [{
|
|
1770
1890
|
key: "yAxis",
|
|
1771
1891
|
label: "chart.configText.value_measure",
|
|
@@ -1974,7 +2094,7 @@ function g() {
|
|
|
1974
2094
|
description: "Execute a semantic query and return data results. Supports standard queries (measures/dimensions) and analysis modes (funnel/flow/retention). Only provide ONE mode per call.",
|
|
1975
2095
|
parameters: {
|
|
1976
2096
|
type: "object",
|
|
1977
|
-
properties:
|
|
2097
|
+
properties: t
|
|
1978
2098
|
}
|
|
1979
2099
|
},
|
|
1980
2100
|
{
|
|
@@ -2214,9 +2334,9 @@ function g() {
|
|
|
2214
2334
|
];
|
|
2215
2335
|
}
|
|
2216
2336
|
function _(e) {
|
|
2217
|
-
let { semanticLayer:
|
|
2337
|
+
let { semanticLayer: t, securityContext: n } = e, o = /* @__PURE__ */ new Map();
|
|
2218
2338
|
o.set("discover_cubes", async (e) => {
|
|
2219
|
-
let n = { cubes: (await t
|
|
2339
|
+
let n = { cubes: (await r(t, {
|
|
2220
2340
|
topic: e.topic,
|
|
2221
2341
|
intent: e.intent,
|
|
2222
2342
|
limit: e.limit,
|
|
@@ -2237,11 +2357,11 @@ function _(e) {
|
|
|
2237
2357
|
})) };
|
|
2238
2358
|
return { result: JSON.stringify(n) + "\n[IMPORTANT: Your next response MUST start with a brief text message BEFORE any tool calls.]" };
|
|
2239
2359
|
}), o.set("get_cube_metadata", async () => {
|
|
2240
|
-
let e =
|
|
2360
|
+
let e = t.getMetadata();
|
|
2241
2361
|
return { result: JSON.stringify(e) };
|
|
2242
2362
|
});
|
|
2243
2363
|
let s = /* @__PURE__ */ new Map();
|
|
2244
|
-
for (let e of
|
|
2364
|
+
for (let e of t.getMetadata()) s.set(e.name, {
|
|
2245
2365
|
measures: (e.measures || []).map((e) => e.name),
|
|
2246
2366
|
dimensions: (e.dimensions || []).map((e) => e.name)
|
|
2247
2367
|
});
|
|
@@ -2251,7 +2371,7 @@ function _(e) {
|
|
|
2251
2371
|
};
|
|
2252
2372
|
return o.set("execute_query", async (e) => {
|
|
2253
2373
|
try {
|
|
2254
|
-
let
|
|
2374
|
+
let r = (e, t) => {
|
|
2255
2375
|
if (!Array.isArray(e)) return;
|
|
2256
2376
|
let n = [];
|
|
2257
2377
|
for (let r of e) {
|
|
@@ -2261,9 +2381,9 @@ function _(e) {
|
|
|
2261
2381
|
}
|
|
2262
2382
|
if (n.length > 0) throw Error(`Invalid ${t}:\n${n.join("\n")}`);
|
|
2263
2383
|
};
|
|
2264
|
-
|
|
2265
|
-
let
|
|
2266
|
-
|
|
2384
|
+
r(e.measures, "measures"), r(e.dimensions, "dimensions");
|
|
2385
|
+
let i;
|
|
2386
|
+
i = e.funnel ? { funnel: e.funnel } : e.flow ? { flow: e.flow } : e.retention ? { retention: e.retention } : {
|
|
2267
2387
|
measures: e.measures,
|
|
2268
2388
|
dimensions: e.dimensions,
|
|
2269
2389
|
filters: e.filters,
|
|
@@ -2273,7 +2393,7 @@ function _(e) {
|
|
|
2273
2393
|
offset: e.offset,
|
|
2274
2394
|
ungrouped: e.ungrouped
|
|
2275
2395
|
};
|
|
2276
|
-
let o = await
|
|
2396
|
+
let o = await a(t, n, { query: i });
|
|
2277
2397
|
return { result: JSON.stringify({
|
|
2278
2398
|
rowCount: o.data.length,
|
|
2279
2399
|
data: o.data,
|
|
@@ -2297,7 +2417,7 @@ function _(e) {
|
|
|
2297
2417
|
};
|
|
2298
2418
|
}
|
|
2299
2419
|
}), o.set("add_portlet", async (e) => {
|
|
2300
|
-
let
|
|
2420
|
+
let n = {
|
|
2301
2421
|
number: "kpiNumber",
|
|
2302
2422
|
retention: "retentionHeatmap"
|
|
2303
2423
|
}[e.chartType] ?? e.chartType, r;
|
|
@@ -2309,8 +2429,8 @@ function _(e) {
|
|
|
2309
2429
|
isError: !0
|
|
2310
2430
|
};
|
|
2311
2431
|
}
|
|
2312
|
-
r =
|
|
2313
|
-
let a =
|
|
2432
|
+
r = i(r);
|
|
2433
|
+
let a = t.validateQuery(r);
|
|
2314
2434
|
if (!a.isValid) return {
|
|
2315
2435
|
result: `Invalid query — fix these errors and retry:\n${a.errors.join("\n")}\n\nAttempted query:\n${JSON.stringify(r, null, 2)}`,
|
|
2316
2436
|
isError: !0
|
|
@@ -2318,23 +2438,23 @@ function _(e) {
|
|
|
2318
2438
|
let o = !!(r.funnel || r.flow || r.retention), s;
|
|
2319
2439
|
if (o) s = e.chartConfig ?? {};
|
|
2320
2440
|
else {
|
|
2321
|
-
let
|
|
2441
|
+
let t = p(n, e.chartConfig, r), i = f(n, t, r);
|
|
2322
2442
|
if (!i.isValid) return {
|
|
2323
2443
|
result: `Chart config invalid — fix these errors and retry:\n${i.errors.join("\n")}`,
|
|
2324
2444
|
isError: !0
|
|
2325
2445
|
};
|
|
2326
|
-
s =
|
|
2446
|
+
s = t;
|
|
2327
2447
|
}
|
|
2328
2448
|
let c = `portlet-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`, l = {
|
|
2329
2449
|
id: c,
|
|
2330
2450
|
title: e.title,
|
|
2331
2451
|
query: e.query,
|
|
2332
|
-
chartType:
|
|
2452
|
+
chartType: n,
|
|
2333
2453
|
chartConfig: s,
|
|
2334
2454
|
displayConfig: e.displayConfig
|
|
2335
2455
|
};
|
|
2336
2456
|
return {
|
|
2337
|
-
result: `Portlet "${e.title}" added to notebook (id: ${c}, chart: ${
|
|
2457
|
+
result: `Portlet "${e.title}" added to notebook (id: ${c}, chart: ${n}). [Reminder: in your next response, start with a brief sentence about what you will do next BEFORE making any tool calls.]`,
|
|
2338
2458
|
sideEffect: {
|
|
2339
2459
|
type: "add_portlet",
|
|
2340
2460
|
data: l
|
|
@@ -2355,28 +2475,28 @@ function _(e) {
|
|
|
2355
2475
|
};
|
|
2356
2476
|
}), o.set("save_as_dashboard", async (e) => {
|
|
2357
2477
|
try {
|
|
2358
|
-
let
|
|
2359
|
-
if (!
|
|
2478
|
+
let n = e.portlets;
|
|
2479
|
+
if (!n || n.length === 0) return {
|
|
2360
2480
|
result: "Dashboard must contain at least one portlet.",
|
|
2361
2481
|
isError: !0
|
|
2362
2482
|
};
|
|
2363
2483
|
let r = [];
|
|
2364
|
-
for (let e of
|
|
2484
|
+
for (let e of n) {
|
|
2365
2485
|
if (e.chartType === "markdown") continue;
|
|
2366
|
-
let
|
|
2367
|
-
if (!
|
|
2486
|
+
let n = e.query;
|
|
2487
|
+
if (!n) {
|
|
2368
2488
|
r.push(`Portlet "${e.title}": missing query`);
|
|
2369
2489
|
continue;
|
|
2370
2490
|
}
|
|
2371
2491
|
let a;
|
|
2372
2492
|
try {
|
|
2373
|
-
a = JSON.parse(
|
|
2493
|
+
a = JSON.parse(n);
|
|
2374
2494
|
} catch {
|
|
2375
2495
|
r.push(`Portlet "${e.title}": invalid JSON query`);
|
|
2376
2496
|
continue;
|
|
2377
2497
|
}
|
|
2378
|
-
a =
|
|
2379
|
-
let o =
|
|
2498
|
+
a = i(a);
|
|
2499
|
+
let o = t.validateQuery(a);
|
|
2380
2500
|
o.isValid || r.push(`Portlet "${e.title}": ${o.errors.join(", ")}`);
|
|
2381
2501
|
}
|
|
2382
2502
|
if (r.length > 0) return {
|
|
@@ -2384,7 +2504,7 @@ function _(e) {
|
|
|
2384
2504
|
isError: !0
|
|
2385
2505
|
};
|
|
2386
2506
|
let a = {
|
|
2387
|
-
portlets:
|
|
2507
|
+
portlets: n.map((e) => {
|
|
2388
2508
|
let t = e.chartType, n = t === "markdown", r = n ? "query" : e.analysisType || "query", i = r === "funnel" ? "funnel" : r === "flow" ? "flow" : r === "retention" ? "retention" : "query", a = e.query || "{}", o;
|
|
2389
2509
|
try {
|
|
2390
2510
|
o = JSON.parse(a);
|
|
@@ -2440,15 +2560,15 @@ function _(e) {
|
|
|
2440
2560
|
async function v(e, t, n) {
|
|
2441
2561
|
switch (e) {
|
|
2442
2562
|
case "anthropic": {
|
|
2443
|
-
let { AnthropicProvider: e } = await import("./anthropic-
|
|
2563
|
+
let { AnthropicProvider: e } = await import("./anthropic-B_rg0BhK.js");
|
|
2444
2564
|
return new e(t);
|
|
2445
2565
|
}
|
|
2446
2566
|
case "openai": {
|
|
2447
|
-
let { OpenAIProvider: e } = await import("./openai-
|
|
2567
|
+
let { OpenAIProvider: e } = await import("./openai-DQawCWQb.js");
|
|
2448
2568
|
return new e(t, n);
|
|
2449
2569
|
}
|
|
2450
2570
|
case "google": {
|
|
2451
|
-
let { GoogleProvider: e } = await import("./google-
|
|
2571
|
+
let { GoogleProvider: e } = await import("./google-CT4kgmBf.js");
|
|
2452
2572
|
return new e(t);
|
|
2453
2573
|
}
|
|
2454
2574
|
default: throw Error(`Unknown LLM provider: "${e}". Supported providers: anthropic, openai, google`);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../utils-XPOzzMdY.cjs`),t=require(`../locale-BoiA6WiV.cjs`),n=require(`../mcp-transport-irsahKmD.cjs`);let r=require(`hono`);var i=e=>{let t={origin:`*`,allowMethods:[`GET`,`HEAD`,`PUT`,`POST`,`DELETE`,`PATCH`],allowHeaders:[],exposeHeaders:[],...e},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);return async function(e,i){function a(t,n){e.res.headers.set(t,n)}let o=await n(e.req.header(`origin`)||``,e);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`){(t.origin!==`*`||t.credentials)&&a(`Vary`,`Origin`),t.maxAge!=null&&a(`Access-Control-Max-Age`,t.maxAge.toString());let n=await r(e.req.header(`origin`)||``,e);n.length&&a(`Access-Control-Allow-Methods`,n.join(`,`));let i=t.allowHeaders;if(!i?.length){let t=e.req.header(`Access-Control-Request-Headers`);t&&(i=t.split(/\s*,\s*/))}return i?.length&&(a(`Access-Control-Allow-Headers`,i.join(`,`)),e.res.headers.append(`Vary`,`Access-Control-Request-Headers`)),e.res.headers.delete(`Content-Length`),e.res.headers.delete(`Content-Type`),new Response(null,{headers:e.res.headers,status:204,statusText:`No Content`})}await i(),(t.origin!==`*`||t.credentials)&&e.header(`Vary`,`Origin`,{append:!0})}};function a(a){let{cubes:o,drizzle:s,schema:c,extractSecurityContext:l,engineType:u,cors:d,basePath:f=`/cubejs-api/v1`,cache:p,mcp:m={enabled:!0},agent:h}=a;if(!a.semanticLayer&&(!o||o.length===0))throw Error(`Either semanticLayer or a non-empty cubes array must be provided`);let g=new r.Hono,_=async e=>t.r(await l(e),t.n(t=>e.req.header(t)));if(d){let e={...d,allowHeaders:t.t(d.allowHeaders)};g.use(`/*`,i(e))}let v=a.semanticLayer??new t.i({drizzle:s,schema:c,engineType:u,cache:p,rlsSetup:a.rlsSetup});if(!a.semanticLayer&&o&&o.forEach(e=>{v.registerCube(e)}),g.post(`${f}/load`,async t=>{try{let n=await t.req.json(),r=n.query||n,i=await _(t),a=v.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=t.req.header(`x-cache-control`)===`no-cache`,s=await v.executeMultiCubeQuery(r,i,{skipCache:o});return t.json(e.r(r,s,v))}catch(e){return console.error(`Query execution error:`,e),t.json({error:e instanceof Error?e.message:`Query execution failed`},500)}}),g.get(`${f}/load`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`},400);let r;try{r=JSON.parse(n)}catch{return t.json({error:`Invalid JSON in query parameter`},400)}let i=await _(t),a=v.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=t.req.header(`x-cache-control`)===`no-cache`,s=await v.executeMultiCubeQuery(r,i,{skipCache:o});return t.json(e.r(r,s,v))}catch(e){return console.error(`Query execution error:`,e),t.json({error:e instanceof Error?e.message:`Query execution failed`},500)}}),g.post(`${f}/batch`,async t=>{try{let{queries:n}=await t.req.json();if(!n||!Array.isArray(n))return t.json({error:`Request body must contain a "queries" array`},400);if(n.length===0)return t.json({error:`Queries array cannot be empty`},400);let r=await e.u(n,await _(t),v,{skipCache:t.req.header(`x-cache-control`)===`no-cache`});return t.json(r)}catch(e){return console.error(`Batch execution error:`,e),t.json({error:e instanceof Error?e.message:`Batch execution failed`},500)}}),g.get(`${f}/meta`,t=>{try{let n=v.getMetadata();return t.json(e.a(n))}catch(e){return console.error(`Metadata error:`,e),t.json({error:e instanceof Error?e.message:`Failed to fetch metadata`},500)}}),g.post(`${f}/sql`,async t=>{try{let n=await t.req.json(),r=await _(t),i=v.validateQuery(n);if(!i.isValid)return t.json({error:`Query validation failed: ${i.errors.join(`, `)}`},400);let a=n.measures?.[0]||n.dimensions?.[0];if(!a)return t.json({error:`No measures or dimensions specified`},400);let o=a.split(`.`)[0],s=await v.generateSQL(o,n,r);return t.json(e.o(n,s))}catch(e){return console.error(`SQL generation error:`,e),t.json({error:e instanceof Error?e.message:`SQL generation failed`},500)}}),g.get(`${f}/sql`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`},400);let r=JSON.parse(n),i=await _(t),a=v.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=r.measures?.[0]||r.dimensions?.[0];if(!o)return t.json({error:`No measures or dimensions specified`},400);let s=o.split(`.`)[0],c=await v.generateSQL(s,r,i);return t.json(e.o(r,c))}catch(e){return console.error(`SQL generation error:`,e),t.json({error:e instanceof Error?e.message:`SQL generation failed`},500)}}),g.post(`${f}/dry-run`,async t=>{try{let n=await t.req.json(),r=await e.f(n.query||n,await _(t),v);return t.json(r)}catch(e){return console.error(`Dry-run error:`,e),t.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},400)}}),g.get(`${f}/dry-run`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`,valid:!1},400);let r=await e.f(JSON.parse(n),await _(t),v);return t.json(r)}catch(e){return console.error(`Dry-run error:`,e),t.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},400)}}),g.post(`${f}/explain`,async e=>{try{let t=await e.req.json(),n=t.query||t,r=t.options||{},i=await _(e),a=v.validateQuery(n);if(!a.isValid)return e.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=await v.explainQuery(n,i,r);return e.json(o)}catch(t){return console.error(`Explain error:`,t),e.json({error:t instanceof Error?t.message:`Explain query failed`},500)}}),h&&g.post(`${f}/agent/chat`,async e=>{try{let{handleAgentChat:t}=await Promise.resolve().then(()=>require(`../handler-Cqf-CqAS.cjs`)),{message:n,sessionId:r,history:i}=await e.req.json();if(!n||typeof n!=`string`)return e.json({error:`message is required and must be a string`},400);let a=(h.apiKey||``).trim();if(h.allowClientApiKey){let t=e.req.header(`x-agent-api-key`);t&&(a=t.trim())}if(!a)return e.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},401);let o=h.allowClientApiKey?e.req.header(`x-agent-provider`):void 0,s=h.allowClientApiKey?e.req.header(`x-agent-model`):void 0,c=h.allowClientApiKey?e.req.header(`x-agent-provider-endpoint`):void 0,l=await _(e),u=h.buildSystemContext?.(l),d=new TextEncoder,f=new ReadableStream({async start(e){try{let f=t({message:n,sessionId:r,history:i,semanticLayer:v,securityContext:l,agentConfig:h,apiKey:a,systemContext:u,providerOverride:o,modelOverride:s,baseURLOverride:c});for await(let t of f){let n=`data: ${JSON.stringify(t)}\n\n`;e.enqueue(d.encode(n))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(d.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}});return new Response(f,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}})}catch(t){return console.error(`Agent chat error:`,t),e.json({error:t instanceof Error?t.message:`Agent chat failed`},500)}}),m.enabled!==!1){let e=n.o(v,m.resources),t=n.v(m.prompts),r=m.basePath??`/mcp`;g.post(`${r}`,async r=>{if(m.resourceMetadataUrl&&!n.u(r.req.header(`authorization`)))return r.header(`WWW-Authenticate`,n.c(m.resourceMetadataUrl)),r.json({error:`Bearer token required`},401);let i=n.x(r.req.header(`origin`),m.allowedOrigins?{allowedOrigins:m.allowedOrigins}:{});if(!i.valid)return r.json(n.i(null,-32600,i.reason),403);let a=r.req.header(`accept`);if(!n.b(a))return r.json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`),400);let o=n.h(r.req.header());if(!o.ok)return r.json({error:`Unsupported MCP protocol version`,supported:o.supported},426);let s=n.g(await r.req.json().catch(()=>null));if(!s)return r.json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`),400);let c=n.S(a),l=s.method===`initialize`;try{let i=await n.l(s.method,s.params,{semanticLayer:v,extractSecurityContext:(e,t)=>_(e),rawRequest:r,rawResponse:null,negotiatedProtocol:o.negotiated,resources:e,prompts:t,appEnabled:!!m.app,appConfig:typeof m.app==`object`?m.app:void 0,serverName:m.serverName});if(n.m(s))return r.body(null,202);let a=n.a(s.id??null,i),u=l&&i&&typeof i==`object`&&`sessionId`in i?i.sessionId:void 0,d={};if(u&&(d[n.r]=u),c){let e=new TextEncoder,t=n._(),r=new ReadableStream({start(r){r.enqueue(e.encode(`id: ${t}\n\n`)),r.enqueue(e.encode(n.y(a,t))),r.close()}});return new Response(r,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...d}})}return r.json(a,200,d)}catch(e){if(n.m(s))return console.error(`MCP notification processing error:`,e),r.body(null,202);console.error(`MCP RPC error:`,e);let t=e?.code??-32603,i=e?.data,a=e.message||`MCP request failed`,o=n.i(s.id??null,t,a,i);if(c){let e=new TextEncoder,t=n._(),r=new ReadableStream({start(r){r.enqueue(e.encode(`id: ${t}\n\n`)),r.enqueue(e.encode(n.y(o,t))),r.close()}});return new Response(r,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}})}return r.json(o,200)}}),g.delete(`${r}`,e=>m.resourceMetadataUrl&&!n.u(e.req.header(`authorization`))?(e.header(`WWW-Authenticate`,n.c(m.resourceMetadataUrl)),e.json({error:`Bearer token required`},401)):e.json({error:`Session termination not supported`},405)),g.get(`${r}`,e=>{if(m.resourceMetadataUrl&&!n.u(e.req.header(`authorization`)))return e.header(`WWW-Authenticate`,n.c(m.resourceMetadataUrl)),e.json({error:`Bearer token required`},401);let t=new TextEncoder,r=n._(),i,a=new ReadableStream({start(e){e.enqueue(t.encode(n.y({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},r,15e3))),i=setInterval(()=>{e.enqueue(t.encode(`: keep-alive
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../utils-CIRA5_JO.cjs`),t=require(`../locale-CTuvUGBs.cjs`),n=require(`../mcp-transport-bQzyrBPI.cjs`);let r=require(`hono`);var i=e=>{let t={origin:`*`,allowMethods:[`GET`,`HEAD`,`PUT`,`POST`,`DELETE`,`PATCH`],allowHeaders:[],exposeHeaders:[],...e},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);return async function(e,i){function a(t,n){e.res.headers.set(t,n)}let o=await n(e.req.header(`origin`)||``,e);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`){(t.origin!==`*`||t.credentials)&&a(`Vary`,`Origin`),t.maxAge!=null&&a(`Access-Control-Max-Age`,t.maxAge.toString());let n=await r(e.req.header(`origin`)||``,e);n.length&&a(`Access-Control-Allow-Methods`,n.join(`,`));let i=t.allowHeaders;if(!i?.length){let t=e.req.header(`Access-Control-Request-Headers`);t&&(i=t.split(/\s*,\s*/))}return i?.length&&(a(`Access-Control-Allow-Headers`,i.join(`,`)),e.res.headers.append(`Vary`,`Access-Control-Request-Headers`)),e.res.headers.delete(`Content-Length`),e.res.headers.delete(`Content-Type`),new Response(null,{headers:e.res.headers,status:204,statusText:`No Content`})}await i(),(t.origin!==`*`||t.credentials)&&e.header(`Vary`,`Origin`,{append:!0})}};function a(a){let{cubes:o,drizzle:s,schema:c,extractSecurityContext:l,engineType:u,cors:d,basePath:f=`/cubejs-api/v1`,cache:p,mcp:m={enabled:!0},agent:h}=a;if(!a.semanticLayer&&(!o||o.length===0))throw Error(`Either semanticLayer or a non-empty cubes array must be provided`);let g=new r.Hono,_=async e=>t.r(await l(e),t.n(t=>e.req.header(t)));if(d){let e={...d,allowHeaders:t.t(d.allowHeaders)};g.use(`/*`,i(e))}let v=a.semanticLayer??new t.i({drizzle:s,schema:c,engineType:u,cache:p,rlsSetup:a.rlsSetup});if(!a.semanticLayer&&o&&o.forEach(e=>{v.registerCube(e)}),g.post(`${f}/load`,async t=>{try{let n=await t.req.json(),r=n.query||n,i=await _(t),a=v.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=t.req.header(`x-cache-control`)===`no-cache`,s=await v.executeMultiCubeQuery(r,i,{skipCache:o});return t.json(e.r(r,s,v))}catch(e){return console.error(`Query execution error:`,e),t.json({error:e instanceof Error?e.message:`Query execution failed`},500)}}),g.get(`${f}/load`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`},400);let r;try{r=JSON.parse(n)}catch{return t.json({error:`Invalid JSON in query parameter`},400)}let i=await _(t),a=v.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=t.req.header(`x-cache-control`)===`no-cache`,s=await v.executeMultiCubeQuery(r,i,{skipCache:o});return t.json(e.r(r,s,v))}catch(e){return console.error(`Query execution error:`,e),t.json({error:e instanceof Error?e.message:`Query execution failed`},500)}}),g.post(`${f}/batch`,async t=>{try{let{queries:n}=await t.req.json();if(!n||!Array.isArray(n))return t.json({error:`Request body must contain a "queries" array`},400);if(n.length===0)return t.json({error:`Queries array cannot be empty`},400);let r=await e.u(n,await _(t),v,{skipCache:t.req.header(`x-cache-control`)===`no-cache`});return t.json(r)}catch(e){return console.error(`Batch execution error:`,e),t.json({error:e instanceof Error?e.message:`Batch execution failed`},500)}}),g.get(`${f}/meta`,t=>{try{let n=v.getMetadata();return t.json(e.a(n))}catch(e){return console.error(`Metadata error:`,e),t.json({error:e instanceof Error?e.message:`Failed to fetch metadata`},500)}}),g.post(`${f}/sql`,async t=>{try{let n=await t.req.json(),r=await _(t),i=v.validateQuery(n);if(!i.isValid)return t.json({error:`Query validation failed: ${i.errors.join(`, `)}`},400);let a=n.measures?.[0]||n.dimensions?.[0];if(!a)return t.json({error:`No measures or dimensions specified`},400);let o=a.split(`.`)[0],s=await v.generateSQL(o,n,r);return t.json(e.o(n,s))}catch(e){return console.error(`SQL generation error:`,e),t.json({error:e instanceof Error?e.message:`SQL generation failed`},500)}}),g.get(`${f}/sql`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`},400);let r=JSON.parse(n),i=await _(t),a=v.validateQuery(r);if(!a.isValid)return t.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=r.measures?.[0]||r.dimensions?.[0];if(!o)return t.json({error:`No measures or dimensions specified`},400);let s=o.split(`.`)[0],c=await v.generateSQL(s,r,i);return t.json(e.o(r,c))}catch(e){return console.error(`SQL generation error:`,e),t.json({error:e instanceof Error?e.message:`SQL generation failed`},500)}}),g.post(`${f}/dry-run`,async t=>{try{let n=await t.req.json(),r=await e.f(n.query||n,await _(t),v);return t.json(r)}catch(e){return console.error(`Dry-run error:`,e),t.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},400)}}),g.get(`${f}/dry-run`,async t=>{try{let n=t.req.query(`query`);if(!n)return t.json({error:`Query parameter is required`,valid:!1},400);let r=await e.f(JSON.parse(n),await _(t),v);return t.json(r)}catch(e){return console.error(`Dry-run error:`,e),t.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},400)}}),g.post(`${f}/explain`,async e=>{try{let t=await e.req.json(),n=t.query||t,r=t.options||{},i=await _(e),a=v.validateQuery(n);if(!a.isValid)return e.json({error:`Query validation failed: ${a.errors.join(`, `)}`},400);let o=await v.explainQuery(n,i,r);return e.json(o)}catch(t){return console.error(`Explain error:`,t),e.json({error:t instanceof Error?t.message:`Explain query failed`},500)}}),h&&g.post(`${f}/agent/chat`,async e=>{try{let{handleAgentChat:t}=await Promise.resolve().then(()=>require(`../handler-C1Qs8JMY.cjs`)),{message:n,sessionId:r,history:i}=await e.req.json();if(!n||typeof n!=`string`)return e.json({error:`message is required and must be a string`},400);let a=(h.apiKey||``).trim();if(h.allowClientApiKey){let t=e.req.header(`x-agent-api-key`);t&&(a=t.trim())}if(!a)return e.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},401);let o=h.allowClientApiKey?e.req.header(`x-agent-provider`):void 0,s=h.allowClientApiKey?e.req.header(`x-agent-model`):void 0,c=h.allowClientApiKey?e.req.header(`x-agent-provider-endpoint`):void 0,l=await _(e),u=h.buildSystemContext?.(l),d=new TextEncoder,f=new ReadableStream({async start(e){try{let f=t({message:n,sessionId:r,history:i,semanticLayer:v,securityContext:l,agentConfig:h,apiKey:a,systemContext:u,providerOverride:o,modelOverride:s,baseURLOverride:c});for await(let t of f){let n=`data: ${JSON.stringify(t)}\n\n`;e.enqueue(d.encode(n))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(d.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}});return new Response(f,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}})}catch(t){return console.error(`Agent chat error:`,t),e.json({error:t instanceof Error?t.message:`Agent chat failed`},500)}}),m.enabled!==!1){let e=n.o(v,m.resources),t=n.y(m.prompts),r=n.v(m.instructions),i=m.basePath??`/mcp`;g.post(`${i}`,async i=>{if(m.resourceMetadataUrl&&!n.u(i.req.header(`authorization`)))return i.header(`WWW-Authenticate`,n.c(m.resourceMetadataUrl)),i.json({error:`Bearer token required`},401);let a=n.S(i.req.header(`origin`),m.allowedOrigins?{allowedOrigins:m.allowedOrigins}:{});if(!a.valid)return i.json(n.i(null,-32600,a.reason),403);let o=i.req.header(`accept`);if(!n.x(o))return i.json(n.i(null,-32600,`Accept header must include both application/json and text/event-stream`),400);let s=n.h(i.req.header());if(!s.ok)return i.json({error:`Unsupported MCP protocol version`,supported:s.supported},426);let c=n.g(await i.req.json().catch(()=>null));if(!c)return i.json(n.i(null,-32600,`Invalid JSON-RPC 2.0 request`),400);let l=n.C(o),u=c.method===`initialize`;try{let a=await n.l(c.method,c.params,{semanticLayer:v,extractSecurityContext:(e,t)=>_(e),rawRequest:i,rawResponse:null,negotiatedProtocol:s.negotiated,resources:e,prompts:t,instructions:r,appEnabled:!!m.app,appConfig:typeof m.app==`object`?m.app:void 0,serverName:m.serverName});if(n.m(c))return i.body(null,202);let o=n.a(c.id??null,a),d=u&&a&&typeof a==`object`&&`sessionId`in a?a.sessionId:void 0,f={};if(d&&(f[n.r]=d),l){let e=new TextEncoder,t=n._(),r=new ReadableStream({start(r){r.enqueue(e.encode(`id: ${t}\n\n`)),r.enqueue(e.encode(n.b(o,t))),r.close()}});return new Response(r,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...f}})}return i.json(o,200,f)}catch(e){if(n.m(c))return console.error(`MCP notification processing error:`,e),i.body(null,202);console.error(`MCP RPC error:`,e);let t=e?.code??-32603,r=e?.data,a=e.message||`MCP request failed`,o=n.i(c.id??null,t,a,r);if(l){let e=new TextEncoder,t=n._(),r=new ReadableStream({start(r){r.enqueue(e.encode(`id: ${t}\n\n`)),r.enqueue(e.encode(n.b(o,t))),r.close()}});return new Response(r,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}})}return i.json(o,200)}}),g.delete(`${i}`,e=>m.resourceMetadataUrl&&!n.u(e.req.header(`authorization`))?(e.header(`WWW-Authenticate`,n.c(m.resourceMetadataUrl)),e.json({error:`Bearer token required`},401)):e.json({error:`Session termination not supported`},405)),g.get(`${i}`,e=>{if(m.resourceMetadataUrl&&!n.u(e.req.header(`authorization`)))return e.header(`WWW-Authenticate`,n.c(m.resourceMetadataUrl)),e.json({error:`Bearer token required`},401);let t=new TextEncoder,r=n._(),i,a=new ReadableStream({start(e){e.enqueue(t.encode(n.b({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},r,15e3))),i=setInterval(()=>{e.enqueue(t.encode(`: keep-alive
|
|
2
2
|
|
|
3
3
|
`))},15e3)},cancel(){clearInterval(i)}});return new Response(a,{status:200,headers:{"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`}})})}return g}function o(e,t){let n=a(t);return e.route(`/`,n),e}function s(e){return o(new r.Hono,e)}exports.createCubeApp=s,exports.createCubeRoutes=a,exports.mountCubeRoutes=o;
|