langgraph-ui-components 0.0.10 → 0.0.11-testing
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.es.js +3 -2
- package/dist/index.es10.js +25 -6
- package/dist/index.es10.js.map +1 -1
- package/dist/index.es100.js +131 -64
- package/dist/index.es100.js.map +1 -1
- package/dist/index.es101.js +65 -32
- package/dist/index.es101.js.map +1 -1
- package/dist/index.es102.js +34 -34
- package/dist/index.es102.js.map +1 -1
- package/dist/index.es103.js +35 -164
- package/dist/index.es103.js.map +1 -1
- package/dist/index.es104.js +156 -193
- package/dist/index.es104.js.map +1 -1
- package/dist/index.es105.js +202 -13
- package/dist/index.es105.js.map +1 -1
- package/dist/index.es106.js +13 -29
- package/dist/index.es106.js.map +1 -1
- package/dist/index.es107.js +25 -29
- package/dist/index.es107.js.map +1 -1
- package/dist/index.es108.js +24 -3147
- package/dist/index.es108.js.map +1 -1
- package/dist/index.es109.js +3151 -31
- package/dist/index.es109.js.map +1 -1
- package/dist/index.es110.js +21 -5
- package/dist/index.es110.js.map +1 -1
- package/dist/index.es111.js +64 -69
- package/dist/index.es111.js.map +1 -1
- package/dist/index.es112.js +3 -37
- package/dist/index.es112.js.map +1 -1
- package/dist/index.es113.js +16 -5
- package/dist/index.es113.js.map +1 -1
- package/dist/index.es114.js +7 -2
- package/dist/index.es114.js.map +1 -1
- package/dist/index.es115.js +2 -13
- package/dist/index.es115.js.map +1 -1
- package/dist/index.es116.js +9 -499
- package/dist/index.es116.js.map +1 -1
- package/dist/index.es117.js +501 -5
- package/dist/index.es117.js.map +1 -1
- package/dist/index.es118.js +7 -2
- package/dist/index.es118.js.map +1 -1
- package/dist/index.es119.js +2 -148
- package/dist/index.es119.js.map +1 -1
- package/dist/index.es120.js +118 -878
- package/dist/index.es120.js.map +1 -1
- package/dist/index.es121.js +877 -251
- package/dist/index.es121.js.map +1 -1
- package/dist/index.es122.js +281 -3
- package/dist/index.es122.js.map +1 -1
- package/dist/index.es123.js +3 -445
- package/dist/index.es123.js.map +1 -1
- package/dist/index.es124.js +437 -39
- package/dist/index.es124.js.map +1 -1
- package/dist/index.es125.js +46 -22
- package/dist/index.es125.js.map +1 -1
- package/dist/index.es126.js +21 -78
- package/dist/index.es126.js.map +1 -1
- package/dist/index.es127.js +76 -126
- package/dist/index.es127.js.map +1 -1
- package/dist/index.es128.js +125 -45
- package/dist/index.es128.js.map +1 -1
- package/dist/index.es129.js +48 -9
- package/dist/index.es129.js.map +1 -1
- package/dist/index.es130.js +10 -45
- package/dist/index.es130.js.map +1 -1
- package/dist/index.es131.js +43 -97
- package/dist/index.es131.js.map +1 -1
- package/dist/index.es132.js +94 -48
- package/dist/index.es132.js.map +1 -1
- package/dist/index.es133.js +51 -14
- package/dist/index.es133.js.map +1 -1
- package/dist/index.es134.js +1 -1
- package/dist/index.es135.js +1 -1
- package/dist/index.es138.js +1 -1
- package/dist/index.es139.js +1 -1
- package/dist/index.es140.js +1 -1
- package/dist/index.es141.js +1 -1
- package/dist/index.es142.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 +3 -3
- 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 +15 -15
- 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 +162 -13
- package/dist/index.es183.js.map +1 -1
- package/dist/index.es184.js +2 -89
- package/dist/index.es184.js.map +1 -1
- package/dist/index.es185.js +15 -2
- package/dist/index.es185.js.map +1 -1
- package/dist/index.es186.js +89 -2
- package/dist/index.es186.js.map +1 -1
- package/dist/index.es187.js +2 -2
- package/dist/index.es188.js +56 -2
- package/dist/index.es188.js.map +1 -1
- package/dist/index.es189.js +100 -2
- package/dist/index.es189.js.map +1 -1
- package/dist/index.es190.js +191 -2
- package/dist/index.es190.js.map +1 -1
- package/dist/index.es191.js +110 -2
- package/dist/index.es191.js.map +1 -1
- package/dist/index.es192.js +35 -2
- package/dist/index.es192.js.map +1 -1
- package/dist/index.es193.js +10 -2
- package/dist/index.es193.js.map +1 -1
- package/dist/index.es194.js +11 -2
- package/dist/index.es194.js.map +1 -1
- package/dist/index.es195.js +12 -2
- package/dist/index.es195.js.map +1 -1
- package/dist/index.es196.js +91 -2
- package/dist/index.es196.js.map +1 -1
- package/dist/index.es197.js +275 -2
- package/dist/index.es197.js.map +1 -1
- package/dist/index.es198.js +2 -2
- package/dist/index.es199.js +164 -2
- package/dist/index.es199.js.map +1 -1
- package/dist/index.es200.js +51 -2
- package/dist/index.es200.js.map +1 -1
- package/dist/index.es201.js +40 -2
- package/dist/index.es201.js.map +1 -1
- package/dist/index.es202.js +35 -2
- package/dist/index.es202.js.map +1 -1
- package/dist/index.es203.js +40 -2
- package/dist/index.es203.js.map +1 -1
- package/dist/index.es204.js +24 -2
- package/dist/index.es204.js.map +1 -1
- package/dist/index.es205.js +591 -2
- package/dist/index.es205.js.map +1 -1
- package/dist/index.es206.js +125 -2
- package/dist/index.es206.js.map +1 -1
- package/dist/index.es207.js +2 -2
- package/dist/index.es208.js +2 -2
- package/dist/index.es209.js +2 -2
- package/dist/index.es210.js +2 -2
- 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.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.es230.js +2 -2
- package/dist/index.es231.js +2 -56
- package/dist/index.es231.js.map +1 -1
- package/dist/index.es232.js +2 -100
- package/dist/index.es232.js.map +1 -1
- package/dist/index.es233.js +2 -191
- package/dist/index.es233.js.map +1 -1
- package/dist/index.es234.js +2 -110
- package/dist/index.es234.js.map +1 -1
- package/dist/index.es235.js +2 -35
- package/dist/index.es235.js.map +1 -1
- package/dist/index.es236.js +2 -10
- package/dist/index.es236.js.map +1 -1
- package/dist/index.es237.js +2 -11
- package/dist/index.es237.js.map +1 -1
- package/dist/index.es238.js +2 -12
- package/dist/index.es238.js.map +1 -1
- package/dist/index.es239.js +2 -91
- package/dist/index.es239.js.map +1 -1
- package/dist/index.es24.js +1 -1
- package/dist/index.es240.js +2 -275
- package/dist/index.es240.js.map +1 -1
- package/dist/index.es241.js +2 -2
- package/dist/index.es242.js +2 -164
- package/dist/index.es242.js.map +1 -1
- package/dist/index.es243.js +2 -51
- package/dist/index.es243.js.map +1 -1
- package/dist/index.es244.js +2 -40
- package/dist/index.es244.js.map +1 -1
- package/dist/index.es245.js +2 -35
- package/dist/index.es245.js.map +1 -1
- package/dist/index.es246.js +2 -40
- package/dist/index.es246.js.map +1 -1
- package/dist/index.es247.js +2 -24
- package/dist/index.es247.js.map +1 -1
- package/dist/index.es248.js +2 -591
- package/dist/index.es248.js.map +1 -1
- package/dist/index.es249.js +2 -125
- package/dist/index.es249.js.map +1 -1
- package/dist/index.es25.js +3 -1
- package/dist/index.es25.js.map +1 -1
- package/dist/index.es250.js +2 -164
- package/dist/index.es250.js.map +1 -1
- package/dist/index.es251.js +2 -2
- package/dist/index.es252.js +2 -2
- package/dist/index.es253.js +1 -1
- package/dist/index.es258.js +1 -1
- package/dist/index.es260.js +2 -2
- package/dist/index.es262.js +2 -2
- package/dist/index.es265.js +1 -1
- package/dist/index.es267.js +1 -1
- package/dist/index.es277.js +2 -147
- package/dist/index.es277.js.map +1 -1
- package/dist/index.es278.js +126 -167
- package/dist/index.es278.js.map +1 -1
- package/dist/index.es279.js +188 -2
- package/dist/index.es279.js.map +1 -1
- package/dist/index.es280.js +1 -1
- package/dist/index.es283.js +1 -1
- package/dist/index.es288.js +1 -1
- package/dist/index.es29.js +1 -1
- package/dist/index.es3.js +24 -9
- package/dist/index.es3.js.map +1 -1
- package/dist/index.es300.js +1 -1
- package/dist/index.es302.js +1 -1
- package/dist/index.es31.js +7 -7
- package/dist/index.es314.js +1 -1
- package/dist/index.es32.js +1 -1
- package/dist/index.es334.js +2 -2
- package/dist/index.es35.js +4 -4
- package/dist/index.es36.js +1185 -111
- package/dist/index.es36.js.map +1 -1
- package/dist/index.es37.js +7 -71
- package/dist/index.es37.js.map +1 -1
- package/dist/index.es38.js +9 -18
- package/dist/index.es38.js.map +1 -1
- package/dist/index.es39.js +136 -250
- package/dist/index.es39.js.map +1 -1
- package/dist/index.es4.js +2 -1
- package/dist/index.es4.js.map +1 -1
- package/dist/index.es40.js +116 -41
- package/dist/index.es40.js.map +1 -1
- package/dist/index.es41.js +64 -208
- package/dist/index.es41.js.map +1 -1
- package/dist/index.es42.js +17 -66
- package/dist/index.es42.js.map +1 -1
- package/dist/index.es43.js +236 -117
- package/dist/index.es43.js.map +1 -1
- package/dist/index.es44.js +38 -19
- package/dist/index.es44.js.map +1 -1
- package/dist/index.es45.js +202 -217
- package/dist/index.es45.js.map +1 -1
- package/dist/index.es46.js +65 -7
- package/dist/index.es46.js.map +1 -1
- package/dist/index.es47.js +131 -1181
- package/dist/index.es47.js.map +1 -1
- package/dist/index.es48.js +25 -8
- package/dist/index.es48.js.map +1 -1
- package/dist/index.es49.js +218 -135
- package/dist/index.es49.js.map +1 -1
- package/dist/index.es5.js.map +1 -1
- package/dist/index.es50.js +5 -208
- package/dist/index.es50.js.map +1 -1
- package/dist/index.es51.js +208 -5
- package/dist/index.es51.js.map +1 -1
- package/dist/index.es52.js +90 -7
- package/dist/index.es52.js.map +1 -1
- package/dist/index.es53.js +6 -92
- package/dist/index.es53.js.map +1 -1
- package/dist/index.es54.js +14 -3
- package/dist/index.es54.js.map +1 -1
- package/dist/index.es55.js +8 -36
- package/dist/index.es55.js.map +1 -1
- package/dist/index.es56.js +83 -61
- package/dist/index.es56.js.map +1 -1
- package/dist/index.es57.js +3 -37
- package/dist/index.es57.js.map +1 -1
- package/dist/index.es58.js +34 -304
- package/dist/index.es58.js.map +1 -1
- package/dist/index.es59.js +72 -9
- package/dist/index.es59.js.map +1 -1
- package/dist/index.es60.js +32 -85
- package/dist/index.es60.js.map +1 -1
- package/dist/index.es61.js +304 -6
- package/dist/index.es61.js.map +1 -1
- package/dist/index.es62.js +9 -15
- package/dist/index.es62.js.map +1 -1
- package/dist/index.es63.js +3 -3
- package/dist/index.es64.js +5 -142
- package/dist/index.es64.js.map +1 -1
- package/dist/index.es65.js +148 -285
- package/dist/index.es65.js.map +1 -1
- package/dist/index.es66.js +668 -62
- package/dist/index.es66.js.map +1 -1
- package/dist/index.es67.js +131 -201
- package/dist/index.es67.js.map +1 -1
- package/dist/index.es68.js +295 -29
- package/dist/index.es68.js.map +1 -1
- package/dist/index.es69.js +65 -8
- package/dist/index.es69.js.map +1 -1
- package/dist/index.es7.js +2 -1
- package/dist/index.es7.js.map +1 -1
- package/dist/index.es70.js +210 -9
- package/dist/index.es70.js.map +1 -1
- package/dist/index.es71.js +28 -181
- package/dist/index.es71.js.map +1 -1
- package/dist/index.es72.js +8 -23
- package/dist/index.es72.js.map +1 -1
- package/dist/index.es73.js +9 -1397
- package/dist/index.es73.js.map +1 -1
- package/dist/index.es74.js +187 -9
- package/dist/index.es74.js.map +1 -1
- package/dist/index.es75.js +24 -8
- package/dist/index.es75.js.map +1 -1
- package/dist/index.es76.js +1399 -5
- package/dist/index.es76.js.map +1 -1
- package/dist/index.es77.js +9 -163
- package/dist/index.es77.js.map +1 -1
- package/dist/index.es78.js +8 -672
- package/dist/index.es78.js.map +1 -1
- package/dist/index.es79.js +36 -20
- package/dist/index.es79.js.map +1 -1
- package/dist/index.es80.js +5 -68
- package/dist/index.es80.js.map +1 -1
- package/dist/index.es81.js +73 -3
- package/dist/index.es81.js.map +1 -1
- package/dist/index.es82.js +36 -11
- package/dist/index.es82.js.map +1 -1
- package/dist/index.es83.js +10 -38
- package/dist/index.es83.js.map +1 -1
- package/dist/index.es84.js +34 -28
- package/dist/index.es84.js.map +1 -1
- package/dist/index.es85.js +28 -226
- package/dist/index.es85.js.map +1 -1
- package/dist/index.es86.js +228 -26
- package/dist/index.es86.js.map +1 -1
- package/dist/index.es87.js +26 -71
- package/dist/index.es87.js.map +1 -1
- package/dist/index.es88.js +41 -42
- package/dist/index.es88.js.map +1 -1
- package/dist/index.es89.js +71 -47
- package/dist/index.es89.js.map +1 -1
- package/dist/index.es90.js +37 -15
- package/dist/index.es90.js.map +1 -1
- package/dist/index.es91.js +6 -19
- package/dist/index.es91.js.map +1 -1
- package/dist/index.es92.js +40 -54
- package/dist/index.es92.js.map +1 -1
- package/dist/index.es93.js +56 -12
- package/dist/index.es93.js.map +1 -1
- package/dist/index.es94.js +13 -137
- package/dist/index.es94.js.map +1 -1
- package/dist/index.es95.js +135 -19
- package/dist/index.es95.js.map +1 -1
- package/dist/index.es96.js +18 -179
- package/dist/index.es96.js.map +1 -1
- package/dist/index.es97.js +163 -222
- package/dist/index.es97.js.map +1 -1
- package/dist/index.es98.js +187 -301
- package/dist/index.es98.js.map +1 -1
- package/dist/index.es99.js +348 -130
- package/dist/index.es99.js.map +1 -1
- package/package.json +1 -1
package/dist/index.es147.js
CHANGED
package/dist/index.es148.js
CHANGED
package/dist/index.es149.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as base16Ateliersulphurpool_light } from "./index.
|
|
1
|
+
import { __exports as base16Ateliersulphurpool_light } from "./index.es218.js";
|
|
2
2
|
var hasRequiredBase16Ateliersulphurpool_light;
|
|
3
3
|
function requireBase16Ateliersulphurpool_light() {
|
|
4
4
|
if (hasRequiredBase16Ateliersulphurpool_light) return base16Ateliersulphurpool_light;
|
package/dist/index.es150.js
CHANGED
package/dist/index.es151.js
CHANGED
package/dist/index.es152.js
CHANGED
package/dist/index.es153.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as coyWithoutShadows } from "./index.
|
|
1
|
+
import { __exports as coyWithoutShadows } from "./index.es222.js";
|
|
2
2
|
var hasRequiredCoyWithoutShadows;
|
|
3
3
|
function requireCoyWithoutShadows() {
|
|
4
4
|
if (hasRequiredCoyWithoutShadows) return coyWithoutShadows;
|
package/dist/index.es154.js
CHANGED
package/dist/index.es155.js
CHANGED
package/dist/index.es156.js
CHANGED
package/dist/index.es157.js
CHANGED
package/dist/index.es158.js
CHANGED
package/dist/index.es159.js
CHANGED
package/dist/index.es16.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
-
import useTools from "./index.es10.js";
|
|
3
2
|
import { useThread } from "./index.es6.js";
|
|
3
|
+
import { useTools } from "./index.es10.js";
|
|
4
4
|
import { getContentString } from "./index.es23.js";
|
|
5
5
|
import { PanelLeft, MoreVertical, Pencil, Share2, Archive, Trash2 } from "lucide-react";
|
|
6
6
|
import { useState, useEffect, useRef } from "react";
|
|
@@ -9,7 +9,7 @@ function ThreadHistory() {
|
|
|
9
9
|
const [searchOpen, setSearchOpen] = useState(false);
|
|
10
10
|
const [searchQuery, setSearchQuery] = useState("");
|
|
11
11
|
const { threads, getThreads, setThreadId, setThreads, setThreadsLoading } = useThread();
|
|
12
|
-
const {
|
|
12
|
+
const { tools } = useTools();
|
|
13
13
|
useEffect(() => {
|
|
14
14
|
if (typeof window === "undefined") return;
|
|
15
15
|
setThreadsLoading(true);
|
|
@@ -33,7 +33,7 @@ function ThreadHistory() {
|
|
|
33
33
|
className: `flex h-full flex-col border-r border-white/10 bg-zinc transition-all duration-300 ease-in-out ${collapsed ? "w-14" : "w-64"}`,
|
|
34
34
|
children: [
|
|
35
35
|
/* @__PURE__ */ jsx("div", { className: "flex h-14 items-center mx-2 border-b border-white/10", children: /* @__PURE__ */ jsx("div", { className: "flex ml-auto cursor-pointer p-2 hover:bg-white/10 rounded-md", children: /* @__PURE__ */ jsx(PanelLeft, { className: "h-5 w-5 text-white/70", onClick: () => setCollapsed((v) => !v) }) }) }),
|
|
36
|
-
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-1 px-2 py-3", children:
|
|
36
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-1 px-2 py-3", children: tools.map((t, index) => {
|
|
37
37
|
let handleClick = t.onClick;
|
|
38
38
|
if (t.label === "New chat") {
|
|
39
39
|
handleClick = () => setThreadId(null);
|
package/dist/index.es16.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es16.js","sources":["../src/components/threads/ThreadHistory.tsx"],"sourcesContent":["import useTools from \"@/hooks/useTools\";\nimport { useThread } from \"@/providers/Thread\";\nimport { getContentString } from \"@/utils/utils\";\nimport type { Thread } from \"@langchain/langgraph-sdk\";\nimport {\n Archive,\n MoreVertical,\n PanelLeft,\n Pencil,\n Share2,\n Trash2\n} from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\n\n// type ThreadHeaderProp = {\n// header?: string\n// }\n\nexport default function ThreadHistory() {\n const [collapsed, setCollapsed] = useState(false);\n const [searchOpen, setSearchOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const { threads, getThreads, setThreadId, setThreads, setThreadsLoading } = useThread();\n const { tool } = useTools();\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n setThreadsLoading(true);\n getThreads()\n .then(setThreads)\n .catch(console.error)\n .finally(() => setThreadsLoading(false));\n }, []);\n\n // Filter threads based on search query\n const filteredThreads = threads.filter((t) => {\n if (!searchQuery.trim()) return true;\n\n const searchLower = searchQuery.toLowerCase();\n const threadName = (t.metadata?.name as string) || \"\";\n\n // Check thread name\n if (threadName.toLowerCase().includes(searchLower)) return true;\n\n // Check first message content\n const threadValues = t.values as any;\n if (threadValues?.messages?.[0]) {\n const firstMessageContent = getContentString(threadValues.messages[0].content);\n if (firstMessageContent.toLowerCase().includes(searchLower)) return true;\n }\n\n return false;\n });\n\n return (\n <aside\n className={`flex h-full flex-col border-r border-white/10 bg-zinc transition-all duration-300 ease-in-out ${collapsed ? \"w-14\" : \"w-64\"}`}>\n {/* Top */}\n <div className=\"flex h-14 items-center mx-2 border-b border-white/10\">\n {/* <div className=\"flex mx-auto gap-2\">\n {header}\n </div> */}\n <div className=\"flex ml-auto cursor-pointer p-2 hover:bg-white/10 rounded-md\">\n <PanelLeft className=\"h-5 w-5 text-white/70\" onClick={() => setCollapsed(v => !v)} />\n </div>\n </div>\n\n {/* Primary actions */}\n <div className=\"flex flex-col gap-1 px-2 py-3\">\n\n {tool.map((t, index) => {\n // Override onClick for specific tools\n let handleClick = t.onClick;\n if (t.label === 'New chat') {\n handleClick = () => setThreadId(null);\n } else if (t.label === 'Search') {\n handleClick = () => setSearchOpen(true);\n }\n\n // Show search input instead of search button when searchOpen is true\n if (t.label === 'Search' && !collapsed && searchOpen) {\n return (\n <div key={index} className=\"px-2 py-2\">\n <input\n type=\"text\"\n placeholder=\"Search chats...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onBlur={() => {\n if (!searchQuery.trim()) {\n setSearchOpen(false);\n }\n }}\n autoFocus\n className=\"w-full bg-zinc-800 text-white/80 text-sm px-3 py-2 rounded-md outline-none focus:ring-1 focus:ring-zinc-600 placeholder:text-white/40\"\n />\n </div>\n );\n }\n\n return (\n <NavItem \n key={index}\n icon={t.icon} \n label={t.label} \n alt={t.alt}\n collapsed={collapsed} \n onClick={handleClick} \n />\n );\n })}\n </div>\n\n {/* Chats (scrollable) */}\n <div className=\"flex-1 flex flex-col px-2 overflow-hidden\">\n {!collapsed && (\n <>\n <p className=\"mb-2 px-2 text-xs uppercase text-white/40\">\n Your chats {searchQuery && `(${filteredThreads.length})`}\n </p>\n <div className=\"flex-1 space-y-1 overflow-y-auto overflow-x-hidden thread-scrollbar\">\n <ThreadList threads={filteredThreads} />\n </div>\n </>\n )}\n\n </div>\n\n {/* User */}\n {/* <div className=\"border-t border-white/10 p-2\">\n <div className=\"flex items-center justify-center rounded-md p-2 hover:bg-white/10\">\n <User className=\"h-5 w-5 text-white/70\" />\n {!collapsed && (\n <span className=\"ml-2 text-sm text-white/70\">Karthik MP</span>\n )}\n </div>\n </div> */}\n </aside>\n );\n}\n\n/* ---------- Components ---------- */\n\nfunction NavItem({\n icon,\n label,\n alt,\n collapsed,\n onClick\n}: {\n label: string;\n icon?: React.ReactNode;\n alt?: string;\n collapsed: boolean;\n onClick?: () => void;\n}) {\n return (\n <button\n className=\"flex items-center gap-3 rounded-md px-2 py-2\n text-white/70 hover:bg-white/10 cursor-pointer\"\n onClick={onClick}\n title={alt || label}\n >\n <div className=\"h-5 w-5\">{icon}</div>\n {!collapsed && <span className=\"text-sm\">{label}</span>}\n </button>\n );\n}\n\nfunction ThreadList({\n threads,\n onThreadClick,\n}: {\n threads: Thread[];\n onThreadClick?: (threadId: string) => void;\n}) {\n\n const { threadId, setThreadId, deleteThread, updateThread } = useThread();\n const [hoveredThread, setHoveredThread] = useState<string | null>(null);\n const [dropdownThread, setDropdownThread] = useState<string | null>(null);\n const [editingThread, setEditingThread] = useState<string | null>(null);\n const [editValue, setEditValue] = useState(\"\");\n const dropdownRef = useRef<HTMLDivElement>(null);\n const editInputRef = useRef<HTMLInputElement>(null);\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setDropdownThread(null);\n }\n };\n\n if (dropdownThread) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [dropdownThread]);\n\n // Focus input when editing starts\n useEffect(() => {\n if (editingThread && editInputRef.current) {\n editInputRef.current.focus();\n editInputRef.current.select();\n }\n }, [editingThread]);\n\n const handleRenameSubmit = async (thread: Thread) => {\n const threadValues = thread.values as any;\n const originalName = thread.metadata?.name ||\n (threadValues?.messages?.[0] ? getContentString(threadValues.messages[0].content) : thread.thread_id);\n\n if (editValue.trim() && editValue.trim() !== originalName) {\n try {\n await updateThread(thread.thread_id, {\n ...thread.metadata,\n name: editValue.trim()\n });\n } catch (error) {\n console.error('Failed to rename thread:', error);\n alert('Failed to rename thread. Please try again.');\n }\n }\n setEditingThread(null);\n setEditValue(\"\");\n };\n\n const handleRenameCancel = () => {\n setEditingThread(null);\n setEditValue(\"\");\n };\n\n const handleMenuAction = async (action: string, thread: Thread) => {\n setDropdownThread(null);\n\n try {\n switch (action) {\n case 'rename': {\n const threadValues = thread.values as any;\n const currentName: string = (thread.metadata?.name as string) ||\n (threadValues?.messages?.[0] ? getContentString(threadValues.messages[0].content) : thread.thread_id);\n setEditValue(currentName);\n setEditingThread(thread.thread_id);\n break;\n }\n case 'share': {\n // Create shareable link with current URL + thread ID\n const shareableLink = `${window.location.origin}${window.location.pathname}?thread=${thread.thread_id}`;\n await navigator.clipboard.writeText(shareableLink);\n alert('Thread link copied to clipboard!');\n break;\n }\n case 'archive': {\n await updateThread(thread.thread_id, {\n ...thread.metadata,\n archived: true\n });\n break;\n }\n case 'delete': {\n if (confirm('Are you sure you want to delete this thread? This action cannot be undone.')) {\n await deleteThread(thread.thread_id);\n }\n break;\n }\n }\n } catch (error) {\n console.error(`Failed to ${action} thread:`, error);\n alert(`Failed to ${action} thread. Please try again.`);\n }\n };\n\n return (\n <div className=\"flex h-full w-full flex-col items-start justify-start gap-2\">\n {threads.map((t) => {\n let itemText: string = (t.metadata?.name as string) || t.thread_id;\n if (\n !t.metadata?.name &&\n typeof t.values === \"object\" &&\n t.values &&\n \"messages\" in t.values &&\n Array.isArray((t.values as any).messages) &&\n (t.values as any).messages?.length > 0\n ) {\n const firstMessage = (t.values as any).messages[0];\n itemText = getContentString(firstMessage.content);\n }\n\n const isEditing = editingThread === t.thread_id;\n\n return (\n <div\n key={t.thread_id}\n className=\"relative w-full rounded-xl hover:bg-zinc-800 group\"\n onMouseEnter={() => setHoveredThread(t.thread_id)}\n onMouseLeave={() => setHoveredThread(null)}\n >\n <div className=\"flex items-center gap-1 px-2 py-1\">\n {isEditing ? (\n <input\n ref={editInputRef}\n type=\"text\"\n value={editValue}\n onChange={(e) => setEditValue(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n handleRenameSubmit(t);\n } else if (e.key === 'Escape') {\n handleRenameCancel();\n }\n }}\n onBlur={() => handleRenameSubmit(t)}\n className=\"flex-1 bg-zinc-700 text-white/80 text-sm px-2 py-1 rounded outline-none focus:ring-1 focus:ring-zinc-500\"\n />\n ) : (\n <button\n className=\"flex-1 items-start justify-start text-left font-normal min-w-0\"\n onClick={(e) => {\n e.preventDefault();\n onThreadClick?.(t.thread_id);\n if (t.thread_id === threadId) return;\n setThreadId(t.thread_id);\n }}\n >\n <p className=\"truncate text-ellipsis text-sm text-white/80\">{itemText}</p>\n </button>\n )}\n\n {!isEditing && hoveredThread === t.thread_id && (\n <button\n className=\"flex-shrink-0 p-1 rounded-md hover:bg-zinc-700\"\n onClick={(e) => {\n e.stopPropagation();\n setDropdownThread(dropdownThread === t.thread_id ? null : t.thread_id);\n }}\n >\n <MoreVertical className=\"h-4 w-4 text-white/60\" />\n </button>\n )}\n </div>\n\n {/* Dropdown Menu */}\n {dropdownThread === t.thread_id && (\n <div\n ref={dropdownRef}\n className=\"absolute right-2 top-8 z-50 w-48 rounded-md bg-zinc-800 border border-white/10 shadow-lg py-1\">\n <button\n className=\"w-full flex items-center gap-2 px-3 py-2 text-sm text-white/80 hover:bg-zinc-700\"\n onClick={() => handleMenuAction('rename', t)}\n >\n <Pencil className=\"h-4 w-4\" />\n Rename\n </button>\n <button\n className=\"w-full flex items-center gap-2 px-3 py-2 text-sm text-white/80 hover:bg-zinc-700\"\n onClick={() => handleMenuAction('share', t)}\n >\n <Share2 className=\"h-4 w-4\" />\n Share\n </button>\n <button\n className=\"w-full flex items-center gap-2 px-3 py-2 text-sm text-white/80 hover:bg-zinc-700\"\n onClick={() => handleMenuAction('archive', t)}\n >\n <Archive className=\"h-4 w-4\" />\n Archive\n </button>\n <div className=\"my-1 border-t border-white/10\" />\n <button\n className=\"w-full flex items-center gap-2 px-3 py-2 text-sm text-red-400 hover:bg-zinc-700\"\n onClick={() => handleMenuAction('delete', t)}\n >\n <Trash2 className=\"h-4 w-4\" />\n Delete\n </button>\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es16.js","sources":["../src/components/threads/ThreadHistory.tsx"],"sourcesContent":["import { useThread } from \"@/providers/Thread\";\nimport { useTools } from \"@/providers/ToolsProvider\";\nimport { getContentString } from \"@/utils/utils\";\nimport type { Thread } from \"@langchain/langgraph-sdk\";\nimport {\n Archive,\n MoreVertical,\n PanelLeft,\n Pencil,\n Share2,\n Trash2\n} from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\n\n// type ThreadHeaderProp = {\n// header?: string\n// }\n\nexport default function ThreadHistory() {\n const [collapsed, setCollapsed] = useState(false);\n const [searchOpen, setSearchOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const { threads, getThreads, setThreadId, setThreads, setThreadsLoading } = useThread();\n const { tools } = useTools();\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n setThreadsLoading(true);\n getThreads()\n .then(setThreads)\n .catch(console.error)\n .finally(() => setThreadsLoading(false));\n }, []);\n\n // Filter threads based on search query\n const filteredThreads = threads.filter((t) => {\n if (!searchQuery.trim()) return true;\n\n const searchLower = searchQuery.toLowerCase();\n const threadName = (t.metadata?.name as string) || \"\";\n\n // Check thread name\n if (threadName.toLowerCase().includes(searchLower)) return true;\n\n // Check first message content\n const threadValues = t.values as any;\n if (threadValues?.messages?.[0]) {\n const firstMessageContent = getContentString(threadValues.messages[0].content);\n if (firstMessageContent.toLowerCase().includes(searchLower)) return true;\n }\n\n return false;\n });\n\n return (\n <aside\n className={`flex h-full flex-col border-r border-white/10 bg-zinc transition-all duration-300 ease-in-out ${collapsed ? \"w-14\" : \"w-64\"}`}>\n {/* Top */}\n <div className=\"flex h-14 items-center mx-2 border-b border-white/10\">\n {/* <div className=\"flex mx-auto gap-2\">\n {header}\n </div> */}\n <div className=\"flex ml-auto cursor-pointer p-2 hover:bg-white/10 rounded-md\">\n <PanelLeft className=\"h-5 w-5 text-white/70\" onClick={() => setCollapsed(v => !v)} />\n </div>\n </div>\n\n {/* Primary actions */}\n <div className=\"flex flex-col gap-1 px-2 py-3\">\n\n {tools.map((t, index) => {\n // Override onClick for specific tools\n let handleClick = t.onClick;\n if (t.label === 'New chat') {\n handleClick = () => setThreadId(null);\n } else if (t.label === 'Search') {\n handleClick = () => setSearchOpen(true);\n }\n\n // Show search input instead of search button when searchOpen is true\n if (t.label === 'Search' && !collapsed && searchOpen) {\n return (\n <div key={index} className=\"px-2 py-2\">\n <input\n type=\"text\"\n placeholder=\"Search chats...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onBlur={() => {\n if (!searchQuery.trim()) {\n setSearchOpen(false);\n }\n }}\n autoFocus\n className=\"w-full bg-zinc-800 text-white/80 text-sm px-3 py-2 rounded-md outline-none focus:ring-1 focus:ring-zinc-600 placeholder:text-white/40\"\n />\n </div>\n );\n }\n\n return (\n <NavItem \n key={index}\n icon={t.icon} \n label={t.label} \n alt={t.alt}\n collapsed={collapsed} \n onClick={handleClick} \n />\n );\n })}\n </div>\n\n {/* Chats (scrollable) */}\n <div className=\"flex-1 flex flex-col px-2 overflow-hidden\">\n {!collapsed && (\n <>\n <p className=\"mb-2 px-2 text-xs uppercase text-white/40\">\n Your chats {searchQuery && `(${filteredThreads.length})`}\n </p>\n <div className=\"flex-1 space-y-1 overflow-y-auto overflow-x-hidden thread-scrollbar\">\n <ThreadList threads={filteredThreads} />\n </div>\n </>\n )}\n\n </div>\n\n {/* User */}\n {/* <div className=\"border-t border-white/10 p-2\">\n <div className=\"flex items-center justify-center rounded-md p-2 hover:bg-white/10\">\n <User className=\"h-5 w-5 text-white/70\" />\n {!collapsed && (\n <span className=\"ml-2 text-sm text-white/70\">Karthik MP</span>\n )}\n </div>\n </div> */}\n </aside>\n );\n}\n\n/* ---------- Components ---------- */\n\nfunction NavItem({\n icon,\n label,\n alt,\n collapsed,\n onClick\n}: {\n label: string;\n icon?: React.ReactNode;\n alt?: string;\n collapsed: boolean;\n onClick?: () => void;\n}) {\n return (\n <button\n className=\"flex items-center gap-3 rounded-md px-2 py-2\n text-white/70 hover:bg-white/10 cursor-pointer\"\n onClick={onClick}\n title={alt || label}\n >\n <div className=\"h-5 w-5\">{icon}</div>\n {!collapsed && <span className=\"text-sm\">{label}</span>}\n </button>\n );\n}\n\nfunction ThreadList({\n threads,\n onThreadClick,\n}: {\n threads: Thread[];\n onThreadClick?: (threadId: string) => void;\n}) {\n\n const { threadId, setThreadId, deleteThread, updateThread } = useThread();\n const [hoveredThread, setHoveredThread] = useState<string | null>(null);\n const [dropdownThread, setDropdownThread] = useState<string | null>(null);\n const [editingThread, setEditingThread] = useState<string | null>(null);\n const [editValue, setEditValue] = useState(\"\");\n const dropdownRef = useRef<HTMLDivElement>(null);\n const editInputRef = useRef<HTMLInputElement>(null);\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setDropdownThread(null);\n }\n };\n\n if (dropdownThread) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [dropdownThread]);\n\n // Focus input when editing starts\n useEffect(() => {\n if (editingThread && editInputRef.current) {\n editInputRef.current.focus();\n editInputRef.current.select();\n }\n }, [editingThread]);\n\n const handleRenameSubmit = async (thread: Thread) => {\n const threadValues = thread.values as any;\n const originalName = thread.metadata?.name ||\n (threadValues?.messages?.[0] ? getContentString(threadValues.messages[0].content) : thread.thread_id);\n\n if (editValue.trim() && editValue.trim() !== originalName) {\n try {\n await updateThread(thread.thread_id, {\n ...thread.metadata,\n name: editValue.trim()\n });\n } catch (error) {\n console.error('Failed to rename thread:', error);\n alert('Failed to rename thread. Please try again.');\n }\n }\n setEditingThread(null);\n setEditValue(\"\");\n };\n\n const handleRenameCancel = () => {\n setEditingThread(null);\n setEditValue(\"\");\n };\n\n const handleMenuAction = async (action: string, thread: Thread) => {\n setDropdownThread(null);\n\n try {\n switch (action) {\n case 'rename': {\n const threadValues = thread.values as any;\n const currentName: string = (thread.metadata?.name as string) ||\n (threadValues?.messages?.[0] ? getContentString(threadValues.messages[0].content) : thread.thread_id);\n setEditValue(currentName);\n setEditingThread(thread.thread_id);\n break;\n }\n case 'share': {\n // Create shareable link with current URL + thread ID\n const shareableLink = `${window.location.origin}${window.location.pathname}?thread=${thread.thread_id}`;\n await navigator.clipboard.writeText(shareableLink);\n alert('Thread link copied to clipboard!');\n break;\n }\n case 'archive': {\n await updateThread(thread.thread_id, {\n ...thread.metadata,\n archived: true\n });\n break;\n }\n case 'delete': {\n if (confirm('Are you sure you want to delete this thread? This action cannot be undone.')) {\n await deleteThread(thread.thread_id);\n }\n break;\n }\n }\n } catch (error) {\n console.error(`Failed to ${action} thread:`, error);\n alert(`Failed to ${action} thread. Please try again.`);\n }\n };\n\n return (\n <div className=\"flex h-full w-full flex-col items-start justify-start gap-2\">\n {threads.map((t) => {\n let itemText: string = (t.metadata?.name as string) || t.thread_id;\n if (\n !t.metadata?.name &&\n typeof t.values === \"object\" &&\n t.values &&\n \"messages\" in t.values &&\n Array.isArray((t.values as any).messages) &&\n (t.values as any).messages?.length > 0\n ) {\n const firstMessage = (t.values as any).messages[0];\n itemText = getContentString(firstMessage.content);\n }\n\n const isEditing = editingThread === t.thread_id;\n\n return (\n <div\n key={t.thread_id}\n className=\"relative w-full rounded-xl hover:bg-zinc-800 group\"\n onMouseEnter={() => setHoveredThread(t.thread_id)}\n onMouseLeave={() => setHoveredThread(null)}\n >\n <div className=\"flex items-center gap-1 px-2 py-1\">\n {isEditing ? (\n <input\n ref={editInputRef}\n type=\"text\"\n value={editValue}\n onChange={(e) => setEditValue(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n handleRenameSubmit(t);\n } else if (e.key === 'Escape') {\n handleRenameCancel();\n }\n }}\n onBlur={() => handleRenameSubmit(t)}\n className=\"flex-1 bg-zinc-700 text-white/80 text-sm px-2 py-1 rounded outline-none focus:ring-1 focus:ring-zinc-500\"\n />\n ) : (\n <button\n className=\"flex-1 items-start justify-start text-left font-normal min-w-0\"\n onClick={(e) => {\n e.preventDefault();\n onThreadClick?.(t.thread_id);\n if (t.thread_id === threadId) return;\n setThreadId(t.thread_id);\n }}\n >\n <p className=\"truncate text-ellipsis text-sm text-white/80\">{itemText}</p>\n </button>\n )}\n\n {!isEditing && hoveredThread === t.thread_id && (\n <button\n className=\"flex-shrink-0 p-1 rounded-md hover:bg-zinc-700\"\n onClick={(e) => {\n e.stopPropagation();\n setDropdownThread(dropdownThread === t.thread_id ? null : t.thread_id);\n }}\n >\n <MoreVertical className=\"h-4 w-4 text-white/60\" />\n </button>\n )}\n </div>\n\n {/* Dropdown Menu */}\n {dropdownThread === t.thread_id && (\n <div\n ref={dropdownRef}\n className=\"absolute right-2 top-8 z-50 w-48 rounded-md bg-zinc-800 border border-white/10 shadow-lg py-1\">\n <button\n className=\"w-full flex items-center gap-2 px-3 py-2 text-sm text-white/80 hover:bg-zinc-700\"\n onClick={() => handleMenuAction('rename', t)}\n >\n <Pencil className=\"h-4 w-4\" />\n Rename\n </button>\n <button\n className=\"w-full flex items-center gap-2 px-3 py-2 text-sm text-white/80 hover:bg-zinc-700\"\n onClick={() => handleMenuAction('share', t)}\n >\n <Share2 className=\"h-4 w-4\" />\n Share\n </button>\n <button\n className=\"w-full flex items-center gap-2 px-3 py-2 text-sm text-white/80 hover:bg-zinc-700\"\n onClick={() => handleMenuAction('archive', t)}\n >\n <Archive className=\"h-4 w-4\" />\n Archive\n </button>\n <div className=\"my-1 border-t border-white/10\" />\n <button\n className=\"w-full flex items-center gap-2 px-3 py-2 text-sm text-red-400 hover:bg-zinc-700\"\n onClick={() => handleMenuAction('delete', t)}\n >\n <Trash2 className=\"h-4 w-4\" />\n Delete\n </button>\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}"],"names":[],"mappings":"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"}
|
package/dist/index.es160.js
CHANGED
package/dist/index.es161.js
CHANGED
package/dist/index.es162.js
CHANGED
package/dist/index.es163.js
CHANGED
package/dist/index.es164.js
CHANGED
package/dist/index.es165.js
CHANGED
package/dist/index.es166.js
CHANGED
package/dist/index.es167.js
CHANGED
package/dist/index.es168.js
CHANGED
package/dist/index.es169.js
CHANGED
package/dist/index.es170.js
CHANGED
package/dist/index.es171.js
CHANGED
package/dist/index.es172.js
CHANGED
package/dist/index.es173.js
CHANGED
package/dist/index.es174.js
CHANGED
package/dist/index.es175.js
CHANGED
package/dist/index.es176.js
CHANGED
package/dist/index.es177.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as solarizedDarkAtom } from "./index.
|
|
1
|
+
import { __exports as solarizedDarkAtom } from "./index.es246.js";
|
|
2
2
|
var hasRequiredSolarizedDarkAtom;
|
|
3
3
|
function requireSolarizedDarkAtom() {
|
|
4
4
|
if (hasRequiredSolarizedDarkAtom) return solarizedDarkAtom;
|
package/dist/index.es178.js
CHANGED
package/dist/index.es179.js
CHANGED
package/dist/index.es18.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { __export } from "./index.
|
|
2
|
-
import { parseMimeType, parseBase64DataUrl, isURLContentBlock, isPlainTextContentBlock, isIDContentBlock, isDataContentBlock, isBase64ContentBlock, convertToProviderContentBlock, convertToOpenAIImageBlock } from "./index.
|
|
3
|
-
import { isMessage } from "./index.
|
|
4
|
-
import { mergeContent, isOpenAIToolCallArray, isBaseMessageChunk, isBaseMessage, _mergeStatus, _mergeObj, _mergeLists, _mergeDicts, _isMessageFieldWithRole, BaseMessageChunk, BaseMessage } from "./index.
|
|
5
|
-
import { mergeUsageMetadata, mergeResponseMetadata } from "./index.
|
|
6
|
-
import { isToolMessageChunk, isToolMessage, isDirectToolOutput, defaultToolCallParser, ToolMessageChunk, ToolMessage } from "./index.
|
|
7
|
-
import { isChatMessageChunk, isChatMessage, ChatMessageChunk, ChatMessage } from "./index.
|
|
8
|
-
import { isFunctionMessageChunk, isFunctionMessage, FunctionMessageChunk, FunctionMessage } from "./index.
|
|
9
|
-
import { isHumanMessageChunk, isHumanMessage, HumanMessageChunk, HumanMessage } from "./index.
|
|
10
|
-
import { RemoveMessage } from "./index.
|
|
11
|
-
import { isSystemMessageChunk, isSystemMessage, SystemMessageChunk, SystemMessage } from "./index.
|
|
12
|
-
import { mapStoredMessagesToChatMessages, mapStoredMessageToChatMessage, mapChatMessagesToStoredMessages, iife, getBufferString, convertToChunk, collapseToolCallChunks, coerceMessageLikeToMessage } from "./index.
|
|
13
|
-
import { isAIMessageChunk, isAIMessage, AIMessageChunk, AIMessage } from "./index.
|
|
14
|
-
import { trimMessages, mergeMessageRuns, filterMessages, defaultTextSplitter } from "./index.
|
|
15
|
-
import { KNOWN_BLOCK_TYPES as KNOWN_BLOCK_TYPES$2 } from "./index.
|
|
1
|
+
import { __export } from "./index.es55.js";
|
|
2
|
+
import { parseMimeType, parseBase64DataUrl, isURLContentBlock, isPlainTextContentBlock, isIDContentBlock, isDataContentBlock, isBase64ContentBlock, convertToProviderContentBlock, convertToOpenAIImageBlock } from "./index.es56.js";
|
|
3
|
+
import { isMessage } from "./index.es57.js";
|
|
4
|
+
import { mergeContent, isOpenAIToolCallArray, isBaseMessageChunk, isBaseMessage, _mergeStatus, _mergeObj, _mergeLists, _mergeDicts, _isMessageFieldWithRole, BaseMessageChunk, BaseMessage } from "./index.es43.js";
|
|
5
|
+
import { mergeUsageMetadata, mergeResponseMetadata } from "./index.es58.js";
|
|
6
|
+
import { isToolMessageChunk, isToolMessage, isDirectToolOutput, defaultToolCallParser, ToolMessageChunk, ToolMessage } from "./index.es47.js";
|
|
7
|
+
import { isChatMessageChunk, isChatMessage, ChatMessageChunk, ChatMessage } from "./index.es59.js";
|
|
8
|
+
import { isFunctionMessageChunk, isFunctionMessage, FunctionMessageChunk, FunctionMessage } from "./index.es60.js";
|
|
9
|
+
import { isHumanMessageChunk, isHumanMessage, HumanMessageChunk, HumanMessage } from "./index.es44.js";
|
|
10
|
+
import { RemoveMessage } from "./index.es48.js";
|
|
11
|
+
import { isSystemMessageChunk, isSystemMessage, SystemMessageChunk, SystemMessage } from "./index.es46.js";
|
|
12
|
+
import { mapStoredMessagesToChatMessages, mapStoredMessageToChatMessage, mapChatMessagesToStoredMessages, iife, getBufferString, convertToChunk, collapseToolCallChunks, coerceMessageLikeToMessage } from "./index.es49.js";
|
|
13
|
+
import { isAIMessageChunk, isAIMessage, AIMessageChunk, AIMessage } from "./index.es45.js";
|
|
14
|
+
import { trimMessages, mergeMessageRuns, filterMessages, defaultTextSplitter } from "./index.es61.js";
|
|
15
|
+
import { KNOWN_BLOCK_TYPES as KNOWN_BLOCK_TYPES$2 } from "./index.es62.js";
|
|
16
16
|
var messages_exports = {};
|
|
17
17
|
__export(messages_exports, {
|
|
18
18
|
AIMessage: () => AIMessage,
|
package/dist/index.es180.js
CHANGED
package/dist/index.es181.js
CHANGED
package/dist/index.es182.js
CHANGED
package/dist/index.es183.js
CHANGED
|
@@ -1,18 +1,167 @@
|
|
|
1
|
-
|
|
2
|
-
var
|
|
3
|
-
function
|
|
4
|
-
if (
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { __module as eventemitter3 } from "./index.es184.js";
|
|
2
|
+
var hasRequiredEventemitter3;
|
|
3
|
+
function requireEventemitter3() {
|
|
4
|
+
if (hasRequiredEventemitter3) return eventemitter3.exports;
|
|
5
|
+
hasRequiredEventemitter3 = 1;
|
|
6
|
+
(function(module) {
|
|
7
|
+
var has = Object.prototype.hasOwnProperty, prefix = "~";
|
|
8
|
+
function Events() {
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
if (Object.create) {
|
|
11
|
+
Events.prototype = /* @__PURE__ */ Object.create(null);
|
|
12
|
+
if (!new Events().__proto__) prefix = false;
|
|
13
|
+
}
|
|
14
|
+
function EE(fn, context, once) {
|
|
15
|
+
this.fn = fn;
|
|
16
|
+
this.context = context;
|
|
17
|
+
this.once = once || false;
|
|
18
|
+
}
|
|
19
|
+
function addListener(emitter, event, fn, context, once) {
|
|
20
|
+
if (typeof fn !== "function") {
|
|
21
|
+
throw new TypeError("The listener must be a function");
|
|
22
|
+
}
|
|
23
|
+
var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;
|
|
24
|
+
if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;
|
|
25
|
+
else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);
|
|
26
|
+
else emitter._events[evt] = [emitter._events[evt], listener];
|
|
27
|
+
return emitter;
|
|
28
|
+
}
|
|
29
|
+
function clearEvent(emitter, evt) {
|
|
30
|
+
if (--emitter._eventsCount === 0) emitter._events = new Events();
|
|
31
|
+
else delete emitter._events[evt];
|
|
32
|
+
}
|
|
33
|
+
function EventEmitter() {
|
|
34
|
+
this._events = new Events();
|
|
35
|
+
this._eventsCount = 0;
|
|
36
|
+
}
|
|
37
|
+
EventEmitter.prototype.eventNames = function eventNames() {
|
|
38
|
+
var names = [], events, name;
|
|
39
|
+
if (this._eventsCount === 0) return names;
|
|
40
|
+
for (name in events = this._events) {
|
|
41
|
+
if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
|
|
42
|
+
}
|
|
43
|
+
if (Object.getOwnPropertySymbols) {
|
|
44
|
+
return names.concat(Object.getOwnPropertySymbols(events));
|
|
45
|
+
}
|
|
46
|
+
return names;
|
|
47
|
+
};
|
|
48
|
+
EventEmitter.prototype.listeners = function listeners(event) {
|
|
49
|
+
var evt = prefix ? prefix + event : event, handlers = this._events[evt];
|
|
50
|
+
if (!handlers) return [];
|
|
51
|
+
if (handlers.fn) return [handlers.fn];
|
|
52
|
+
for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {
|
|
53
|
+
ee[i] = handlers[i].fn;
|
|
54
|
+
}
|
|
55
|
+
return ee;
|
|
56
|
+
};
|
|
57
|
+
EventEmitter.prototype.listenerCount = function listenerCount(event) {
|
|
58
|
+
var evt = prefix ? prefix + event : event, listeners = this._events[evt];
|
|
59
|
+
if (!listeners) return 0;
|
|
60
|
+
if (listeners.fn) return 1;
|
|
61
|
+
return listeners.length;
|
|
62
|
+
};
|
|
63
|
+
EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
|
|
64
|
+
var evt = prefix ? prefix + event : event;
|
|
65
|
+
if (!this._events[evt]) return false;
|
|
66
|
+
var listeners = this._events[evt], len = arguments.length, args, i;
|
|
67
|
+
if (listeners.fn) {
|
|
68
|
+
if (listeners.once) this.removeListener(event, listeners.fn, void 0, true);
|
|
69
|
+
switch (len) {
|
|
70
|
+
case 1:
|
|
71
|
+
return listeners.fn.call(listeners.context), true;
|
|
72
|
+
case 2:
|
|
73
|
+
return listeners.fn.call(listeners.context, a1), true;
|
|
74
|
+
case 3:
|
|
75
|
+
return listeners.fn.call(listeners.context, a1, a2), true;
|
|
76
|
+
case 4:
|
|
77
|
+
return listeners.fn.call(listeners.context, a1, a2, a3), true;
|
|
78
|
+
case 5:
|
|
79
|
+
return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
|
|
80
|
+
case 6:
|
|
81
|
+
return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
|
|
82
|
+
}
|
|
83
|
+
for (i = 1, args = new Array(len - 1); i < len; i++) {
|
|
84
|
+
args[i - 1] = arguments[i];
|
|
85
|
+
}
|
|
86
|
+
listeners.fn.apply(listeners.context, args);
|
|
87
|
+
} else {
|
|
88
|
+
var length = listeners.length, j;
|
|
89
|
+
for (i = 0; i < length; i++) {
|
|
90
|
+
if (listeners[i].once) this.removeListener(event, listeners[i].fn, void 0, true);
|
|
91
|
+
switch (len) {
|
|
92
|
+
case 1:
|
|
93
|
+
listeners[i].fn.call(listeners[i].context);
|
|
94
|
+
break;
|
|
95
|
+
case 2:
|
|
96
|
+
listeners[i].fn.call(listeners[i].context, a1);
|
|
97
|
+
break;
|
|
98
|
+
case 3:
|
|
99
|
+
listeners[i].fn.call(listeners[i].context, a1, a2);
|
|
100
|
+
break;
|
|
101
|
+
case 4:
|
|
102
|
+
listeners[i].fn.call(listeners[i].context, a1, a2, a3);
|
|
103
|
+
break;
|
|
104
|
+
default:
|
|
105
|
+
if (!args) for (j = 1, args = new Array(len - 1); j < len; j++) {
|
|
106
|
+
args[j - 1] = arguments[j];
|
|
107
|
+
}
|
|
108
|
+
listeners[i].fn.apply(listeners[i].context, args);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return true;
|
|
113
|
+
};
|
|
114
|
+
EventEmitter.prototype.on = function on(event, fn, context) {
|
|
115
|
+
return addListener(this, event, fn, context, false);
|
|
116
|
+
};
|
|
117
|
+
EventEmitter.prototype.once = function once(event, fn, context) {
|
|
118
|
+
return addListener(this, event, fn, context, true);
|
|
119
|
+
};
|
|
120
|
+
EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {
|
|
121
|
+
var evt = prefix ? prefix + event : event;
|
|
122
|
+
if (!this._events[evt]) return this;
|
|
123
|
+
if (!fn) {
|
|
124
|
+
clearEvent(this, evt);
|
|
125
|
+
return this;
|
|
126
|
+
}
|
|
127
|
+
var listeners = this._events[evt];
|
|
128
|
+
if (listeners.fn) {
|
|
129
|
+
if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {
|
|
130
|
+
clearEvent(this, evt);
|
|
131
|
+
}
|
|
132
|
+
} else {
|
|
133
|
+
for (var i = 0, events = [], length = listeners.length; i < length; i++) {
|
|
134
|
+
if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {
|
|
135
|
+
events.push(listeners[i]);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
|
|
139
|
+
else clearEvent(this, evt);
|
|
140
|
+
}
|
|
141
|
+
return this;
|
|
142
|
+
};
|
|
143
|
+
EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {
|
|
144
|
+
var evt;
|
|
145
|
+
if (event) {
|
|
146
|
+
evt = prefix ? prefix + event : event;
|
|
147
|
+
if (this._events[evt]) clearEvent(this, evt);
|
|
148
|
+
} else {
|
|
149
|
+
this._events = new Events();
|
|
150
|
+
this._eventsCount = 0;
|
|
151
|
+
}
|
|
152
|
+
return this;
|
|
153
|
+
};
|
|
154
|
+
EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
|
|
155
|
+
EventEmitter.prototype.addListener = EventEmitter.prototype.on;
|
|
156
|
+
EventEmitter.prefixed = prefix;
|
|
157
|
+
EventEmitter.EventEmitter = EventEmitter;
|
|
158
|
+
{
|
|
159
|
+
module.exports = EventEmitter;
|
|
160
|
+
}
|
|
161
|
+
})(eventemitter3);
|
|
162
|
+
return eventemitter3.exports;
|
|
14
163
|
}
|
|
15
164
|
export {
|
|
16
|
-
|
|
165
|
+
requireEventemitter3 as __require
|
|
17
166
|
};
|
|
18
167
|
//# sourceMappingURL=index.es183.js.map
|