langgraph-ui-components 0.0.17 → 0.0.18
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/index.es100.js +20 -354
- package/dist/index.es100.js.map +1 -1
- package/dist/index.es101.js +172 -127
- package/dist/index.es101.js.map +1 -1
- package/dist/index.es102.js +231 -60
- package/dist/index.es102.js.map +1 -1
- package/dist/index.es103.js +352 -34
- package/dist/index.es103.js.map +1 -1
- package/dist/index.es104.js +134 -34
- package/dist/index.es104.js.map +1 -1
- package/dist/index.es105.js +65 -161
- package/dist/index.es105.js.map +1 -1
- package/dist/index.es106.js +30 -196
- package/dist/index.es106.js.map +1 -1
- package/dist/index.es107.js +36 -13
- package/dist/index.es107.js.map +1 -1
- package/dist/index.es108.js +162 -26
- package/dist/index.es108.js.map +1 -1
- package/dist/index.es109.js +196 -27
- package/dist/index.es109.js.map +1 -1
- package/dist/index.es110.js +13 -3156
- package/dist/index.es110.js.map +1 -1
- package/dist/index.es111.js +27 -34
- package/dist/index.es111.js.map +1 -1
- package/dist/index.es112.js +34 -5
- package/dist/index.es112.js.map +1 -1
- package/dist/index.es113.js +3145 -61
- package/dist/index.es113.js.map +1 -1
- package/dist/index.es114.js +33 -33
- package/dist/index.es114.js.map +1 -1
- package/dist/index.es115.js +5 -21
- package/dist/index.es115.js.map +1 -1
- package/dist/index.es116.js +69 -64
- package/dist/index.es116.js.map +1 -1
- package/dist/index.es117.js +37 -3
- package/dist/index.es117.js.map +1 -1
- package/dist/index.es12.js +1 -1
- package/dist/index.es121.js +9 -9
- package/dist/index.es122.js +1 -1
- package/dist/index.es126.js +1 -1
- package/dist/index.es128.js +2 -2
- package/dist/index.es13.js +9 -3
- package/dist/index.es13.js.map +1 -1
- package/dist/index.es136.js +1 -1
- package/dist/index.es137.js +6 -6
- package/dist/index.es139.js +1 -1
- package/dist/index.es14.js +6 -6
- package/dist/index.es140.js +1 -1
- package/dist/index.es143.js +1 -1
- package/dist/index.es144.js +1 -1
- package/dist/index.es145.js +1 -1
- package/dist/index.es146.js +1 -1
- package/dist/index.es147.js +1 -1
- package/dist/index.es148.js +1 -1
- package/dist/index.es149.js +1 -1
- package/dist/index.es150.js +1 -1
- package/dist/index.es151.js +1 -1
- package/dist/index.es152.js +1 -1
- package/dist/index.es153.js +1 -1
- package/dist/index.es154.js +1 -1
- package/dist/index.es155.js +1 -1
- package/dist/index.es156.js +1 -1
- package/dist/index.es157.js +1 -1
- package/dist/index.es158.js +1 -1
- package/dist/index.es159.js +1 -1
- package/dist/index.es16.js +10 -5
- package/dist/index.es16.js.map +1 -1
- package/dist/index.es160.js +1 -1
- package/dist/index.es161.js +1 -1
- package/dist/index.es162.js +1 -1
- package/dist/index.es163.js +1 -1
- package/dist/index.es164.js +1 -1
- package/dist/index.es165.js +1 -1
- package/dist/index.es166.js +1 -1
- package/dist/index.es167.js +1 -1
- package/dist/index.es168.js +1 -1
- package/dist/index.es169.js +1 -1
- package/dist/index.es170.js +1 -1
- package/dist/index.es171.js +1 -1
- package/dist/index.es172.js +1 -1
- package/dist/index.es173.js +1 -1
- package/dist/index.es174.js +1 -1
- package/dist/index.es175.js +1 -1
- package/dist/index.es176.js +1 -1
- package/dist/index.es177.js +1 -1
- package/dist/index.es178.js +1 -1
- package/dist/index.es179.js +1 -1
- package/dist/index.es18.js +7 -7
- package/dist/index.es180.js +1 -1
- package/dist/index.es181.js +1 -1
- package/dist/index.es182.js +1 -1
- package/dist/index.es183.js +1 -1
- package/dist/index.es184.js +1 -1
- package/dist/index.es185.js +1 -1
- package/dist/index.es186.js +1 -1
- package/dist/index.es187.js +1 -1
- package/dist/index.es191.js +2 -56
- package/dist/index.es191.js.map +1 -1
- package/dist/index.es192.js +2 -100
- package/dist/index.es192.js.map +1 -1
- package/dist/index.es193.js +2 -191
- package/dist/index.es193.js.map +1 -1
- package/dist/index.es194.js +2 -110
- package/dist/index.es194.js.map +1 -1
- package/dist/index.es195.js +2 -35
- package/dist/index.es195.js.map +1 -1
- package/dist/index.es196.js +2 -10
- package/dist/index.es196.js.map +1 -1
- package/dist/index.es197.js +2 -11
- package/dist/index.es197.js.map +1 -1
- package/dist/index.es198.js +2 -12
- package/dist/index.es198.js.map +1 -1
- package/dist/index.es199.js +2 -91
- package/dist/index.es199.js.map +1 -1
- package/dist/index.es2.js +96 -11
- package/dist/index.es2.js.map +1 -1
- package/dist/index.es20.js +2 -2
- package/dist/index.es200.js +2 -275
- package/dist/index.es200.js.map +1 -1
- package/dist/index.es201.js +2 -2
- package/dist/index.es202.js +2 -164
- package/dist/index.es202.js.map +1 -1
- package/dist/index.es203.js +2 -51
- package/dist/index.es203.js.map +1 -1
- package/dist/index.es204.js +2 -40
- package/dist/index.es204.js.map +1 -1
- package/dist/index.es205.js +2 -35
- package/dist/index.es205.js.map +1 -1
- package/dist/index.es206.js +2 -40
- package/dist/index.es206.js.map +1 -1
- package/dist/index.es207.js +2 -24
- package/dist/index.es207.js.map +1 -1
- package/dist/index.es208.js +2 -591
- package/dist/index.es208.js.map +1 -1
- package/dist/index.es209.js +2 -125
- package/dist/index.es209.js.map +1 -1
- package/dist/index.es210.js +2 -164
- package/dist/index.es210.js.map +1 -1
- package/dist/index.es211.js +2 -2
- package/dist/index.es212.js +2 -2
- package/dist/index.es213.js +2 -2
- package/dist/index.es214.js +2 -2
- package/dist/index.es215.js +2 -2
- package/dist/index.es216.js +2 -2
- package/dist/index.es217.js +2 -2
- package/dist/index.es218.js +2 -2
- package/dist/index.es219.js +2 -2
- package/dist/index.es22.js +35 -119
- package/dist/index.es22.js.map +1 -1
- package/dist/index.es220.js +2 -2
- package/dist/index.es221.js +2 -2
- package/dist/index.es222.js +2 -2
- package/dist/index.es223.js +2 -2
- package/dist/index.es224.js +2 -2
- package/dist/index.es225.js +2 -2
- package/dist/index.es226.js +2 -2
- package/dist/index.es227.js +2 -2
- package/dist/index.es228.js +2 -2
- package/dist/index.es229.js +2 -2
- package/dist/index.es23.js +66 -36
- package/dist/index.es23.js.map +1 -1
- package/dist/index.es230.js +2 -2
- package/dist/index.es231.js +2 -2
- package/dist/index.es232.js +2 -2
- package/dist/index.es233.js +2 -2
- package/dist/index.es234.js +2 -2
- package/dist/index.es235.js +2 -2
- package/dist/index.es236.js +56 -2
- package/dist/index.es236.js.map +1 -1
- package/dist/index.es237.js +100 -2
- package/dist/index.es237.js.map +1 -1
- package/dist/index.es238.js +191 -2
- package/dist/index.es238.js.map +1 -1
- package/dist/index.es239.js +110 -2
- package/dist/index.es239.js.map +1 -1
- package/dist/index.es24.js +30 -64
- package/dist/index.es24.js.map +1 -1
- package/dist/index.es240.js +35 -2
- package/dist/index.es240.js.map +1 -1
- package/dist/index.es241.js +10 -2
- package/dist/index.es241.js.map +1 -1
- package/dist/index.es242.js +11 -2
- package/dist/index.es242.js.map +1 -1
- package/dist/index.es243.js +12 -2
- package/dist/index.es243.js.map +1 -1
- package/dist/index.es244.js +91 -2
- package/dist/index.es244.js.map +1 -1
- package/dist/index.es245.js +275 -2
- package/dist/index.es245.js.map +1 -1
- package/dist/index.es246.js +2 -2
- package/dist/index.es247.js +164 -2
- package/dist/index.es247.js.map +1 -1
- package/dist/index.es248.js +51 -2
- package/dist/index.es248.js.map +1 -1
- package/dist/index.es249.js +40 -2
- package/dist/index.es249.js.map +1 -1
- package/dist/index.es25.js +120 -29
- package/dist/index.es25.js.map +1 -1
- package/dist/index.es250.js +35 -2
- package/dist/index.es250.js.map +1 -1
- package/dist/index.es251.js +40 -2
- package/dist/index.es251.js.map +1 -1
- package/dist/index.es252.js +24 -2
- package/dist/index.es252.js.map +1 -1
- package/dist/index.es253.js +591 -2
- package/dist/index.es253.js.map +1 -1
- package/dist/index.es254.js +125 -2
- package/dist/index.es254.js.map +1 -1
- package/dist/index.es255.js +164 -2
- package/dist/index.es255.js.map +1 -1
- package/dist/index.es256.js +2 -2
- package/dist/index.es26.js +102 -123
- package/dist/index.es26.js.map +1 -1
- package/dist/index.es267.js +1 -1
- package/dist/index.es27.js +66 -101
- package/dist/index.es27.js.map +1 -1
- package/dist/index.es28.js +139 -66
- package/dist/index.es28.js.map +1 -1
- package/dist/index.es29.js +295 -131
- package/dist/index.es29.js.map +1 -1
- package/dist/index.es30.js +114 -298
- package/dist/index.es30.js.map +1 -1
- package/dist/index.es305.js +1 -1
- package/dist/index.es307.js +1 -1
- package/dist/index.es319.js +1 -1
- package/dist/index.es32.js +7 -7
- package/dist/index.es33.js +1 -1
- package/dist/index.es339.js +2 -2
- package/dist/index.es36.js +4 -4
- package/dist/index.es37.js +289 -114
- package/dist/index.es37.js.map +1 -1
- package/dist/index.es38.js +44 -70
- package/dist/index.es38.js.map +1 -1
- package/dist/index.es39.js +145 -19
- package/dist/index.es39.js.map +1 -1
- package/dist/index.es40.js +5 -261
- package/dist/index.es40.js.map +1 -1
- package/dist/index.es41.js +247 -38
- package/dist/index.es41.js.map +1 -1
- package/dist/index.es42.js +110 -207
- package/dist/index.es42.js.map +1 -1
- package/dist/index.es43.js +68 -64
- package/dist/index.es43.js.map +1 -1
- package/dist/index.es44.js +17 -141
- package/dist/index.es44.js.map +1 -1
- package/dist/index.es45.js +251 -14
- package/dist/index.es45.js.map +1 -1
- package/dist/index.es46.js +36 -223
- package/dist/index.es46.js.map +1 -1
- package/dist/index.es47.js +213 -7
- package/dist/index.es47.js.map +1 -1
- package/dist/index.es48.js +55 -1180
- package/dist/index.es48.js.map +1 -1
- package/dist/index.es49.js +141 -6
- package/dist/index.es49.js.map +1 -1
- package/dist/index.es50.js +21 -144
- package/dist/index.es50.js.map +1 -1
- package/dist/index.es51.js +230 -5
- package/dist/index.es51.js.map +1 -1
- package/dist/index.es52.js +8 -292
- package/dist/index.es52.js.map +1 -1
- package/dist/index.es53.js +1190 -43
- package/dist/index.es53.js.map +1 -1
- package/dist/index.es54.js +7 -144
- package/dist/index.es54.js.map +1 -1
- package/dist/index.es55.js +136 -241
- package/dist/index.es55.js.map +1 -1
- package/dist/index.es59.js +1 -1
- package/dist/index.es6.js +21 -8
- package/dist/index.es6.js.map +1 -1
- package/dist/index.es60.js +1 -1
- package/dist/index.es61.js +1 -1
- package/dist/index.es62.js +7 -7
- package/dist/index.es67.js +3 -3
- package/dist/index.es69.js +2 -2
- package/dist/index.es70.js +1 -1
- package/dist/index.es71.js +1 -1
- package/dist/index.es72.js +1 -1
- package/dist/index.es77.js +7 -7
- package/dist/index.es78.js +17 -17
- package/dist/index.es82.js +1 -1
- package/dist/index.es83.js +4 -4
- package/dist/index.es84.js +20 -11
- package/dist/index.es84.js.map +1 -1
- package/dist/index.es85.js +66 -38
- package/dist/index.es85.js.map +1 -1
- package/dist/index.es86.js +3 -34
- package/dist/index.es86.js.map +1 -1
- package/dist/index.es87.js +10 -230
- package/dist/index.es87.js.map +1 -1
- package/dist/index.es88.js +39 -29
- package/dist/index.es88.js.map +1 -1
- package/dist/index.es89.js +32 -73
- package/dist/index.es89.js.map +1 -1
- package/dist/index.es90.js +200 -44
- package/dist/index.es90.js.map +1 -1
- package/dist/index.es91.js +15 -37
- package/dist/index.es91.js.map +1 -1
- package/dist/index.es92.js +71 -26
- package/dist/index.es92.js.map +1 -1
- package/dist/index.es93.js +72 -39
- package/dist/index.es93.js.map +1 -1
- package/dist/index.es94.js +48 -53
- package/dist/index.es94.js.map +1 -1
- package/dist/index.es95.js +30 -13
- package/dist/index.es95.js.map +1 -1
- package/dist/index.es96.js +40 -134
- package/dist/index.es96.js.map +1 -1
- package/dist/index.es97.js +56 -20
- package/dist/index.es97.js.map +1 -1
- package/dist/index.es98.js +11 -180
- package/dist/index.es98.js.map +1 -1
- package/dist/index.es99.js +129 -233
- package/dist/index.es99.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.es39.js
CHANGED
|
@@ -1,22 +1,148 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Button } from "./index.es29.js";
|
|
3
|
+
import { cn } from "./index.es40.js";
|
|
4
|
+
import { useStreamContext } from "./index.es7.js";
|
|
5
|
+
import { Check, Copy, RefreshCw, ThumbsUp, ThumbsDown } from "lucide-react";
|
|
6
|
+
import { useState } from "react";
|
|
7
|
+
import { toast } from "sonner";
|
|
8
|
+
function MessageActions({
|
|
9
|
+
message,
|
|
10
|
+
onRegenerate,
|
|
11
|
+
feedback,
|
|
12
|
+
onFeedback,
|
|
13
|
+
className
|
|
14
|
+
}) {
|
|
15
|
+
const [copied, setCopied] = useState(false);
|
|
16
|
+
const [isRegenerating, setIsRegenerating] = useState(false);
|
|
17
|
+
const thread = useStreamContext();
|
|
18
|
+
const meta = thread.getMessagesMetadata(message);
|
|
19
|
+
const parentCheckpoint = meta?.firstSeenState?.parent_checkpoint;
|
|
20
|
+
const handleCopy = async () => {
|
|
21
|
+
try {
|
|
22
|
+
let textContent = "";
|
|
23
|
+
if (typeof message.content === "string") {
|
|
24
|
+
textContent = message.content;
|
|
25
|
+
} else if (Array.isArray(message.content)) {
|
|
26
|
+
textContent = message.content.map((c) => c.type === "text" ? c.text : "").filter(Boolean).join("\n");
|
|
27
|
+
}
|
|
28
|
+
await navigator.clipboard.writeText(textContent);
|
|
29
|
+
setCopied(true);
|
|
30
|
+
toast.success("Copied to clipboard");
|
|
31
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
32
|
+
} catch (error) {
|
|
33
|
+
toast.error("Failed to copy");
|
|
34
|
+
console.error("Copy failed:", error);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const handleRegenerate = async () => {
|
|
38
|
+
if (!onRegenerate || !parentCheckpoint || !message.id) return;
|
|
39
|
+
try {
|
|
40
|
+
setIsRegenerating(true);
|
|
41
|
+
await onRegenerate(parentCheckpoint, message.id, message);
|
|
42
|
+
} catch (error) {
|
|
43
|
+
toast.error("Failed to regenerate");
|
|
44
|
+
console.error("Regenerate failed:", error);
|
|
45
|
+
} finally {
|
|
46
|
+
setIsRegenerating(false);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const handleLike = () => {
|
|
50
|
+
if (!onFeedback || !message.id) return;
|
|
51
|
+
const newFeedback = feedback === "like" ? null : "like";
|
|
52
|
+
onFeedback(message.id, newFeedback);
|
|
53
|
+
};
|
|
54
|
+
const handleDislike = () => {
|
|
55
|
+
if (!onFeedback || !message.id) return;
|
|
56
|
+
const newFeedback = feedback === "dislike" ? null : "dislike";
|
|
57
|
+
onFeedback(message.id, newFeedback);
|
|
58
|
+
};
|
|
59
|
+
return /* @__PURE__ */ jsxs(
|
|
60
|
+
"div",
|
|
61
|
+
{
|
|
62
|
+
className: cn(
|
|
63
|
+
"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity duration-200",
|
|
64
|
+
className
|
|
65
|
+
),
|
|
66
|
+
children: [
|
|
67
|
+
/* @__PURE__ */ jsx(
|
|
68
|
+
Button,
|
|
69
|
+
{
|
|
70
|
+
variant: "ghost",
|
|
71
|
+
size: "icon",
|
|
72
|
+
onClick: handleCopy,
|
|
73
|
+
className: "h-7 w-7 text-zinc-500 hover:text-zinc-300 hover:bg-zinc-800",
|
|
74
|
+
title: "Copy message",
|
|
75
|
+
children: copied ? /* @__PURE__ */ jsx(Check, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx(Copy, { className: "h-3.5 w-3.5" })
|
|
76
|
+
}
|
|
77
|
+
),
|
|
78
|
+
onRegenerate && /* @__PURE__ */ jsx(
|
|
79
|
+
Button,
|
|
80
|
+
{
|
|
81
|
+
variant: "ghost",
|
|
82
|
+
size: "icon",
|
|
83
|
+
onClick: handleRegenerate,
|
|
84
|
+
disabled: isRegenerating,
|
|
85
|
+
className: "h-7 w-7 text-zinc-500 hover:text-zinc-300 hover:bg-zinc-800 disabled:opacity-50",
|
|
86
|
+
title: "Regenerate response",
|
|
87
|
+
children: /* @__PURE__ */ jsx(
|
|
88
|
+
RefreshCw,
|
|
89
|
+
{
|
|
90
|
+
className: cn("h-3.5 w-3.5", isRegenerating && "animate-spin")
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
}
|
|
94
|
+
),
|
|
95
|
+
onFeedback && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
96
|
+
/* @__PURE__ */ jsx(
|
|
97
|
+
Button,
|
|
98
|
+
{
|
|
99
|
+
variant: "ghost",
|
|
100
|
+
size: "icon",
|
|
101
|
+
onClick: handleLike,
|
|
102
|
+
className: cn(
|
|
103
|
+
"h-7 w-7 hover:bg-zinc-800",
|
|
104
|
+
feedback === "like" ? "text-green-500 hover:text-green-400" : "text-zinc-500 hover:text-zinc-300"
|
|
105
|
+
),
|
|
106
|
+
title: "Good response",
|
|
107
|
+
children: /* @__PURE__ */ jsx(
|
|
108
|
+
ThumbsUp,
|
|
109
|
+
{
|
|
110
|
+
className: cn(
|
|
111
|
+
"h-3.5 w-3.5",
|
|
112
|
+
feedback === "like" && "fill-current"
|
|
113
|
+
)
|
|
114
|
+
}
|
|
115
|
+
)
|
|
116
|
+
}
|
|
117
|
+
),
|
|
118
|
+
/* @__PURE__ */ jsx(
|
|
119
|
+
Button,
|
|
120
|
+
{
|
|
121
|
+
variant: "ghost",
|
|
122
|
+
size: "icon",
|
|
123
|
+
onClick: handleDislike,
|
|
124
|
+
className: cn(
|
|
125
|
+
"h-7 w-7 hover:bg-zinc-800",
|
|
126
|
+
feedback === "dislike" ? "text-red-500 hover:text-red-400" : "text-zinc-500 hover:text-zinc-300"
|
|
127
|
+
),
|
|
128
|
+
title: "Bad response",
|
|
129
|
+
children: /* @__PURE__ */ jsx(
|
|
130
|
+
ThumbsDown,
|
|
131
|
+
{
|
|
132
|
+
className: cn(
|
|
133
|
+
"h-3.5 w-3.5",
|
|
134
|
+
feedback === "dislike" && "fill-current"
|
|
135
|
+
)
|
|
136
|
+
}
|
|
137
|
+
)
|
|
138
|
+
}
|
|
139
|
+
)
|
|
140
|
+
] })
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
}
|
|
19
145
|
export {
|
|
20
|
-
|
|
146
|
+
MessageActions
|
|
21
147
|
};
|
|
22
148
|
//# sourceMappingURL=index.es39.js.map
|
package/dist/index.es39.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es39.js","sources":["../
|
|
1
|
+
{"version":3,"file":"index.es39.js","sources":["../src/components/messages/MessageActions.tsx"],"sourcesContent":["import { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/utils/tailwindUtil\";\nimport { useStreamContext } from \"@/providers/Stream\";\nimport type { Message } from \"@langchain/langgraph-sdk\";\nimport { Check, Copy, RefreshCw, ThumbsDown, ThumbsUp } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { toast } from \"sonner\";\n\nexport type MessageFeedback = \"like\" | \"dislike\" | null;\n\ninterface MessageActionsProps {\n message: Message;\n onRegenerate?: (parentCheckpoint: any | null | undefined, messageId: string, currentMessage: any) => void;\n feedback?: MessageFeedback;\n onFeedback?: (messageId: string, feedback: MessageFeedback) => void;\n className?: string;\n}\n\nexport function MessageActions({\n message,\n onRegenerate,\n feedback,\n onFeedback,\n className,\n}: MessageActionsProps) {\n const [copied, setCopied] = useState(false);\n const [isRegenerating, setIsRegenerating] = useState(false);\n const thread = useStreamContext();\n const meta = thread.getMessagesMetadata(message);\n const parentCheckpoint = meta?.firstSeenState?.parent_checkpoint;\n\n const handleCopy = async () => {\n try {\n let textContent = \"\";\n \n if (typeof message.content === \"string\") {\n textContent = message.content;\n } else if (Array.isArray(message.content)) {\n textContent = message.content\n .map((c: any) => (c.type === \"text\" ? c.text : \"\"))\n .filter(Boolean)\n .join(\"\\n\");\n }\n\n await navigator.clipboard.writeText(textContent);\n setCopied(true);\n toast.success(\"Copied to clipboard\");\n setTimeout(() => setCopied(false), 2000);\n } catch (error) {\n toast.error(\"Failed to copy\");\n console.error(\"Copy failed:\", error);\n }\n };\n\n const handleRegenerate = async () => {\n if (!onRegenerate || !parentCheckpoint || !message.id) return;\n \n try {\n setIsRegenerating(true);\n await onRegenerate(parentCheckpoint, message.id, message);\n } catch (error) {\n toast.error(\"Failed to regenerate\");\n console.error(\"Regenerate failed:\", error);\n } finally {\n setIsRegenerating(false);\n }\n };\n\n const handleLike = () => {\n if (!onFeedback || !message.id) return;\n // Toggle like: if already liked, set to null; otherwise, set to like\n const newFeedback = feedback === \"like\" ? null : \"like\";\n onFeedback(message.id, newFeedback);\n };\n\n const handleDislike = () => {\n if (!onFeedback || !message.id) return;\n // Toggle dislike: if already disliked, set to null; otherwise, set to dislike\n const newFeedback = feedback === \"dislike\" ? null : \"dislike\";\n onFeedback(message.id, newFeedback);\n };\n\n return (\n <div\n className={cn(\n \"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity duration-200\",\n className\n )}\n >\n {/* Copy Button */}\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={handleCopy}\n className=\"h-7 w-7 text-zinc-500 hover:text-zinc-300 hover:bg-zinc-800\"\n title=\"Copy message\"\n >\n {copied ? (\n <Check className=\"h-3.5 w-3.5\" />\n ) : (\n <Copy className=\"h-3.5 w-3.5\" />\n )}\n </Button>\n\n {/* Regenerate Button */}\n {onRegenerate && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={handleRegenerate}\n disabled={isRegenerating}\n className=\"h-7 w-7 text-zinc-500 hover:text-zinc-300 hover:bg-zinc-800 disabled:opacity-50\"\n title=\"Regenerate response\"\n >\n <RefreshCw\n className={cn(\"h-3.5 w-3.5\", isRegenerating && \"animate-spin\")}\n />\n </Button>\n )}\n\n {/* Feedback Buttons */}\n {onFeedback && (\n <>\n {/* Like Button */}\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={handleLike}\n className={cn(\n \"h-7 w-7 hover:bg-zinc-800\",\n feedback === \"like\"\n ? \"text-green-500 hover:text-green-400\"\n : \"text-zinc-500 hover:text-zinc-300\"\n )}\n title=\"Good response\"\n >\n <ThumbsUp\n className={cn(\n \"h-3.5 w-3.5\",\n feedback === \"like\" && \"fill-current\"\n )}\n />\n </Button>\n\n {/* Dislike Button */}\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={handleDislike}\n className={cn(\n \"h-7 w-7 hover:bg-zinc-800\",\n feedback === \"dislike\"\n ? \"text-red-500 hover:text-red-400\"\n : \"text-zinc-500 hover:text-zinc-300\"\n )}\n title=\"Bad response\"\n >\n <ThumbsDown\n className={cn(\n \"h-3.5 w-3.5\",\n feedback === \"dislike\" && \"fill-current\"\n )}\n />\n </Button>\n </>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAkBO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAC1D,QAAM,SAAS,iBAAA;AACf,QAAM,OAAO,OAAO,oBAAoB,OAAO;AAC/C,QAAM,mBAAmB,MAAM,gBAAgB;AAE/C,QAAM,aAAa,YAAY;AAC7B,QAAI;AACF,UAAI,cAAc;AAElB,UAAI,OAAO,QAAQ,YAAY,UAAU;AACvC,sBAAc,QAAQ;AAAA,MACxB,WAAW,MAAM,QAAQ,QAAQ,OAAO,GAAG;AACzC,sBAAc,QAAQ,QACnB,IAAI,CAAC,MAAY,EAAE,SAAS,SAAS,EAAE,OAAO,EAAG,EACjD,OAAO,OAAO,EACd,KAAK,IAAI;AAAA,MACd;AAEA,YAAM,UAAU,UAAU,UAAU,WAAW;AAC/C,gBAAU,IAAI;AACd,YAAM,QAAQ,qBAAqB;AACnC,iBAAW,MAAM,UAAU,KAAK,GAAG,GAAI;AAAA,IACzC,SAAS,OAAO;AACd,YAAM,MAAM,gBAAgB;AAC5B,cAAQ,MAAM,gBAAgB,KAAK;AAAA,IACrC;AAAA,EACF;AAEA,QAAM,mBAAmB,YAAY;AACnC,QAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,GAAI;AAEvD,QAAI;AACF,wBAAkB,IAAI;AACtB,YAAM,aAAa,kBAAkB,QAAQ,IAAI,OAAO;AAAA,IAC1D,SAAS,OAAO;AACd,YAAM,MAAM,sBAAsB;AAClC,cAAQ,MAAM,sBAAsB,KAAK;AAAA,IAC3C,UAAA;AACE,wBAAkB,KAAK;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,aAAa,MAAM;AACvB,QAAI,CAAC,cAAc,CAAC,QAAQ,GAAI;AAEhC,UAAM,cAAc,aAAa,SAAS,OAAO;AACjD,eAAW,QAAQ,IAAI,WAAW;AAAA,EACpC;AAEA,QAAM,gBAAgB,MAAM;AAC1B,QAAI,CAAC,cAAc,CAAC,QAAQ,GAAI;AAEhC,UAAM,cAAc,aAAa,YAAY,OAAO;AACpD,eAAW,QAAQ,IAAI,WAAW;AAAA,EACpC;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAIF,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS;AAAA,YACT,WAAU;AAAA,YACV,OAAM;AAAA,YAEL,UAAA,6BACE,OAAA,EAAM,WAAU,eAAc,IAE/B,oBAAC,MAAA,EAAK,WAAU,cAAA,CAAc;AAAA,UAAA;AAAA,QAAA;AAAA,QAKjC,gBACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS;AAAA,YACT,UAAU;AAAA,YACV,WAAU;AAAA,YACV,OAAM;AAAA,YAEN,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW,GAAG,eAAe,kBAAkB,cAAc;AAAA,cAAA;AAAA,YAAA;AAAA,UAC/D;AAAA,QAAA;AAAA,QAKH,cACC,qBAAA,UAAA,EAEE,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,SAAS;AAAA,cACT,WAAW;AAAA,gBACT;AAAA,gBACA,aAAa,SACT,wCACA;AAAA,cAAA;AAAA,cAEN,OAAM;AAAA,cAEN,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAW;AAAA,oBACT;AAAA,oBACA,aAAa,UAAU;AAAA,kBAAA;AAAA,gBACzB;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,UAIF;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,SAAS;AAAA,cACT,WAAW;AAAA,gBACT;AAAA,gBACA,aAAa,YACT,oCACA;AAAA,cAAA;AAAA,cAEN,OAAM;AAAA,cAEN,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAW;AAAA,oBACT;AAAA,oBACA,aAAa,aAAa;AAAA,kBAAA;AAAA,gBAC5B;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QACF,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
package/dist/index.es40.js
CHANGED
|
@@ -1,265 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { convertToV1FromChatCompletionsInput } from "./index.es72.js";
|
|
6
|
-
import { isMessage } from "./index.es58.js";
|
|
7
|
-
import { convertToFormattedString } from "./index.es73.js";
|
|
8
|
-
const MESSAGE_SYMBOL = /* @__PURE__ */ Symbol.for("langchain.message");
|
|
9
|
-
function mergeContent(firstContent, secondContent) {
|
|
10
|
-
if (typeof firstContent === "string") {
|
|
11
|
-
if (firstContent === "") return secondContent;
|
|
12
|
-
if (typeof secondContent === "string") return firstContent + secondContent;
|
|
13
|
-
else if (Array.isArray(secondContent) && secondContent.length === 0) return firstContent;
|
|
14
|
-
else if (Array.isArray(secondContent) && secondContent.some((c) => isDataContentBlock(c))) return [{
|
|
15
|
-
type: "text",
|
|
16
|
-
source_type: "text",
|
|
17
|
-
text: firstContent
|
|
18
|
-
}, ...secondContent];
|
|
19
|
-
else return [{
|
|
20
|
-
type: "text",
|
|
21
|
-
text: firstContent
|
|
22
|
-
}, ...secondContent];
|
|
23
|
-
} else if (Array.isArray(secondContent)) return _mergeLists(firstContent, secondContent) ?? [...firstContent, ...secondContent];
|
|
24
|
-
else if (secondContent === "") return firstContent;
|
|
25
|
-
else if (Array.isArray(firstContent) && firstContent.some((c) => isDataContentBlock(c))) return [...firstContent, {
|
|
26
|
-
type: "file",
|
|
27
|
-
source_type: "text",
|
|
28
|
-
text: secondContent
|
|
29
|
-
}];
|
|
30
|
-
else return [...firstContent, {
|
|
31
|
-
type: "text",
|
|
32
|
-
text: secondContent
|
|
33
|
-
}];
|
|
34
|
-
}
|
|
35
|
-
function _mergeStatus(left, right) {
|
|
36
|
-
if (left === "error" || right === "error") return "error";
|
|
37
|
-
return "success";
|
|
38
|
-
}
|
|
39
|
-
function stringifyWithDepthLimit(obj, depthLimit) {
|
|
40
|
-
function helper(obj$1, currentDepth) {
|
|
41
|
-
if (typeof obj$1 !== "object" || obj$1 === null || obj$1 === void 0) return obj$1;
|
|
42
|
-
if (currentDepth >= depthLimit) {
|
|
43
|
-
if (Array.isArray(obj$1)) return "[Array]";
|
|
44
|
-
return "[Object]";
|
|
45
|
-
}
|
|
46
|
-
if (Array.isArray(obj$1)) return obj$1.map((item) => helper(item, currentDepth + 1));
|
|
47
|
-
const result = {};
|
|
48
|
-
for (const key of Object.keys(obj$1)) result[key] = helper(obj$1[key], currentDepth + 1);
|
|
49
|
-
return result;
|
|
50
|
-
}
|
|
51
|
-
return JSON.stringify(helper(obj, 0), null, 2);
|
|
52
|
-
}
|
|
53
|
-
var BaseMessage = class extends Serializable {
|
|
54
|
-
lc_namespace = ["langchain_core", "messages"];
|
|
55
|
-
lc_serializable = true;
|
|
56
|
-
get lc_aliases() {
|
|
57
|
-
return {
|
|
58
|
-
additional_kwargs: "additional_kwargs",
|
|
59
|
-
response_metadata: "response_metadata"
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
[MESSAGE_SYMBOL] = true;
|
|
63
|
-
id;
|
|
64
|
-
/** @inheritdoc */
|
|
65
|
-
name;
|
|
66
|
-
content;
|
|
67
|
-
additional_kwargs;
|
|
68
|
-
response_metadata;
|
|
69
|
-
/**
|
|
70
|
-
* @deprecated Use .getType() instead or import the proper typeguard.
|
|
71
|
-
* For example:
|
|
72
|
-
*
|
|
73
|
-
* ```ts
|
|
74
|
-
* import { isAIMessage } from "@langchain/core/messages";
|
|
75
|
-
*
|
|
76
|
-
* const message = new AIMessage("Hello!");
|
|
77
|
-
* isAIMessage(message); // true
|
|
78
|
-
* ```
|
|
79
|
-
*/
|
|
80
|
-
_getType() {
|
|
81
|
-
return this.type;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* @deprecated Use .type instead
|
|
85
|
-
* The type of the message.
|
|
86
|
-
*/
|
|
87
|
-
getType() {
|
|
88
|
-
return this._getType();
|
|
89
|
-
}
|
|
90
|
-
constructor(arg) {
|
|
91
|
-
const fields = typeof arg === "string" || Array.isArray(arg) ? { content: arg } : arg;
|
|
92
|
-
if (!fields.additional_kwargs) fields.additional_kwargs = {};
|
|
93
|
-
if (!fields.response_metadata) fields.response_metadata = {};
|
|
94
|
-
super(fields);
|
|
95
|
-
this.name = fields.name;
|
|
96
|
-
if (fields.content === void 0 && fields.contentBlocks !== void 0) {
|
|
97
|
-
this.content = fields.contentBlocks;
|
|
98
|
-
this.response_metadata = {
|
|
99
|
-
output_version: "v1",
|
|
100
|
-
...fields.response_metadata
|
|
101
|
-
};
|
|
102
|
-
} else if (fields.content !== void 0) {
|
|
103
|
-
this.content = fields.content ?? [];
|
|
104
|
-
this.response_metadata = fields.response_metadata;
|
|
105
|
-
} else {
|
|
106
|
-
this.content = [];
|
|
107
|
-
this.response_metadata = fields.response_metadata;
|
|
108
|
-
}
|
|
109
|
-
this.additional_kwargs = fields.additional_kwargs;
|
|
110
|
-
this.id = fields.id;
|
|
111
|
-
}
|
|
112
|
-
/** Get text content of the message. */
|
|
113
|
-
get text() {
|
|
114
|
-
if (typeof this.content === "string") return this.content;
|
|
115
|
-
if (!Array.isArray(this.content)) return "";
|
|
116
|
-
return this.content.map((c) => {
|
|
117
|
-
if (typeof c === "string") return c;
|
|
118
|
-
if (c.type === "text") return c.text;
|
|
119
|
-
return "";
|
|
120
|
-
}).join("");
|
|
121
|
-
}
|
|
122
|
-
get contentBlocks() {
|
|
123
|
-
const blocks = typeof this.content === "string" ? [{
|
|
124
|
-
type: "text",
|
|
125
|
-
text: this.content
|
|
126
|
-
}] : this.content;
|
|
127
|
-
const parsingSteps = [
|
|
128
|
-
convertToV1FromDataContent,
|
|
129
|
-
convertToV1FromChatCompletionsInput,
|
|
130
|
-
convertToV1FromAnthropicInput
|
|
131
|
-
];
|
|
132
|
-
const parsedBlocks = parsingSteps.reduce((blocks$1, step) => step(blocks$1), blocks);
|
|
133
|
-
return parsedBlocks;
|
|
134
|
-
}
|
|
135
|
-
toDict() {
|
|
136
|
-
return {
|
|
137
|
-
type: this.getType(),
|
|
138
|
-
data: this.toJSON().kwargs
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
static lc_name() {
|
|
142
|
-
return "BaseMessage";
|
|
143
|
-
}
|
|
144
|
-
get _printableFields() {
|
|
145
|
-
return {
|
|
146
|
-
id: this.id,
|
|
147
|
-
content: this.content,
|
|
148
|
-
name: this.name,
|
|
149
|
-
additional_kwargs: this.additional_kwargs,
|
|
150
|
-
response_metadata: this.response_metadata
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
static isInstance(obj) {
|
|
154
|
-
return typeof obj === "object" && obj !== null && MESSAGE_SYMBOL in obj && obj[MESSAGE_SYMBOL] === true && isMessage(obj);
|
|
155
|
-
}
|
|
156
|
-
_updateId(value) {
|
|
157
|
-
this.id = value;
|
|
158
|
-
this.lc_kwargs.id = value;
|
|
159
|
-
}
|
|
160
|
-
get [Symbol.toStringTag]() {
|
|
161
|
-
return this.constructor.lc_name();
|
|
162
|
-
}
|
|
163
|
-
[/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")](depth) {
|
|
164
|
-
if (depth === null) return this;
|
|
165
|
-
const printable = stringifyWithDepthLimit(this._printableFields, Math.max(4, depth));
|
|
166
|
-
return `${this.constructor.lc_name()} ${printable}`;
|
|
167
|
-
}
|
|
168
|
-
toFormattedString(format = "pretty") {
|
|
169
|
-
return convertToFormattedString(this, format);
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
function isOpenAIToolCallArray(value) {
|
|
173
|
-
return Array.isArray(value) && value.every((v) => typeof v.index === "number");
|
|
174
|
-
}
|
|
175
|
-
function _mergeDicts(left, right) {
|
|
176
|
-
if (left === void 0 && right === void 0) return void 0;
|
|
177
|
-
if (left === void 0 || right === void 0) return left ?? right;
|
|
178
|
-
const merged = { ...left };
|
|
179
|
-
for (const [key, value] of Object.entries(right)) if (merged[key] == null) merged[key] = value;
|
|
180
|
-
else if (value == null) continue;
|
|
181
|
-
else if (typeof merged[key] !== typeof value || Array.isArray(merged[key]) !== Array.isArray(value)) throw new Error(`field[${key}] already exists in the message chunk, but with a different type.`);
|
|
182
|
-
else if (typeof merged[key] === "string") if (key === "type") continue;
|
|
183
|
-
else if ([
|
|
184
|
-
"id",
|
|
185
|
-
"name",
|
|
186
|
-
"output_version",
|
|
187
|
-
"model_provider"
|
|
188
|
-
].includes(key)) {
|
|
189
|
-
if (value) merged[key] = value;
|
|
190
|
-
} else merged[key] += value;
|
|
191
|
-
else if (typeof merged[key] === "number") merged[key] = merged[key] + value;
|
|
192
|
-
else if (typeof merged[key] === "object" && !Array.isArray(merged[key])) merged[key] = _mergeDicts(merged[key], value);
|
|
193
|
-
else if (Array.isArray(merged[key])) merged[key] = _mergeLists(merged[key], value);
|
|
194
|
-
else if (merged[key] === value) continue;
|
|
195
|
-
else console.warn(`field[${key}] already exists in this message chunk and value has unsupported type.`);
|
|
196
|
-
return merged;
|
|
197
|
-
}
|
|
198
|
-
function _mergeLists(left, right) {
|
|
199
|
-
if (left === void 0 && right === void 0) return void 0;
|
|
200
|
-
else if (left === void 0 || right === void 0) return left || right;
|
|
201
|
-
else {
|
|
202
|
-
const merged = [...left];
|
|
203
|
-
for (const item of right) if (typeof item === "object" && item !== null && "index" in item && typeof item.index === "number") {
|
|
204
|
-
const toMerge = merged.findIndex((leftItem) => {
|
|
205
|
-
const isObject = typeof leftItem === "object";
|
|
206
|
-
const indiciesMatch = "index" in leftItem && leftItem.index === item.index;
|
|
207
|
-
const idsMatch = "id" in leftItem && "id" in item && leftItem?.id === item?.id;
|
|
208
|
-
const eitherItemMissingID = !("id" in leftItem) || !leftItem?.id || !("id" in item) || !item?.id;
|
|
209
|
-
return isObject && indiciesMatch && (idsMatch || eitherItemMissingID);
|
|
210
|
-
});
|
|
211
|
-
if (toMerge !== -1 && typeof merged[toMerge] === "object" && merged[toMerge] !== null) merged[toMerge] = _mergeDicts(merged[toMerge], item);
|
|
212
|
-
else merged.push(item);
|
|
213
|
-
} else if (typeof item === "object" && item !== null && "text" in item && item.text === "") continue;
|
|
214
|
-
else merged.push(item);
|
|
215
|
-
return merged;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
function _mergeObj(left, right) {
|
|
219
|
-
if (left === void 0 && right === void 0) return void 0;
|
|
220
|
-
if (left === void 0 || right === void 0) return left ?? right;
|
|
221
|
-
else if (typeof left !== typeof right) throw new Error(`Cannot merge objects of different types.
|
|
222
|
-
Left ${typeof left}
|
|
223
|
-
Right ${typeof right}`);
|
|
224
|
-
else if (typeof left === "string" && typeof right === "string") return left + right;
|
|
225
|
-
else if (Array.isArray(left) && Array.isArray(right)) return _mergeLists(left, right);
|
|
226
|
-
else if (typeof left === "object" && typeof right === "object") return _mergeDicts(left, right);
|
|
227
|
-
else if (left === right) return left;
|
|
228
|
-
else throw new Error(`Can not merge objects of different types.
|
|
229
|
-
Left ${left}
|
|
230
|
-
Right ${right}`);
|
|
231
|
-
}
|
|
232
|
-
var BaseMessageChunk = class BaseMessageChunk2 extends BaseMessage {
|
|
233
|
-
static isInstance(obj) {
|
|
234
|
-
if (!super.isInstance(obj)) return false;
|
|
235
|
-
let proto = Object.getPrototypeOf(obj);
|
|
236
|
-
while (proto !== null) {
|
|
237
|
-
if (proto === BaseMessageChunk2.prototype) return true;
|
|
238
|
-
proto = Object.getPrototypeOf(proto);
|
|
239
|
-
}
|
|
240
|
-
return false;
|
|
241
|
-
}
|
|
242
|
-
};
|
|
243
|
-
function _isMessageFieldWithRole(x) {
|
|
244
|
-
return typeof x.role === "string";
|
|
245
|
-
}
|
|
246
|
-
function isBaseMessage(messageLike) {
|
|
247
|
-
return typeof messageLike?._getType === "function";
|
|
248
|
-
}
|
|
249
|
-
function isBaseMessageChunk(messageLike) {
|
|
250
|
-
return BaseMessageChunk.isInstance(messageLike);
|
|
1
|
+
import clsx from "clsx";
|
|
2
|
+
import { twMerge } from "tailwind-merge";
|
|
3
|
+
function cn(...inputs) {
|
|
4
|
+
return twMerge(clsx(inputs));
|
|
251
5
|
}
|
|
252
6
|
export {
|
|
253
|
-
|
|
254
|
-
BaseMessageChunk,
|
|
255
|
-
_isMessageFieldWithRole,
|
|
256
|
-
_mergeDicts,
|
|
257
|
-
_mergeLists,
|
|
258
|
-
_mergeObj,
|
|
259
|
-
_mergeStatus,
|
|
260
|
-
isBaseMessage,
|
|
261
|
-
isBaseMessageChunk,
|
|
262
|
-
isOpenAIToolCallArray,
|
|
263
|
-
mergeContent
|
|
7
|
+
cn
|
|
264
8
|
};
|
|
265
9
|
//# sourceMappingURL=index.es40.js.map
|
package/dist/index.es40.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es40.js","sources":["../node_modules/.pnpm/@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/base.js"],"sourcesContent":["import { Serializable } from \"../load/serializable.js\";\nimport { isDataContentBlock } from \"./content/data.js\";\nimport { convertToV1FromAnthropicInput } from \"./block_translators/anthropic.js\";\nimport { convertToV1FromDataContent } from \"./block_translators/data.js\";\nimport { convertToV1FromChatCompletionsInput } from \"./block_translators/openai.js\";\nimport { isMessage } from \"./message.js\";\nimport { convertToFormattedString } from \"./format.js\";\n\n//#region src/messages/base.ts\n/** @internal */\nconst MESSAGE_SYMBOL = Symbol.for(\"langchain.message\");\nfunction mergeContent(firstContent, secondContent) {\n\tif (typeof firstContent === \"string\") {\n\t\tif (firstContent === \"\") return secondContent;\n\t\tif (typeof secondContent === \"string\") return firstContent + secondContent;\n\t\telse if (Array.isArray(secondContent) && secondContent.length === 0) return firstContent;\n\t\telse if (Array.isArray(secondContent) && secondContent.some((c) => isDataContentBlock(c))) return [{\n\t\t\ttype: \"text\",\n\t\t\tsource_type: \"text\",\n\t\t\ttext: firstContent\n\t\t}, ...secondContent];\n\t\telse return [{\n\t\t\ttype: \"text\",\n\t\t\ttext: firstContent\n\t\t}, ...secondContent];\n\t} else if (Array.isArray(secondContent)) return _mergeLists(firstContent, secondContent) ?? [...firstContent, ...secondContent];\n\telse if (secondContent === \"\") return firstContent;\n\telse if (Array.isArray(firstContent) && firstContent.some((c) => isDataContentBlock(c))) return [...firstContent, {\n\t\ttype: \"file\",\n\t\tsource_type: \"text\",\n\t\ttext: secondContent\n\t}];\n\telse return [...firstContent, {\n\t\ttype: \"text\",\n\t\ttext: secondContent\n\t}];\n}\n/**\n* 'Merge' two statuses. If either value passed is 'error', it will return 'error'. Else\n* it will return 'success'.\n*\n* @param {\"success\" | \"error\" | undefined} left The existing value to 'merge' with the new value.\n* @param {\"success\" | \"error\" | undefined} right The new value to 'merge' with the existing value\n* @returns {\"success\" | \"error\"} The 'merged' value.\n*/\nfunction _mergeStatus(left, right) {\n\tif (left === \"error\" || right === \"error\") return \"error\";\n\treturn \"success\";\n}\nfunction stringifyWithDepthLimit(obj, depthLimit) {\n\tfunction helper(obj$1, currentDepth) {\n\t\tif (typeof obj$1 !== \"object\" || obj$1 === null || obj$1 === void 0) return obj$1;\n\t\tif (currentDepth >= depthLimit) {\n\t\t\tif (Array.isArray(obj$1)) return \"[Array]\";\n\t\t\treturn \"[Object]\";\n\t\t}\n\t\tif (Array.isArray(obj$1)) return obj$1.map((item) => helper(item, currentDepth + 1));\n\t\tconst result = {};\n\t\tfor (const key of Object.keys(obj$1)) result[key] = helper(obj$1[key], currentDepth + 1);\n\t\treturn result;\n\t}\n\treturn JSON.stringify(helper(obj, 0), null, 2);\n}\n/**\n* Base class for all types of messages in a conversation. It includes\n* properties like `content`, `name`, and `additional_kwargs`. It also\n* includes methods like `toDict()` and `_getType()`.\n*/\nvar BaseMessage = class extends Serializable {\n\tlc_namespace = [\"langchain_core\", \"messages\"];\n\tlc_serializable = true;\n\tget lc_aliases() {\n\t\treturn {\n\t\t\tadditional_kwargs: \"additional_kwargs\",\n\t\t\tresponse_metadata: \"response_metadata\"\n\t\t};\n\t}\n\t[MESSAGE_SYMBOL] = true;\n\tid;\n\t/** @inheritdoc */\n\tname;\n\tcontent;\n\tadditional_kwargs;\n\tresponse_metadata;\n\t/**\n\t* @deprecated Use .getType() instead or import the proper typeguard.\n\t* For example:\n\t*\n\t* ```ts\n\t* import { isAIMessage } from \"@langchain/core/messages\";\n\t*\n\t* const message = new AIMessage(\"Hello!\");\n\t* isAIMessage(message); // true\n\t* ```\n\t*/\n\t_getType() {\n\t\treturn this.type;\n\t}\n\t/**\n\t* @deprecated Use .type instead\n\t* The type of the message.\n\t*/\n\tgetType() {\n\t\treturn this._getType();\n\t}\n\tconstructor(arg) {\n\t\tconst fields = typeof arg === \"string\" || Array.isArray(arg) ? { content: arg } : arg;\n\t\tif (!fields.additional_kwargs) fields.additional_kwargs = {};\n\t\tif (!fields.response_metadata) fields.response_metadata = {};\n\t\tsuper(fields);\n\t\tthis.name = fields.name;\n\t\tif (fields.content === void 0 && fields.contentBlocks !== void 0) {\n\t\t\tthis.content = fields.contentBlocks;\n\t\t\tthis.response_metadata = {\n\t\t\t\toutput_version: \"v1\",\n\t\t\t\t...fields.response_metadata\n\t\t\t};\n\t\t} else if (fields.content !== void 0) {\n\t\t\tthis.content = fields.content ?? [];\n\t\t\tthis.response_metadata = fields.response_metadata;\n\t\t} else {\n\t\t\tthis.content = [];\n\t\t\tthis.response_metadata = fields.response_metadata;\n\t\t}\n\t\tthis.additional_kwargs = fields.additional_kwargs;\n\t\tthis.id = fields.id;\n\t}\n\t/** Get text content of the message. */\n\tget text() {\n\t\tif (typeof this.content === \"string\") return this.content;\n\t\tif (!Array.isArray(this.content)) return \"\";\n\t\treturn this.content.map((c) => {\n\t\t\tif (typeof c === \"string\") return c;\n\t\t\tif (c.type === \"text\") return c.text;\n\t\t\treturn \"\";\n\t\t}).join(\"\");\n\t}\n\tget contentBlocks() {\n\t\tconst blocks = typeof this.content === \"string\" ? [{\n\t\t\ttype: \"text\",\n\t\t\ttext: this.content\n\t\t}] : this.content;\n\t\tconst parsingSteps = [\n\t\t\tconvertToV1FromDataContent,\n\t\t\tconvertToV1FromChatCompletionsInput,\n\t\t\tconvertToV1FromAnthropicInput\n\t\t];\n\t\tconst parsedBlocks = parsingSteps.reduce((blocks$1, step) => step(blocks$1), blocks);\n\t\treturn parsedBlocks;\n\t}\n\ttoDict() {\n\t\treturn {\n\t\t\ttype: this.getType(),\n\t\t\tdata: this.toJSON().kwargs\n\t\t};\n\t}\n\tstatic lc_name() {\n\t\treturn \"BaseMessage\";\n\t}\n\tget _printableFields() {\n\t\treturn {\n\t\t\tid: this.id,\n\t\t\tcontent: this.content,\n\t\t\tname: this.name,\n\t\t\tadditional_kwargs: this.additional_kwargs,\n\t\t\tresponse_metadata: this.response_metadata\n\t\t};\n\t}\n\tstatic isInstance(obj) {\n\t\treturn typeof obj === \"object\" && obj !== null && MESSAGE_SYMBOL in obj && obj[MESSAGE_SYMBOL] === true && isMessage(obj);\n\t}\n\t_updateId(value) {\n\t\tthis.id = value;\n\t\tthis.lc_kwargs.id = value;\n\t}\n\tget [Symbol.toStringTag]() {\n\t\treturn this.constructor.lc_name();\n\t}\n\t[Symbol.for(\"nodejs.util.inspect.custom\")](depth) {\n\t\tif (depth === null) return this;\n\t\tconst printable = stringifyWithDepthLimit(this._printableFields, Math.max(4, depth));\n\t\treturn `${this.constructor.lc_name()} ${printable}`;\n\t}\n\ttoFormattedString(format = \"pretty\") {\n\t\treturn convertToFormattedString(this, format);\n\t}\n};\nfunction isOpenAIToolCallArray(value) {\n\treturn Array.isArray(value) && value.every((v) => typeof v.index === \"number\");\n}\nfunction _mergeDicts(left, right) {\n\tif (left === void 0 && right === void 0) return void 0;\n\tif (left === void 0 || right === void 0) return left ?? right;\n\tconst merged = { ...left };\n\tfor (const [key, value] of Object.entries(right)) if (merged[key] == null) merged[key] = value;\n\telse if (value == null) continue;\n\telse if (typeof merged[key] !== typeof value || Array.isArray(merged[key]) !== Array.isArray(value)) throw new Error(`field[${key}] already exists in the message chunk, but with a different type.`);\n\telse if (typeof merged[key] === \"string\") if (key === \"type\") continue;\n\telse if ([\n\t\t\"id\",\n\t\t\"name\",\n\t\t\"output_version\",\n\t\t\"model_provider\"\n\t].includes(key)) {\n\t\tif (value) merged[key] = value;\n\t} else merged[key] += value;\n\telse if (typeof merged[key] === \"number\") merged[key] = merged[key] + value;\n\telse if (typeof merged[key] === \"object\" && !Array.isArray(merged[key])) merged[key] = _mergeDicts(merged[key], value);\n\telse if (Array.isArray(merged[key])) merged[key] = _mergeLists(merged[key], value);\n\telse if (merged[key] === value) continue;\n\telse console.warn(`field[${key}] already exists in this message chunk and value has unsupported type.`);\n\treturn merged;\n}\nfunction _mergeLists(left, right) {\n\tif (left === void 0 && right === void 0) return void 0;\n\telse if (left === void 0 || right === void 0) return left || right;\n\telse {\n\t\tconst merged = [...left];\n\t\tfor (const item of right) if (typeof item === \"object\" && item !== null && \"index\" in item && typeof item.index === \"number\") {\n\t\t\tconst toMerge = merged.findIndex((leftItem) => {\n\t\t\t\tconst isObject = typeof leftItem === \"object\";\n\t\t\t\tconst indiciesMatch = \"index\" in leftItem && leftItem.index === item.index;\n\t\t\t\tconst idsMatch = \"id\" in leftItem && \"id\" in item && leftItem?.id === item?.id;\n\t\t\t\tconst eitherItemMissingID = !(\"id\" in leftItem) || !leftItem?.id || !(\"id\" in item) || !item?.id;\n\t\t\t\treturn isObject && indiciesMatch && (idsMatch || eitherItemMissingID);\n\t\t\t});\n\t\t\tif (toMerge !== -1 && typeof merged[toMerge] === \"object\" && merged[toMerge] !== null) merged[toMerge] = _mergeDicts(merged[toMerge], item);\n\t\t\telse merged.push(item);\n\t\t} else if (typeof item === \"object\" && item !== null && \"text\" in item && item.text === \"\") continue;\n\t\telse merged.push(item);\n\t\treturn merged;\n\t}\n}\nfunction _mergeObj(left, right) {\n\tif (left === void 0 && right === void 0) return void 0;\n\tif (left === void 0 || right === void 0) return left ?? right;\n\telse if (typeof left !== typeof right) throw new Error(`Cannot merge objects of different types.\\nLeft ${typeof left}\\nRight ${typeof right}`);\n\telse if (typeof left === \"string\" && typeof right === \"string\") return left + right;\n\telse if (Array.isArray(left) && Array.isArray(right)) return _mergeLists(left, right);\n\telse if (typeof left === \"object\" && typeof right === \"object\") return _mergeDicts(left, right);\n\telse if (left === right) return left;\n\telse throw new Error(`Can not merge objects of different types.\\nLeft ${left}\\nRight ${right}`);\n}\n/**\n* Represents a chunk of a message, which can be concatenated with other\n* message chunks. It includes a method `_merge_kwargs_dict()` for merging\n* additional keyword arguments from another `BaseMessageChunk` into this\n* one. It also overrides the `__add__()` method to support concatenation\n* of `BaseMessageChunk` instances.\n*/\nvar BaseMessageChunk = class BaseMessageChunk extends BaseMessage {\n\tstatic isInstance(obj) {\n\t\tif (!super.isInstance(obj)) return false;\n\t\tlet proto = Object.getPrototypeOf(obj);\n\t\twhile (proto !== null) {\n\t\t\tif (proto === BaseMessageChunk.prototype) return true;\n\t\t\tproto = Object.getPrototypeOf(proto);\n\t\t}\n\t\treturn false;\n\t}\n};\nfunction _isMessageFieldWithRole(x) {\n\treturn typeof x.role === \"string\";\n}\n/**\n* @deprecated Use {@link BaseMessage.isInstance} instead\n*/\nfunction isBaseMessage(messageLike) {\n\treturn typeof messageLike?._getType === \"function\";\n}\n/**\n* @deprecated Use {@link BaseMessageChunk.isInstance} instead\n*/\nfunction isBaseMessageChunk(messageLike) {\n\treturn BaseMessageChunk.isInstance(messageLike);\n}\n\n//#endregion\nexport { BaseMessage, BaseMessageChunk, _isMessageFieldWithRole, _mergeDicts, _mergeLists, _mergeObj, _mergeStatus, isBaseMessage, isBaseMessageChunk, isOpenAIToolCallArray, mergeContent };\n//# sourceMappingURL=base.js.map"],"names":["BaseMessageChunk"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.es40.js","sources":["../src/utils/tailwindUtil.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type { ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}"],"names":[],"mappings":";;AAIO,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;"}
|