@marimo-team/islands 0.23.11-dev26 → 0.23.11-dev28
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/{chat-ui-Bf2NICxi.js → chat-ui-m1SnDPdw.js} +119 -90
- package/dist/{code-visibility-CPhtKPn4.js → code-visibility-BkNk8VeO.js} +1 -1
- package/dist/main.js +3 -3
- package/dist/{reveal-component-BT7IWgAh.js → reveal-component-C8gBbSKY.js} +1 -1
- package/package.json +1 -1
- package/src/components/chat/chat-display.tsx +5 -0
- package/src/components/chat/chat-panel.tsx +4 -0
- package/src/components/chat/tool-call/tool-call-view.tsx +4 -0
- package/src/components/chat/tool-call/tool-history-row.tsx +26 -5
- package/src/plugins/impl/chat/chat-ui.tsx +1 -0
|
@@ -72,6 +72,17 @@ var Ban = createLucideIcon("ban", [["path", {
|
|
|
72
72
|
}], ["path", {
|
|
73
73
|
d: "m9 11 3 3L22 4",
|
|
74
74
|
key: "1pflzl"
|
|
75
|
+
}]]), CircleSlash = createLucideIcon("circle-slash", [["circle", {
|
|
76
|
+
cx: "12",
|
|
77
|
+
cy: "12",
|
|
78
|
+
r: "10",
|
|
79
|
+
key: "1mglay"
|
|
80
|
+
}], ["line", {
|
|
81
|
+
x1: "9",
|
|
82
|
+
x2: "15",
|
|
83
|
+
y1: "15",
|
|
84
|
+
y2: "9",
|
|
85
|
+
key: "1dfufj"
|
|
75
86
|
}]]), Paperclip = createLucideIcon("paperclip", [["path", {
|
|
76
87
|
d: "m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",
|
|
77
88
|
key: "1miecu"
|
|
@@ -6796,27 +6807,35 @@ var import_compiler_runtime$3 = require_compiler_runtime(), STATUS_LABEL = {
|
|
|
6796
6807
|
"approval-responded": "Awaiting result",
|
|
6797
6808
|
"output-available": "Done",
|
|
6798
6809
|
"output-denied": "Denied"
|
|
6799
|
-
},
|
|
6800
|
-
|
|
6810
|
+
}, PENDING_STATES = /* @__PURE__ */ new Set([
|
|
6811
|
+
"input-streaming",
|
|
6812
|
+
"input-available",
|
|
6813
|
+
"approval-responded"
|
|
6814
|
+
]), StatusIcon = (e18) => {
|
|
6815
|
+
let m = (0, import_compiler_runtime$3.c)(5), { state: h, interrupted: g } = e18;
|
|
6816
|
+
if (g) {
|
|
6817
|
+
let e19;
|
|
6818
|
+
return m[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e19 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CircleSlash, { className: "h-3 w-3 text-muted-foreground" }), m[0] = e19) : e19 = m[0], e19;
|
|
6819
|
+
}
|
|
6801
6820
|
switch (h) {
|
|
6802
6821
|
case "input-streaming":
|
|
6803
6822
|
case "input-available":
|
|
6804
6823
|
case "approval-responded": {
|
|
6805
6824
|
let e19;
|
|
6806
|
-
return m[
|
|
6825
|
+
return m[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e19 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoaderCircle, { className: "h-3 w-3 animate-spin" }), m[1] = e19) : e19 = m[1], e19;
|
|
6807
6826
|
}
|
|
6808
6827
|
case "output-available": {
|
|
6809
6828
|
let e19;
|
|
6810
|
-
return m[
|
|
6829
|
+
return m[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e19 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CircleCheckBig, { className: "h-3 w-3 text-(--grass-11)" }), m[2] = e19) : e19 = m[2], e19;
|
|
6811
6830
|
}
|
|
6812
6831
|
case "output-denied": {
|
|
6813
6832
|
let e19;
|
|
6814
|
-
return m[
|
|
6833
|
+
return m[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e19 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Ban, { className: "h-3 w-3 text-muted-foreground" }), m[3] = e19) : e19 = m[3], e19;
|
|
6815
6834
|
}
|
|
6816
6835
|
default: {
|
|
6817
6836
|
logNever(h);
|
|
6818
6837
|
let e19;
|
|
6819
|
-
return m[
|
|
6838
|
+
return m[4] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e19 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Wrench, { className: "h-3 w-3" }), m[4] = e19) : e19 = m[4], e19;
|
|
6820
6839
|
}
|
|
6821
6840
|
}
|
|
6822
6841
|
};
|
|
@@ -6835,36 +6854,41 @@ function getTriggerToneClass(e18) {
|
|
|
6835
6854
|
}
|
|
6836
6855
|
}
|
|
6837
6856
|
const ToolHistoryRow = (e18) => {
|
|
6838
|
-
let m = (0, import_compiler_runtime$3.c)(
|
|
6839
|
-
m[0]
|
|
6840
|
-
let
|
|
6841
|
-
m[
|
|
6842
|
-
let D;
|
|
6843
|
-
m[4] === g ? D = m[5] : (D = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StatusIcon, { state: g }), m[4] = g, m[5] = D);
|
|
6844
|
-
let O = STATUS_LABEL[g], k;
|
|
6845
|
-
m[6] === h ? k = m[7] : (k = formatToolName(h), m[6] = h, m[7] = k);
|
|
6846
|
-
let A;
|
|
6847
|
-
m[8] === k ? A = m[9] : (A = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", {
|
|
6848
|
-
className: "font-mono text-xs",
|
|
6849
|
-
children: k
|
|
6850
|
-
}), m[8] = k, m[9] = A);
|
|
6857
|
+
let m = (0, import_compiler_runtime$3.c)(34), { toolName: h, state: g, input: v, result: y, approval: b, index: x, className: S, isActive: w } = e18, T = x === void 0 ? 0 : x, E = w === void 0 ? true : w, D;
|
|
6858
|
+
m[0] !== E || m[1] !== g ? (D = !E && PENDING_STATES.has(g), m[0] = E, m[1] = g, m[2] = D) : D = m[2];
|
|
6859
|
+
let O = D, k = `tool-${T}`, A;
|
|
6860
|
+
m[3] === S ? A = m[4] : (A = cn("w-full", S), m[3] = S, m[4] = A);
|
|
6851
6861
|
let j;
|
|
6852
|
-
m[
|
|
6862
|
+
m[5] !== O || m[6] !== g ? (j = cn("h-6 text-xs border-border shadow-none! ring-0! bg-muted/60 hover:bg-muted py-0 px-2 gap-1 rounded-sm [&[data-state=open]>svg]:rotate-180 hover:no-underline", O ? "text-muted-foreground" : getTriggerToneClass(g)), m[5] = O, m[6] = g, m[7] = j) : j = m[7];
|
|
6863
|
+
let M;
|
|
6864
|
+
m[8] !== O || m[9] !== g ? (M = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StatusIcon, {
|
|
6865
|
+
state: g,
|
|
6866
|
+
interrupted: O
|
|
6867
|
+
}), m[8] = O, m[9] = g, m[10] = M) : M = m[10];
|
|
6868
|
+
let N = O ? "Interrupted" : STATUS_LABEL[g], P;
|
|
6869
|
+
m[11] === h ? P = m[12] : (P = formatToolName(h), m[11] = h, m[12] = P);
|
|
6870
|
+
let F;
|
|
6871
|
+
m[13] === P ? F = m[14] : (F = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", {
|
|
6872
|
+
className: "font-mono text-xs",
|
|
6873
|
+
children: P
|
|
6874
|
+
}), m[13] = P, m[14] = F);
|
|
6875
|
+
let I;
|
|
6876
|
+
m[15] !== F || m[16] !== M || m[17] !== N ? (I = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
6853
6877
|
className: "flex items-center gap-1",
|
|
6854
6878
|
children: [
|
|
6855
|
-
|
|
6856
|
-
|
|
6879
|
+
M,
|
|
6880
|
+
N,
|
|
6857
6881
|
":",
|
|
6858
|
-
|
|
6882
|
+
F
|
|
6859
6883
|
]
|
|
6860
|
-
}), m[
|
|
6861
|
-
let
|
|
6862
|
-
m[
|
|
6863
|
-
className:
|
|
6864
|
-
children:
|
|
6865
|
-
}), m[
|
|
6866
|
-
let
|
|
6867
|
-
m[
|
|
6884
|
+
}), m[15] = F, m[16] = M, m[17] = N, m[18] = I) : I = m[18];
|
|
6885
|
+
let z;
|
|
6886
|
+
m[19] !== I || m[20] !== j ? (z = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AccordionTrigger, {
|
|
6887
|
+
className: j,
|
|
6888
|
+
children: I
|
|
6889
|
+
}), m[19] = I, m[20] = j, m[21] = z) : z = m[21];
|
|
6890
|
+
let B;
|
|
6891
|
+
m[22] !== b || m[23] !== v || m[24] !== y || m[25] !== g ? (B = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AccordionContent, {
|
|
6868
6892
|
className: "py-2 px-2",
|
|
6869
6893
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(HistoryContent, {
|
|
6870
6894
|
state: g,
|
|
@@ -6872,20 +6896,20 @@ const ToolHistoryRow = (e18) => {
|
|
|
6872
6896
|
result: y,
|
|
6873
6897
|
approval: b
|
|
6874
6898
|
})
|
|
6875
|
-
}), m[
|
|
6876
|
-
let
|
|
6877
|
-
m[
|
|
6899
|
+
}), m[22] = b, m[23] = v, m[24] = y, m[25] = g, m[26] = B) : B = m[26];
|
|
6900
|
+
let V;
|
|
6901
|
+
m[27] !== z || m[28] !== B ? (V = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(AccordionItem, {
|
|
6878
6902
|
value: "tool-call",
|
|
6879
6903
|
className: "border-0",
|
|
6880
|
-
children: [
|
|
6881
|
-
}), m[
|
|
6882
|
-
let
|
|
6883
|
-
return m[
|
|
6904
|
+
children: [z, B]
|
|
6905
|
+
}), m[27] = z, m[28] = B, m[29] = V) : V = m[29];
|
|
6906
|
+
let H;
|
|
6907
|
+
return m[30] !== V || m[31] !== k || m[32] !== A ? (H = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Accordion, {
|
|
6884
6908
|
type: "single",
|
|
6885
6909
|
collapsible: true,
|
|
6886
|
-
className:
|
|
6887
|
-
children:
|
|
6888
|
-
},
|
|
6910
|
+
className: A,
|
|
6911
|
+
children: V
|
|
6912
|
+
}, k), m[30] = V, m[31] = k, m[32] = A, m[33] = H) : H = m[33], H;
|
|
6889
6913
|
};
|
|
6890
6914
|
var HistoryContent = (e18) => {
|
|
6891
6915
|
let m = (0, import_compiler_runtime$3.c)(16), { state: h, input: g, result: _, approval: v } = e18;
|
|
@@ -6926,7 +6950,7 @@ var HistoryContent = (e18) => {
|
|
|
6926
6950
|
}
|
|
6927
6951
|
}, import_compiler_runtime$2 = require_compiler_runtime();
|
|
6928
6952
|
const ToolCallView = (e18) => {
|
|
6929
|
-
let m = (0, import_compiler_runtime$2.c)(
|
|
6953
|
+
let m = (0, import_compiler_runtime$2.c)(27), { toolName: h, state: g, result: _, errorText: v, input: y, approval: b, onApprove: x, index: S, className: C, isLive: w, isActive: T } = e18, E = w === void 0 ? true : w, D = T === void 0 ? true : T;
|
|
6930
6954
|
switch (g) {
|
|
6931
6955
|
case "approval-requested": {
|
|
6932
6956
|
if (b != null && x != null) {
|
|
@@ -6940,23 +6964,24 @@ const ToolCallView = (e18) => {
|
|
|
6940
6964
|
}), m[0] = b, m[1] = C, m[2] = y, m[3] = x, m[4] = h, m[5] = e20) : e20 = m[5], e20;
|
|
6941
6965
|
}
|
|
6942
6966
|
let e19;
|
|
6943
|
-
return m[6] !== C || m[7] !== S || m[8] !== y || m[9] !== h ? (e19 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolHistoryRow, {
|
|
6967
|
+
return m[6] !== C || m[7] !== S || m[8] !== y || m[9] !== D || m[10] !== h ? (e19 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolHistoryRow, {
|
|
6944
6968
|
toolName: h,
|
|
6945
6969
|
state: "input-available",
|
|
6946
6970
|
input: y,
|
|
6947
6971
|
index: S,
|
|
6948
|
-
className: C
|
|
6949
|
-
|
|
6972
|
+
className: C,
|
|
6973
|
+
isActive: D
|
|
6974
|
+
}), m[6] = C, m[7] = S, m[8] = y, m[9] = D, m[10] = h, m[11] = e19) : e19 = m[11], e19;
|
|
6950
6975
|
}
|
|
6951
6976
|
case "output-error": {
|
|
6952
6977
|
let e19;
|
|
6953
|
-
return m[
|
|
6978
|
+
return m[12] !== C || m[13] !== v || m[14] !== y || m[15] !== E || m[16] !== h ? (e19 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolErrorCard, {
|
|
6954
6979
|
toolName: h,
|
|
6955
6980
|
input: y,
|
|
6956
6981
|
errorText: v,
|
|
6957
|
-
isLive:
|
|
6982
|
+
isLive: E,
|
|
6958
6983
|
className: C
|
|
6959
|
-
}), m[
|
|
6984
|
+
}), m[12] = C, m[13] = v, m[14] = y, m[15] = E, m[16] = h, m[17] = e19) : e19 = m[17], e19;
|
|
6960
6985
|
}
|
|
6961
6986
|
case "input-streaming":
|
|
6962
6987
|
case "input-available":
|
|
@@ -6964,74 +6989,77 @@ const ToolCallView = (e18) => {
|
|
|
6964
6989
|
case "output-available":
|
|
6965
6990
|
case "output-denied": {
|
|
6966
6991
|
let e19;
|
|
6967
|
-
return m[
|
|
6992
|
+
return m[18] !== b || m[19] !== C || m[20] !== S || m[21] !== y || m[22] !== D || m[23] !== _ || m[24] !== g || m[25] !== h ? (e19 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolHistoryRow, {
|
|
6968
6993
|
toolName: h,
|
|
6969
6994
|
state: g,
|
|
6970
6995
|
input: y,
|
|
6971
6996
|
result: _,
|
|
6972
6997
|
approval: b,
|
|
6973
6998
|
index: S,
|
|
6974
|
-
className: C
|
|
6975
|
-
|
|
6999
|
+
className: C,
|
|
7000
|
+
isActive: D
|
|
7001
|
+
}), m[18] = b, m[19] = C, m[20] = S, m[21] = y, m[22] = D, m[23] = _, m[24] = g, m[25] = h, m[26] = e19) : e19 = m[26], e19;
|
|
6976
7002
|
}
|
|
6977
7003
|
default:
|
|
6978
7004
|
return logNever(g), null;
|
|
6979
7005
|
}
|
|
6980
|
-
}, renderUIMessage = ({ message: e18, isStreamingReasoning: m, isLast: g,
|
|
6981
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: e18.parts.map((e19, m2) =>
|
|
6982
|
-
function
|
|
6983
|
-
if (isToolPart(
|
|
6984
|
-
index:
|
|
6985
|
-
toolName:
|
|
6986
|
-
result:
|
|
6987
|
-
errorText:
|
|
7006
|
+
}, renderUIMessage = ({ message: e18, isStreamingReasoning: m, isLast: g, isActive: _, addToolApprovalResponse: v }) => {
|
|
7007
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: e18.parts.map((e19, m2) => y(e19, m2)) });
|
|
7008
|
+
function y(y2, b) {
|
|
7009
|
+
if (isToolPart(y2)) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolCallView, {
|
|
7010
|
+
index: b,
|
|
7011
|
+
toolName: y2.type,
|
|
7012
|
+
result: y2.output,
|
|
7013
|
+
errorText: y2.state === "output-error" ? y2.errorText : void 0,
|
|
6988
7014
|
className: "my-2",
|
|
6989
|
-
state:
|
|
6990
|
-
input:
|
|
6991
|
-
approval:
|
|
6992
|
-
onApprove:
|
|
6993
|
-
isLive: g
|
|
6994
|
-
|
|
6995
|
-
|
|
6996
|
-
|
|
7015
|
+
state: y2.state,
|
|
7016
|
+
input: y2.input,
|
|
7017
|
+
approval: y2.approval,
|
|
7018
|
+
onApprove: v,
|
|
7019
|
+
isLive: g,
|
|
7020
|
+
isActive: _
|
|
7021
|
+
}, b);
|
|
7022
|
+
if (isDataPart(y2)) return Logger.debug("Found data part", y2), null;
|
|
7023
|
+
switch (y2.type) {
|
|
6997
7024
|
case "text":
|
|
6998
|
-
return
|
|
7025
|
+
return y2.text.includes("<marimo-") ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Fragment, { children: renderHTML({ html: y2.text }) }, b) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MarkdownRenderer, { content: y2.text }, b);
|
|
6999
7026
|
case "reasoning":
|
|
7000
7027
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ReasoningAccordion, {
|
|
7001
|
-
reasoning:
|
|
7002
|
-
index:
|
|
7003
|
-
isStreaming: m && g &&
|
|
7004
|
-
},
|
|
7028
|
+
reasoning: y2.text,
|
|
7029
|
+
index: b,
|
|
7030
|
+
isStreaming: m && g && b === (e18.parts.length || 0) - 1
|
|
7031
|
+
}, b);
|
|
7005
7032
|
case "file":
|
|
7006
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AttachmentRenderer, { attachment:
|
|
7033
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AttachmentRenderer, { attachment: y2 }, b);
|
|
7007
7034
|
case "dynamic-tool":
|
|
7008
7035
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolCallView, {
|
|
7009
|
-
toolName:
|
|
7010
|
-
result:
|
|
7011
|
-
errorText:
|
|
7012
|
-
state:
|
|
7013
|
-
input:
|
|
7014
|
-
approval:
|
|
7015
|
-
onApprove:
|
|
7016
|
-
isLive: g
|
|
7017
|
-
|
|
7036
|
+
toolName: y2.toolName,
|
|
7037
|
+
result: y2.output,
|
|
7038
|
+
errorText: y2.state === "output-error" ? y2.errorText : void 0,
|
|
7039
|
+
state: y2.state,
|
|
7040
|
+
input: y2.input,
|
|
7041
|
+
approval: y2.approval,
|
|
7042
|
+
onApprove: v,
|
|
7043
|
+
isLive: g,
|
|
7044
|
+
isActive: _
|
|
7045
|
+
}, b);
|
|
7018
7046
|
case "source-document":
|
|
7019
7047
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SourceChip, {
|
|
7020
7048
|
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FileText, { className: "h-3 w-3 shrink-0" }),
|
|
7021
|
-
title:
|
|
7022
|
-
subtitle:
|
|
7023
|
-
},
|
|
7049
|
+
title: y2.title,
|
|
7050
|
+
subtitle: y2.filename
|
|
7051
|
+
}, b);
|
|
7024
7052
|
case "source-url":
|
|
7025
7053
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SourceChip, {
|
|
7026
7054
|
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExternalLink, { className: "h-3 w-3 shrink-0" }),
|
|
7027
|
-
title:
|
|
7028
|
-
subtitle:
|
|
7029
|
-
href:
|
|
7030
|
-
},
|
|
7055
|
+
title: y2.title ?? y2.url,
|
|
7056
|
+
subtitle: y2.title ? y2.url : void 0,
|
|
7057
|
+
href: y2.url
|
|
7058
|
+
}, b);
|
|
7031
7059
|
case "step-start":
|
|
7032
7060
|
return null;
|
|
7033
7061
|
default:
|
|
7034
|
-
return logNever(
|
|
7062
|
+
return logNever(y2), null;
|
|
7035
7063
|
}
|
|
7036
7064
|
}
|
|
7037
7065
|
};
|
|
@@ -7735,6 +7763,7 @@ const Chatbot = (e18) => {
|
|
|
7735
7763
|
message: e19,
|
|
7736
7764
|
isStreamingReasoning: B === "streaming",
|
|
7737
7765
|
isLast: g2,
|
|
7766
|
+
isActive: K,
|
|
7738
7767
|
addToolApprovalResponse: g2 ? G : void 0
|
|
7739
7768
|
})
|
|
7740
7769
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -35996,7 +35996,7 @@ ${d}`,
|
|
|
35996
35996
|
return Logger.warn("Failed to get version from mount config"), null;
|
|
35997
35997
|
}
|
|
35998
35998
|
}
|
|
35999
|
-
marimoVersionAtom = atom(getVersionFromMountConfig() || "0.23.11-
|
|
35999
|
+
marimoVersionAtom = atom(getVersionFromMountConfig() || "0.23.11-dev28");
|
|
36000
36000
|
showCodeInRunModeAtom = atom(true);
|
|
36001
36001
|
atom(null);
|
|
36002
36002
|
var import_compiler_runtime = require_compiler_runtime();
|
package/dist/main.js
CHANGED
|
@@ -26,7 +26,7 @@ import { $ as reducer, B as safeExtractSetUIElementMessageBuffers, Bn as CircleA
|
|
|
26
26
|
import { __tla as __tla_1 } from "./chunk-5FQGJX7Z-BbqSm5gU.js";
|
|
27
27
|
import { o as useSize, s as Root$1, u as createLucideIcon } from "./dist-Dk6PV_d3.js";
|
|
28
28
|
import { A as SquareFunction, C as DEFAULT_COLOR_SCHEME, D as SCALE_TYPE_DESCRIPTIONS, E as EMPTY_VALUE$1, O as TIME_UNIT_DESCRIPTIONS, S as DEFAULT_AGGREGATION, T as DEFAULT_TIME_UNIT, _ as AGGREGATION_TYPE_DESCRIPTIONS, a as AGGREGATION_FNS$1, b as COLOR_SCHEMES, c as COLOR_BY_FIELDS, d as NONE_VALUE, f as SELECTABLE_DATA_TYPES, g as TIME_UNITS, h as STRING_AGGREGATION_FNS, i as convertDataTypeToSelectable, j as ChartColumn, k as escapeFieldName, l as COMBINED_TIME_UNITS, m as SORT_TYPES, n as createSpecWithoutData, o as BIN_AGGREGATION, p as SINGLE_TIME_UNITS, r as isFieldSet, s as CHART_TYPES, t as augmentSpecWithData, u as ChartType, v as AGGREGATION_TYPE_ICON, w as DEFAULT_MAX_BINS_FACET, x as COUNT_FIELD, y as CHART_TYPE_ICON } from "./spec-f8-xgaui.js";
|
|
29
|
-
import { $ as contextAwarePanelOpen, $t as $fae977aafc393c5c$export$6b862160d295c8e, A as prettifyRowCount, At as SELECT_COLUMN_ID, B as DatePicker, Bt as TabsContent, C as downloadSizeLimitAtom, Ct as DelayMount, D as ErrorState, Dt as loadTableAndRawData, E as EmptyState, Et as getPageIndexForRow, F as ContextMenuSeparator, Ft as Maps, G as CommandEmpty, Gt as ChartLoadingState, H as Combobox, Ht as TabsTrigger, I as ContextMenuTrigger, It as dateToLocalISODate, J as CommandList, Jt as RenderTextWithLinks, K as CommandInput, Kt as LazyVegaEmbed, L as useInternalStateWithSync, Lt as dateToLocalISODateTime, M as ContextMenu, Mt as toFieldTypes, N as ContextMenuContent, Nt as getMimeValues, O as LoadingState, Ot as loadTableData, P as ContextMenuItem, Pt as isNullishFilter, Q as PANEL_TYPES, Qt as $fae977aafc393c5c$export$588937bcd60ade55, R as useSelectList, Rt as dateToLocalISOTime, S as Filenames, St as ColumnChartSpecModel, T as ColumnPreviewContainer, Tt as usePrevious$1, U as ComboboxItem, Ut as ChartErrorState, V as DateRangePicker, Vt as TabsList, W as Command, Wt as ChartInfoState, X as smartMatch, Xt as HtmlOutput, Y as CommandSeparator, Yt as Kbd, Z as ContextAwarePanelItem, Zt as EmotionCacheProvider, _ as ADD_PRINTING_CLASS, _t as NAMELESS_COLUMN_PREFIX, an as Ellipsis, at as Toggle, b as downloadHTMLAsImage, bt as renderCellValue, c as Slide, cn as ChevronsUpDown, d as RadioGroupItem, dn as ChevronsDownUp, dt as Table, en as TextWrap, et as contextAwarePanelOwner, f as JsonOutput, fn as ChevronLeft, ft as TableBody, g as InstallPackageButton, gt as TableRow, h as DataTable, ht as TableHeader, it as slotsController, j as getColumnCountForDisplay, jt as TOO_MANY_ROWS, k as prettifyRowColumnCount, kt as INDEX_COLUMN_NAME, l as Switch, ln as ChevronsRight, lt as Fill, m as OutputRenderer, mt as TableHead, n as marimoVersionAtom, nn as Funnel, nt as isCellAwareAtom, o as SLIDE_TYPE_OPTIONS_BY_VALUE, on as Download, p as OutputArea, pn as ArrowDownWideNarrow, pt as TableCell, q as CommandItem, qt as useOverflowDetection, r as showCodeInRunModeAtom, rn as EyeOff, rt as SlotNames, sn as Code, t as useNotebookCodeAvailable, tn as GripHorizontal, tt as contextAwarePanelType, u as RadioGroup, un as ChevronsLeft, ut as Provider$1, v as downloadBlob, vt as generateColumns, w as ColumnName, wt as useIntersectionObserver, x as Progress, xt as ColumnChartContext, y as downloadByURL, yt as inferFieldTypes, z as CompactChipRow, zt as Tabs, __tla as __tla_2 } from "./code-visibility-
|
|
29
|
+
import { $ as contextAwarePanelOpen, $t as $fae977aafc393c5c$export$6b862160d295c8e, A as prettifyRowCount, At as SELECT_COLUMN_ID, B as DatePicker, Bt as TabsContent, C as downloadSizeLimitAtom, Ct as DelayMount, D as ErrorState, Dt as loadTableAndRawData, E as EmptyState, Et as getPageIndexForRow, F as ContextMenuSeparator, Ft as Maps, G as CommandEmpty, Gt as ChartLoadingState, H as Combobox, Ht as TabsTrigger, I as ContextMenuTrigger, It as dateToLocalISODate, J as CommandList, Jt as RenderTextWithLinks, K as CommandInput, Kt as LazyVegaEmbed, L as useInternalStateWithSync, Lt as dateToLocalISODateTime, M as ContextMenu, Mt as toFieldTypes, N as ContextMenuContent, Nt as getMimeValues, O as LoadingState, Ot as loadTableData, P as ContextMenuItem, Pt as isNullishFilter, Q as PANEL_TYPES, Qt as $fae977aafc393c5c$export$588937bcd60ade55, R as useSelectList, Rt as dateToLocalISOTime, S as Filenames, St as ColumnChartSpecModel, T as ColumnPreviewContainer, Tt as usePrevious$1, U as ComboboxItem, Ut as ChartErrorState, V as DateRangePicker, Vt as TabsList, W as Command, Wt as ChartInfoState, X as smartMatch, Xt as HtmlOutput, Y as CommandSeparator, Yt as Kbd, Z as ContextAwarePanelItem, Zt as EmotionCacheProvider, _ as ADD_PRINTING_CLASS, _t as NAMELESS_COLUMN_PREFIX, an as Ellipsis, at as Toggle, b as downloadHTMLAsImage, bt as renderCellValue, c as Slide, cn as ChevronsUpDown, d as RadioGroupItem, dn as ChevronsDownUp, dt as Table, en as TextWrap, et as contextAwarePanelOwner, f as JsonOutput, fn as ChevronLeft, ft as TableBody, g as InstallPackageButton, gt as TableRow, h as DataTable, ht as TableHeader, it as slotsController, j as getColumnCountForDisplay, jt as TOO_MANY_ROWS, k as prettifyRowColumnCount, kt as INDEX_COLUMN_NAME, l as Switch, ln as ChevronsRight, lt as Fill, m as OutputRenderer, mt as TableHead, n as marimoVersionAtom, nn as Funnel, nt as isCellAwareAtom, o as SLIDE_TYPE_OPTIONS_BY_VALUE, on as Download, p as OutputArea, pn as ArrowDownWideNarrow, pt as TableCell, q as CommandItem, qt as useOverflowDetection, r as showCodeInRunModeAtom, rn as EyeOff, rt as SlotNames, sn as Code, t as useNotebookCodeAvailable, tn as GripHorizontal, tt as contextAwarePanelType, u as RadioGroup, un as ChevronsLeft, ut as Provider$1, v as downloadBlob, vt as generateColumns, w as ColumnName, wt as useIntersectionObserver, x as Progress, xt as ColumnChartContext, y as downloadByURL, yt as inferFieldTypes, z as CompactChipRow, zt as Tabs, __tla as __tla_2 } from "./code-visibility-BkNk8VeO.js";
|
|
30
30
|
import { c as Calendar, i as createReducerAndAtoms, n as useOnUnmount, o as ToggleLeft, t as useOnMount } from "./useLifecycle-B3NOEiY5.js";
|
|
31
31
|
import { t as Check } from "./check-BCaJeT-J.js";
|
|
32
32
|
import { A as Icon, C as logNever, D as $18f2051aff69b9bf$export$a54013f0d02a8f82, E as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7, F as createCollection, I as X, M as clamp$2, N as usePrevious$2, P as useDirection, R as ChevronDown, S as assertNever, a as SelectGroup, c as SelectSeparator, d as NativeSelect, i as SelectContent, j as Trigger$1, l as SelectTrigger, n as capitalize, o as SelectItem, r as Select, s as SelectLabel, t as Strings, u as SelectValue, w as $a916eb452884faea$export$b7a616150fdb9f44 } from "./strings-J57tzLr3.js";
|
|
@@ -8558,7 +8558,7 @@ let __tla = Promise.all([
|
|
|
8558
8558
|
};
|
|
8559
8559
|
}
|
|
8560
8560
|
};
|
|
8561
|
-
var LazyChatbot = import_react.lazy(() => import("./chat-ui-
|
|
8561
|
+
var LazyChatbot = import_react.lazy(() => import("./chat-ui-m1SnDPdw.js").then((e) => ({
|
|
8562
8562
|
default: e.Chatbot
|
|
8563
8563
|
}))), messageSchema = array(object({
|
|
8564
8564
|
id: string(),
|
|
@@ -36190,7 +36190,7 @@ ${c}
|
|
|
36190
36190
|
function _temp2$2(e) {
|
|
36191
36191
|
e.target === e.currentTarget && e.key === "Enter" && (e.preventDefault(), e.stopPropagation(), e.currentTarget.click());
|
|
36192
36192
|
}
|
|
36193
|
-
var LazySlidesComponent = import_react.lazy(() => import("./reveal-component-
|
|
36193
|
+
var LazySlidesComponent = import_react.lazy(() => import("./reveal-component-C8gBbSKY.js"));
|
|
36194
36194
|
const SlidesLayoutRenderer = ({ layout: e, setLayout: r, cells: c, mode: l }) => {
|
|
36195
36195
|
var _a3;
|
|
36196
36196
|
let u = useAtomValue(kioskModeAtom), d = l === "read" || u, f = useAtomValue(numColumnsAtom) > 1, [p, m] = (0, import_react.useState)(null), { slideCells: h, skippedIds: g, noOutputIds: _, slideTypes: v, startCellIndex: y } = (0, import_react.useMemo)(() => computeSlideCellsInfo(c, e), [
|
|
@@ -9,7 +9,7 @@ import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
|
|
|
9
9
|
import { lt as kioskModeAtom } from "./html-to-image-BJbLjZyG.js";
|
|
10
10
|
import "./chunk-5FQGJX7Z-BbqSm5gU.js";
|
|
11
11
|
import { u as createLucideIcon } from "./dist-Dk6PV_d3.js";
|
|
12
|
-
import { a as DEFAULT_SLIDE_TYPE, c as Slide, ct as PanelResizeHandle, i as DEFAULT_DECK_TRANSITION, in as Expand, ot as Panel, rn as EyeOff, s as SlideSidebar, sn as Code, st as PanelGroup, t as useNotebookCodeAvailable } from "./code-visibility-
|
|
12
|
+
import { a as DEFAULT_SLIDE_TYPE, c as Slide, ct as PanelResizeHandle, i as DEFAULT_DECK_TRANSITION, in as Expand, ot as Panel, rn as EyeOff, s as SlideSidebar, sn as Code, st as PanelGroup, t as useNotebookCodeAvailable } from "./code-visibility-BkNk8VeO.js";
|
|
13
13
|
import { X as useDebouncedCallback } from "./input-Cn-SZdXY.js";
|
|
14
14
|
import "./toDate-B4-pUFYh.js";
|
|
15
15
|
import "./react-dom-BTJzcVJ9.js";
|
package/package.json
CHANGED
|
@@ -20,11 +20,14 @@ export const renderUIMessage = ({
|
|
|
20
20
|
message,
|
|
21
21
|
isStreamingReasoning,
|
|
22
22
|
isLast,
|
|
23
|
+
isActive,
|
|
23
24
|
addToolApprovalResponse,
|
|
24
25
|
}: {
|
|
25
26
|
message: UIMessage;
|
|
26
27
|
isStreamingReasoning: boolean;
|
|
27
28
|
isLast: boolean;
|
|
29
|
+
/** Whether the chat is currently streaming/submitting a response. */
|
|
30
|
+
isActive: boolean;
|
|
28
31
|
addToolApprovalResponse?: ChatAddToolApproveResponseFunction;
|
|
29
32
|
}) => {
|
|
30
33
|
return (
|
|
@@ -49,6 +52,7 @@ export const renderUIMessage = ({
|
|
|
49
52
|
approval={part.approval}
|
|
50
53
|
onApprove={addToolApprovalResponse}
|
|
51
54
|
isLive={isLast}
|
|
55
|
+
isActive={isActive}
|
|
52
56
|
/>
|
|
53
57
|
);
|
|
54
58
|
}
|
|
@@ -102,6 +106,7 @@ export const renderUIMessage = ({
|
|
|
102
106
|
approval={part.approval}
|
|
103
107
|
onApprove={addToolApprovalResponse}
|
|
104
108
|
isLive={isLast}
|
|
109
|
+
isActive={isActive}
|
|
105
110
|
/>
|
|
106
111
|
);
|
|
107
112
|
case "source-document":
|
|
@@ -143,6 +143,7 @@ interface ChatMessageProps {
|
|
|
143
143
|
onEdit: (index: number, newValue: string) => void;
|
|
144
144
|
isStreamingReasoning: boolean;
|
|
145
145
|
isLast: boolean;
|
|
146
|
+
isActive: boolean;
|
|
146
147
|
addToolApprovalResponse?: ChatAddToolApproveResponseFunction;
|
|
147
148
|
}
|
|
148
149
|
|
|
@@ -153,6 +154,7 @@ const ChatMessageDisplay: React.FC<ChatMessageProps> = memo(
|
|
|
153
154
|
onEdit,
|
|
154
155
|
isStreamingReasoning,
|
|
155
156
|
isLast,
|
|
157
|
+
isActive,
|
|
156
158
|
addToolApprovalResponse,
|
|
157
159
|
}) => {
|
|
158
160
|
const renderUserMessage = (message: UIMessage) => {
|
|
@@ -205,6 +207,7 @@ const ChatMessageDisplay: React.FC<ChatMessageProps> = memo(
|
|
|
205
207
|
message,
|
|
206
208
|
isStreamingReasoning,
|
|
207
209
|
isLast,
|
|
210
|
+
isActive,
|
|
208
211
|
addToolApprovalResponse,
|
|
209
212
|
})}
|
|
210
213
|
</div>
|
|
@@ -780,6 +783,7 @@ const ChatPanelBody = () => {
|
|
|
780
783
|
onEdit={handleMessageEdit}
|
|
781
784
|
isStreamingReasoning={isStreamingReasoning}
|
|
782
785
|
isLast={idx === messages.length - 1}
|
|
786
|
+
isActive={isLoading}
|
|
783
787
|
addToolApprovalResponse={addToolApprovalResponse}
|
|
784
788
|
/>
|
|
785
789
|
))}
|
|
@@ -24,6 +24,7 @@ interface ToolCallViewProps {
|
|
|
24
24
|
* (the user has moved on).
|
|
25
25
|
*/
|
|
26
26
|
isLive?: boolean;
|
|
27
|
+
isActive?: boolean;
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
export const ToolCallView: React.FC<ToolCallViewProps> = ({
|
|
@@ -37,6 +38,7 @@ export const ToolCallView: React.FC<ToolCallViewProps> = ({
|
|
|
37
38
|
index,
|
|
38
39
|
className,
|
|
39
40
|
isLive = true,
|
|
41
|
+
isActive = true,
|
|
40
42
|
}) => {
|
|
41
43
|
switch (state) {
|
|
42
44
|
case "approval-requested":
|
|
@@ -61,6 +63,7 @@ export const ToolCallView: React.FC<ToolCallViewProps> = ({
|
|
|
61
63
|
input={input}
|
|
62
64
|
index={index}
|
|
63
65
|
className={className}
|
|
66
|
+
isActive={isActive}
|
|
64
67
|
/>
|
|
65
68
|
);
|
|
66
69
|
|
|
@@ -89,6 +92,7 @@ export const ToolCallView: React.FC<ToolCallViewProps> = ({
|
|
|
89
92
|
approval={approval}
|
|
90
93
|
index={index}
|
|
91
94
|
className={className}
|
|
95
|
+
isActive={isActive}
|
|
92
96
|
/>
|
|
93
97
|
);
|
|
94
98
|
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
BanIcon,
|
|
5
|
+
CheckCircleIcon,
|
|
6
|
+
CircleSlashIcon,
|
|
7
|
+
Loader2,
|
|
8
|
+
WrenchIcon,
|
|
9
|
+
} from "lucide-react";
|
|
4
10
|
import React from "react";
|
|
5
11
|
import {
|
|
6
12
|
Accordion,
|
|
@@ -29,7 +35,19 @@ const STATUS_LABEL: Record<HistoryState, string> = {
|
|
|
29
35
|
"output-denied": "Denied",
|
|
30
36
|
};
|
|
31
37
|
|
|
32
|
-
const
|
|
38
|
+
const PENDING_STATES = new Set<HistoryState>([
|
|
39
|
+
"input-streaming",
|
|
40
|
+
"input-available",
|
|
41
|
+
"approval-responded",
|
|
42
|
+
]);
|
|
43
|
+
|
|
44
|
+
const StatusIcon: React.FC<{ state: HistoryState; interrupted: boolean }> = ({
|
|
45
|
+
state,
|
|
46
|
+
interrupted,
|
|
47
|
+
}) => {
|
|
48
|
+
if (interrupted) {
|
|
49
|
+
return <CircleSlashIcon className="h-3 w-3 text-muted-foreground" />;
|
|
50
|
+
}
|
|
33
51
|
switch (state) {
|
|
34
52
|
case "input-streaming":
|
|
35
53
|
case "input-available":
|
|
@@ -69,6 +87,7 @@ interface ToolHistoryRowProps {
|
|
|
69
87
|
approval?: ToolApproval;
|
|
70
88
|
index?: number;
|
|
71
89
|
className?: string;
|
|
90
|
+
isActive?: boolean;
|
|
72
91
|
}
|
|
73
92
|
|
|
74
93
|
export const ToolHistoryRow: React.FC<ToolHistoryRowProps> = ({
|
|
@@ -79,7 +98,9 @@ export const ToolHistoryRow: React.FC<ToolHistoryRowProps> = ({
|
|
|
79
98
|
approval,
|
|
80
99
|
index = 0,
|
|
81
100
|
className,
|
|
101
|
+
isActive = true,
|
|
82
102
|
}) => {
|
|
103
|
+
const interrupted = !isActive && PENDING_STATES.has(state);
|
|
83
104
|
return (
|
|
84
105
|
<Accordion
|
|
85
106
|
key={`tool-${index}`}
|
|
@@ -91,12 +112,12 @@ export const ToolHistoryRow: React.FC<ToolHistoryRowProps> = ({
|
|
|
91
112
|
<AccordionTrigger
|
|
92
113
|
className={cn(
|
|
93
114
|
"h-6 text-xs border-border shadow-none! ring-0! bg-muted/60 hover:bg-muted py-0 px-2 gap-1 rounded-sm [&[data-state=open]>svg]:rotate-180 hover:no-underline",
|
|
94
|
-
getTriggerToneClass(state),
|
|
115
|
+
interrupted ? "text-muted-foreground" : getTriggerToneClass(state),
|
|
95
116
|
)}
|
|
96
117
|
>
|
|
97
118
|
<span className="flex items-center gap-1">
|
|
98
|
-
<StatusIcon state={state} />
|
|
99
|
-
{STATUS_LABEL[state]}:
|
|
119
|
+
<StatusIcon state={state} interrupted={interrupted} />
|
|
120
|
+
{interrupted ? "Interrupted" : STATUS_LABEL[state]}:
|
|
100
121
|
<code className="font-mono text-xs">
|
|
101
122
|
{formatToolName(toolName)}
|
|
102
123
|
</code>
|