drizzle-cube 0.4.5 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/dist/adapters/express/index.cjs +8 -4
  2. package/dist/adapters/express/index.d.ts +7 -0
  3. package/dist/adapters/express/index.js +189 -139
  4. package/dist/adapters/fastify/index.cjs +8 -4
  5. package/dist/adapters/fastify/index.d.ts +7 -0
  6. package/dist/adapters/fastify/index.js +209 -150
  7. package/dist/adapters/handler-BLcxTuwi.cjs +23 -0
  8. package/dist/adapters/handler-odjn7MIB.js +1880 -0
  9. package/dist/adapters/hono/index.cjs +8 -4
  10. package/dist/adapters/hono/index.d.ts +7 -0
  11. package/dist/adapters/hono/index.js +202 -144
  12. package/dist/adapters/{mcp-transport-YHDZWKOi.js → mcp-transport-CU5g9bxj.js} +7 -3
  13. package/dist/adapters/{mcp-transport-BqLo4hKi.cjs → mcp-transport-KX92EgkF.cjs} +21 -21
  14. package/dist/adapters/nextjs/index.cjs +7 -3
  15. package/dist/adapters/nextjs/index.d.ts +14 -0
  16. package/dist/adapters/nextjs/index.js +220 -144
  17. package/dist/client/charts/chartConfigs.d.ts +2 -9
  18. package/dist/client/charts.js +72 -70
  19. package/dist/client/charts.js.map +1 -1
  20. package/dist/client/chunks/{RetentionCombinedChart.config-C-ILIaEb.js → RetentionCombinedChart.config-Bbp2ghim.js} +2 -1
  21. package/dist/client/chunks/RetentionCombinedChart.config-Bbp2ghim.js.map +1 -0
  22. package/dist/client/chunks/{RetentionHeatmap.config-CIvhc-GT.js → RetentionHeatmap.config-BWf_-vdj.js} +2 -1
  23. package/dist/client/chunks/RetentionHeatmap.config-BWf_-vdj.js.map +1 -0
  24. package/dist/client/chunks/{analysis-builder-CG5VIMYB.js → analysis-builder-Bov_gLsf.js} +1408 -1393
  25. package/dist/client/chunks/analysis-builder-Bov_gLsf.js.map +1 -0
  26. package/dist/client/chunks/{analysis-builder-shared-CjlKJgyA.js → analysis-builder-shared-NBk6y0md.js} +3 -3
  27. package/dist/client/chunks/{analysis-builder-shared-CjlKJgyA.js.map → analysis-builder-shared-NBk6y0md.js.map} +1 -1
  28. package/dist/client/chunks/{chart-activity-grid-DStNr34n.js → chart-activity-grid-CE7xGFQo.js} +2 -2
  29. package/dist/client/chunks/{chart-activity-grid-DStNr34n.js.map → chart-activity-grid-CE7xGFQo.js.map} +1 -1
  30. package/dist/client/chunks/chart-box-plot-Dja4LS3O.js +313 -0
  31. package/dist/client/chunks/chart-box-plot-Dja4LS3O.js.map +1 -0
  32. package/dist/client/chunks/{chart-config-activity-grid-CAlo1cHA.js → chart-config-activity-grid-CmOqDuOT.js} +4 -5
  33. package/dist/client/chunks/chart-config-activity-grid-CmOqDuOT.js.map +1 -0
  34. package/dist/client/chunks/{chart-config-area-CyyJOO2T.js → chart-config-area-CK_GVApT.js} +4 -5
  35. package/dist/client/chunks/chart-config-area-CK_GVApT.js.map +1 -0
  36. package/dist/client/chunks/{chart-config-bar-soxw6m2o.js → chart-config-bar-C8uzktxl.js} +4 -5
  37. package/dist/client/chunks/chart-config-bar-C8uzktxl.js.map +1 -0
  38. package/dist/client/chunks/chart-config-box-plot-D3DA7_pr.js +85 -0
  39. package/dist/client/chunks/chart-config-box-plot-D3DA7_pr.js.map +1 -0
  40. package/dist/client/chunks/{chart-config-bubble-CuSsCHZ4.js → chart-config-bubble-q3DoQX5F.js} +4 -5
  41. package/dist/client/chunks/chart-config-bubble-q3DoQX5F.js.map +1 -0
  42. package/dist/client/chunks/{chart-config-data-table-BhgqwoqT.js → chart-config-data-table-B20Y5JCm.js} +4 -5
  43. package/dist/client/chunks/chart-config-data-table-B20Y5JCm.js.map +1 -0
  44. package/dist/client/chunks/{chart-config-funnel-BlSQYng0.js → chart-config-funnel-3eYnGg8M.js} +4 -5
  45. package/dist/client/chunks/chart-config-funnel-3eYnGg8M.js.map +1 -0
  46. package/dist/client/chunks/{chart-config-heat-map-DHQGFZhX.js → chart-config-heat-map-_wEnTnRA.js} +4 -5
  47. package/dist/client/chunks/chart-config-heat-map-_wEnTnRA.js.map +1 -0
  48. package/dist/client/chunks/{chart-config-kpi-delta-yTA5ug_l.js → chart-config-kpi-delta-DLGZ2A3X.js} +4 -5
  49. package/dist/client/chunks/chart-config-kpi-delta-DLGZ2A3X.js.map +1 -0
  50. package/dist/client/chunks/{chart-config-kpi-number-nVAwDXzq.js → chart-config-kpi-number-K-wzviXF.js} +4 -5
  51. package/dist/client/chunks/chart-config-kpi-number-K-wzviXF.js.map +1 -0
  52. package/dist/client/chunks/{chart-config-kpi-text-DZjqsx-b.js → chart-config-kpi-text-BjYqwqaJ.js} +4 -5
  53. package/dist/client/chunks/chart-config-kpi-text-BjYqwqaJ.js.map +1 -0
  54. package/dist/client/chunks/{chart-config-line-D5ME6w0v.js → chart-config-line-JNagi9tf.js} +4 -5
  55. package/dist/client/chunks/chart-config-line-JNagi9tf.js.map +1 -0
  56. package/dist/client/chunks/{chart-config-markdown-BXKL5TbQ.js → chart-config-markdown-BWQSjJpy.js} +4 -5
  57. package/dist/client/chunks/chart-config-markdown-BWQSjJpy.js.map +1 -0
  58. package/dist/client/chunks/{chart-config-pie-DlHa2jTy.js → chart-config-pie-CNLXb-fr.js} +4 -5
  59. package/dist/client/chunks/chart-config-pie-CNLXb-fr.js.map +1 -0
  60. package/dist/client/chunks/{chart-config-radar-BBAVIF0S.js → chart-config-radar-oxHfRAa3.js} +4 -5
  61. package/dist/client/chunks/chart-config-radar-oxHfRAa3.js.map +1 -0
  62. package/dist/client/chunks/{chart-config-radial-bar-CTwjDRnB.js → chart-config-radial-bar-_Aw3jAEm.js} +4 -5
  63. package/dist/client/chunks/chart-config-radial-bar-_Aw3jAEm.js.map +1 -0
  64. package/dist/client/chunks/{chart-config-sankey-CNAgsMQ4.js → chart-config-sankey-C8FX9hGF.js} +4 -5
  65. package/dist/client/chunks/chart-config-sankey-C8FX9hGF.js.map +1 -0
  66. package/dist/client/chunks/{chart-config-scatter-CWvN2E-X.js → chart-config-scatter-DFKM80eO.js} +4 -5
  67. package/dist/client/chunks/chart-config-scatter-DFKM80eO.js.map +1 -0
  68. package/dist/client/chunks/{chart-config-sunburst-W_SKwaj0.js → chart-config-sunburst-BmC0NLTU.js} +4 -5
  69. package/dist/client/chunks/chart-config-sunburst-BmC0NLTU.js.map +1 -0
  70. package/dist/client/chunks/{chart-config-tree-map-IRAYf9YM.js → chart-config-tree-map-DGMbNTaa.js} +4 -5
  71. package/dist/client/chunks/chart-config-tree-map-DGMbNTaa.js.map +1 -0
  72. package/dist/client/chunks/{chart-data-table-Ch_1c1Zo.js → chart-data-table-Ba_6tuJw.js} +2 -2
  73. package/dist/client/chunks/{chart-data-table-Ch_1c1Zo.js.map → chart-data-table-Ba_6tuJw.js.map} +1 -1
  74. package/dist/client/chunks/{chart-kpi-delta-CWCmi8vL.js → chart-kpi-delta-D9XJoKuA.js} +3 -3
  75. package/dist/client/chunks/{chart-kpi-delta-CWCmi8vL.js.map → chart-kpi-delta-D9XJoKuA.js.map} +1 -1
  76. package/dist/client/chunks/{chart-kpi-number-C-5m3qt5.js → chart-kpi-number-C29Vj2g8.js} +2 -2
  77. package/dist/client/chunks/{chart-kpi-number-C-5m3qt5.js.map → chart-kpi-number-C29Vj2g8.js.map} +1 -1
  78. package/dist/client/chunks/{chart-kpi-text--t4ibPmx.js → chart-kpi-text-CgjjrurK.js} +2 -2
  79. package/dist/client/chunks/{chart-kpi-text--t4ibPmx.js.map → chart-kpi-text-CgjjrurK.js.map} +1 -1
  80. package/dist/client/chunks/chart-markdown-Du4Z2iqK.js +2695 -0
  81. package/dist/client/chunks/chart-markdown-Du4Z2iqK.js.map +1 -0
  82. package/dist/client/chunks/{charts-loader-m5Ussksz.js → charts-loader-HYQFVOo4.js} +14 -13
  83. package/dist/client/chunks/charts-loader-HYQFVOo4.js.map +1 -0
  84. package/dist/client/chunks/{components-D-5p1LVQ.js → components-O0hh7ooo.js} +6 -6
  85. package/dist/client/chunks/components-O0hh7ooo.js.map +1 -0
  86. package/dist/client/chunks/{icons-DRreo6m8.js → icons-DAeqv1iX.js} +7 -7
  87. package/dist/client/chunks/{icons-DRreo6m8.js.map → icons-DAeqv1iX.js.map} +1 -1
  88. package/dist/client/components/AgenticNotebook/AgentChatPanel.d.ts +8 -0
  89. package/dist/client/components/AgenticNotebook/ChatInput.d.ts +14 -0
  90. package/dist/client/components/AgenticNotebook/ChatMessage.d.ts +7 -0
  91. package/dist/client/components/AgenticNotebook/NotebookCanvas.d.ts +3 -0
  92. package/dist/client/components/AgenticNotebook/NotebookMarkdownBlock.d.ts +12 -0
  93. package/dist/client/components/AgenticNotebook/NotebookPortletBlock.d.ts +12 -0
  94. package/dist/client/components/AgenticNotebook/index.d.ts +34 -0
  95. package/dist/client/components/charts/BoxPlotChart.config.d.ts +11 -0
  96. package/dist/client/components/charts/BoxPlotChart.d.ts +4 -0
  97. package/dist/client/components/charts/index.d.ts +1 -0
  98. package/dist/client/components.js +1 -1
  99. package/dist/client/hooks/useAgentChat.d.ts +36 -0
  100. package/dist/client/icons.js +1 -1
  101. package/dist/client/index.d.ts +6 -0
  102. package/dist/client/index.js +923 -187
  103. package/dist/client/index.js.map +1 -1
  104. package/dist/client/stores/notebookStore.d.ts +152 -0
  105. package/dist/client/styles.css +1 -1
  106. package/dist/client/types.d.ts +1 -1
  107. package/dist/client/utils.js +3 -3
  108. package/dist/client-bundle-stats.html +4 -4
  109. package/dist/server/index.cjs +116 -90
  110. package/dist/server/index.d.ts +155 -0
  111. package/dist/server/index.js +7088 -4852
  112. package/package.json +12 -6
  113. package/dist/client/chunks/RetentionCombinedChart.config-C-ILIaEb.js.map +0 -1
  114. package/dist/client/chunks/RetentionHeatmap.config-CIvhc-GT.js.map +0 -1
  115. package/dist/client/chunks/analysis-builder-CG5VIMYB.js.map +0 -1
  116. package/dist/client/chunks/chart-config-activity-grid-CAlo1cHA.js.map +0 -1
  117. package/dist/client/chunks/chart-config-area-CyyJOO2T.js.map +0 -1
  118. package/dist/client/chunks/chart-config-bar-soxw6m2o.js.map +0 -1
  119. package/dist/client/chunks/chart-config-bubble-CuSsCHZ4.js.map +0 -1
  120. package/dist/client/chunks/chart-config-data-table-BhgqwoqT.js.map +0 -1
  121. package/dist/client/chunks/chart-config-funnel-BlSQYng0.js.map +0 -1
  122. package/dist/client/chunks/chart-config-heat-map-DHQGFZhX.js.map +0 -1
  123. package/dist/client/chunks/chart-config-kpi-delta-yTA5ug_l.js.map +0 -1
  124. package/dist/client/chunks/chart-config-kpi-number-nVAwDXzq.js.map +0 -1
  125. package/dist/client/chunks/chart-config-kpi-text-DZjqsx-b.js.map +0 -1
  126. package/dist/client/chunks/chart-config-line-D5ME6w0v.js.map +0 -1
  127. package/dist/client/chunks/chart-config-markdown-BXKL5TbQ.js.map +0 -1
  128. package/dist/client/chunks/chart-config-pie-DlHa2jTy.js.map +0 -1
  129. package/dist/client/chunks/chart-config-radar-BBAVIF0S.js.map +0 -1
  130. package/dist/client/chunks/chart-config-radial-bar-CTwjDRnB.js.map +0 -1
  131. package/dist/client/chunks/chart-config-sankey-CNAgsMQ4.js.map +0 -1
  132. package/dist/client/chunks/chart-config-scatter-CWvN2E-X.js.map +0 -1
  133. package/dist/client/chunks/chart-config-sunburst-W_SKwaj0.js.map +0 -1
  134. package/dist/client/chunks/chart-config-tree-map-IRAYf9YM.js.map +0 -1
  135. package/dist/client/chunks/chart-markdown-Rq6ORisB.js +0 -276
  136. package/dist/client/chunks/chart-markdown-Rq6ORisB.js.map +0 -1
  137. package/dist/client/chunks/chartConfigRegistry-C5dZm-ZK.js +0 -44
  138. package/dist/client/chunks/chartConfigRegistry-C5dZm-ZK.js.map +0 -1
  139. package/dist/client/chunks/charts-loader-m5Ussksz.js.map +0 -1
  140. package/dist/client/chunks/components-D-5p1LVQ.js.map +0 -1
