drizzle-cube 0.4.21 → 0.4.22
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/client/charts.js +12 -12
- package/dist/client/chunks/{RetentionCombinedChart-CLq89aOJ.js → RetentionCombinedChart-BK3NPsHP.js} +2 -2
- package/dist/client/chunks/{RetentionCombinedChart-CLq89aOJ.js.map → RetentionCombinedChart-BK3NPsHP.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-3z9fHE2F.js → analysis-builder-DVrv9Q4n.js} +9 -9
- package/dist/client/chunks/{analysis-builder-3z9fHE2F.js.map → analysis-builder-DVrv9Q4n.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-Da-vlQa_.js → analysis-builder-shared-CrENEvEk.js} +6 -6
- package/dist/client/chunks/{analysis-builder-shared-Da-vlQa_.js.map → analysis-builder-shared-CrENEvEk.js.map} +1 -1
- package/dist/client/chunks/{chart-activity-grid-CPGcTSuh.js → chart-activity-grid-OG6he4YS.js} +2 -2
- package/dist/client/chunks/{chart-activity-grid-CPGcTSuh.js.map → chart-activity-grid-OG6he4YS.js.map} +1 -1
- package/dist/client/chunks/{chart-area-ByJQ7NZd.js → chart-area-TawAd2k9.js} +3 -3
- package/dist/client/chunks/{chart-area-ByJQ7NZd.js.map → chart-area-TawAd2k9.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-dj14frMt.js → chart-bar-D3vtCNQG.js} +2 -2
- package/dist/client/chunks/{chart-bar-dj14frMt.js.map → chart-bar-D3vtCNQG.js.map} +1 -1
- package/dist/client/chunks/{chart-box-plot-ZatBpatq.js → chart-box-plot-BXwN2rO5.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-ZatBpatq.js.map → chart-box-plot-BXwN2rO5.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-CemotLx-.js → chart-bubble-ZfNe8t5k.js} +2 -2
- package/dist/client/chunks/{chart-bubble-CemotLx-.js.map → chart-bubble-ZfNe8t5k.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-BIR4uGGt.js → chart-candlestick-DmF3haFu.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-BIR4uGGt.js.map → chart-candlestick-DmF3haFu.js.map} +1 -1
- package/dist/client/chunks/{chart-data-table-BsAjHe7o.js → chart-data-table-DJZPkArt.js} +4 -4
- package/dist/client/chunks/{chart-data-table-BsAjHe7o.js.map → chart-data-table-DJZPkArt.js.map} +1 -1
- package/dist/client/chunks/{chart-funnel-dofnhD24.js → chart-funnel-CE9x0Io9.js} +2 -2
- package/dist/client/chunks/{chart-funnel-dofnhD24.js.map → chart-funnel-CE9x0Io9.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-CKJJ8m3b.js → chart-gauge-Djs5FWxB.js} +2 -2
- package/dist/client/chunks/{chart-gauge-CKJJ8m3b.js.map → chart-gauge-Djs5FWxB.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-BVuPUKHT.js → chart-heat-map-CqtMkdxd.js} +2 -2
- package/dist/client/chunks/{chart-heat-map-BVuPUKHT.js.map → chart-heat-map-CqtMkdxd.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-DUD3f8vL.js → chart-kpi-delta-DEzA74cL.js} +4 -4
- package/dist/client/chunks/{chart-kpi-delta-DUD3f8vL.js.map → chart-kpi-delta-DEzA74cL.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-iJh-PzsM.js → chart-kpi-number-Bab-BZtX.js} +3 -3
- package/dist/client/chunks/{chart-kpi-number-iJh-PzsM.js.map → chart-kpi-number-Bab-BZtX.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-x6pV9v9Q.js → chart-kpi-text-BkTgckDJ.js} +3 -3
- package/dist/client/chunks/{chart-kpi-text-x6pV9v9Q.js.map → chart-kpi-text-BkTgckDJ.js.map} +1 -1
- package/dist/client/chunks/{chart-line-DzyZkugh.js → chart-line-DhM-Hvu0.js} +3 -3
- package/dist/client/chunks/{chart-line-DzyZkugh.js.map → chart-line-DhM-Hvu0.js.map} +1 -1
- package/dist/client/chunks/{chart-measure-profile-C2IkBG3V.js → chart-measure-profile-4vQxFm69.js} +3 -3
- package/dist/client/chunks/{chart-measure-profile-C2IkBG3V.js.map → chart-measure-profile-4vQxFm69.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-akbfRfb9.js → chart-pie-B86KRcHI.js} +2 -2
- package/dist/client/chunks/{chart-pie-akbfRfb9.js.map → chart-pie-B86KRcHI.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-BaN-Kjww.js → chart-radar-BhDBmJRh.js} +2 -2
- package/dist/client/chunks/{chart-radar-BaN-Kjww.js.map → chart-radar-BhDBmJRh.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-DpptEL3s.js → chart-radial-bar-Brugya8X.js} +2 -2
- package/dist/client/chunks/{chart-radial-bar-DpptEL3s.js.map → chart-radial-bar-Brugya8X.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-CG-3hHmX.js → chart-sankey-D2L8ympI.js} +2 -2
- package/dist/client/chunks/{chart-sankey-CG-3hHmX.js.map → chart-sankey-D2L8ympI.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-l_yTVxF3.js → chart-scatter-CAkbBDkK.js} +2 -2
- package/dist/client/chunks/{chart-scatter-l_yTVxF3.js.map → chart-scatter-CAkbBDkK.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-KhDcKhmZ.js → chart-sunburst-DaxJ-cob.js} +2 -2
- package/dist/client/chunks/{chart-sunburst-KhDcKhmZ.js.map → chart-sunburst-DaxJ-cob.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-CBbiaBXV.js → chart-tree-map-CrDJAvZU.js} +2 -2
- package/dist/client/chunks/{chart-tree-map-CBbiaBXV.js.map → chart-tree-map-CrDJAvZU.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-CX3vx_lI.js → chart-waterfall-BBwSfEKT.js} +3 -3
- package/dist/client/chunks/{chart-waterfall-CX3vx_lI.js.map → chart-waterfall-BBwSfEKT.js.map} +1 -1
- package/dist/client/chunks/{charts-core-CU9u_HtL.js → charts-core-B4Rbfdcn.js} +2 -2
- package/dist/client/chunks/{charts-core-CU9u_HtL.js.map → charts-core-B4Rbfdcn.js.map} +1 -1
- package/dist/client/chunks/{charts-loader-B3tt5oKG.js → charts-loader-DbrwgvCK.js} +25 -25
- package/dist/client/chunks/{charts-loader-B3tt5oKG.js.map → charts-loader-DbrwgvCK.js.map} +1 -1
- package/dist/client/chunks/{components-CMGGxqOB.js → components-GzooQM5J.js} +9 -9
- package/dist/client/chunks/{components-CMGGxqOB.js.map → components-GzooQM5J.js.map} +1 -1
- package/dist/client/chunks/{core-D_8mkGpQ.js → core-Y9e-sNfb.js} +2 -2
- package/dist/client/chunks/{core-D_8mkGpQ.js.map → core-Y9e-sNfb.js.map} +1 -1
- package/dist/client/chunks/{icons-M7shurcH.js → icons-DFJw-2HU.js} +6 -6
- package/dist/client/chunks/{icons-M7shurcH.js.map → icons-DFJw-2HU.js.map} +1 -1
- package/dist/client/chunks/{providers-CgxXm6Ll.js → providers-CCw8Kjlc.js} +2 -2
- package/dist/client/chunks/{providers-CgxXm6Ll.js.map → providers-CCw8Kjlc.js.map} +1 -1
- package/dist/client/chunks/{syntaxHighlighting-BQfjio-i.js → syntaxHighlighting-DAMSW_A6.js} +2 -2
- package/dist/client/chunks/{syntaxHighlighting-BQfjio-i.js.map → syntaxHighlighting-DAMSW_A6.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-Cu1HSjmo.js → useDirtyStateTracking-CjhwBXRw.js} +20 -20
- package/dist/client/chunks/{useDirtyStateTracking-Cu1HSjmo.js.map → useDirtyStateTracking-CjhwBXRw.js.map} +1 -1
- package/dist/client/chunks/useExplainAI-IiW55BaQ.js +182 -0
- package/dist/client/chunks/useExplainAI-IiW55BaQ.js.map +1 -0
- package/dist/client/chunks/{vendor-AVsJ2ni0.js → vendor-B2EH3V58.js} +7 -7
- package/dist/client/chunks/{vendor-AVsJ2ni0.js.map → vendor-B2EH3V58.js.map} +1 -1
- package/dist/client/components.js +1 -1
- package/dist/client/hooks/useNotebookLayout.d.ts +8 -0
- package/dist/client/hooks.d.ts +2 -0
- package/dist/client/hooks.js +51 -190
- package/dist/client/hooks.js.map +1 -1
- package/dist/client/icons.js +1 -1
- package/dist/client/index.js +871 -742
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers.js +1 -1
- package/dist/client/styles.css +1 -1
- package/dist/client/utils.js +7 -7
- package/dist/client-bundle-stats.html +1 -1
- package/package.json +1 -1
package/dist/client/index.js
CHANGED
|
@@ -1,221 +1,222 @@
|
|
|
1
|
-
import { D as
|
|
2
|
-
import { i as
|
|
3
|
-
import { jsx as
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import { a as B } from "./chunks/icons-
|
|
7
|
-
import { D as
|
|
8
|
-
import { Q as
|
|
9
|
-
import { f as
|
|
10
|
-
import { h as
|
|
11
|
-
import { L as
|
|
12
|
-
import { u as
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { u as
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
|
|
1
|
+
import { D as ve, A as Ce, e as we, P as Ne } from "./chunks/components-GzooQM5J.js";
|
|
2
|
+
import { i as Lt, a as Pt, C as Qt, h as Ft, g as _t, b as Vt, j as jt, f as Ut, d as Ot, M as $t, c as qt, n as Kt, T as zt, R as Wt, Q as Jt, O as Xt, S as Yt, V as Gt, I as Ht, H as Zt, K as es, W as ts, G as ss, J as cs, X as rs, L as ns, N as as, U as os, Y as ds, Z as ls, z as is, q as us, x as ms, t as hs, s as fs, w as ps, p as gs, v as bs, o as xs, r as ys, y as vs, u as Cs, k as ws, l as Ns, m as ks, F as Ss, E as Ts, B as Ds } from "./chunks/components-GzooQM5J.js";
|
|
3
|
+
import { jsx as e, jsxs as u, Fragment as ne } from "react/jsx-runtime";
|
|
4
|
+
import Y, { useRef as g, createContext as ke, useContext as Se, useState as j, useCallback as f, useEffect as V } from "react";
|
|
5
|
+
import { e as Te, f as De, h as Ae, s as Ie, i as de } from "./chunks/vendor-B2EH3V58.js";
|
|
6
|
+
import { a as B, b as Me } from "./chunks/icons-DFJw-2HU.js";
|
|
7
|
+
import { D as Is, i as Ms, c as Es, f as Rs, h as Bs, g as Ls, r as Ps, e as Qs, s as Fs } from "./chunks/icons-DFJw-2HU.js";
|
|
8
|
+
import { Q as Ee } from "./chunks/chart-markdown-Du4Z2iqK.js";
|
|
9
|
+
import { f as Re } from "./chunks/providers-CCw8Kjlc.js";
|
|
10
|
+
import { h as Vs, a as js, S as Us, e as Os, d as $s, i as qs, b as Ks, g as zs, u as Ws, j as Js, c as Xs, w as Ys } from "./chunks/providers-CCw8Kjlc.js";
|
|
11
|
+
import { L as me } from "./chunks/charts-core-B4Rbfdcn.js";
|
|
12
|
+
import { u as Hs } from "./chunks/charts-core-B4Rbfdcn.js";
|
|
13
|
+
import { useNotebookLayout as Be } from "./hooks.js";
|
|
14
|
+
import { L as ec, g as tc, c as sc, b as cc, i as rc, p as nc, a as ac } from "./chunks/charts-loader-DbrwgvCK.js";
|
|
15
|
+
import { E as dc, a as lc, p as ic, q as uc, m as mc, l as hc, r as fc, C as pc, D as gc, o as bc, B as xc, n as yc, w as vc, t as Cc, d as wc, f as Nc, s as kc, e as Sc, i as Tc, c as Dc, h as Ac, g as Ic, u as Mc, b as Ec, y as Rc, A as Bc, x as Lc, k as Pc, v as Qc, z as Fc, j as _c } from "./chunks/analysis-builder-shared-CrENEvEk.js";
|
|
16
|
+
import { u as jc } from "./chunks/chart-bubble-ZfNe8t5k.js";
|
|
17
|
+
import { c as Oc, f as $c } from "./chunks/index-CApFCBF9.js";
|
|
18
|
+
import { f as Kc, d as zc, n as Wc, j as Jc, l as Xc, k as Yc, i as Gc, m as Hc, h as Zc, g as er, u as tr, u as sr, e as cr, b as rr, a as nr, v as ar } from "./chunks/useDirtyStateTracking-CjhwBXRw.js";
|
|
19
|
+
import { c as dr, b as lr, f as ir, g as ur, a as mr, i as hr, t as fr } from "./chunks/funnel-utils-CyonoNeC.js";
|
|
20
|
+
import { T as gr, c as br, g as xr, a as yr, i as vr, r as Cr, s as wr, b as Nr, w as kr } from "./chunks/theme-Dp3hFed1.js";
|
|
21
|
+
import { d as Tr, b as Dr, u as Ar, e as Ir, c as Mr, a as Er } from "./chunks/useExplainAI-IiW55BaQ.js";
|
|
22
|
+
import { i as Br, a as Lr } from "./chunks/flow-utils-CjQZG5qq.js";
|
|
23
|
+
import { h as Qr } from "./chunks/syntaxHighlighting-DAMSW_A6.js";
|
|
24
|
+
const he = () => ({
|
|
24
25
|
blocks: [],
|
|
25
26
|
messages: [],
|
|
26
27
|
isStreaming: !1,
|
|
27
28
|
sessionId: null,
|
|
28
29
|
inputValue: ""
|
|
29
30
|
});
|
|
30
|
-
function
|
|
31
|
+
function Le(t, s) {
|
|
31
32
|
return {
|
|
32
33
|
// Block actions
|
|
33
|
-
addBlock: (
|
|
34
|
-
blocks: [...
|
|
34
|
+
addBlock: (c) => t((a) => ({
|
|
35
|
+
blocks: [...a.blocks, c]
|
|
35
36
|
})),
|
|
36
|
-
removeBlock: (
|
|
37
|
-
blocks:
|
|
37
|
+
removeBlock: (c) => t((a) => ({
|
|
38
|
+
blocks: a.blocks.filter((n) => n.id !== c)
|
|
38
39
|
})),
|
|
39
|
-
moveBlock: (
|
|
40
|
-
const
|
|
41
|
-
if (
|
|
42
|
-
if (
|
|
43
|
-
if (
|
|
44
|
-
const o = [...
|
|
45
|
-
return [o[
|
|
40
|
+
moveBlock: (c, a) => t((n) => {
|
|
41
|
+
const r = n.blocks.findIndex((d) => d.id === c);
|
|
42
|
+
if (r === -1) return {};
|
|
43
|
+
if (a === "up" && r === 0) return {};
|
|
44
|
+
if (a === "down" && r === n.blocks.length - 1) return {};
|
|
45
|
+
const o = [...n.blocks], l = a === "up" ? r - 1 : r + 1;
|
|
46
|
+
return [o[r], o[l]] = [o[l], o[r]], { blocks: o };
|
|
46
47
|
}),
|
|
47
|
-
updateBlock: (
|
|
48
|
-
blocks:
|
|
49
|
-
(
|
|
48
|
+
updateBlock: (c, a) => t((n) => ({
|
|
49
|
+
blocks: n.blocks.map(
|
|
50
|
+
(r) => r.id === c && r.type === "portlet" ? { ...r, ...a } : r
|
|
50
51
|
)
|
|
51
52
|
})),
|
|
52
53
|
// Chat actions
|
|
53
|
-
addMessage: (
|
|
54
|
-
messages: [...
|
|
54
|
+
addMessage: (c) => t((a) => ({
|
|
55
|
+
messages: [...a.messages, c]
|
|
55
56
|
})),
|
|
56
|
-
appendToLastAssistantMessage: (
|
|
57
|
-
const
|
|
58
|
-
return
|
|
59
|
-
...
|
|
60
|
-
content:
|
|
61
|
-
}), { messages:
|
|
57
|
+
appendToLastAssistantMessage: (c) => t((a) => {
|
|
58
|
+
const n = [...a.messages], r = n[n.length - 1];
|
|
59
|
+
return r && r.role === "assistant" && (n[n.length - 1] = {
|
|
60
|
+
...r,
|
|
61
|
+
content: r.content + c
|
|
62
|
+
}), { messages: n };
|
|
62
63
|
}),
|
|
63
|
-
setLastAssistantError: (
|
|
64
|
-
const
|
|
65
|
-
return
|
|
64
|
+
setLastAssistantError: (c) => t((a) => {
|
|
65
|
+
const n = [...a.messages], r = n[n.length - 1];
|
|
66
|
+
return r && r.role === "assistant" && (n[n.length - 1] = { ...r, error: c }), { messages: n };
|
|
66
67
|
}),
|
|
67
|
-
addToolCallToLastAssistant: (
|
|
68
|
-
const
|
|
69
|
-
return
|
|
70
|
-
...
|
|
71
|
-
toolCalls: [...
|
|
72
|
-
}), { messages:
|
|
68
|
+
addToolCallToLastAssistant: (c) => t((a) => {
|
|
69
|
+
const n = [...a.messages], r = n[n.length - 1];
|
|
70
|
+
return r && r.role === "assistant" && (n[n.length - 1] = {
|
|
71
|
+
...r,
|
|
72
|
+
toolCalls: [...r.toolCalls || [], c]
|
|
73
|
+
}), { messages: n };
|
|
73
74
|
}),
|
|
74
|
-
updateLastToolCall: (
|
|
75
|
-
const
|
|
76
|
-
if (
|
|
77
|
-
const o = [...
|
|
78
|
-
|
|
75
|
+
updateLastToolCall: (c) => t((a) => {
|
|
76
|
+
const n = [...a.messages], r = n[n.length - 1];
|
|
77
|
+
if (r?.role === "assistant" && r.toolCalls?.length) {
|
|
78
|
+
const o = [...r.toolCalls], l = c.id ? o.findIndex((d) => d.id === c.id) : o.length - 1;
|
|
79
|
+
l !== -1 && (o[l] = { ...o[l], ...c }, n[n.length - 1] = { ...r, toolCalls: o });
|
|
79
80
|
}
|
|
80
|
-
return { messages:
|
|
81
|
+
return { messages: n };
|
|
81
82
|
}),
|
|
82
83
|
// Session/UI actions
|
|
83
|
-
setIsStreaming: (
|
|
84
|
-
setSessionId: (
|
|
85
|
-
setInputValue: (
|
|
84
|
+
setIsStreaming: (c) => t({ isStreaming: c }),
|
|
85
|
+
setSessionId: (c) => t({ sessionId: c }),
|
|
86
|
+
setInputValue: (c) => t({ inputValue: c }),
|
|
86
87
|
// Persistence
|
|
87
88
|
save: () => {
|
|
88
|
-
const
|
|
89
|
+
const c = s();
|
|
89
90
|
return {
|
|
90
|
-
blocks:
|
|
91
|
-
messages:
|
|
91
|
+
blocks: c.blocks,
|
|
92
|
+
messages: c.messages
|
|
92
93
|
};
|
|
93
94
|
},
|
|
94
|
-
load: (
|
|
95
|
-
blocks:
|
|
96
|
-
messages:
|
|
95
|
+
load: (c) => t({
|
|
96
|
+
blocks: c.blocks || [],
|
|
97
|
+
messages: c.messages || []
|
|
97
98
|
}),
|
|
98
99
|
// Reset
|
|
99
|
-
reset: () =>
|
|
100
|
+
reset: () => t(he())
|
|
100
101
|
};
|
|
101
102
|
}
|
|
102
|
-
function
|
|
103
|
-
const
|
|
104
|
-
return
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
...
|
|
108
|
-
...
|
|
103
|
+
function Pe() {
|
|
104
|
+
const t = he();
|
|
105
|
+
return De()(
|
|
106
|
+
Ae(
|
|
107
|
+
Ie((s, c) => ({
|
|
108
|
+
...t,
|
|
109
|
+
...Le(s, c)
|
|
109
110
|
})),
|
|
110
111
|
{ name: "NotebookStore" }
|
|
111
112
|
)
|
|
112
113
|
);
|
|
113
114
|
}
|
|
114
|
-
const
|
|
115
|
-
function
|
|
116
|
-
children:
|
|
115
|
+
const fe = ke(null);
|
|
116
|
+
function Qe({
|
|
117
|
+
children: t,
|
|
117
118
|
initialConfig: s
|
|
118
119
|
}) {
|
|
119
|
-
const
|
|
120
|
-
if (!
|
|
121
|
-
const
|
|
122
|
-
s &&
|
|
120
|
+
const c = g(null);
|
|
121
|
+
if (!c.current) {
|
|
122
|
+
const a = Pe();
|
|
123
|
+
s && a.getState().load(s), c.current = a;
|
|
123
124
|
}
|
|
124
|
-
return /* @__PURE__ */
|
|
125
|
+
return /* @__PURE__ */ e(fe.Provider, { value: c.current, children: t });
|
|
125
126
|
}
|
|
126
|
-
function
|
|
127
|
-
const s =
|
|
127
|
+
function P(t) {
|
|
128
|
+
const s = Se(fe);
|
|
128
129
|
if (!s)
|
|
129
130
|
throw new Error("useNotebookStore must be used within NotebookStoreProvider");
|
|
130
|
-
return
|
|
131
|
+
return Te(s, t);
|
|
131
132
|
}
|
|
132
|
-
const
|
|
133
|
-
messages:
|
|
134
|
-
isStreaming:
|
|
135
|
-
inputValue:
|
|
136
|
-
}),
|
|
137
|
-
addMessage:
|
|
138
|
-
appendToLastAssistantMessage:
|
|
139
|
-
setLastAssistantError:
|
|
140
|
-
addToolCallToLastAssistant:
|
|
141
|
-
updateLastToolCall:
|
|
142
|
-
setIsStreaming:
|
|
143
|
-
setInputValue:
|
|
144
|
-
setSessionId:
|
|
145
|
-
}),
|
|
146
|
-
addBlock:
|
|
147
|
-
removeBlock:
|
|
148
|
-
moveBlock:
|
|
149
|
-
updateBlock:
|
|
150
|
-
}),
|
|
133
|
+
const Fe = (t) => t.blocks, St = (t) => t.messages, Tt = (t) => t.isStreaming, Dt = (t) => t.sessionId, At = (t) => t.inputValue, _e = (t) => ({
|
|
134
|
+
messages: t.messages,
|
|
135
|
+
isStreaming: t.isStreaming,
|
|
136
|
+
inputValue: t.inputValue
|
|
137
|
+
}), Ve = (t) => ({
|
|
138
|
+
addMessage: t.addMessage,
|
|
139
|
+
appendToLastAssistantMessage: t.appendToLastAssistantMessage,
|
|
140
|
+
setLastAssistantError: t.setLastAssistantError,
|
|
141
|
+
addToolCallToLastAssistant: t.addToolCallToLastAssistant,
|
|
142
|
+
updateLastToolCall: t.updateLastToolCall,
|
|
143
|
+
setIsStreaming: t.setIsStreaming,
|
|
144
|
+
setInputValue: t.setInputValue,
|
|
145
|
+
setSessionId: t.setSessionId
|
|
146
|
+
}), je = (t) => ({
|
|
147
|
+
addBlock: t.addBlock,
|
|
148
|
+
removeBlock: t.removeBlock,
|
|
149
|
+
moveBlock: t.moveBlock,
|
|
150
|
+
updateBlock: t.updateBlock
|
|
151
|
+
}), ce = { width: "16px", height: "16px", color: "currentColor" }, Ue = B("chevronUp"), Oe = B("chevronDown"), $e = B("edit"), qe = B("delete"), Ke = Y.memo(function({
|
|
151
152
|
block: s,
|
|
152
|
-
onRemove:
|
|
153
|
-
onMoveUp:
|
|
154
|
-
onMoveDown:
|
|
155
|
-
onEdit:
|
|
153
|
+
onRemove: c,
|
|
154
|
+
onMoveUp: a,
|
|
155
|
+
onMoveDown: n,
|
|
156
|
+
onEdit: r,
|
|
156
157
|
isFirst: o,
|
|
157
|
-
isLast:
|
|
158
|
+
isLast: l
|
|
158
159
|
}) {
|
|
159
|
-
const [
|
|
160
|
-
|
|
160
|
+
const [d, T] = j(null), w = f((A) => {
|
|
161
|
+
T(A);
|
|
161
162
|
}, []);
|
|
162
|
-
return /* @__PURE__ */
|
|
163
|
-
/* @__PURE__ */
|
|
164
|
-
/* @__PURE__ */
|
|
165
|
-
/* @__PURE__ */
|
|
166
|
-
|
|
167
|
-
|
|
163
|
+
return /* @__PURE__ */ u("div", { className: "dc:relative dc:mb-4 bg-dc-surface dc:border border-dc-border dc:rounded-lg dc:flex dc:flex-col", children: [
|
|
164
|
+
/* @__PURE__ */ u("div", { className: "dc:flex dc:items-center dc:justify-between dc:px-3 dc:py-1.5 dc:border-b border-dc-border dc:shrink-0 bg-dc-surface-secondary dc:rounded-t-lg", children: [
|
|
165
|
+
/* @__PURE__ */ u("div", { className: "dc:flex dc:items-center dc:gap-2 dc:flex-1 dc:min-w-0", children: [
|
|
166
|
+
/* @__PURE__ */ e("h3", { className: "dc:font-semibold dc:text-sm text-dc-text dc:truncate", children: s.title || "Untitled" }),
|
|
167
|
+
d && /* @__PURE__ */ e(
|
|
168
|
+
ve,
|
|
168
169
|
{
|
|
169
|
-
chartConfig:
|
|
170
|
-
displayConfig:
|
|
171
|
-
queryObject:
|
|
172
|
-
data:
|
|
173
|
-
chartType:
|
|
174
|
-
cacheInfo:
|
|
170
|
+
chartConfig: d.chartConfig,
|
|
171
|
+
displayConfig: d.displayConfig,
|
|
172
|
+
queryObject: d.queryObject,
|
|
173
|
+
data: d.data,
|
|
174
|
+
chartType: d.chartType,
|
|
175
|
+
cacheInfo: d.cacheInfo ?? void 0
|
|
175
176
|
}
|
|
176
177
|
)
|
|
177
178
|
] }),
|
|
178
|
-
/* @__PURE__ */
|
|
179
|
-
!o && /* @__PURE__ */
|
|
179
|
+
/* @__PURE__ */ u("div", { className: "dc:flex dc:items-center dc:gap-1 dc:shrink-0 dc:ml-4 dc:-mr-2", children: [
|
|
180
|
+
!o && /* @__PURE__ */ e(
|
|
180
181
|
"button",
|
|
181
182
|
{
|
|
182
|
-
onClick: () =>
|
|
183
|
+
onClick: () => a(s.id),
|
|
183
184
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
184
185
|
title: "Move up",
|
|
185
|
-
children: /* @__PURE__ */
|
|
186
|
+
children: /* @__PURE__ */ e(Ue, { style: ce })
|
|
186
187
|
}
|
|
187
188
|
),
|
|
188
|
-
!
|
|
189
|
+
!l && /* @__PURE__ */ e(
|
|
189
190
|
"button",
|
|
190
191
|
{
|
|
191
|
-
onClick: () =>
|
|
192
|
+
onClick: () => n(s.id),
|
|
192
193
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
193
194
|
title: "Move down",
|
|
194
|
-
children: /* @__PURE__ */
|
|
195
|
+
children: /* @__PURE__ */ e(Oe, { style: ce })
|
|
195
196
|
}
|
|
196
197
|
),
|
|
197
|
-
/* @__PURE__ */
|
|
198
|
+
/* @__PURE__ */ e(
|
|
198
199
|
"button",
|
|
199
200
|
{
|
|
200
|
-
onClick: () =>
|
|
201
|
+
onClick: () => r(s),
|
|
201
202
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
202
203
|
title: "Edit visualization",
|
|
203
|
-
children: /* @__PURE__ */
|
|
204
|
+
children: /* @__PURE__ */ e($e, { style: ce })
|
|
204
205
|
}
|
|
205
206
|
),
|
|
206
|
-
/* @__PURE__ */
|
|
207
|
+
/* @__PURE__ */ e(
|
|
207
208
|
"button",
|
|
208
209
|
{
|
|
209
|
-
onClick: () =>
|
|
210
|
+
onClick: () => c(s.id),
|
|
210
211
|
className: "dc:p-1 dc:mr-0.5 dc:bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer dc:hover:bg-dc-danger-bg text-dc-danger dc:transition-colors",
|
|
211
212
|
title: "Remove",
|
|
212
|
-
children: /* @__PURE__ */
|
|
213
|
+
children: /* @__PURE__ */ e(qe, { style: ce })
|
|
213
214
|
}
|
|
214
215
|
)
|
|
215
216
|
] })
|
|
216
217
|
] }),
|
|
217
|
-
/* @__PURE__ */
|
|
218
|
-
|
|
218
|
+
/* @__PURE__ */ e("div", { className: "dc:flex-1 dc:min-h-0", children: /* @__PURE__ */ e(
|
|
219
|
+
Ce,
|
|
219
220
|
{
|
|
220
221
|
query: s.query,
|
|
221
222
|
chartType: s.chartType,
|
|
@@ -223,11 +224,15 @@ const Le = (e) => e.blocks, xt = (e) => e.messages, vt = (e) => e.isStreaming, C
|
|
|
223
224
|
displayConfig: s.displayConfig,
|
|
224
225
|
height: 400,
|
|
225
226
|
eagerLoad: !0,
|
|
226
|
-
onDebugDataReady:
|
|
227
|
+
onDebugDataReady: w
|
|
227
228
|
}
|
|
228
229
|
) })
|
|
229
230
|
] });
|
|
230
|
-
}),
|
|
231
|
+
}), re = { width: "16px", height: "16px", color: "currentColor" }, ze = B("documentText"), We = B("chevronUp"), Je = B("chevronDown"), Xe = B("delete");
|
|
232
|
+
function Ye({ children: t, ...s }) {
|
|
233
|
+
return /* @__PURE__ */ e("div", { className: "dc:overflow-x-auto dc:my-2", children: /* @__PURE__ */ e("table", { ...s, children: t }) });
|
|
234
|
+
}
|
|
235
|
+
const Ge = {
|
|
231
236
|
overrides: {
|
|
232
237
|
h1: { props: { className: "dc:text-lg dc:font-bold text-dc-text dc:mb-2 dc:mt-3" } },
|
|
233
238
|
h2: { props: { className: "dc:text-base dc:font-semibold text-dc-text dc:mb-2 dc:mt-3" } },
|
|
@@ -242,115 +247,115 @@ const Le = (e) => e.blocks, xt = (e) => e.messages, vt = (e) => e.isStreaming, C
|
|
|
242
247
|
li: { props: { className: "dc:text-sm text-dc-text" } },
|
|
243
248
|
hr: { props: { className: "dc:my-3 border-dc-border" } },
|
|
244
249
|
blockquote: { props: { className: "dc:border-l-4 border-dc-accent dc:pl-3 dc:my-2 dc:italic text-dc-text-secondary dc:text-sm" } },
|
|
245
|
-
table: { props: { className: "dc:w-full dc:border-collapse dc:
|
|
250
|
+
table: { component: Ye, props: { className: "dc:w-full dc:border-collapse dc:text-sm" } },
|
|
246
251
|
thead: { props: { className: "bg-dc-surface-secondary" } },
|
|
247
252
|
th: { props: { className: "dc:px-3 dc:py-2 dc:text-left dc:font-semibold dc:text-xs text-dc-text-secondary dc:uppercase dc:tracking-wider border-dc-border dc:border-b" } },
|
|
248
253
|
td: { props: { className: "dc:px-3 dc:py-2 dc:text-sm text-dc-text border-dc-border dc:border-b" } },
|
|
249
254
|
tr: { props: { className: "dc:hover:opacity-80" } }
|
|
250
255
|
}
|
|
251
|
-
},
|
|
256
|
+
}, He = Y.memo(function({
|
|
252
257
|
block: s,
|
|
253
|
-
onRemove:
|
|
254
|
-
onMoveUp:
|
|
255
|
-
onMoveDown:
|
|
256
|
-
isFirst:
|
|
258
|
+
onRemove: c,
|
|
259
|
+
onMoveUp: a,
|
|
260
|
+
onMoveDown: n,
|
|
261
|
+
isFirst: r,
|
|
257
262
|
isLast: o
|
|
258
263
|
}) {
|
|
259
|
-
return /* @__PURE__ */
|
|
260
|
-
/* @__PURE__ */
|
|
261
|
-
/* @__PURE__ */
|
|
262
|
-
/* @__PURE__ */
|
|
263
|
-
/* @__PURE__ */
|
|
264
|
+
return /* @__PURE__ */ u("div", { className: "dc:relative dc:mb-4 bg-dc-surface dc:border border-dc-border dc:rounded-lg dc:flex dc:flex-col", children: [
|
|
265
|
+
/* @__PURE__ */ u("div", { className: "dc:flex dc:items-center dc:justify-between dc:px-3 dc:py-1.5 dc:border-b border-dc-border dc:shrink-0 bg-dc-surface-secondary dc:rounded-t-lg", children: [
|
|
266
|
+
/* @__PURE__ */ u("div", { className: "dc:flex dc:items-center dc:gap-2 dc:flex-1 dc:min-w-0", children: [
|
|
267
|
+
/* @__PURE__ */ e(ze, { style: re }),
|
|
268
|
+
/* @__PURE__ */ e("h3", { className: "dc:font-semibold dc:text-sm text-dc-text dc:truncate", children: s.title || "Markdown" })
|
|
264
269
|
] }),
|
|
265
|
-
/* @__PURE__ */
|
|
266
|
-
!
|
|
270
|
+
/* @__PURE__ */ u("div", { className: "dc:flex dc:items-center dc:gap-1 dc:shrink-0 dc:ml-4 dc:-mr-2", children: [
|
|
271
|
+
!r && /* @__PURE__ */ e(
|
|
267
272
|
"button",
|
|
268
273
|
{
|
|
269
|
-
onClick: () =>
|
|
274
|
+
onClick: () => a(s.id),
|
|
270
275
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
271
276
|
title: "Move up",
|
|
272
|
-
children: /* @__PURE__ */
|
|
277
|
+
children: /* @__PURE__ */ e(We, { style: re })
|
|
273
278
|
}
|
|
274
279
|
),
|
|
275
|
-
!o && /* @__PURE__ */
|
|
280
|
+
!o && /* @__PURE__ */ e(
|
|
276
281
|
"button",
|
|
277
282
|
{
|
|
278
|
-
onClick: () =>
|
|
283
|
+
onClick: () => n(s.id),
|
|
279
284
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
280
285
|
title: "Move down",
|
|
281
|
-
children: /* @__PURE__ */
|
|
286
|
+
children: /* @__PURE__ */ e(Je, { style: re })
|
|
282
287
|
}
|
|
283
288
|
),
|
|
284
|
-
/* @__PURE__ */
|
|
289
|
+
/* @__PURE__ */ e(
|
|
285
290
|
"button",
|
|
286
291
|
{
|
|
287
|
-
onClick: () =>
|
|
292
|
+
onClick: () => c(s.id),
|
|
288
293
|
className: "dc:p-1 dc:mr-0.5 dc:bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer dc:hover:bg-dc-danger-bg text-dc-danger dc:transition-colors",
|
|
289
294
|
title: "Remove",
|
|
290
|
-
children: /* @__PURE__ */
|
|
295
|
+
children: /* @__PURE__ */ e(Xe, { style: re })
|
|
291
296
|
}
|
|
292
297
|
)
|
|
293
298
|
] })
|
|
294
299
|
] }),
|
|
295
|
-
/* @__PURE__ */
|
|
300
|
+
/* @__PURE__ */ e("div", { className: "dc:p-4 dc:min-w-0 dc:overflow-hidden", children: /* @__PURE__ */ e(Ee, { options: Ge, children: s.content }) })
|
|
296
301
|
] });
|
|
297
|
-
}),
|
|
298
|
-
const s =
|
|
299
|
-
|
|
300
|
-
s.length >
|
|
302
|
+
}), ue = Y.memo(function() {
|
|
303
|
+
const s = P(Fe), { removeBlock: c, moveBlock: a, updateBlock: n } = P(de(je)), r = g(null), [o, l] = j(null), d = g(s.length);
|
|
304
|
+
V(() => {
|
|
305
|
+
s.length > d.current && r.current?.scrollIntoView({ behavior: "smooth" }), d.current = s.length;
|
|
301
306
|
}, [s.length]);
|
|
302
|
-
const
|
|
307
|
+
const T = f((p) => c(p), [c]), w = f((p) => a(p, "up"), [a]), A = f((p) => a(p, "down"), [a]), v = f((p) => l(p), []), I = f((p) => {
|
|
303
308
|
if (!o) return;
|
|
304
|
-
const
|
|
305
|
-
if (
|
|
306
|
-
const
|
|
307
|
-
|
|
308
|
-
title:
|
|
309
|
-
query: JSON.stringify(
|
|
310
|
-
chartType:
|
|
311
|
-
chartConfig:
|
|
312
|
-
displayConfig:
|
|
309
|
+
const D = we(p), { analysisConfig: k } = D;
|
|
310
|
+
if (k) {
|
|
311
|
+
const b = k.charts[k.analysisType];
|
|
312
|
+
n(o.id, {
|
|
313
|
+
title: p.title,
|
|
314
|
+
query: JSON.stringify(k.query),
|
|
315
|
+
chartType: b?.chartType || "bar",
|
|
316
|
+
chartConfig: b?.chartConfig,
|
|
317
|
+
displayConfig: b?.displayConfig
|
|
313
318
|
});
|
|
314
319
|
}
|
|
315
|
-
|
|
316
|
-
}, [o,
|
|
317
|
-
return s.length === 0 ? /* @__PURE__ */
|
|
318
|
-
/* @__PURE__ */
|
|
319
|
-
/* @__PURE__ */
|
|
320
|
-
] }) }) : /* @__PURE__ */
|
|
321
|
-
s.map((
|
|
322
|
-
const
|
|
323
|
-
return
|
|
324
|
-
|
|
320
|
+
l(null);
|
|
321
|
+
}, [o, n]);
|
|
322
|
+
return s.length === 0 ? /* @__PURE__ */ e("div", { className: "dc:flex dc:items-center dc:justify-center dc:h-full", children: /* @__PURE__ */ u("div", { className: "dc:text-center dc:max-w-sm dc:px-6", children: [
|
|
323
|
+
/* @__PURE__ */ e("h3", { className: "dc:text-base dc:font-semibold text-dc-text dc:mb-2", children: "Your notebook is empty" }),
|
|
324
|
+
/* @__PURE__ */ e("p", { className: "dc:text-sm text-dc-text-secondary", children: "Ask the AI assistant a question about your data. Charts and insights will appear here as the assistant analyzes your data." })
|
|
325
|
+
] }) }) : /* @__PURE__ */ u("div", { className: "dc:h-full dc:overflow-y-auto dc:p-4", children: [
|
|
326
|
+
s.map((p, D) => {
|
|
327
|
+
const k = D === 0, b = D === s.length - 1;
|
|
328
|
+
return p.type === "portlet" ? /* @__PURE__ */ e(
|
|
329
|
+
Ke,
|
|
325
330
|
{
|
|
326
|
-
block:
|
|
327
|
-
onRemove:
|
|
328
|
-
onMoveUp:
|
|
331
|
+
block: p,
|
|
332
|
+
onRemove: T,
|
|
333
|
+
onMoveUp: w,
|
|
329
334
|
onMoveDown: A,
|
|
330
|
-
onEdit:
|
|
331
|
-
isFirst:
|
|
332
|
-
isLast:
|
|
335
|
+
onEdit: v,
|
|
336
|
+
isFirst: k,
|
|
337
|
+
isLast: b
|
|
333
338
|
},
|
|
334
|
-
|
|
335
|
-
) :
|
|
336
|
-
|
|
339
|
+
p.id
|
|
340
|
+
) : p.type === "markdown" ? /* @__PURE__ */ e(
|
|
341
|
+
He,
|
|
337
342
|
{
|
|
338
|
-
block:
|
|
339
|
-
onRemove:
|
|
340
|
-
onMoveUp:
|
|
343
|
+
block: p,
|
|
344
|
+
onRemove: T,
|
|
345
|
+
onMoveUp: w,
|
|
341
346
|
onMoveDown: A,
|
|
342
|
-
isFirst:
|
|
343
|
-
isLast:
|
|
347
|
+
isFirst: k,
|
|
348
|
+
isLast: b
|
|
344
349
|
},
|
|
345
|
-
|
|
350
|
+
p.id
|
|
346
351
|
) : null;
|
|
347
352
|
}),
|
|
348
|
-
/* @__PURE__ */
|
|
349
|
-
/* @__PURE__ */
|
|
350
|
-
|
|
353
|
+
/* @__PURE__ */ e("div", { ref: r }),
|
|
354
|
+
/* @__PURE__ */ e(
|
|
355
|
+
Ne,
|
|
351
356
|
{
|
|
352
357
|
isOpen: !!o,
|
|
353
|
-
onClose: () =>
|
|
358
|
+
onClose: () => l(null),
|
|
354
359
|
onSave: I,
|
|
355
360
|
portlet: o ? {
|
|
356
361
|
id: o.id,
|
|
@@ -370,421 +375,421 @@ const Le = (e) => e.blocks, xt = (e) => e.messages, vt = (e) => e.isStreaming, C
|
|
|
370
375
|
)
|
|
371
376
|
] });
|
|
372
377
|
});
|
|
373
|
-
function
|
|
374
|
-
if (
|
|
378
|
+
function Ze(t) {
|
|
379
|
+
if (t.startsWith("{") || t.includes('"type":"error"'))
|
|
375
380
|
try {
|
|
376
|
-
const s = JSON.parse(
|
|
381
|
+
const s = JSON.parse(t.replace(/^Error:\s*/, "")), c = s.error?.type || s.type || "";
|
|
377
382
|
return {
|
|
378
383
|
overloaded_error: "The AI service is temporarily busy. Please try again in a moment.",
|
|
379
384
|
rate_limit_error: "Too many requests. Please wait a moment and try again.",
|
|
380
385
|
api_error: "The AI service encountered an error. Please try again.",
|
|
381
386
|
authentication_error: "Authentication failed. Please check your configuration."
|
|
382
|
-
}[
|
|
387
|
+
}[c] || "The AI service encountered an error. Please try again.";
|
|
383
388
|
} catch {
|
|
384
389
|
return "The AI service encountered an error. Please try again.";
|
|
385
390
|
}
|
|
386
|
-
if (
|
|
387
|
-
const s =
|
|
391
|
+
if (t.startsWith("Agent request failed:")) {
|
|
392
|
+
const s = t.match(/\d+/)?.[0];
|
|
388
393
|
return s === "429" ? "Too many requests. Please wait a moment and try again." : s === "503" || s === "529" ? "The AI service is temporarily busy. Please try again in a moment." : "The AI service is temporarily unavailable. Please try again.";
|
|
389
394
|
}
|
|
390
|
-
return
|
|
395
|
+
return t;
|
|
391
396
|
}
|
|
392
|
-
function
|
|
393
|
-
const { agentEndpoint: s, agentApiKey:
|
|
394
|
-
|
|
395
|
-
const A =
|
|
396
|
-
function
|
|
397
|
-
const
|
|
398
|
-
switch (
|
|
397
|
+
function et(t) {
|
|
398
|
+
const { agentEndpoint: s, agentApiKey: c, agentProvider: a, agentModel: n, agentProviderEndpoint: r } = t, { cubeApi: o } = Re(), l = g(null), [d, T] = j(!1), w = g(t);
|
|
399
|
+
w.current = t;
|
|
400
|
+
const A = f(async (I, p, D) => {
|
|
401
|
+
function k(i) {
|
|
402
|
+
const x = w.current;
|
|
403
|
+
switch (i.type) {
|
|
399
404
|
case "text_delta":
|
|
400
|
-
|
|
405
|
+
x.onTextDelta(i.data);
|
|
401
406
|
break;
|
|
402
407
|
case "tool_use_start":
|
|
403
|
-
|
|
408
|
+
x.onToolStart(i.data.id, i.data.name, i.data.input);
|
|
404
409
|
break;
|
|
405
410
|
case "tool_use_result":
|
|
406
|
-
|
|
411
|
+
x.onToolResult(i.data.id, i.data.name, i.data.result, i.data.isError);
|
|
407
412
|
break;
|
|
408
413
|
case "add_portlet":
|
|
409
|
-
|
|
410
|
-
...
|
|
414
|
+
x.onAddPortlet({
|
|
415
|
+
...i.data,
|
|
411
416
|
type: "portlet"
|
|
412
417
|
});
|
|
413
418
|
break;
|
|
414
419
|
case "add_markdown":
|
|
415
|
-
|
|
416
|
-
...
|
|
420
|
+
x.onAddMarkdown({
|
|
421
|
+
...i.data,
|
|
417
422
|
type: "markdown"
|
|
418
423
|
});
|
|
419
424
|
break;
|
|
420
425
|
case "dashboard_saved":
|
|
421
|
-
|
|
426
|
+
x.onDashboardSaved?.(i.data);
|
|
422
427
|
break;
|
|
423
428
|
case "turn_complete":
|
|
424
|
-
|
|
429
|
+
x.onTurnComplete?.();
|
|
425
430
|
break;
|
|
426
431
|
case "done":
|
|
427
|
-
|
|
432
|
+
x.onDone(i.data.sessionId, i.data.traceId);
|
|
428
433
|
break;
|
|
429
434
|
case "error":
|
|
430
|
-
|
|
435
|
+
x.onError(i.data.message);
|
|
431
436
|
break;
|
|
432
437
|
}
|
|
433
438
|
}
|
|
434
|
-
|
|
435
|
-
const
|
|
436
|
-
|
|
439
|
+
l.current && l.current.abort();
|
|
440
|
+
const b = new AbortController();
|
|
441
|
+
l.current = b, T(!0);
|
|
437
442
|
try {
|
|
438
|
-
const
|
|
443
|
+
const i = o.apiUrl || "/cubejs-api/v1", x = s || `${i}/agent/chat`, y = {
|
|
439
444
|
"Content-Type": "application/json",
|
|
440
445
|
...o.headers
|
|
441
446
|
};
|
|
442
|
-
|
|
443
|
-
const
|
|
447
|
+
c && (y["X-Agent-Api-Key"] = c), a && (y["X-Agent-Provider"] = a), n && (y["X-Agent-Model"] = n), r && (y["X-Agent-Provider-Endpoint"] = r);
|
|
448
|
+
const S = await fetch(x, {
|
|
444
449
|
method: "POST",
|
|
445
|
-
headers:
|
|
450
|
+
headers: y,
|
|
446
451
|
credentials: o.credentials ?? "include",
|
|
447
452
|
body: JSON.stringify({
|
|
448
453
|
message: I,
|
|
449
|
-
...
|
|
450
|
-
...
|
|
454
|
+
...p ? { sessionId: p } : {},
|
|
455
|
+
...D && D.length > 0 ? { history: D } : {}
|
|
451
456
|
}),
|
|
452
|
-
signal:
|
|
457
|
+
signal: b.signal
|
|
453
458
|
});
|
|
454
|
-
if (!
|
|
455
|
-
const
|
|
456
|
-
throw new Error(
|
|
459
|
+
if (!S.ok) {
|
|
460
|
+
const M = await S.json().catch(() => ({}));
|
|
461
|
+
throw new Error(M.error || `Agent request failed: ${S.status}`);
|
|
457
462
|
}
|
|
458
|
-
if (!
|
|
463
|
+
if (!S.body)
|
|
459
464
|
throw new Error("No response body received");
|
|
460
|
-
const
|
|
461
|
-
let
|
|
465
|
+
const W = S.body.getReader(), U = new TextDecoder();
|
|
466
|
+
let Q = "";
|
|
462
467
|
for (; ; ) {
|
|
463
|
-
const { done:
|
|
464
|
-
if (
|
|
465
|
-
|
|
466
|
-
const
|
|
468
|
+
const { done: M, value: C } = await W.read();
|
|
469
|
+
if (M) break;
|
|
470
|
+
Q += U.decode(C, { stream: !0 });
|
|
471
|
+
const E = Q.split(`
|
|
467
472
|
|
|
468
473
|
`);
|
|
469
|
-
|
|
470
|
-
for (const
|
|
471
|
-
const
|
|
474
|
+
Q = E.pop() || "";
|
|
475
|
+
for (const N of E) {
|
|
476
|
+
const L = N.trim().split(`
|
|
472
477
|
`);
|
|
473
|
-
for (const
|
|
474
|
-
if (
|
|
478
|
+
for (const q of L)
|
|
479
|
+
if (q.startsWith("data: "))
|
|
475
480
|
try {
|
|
476
|
-
const
|
|
477
|
-
|
|
481
|
+
const K = JSON.parse(q.slice(6));
|
|
482
|
+
k(K);
|
|
478
483
|
} catch {
|
|
479
484
|
}
|
|
480
485
|
}
|
|
481
486
|
}
|
|
482
|
-
if (
|
|
483
|
-
const
|
|
487
|
+
if (Q.trim()) {
|
|
488
|
+
const M = Q.trim().split(`
|
|
484
489
|
`);
|
|
485
|
-
for (const
|
|
486
|
-
if (
|
|
490
|
+
for (const C of M)
|
|
491
|
+
if (C.startsWith("data: "))
|
|
487
492
|
try {
|
|
488
|
-
const
|
|
489
|
-
|
|
493
|
+
const E = JSON.parse(C.slice(6));
|
|
494
|
+
k(E);
|
|
490
495
|
} catch {
|
|
491
496
|
}
|
|
492
497
|
}
|
|
493
|
-
} catch (
|
|
494
|
-
if (
|
|
495
|
-
const
|
|
496
|
-
|
|
498
|
+
} catch (i) {
|
|
499
|
+
if (i.name !== "AbortError") {
|
|
500
|
+
const x = i instanceof Error ? i.message : "Stream failed";
|
|
501
|
+
w.current.onError(Ze(x));
|
|
497
502
|
}
|
|
498
503
|
} finally {
|
|
499
|
-
|
|
504
|
+
T(!1), l.current = null;
|
|
500
505
|
}
|
|
501
|
-
}, [o, s,
|
|
502
|
-
|
|
506
|
+
}, [o, s, c, a, n, r]), v = f(() => {
|
|
507
|
+
l.current && (l.current.abort(), l.current = null, T(!1));
|
|
503
508
|
}, []);
|
|
504
509
|
return {
|
|
505
510
|
sendMessage: A,
|
|
506
|
-
isStreaming:
|
|
507
|
-
abort:
|
|
511
|
+
isStreaming: d,
|
|
512
|
+
abort: v
|
|
508
513
|
};
|
|
509
514
|
}
|
|
510
|
-
function
|
|
515
|
+
function tt(t) {
|
|
511
516
|
const s = [];
|
|
512
|
-
let
|
|
513
|
-
for (;
|
|
514
|
-
const
|
|
515
|
-
if (
|
|
516
|
-
const [, o,
|
|
517
|
-
o && s.push(/* @__PURE__ */
|
|
518
|
-
/* @__PURE__ */
|
|
519
|
-
),
|
|
517
|
+
let c = t, a = 0;
|
|
518
|
+
for (; c; ) {
|
|
519
|
+
const n = c.match(/^(.*?)`([^`]+)`(.*)$/);
|
|
520
|
+
if (n) {
|
|
521
|
+
const [, o, l, d] = n;
|
|
522
|
+
o && s.push(/* @__PURE__ */ e("span", { children: o }, a++)), s.push(
|
|
523
|
+
/* @__PURE__ */ e("code", { className: "dc:px-1 dc:py-0.5 dc:rounded dc:text-xs bg-dc-surface dc:font-mono", children: l }, a++)
|
|
524
|
+
), c = d;
|
|
520
525
|
continue;
|
|
521
526
|
}
|
|
522
|
-
const
|
|
523
|
-
if (
|
|
524
|
-
const [, o,
|
|
525
|
-
o && s.push(/* @__PURE__ */
|
|
527
|
+
const r = c.match(/^(.*?)\*\*([^*]+)\*\*(.*)$/);
|
|
528
|
+
if (r) {
|
|
529
|
+
const [, o, l, d] = r;
|
|
530
|
+
o && s.push(/* @__PURE__ */ e("span", { children: o }, a++)), s.push(/* @__PURE__ */ e("strong", { className: "dc:font-semibold", children: l }, a++)), c = d;
|
|
526
531
|
continue;
|
|
527
532
|
}
|
|
528
|
-
s.push(/* @__PURE__ */
|
|
533
|
+
s.push(/* @__PURE__ */ e("span", { children: c }, a));
|
|
529
534
|
break;
|
|
530
535
|
}
|
|
531
536
|
return s;
|
|
532
537
|
}
|
|
533
|
-
const
|
|
538
|
+
const st = {
|
|
534
539
|
discover_cubes: "Discovering cubes",
|
|
535
540
|
get_cube_metadata: "Reading metadata",
|
|
536
541
|
execute_query: "Executing query",
|
|
537
542
|
add_portlet: "Adding visualization",
|
|
538
543
|
add_markdown: "Adding explanation"
|
|
539
544
|
};
|
|
540
|
-
function
|
|
541
|
-
const [
|
|
542
|
-
return /* @__PURE__ */
|
|
543
|
-
/* @__PURE__ */
|
|
545
|
+
function ct({ toolCall: t, loadingComponent: s }) {
|
|
546
|
+
const [c, a] = j(!1), n = st[t.name] || t.name, r = t.status === "running";
|
|
547
|
+
return /* @__PURE__ */ u("div", { className: "dc:my-1 dc:text-xs", children: [
|
|
548
|
+
/* @__PURE__ */ u(
|
|
544
549
|
"button",
|
|
545
550
|
{
|
|
546
|
-
onClick: () =>
|
|
551
|
+
onClick: () => a(!c),
|
|
547
552
|
className: "dc:flex dc:items-center dc:gap-1.5 text-dc-text-secondary dc:hover:opacity-80 dc:transition-opacity",
|
|
548
553
|
children: [
|
|
549
|
-
|
|
550
|
-
/* @__PURE__ */
|
|
551
|
-
|
|
552
|
-
|
|
554
|
+
r ? s ? /* @__PURE__ */ e("span", { className: "dc:inline-flex dc:items-center dc:justify-center dc:h-3 dc:w-3", children: s }) : /* @__PURE__ */ e(me, { size: "xs" }) : /* @__PURE__ */ e("span", { className: "dc:text-xs", children: t.status === "error" ? "✗" : "✓" }),
|
|
555
|
+
/* @__PURE__ */ u("span", { children: [
|
|
556
|
+
n,
|
|
557
|
+
r ? "..." : ""
|
|
553
558
|
] }),
|
|
554
|
-
!
|
|
559
|
+
!r && /* @__PURE__ */ e("span", { className: "dc:text-[10px] dc:opacity-60", children: c ? "▲" : "▼" })
|
|
555
560
|
]
|
|
556
561
|
}
|
|
557
562
|
),
|
|
558
|
-
|
|
563
|
+
c && t.result != null && /* @__PURE__ */ e("pre", { className: "dc:mt-1 dc:p-2 dc:rounded dc:text-[11px] dc:overflow-x-auto dc:max-h-32 dc:overflow-y-auto bg-dc-surface-secondary text-dc-text-secondary", children: typeof t.result == "string" ? t.result : JSON.stringify(t.result, null, 2) })
|
|
559
564
|
] });
|
|
560
565
|
}
|
|
561
|
-
const
|
|
566
|
+
const rt = {
|
|
562
567
|
animation: "dc-msg-in 100ms ease-out"
|
|
563
|
-
},
|
|
564
|
-
const
|
|
565
|
-
return !
|
|
568
|
+
}, nt = Y.memo(function({ message: s, loadingComponent: c }) {
|
|
569
|
+
const a = s.role === "user", n = !!s.content?.trim(), r = !!s.error, o = s.toolCalls && s.toolCalls.length > 0;
|
|
570
|
+
return !a && !n && !r && !o ? null : /* @__PURE__ */ e(
|
|
566
571
|
"div",
|
|
567
572
|
{
|
|
568
|
-
className: `dc:flex dc:mb-3 ${
|
|
569
|
-
style:
|
|
570
|
-
children: /* @__PURE__ */
|
|
573
|
+
className: `dc:flex dc:mb-3 ${a ? "dc:justify-end" : "dc:justify-start"}`,
|
|
574
|
+
style: rt,
|
|
575
|
+
children: /* @__PURE__ */ u(
|
|
571
576
|
"div",
|
|
572
577
|
{
|
|
573
|
-
className: `dc:max-w-[85%] dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm ${
|
|
578
|
+
className: `dc:max-w-[85%] dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm ${a ? "bg-dc-accent text-dc-accent-text dc:rounded-br-sm" : r && !n ? "bg-dc-warning-bg text-dc-text dc:rounded-bl-sm" : "bg-dc-surface-secondary text-dc-text dc:rounded-bl-sm"}`,
|
|
574
579
|
children: [
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
/* @__PURE__ */
|
|
578
|
-
/* @__PURE__ */
|
|
580
|
+
n && /* @__PURE__ */ e("div", { className: "dc:whitespace-pre-wrap dc:break-words", children: a ? s.content : tt(s.content) }),
|
|
581
|
+
r && /* @__PURE__ */ u("div", { className: `dc:flex dc:items-start dc:gap-2 ${n ? "dc:mt-2 dc:pt-2 dc:border-t dc:border-current dc:border-opacity-10" : ""}`, children: [
|
|
582
|
+
/* @__PURE__ */ e("span", { className: "dc:text-base dc:leading-none dc:mt-0.5 text-dc-warning dc:flex-shrink-0", children: "⚠" }),
|
|
583
|
+
/* @__PURE__ */ e("span", { className: "text-dc-text-secondary", children: s.error })
|
|
579
584
|
] }),
|
|
580
|
-
o && /* @__PURE__ */
|
|
585
|
+
o && /* @__PURE__ */ e("div", { className: n || r ? "dc:mt-1 dc:border-t dc:border-current dc:border-opacity-10 dc:pt-1" : "", children: s.toolCalls.map((l, d) => /* @__PURE__ */ e(ct, { toolCall: l, loadingComponent: c }, l.id || d)) })
|
|
581
586
|
]
|
|
582
587
|
}
|
|
583
588
|
)
|
|
584
589
|
}
|
|
585
590
|
);
|
|
586
|
-
}),
|
|
591
|
+
}), at = Y.memo(function({
|
|
587
592
|
value: s,
|
|
588
|
-
onChange:
|
|
589
|
-
onSend:
|
|
590
|
-
onStop:
|
|
591
|
-
onContinue:
|
|
593
|
+
onChange: c,
|
|
594
|
+
onSend: a,
|
|
595
|
+
onStop: n,
|
|
596
|
+
onContinue: r,
|
|
592
597
|
isStreaming: o = !1,
|
|
593
|
-
showContinue:
|
|
594
|
-
disabled:
|
|
595
|
-
placeholder:
|
|
598
|
+
showContinue: l = !1,
|
|
599
|
+
disabled: d = !1,
|
|
600
|
+
placeholder: T = "Ask about your data..."
|
|
596
601
|
}) {
|
|
597
|
-
const
|
|
598
|
-
|
|
599
|
-
const
|
|
600
|
-
|
|
602
|
+
const w = g(null);
|
|
603
|
+
V(() => {
|
|
604
|
+
const v = w.current;
|
|
605
|
+
v && (v.style.height = "auto", v.style.height = `${Math.min(v.scrollHeight, 150)}px`);
|
|
601
606
|
}, [s]);
|
|
602
|
-
const A =
|
|
603
|
-
(
|
|
604
|
-
|
|
607
|
+
const A = f(
|
|
608
|
+
(v) => {
|
|
609
|
+
v.key === "Enter" && !v.shiftKey && (v.preventDefault(), !d && s.trim() && a());
|
|
605
610
|
},
|
|
606
|
-
[
|
|
611
|
+
[d, s, a]
|
|
607
612
|
);
|
|
608
|
-
return /* @__PURE__ */
|
|
609
|
-
/* @__PURE__ */
|
|
613
|
+
return /* @__PURE__ */ u("div", { className: "dc:flex dc:gap-2 dc:items-end dc:p-3 border-dc-border dc:border-t", children: [
|
|
614
|
+
/* @__PURE__ */ e(
|
|
610
615
|
"textarea",
|
|
611
616
|
{
|
|
612
|
-
ref:
|
|
617
|
+
ref: w,
|
|
613
618
|
value: s,
|
|
614
|
-
onChange: (
|
|
619
|
+
onChange: (v) => c(v.target.value),
|
|
615
620
|
onKeyDown: A,
|
|
616
|
-
placeholder:
|
|
617
|
-
disabled:
|
|
621
|
+
placeholder: T,
|
|
622
|
+
disabled: d,
|
|
618
623
|
rows: 1,
|
|
619
624
|
className: "dc:flex-1 dc:resize-none dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm bg-dc-surface-secondary text-dc-text border-dc-border dc:border dc:outline-none dc:focus:ring-1 focus:ring-dc-accent dc:disabled:opacity-50"
|
|
620
625
|
}
|
|
621
626
|
),
|
|
622
|
-
o ? /* @__PURE__ */
|
|
627
|
+
o ? /* @__PURE__ */ e(
|
|
623
628
|
"button",
|
|
624
629
|
{
|
|
625
|
-
onClick:
|
|
630
|
+
onClick: n,
|
|
626
631
|
className: "dc:px-4 dc:py-2 dc:rounded-lg dc:text-sm dc:font-medium dc:transition-colors text-dc-error border-dc-border dc:border dc:hover:opacity-80 dc:shrink-0",
|
|
627
632
|
children: "Stop"
|
|
628
633
|
}
|
|
629
|
-
) : /* @__PURE__ */
|
|
630
|
-
|
|
634
|
+
) : /* @__PURE__ */ u(ne, { children: [
|
|
635
|
+
l && !s.trim() && /* @__PURE__ */ e(
|
|
631
636
|
"button",
|
|
632
637
|
{
|
|
633
638
|
onClick: () => {
|
|
634
|
-
|
|
639
|
+
r?.(), w.current?.focus();
|
|
635
640
|
},
|
|
636
641
|
className: "dc:px-4 dc:py-2 dc:rounded-lg dc:text-sm dc:font-medium dc:transition-colors border-dc-border dc:border text-dc-text-secondary dc:hover:opacity-80 dc:shrink-0",
|
|
637
642
|
children: "Continue"
|
|
638
643
|
}
|
|
639
644
|
),
|
|
640
|
-
/* @__PURE__ */
|
|
645
|
+
/* @__PURE__ */ e(
|
|
641
646
|
"button",
|
|
642
647
|
{
|
|
643
|
-
onClick:
|
|
644
|
-
disabled:
|
|
648
|
+
onClick: a,
|
|
649
|
+
disabled: d || !s.trim(),
|
|
645
650
|
className: "dc:px-4 dc:py-2 dc:rounded-lg dc:text-sm dc:font-medium dc:transition-colors bg-dc-accent text-dc-accent-text dc:hover:opacity-90 dc:disabled:opacity-40 dc:disabled:cursor-not-allowed dc:shrink-0",
|
|
646
651
|
children: "Send"
|
|
647
652
|
}
|
|
648
653
|
)
|
|
649
654
|
] })
|
|
650
655
|
] });
|
|
651
|
-
}),
|
|
656
|
+
}), ot = B("thumbUp"), dt = B("thumbDown"), lt = Y.memo(function({
|
|
652
657
|
agentEndpoint: s,
|
|
653
|
-
agentApiKey:
|
|
654
|
-
agentProvider:
|
|
655
|
-
agentModel:
|
|
656
|
-
agentProviderEndpoint:
|
|
658
|
+
agentApiKey: c,
|
|
659
|
+
agentProvider: a,
|
|
660
|
+
agentModel: n,
|
|
661
|
+
agentProviderEndpoint: r,
|
|
657
662
|
onClear: o,
|
|
658
|
-
onDashboardSaved:
|
|
659
|
-
onScore:
|
|
660
|
-
loadingComponent:
|
|
661
|
-
initialPrompt:
|
|
663
|
+
onDashboardSaved: l,
|
|
664
|
+
onScore: d,
|
|
665
|
+
loadingComponent: T,
|
|
666
|
+
initialPrompt: w
|
|
662
667
|
}) {
|
|
663
|
-
const A =
|
|
664
|
-
addMessage:
|
|
665
|
-
appendToLastAssistantMessage:
|
|
666
|
-
setLastAssistantError:
|
|
667
|
-
addToolCallToLastAssistant:
|
|
668
|
-
updateLastToolCall:
|
|
669
|
-
setIsStreaming:
|
|
670
|
-
setInputValue:
|
|
671
|
-
setSessionId:
|
|
672
|
-
} =
|
|
673
|
-
|
|
674
|
-
const
|
|
675
|
-
|
|
676
|
-
const
|
|
677
|
-
|
|
678
|
-
const
|
|
679
|
-
|
|
668
|
+
const A = g(null), v = g(!1), [I, p] = j(null), [D, k] = j(/* @__PURE__ */ new Set()), [b, i] = j(!1), x = g(!1), { messages: y, isStreaming: S, inputValue: W } = P(de(_e)), {
|
|
669
|
+
addMessage: U,
|
|
670
|
+
appendToLastAssistantMessage: Q,
|
|
671
|
+
setLastAssistantError: M,
|
|
672
|
+
addToolCallToLastAssistant: C,
|
|
673
|
+
updateLastToolCall: E,
|
|
674
|
+
setIsStreaming: N,
|
|
675
|
+
setInputValue: L,
|
|
676
|
+
setSessionId: q
|
|
677
|
+
} = P(de(Ve)), K = P((m) => m.sessionId), J = P((m) => m.addBlock), H = P((m) => m.reset), R = P((m) => m.blocks.filter((_) => _.type === "portlet").length), X = g(y);
|
|
678
|
+
X.current = y;
|
|
679
|
+
const O = g(S);
|
|
680
|
+
O.current = S;
|
|
681
|
+
const G = g(K);
|
|
682
|
+
G.current = K;
|
|
683
|
+
const z = f(() => {
|
|
684
|
+
x.current && (x.current = !1, U({
|
|
680
685
|
id: `msg-${Date.now()}`,
|
|
681
686
|
role: "assistant",
|
|
682
687
|
content: "",
|
|
683
688
|
toolCalls: [],
|
|
684
689
|
timestamp: Date.now()
|
|
685
690
|
}));
|
|
686
|
-
}, [
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
}, [
|
|
690
|
-
|
|
691
|
-
}, [
|
|
692
|
-
const { sendMessage:
|
|
691
|
+
}, [U]), te = g(y.length);
|
|
692
|
+
V(() => {
|
|
693
|
+
y.length > te.current && A.current?.scrollIntoView({ behavior: "smooth" }), te.current = y.length;
|
|
694
|
+
}, [y]), V(() => {
|
|
695
|
+
b && A.current?.scrollIntoView({ behavior: "smooth" });
|
|
696
|
+
}, [b]);
|
|
697
|
+
const { sendMessage: Z, abort: h } = et({
|
|
693
698
|
agentEndpoint: s,
|
|
694
|
-
agentApiKey:
|
|
695
|
-
agentProvider:
|
|
696
|
-
agentModel:
|
|
697
|
-
agentProviderEndpoint:
|
|
698
|
-
onTextDelta:
|
|
699
|
-
|
|
700
|
-
}, [
|
|
701
|
-
onToolStart:
|
|
702
|
-
|
|
703
|
-
}, [
|
|
704
|
-
onToolResult:
|
|
705
|
-
|
|
706
|
-
}, [
|
|
707
|
-
onAddPortlet:
|
|
708
|
-
|
|
709
|
-
}, [
|
|
710
|
-
onAddMarkdown:
|
|
711
|
-
|
|
712
|
-
}, [
|
|
713
|
-
onDashboardSaved:
|
|
714
|
-
onTurnComplete:
|
|
715
|
-
|
|
699
|
+
agentApiKey: c,
|
|
700
|
+
agentProvider: a,
|
|
701
|
+
agentModel: n,
|
|
702
|
+
agentProviderEndpoint: r,
|
|
703
|
+
onTextDelta: f((m) => {
|
|
704
|
+
i(!1), z(), Q(m);
|
|
705
|
+
}, [z, Q]),
|
|
706
|
+
onToolStart: f((m, _, $) => {
|
|
707
|
+
i(!1), z(), C({ id: m, name: _, input: $, status: "running" });
|
|
708
|
+
}, [z, C]),
|
|
709
|
+
onToolResult: f((m, _, $, ye) => {
|
|
710
|
+
E({ id: m, status: ye ? "error" : "complete", result: $ });
|
|
711
|
+
}, [E]),
|
|
712
|
+
onAddPortlet: f((m) => {
|
|
713
|
+
J(m);
|
|
714
|
+
}, [J]),
|
|
715
|
+
onAddMarkdown: f((m) => {
|
|
716
|
+
J(m);
|
|
717
|
+
}, [J]),
|
|
718
|
+
onDashboardSaved: l,
|
|
719
|
+
onTurnComplete: f(() => {
|
|
720
|
+
x.current = !0, i(!0);
|
|
716
721
|
}, []),
|
|
717
|
-
onDone:
|
|
718
|
-
|
|
719
|
-
}, [
|
|
720
|
-
onError:
|
|
721
|
-
|
|
722
|
-
}, [
|
|
723
|
-
}),
|
|
724
|
-
if (!
|
|
725
|
-
|
|
726
|
-
const
|
|
727
|
-
role:
|
|
728
|
-
content:
|
|
729
|
-
|
|
722
|
+
onDone: f((m, _) => {
|
|
723
|
+
x.current = !1, q(m), N(!1), i(!1), _ && p(_);
|
|
724
|
+
}, [q, N]),
|
|
725
|
+
onError: f((m) => {
|
|
726
|
+
i(!1), z(), M(m), N(!1);
|
|
727
|
+
}, [z, M, N])
|
|
728
|
+
}), F = f((m) => {
|
|
729
|
+
if (!m || O.current) return;
|
|
730
|
+
x.current = !1;
|
|
731
|
+
const _ = X.current.map(($) => ({
|
|
732
|
+
role: $.role,
|
|
733
|
+
content: $.content,
|
|
734
|
+
...$.toolCalls && $.toolCalls.length > 0 ? { toolCalls: $.toolCalls } : {}
|
|
730
735
|
}));
|
|
731
|
-
|
|
736
|
+
U({
|
|
732
737
|
id: `msg-${Date.now()}`,
|
|
733
738
|
role: "user",
|
|
734
|
-
content:
|
|
739
|
+
content: m,
|
|
735
740
|
timestamp: Date.now()
|
|
736
|
-
}),
|
|
741
|
+
}), U({
|
|
737
742
|
id: `msg-${Date.now() + 1}`,
|
|
738
743
|
role: "assistant",
|
|
739
744
|
content: "",
|
|
740
745
|
toolCalls: [],
|
|
741
746
|
timestamp: Date.now()
|
|
742
|
-
}),
|
|
743
|
-
}, [
|
|
744
|
-
|
|
745
|
-
if (
|
|
746
|
-
|
|
747
|
-
const
|
|
747
|
+
}), L(""), N(!0), i(!0), Z(m, G.current, _);
|
|
748
|
+
}, [U, L, N, Z]);
|
|
749
|
+
V(() => {
|
|
750
|
+
if (w && !v.current && y.length === 0) {
|
|
751
|
+
v.current = !0;
|
|
752
|
+
const m = setTimeout(() => F(w), 100);
|
|
748
753
|
return () => {
|
|
749
|
-
clearTimeout(
|
|
754
|
+
clearTimeout(m), v.current = !1;
|
|
750
755
|
};
|
|
751
756
|
}
|
|
752
|
-
}, [
|
|
753
|
-
const
|
|
754
|
-
|
|
755
|
-
const
|
|
756
|
-
|
|
757
|
-
}, [
|
|
758
|
-
|
|
759
|
-
}, [
|
|
760
|
-
|
|
761
|
-
}, [
|
|
762
|
-
|
|
763
|
-
}, [
|
|
764
|
-
|
|
757
|
+
}, [w, y.length, F]);
|
|
758
|
+
const ee = g(W);
|
|
759
|
+
ee.current = W;
|
|
760
|
+
const ae = f(() => {
|
|
761
|
+
F(ee.current.trim());
|
|
762
|
+
}, [F]), se = f(() => {
|
|
763
|
+
h(), N(!1);
|
|
764
|
+
}, [h, N]), oe = f(() => {
|
|
765
|
+
L("");
|
|
766
|
+
}, [L]), pe = f(() => {
|
|
767
|
+
h(), N(!1), i(!1), H(), p(null), k(/* @__PURE__ */ new Set()), o?.();
|
|
768
|
+
}, [h, N, H, o]), ge = f(() => {
|
|
769
|
+
F(
|
|
765
770
|
"Save the current notebook as a dashboard with a professional layout, section headers, and appropriate filters."
|
|
766
771
|
);
|
|
767
|
-
}, [
|
|
768
|
-
!I || !
|
|
769
|
-
}, [I,
|
|
770
|
-
return /* @__PURE__ */
|
|
771
|
-
/* @__PURE__ */
|
|
772
|
-
/* @__PURE__ */
|
|
773
|
-
/* @__PURE__ */
|
|
774
|
-
|
|
772
|
+
}, [F]), le = f((m) => {
|
|
773
|
+
!I || !d || (d({ traceId: I, value: m }), k((_) => new Set(_).add(I)));
|
|
774
|
+
}, [I, d]), be = !!l && !S && R > 0 && y.length > 0, xe = !!d && !S && I && y.length > 0 && !D.has(I), ie = I ? D.has(I) : !1;
|
|
775
|
+
return /* @__PURE__ */ u("div", { className: "dc:flex dc:flex-col dc:h-full bg-dc-surface", children: [
|
|
776
|
+
/* @__PURE__ */ u("div", { className: "dc:flex dc:items-center dc:justify-between dc:px-4 dc:py-3 border-dc-border dc:border-b", children: [
|
|
777
|
+
/* @__PURE__ */ e("h3", { className: "dc:text-sm dc:font-semibold text-dc-text", children: "AI Assistant" }),
|
|
778
|
+
/* @__PURE__ */ u("div", { className: "dc:flex dc:items-center dc:gap-1", children: [
|
|
779
|
+
be && /* @__PURE__ */ e(
|
|
775
780
|
"button",
|
|
776
781
|
{
|
|
777
|
-
onClick:
|
|
782
|
+
onClick: ge,
|
|
778
783
|
className: "dc:text-xs dc:px-2 dc:py-1 dc:rounded text-dc-accent dc:hover:opacity-80",
|
|
779
784
|
title: "Save notebook as a dashboard",
|
|
780
785
|
children: "Save as Dashboard"
|
|
781
786
|
}
|
|
782
787
|
),
|
|
783
|
-
|
|
788
|
+
y.length > 0 && /* @__PURE__ */ e(
|
|
784
789
|
"button",
|
|
785
790
|
{
|
|
786
791
|
onClick: pe,
|
|
787
|
-
disabled:
|
|
792
|
+
disabled: S,
|
|
788
793
|
className: "dc:text-xs dc:px-2 dc:py-1 dc:rounded text-dc-text-secondary dc:hover:opacity-80 dc:disabled:opacity-40",
|
|
789
794
|
title: "Clear notebook and chat",
|
|
790
795
|
children: "Clear"
|
|
@@ -792,388 +797,512 @@ const tt = {
|
|
|
792
797
|
)
|
|
793
798
|
] })
|
|
794
799
|
] }),
|
|
795
|
-
/* @__PURE__ */
|
|
796
|
-
|
|
797
|
-
|
|
800
|
+
/* @__PURE__ */ u("div", { className: "dc:flex-1 dc:overflow-y-auto dc:px-4 dc:py-3", children: [
|
|
801
|
+
y.length === 0 ? /* @__PURE__ */ e(ut, {}) : y.map((m) => /* @__PURE__ */ e(
|
|
802
|
+
nt,
|
|
798
803
|
{
|
|
799
|
-
message:
|
|
800
|
-
loadingComponent:
|
|
804
|
+
message: m,
|
|
805
|
+
loadingComponent: T
|
|
801
806
|
},
|
|
802
|
-
|
|
807
|
+
m.id
|
|
803
808
|
)),
|
|
804
|
-
|
|
805
|
-
(
|
|
806
|
-
/* @__PURE__ */
|
|
807
|
-
/* @__PURE__ */
|
|
808
|
-
/* @__PURE__ */
|
|
809
|
+
b && /* @__PURE__ */ e(it, { loadingComponent: T }),
|
|
810
|
+
(xe || ie) && /* @__PURE__ */ e("div", { className: "dc:flex dc:items-center dc:justify-center dc:gap-3 dc:py-4 dc:mt-2", children: ie ? /* @__PURE__ */ e("span", { className: "dc:text-sm text-dc-text-secondary", children: "Thanks for your feedback!" }) : /* @__PURE__ */ u(ne, { children: [
|
|
811
|
+
/* @__PURE__ */ e("span", { className: "dc:text-sm text-dc-text-secondary", children: "Was this helpful?" }),
|
|
812
|
+
/* @__PURE__ */ u("div", { className: "dc:flex dc:items-center dc:gap-2", children: [
|
|
813
|
+
/* @__PURE__ */ u(
|
|
809
814
|
"button",
|
|
810
815
|
{
|
|
811
|
-
onClick: () =>
|
|
816
|
+
onClick: () => le(1),
|
|
812
817
|
className: "dc:flex dc:items-center dc:gap-1.5 dc:px-3 dc:py-1.5 dc:rounded-lg dc:text-sm dc:font-medium border-dc-border dc:border text-dc-success hover:bg-dc-success-bg dc:transition-colors bg-dc-surface dc:cursor-pointer",
|
|
813
818
|
children: [
|
|
814
|
-
/* @__PURE__ */
|
|
819
|
+
/* @__PURE__ */ e(ot, { className: "dc:w-4 dc:h-4" }),
|
|
815
820
|
"Yes"
|
|
816
821
|
]
|
|
817
822
|
}
|
|
818
823
|
),
|
|
819
|
-
/* @__PURE__ */
|
|
824
|
+
/* @__PURE__ */ u(
|
|
820
825
|
"button",
|
|
821
826
|
{
|
|
822
|
-
onClick: () =>
|
|
827
|
+
onClick: () => le(0),
|
|
823
828
|
className: "dc:flex dc:items-center dc:gap-1.5 dc:px-3 dc:py-1.5 dc:rounded-lg dc:text-sm dc:font-medium border-dc-border dc:border text-dc-error hover:bg-dc-danger-bg dc:transition-colors bg-dc-surface dc:cursor-pointer",
|
|
824
829
|
children: [
|
|
825
|
-
/* @__PURE__ */
|
|
830
|
+
/* @__PURE__ */ e(dt, { className: "dc:w-4 dc:h-4" }),
|
|
826
831
|
"No"
|
|
827
832
|
]
|
|
828
833
|
}
|
|
829
834
|
)
|
|
830
835
|
] })
|
|
831
836
|
] }) }),
|
|
832
|
-
/* @__PURE__ */
|
|
837
|
+
/* @__PURE__ */ e("div", { ref: A })
|
|
833
838
|
] }),
|
|
834
|
-
/* @__PURE__ */
|
|
835
|
-
|
|
839
|
+
/* @__PURE__ */ e(
|
|
840
|
+
at,
|
|
836
841
|
{
|
|
837
|
-
value:
|
|
838
|
-
onChange:
|
|
839
|
-
onSend:
|
|
840
|
-
onStop:
|
|
841
|
-
onContinue:
|
|
842
|
-
isStreaming:
|
|
843
|
-
showContinue: !
|
|
842
|
+
value: W,
|
|
843
|
+
onChange: L,
|
|
844
|
+
onSend: ae,
|
|
845
|
+
onStop: se,
|
|
846
|
+
onContinue: oe,
|
|
847
|
+
isStreaming: S,
|
|
848
|
+
showContinue: !S && y.length > 0
|
|
844
849
|
}
|
|
845
850
|
)
|
|
846
851
|
] });
|
|
847
852
|
});
|
|
848
|
-
function
|
|
849
|
-
return /* @__PURE__ */
|
|
853
|
+
function it({ loadingComponent: t }) {
|
|
854
|
+
return /* @__PURE__ */ e(
|
|
850
855
|
"div",
|
|
851
856
|
{
|
|
852
857
|
className: "dc:flex dc:mb-3 dc:justify-start",
|
|
853
858
|
style: { animation: "dc-msg-in 100ms ease-out" },
|
|
854
|
-
children: /* @__PURE__ */
|
|
855
|
-
|
|
856
|
-
/* @__PURE__ */
|
|
859
|
+
children: /* @__PURE__ */ u("div", { className: "dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm bg-dc-surface-secondary text-dc-text-secondary dc:rounded-bl-sm dc:flex dc:items-center dc:gap-2", children: [
|
|
860
|
+
t ? /* @__PURE__ */ e("span", { className: "dc:inline-flex dc:items-center dc:justify-center dc:h-4 dc:w-4", children: t }) : /* @__PURE__ */ e(me, { size: "xs" }),
|
|
861
|
+
/* @__PURE__ */ e("span", { children: "Thinking..." })
|
|
857
862
|
] })
|
|
858
863
|
}
|
|
859
864
|
);
|
|
860
865
|
}
|
|
861
|
-
function
|
|
862
|
-
return /* @__PURE__ */
|
|
863
|
-
/* @__PURE__ */
|
|
864
|
-
/* @__PURE__ */
|
|
865
|
-
/* @__PURE__ */
|
|
866
|
-
/* @__PURE__ */
|
|
867
|
-
/* @__PURE__ */
|
|
868
|
-
/* @__PURE__ */
|
|
866
|
+
function ut() {
|
|
867
|
+
return /* @__PURE__ */ e("div", { className: "dc:flex dc:items-center dc:justify-center dc:h-full", children: /* @__PURE__ */ u("div", { className: "dc:text-center dc:max-w-xs", children: [
|
|
868
|
+
/* @__PURE__ */ e("div", { className: "dc:text-lg dc:font-semibold text-dc-text dc:mb-2", children: "Data Analysis Assistant" }),
|
|
869
|
+
/* @__PURE__ */ e("p", { className: "dc:text-sm text-dc-text-secondary dc:mb-4", children: "Ask me about your data and I'll create visualizations and insights." }),
|
|
870
|
+
/* @__PURE__ */ u("div", { className: "dc:space-y-2 dc:text-xs text-dc-text-muted", children: [
|
|
871
|
+
/* @__PURE__ */ e("p", { children: '"Show me employee productivity trends"' }),
|
|
872
|
+
/* @__PURE__ */ e("p", { children: '"What are the top departments by headcount?"' }),
|
|
873
|
+
/* @__PURE__ */ e("p", { children: '"Compare revenue across product categories"' })
|
|
869
874
|
] })
|
|
870
875
|
] }) });
|
|
871
876
|
}
|
|
872
|
-
function
|
|
873
|
-
|
|
877
|
+
function mt({
|
|
878
|
+
blocks: t,
|
|
879
|
+
pulsingBlockId: s,
|
|
880
|
+
nudge: c,
|
|
881
|
+
onExpand: a
|
|
882
|
+
}) {
|
|
883
|
+
const n = B("bookOpen"), r = B("documentText");
|
|
884
|
+
return /* @__PURE__ */ u(
|
|
885
|
+
"button",
|
|
886
|
+
{
|
|
887
|
+
type: "button",
|
|
888
|
+
onClick: a,
|
|
889
|
+
className: "dc:h-full dc:flex-shrink-0 dc:flex dc:flex-col dc:items-center dc:pt-3 dc:gap-2 bg-dc-surface border-dc-border dc:border-r dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
890
|
+
style: c ? { animation: "dc-strip-nudge 0.8s ease-in-out 2", width: 48 } : { width: 48 },
|
|
891
|
+
title: "Expand notebook",
|
|
892
|
+
children: [
|
|
893
|
+
/* @__PURE__ */ e(n, { className: "dc:w-5 dc:h-5 text-dc-text-muted" }),
|
|
894
|
+
/* @__PURE__ */ e(
|
|
895
|
+
"div",
|
|
896
|
+
{
|
|
897
|
+
className: "dc:flex dc:flex-col dc:items-center dc:gap-1.5 dc:flex-1 dc:overflow-y-auto dc:py-1",
|
|
898
|
+
style: { scrollbarWidth: "none" },
|
|
899
|
+
children: t.length === 0 ? /* @__PURE__ */ e(
|
|
900
|
+
"span",
|
|
901
|
+
{
|
|
902
|
+
className: "dc:text-[9px] text-dc-text-disabled dc:writing-vertical-lr dc:mt-2",
|
|
903
|
+
style: { writingMode: "vertical-lr" },
|
|
904
|
+
children: "No blocks"
|
|
905
|
+
}
|
|
906
|
+
) : t.map((o) => {
|
|
907
|
+
const l = o.id === s;
|
|
908
|
+
let d;
|
|
909
|
+
return o.type === "portlet" ? d = Me(o.chartType) : d = r, /* @__PURE__ */ e(
|
|
910
|
+
"div",
|
|
911
|
+
{
|
|
912
|
+
className: "dc:w-6 dc:h-6 dc:flex dc:items-center dc:justify-center dc:rounded",
|
|
913
|
+
style: l ? { animation: "dc-icon-pulse 0.6s ease-in-out 3" } : void 0,
|
|
914
|
+
title: o.type === "portlet" ? o.title : o.title || "Markdown",
|
|
915
|
+
children: /* @__PURE__ */ e(d, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })
|
|
916
|
+
},
|
|
917
|
+
o.id
|
|
918
|
+
);
|
|
919
|
+
})
|
|
920
|
+
}
|
|
921
|
+
)
|
|
922
|
+
]
|
|
923
|
+
}
|
|
924
|
+
);
|
|
925
|
+
}
|
|
926
|
+
function ht({ onExpand: t }) {
|
|
927
|
+
const s = B("sparkles");
|
|
928
|
+
return /* @__PURE__ */ u(
|
|
929
|
+
"button",
|
|
930
|
+
{
|
|
931
|
+
type: "button",
|
|
932
|
+
onClick: t,
|
|
933
|
+
className: "dc:w-12 dc:h-full dc:flex-shrink-0 dc:flex dc:flex-col dc:items-center dc:pt-3 dc:gap-2 bg-dc-surface border-dc-border dc:border-l dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
934
|
+
title: "Expand AI chat",
|
|
935
|
+
children: [
|
|
936
|
+
/* @__PURE__ */ e(s, { className: "dc:w-5 dc:h-5 text-dc-accent" }),
|
|
937
|
+
/* @__PURE__ */ e(
|
|
938
|
+
"span",
|
|
939
|
+
{
|
|
940
|
+
className: "dc:text-[10px] dc:font-medium text-dc-text-muted",
|
|
941
|
+
style: { writingMode: "vertical-lr" },
|
|
942
|
+
children: "AI Chat"
|
|
943
|
+
}
|
|
944
|
+
)
|
|
945
|
+
]
|
|
946
|
+
}
|
|
947
|
+
);
|
|
948
|
+
}
|
|
949
|
+
function ft({
|
|
950
|
+
agentEndpoint: t,
|
|
874
951
|
agentApiKey: s,
|
|
875
|
-
agentProvider:
|
|
876
|
-
agentModel:
|
|
877
|
-
agentProviderEndpoint:
|
|
878
|
-
onSave:
|
|
952
|
+
agentProvider: c,
|
|
953
|
+
agentModel: a,
|
|
954
|
+
agentProviderEndpoint: n,
|
|
955
|
+
onSave: r,
|
|
879
956
|
onDirtyStateChange: o,
|
|
880
|
-
onDashboardSaved:
|
|
881
|
-
onScore:
|
|
882
|
-
loadingComponent:
|
|
883
|
-
className:
|
|
957
|
+
onDashboardSaved: l,
|
|
958
|
+
onScore: d,
|
|
959
|
+
loadingComponent: T,
|
|
960
|
+
className: w,
|
|
884
961
|
initialPrompt: A
|
|
885
962
|
}) {
|
|
886
|
-
const [
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
963
|
+
const [v, I] = j(60), p = g(null), D = g(!1), { containerRef: k, layoutMode: b } = Be(), [i, x] = j("chat"), [y, S] = j(null), [W, U] = j(!1), Q = g(b), M = P((h) => h.blocks), C = M.length, E = P((h) => h.messages.length), N = P((h) => h.isStreaming), L = P((h) => h.save);
|
|
964
|
+
V(() => {
|
|
965
|
+
Q.current === "narrow" && b === "wide" && x("chat"), Q.current = b;
|
|
966
|
+
}, [b]);
|
|
967
|
+
const q = g(C);
|
|
968
|
+
V(() => {
|
|
969
|
+
if (b === "narrow" && i === "chat" && C > q.current) {
|
|
970
|
+
const h = M[M.length - 1];
|
|
971
|
+
if (h) {
|
|
972
|
+
S(h.id);
|
|
973
|
+
const F = setTimeout(() => S(null), 2e3);
|
|
974
|
+
return () => clearTimeout(F);
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
q.current = C;
|
|
978
|
+
}, [C, M, b, i]);
|
|
979
|
+
const K = g(!1);
|
|
980
|
+
V(() => {
|
|
981
|
+
if (N)
|
|
982
|
+
K.current = !0;
|
|
983
|
+
else if (K.current && b === "narrow" && i === "chat" && C > 0) {
|
|
984
|
+
K.current = !1, U(!0);
|
|
985
|
+
const h = setTimeout(() => U(!1), 1700);
|
|
986
|
+
return () => clearTimeout(h);
|
|
987
|
+
}
|
|
988
|
+
}, [N, b, i, C]);
|
|
989
|
+
const J = f(
|
|
990
|
+
(h) => {
|
|
991
|
+
k(h), p.current = h;
|
|
992
|
+
},
|
|
993
|
+
[k]
|
|
994
|
+
), H = g({ blockCount: C, msgCount: E });
|
|
995
|
+
V(() => {
|
|
996
|
+
const h = C !== H.current.blockCount || E !== H.current.msgCount;
|
|
997
|
+
o?.(h);
|
|
998
|
+
}, [C, E, o]);
|
|
999
|
+
const R = g(), X = g(!1), O = g(r);
|
|
1000
|
+
O.current = r;
|
|
1001
|
+
const G = g(C > 0 || E > 0);
|
|
1002
|
+
V(() => {
|
|
1003
|
+
if ((C > 0 || E > 0) && (G.current = !0), !(!O.current || !G.current)) {
|
|
1004
|
+
if (N) {
|
|
1005
|
+
X.current = !0, R.current && clearTimeout(R.current);
|
|
898
1006
|
return;
|
|
899
1007
|
}
|
|
900
|
-
return
|
|
901
|
-
|
|
902
|
-
const
|
|
903
|
-
|
|
1008
|
+
return R.current && clearTimeout(R.current), R.current = setTimeout(() => {
|
|
1009
|
+
X.current = !1;
|
|
1010
|
+
const h = L();
|
|
1011
|
+
O.current?.(h);
|
|
904
1012
|
}, 1e3), () => {
|
|
905
|
-
|
|
1013
|
+
R.current && clearTimeout(R.current);
|
|
906
1014
|
};
|
|
907
1015
|
}
|
|
908
|
-
}, [C,
|
|
909
|
-
!
|
|
910
|
-
|
|
911
|
-
const
|
|
912
|
-
|
|
1016
|
+
}, [C, E, N, L]), V(() => {
|
|
1017
|
+
!N && X.current && O.current && G.current && (R.current && clearTimeout(R.current), R.current = setTimeout(() => {
|
|
1018
|
+
X.current = !1;
|
|
1019
|
+
const h = L();
|
|
1020
|
+
O.current?.(h);
|
|
913
1021
|
}, 1e3));
|
|
914
|
-
}, [
|
|
915
|
-
const
|
|
916
|
-
|
|
917
|
-
}, []),
|
|
918
|
-
|
|
919
|
-
const
|
|
920
|
-
if (!
|
|
921
|
-
const
|
|
922
|
-
I(Math.min(Math.max(
|
|
923
|
-
},
|
|
924
|
-
|
|
1022
|
+
}, [N, L]);
|
|
1023
|
+
const z = f(() => {
|
|
1024
|
+
O.current && (R.current && clearTimeout(R.current), O.current({ blocks: [], messages: [] }));
|
|
1025
|
+
}, []), te = f((h) => {
|
|
1026
|
+
h.preventDefault(), D.current = !0;
|
|
1027
|
+
const F = (ae) => {
|
|
1028
|
+
if (!D.current || !p.current) return;
|
|
1029
|
+
const se = p.current.getBoundingClientRect(), oe = (ae.clientX - se.left) / se.width * 100;
|
|
1030
|
+
I(Math.min(Math.max(oe, 30), 80));
|
|
1031
|
+
}, ee = () => {
|
|
1032
|
+
D.current = !1, document.removeEventListener("mousemove", F), document.removeEventListener("mouseup", ee);
|
|
925
1033
|
};
|
|
926
|
-
document.addEventListener("mousemove",
|
|
927
|
-
}, [])
|
|
928
|
-
|
|
1034
|
+
document.addEventListener("mousemove", F), document.addEventListener("mouseup", ee);
|
|
1035
|
+
}, []), Z = /* @__PURE__ */ e(
|
|
1036
|
+
lt,
|
|
1037
|
+
{
|
|
1038
|
+
agentEndpoint: t,
|
|
1039
|
+
agentApiKey: s,
|
|
1040
|
+
agentProvider: c,
|
|
1041
|
+
agentModel: a,
|
|
1042
|
+
agentProviderEndpoint: n,
|
|
1043
|
+
onClear: z,
|
|
1044
|
+
onDashboardSaved: l,
|
|
1045
|
+
onScore: d,
|
|
1046
|
+
loadingComponent: T,
|
|
1047
|
+
initialPrompt: A
|
|
1048
|
+
}
|
|
1049
|
+
);
|
|
1050
|
+
return b === "narrow" ? /* @__PURE__ */ e(
|
|
929
1051
|
"div",
|
|
930
1052
|
{
|
|
931
|
-
ref:
|
|
932
|
-
className: `dc:flex dc:h-full dc:w-full dc:overflow-hidden bg-dc-surface-secondary ${
|
|
1053
|
+
ref: J,
|
|
1054
|
+
className: `dc:flex dc:h-full dc:w-full dc:overflow-hidden bg-dc-surface-secondary ${w || ""}`,
|
|
1055
|
+
children: i === "chat" ? /* @__PURE__ */ u(ne, { children: [
|
|
1056
|
+
/* @__PURE__ */ e(
|
|
1057
|
+
mt,
|
|
1058
|
+
{
|
|
1059
|
+
blocks: M,
|
|
1060
|
+
pulsingBlockId: y,
|
|
1061
|
+
nudge: W,
|
|
1062
|
+
onExpand: () => x("notebook")
|
|
1063
|
+
}
|
|
1064
|
+
),
|
|
1065
|
+
/* @__PURE__ */ e("div", { className: "dc:h-full dc:overflow-hidden dc:flex-1", children: Z })
|
|
1066
|
+
] }) : /* @__PURE__ */ u(ne, { children: [
|
|
1067
|
+
/* @__PURE__ */ e("div", { className: "dc:h-full dc:overflow-hidden dc:flex-1", children: /* @__PURE__ */ e(ue, {}) }),
|
|
1068
|
+
/* @__PURE__ */ e(ht, { onExpand: () => x("chat") })
|
|
1069
|
+
] })
|
|
1070
|
+
}
|
|
1071
|
+
) : /* @__PURE__ */ u(
|
|
1072
|
+
"div",
|
|
1073
|
+
{
|
|
1074
|
+
ref: J,
|
|
1075
|
+
className: `dc:flex dc:h-full dc:w-full dc:overflow-hidden bg-dc-surface-secondary ${w || ""}`,
|
|
933
1076
|
children: [
|
|
934
|
-
/* @__PURE__ */
|
|
1077
|
+
/* @__PURE__ */ e(
|
|
935
1078
|
"div",
|
|
936
1079
|
{
|
|
937
1080
|
className: "dc:h-full dc:overflow-hidden",
|
|
938
|
-
style: { width: `${
|
|
939
|
-
children: /* @__PURE__ */
|
|
1081
|
+
style: { width: `${v}%` },
|
|
1082
|
+
children: /* @__PURE__ */ e(ue, {})
|
|
940
1083
|
}
|
|
941
1084
|
),
|
|
942
|
-
/* @__PURE__ */
|
|
1085
|
+
/* @__PURE__ */ e(
|
|
943
1086
|
"div",
|
|
944
1087
|
{
|
|
945
1088
|
className: "dc:w-1 dc:h-full dc:cursor-col-resize dc:flex-shrink-0 dc:transition-colors bg-dc-border dc:hover:bg-dc-accent",
|
|
946
|
-
onMouseDown:
|
|
1089
|
+
onMouseDown: te
|
|
947
1090
|
}
|
|
948
1091
|
),
|
|
949
|
-
/* @__PURE__ */
|
|
1092
|
+
/* @__PURE__ */ e(
|
|
950
1093
|
"div",
|
|
951
1094
|
{
|
|
952
1095
|
className: "dc:h-full dc:overflow-hidden",
|
|
953
|
-
style: { width: `${100 -
|
|
954
|
-
children:
|
|
955
|
-
nt,
|
|
956
|
-
{
|
|
957
|
-
agentEndpoint: e,
|
|
958
|
-
agentApiKey: s,
|
|
959
|
-
agentProvider: r,
|
|
960
|
-
agentModel: n,
|
|
961
|
-
agentProviderEndpoint: a,
|
|
962
|
-
onClear: P,
|
|
963
|
-
onDashboardSaved: d,
|
|
964
|
-
onScore: i,
|
|
965
|
-
loadingComponent: w,
|
|
966
|
-
initialPrompt: A
|
|
967
|
-
}
|
|
968
|
-
)
|
|
1096
|
+
style: { width: `${100 - v}%` },
|
|
1097
|
+
children: Z
|
|
969
1098
|
}
|
|
970
1099
|
)
|
|
971
1100
|
]
|
|
972
1101
|
}
|
|
973
1102
|
);
|
|
974
1103
|
}
|
|
975
|
-
const
|
|
1104
|
+
const It = Y.memo(function({
|
|
976
1105
|
config: s,
|
|
977
|
-
...
|
|
1106
|
+
...c
|
|
978
1107
|
}) {
|
|
979
|
-
return /* @__PURE__ */
|
|
1108
|
+
return /* @__PURE__ */ e(Qe, { initialConfig: s, children: /* @__PURE__ */ e(ft, { ...c }) });
|
|
980
1109
|
});
|
|
981
|
-
function
|
|
982
|
-
return /* @__PURE__ */
|
|
1110
|
+
function Mt() {
|
|
1111
|
+
return /* @__PURE__ */ e("div", { children: "Analytics Page - Coming in Phase 4" });
|
|
983
1112
|
}
|
|
984
|
-
const
|
|
985
|
-
function
|
|
986
|
-
className:
|
|
1113
|
+
const pt = B("segment");
|
|
1114
|
+
function Et({
|
|
1115
|
+
className: t = ""
|
|
987
1116
|
}) {
|
|
988
|
-
return /* @__PURE__ */
|
|
1117
|
+
return /* @__PURE__ */ e(
|
|
989
1118
|
"div",
|
|
990
1119
|
{
|
|
991
|
-
className: `dc:flex dc:items-center dc:justify-center bg-dc-bg-secondary ${
|
|
992
|
-
children: /* @__PURE__ */
|
|
993
|
-
/* @__PURE__ */
|
|
994
|
-
|
|
1120
|
+
className: `dc:flex dc:items-center dc:justify-center bg-dc-bg-secondary ${t}`,
|
|
1121
|
+
children: /* @__PURE__ */ u("div", { className: "dc:text-center", children: [
|
|
1122
|
+
/* @__PURE__ */ e(
|
|
1123
|
+
pt,
|
|
995
1124
|
{
|
|
996
1125
|
className: "dc:w-8 dc:h-8 dc:mx-auto dc:mb-2 text-dc-text-muted dc:opacity-50"
|
|
997
1126
|
}
|
|
998
1127
|
),
|
|
999
|
-
/* @__PURE__ */
|
|
1128
|
+
/* @__PURE__ */ e("span", { className: "dc:text-xs text-dc-text-muted", children: "No preview" })
|
|
1000
1129
|
] })
|
|
1001
1130
|
}
|
|
1002
1131
|
);
|
|
1003
1132
|
}
|
|
1004
1133
|
export {
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1134
|
+
It as AgenticNotebook,
|
|
1135
|
+
Lt as AnalysisBuilder,
|
|
1136
|
+
Pt as AnalyticsDashboard,
|
|
1137
|
+
Mt as AnalyticsPage,
|
|
1138
|
+
Ce as AnalyticsPortlet,
|
|
1139
|
+
Qt as ChartErrorBoundary,
|
|
1140
|
+
Ft as ConfirmModal,
|
|
1141
|
+
Vs as CubeClient,
|
|
1142
|
+
js as CubeProvider,
|
|
1143
|
+
Is as DEFAULT_ICONS,
|
|
1144
|
+
_t as DashboardEditModal,
|
|
1145
|
+
Vt as DashboardGrid,
|
|
1146
|
+
jt as DashboardStoreProvider,
|
|
1147
|
+
Et as DashboardThumbnailPlaceholder,
|
|
1148
|
+
Ut as DrillBreadcrumb,
|
|
1149
|
+
Ot as DrillMenu,
|
|
1150
|
+
dc as ExecutionPlanPanel,
|
|
1151
|
+
lc as ExplainAIPanel,
|
|
1152
|
+
ec as LazyChart,
|
|
1153
|
+
me as LoadingIndicator,
|
|
1154
|
+
$t as Modal,
|
|
1155
|
+
Qe as NotebookStoreProvider,
|
|
1156
|
+
Ne as PortletAnalysisModal,
|
|
1157
|
+
qt as PortletContainer,
|
|
1158
|
+
Us as ScrollContainerProvider,
|
|
1159
|
+
gr as THEME_PRESETS,
|
|
1160
|
+
br as applyTheme,
|
|
1161
|
+
dr as buildFunnelConfigFromQueries,
|
|
1162
|
+
lr as buildServerFunnelQuery,
|
|
1163
|
+
Os as captureThumbnail,
|
|
1164
|
+
ic as compressAndEncode,
|
|
1165
|
+
$s as createCubeClient,
|
|
1166
|
+
Oc as createDashboardLayout,
|
|
1167
|
+
Kt as createDashboardStore,
|
|
1168
|
+
zt as createDefaultConfig,
|
|
1169
|
+
Wt as createDefaultFlowConfig,
|
|
1170
|
+
Jt as createDefaultFunnelConfig,
|
|
1171
|
+
Xt as createDefaultQueryConfig,
|
|
1172
|
+
Yt as createDefaultRetentionConfig,
|
|
1173
|
+
Gt as createDefaultWorkspace,
|
|
1174
|
+
Tr as createExplainQueryKey,
|
|
1175
|
+
Kc as createFlowQueryKey,
|
|
1176
|
+
zc as createFunnelQueryKey,
|
|
1177
|
+
Pe as createNotebookStore,
|
|
1178
|
+
uc as decodeAndDecompress,
|
|
1179
|
+
mc as detectAsymmetricDateRanges,
|
|
1180
|
+
hc as detectMeasureCollisions,
|
|
1181
|
+
$c as formatChartData,
|
|
1182
|
+
ir as formatDuration,
|
|
1183
|
+
Wc as generateQueryLabel,
|
|
1184
|
+
fc as generateShareUrl,
|
|
1185
|
+
pc as getAvailableBindingKeyDimensions,
|
|
1186
|
+
tc as getAvailableChartTypes,
|
|
1187
|
+
ur as getBindingKeyField,
|
|
1188
|
+
gc as getBindingKeyLabel,
|
|
1189
|
+
Me as getChartTypeIcon,
|
|
1190
|
+
Jc as getCombinedFields,
|
|
1191
|
+
mr as getCubeNameFromQuery,
|
|
1192
|
+
Ms as getFieldTypeIcon,
|
|
1064
1193
|
B as getIcon,
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1194
|
+
Es as getIconData,
|
|
1195
|
+
Rs as getIconRegistry,
|
|
1196
|
+
Bs as getIconsByCategory,
|
|
1197
|
+
Ls as getMeasureTypeIcon,
|
|
1198
|
+
Xc as getQueryIndices,
|
|
1199
|
+
Yc as getQueryLabels,
|
|
1200
|
+
xr as getTheme,
|
|
1201
|
+
yr as getThemeVariable,
|
|
1202
|
+
sc as getUnavailableChartTypes,
|
|
1203
|
+
bc as getValidationSummary,
|
|
1204
|
+
Qr as highlightCodeBlocks,
|
|
1205
|
+
cc as isChartTypeAvailable,
|
|
1206
|
+
vr as isDarkMode,
|
|
1207
|
+
Ht as isFlowConfig,
|
|
1208
|
+
Zt as isFunnelConfig,
|
|
1209
|
+
hr as isFunnelData,
|
|
1210
|
+
xc as isMinimumFunnelConfigValid,
|
|
1211
|
+
es as isMultiQuery,
|
|
1212
|
+
ts as isMultiQueryConfig,
|
|
1213
|
+
Gc as isMultiQueryData,
|
|
1214
|
+
yc as isMultiQueryValid,
|
|
1215
|
+
ss as isQueryConfig,
|
|
1216
|
+
cs as isRetentionConfig,
|
|
1217
|
+
Br as isSankeyData,
|
|
1218
|
+
Lr as isServerFlowQuery,
|
|
1219
|
+
rs as isServerFunnelQuery,
|
|
1220
|
+
vc as isShareableSize,
|
|
1221
|
+
ns as isSingleQuery,
|
|
1222
|
+
qs as isThumbnailCaptureAvailable,
|
|
1223
|
+
as as isValidAnalysisConfig,
|
|
1224
|
+
os as isValidAnalysisWorkspace,
|
|
1225
|
+
rc as isValidChartType,
|
|
1226
|
+
Hc as mergeQueryResults,
|
|
1227
|
+
Zc as mergeResultsByKey,
|
|
1228
|
+
er as mergeResultsConcat,
|
|
1229
|
+
ds as migrateConfig,
|
|
1230
|
+
ls as migrateLegacyPortlet,
|
|
1231
|
+
Cc as parseShareUrl,
|
|
1232
|
+
nc as preloadChart,
|
|
1233
|
+
ac as preloadCharts,
|
|
1234
|
+
Ps as registerIcons,
|
|
1235
|
+
Qs as resetIcons,
|
|
1236
|
+
Cr as resetTheme,
|
|
1237
|
+
is as selectAllActions,
|
|
1238
|
+
je as selectBlockActions,
|
|
1239
|
+
Fe as selectBlocks,
|
|
1240
|
+
wc as selectBreakdowns,
|
|
1241
|
+
Nc as selectChartConfig,
|
|
1242
|
+
Ve as selectChatActions,
|
|
1243
|
+
_e as selectChatState,
|
|
1244
|
+
kc as selectCurrentState,
|
|
1245
|
+
us as selectDebugData,
|
|
1246
|
+
ms as selectDebugDataActions,
|
|
1247
|
+
hs as selectEditModeActions,
|
|
1248
|
+
fs as selectEditModeState,
|
|
1249
|
+
Sc as selectFilters,
|
|
1250
|
+
Tc as selectFunnelState,
|
|
1251
|
+
At as selectInputValue,
|
|
1252
|
+
Tt as selectIsStreaming,
|
|
1253
|
+
ps as selectLayoutActions,
|
|
1254
|
+
gs as selectLayoutState,
|
|
1255
|
+
St as selectMessages,
|
|
1256
|
+
Dc as selectMetrics,
|
|
1257
|
+
bs as selectModalActions,
|
|
1258
|
+
xs as selectModalState,
|
|
1259
|
+
Ac as selectMultiQueryState,
|
|
1260
|
+
ys as selectPortletDebugData,
|
|
1261
|
+
Dt as selectSessionId,
|
|
1262
|
+
vs as selectThumbnailDirty,
|
|
1263
|
+
Ic as selectUIState,
|
|
1264
|
+
Fs as setIcon,
|
|
1265
|
+
wr as setTheme,
|
|
1266
|
+
Nr as setThemeVariable,
|
|
1267
|
+
fr as transformServerFunnelResult,
|
|
1268
|
+
et as useAgentChat,
|
|
1269
|
+
Mc as useAnalysisBuilder,
|
|
1270
|
+
Ec as useAnalysisBuilderStore,
|
|
1271
|
+
Re as useCubeApi,
|
|
1272
|
+
Ks as useCubeContext,
|
|
1273
|
+
zs as useCubeFeatures,
|
|
1274
|
+
Hs as useCubeFieldLabel,
|
|
1275
|
+
tr as useCubeLoadQuery,
|
|
1276
|
+
Ws as useCubeMeta,
|
|
1277
|
+
Js as useCubeMetaQuery,
|
|
1278
|
+
sr as useCubeQuery,
|
|
1279
|
+
Cs as useDashboard,
|
|
1280
|
+
ws as useDashboardStore,
|
|
1281
|
+
Ns as useDashboardStoreApi,
|
|
1282
|
+
ks as useDashboardStoreOptional,
|
|
1283
|
+
Ss as useDrillInteraction,
|
|
1284
|
+
Dr as useDryRunQueries,
|
|
1285
|
+
Ar as useDryRunQuery,
|
|
1286
|
+
Ts as useElementVisibility,
|
|
1287
|
+
Ir as useExplainAI,
|
|
1288
|
+
Mr as useExplainQuery,
|
|
1289
|
+
cr as useFlowQuery,
|
|
1290
|
+
rr as useFunnelQuery,
|
|
1291
|
+
nr as useMultiCubeLoadQuery,
|
|
1292
|
+
Er as useMultiDryRunQueries,
|
|
1293
|
+
P as useNotebookStore,
|
|
1294
|
+
Xs as useScrollContainer,
|
|
1295
|
+
Ds as useScrollDetection,
|
|
1296
|
+
jc as useTheme,
|
|
1297
|
+
Rc as validateBindingKeyExists,
|
|
1298
|
+
Bc as validateBindingKeyForSteps,
|
|
1299
|
+
Lc as validateFunnelConfig,
|
|
1300
|
+
ar as validateMergeKey,
|
|
1301
|
+
Pc as validateMergeKeys,
|
|
1302
|
+
Qc as validateMultiQueryConfig,
|
|
1303
|
+
Fc as validateStepQueries,
|
|
1304
|
+
_c as validateTimeDimensionAlignment,
|
|
1305
|
+
Ys as warnIfScreenshotLibMissing,
|
|
1306
|
+
kr as watchThemeChanges
|
|
1178
1307
|
};
|
|
1179
1308
|
//# sourceMappingURL=index.js.map
|