@@ -1,202 +1,938 @@
1
- import { g as d, a as y, A as g, C as m, f as b, e as C, D as h, h as f, c as p, b as D, M as x, d as S, P as Q, l as A, R as M, O as F, N as v, L as T, Q as I, T as E, G as L, F as P, I as B, U as w, E as R, H as K, V, J as k, K as N, S as j, W as U, X as z, x as G, o as O, v as W, q, s as H, t as _, n as J, r as X, m as $, p as Y, w as Z, u as ee, i as ae, j as se, k as te, B as re, z as ie, y as le } from "./chunks/components-D-5p1LVQ.js";
2
- import { jsx as e, jsxs as s } from "react/jsx-runtime";
3
- import { L as ne, u as ue } from "./chunks/charts-core-DmGfleFz.js";
4
- import { L as de, g as ye, c as ge, b as me, i as be, p as Ce, a as he } from "./chunks/charts-loader-m5Ussksz.js";
5
- import { b as t } from "./chunks/icons-DRreo6m8.js";
6
- import { D as pe, a as De, i as xe, c as Se, f as Qe, h as Ae, g as Me, r as Fe, e as ve, s as Te } from "./chunks/icons-DRreo6m8.js";
7
- import { E as Ee, a as Le, p as Pe, q as Be, m as we, l as Re, r as Ke, C as Ve, D as ke, o as Ne, B as je, n as Ue, w as ze, t as Ge, d as Oe, f as We, s as qe, e as He, i as _e, c as Je, h as Xe, g as $e, u as Ye, b as Ze, y as ea, A as aa, x as sa, k as ta, v as ra, z as ia, j as la } from "./chunks/analysis-builder-shared-CjlKJgyA.js";
8
- import { h as na, a as ua, S as ca, e as da, d as ya, i as ga, f as ma, b as ba, g as Ca, u as ha, j as fa, c as pa, w as Da } from "./chunks/providers-CgxXm6Ll.js";
9
- import { u as Sa } from "./chunks/chart-bubble-Bf42A1-B.js";
10
- import { c as Aa, f as Ma } from "./chunks/index-CApFCBF9.js";
11
- import { e as va, c as Ta, l as Ia, h as Ea, k as La, j as Pa, i as Ba, m as wa, g as Ra, f as Ka, u as Va, u as ka, d as Na, b as ja, a as Ua, v as za } from "./chunks/useDirtyStateTracking-Cu1HSjmo.js";
12
- import { c as Oa, b as Wa, f as qa, g as Ha, a as _a, i as Ja, t as Xa } from "./chunks/funnel-utils-CyonoNeC.js";
13
- import { T as Ya, c as Za, g as es, a as as, i as ss, r as ts, s as rs, b as is, w as ls } from "./chunks/theme-Dp3hFed1.js";
14
- import { createExplainQueryKey as ns, useDryRunQueries as us, useDryRunQuery as cs, useExplainAI as ds, useExplainQuery as ys, useMultiDryRunQueries as gs } from "./hooks.js";
15
- import { i as bs, a as Cs } from "./chunks/flow-utils-CjQZG5qq.js";
16
- import { h as fs } from "./chunks/syntaxHighlighting-BQfjio-i.js";
17
- function o() {
18
- return /* @__PURE__ */ e("div", { children: "Analytics Page - Coming in Phase 4" });
1
+ import { A as q } from "./chunks/components-O0hh7ooo.js";
2
+ import { g as Ke, a as je, C as $e, f as Ue, e as ze, D as Oe, h as qe, c as We, b as Je, M as He, d as Ge, P as Xe, l as Ye, R as Ze, O as et, N as tt, L as st, Q as at, T as ct, G as ot, F as rt, I as nt, U as dt, E as lt, H as it, V as ut, J as mt, K as pt, S as ht, W as ft, X as bt, x as gt, o as xt, v as yt, q as vt, s as Ct, t as Nt, n as kt, r as wt, m as St, p as Dt, w as Mt, u as At, i as Tt, j as It, k as Et, B as Rt, z as Bt, y as Lt } from "./chunks/components-O0hh7ooo.js";
3
+ import { jsx as a, jsxs as g, Fragment as W } from "react/jsx-runtime";
4
+ import B, { useRef as C, createContext as J, useContext as H, useEffect as Q, useCallback as f, useState as _ } from "react";
5
+ import { c as G, d as X, e as Y, s as Z, f as V } from "./chunks/vendor-AVsJ2ni0.js";
6
+ import { Q as ee } from "./chunks/chart-markdown-Du4Z2iqK.js";
7
+ import { f as te } from "./chunks/providers-CgxXm6Ll.js";
8
+ import { h as Ft, a as Pt, S as Vt, e as _t, d as Kt, i as jt, b as $t, g as Ut, u as zt, j as Ot, c as qt, w as Wt } from "./chunks/providers-CgxXm6Ll.js";
9
+ import { L as Ht, u as Gt } from "./chunks/charts-core-DmGfleFz.js";
10
+ import { L as Yt, g as Zt, c as es, b as ts, i as ss, p as as, a as cs } from "./chunks/charts-loader-HYQFVOo4.js";
11
+ import { a as se } from "./chunks/icons-DAeqv1iX.js";
12
+ import { D as rs, h as ns, i as ds, b as ls, e as is, f as us, g as ms, r as ps, c as hs, s as fs } from "./chunks/icons-DAeqv1iX.js";
13
+ import { E as gs, a as xs, p as ys, q as vs, m as Cs, l as Ns, r as ks, C as ws, D as Ss, o as Ds, B as Ms, n as As, w as Ts, t as Is, d as Es, f as Rs, s as Bs, e as Ls, i as Qs, c as Fs, h as Ps, g as Vs, u as _s, b as Ks, y as js, A as $s, x as Us, k as zs, v as Os, z as qs, j as Ws } from "./chunks/analysis-builder-shared-NBk6y0md.js";
14
+ import { u as Hs } from "./chunks/chart-bubble-Bf42A1-B.js";
15
+ import { c as Xs, f as Ys } from "./chunks/index-CApFCBF9.js";
16
+ import { e as ea, c as ta, l as sa, h as aa, k as ca, j as oa, i as ra, m as na, g as da, f as la, u as ia, u as ua, d as ma, b as pa, a as ha, v as fa } from "./chunks/useDirtyStateTracking-Cu1HSjmo.js";
17
+ import { c as ga, b as xa, f as ya, g as va, a as Ca, i as Na, t as ka } from "./chunks/funnel-utils-CyonoNeC.js";
18
+ import { T as Sa, c as Da, g as Ma, a as Aa, i as Ta, r as Ia, s as Ea, b as Ra, w as Ba } from "./chunks/theme-Dp3hFed1.js";
19
+ import { createExplainQueryKey as Qa, useDryRunQueries as Fa, useDryRunQuery as Pa, useExplainAI as Va, useExplainQuery as _a, useMultiDryRunQueries as Ka } from "./hooks.js";
20
+ import { i as $a, a as Ua } from "./chunks/flow-utils-CjQZG5qq.js";
21
+ import { h as Oa } from "./chunks/syntaxHighlighting-BQfjio-i.js";
22
+ const j = () => ({
23
+ blocks: [],
24
+ messages: [],
25
+ isStreaming: !1,
26
+ sessionId: null,
27
+ inputValue: ""
28
+ });
29
+ function ae(t, e) {
30
+ return {
31
+ // Block actions
32
+ addBlock: (s) => t((c) => ({
33
+ blocks: [...c.blocks, s]
34
+ })),
35
+ removeBlock: (s) => t((c) => ({
36
+ blocks: c.blocks.filter((o) => o.id !== s)
37
+ })),
38
+ moveBlock: (s, c) => t((o) => {
39
+ const r = o.blocks.findIndex((m) => m.id === s);
40
+ if (r === -1) return {};
41
+ if (c === "up" && r === 0) return {};
42
+ if (c === "down" && r === o.blocks.length - 1) return {};
43
+ const n = [...o.blocks], i = c === "up" ? r - 1 : r + 1;
44
+ return [n[r], n[i]] = [n[i], n[r]], { blocks: n };
45
+ }),
46
+ // Chat actions
47
+ addMessage: (s) => t((c) => ({
48
+ messages: [...c.messages, s]
49
+ })),
50
+ appendToLastAssistantMessage: (s) => t((c) => {
51
+ const o = [...c.messages], r = o[o.length - 1];
52
+ return r && r.role === "assistant" && (o[o.length - 1] = {
53
+ ...r,
54
+ content: r.content + s
55
+ }), { messages: o };
56
+ }),
57
+ addToolCallToLastAssistant: (s) => t((c) => {
58
+ const o = [...c.messages], r = o[o.length - 1];
59
+ return r && r.role === "assistant" && (o[o.length - 1] = {
60
+ ...r,
61
+ toolCalls: [...r.toolCalls || [], s]
62
+ }), { messages: o };
63
+ }),
64
+ updateLastToolCall: (s) => t((c) => {
65
+ const o = [...c.messages], r = o[o.length - 1];
66
+ if (r?.role === "assistant" && r.toolCalls?.length) {
67
+ const n = [...r.toolCalls], i = s.id ? n.findIndex((m) => m.id === s.id) : n.length - 1;
68
+ i !== -1 && (n[i] = { ...n[i], ...s }, o[o.length - 1] = { ...r, toolCalls: n });
69
+ }
70
+ return { messages: o };
71
+ }),
72
+ // Session/UI actions
73
+ setIsStreaming: (s) => t({ isStreaming: s }),
74
+ setSessionId: (s) => t({ sessionId: s }),
75
+ setInputValue: (s) => t({ inputValue: s }),
76
+ // Persistence
77
+ save: () => {
78
+ const s = e();
79
+ return {
80
+ blocks: s.blocks,
81
+ messages: s.messages
82
+ };
83
+ },
84
+ load: (s) => t({
85
+ blocks: s.blocks || [],
86
+ messages: s.messages || []
87
+ }),
88
+ // Reset
89
+ reset: () => t(j())
90
+ };
19
91
  }
20
- const r = t("segment");
21
- function n({
22
- className: a = ""
92
+ function ce() {
93
+ const t = j();
94
+ return X()(
95
+ Y(
96
+ Z((e, s) => ({
97
+ ...t,
98
+ ...ae(e, s)
99
+ })),
100
+ { name: "NotebookStore" }
101
+ )
102
+ );
103
+ }
104
+ const $ = J(null);
105
+ function oe({
106
+ children: t,
107
+ initialConfig: e
108
+ }) {
109
+ const s = C(null);
110
+ if (!s.current) {
111
+ const c = ce();
112
+ e && c.getState().load(e), s.current = c;
113
+ }
114
+ return /* @__PURE__ */ a($.Provider, { value: s.current, children: t });
115
+ }
116
+ function k(t) {
117
+ const e = H($);
118
+ if (!e)
119
+ throw new Error("useNotebookStore must be used within NotebookStoreProvider");
120
+ return G(e, t);
121
+ }
122
+ const re = (t) => t.blocks, Ee = (t) => t.messages, Re = (t) => t.isStreaming, Be = (t) => t.sessionId, Le = (t) => t.inputValue, ne = (t) => ({
123
+ messages: t.messages,
124
+ isStreaming: t.isStreaming,
125
+ inputValue: t.inputValue
126
+ }), de = (t) => ({
127
+ addMessage: t.addMessage,
128
+ appendToLastAssistantMessage: t.appendToLastAssistantMessage,
129
+ addToolCallToLastAssistant: t.addToolCallToLastAssistant,
130
+ updateLastToolCall: t.updateLastToolCall,
131
+ setIsStreaming: t.setIsStreaming,
132
+ setInputValue: t.setInputValue,
133
+ setSessionId: t.setSessionId
134
+ }), le = (t) => ({
135
+ addBlock: t.addBlock,
136
+ removeBlock: t.removeBlock,
137
+ moveBlock: t.moveBlock
138
+ }), ie = B.memo(function({
139
+ block: e,
140
+ onRemove: s,
141
+ onMoveUp: c,
142
+ onMoveDown: o,
143
+ isFirst: r,
144
+ isLast: n
145
+ }) {
146
+ return /* @__PURE__ */ g("div", { className: "dc:group dc:relative dc:mb-4", children: [
147
+ /* @__PURE__ */ g("div", { className: "dc:absolute dc:right-2 dc:top-2 dc:z-10 dc:flex dc:gap-1 dc:opacity-0 dc:group-hover:opacity-100 dc:transition-opacity", children: [
148
+ !r && /* @__PURE__ */ a(
149
+ "button",
150
+ {
151
+ onClick: () => c(e.id),
152
+ className: "dc:p-1 dc:rounded dc:text-xs bg-dc-surface text-dc-text-secondary dc:hover:opacity-80 border-dc-border dc:border",
153
+ title: "Move up",
154
+ children: "▲"
155
+ }
156
+ ),
157
+ !n && /* @__PURE__ */ a(
158
+ "button",
159
+ {
160
+ onClick: () => o(e.id),
161
+ className: "dc:p-1 dc:rounded dc:text-xs bg-dc-surface text-dc-text-secondary dc:hover:opacity-80 border-dc-border dc:border",
162
+ title: "Move down",
163
+ children: "▼"
164
+ }
165
+ ),
166
+ /* @__PURE__ */ a(
167
+ "button",
168
+ {
169
+ onClick: () => s(e.id),
170
+ className: "dc:p-1 dc:rounded dc:text-xs text-dc-error dc:hover:opacity-80 bg-dc-surface border-dc-border dc:border",
171
+ title: "Remove",
172
+ children: "✕"
173
+ }
174
+ )
175
+ ] }),
176
+ e.title && /* @__PURE__ */ a("h4", { className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2 dc:px-1", children: e.title }),
177
+ /* @__PURE__ */ a("div", { className: "dc:rounded-lg dc:overflow-hidden border-dc-border dc:border bg-dc-surface", children: /* @__PURE__ */ a(
178
+ q,
179
+ {
180
+ query: e.query,
181
+ chartType: e.chartType,
182
+ chartConfig: e.chartConfig,
183
+ displayConfig: e.displayConfig,
184
+ height: 400,
185
+ eagerLoad: !0
186
+ }
187
+ ) })
188
+ ] });
189
+ }), ue = {
190
+ overrides: {
191
+ h1: { props: { className: "dc:text-lg dc:font-bold text-dc-text dc:mb-2 dc:mt-3" } },
192
+ h2: { props: { className: "dc:text-base dc:font-semibold text-dc-text dc:mb-2 dc:mt-3" } },
193
+ h3: { props: { className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2 dc:mt-3" } },
194
+ p: { props: { className: "dc:text-sm dc:leading-relaxed text-dc-text dc:mb-2" } },
195
+ strong: { props: { className: "dc:font-semibold" } },
196
+ a: { props: { className: "text-dc-accent dc:hover:underline", target: "_blank", rel: "noopener noreferrer" } },
197
+ code: { props: { className: "dc:px-1 dc:py-0.5 dc:rounded dc:text-xs bg-dc-surface-secondary text-dc-accent dc:font-mono" } },
198
+ pre: { props: { className: "dc:rounded-lg dc:p-3 dc:my-2 dc:overflow-x-auto dc:text-xs bg-dc-surface-secondary text-dc-text dc:font-mono" } },
199
+ ul: { props: { className: "dc:list-disc dc:ml-5 dc:mb-2 dc:text-sm text-dc-text dc:space-y-1" } },
200
+ ol: { props: { className: "dc:list-decimal dc:ml-5 dc:mb-2 dc:text-sm text-dc-text dc:space-y-1" } },
201
+ li: { props: { className: "dc:text-sm text-dc-text" } },
202
+ hr: { props: { className: "dc:my-3 border-dc-border" } },
203
+ 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" } },
204
+ table: { props: { className: "dc:w-full dc:border-collapse dc:my-2 dc:text-sm" } },
205
+ thead: { props: { className: "bg-dc-surface-secondary" } },
206
+ 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" } },
207
+ td: { props: { className: "dc:px-3 dc:py-2 dc:text-sm text-dc-text border-dc-border dc:border-b" } },
208
+ tr: { props: { className: "dc:hover:opacity-80" } }
209
+ }
210
+ }, me = B.memo(function({
211
+ block: e,
212
+ onRemove: s,
213
+ onMoveUp: c,
214
+ onMoveDown: o,
215
+ isFirst: r,
216
+ isLast: n
217
+ }) {
218
+ return /* @__PURE__ */ g("div", { className: "dc:group dc:relative dc:mb-4", children: [
219
+ /* @__PURE__ */ g("div", { className: "dc:absolute dc:right-2 dc:top-2 dc:z-10 dc:flex dc:gap-1 dc:opacity-0 dc:group-hover:opacity-100 dc:transition-opacity", children: [
220
+ !r && /* @__PURE__ */ a(
221
+ "button",
222
+ {
223
+ onClick: () => c(e.id),
224
+ className: "dc:p-1 dc:rounded dc:text-xs bg-dc-surface text-dc-text-secondary dc:hover:opacity-80 border-dc-border dc:border",
225
+ title: "Move up",
226
+ children: "▲"
227
+ }
228
+ ),
229
+ !n && /* @__PURE__ */ a(
230
+ "button",
231
+ {
232
+ onClick: () => o(e.id),
233
+ className: "dc:p-1 dc:rounded dc:text-xs bg-dc-surface text-dc-text-secondary dc:hover:opacity-80 border-dc-border dc:border",
234
+ title: "Move down",
235
+ children: "▼"
236
+ }
237
+ ),
238
+ /* @__PURE__ */ a(
239
+ "button",
240
+ {
241
+ onClick: () => s(e.id),
242
+ className: "dc:p-1 dc:rounded dc:text-xs text-dc-error dc:hover:opacity-80 bg-dc-surface border-dc-border dc:border",
243
+ title: "Remove",
244
+ children: "✕"
245
+ }
246
+ )
247
+ ] }),
248
+ e.title && /* @__PURE__ */ a("h4", { className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2 dc:px-1", children: e.title }),
249
+ /* @__PURE__ */ a("div", { className: "dc:rounded-lg dc:p-4 bg-dc-surface border-dc-border dc:border", children: /* @__PURE__ */ a(ee, { options: ue, children: e.content }) })
250
+ ] });
251
+ }), pe = B.memo(function() {
252
+ const e = k(re), { removeBlock: s, moveBlock: c } = k(V(le)), o = C(null), r = C(e.length);
253
+ Q(() => {
254
+ e.length > r.current && o.current?.scrollIntoView({ behavior: "smooth" }), r.current = e.length;
255
+ }, [e.length]);
256
+ const n = f((l) => s(l), [s]), i = f((l) => c(l, "up"), [c]), m = f((l) => c(l, "down"), [c]);
257
+ return e.length === 0 ? /* @__PURE__ */ a("div", { className: "dc:flex dc:items-center dc:justify-center dc:h-full", children: /* @__PURE__ */ g("div", { className: "dc:text-center dc:max-w-sm dc:px-6", children: [
258
+ /* @__PURE__ */ a("div", { className: "dc:text-4xl dc:mb-4 dc:opacity-30", children: "📊" }),
259
+ /* @__PURE__ */ a("h3", { className: "dc:text-base dc:font-semibold text-dc-text dc:mb-2", children: "Your notebook is empty" }),
260
+ /* @__PURE__ */ a("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." })
261
+ ] }) }) : /* @__PURE__ */ g("div", { className: "dc:h-full dc:overflow-y-auto dc:p-4", children: [
262
+ e.map((l, h) => {
263
+ const y = h === 0, u = h === e.length - 1;
264
+ return l.type === "portlet" ? /* @__PURE__ */ a(
265
+ ie,
266
+ {
267
+ block: l,
268
+ onRemove: n,
269
+ onMoveUp: i,
270
+ onMoveDown: m,
271
+ isFirst: y,
272
+ isLast: u
273
+ },
274
+ l.id
275
+ ) : l.type === "markdown" ? /* @__PURE__ */ a(
276
+ me,
277
+ {
278
+ block: l,
279
+ onRemove: n,
280
+ onMoveUp: i,
281
+ onMoveDown: m,
282
+ isFirst: y,
283
+ isLast: u
284
+ },
285
+ l.id
286
+ ) : null;
287
+ }),
288
+ /* @__PURE__ */ a("div", { ref: o })
289
+ ] });
290
+ });
291
+ function he(t) {
292
+ const {
293
+ agentEndpoint: e,
294
+ agentApiKey: s,
295
+ onAddPortlet: c,
296
+ onAddMarkdown: o,
297
+ onTextDelta: r,
298
+ onToolStart: n,
299
+ onToolResult: i,
300
+ onTurnComplete: m,
301
+ onDone: l,
302
+ onError: h
303
+ } = t, { cubeApi: y } = te(), u = C(null), [b, v] = _(!1), A = f(async (S, x) => {
304
+ function N(p) {
305
+ switch (p.type) {
306
+ case "text_delta":
307
+ r(p.data);
308
+ break;
309
+ case "tool_use_start":
310
+ n(p.data.id, p.data.name, p.data.input);
311
+ break;
312
+ case "tool_use_result":
313
+ i(p.data.id, p.data.name, p.data.result);
314
+ break;
315
+ case "add_portlet":
316
+ c({
317
+ ...p.data,
318
+ type: "portlet"
319
+ });
320
+ break;
321
+ case "add_markdown":
322
+ o({
323
+ ...p.data,
324
+ type: "markdown"
325
+ });
326
+ break;
327
+ case "turn_complete":
328
+ m?.();
329
+ break;
330
+ case "done":
331
+ l(p.data.sessionId);
332
+ break;
333
+ case "error":
334
+ h(p.data.message);
335
+ break;
336
+ }
337
+ }
338
+ u.current && u.current.abort();
339
+ const D = new AbortController();
340
+ u.current = D, v(!0);
341
+ try {
342
+ const p = y.apiUrl || "/cubejs-api/v1", w = e || `${p}/agent/chat`, T = {
343
+ "Content-Type": "application/json",
344
+ ...y.headers
345
+ };
346
+ s && (T["X-Agent-Api-Key"] = s);
347
+ const I = await fetch(w, {
348
+ method: "POST",
349
+ headers: T,
350
+ credentials: y.credentials ?? "include",
351
+ body: JSON.stringify({
352
+ message: S,
353
+ ...x ? { sessionId: x } : {}
354
+ }),
355
+ signal: D.signal
356
+ });
357
+ if (!I.ok) {
358
+ const d = await I.json().catch(() => ({}));
359
+ throw new Error(d.error || `Agent request failed: ${I.status}`);
360
+ }
361
+ if (!I.body)
362
+ throw new Error("No response body received");
363
+ const F = I.body.getReader(), P = new TextDecoder();
364
+ let E = "";
365
+ for (; ; ) {
366
+ const { done: d, value: R } = await F.read();
367
+ if (d) break;
368
+ E += P.decode(R, { stream: !0 });
369
+ const M = E.split(`
370
+
371
+ `);
372
+ E = M.pop() || "";
373
+ for (const U of M) {
374
+ const z = U.trim().split(`
375
+ `);
376
+ for (const K of z)
377
+ if (K.startsWith("data: "))
378
+ try {
379
+ const O = JSON.parse(K.slice(6));
380
+ N(O);
381
+ } catch {
382
+ }
383
+ }
384
+ }
385
+ if (E.trim()) {
386
+ const d = E.trim().split(`
387
+ `);
388
+ for (const R of d)
389
+ if (R.startsWith("data: "))
390
+ try {
391
+ const M = JSON.parse(R.slice(6));
392
+ N(M);
393
+ } catch {
394
+ }
395
+ }
396
+ } catch (p) {
397
+ p.name !== "AbortError" && h(p instanceof Error ? p.message : "Stream failed");
398
+ } finally {
399
+ v(!1), u.current = null;
400
+ }
401
+ }, [y, e, s, c, o, r, n, i, m, l, h]), L = f(() => {
402
+ u.current && (u.current.abort(), u.current = null, v(!1));
403
+ }, []);
404
+ return {
405
+ sendMessage: A,
406
+ isStreaming: b,
407
+ abort: L
408
+ };
409
+ }
410
+ function fe(t) {
411
+ const e = [];
412
+ let s = t, c = 0;
413
+ for (; s; ) {
414
+ const o = s.match(/^(.*?)`([^`]+)`(.*)$/);
415
+ if (o) {
416
+ const [, n, i, m] = o;
417
+ n && e.push(/* @__PURE__ */ a("span", { children: n }, c++)), e.push(
418
+ /* @__PURE__ */ a("code", { className: "dc:px-1 dc:py-0.5 dc:rounded dc:text-xs bg-dc-surface dc:font-mono", children: i }, c++)
419
+ ), s = m;
420
+ continue;
421
+ }
422
+ const r = s.match(/^(.*?)\*\*([^*]+)\*\*(.*)$/);
423
+ if (r) {
424
+ const [, n, i, m] = r;
425
+ n && e.push(/* @__PURE__ */ a("span", { children: n }, c++)), e.push(/* @__PURE__ */ a("strong", { className: "dc:font-semibold", children: i }, c++)), s = m;
426
+ continue;
427
+ }
428
+ e.push(/* @__PURE__ */ a("span", { children: s }, c));
429
+ break;
430
+ }
431
+ return e;
432
+ }
433
+ const be = {
434
+ discover_cubes: "Discovering cubes",
435
+ get_cube_metadata: "Reading metadata",
436
+ execute_query: "Executing query",
437
+ add_portlet: "Adding visualization",
438
+ add_markdown: "Adding explanation"
439
+ };
440
+ function ge({ toolCall: t }) {
441
+ const [e, s] = _(!1), c = be[t.name] || t.name, o = t.status === "running";
442
+ return /* @__PURE__ */ g("div", { className: "dc:my-1 dc:text-xs", children: [
443
+ /* @__PURE__ */ g(
444
+ "button",
445
+ {
446
+ onClick: () => s(!e),
447
+ className: "dc:flex dc:items-center dc:gap-1.5 text-dc-text-secondary dc:hover:opacity-80 dc:transition-opacity",
448
+ children: [
449
+ o ? /* @__PURE__ */ a("span", { className: "dc:inline-block dc:w-3 dc:h-3 dc:border-2 border-dc-accent dc:border-t-transparent dc:rounded-full dc:animate-spin" }) : /* @__PURE__ */ a("span", { className: "dc:text-xs", children: t.status === "error" ? "✗" : "✓" }),
450
+ /* @__PURE__ */ g("span", { children: [
451
+ c,
452
+ o ? "..." : ""
453
+ ] }),
454
+ !o && /* @__PURE__ */ a("span", { className: "dc:text-[10px] dc:opacity-60", children: e ? "▲" : "▼" })
455
+ ]
456
+ }
457
+ ),
458
+ e && t.result != null && /* @__PURE__ */ a("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) })
459
+ ] });
460
+ }
461
+ const xe = B.memo(function({ message: e }) {
462
+ const s = e.role === "user", c = !!e.content?.trim(), o = e.toolCalls && e.toolCalls.length > 0;
463
+ return !s && !c && !o ? null : /* @__PURE__ */ a("div", { className: `dc:flex dc:mb-3 ${s ? "dc:justify-end" : "dc:justify-start"}`, children: /* @__PURE__ */ g(
464
+ "div",
465
+ {
466
+ className: `dc:max-w-[85%] dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm ${s ? "bg-dc-accent text-dc-accent-text dc:rounded-br-sm" : "bg-dc-surface-secondary text-dc-text dc:rounded-bl-sm"}`,
467
+ children: [
468
+ c && /* @__PURE__ */ a("div", { className: "dc:whitespace-pre-wrap dc:break-words", children: s ? e.content : fe(e.content) }),
469
+ o && /* @__PURE__ */ a("div", { className: c ? "dc:mt-1 dc:border-t dc:border-current dc:border-opacity-10 dc:pt-1" : "", children: e.toolCalls.map((r, n) => /* @__PURE__ */ a(ge, { toolCall: r }, r.id || n)) })
470
+ ]
471
+ }
472
+ ) });
473
+ }), ye = B.memo(function({
474
+ value: e,
475
+ onChange: s,
476
+ onSend: c,
477
+ onStop: o,
478
+ onContinue: r,
479
+ isStreaming: n = !1,
480
+ showContinue: i = !1,
481
+ disabled: m = !1,
482
+ placeholder: l = "Ask about your data..."
483
+ }) {
484
+ const h = C(null);
485
+ Q(() => {
486
+ const u = h.current;
487
+ u && (u.style.height = "auto", u.style.height = `${Math.min(u.scrollHeight, 150)}px`);
488
+ }, [e]);
489
+ const y = f(
490
+ (u) => {
491
+ u.key === "Enter" && !u.shiftKey && (u.preventDefault(), !m && e.trim() && c());
492
+ },
493
+ [m, e, c]
494
+ );
495
+ return /* @__PURE__ */ g("div", { className: "dc:flex dc:gap-2 dc:items-end dc:p-3 border-dc-border dc:border-t", children: [
496
+ /* @__PURE__ */ a(
497
+ "textarea",
498
+ {
499
+ ref: h,
500
+ value: e,
501
+ onChange: (u) => s(u.target.value),
502
+ onKeyDown: y,
503
+ placeholder: l,
504
+ disabled: m,
505
+ rows: 1,
506
+ 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"
507
+ }
508
+ ),
509
+ n ? /* @__PURE__ */ a(
510
+ "button",
511
+ {
512
+ onClick: o,
513
+ 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",
514
+ children: "Stop"
515
+ }
516
+ ) : /* @__PURE__ */ g(W, { children: [
517
+ i && !e.trim() && /* @__PURE__ */ a(
518
+ "button",
519
+ {
520
+ onClick: () => {
521
+ r?.(), h.current?.focus();
522
+ },
523
+ 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",
524
+ children: "Continue"
525
+ }
526
+ ),
527
+ /* @__PURE__ */ a(
528
+ "button",
529
+ {
530
+ onClick: c,
531
+ disabled: m || !e.trim(),
532
+ 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",
533
+ children: "Send"
534
+ }
535
+ )
536
+ ] })
537
+ ] });
538
+ }), ve = B.memo(function({
539
+ agentEndpoint: e,
540
+ agentApiKey: s,
541
+ onClear: c
542
+ }) {
543
+ const o = C(null), r = C(!1), { messages: n, isStreaming: i, inputValue: m } = k(V(ne)), {
544
+ addMessage: l,
545
+ appendToLastAssistantMessage: h,
546
+ addToolCallToLastAssistant: y,
547
+ updateLastToolCall: u,
548
+ setIsStreaming: b,
549
+ setInputValue: v,
550
+ setSessionId: A
551
+ } = k(V(de)), L = k((d) => d.sessionId), S = k((d) => d.addBlock), x = k((d) => d.reset), N = f(() => {
552
+ r.current && (r.current = !1, l({
553
+ id: `msg-${Date.now()}`,
554
+ role: "assistant",
555
+ content: "",
556
+ toolCalls: [],
557
+ timestamp: Date.now()
558
+ }));
559
+ }, [l]), D = C(n.length);
560
+ Q(() => {
561
+ n.length > D.current && o.current?.scrollIntoView({ behavior: "smooth" }), D.current = n.length;
562
+ }, [n]);
563
+ const { sendMessage: p, abort: w } = he({
564
+ agentEndpoint: e,
565
+ agentApiKey: s,
566
+ onTextDelta: f((d) => {
567
+ N(), h(d);
568
+ }, [N, h]),
569
+ onToolStart: f((d, R, M) => {
570
+ N(), y({ id: d, name: R, input: M, status: "running" });
571
+ }, [N, y]),
572
+ onToolResult: f((d, R, M) => {
573
+ u({ id: d, status: "complete", result: M });
574
+ }, [u]),
575
+ onAddPortlet: f((d) => {
576
+ S(d);
577
+ }, [S]),
578
+ onAddMarkdown: f((d) => {
579
+ S(d);
580
+ }, [S]),
581
+ onTurnComplete: f(() => {
582
+ r.current = !0;
583
+ }, []),
584
+ onDone: f((d) => {
585
+ r.current = !1, A(d), b(!1);
586
+ }, [A, b]),
587
+ onError: f((d) => {
588
+ N(), h(`
589
+
590
+ Error: ${d}`), b(!1);
591
+ }, [N, h, b])
592
+ }), T = f((d) => {
593
+ !d || i || (r.current = !1, l({
594
+ id: `msg-${Date.now()}`,
595
+ role: "user",
596
+ content: d,
597
+ timestamp: Date.now()
598
+ }), l({
599
+ id: `msg-${Date.now() + 1}`,
600
+ role: "assistant",
601
+ content: "",
602
+ toolCalls: [],
603
+ timestamp: Date.now()
604
+ }), v(""), b(!0), p(d, L));
605
+ }, [i, l, v, b, p, L]), I = f(() => {
606
+ T(m.trim());
607
+ }, [m, T]), F = f(() => {
608
+ w(), b(!1);
609
+ }, [w, b]), P = f(() => {
610
+ v("");
611
+ }, [v]), E = f(() => {
612
+ w(), b(!1), x(), c?.();
613
+ }, [w, b, x, c]);
614
+ return /* @__PURE__ */ g("div", { className: "dc:flex dc:flex-col dc:h-full bg-dc-surface", children: [
615
+ /* @__PURE__ */ g("div", { className: "dc:flex dc:items-center dc:justify-between dc:px-4 dc:py-3 border-dc-border dc:border-b", children: [
616
+ /* @__PURE__ */ a("h3", { className: "dc:text-sm dc:font-semibold text-dc-text", children: "AI Assistant" }),
617
+ n.length > 0 && /* @__PURE__ */ a(
618
+ "button",
619
+ {
620
+ onClick: E,
621
+ disabled: i,
622
+ className: "dc:text-xs dc:px-2 dc:py-1 dc:rounded text-dc-text-secondary dc:hover:opacity-80 dc:disabled:opacity-40",
623
+ title: "Clear notebook and chat",
624
+ children: "Clear"
625
+ }
626
+ )
627
+ ] }),
628
+ /* @__PURE__ */ g("div", { className: "dc:flex-1 dc:overflow-y-auto dc:px-4 dc:py-3", children: [
629
+ n.length === 0 ? /* @__PURE__ */ a(Ce, {}) : n.map((d) => /* @__PURE__ */ a(xe, { message: d }, d.id)),
630
+ /* @__PURE__ */ a("div", { ref: o })
631
+ ] }),
632
+ /* @__PURE__ */ a(
633
+ ye,
634
+ {
635
+ value: m,
636
+ onChange: v,
637
+ onSend: I,
638
+ onStop: F,
639
+ onContinue: P,
640
+ isStreaming: i,
641
+ showContinue: !i && n.length > 0
642
+ }
643
+ )
644
+ ] });
645
+ });
646
+ function Ce() {
647
+ return /* @__PURE__ */ a("div", { className: "dc:flex dc:items-center dc:justify-center dc:h-full", children: /* @__PURE__ */ g("div", { className: "dc:text-center dc:max-w-xs", children: [
648
+ /* @__PURE__ */ a("div", { className: "dc:text-lg dc:font-semibold text-dc-text dc:mb-2", children: "Data Analysis Assistant" }),
649
+ /* @__PURE__ */ a("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." }),
650
+ /* @__PURE__ */ g("div", { className: "dc:space-y-2 dc:text-xs text-dc-text-muted", children: [
651
+ /* @__PURE__ */ a("p", { children: '"Show me employee productivity trends"' }),
652
+ /* @__PURE__ */ a("p", { children: '"What are the top departments by headcount?"' }),
653
+ /* @__PURE__ */ a("p", { children: '"Compare revenue across product categories"' })
654
+ ] })
655
+ ] }) });
656
+ }
657
+ function Ne({
658
+ agentEndpoint: t,
659
+ agentApiKey: e,
660
+ onSave: s,
661
+ onDirtyStateChange: c,
662
+ className: o
663
+ }) {
664
+ const [r, n] = _(60), i = C(null), m = C(!1), l = k((x) => x.blocks.length), h = k((x) => x.messages.length), y = k((x) => x.save), u = C({ blockCount: l, msgCount: h });
665
+ Q(() => {
666
+ const x = l !== u.current.blockCount || h !== u.current.msgCount;
667
+ c?.(x);
668
+ }, [l, h, c]);
669
+ const b = C(), v = C(s);
670
+ v.current = s;
671
+ const A = C(l > 0 || h > 0);
672
+ Q(() => {
673
+ if ((l > 0 || h > 0) && (A.current = !0), !(!v.current || !A.current))
674
+ return b.current && clearTimeout(b.current), b.current = setTimeout(() => {
675
+ const x = y();
676
+ v.current?.(x);
677
+ }, 1e3), () => {
678
+ b.current && clearTimeout(b.current);
679
+ };
680
+ }, [l, h, y]);
681
+ const L = f(() => {
682
+ v.current && (b.current && clearTimeout(b.current), v.current({ blocks: [], messages: [] }));
683
+ }, []), S = f((x) => {
684
+ x.preventDefault(), m.current = !0;
685
+ const N = (p) => {
686
+ if (!m.current || !i.current) return;
687
+ const w = i.current.getBoundingClientRect(), T = (p.clientX - w.left) / w.width * 100;
688
+ n(Math.min(Math.max(T, 30), 80));
689
+ }, D = () => {
690
+ m.current = !1, document.removeEventListener("mousemove", N), document.removeEventListener("mouseup", D);
691
+ };
692
+ document.addEventListener("mousemove", N), document.addEventListener("mouseup", D);
693
+ }, []);
694
+ return /* @__PURE__ */ g(
695
+ "div",
696
+ {
697
+ ref: i,
698
+ className: `dc:flex dc:h-full dc:w-full dc:overflow-hidden bg-dc-surface-secondary ${o || ""}`,
699
+ children: [
700
+ /* @__PURE__ */ a(
701
+ "div",
702
+ {
703
+ className: "dc:h-full dc:overflow-hidden",
704
+ style: { width: `${r}%` },
705
+ children: /* @__PURE__ */ a(pe, {})
706
+ }
707
+ ),
708
+ /* @__PURE__ */ a(
709
+ "div",
710
+ {
711
+ 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",
712
+ onMouseDown: S
713
+ }
714
+ ),
715
+ /* @__PURE__ */ a(
716
+ "div",
717
+ {
718
+ className: "dc:h-full dc:overflow-hidden",
719
+ style: { width: `${100 - r}%` },
720
+ children: /* @__PURE__ */ a(
721
+ ve,
722
+ {
723
+ agentEndpoint: t,
724
+ agentApiKey: e,
725
+ onClear: L
726
+ }
727
+ )
728
+ }
729
+ )
730
+ ]
731
+ }
732
+ );
733
+ }
734
+ const Qe = B.memo(function({
735
+ config: e,
736
+ ...s
737
+ }) {
738
+ return /* @__PURE__ */ a(oe, { initialConfig: e, children: /* @__PURE__ */ a(Ne, { ...s }) });
739
+ });
740
+ function Fe() {
741
+ return /* @__PURE__ */ a("div", { children: "Analytics Page - Coming in Phase 4" });
742
+ }
743
+ const ke = se("segment");
744
+ function Pe({
745
+ className: t = ""
23
746
  }) {
24
- return /* @__PURE__ */ e(
747
+ return /* @__PURE__ */ a(
25
748
  "div",
26
749
  {
27
- className: `dc:flex dc:items-center dc:justify-center bg-dc-bg-secondary ${a}`,
28
- children: /* @__PURE__ */ s("div", { className: "dc:text-center", children: [
29
- /* @__PURE__ */ e(
30
- r,
750
+ className: `dc:flex dc:items-center dc:justify-center bg-dc-bg-secondary ${t}`,
751
+ children: /* @__PURE__ */ g("div", { className: "dc:text-center", children: [
752
+ /* @__PURE__ */ a(
753
+ ke,
31
754
  {
32
755
  className: "dc:w-8 dc:h-8 dc:mx-auto dc:mb-2 text-dc-text-muted dc:opacity-50"
33
756
  }
34
757
  ),
35
- /* @__PURE__ */ e("span", { className: "dc:text-xs text-dc-text-muted", children: "No preview" })
758
+ /* @__PURE__ */ a("span", { className: "dc:text-xs text-dc-text-muted", children: "No preview" })
36
759
  ] })
37
760
  }
38
761
  );
39
762
  }
40
763
  export {
41
- d as AnalysisBuilder,
42
- y as AnalyticsDashboard,
43
- o as AnalyticsPage,
44
- g as AnalyticsPortlet,
45
- m as ChartErrorBoundary,
46
- b as ConfirmModal,
47
- na as CubeClient,
48
- ua as CubeProvider,
49
- pe as DEFAULT_ICONS,
50
- C as DashboardEditModal,
51
- h as DashboardGrid,
52
- f as DashboardStoreProvider,
53
- n as DashboardThumbnailPlaceholder,
54
- p as DrillBreadcrumb,
55
- D as DrillMenu,
56
- Ee as ExecutionPlanPanel,
57
- Le as ExplainAIPanel,
58
- de as LazyChart,
59
- ne as LoadingIndicator,
60
- x as Modal,
61
- S as PortletAnalysisModal,
62
- Q as PortletContainer,
63
- ca as ScrollContainerProvider,
64
- Ya as THEME_PRESETS,
65
- Za as applyTheme,
66
- Oa as buildFunnelConfigFromQueries,
67
- Wa as buildServerFunnelQuery,
68
- da as captureThumbnail,
69
- Pe as compressAndEncode,
70
- ya as createCubeClient,
71
- Aa as createDashboardLayout,
72
- A as createDashboardStore,
73
- M as createDefaultConfig,
74
- F as createDefaultFlowConfig,
75
- v as createDefaultFunnelConfig,
76
- T as createDefaultQueryConfig,
77
- I as createDefaultRetentionConfig,
78
- E as createDefaultWorkspace,
79
- ns as createExplainQueryKey,
80
- va as createFlowQueryKey,
81
- Ta as createFunnelQueryKey,
82
- Be as decodeAndDecompress,
83
- we as detectAsymmetricDateRanges,
84
- Re as detectMeasureCollisions,
85
- Ma as formatChartData,
86
- qa as formatDuration,
87
- Ia as generateQueryLabel,
88
- Ke as generateShareUrl,
89
- Ve as getAvailableBindingKeyDimensions,
90
- ye as getAvailableChartTypes,
91
- Ha as getBindingKeyField,
92
- ke as getBindingKeyLabel,
93
- De as getChartTypeIcon,
94
- Ea as getCombinedFields,
95
- _a as getCubeNameFromQuery,
96
- xe as getFieldTypeIcon,
97
- t as getIcon,
98
- Se as getIconData,
99
- Qe as getIconRegistry,
100
- Ae as getIconsByCategory,
101
- Me as getMeasureTypeIcon,
102
- La as getQueryIndices,
103
- Pa as getQueryLabels,
104
- es as getTheme,
105
- as as getThemeVariable,
106
- ge as getUnavailableChartTypes,
107
- Ne as getValidationSummary,
108
- fs as highlightCodeBlocks,
109
- me as isChartTypeAvailable,
110
- ss as isDarkMode,
111
- L as isFlowConfig,
112
- P as isFunnelConfig,
113
- Ja as isFunnelData,
114
- je as isMinimumFunnelConfigValid,
115
- B as isMultiQuery,
116
- w as isMultiQueryConfig,
117
- Ba as isMultiQueryData,
118
- Ue as isMultiQueryValid,
119
- R as isQueryConfig,
120
- K as isRetentionConfig,
121
- bs as isSankeyData,
122
- Cs as isServerFlowQuery,
123
- V as isServerFunnelQuery,
124
- ze as isShareableSize,
125
- k as isSingleQuery,
126
- ga as isThumbnailCaptureAvailable,
127
- N as isValidAnalysisConfig,
128
- j as isValidAnalysisWorkspace,
129
- be as isValidChartType,
130
- wa as mergeQueryResults,
131
- Ra as mergeResultsByKey,
132
- Ka as mergeResultsConcat,
133
- U as migrateConfig,
134
- z as migrateLegacyPortlet,
135
- Ge as parseShareUrl,
136
- Ce as preloadChart,
137
- he as preloadCharts,
138
- Fe as registerIcons,
139
- ve as resetIcons,
140
- ts as resetTheme,
141
- G as selectAllActions,
142
- Oe as selectBreakdowns,
143
- We as selectChartConfig,
144
- qe as selectCurrentState,
145
- O as selectDebugData,
146
- W as selectDebugDataActions,
147
- q as selectEditModeActions,
148
- H as selectEditModeState,
149
- He as selectFilters,
150
- _e as selectFunnelState,
151
- _ as selectLayoutActions,
152
- J as selectLayoutState,
153
- Je as selectMetrics,
154
- X as selectModalActions,
155
- $ as selectModalState,
156
- Xe as selectMultiQueryState,
157
- Y as selectPortletDebugData,
158
- Z as selectThumbnailDirty,
159
- $e as selectUIState,
160
- Te as setIcon,
161
- rs as setTheme,
162
- is as setThemeVariable,
163
- Xa as transformServerFunnelResult,
164
- Ye as useAnalysisBuilder,
165
- Ze as useAnalysisBuilderStore,
166
- ma as useCubeApi,
167
- ba as useCubeContext,
168
- Ca as useCubeFeatures,
169
- ue as useCubeFieldLabel,
170
- Va as useCubeLoadQuery,
171
- ha as useCubeMeta,
172
- fa as useCubeMetaQuery,
173
- ka as useCubeQuery,
174
- ee as useDashboard,
175
- ae as useDashboardStore,
176
- se as useDashboardStoreApi,
177
- te as useDashboardStoreOptional,
178
- re as useDrillInteraction,
179
- us as useDryRunQueries,
180
- cs as useDryRunQuery,
181
- ie as useElementVisibility,
182
- ds as useExplainAI,
183
- ys as useExplainQuery,
184
- Na as useFlowQuery,
185
- ja as useFunnelQuery,
186
- Ua as useMultiCubeLoadQuery,
187
- gs as useMultiDryRunQueries,
188
- pa as useScrollContainer,
189
- le as useScrollDetection,
190
- Sa as useTheme,
191
- ea as validateBindingKeyExists,
192
- aa as validateBindingKeyForSteps,
193
- sa as validateFunnelConfig,
194
- za as validateMergeKey,
195
- ta as validateMergeKeys,
196
- ra as validateMultiQueryConfig,
197
- ia as validateStepQueries,
198
- la as validateTimeDimensionAlignment,
199
- Da as warnIfScreenshotLibMissing,
200
- ls as watchThemeChanges
764
+ Qe as AgenticNotebook,
765
+ Ke as AnalysisBuilder,
766
+ je as AnalyticsDashboard,
767
+ Fe as AnalyticsPage,
768
+ q as AnalyticsPortlet,
769
+ $e as ChartErrorBoundary,
770
+ Ue as ConfirmModal,
771
+ Ft as CubeClient,
772
+ Pt as CubeProvider,
773
+ rs as DEFAULT_ICONS,
774
+ ze as DashboardEditModal,
775
+ Oe as DashboardGrid,
776
+ qe as DashboardStoreProvider,
777
+ Pe as DashboardThumbnailPlaceholder,
778
+ We as DrillBreadcrumb,
779
+ Je as DrillMenu,
780
+ gs as ExecutionPlanPanel,
781
+ xs as ExplainAIPanel,
782
+ Yt as LazyChart,
783
+ Ht as LoadingIndicator,
784
+ He as Modal,
785
+ oe as NotebookStoreProvider,
786
+ Ge as PortletAnalysisModal,
787
+ Xe as PortletContainer,
788
+ Vt as ScrollContainerProvider,
789
+ Sa as THEME_PRESETS,
790
+ Da as applyTheme,
791
+ ga as buildFunnelConfigFromQueries,
792
+ xa as buildServerFunnelQuery,
793
+ _t as captureThumbnail,
794
+ ys as compressAndEncode,
795
+ Kt as createCubeClient,
796
+ Xs as createDashboardLayout,
797
+ Ye as createDashboardStore,
798
+ Ze as createDefaultConfig,
799
+ et as createDefaultFlowConfig,
800
+ tt as createDefaultFunnelConfig,
801
+ st as createDefaultQueryConfig,
802
+ at as createDefaultRetentionConfig,
803
+ ct as createDefaultWorkspace,
804
+ Qa as createExplainQueryKey,
805
+ ea as createFlowQueryKey,
806
+ ta as createFunnelQueryKey,
807
+ ce as createNotebookStore,
808
+ vs as decodeAndDecompress,
809
+ Cs as detectAsymmetricDateRanges,
810
+ Ns as detectMeasureCollisions,
811
+ Ys as formatChartData,
812
+ ya as formatDuration,
813
+ sa as generateQueryLabel,
814
+ ks as generateShareUrl,
815
+ ws as getAvailableBindingKeyDimensions,
816
+ Zt as getAvailableChartTypes,
817
+ va as getBindingKeyField,
818
+ Ss as getBindingKeyLabel,
819
+ ns as getChartTypeIcon,
820
+ aa as getCombinedFields,
821
+ Ca as getCubeNameFromQuery,
822
+ ds as getFieldTypeIcon,
823
+ se as getIcon,
824
+ ls as getIconData,
825
+ is as getIconRegistry,
826
+ us as getIconsByCategory,
827
+ ms as getMeasureTypeIcon,
828
+ ca as getQueryIndices,
829
+ oa as getQueryLabels,
830
+ Ma as getTheme,
831
+ Aa as getThemeVariable,
832
+ es as getUnavailableChartTypes,
833
+ Ds as getValidationSummary,
834
+ Oa as highlightCodeBlocks,
835
+ ts as isChartTypeAvailable,
836
+ Ta as isDarkMode,
837
+ ot as isFlowConfig,
838
+ rt as isFunnelConfig,
839
+ Na as isFunnelData,
840
+ Ms as isMinimumFunnelConfigValid,
841
+ nt as isMultiQuery,
842
+ dt as isMultiQueryConfig,
843
+ ra as isMultiQueryData,
844
+ As as isMultiQueryValid,
845
+ lt as isQueryConfig,
846
+ it as isRetentionConfig,
847
+ $a as isSankeyData,
848
+ Ua as isServerFlowQuery,
849
+ ut as isServerFunnelQuery,
850
+ Ts as isShareableSize,
851
+ mt as isSingleQuery,
852
+ jt as isThumbnailCaptureAvailable,
853
+ pt as isValidAnalysisConfig,
854
+ ht as isValidAnalysisWorkspace,
855
+ ss as isValidChartType,
856
+ na as mergeQueryResults,
857
+ da as mergeResultsByKey,
858
+ la as mergeResultsConcat,
859
+ ft as migrateConfig,
860
+ bt as migrateLegacyPortlet,
861
+ Is as parseShareUrl,
862
+ as as preloadChart,
863
+ cs as preloadCharts,
864
+ ps as registerIcons,
865
+ hs as resetIcons,
866
+ Ia as resetTheme,
867
+ gt as selectAllActions,
868
+ le as selectBlockActions,
869
+ re as selectBlocks,
870
+ Es as selectBreakdowns,
871
+ Rs as selectChartConfig,
872
+ de as selectChatActions,
873
+ ne as selectChatState,
874
+ Bs as selectCurrentState,
875
+ xt as selectDebugData,
876
+ yt as selectDebugDataActions,
877
+ vt as selectEditModeActions,
878
+ Ct as selectEditModeState,
879
+ Ls as selectFilters,
880
+ Qs as selectFunnelState,
881
+ Le as selectInputValue,
882
+ Re as selectIsStreaming,
883
+ Nt as selectLayoutActions,
884
+ kt as selectLayoutState,
885
+ Ee as selectMessages,
886
+ Fs as selectMetrics,
887
+ wt as selectModalActions,
888
+ St as selectModalState,
889
+ Ps as selectMultiQueryState,
890
+ Dt as selectPortletDebugData,
891
+ Be as selectSessionId,
892
+ Mt as selectThumbnailDirty,
893
+ Vs as selectUIState,
894
+ fs as setIcon,
895
+ Ea as setTheme,
896
+ Ra as setThemeVariable,
897
+ ka as transformServerFunnelResult,
898
+ he as useAgentChat,
899
+ _s as useAnalysisBuilder,
900
+ Ks as useAnalysisBuilderStore,
901
+ te as useCubeApi,
902
+ $t as useCubeContext,
903
+ Ut as useCubeFeatures,
904
+ Gt as useCubeFieldLabel,
905
+ ia as useCubeLoadQuery,
906
+ zt as useCubeMeta,
907
+ Ot as useCubeMetaQuery,
908
+ ua as useCubeQuery,
909
+ At as useDashboard,
910
+ Tt as useDashboardStore,
911
+ It as useDashboardStoreApi,
912
+ Et as useDashboardStoreOptional,
913
+ Rt as useDrillInteraction,
914
+ Fa as useDryRunQueries,
915
+ Pa as useDryRunQuery,
916
+ Bt as useElementVisibility,
917
+ Va as useExplainAI,
918
+ _a as useExplainQuery,
919
+ ma as useFlowQuery,
920
+ pa as useFunnelQuery,
921
+ ha as useMultiCubeLoadQuery,
922
+ Ka as useMultiDryRunQueries,
923
+ k as useNotebookStore,
924
+ qt as useScrollContainer,
925
+ Lt as useScrollDetection,
926
+ Hs as useTheme,
927
+ js as validateBindingKeyExists,
928
+ $s as validateBindingKeyForSteps,
929
+ Us as validateFunnelConfig,
930
+ fa as validateMergeKey,
931
+ zs as validateMergeKeys,
932
+ Os as validateMultiQueryConfig,
933
+ qs as validateStepQueries,
934
+ Ws as validateTimeDimensionAlignment,
935
+ Wt as warnIfScreenshotLibMissing,
936
+ Ba as watchThemeChanges
201
937
  };
202
938
  //# sourceMappingURL=index.js.map