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.es55.js
CHANGED
|
@@ -1,256 +1,151 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
setData(data) {
|
|
34
|
-
this.data = data;
|
|
35
|
-
this.updateByData();
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
class WebmUint extends WebmBase {
|
|
39
|
-
constructor(name, type) {
|
|
40
|
-
super(name, type || "Uint");
|
|
41
|
-
}
|
|
42
|
-
updateBySource() {
|
|
43
|
-
this.data = "";
|
|
44
|
-
for (let i = 0; i < this.source.length; i++) {
|
|
45
|
-
const hex = this.source[i].toString(16);
|
|
46
|
-
this.data += padHex(hex);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
updateByData() {
|
|
50
|
-
const length = this.data.length / 2;
|
|
51
|
-
this.source = new Uint8Array(length);
|
|
52
|
-
for (let i = 0; i < length; i++) {
|
|
53
|
-
const hex = this.data.substr(i * 2, 2);
|
|
54
|
-
this.source[i] = parseInt(hex, 16);
|
|
1
|
+
function getBranchSequence(history) {
|
|
2
|
+
const nodeIds = /* @__PURE__ */ new Set();
|
|
3
|
+
const childrenMap = {};
|
|
4
|
+
if (history.length <= 1) return {
|
|
5
|
+
rootSequence: {
|
|
6
|
+
type: "sequence",
|
|
7
|
+
items: history.map((value) => ({
|
|
8
|
+
type: "node",
|
|
9
|
+
value,
|
|
10
|
+
path: []
|
|
11
|
+
}))
|
|
12
|
+
},
|
|
13
|
+
paths: []
|
|
14
|
+
};
|
|
15
|
+
history.forEach((state) => {
|
|
16
|
+
const checkpointId = state.parent_checkpoint?.checkpoint_id ?? "$";
|
|
17
|
+
childrenMap[checkpointId] ??= [];
|
|
18
|
+
childrenMap[checkpointId].push(state);
|
|
19
|
+
if (state.checkpoint?.checkpoint_id != null) nodeIds.add(state.checkpoint.checkpoint_id);
|
|
20
|
+
});
|
|
21
|
+
const maxId = (...ids) => ids.filter((i) => i != null).sort((a, b) => a.localeCompare(b)).at(-1);
|
|
22
|
+
const lastOrphanedNode = childrenMap.$ == null ? Object.keys(childrenMap).filter((parentId) => !nodeIds.has(parentId)).map((parentId) => {
|
|
23
|
+
const queue$1 = [parentId];
|
|
24
|
+
const seen = /* @__PURE__ */ new Set();
|
|
25
|
+
let lastId = parentId;
|
|
26
|
+
while (queue$1.length > 0) {
|
|
27
|
+
const current = queue$1.shift();
|
|
28
|
+
if (seen.has(current)) continue;
|
|
29
|
+
seen.add(current);
|
|
30
|
+
const children = (childrenMap[current] ?? []).flatMap((i) => i.checkpoint?.checkpoint_id ?? []);
|
|
31
|
+
lastId = maxId(lastId, ...children);
|
|
32
|
+
queue$1.push(...children);
|
|
55
33
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
getValue() {
|
|
87
|
-
return this.data;
|
|
88
|
-
}
|
|
89
|
-
setValue(value) {
|
|
90
|
-
this.setData(value);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
class WebmContainer extends WebmBase {
|
|
94
|
-
offset = 0;
|
|
95
|
-
data = [];
|
|
96
|
-
constructor(name, type) {
|
|
97
|
-
super(name, type || "Container");
|
|
98
|
-
}
|
|
99
|
-
readByte() {
|
|
100
|
-
return this.source[this.offset++];
|
|
101
|
-
}
|
|
102
|
-
readUint() {
|
|
103
|
-
const firstByte = this.readByte();
|
|
104
|
-
const bytes = 8 - firstByte.toString(2).length;
|
|
105
|
-
let value = firstByte - (1 << 7 - bytes);
|
|
106
|
-
for (let i = 0; i < bytes; i++) {
|
|
107
|
-
value *= 256;
|
|
108
|
-
value += this.readByte();
|
|
34
|
+
return {
|
|
35
|
+
parentId,
|
|
36
|
+
lastId
|
|
37
|
+
};
|
|
38
|
+
}).sort((a, b) => a.lastId.localeCompare(b.lastId)).at(-1)?.parentId : void 0;
|
|
39
|
+
if (lastOrphanedNode != null) childrenMap.$ = childrenMap[lastOrphanedNode];
|
|
40
|
+
const rootSequence = {
|
|
41
|
+
type: "sequence",
|
|
42
|
+
items: []
|
|
43
|
+
};
|
|
44
|
+
const queue = [{
|
|
45
|
+
id: "$",
|
|
46
|
+
sequence: rootSequence,
|
|
47
|
+
path: []
|
|
48
|
+
}];
|
|
49
|
+
const paths = [];
|
|
50
|
+
const visited = /* @__PURE__ */ new Set();
|
|
51
|
+
while (queue.length > 0) {
|
|
52
|
+
const task = queue.shift();
|
|
53
|
+
if (visited.has(task.id)) continue;
|
|
54
|
+
visited.add(task.id);
|
|
55
|
+
const children = childrenMap[task.id];
|
|
56
|
+
if (children == null || children.length === 0) continue;
|
|
57
|
+
let fork;
|
|
58
|
+
if (children.length > 1) {
|
|
59
|
+
fork = {
|
|
60
|
+
type: "fork",
|
|
61
|
+
items: []
|
|
62
|
+
};
|
|
63
|
+
task.sequence.items.push(fork);
|
|
109
64
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
ctr = WebmContainer;
|
|
125
|
-
break;
|
|
126
|
-
case "Uint":
|
|
127
|
-
ctr = WebmUint;
|
|
128
|
-
break;
|
|
129
|
-
case "Float":
|
|
130
|
-
ctr = WebmFloat;
|
|
131
|
-
break;
|
|
65
|
+
for (const value of children) {
|
|
66
|
+
const id = value.checkpoint?.checkpoint_id;
|
|
67
|
+
if (id == null) continue;
|
|
68
|
+
let { sequence } = task;
|
|
69
|
+
let { path } = task;
|
|
70
|
+
if (fork != null) {
|
|
71
|
+
sequence = {
|
|
72
|
+
type: "sequence",
|
|
73
|
+
items: []
|
|
74
|
+
};
|
|
75
|
+
fork.items.unshift(sequence);
|
|
76
|
+
path = path.slice();
|
|
77
|
+
path.push(id);
|
|
78
|
+
paths.push(path);
|
|
132
79
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
80
|
+
sequence.items.push({
|
|
81
|
+
type: "node",
|
|
82
|
+
value,
|
|
83
|
+
path
|
|
84
|
+
});
|
|
85
|
+
queue.push({
|
|
136
86
|
id,
|
|
137
|
-
|
|
138
|
-
|
|
87
|
+
sequence,
|
|
88
|
+
path
|
|
139
89
|
});
|
|
140
90
|
}
|
|
141
91
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
flag *= 128;
|
|
147
|
-
}
|
|
148
|
-
if (!draft) {
|
|
149
|
-
let value = flag + x;
|
|
150
|
-
for (let i = bytes - 1; i >= 0; i--) {
|
|
151
|
-
const c = value % 256;
|
|
152
|
-
this.source[this.offset + i] = c;
|
|
153
|
-
value = (value - c) / 256;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
this.offset += bytes;
|
|
157
|
-
}
|
|
158
|
-
writeSections(draft = false) {
|
|
159
|
-
this.offset = 0;
|
|
160
|
-
for (let i = 0; i < this.data.length; i++) {
|
|
161
|
-
const section = this.data[i], content = section.data.source, contentLength = content.length;
|
|
162
|
-
this.writeUint(section.id, draft);
|
|
163
|
-
this.writeUint(contentLength, draft);
|
|
164
|
-
if (!draft) {
|
|
165
|
-
this.source.set(content, this.offset);
|
|
166
|
-
}
|
|
167
|
-
this.offset += contentLength;
|
|
168
|
-
}
|
|
169
|
-
return this.offset;
|
|
170
|
-
}
|
|
171
|
-
updateByData() {
|
|
172
|
-
const length = this.writeSections(true);
|
|
173
|
-
this.source = new Uint8Array(length);
|
|
174
|
-
this.writeSections();
|
|
175
|
-
}
|
|
176
|
-
getSectionById(id) {
|
|
177
|
-
for (let i = 0; i < this.data.length; i++) {
|
|
178
|
-
const section = this.data[i];
|
|
179
|
-
if (section.id === id) {
|
|
180
|
-
return section.data;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
return void 0;
|
|
184
|
-
}
|
|
92
|
+
return {
|
|
93
|
+
rootSequence,
|
|
94
|
+
paths
|
|
95
|
+
};
|
|
185
96
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
97
|
+
const PATH_SEP = ">";
|
|
98
|
+
const ROOT_ID = "$";
|
|
99
|
+
function getBranchView(sequence, paths, branch) {
|
|
100
|
+
const path = branch.split(PATH_SEP);
|
|
101
|
+
const pathMap = {};
|
|
102
|
+
for (const path$1 of paths) {
|
|
103
|
+
const parent = path$1.at(-2) ?? ROOT_ID;
|
|
104
|
+
pathMap[parent] ??= [];
|
|
105
|
+
pathMap[parent].unshift(path$1);
|
|
106
|
+
}
|
|
107
|
+
const history = [];
|
|
108
|
+
const branchByCheckpoint = {};
|
|
109
|
+
const forkStack = path.slice();
|
|
110
|
+
const queue = [...sequence.items];
|
|
111
|
+
while (queue.length > 0) {
|
|
112
|
+
const item = queue.shift();
|
|
113
|
+
if (item.type === "node") {
|
|
114
|
+
history.push(item.value);
|
|
115
|
+
const checkpointId = item.value.checkpoint?.checkpoint_id;
|
|
116
|
+
if (checkpointId == null) continue;
|
|
117
|
+
branchByCheckpoint[checkpointId] = {
|
|
118
|
+
branch: item.path.join(PATH_SEP),
|
|
119
|
+
branchOptions: (item.path.length > 0 ? pathMap[item.path.at(-2) ?? ROOT_ID] ?? [] : []).map((p) => p.join(PATH_SEP))
|
|
120
|
+
};
|
|
199
121
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
return false;
|
|
210
|
-
}
|
|
211
|
-
} else {
|
|
212
|
-
durationSection = new WebmFloat("Duration", "Float");
|
|
213
|
-
durationSection.setValue(duration);
|
|
214
|
-
infoSection.data.push({
|
|
215
|
-
id: 1161,
|
|
216
|
-
data: durationSection
|
|
217
|
-
});
|
|
122
|
+
if (item.type === "fork") {
|
|
123
|
+
const forkId = forkStack.shift();
|
|
124
|
+
const index = forkId != null ? item.items.findIndex((value) => {
|
|
125
|
+
const firstItem = value.items.at(0);
|
|
126
|
+
if (!firstItem || firstItem.type !== "node") return false;
|
|
127
|
+
return firstItem.value.checkpoint?.checkpoint_id === forkId;
|
|
128
|
+
}) : -1;
|
|
129
|
+
const nextItems = item.items.at(index)?.items ?? [];
|
|
130
|
+
queue.push(...nextItems);
|
|
218
131
|
}
|
|
219
|
-
timeScaleSection.setValue(1e6);
|
|
220
|
-
infoSection.updateByData();
|
|
221
|
-
segmentSection.updateByData();
|
|
222
|
-
this.updateByData();
|
|
223
|
-
return true;
|
|
224
|
-
}
|
|
225
|
-
toBlob(type = "video/webm") {
|
|
226
|
-
return new Blob([this.source.buffer], { type });
|
|
227
132
|
}
|
|
133
|
+
return {
|
|
134
|
+
history,
|
|
135
|
+
branchByCheckpoint
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
function getBranchContext(branch, history) {
|
|
139
|
+
const { rootSequence: branchTree, paths } = getBranchSequence(history ?? []);
|
|
140
|
+
const { history: flatHistory, branchByCheckpoint } = getBranchView(branchTree, paths, branch);
|
|
141
|
+
return {
|
|
142
|
+
branchTree,
|
|
143
|
+
flatHistory,
|
|
144
|
+
branchByCheckpoint,
|
|
145
|
+
threadHead: flatHistory.at(-1)
|
|
146
|
+
};
|
|
228
147
|
}
|
|
229
|
-
const webmFixDuration = (blob, duration, type = "video/webm") => {
|
|
230
|
-
return new Promise((resolve, reject) => {
|
|
231
|
-
try {
|
|
232
|
-
const reader = new FileReader();
|
|
233
|
-
reader.addEventListener("loadend", () => {
|
|
234
|
-
try {
|
|
235
|
-
const result = reader.result;
|
|
236
|
-
const file = new WebmFile(new Uint8Array(result));
|
|
237
|
-
if (file.fixDuration(duration)) {
|
|
238
|
-
resolve(file.toBlob(type));
|
|
239
|
-
} else {
|
|
240
|
-
resolve(blob);
|
|
241
|
-
}
|
|
242
|
-
} catch (ex) {
|
|
243
|
-
reject(ex);
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
reader.addEventListener("error", () => reject());
|
|
247
|
-
reader.readAsArrayBuffer(blob);
|
|
248
|
-
} catch (ex) {
|
|
249
|
-
reject(ex);
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
};
|
|
253
148
|
export {
|
|
254
|
-
|
|
149
|
+
getBranchContext
|
|
255
150
|
};
|
|
256
151
|
//# sourceMappingURL=index.es55.js.map
|
package/dist/index.es55.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es55.js","sources":["../src/utils/BlobFix.ts"],"sourcesContent":["/*\n * There is a bug where `navigator.mediaDevices.getUserMedia` + `MediaRecorder`\n * creates WEBM files without duration metadata. See:\n * - https://bugs.chromium.org/p/chromium/issues/detail?id=642012\n * - https://stackoverflow.com/a/39971175/13989043\n *\n * This file contains a function that fixes the duration metadata of a WEBM file.\n * - Answer found: https://stackoverflow.com/a/75218309/13989043\n * - Code adapted from: https://github.com/mat-sz/webm-fix-duration\n * (forked from: https://github.com/yusitnikov/fix-webm-duration)\n */\n\ninterface Section {\n name: string;\n type: string;\n}\n\nconst sections: Record<number, Section> = {\n 0xa45dfa3: { name: \"EBML\", type: \"Container\" },\n 0x286: { name: \"EBMLVersion\", type: \"Uint\" },\n 0x2f7: { name: \"EBMLReadVersion\", type: \"Uint\" },\n 0x2f2: { name: \"EBMLMaxIDLength\", type: \"Uint\" },\n 0x2f3: { name: \"EBMLMaxSizeLength\", type: \"Uint\" },\n 0x282: { name: \"DocType\", type: \"String\" },\n 0x287: { name: \"DocTypeVersion\", type: \"Uint\" },\n 0x285: { name: \"DocTypeReadVersion\", type: \"Uint\" },\n 0x6c: { name: \"Void\", type: \"Binary\" },\n 0x489: { name: \"Duration\", type: \"Float\" },\n 0x8538067: { name: \"Segment\", type: \"Container\" },\n 0x549a966: { name: \"Info\", type: \"Container\" },\n 0xad7b1: { name: \"TimecodeScale\", type: \"Uint\" },\n};\n\nclass WebmBase<T> {\n source?: Uint8Array;\n data?: T;\n name: string;\n type: string;\n\n constructor(name = \"Unknown\", type = \"Unknown\") {\n this.name = name;\n this.type = type;\n }\n\n updateBySource() {}\n\n setSource(source: Uint8Array) {\n this.source = source;\n this.updateBySource();\n }\n\n updateByData() {}\n\n setData(data: T) {\n this.data = data;\n this.updateByData();\n }\n}\n\nclass WebmUint extends WebmBase<string> {\n constructor(name: string, type: string) {\n super(name, type || \"Uint\");\n }\n\n updateBySource() {\n this.data = \"\";\n for (let i = 0; i < this.source!.length; i++) {\n const hex = this.source![i].toString(16);\n this.data += padHex(hex);\n }\n }\n\n updateByData() {\n const length = this.data!.length / 2;\n this.source = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n const hex = this.data!.substr(i * 2, 2);\n this.source[i] = parseInt(hex, 16);\n }\n }\n\n getValue() {\n return parseInt(this.data!, 16);\n }\n\n setValue(value: number) {\n this.setData(padHex(value.toString(16)));\n }\n}\n\nfunction padHex(hex: string) {\n return hex.length % 2 === 1 ? \"0\" + hex : hex;\n}\n\nclass WebmFloat extends WebmBase<number> {\n constructor(name: string, type: string) {\n super(name, type || \"Float\");\n }\n\n getFloatArrayType() {\n return this.source && this.source.length === 4\n ? Float32Array\n : Float64Array;\n }\n \n updateBySource() {\n const byteArray = this.source!.slice().reverse();\n const floatArrayType = this.getFloatArrayType();\n const floatArray = new floatArrayType(byteArray.buffer as ArrayBuffer);\n this.data! = floatArray[0];\n }\n \n updateByData() {\n const floatArrayType = this.getFloatArrayType();\n const floatArray = new floatArrayType([this.data!]);\n const byteArray = new Uint8Array(floatArray.buffer as ArrayBuffer);\n this.source = byteArray.slice().reverse();\n }\n \n getValue() {\n return this.data;\n }\n \n setValue(value: number) {\n this.setData(value);\n }\n}\n\ninterface ContainerData {\n id: number;\n idHex?: string;\n data: WebmBase<any>;\n}\n\nclass WebmContainer extends WebmBase<ContainerData[]> {\n offset: number = 0;\n data: ContainerData[] = [];\n\n constructor(name: string, type: string) {\n super(name, type || \"Container\");\n }\n\n readByte() {\n return this.source![this.offset++];\n }\n \n readUint() {\n const firstByte = this.readByte();\n const bytes = 8 - firstByte.toString(2).length;\n let value = firstByte - (1 << (7 - bytes));\n for (let i = 0; i < bytes; i++) {\n value *= 256;\n value += this.readByte();\n }\n return value;\n }\n \n updateBySource() {\n let end: number | undefined = undefined;\n this.data = [];\n for (\n this.offset = 0;\n this.offset < this.source!.length;\n this.offset = end\n ) {\n const id = this.readUint();\n const len = this.readUint();\n end = Math.min(this.offset + len, this.source!.length);\n const data = this.source!.slice(this.offset, end);\n\n const info = sections[id] || { name: \"Unknown\", type: \"Unknown\" };\n let ctr: any = WebmBase;\n switch (info.type) {\n case \"Container\":\n ctr = WebmContainer;\n break;\n case \"Uint\":\n ctr = WebmUint;\n break;\n case \"Float\":\n ctr = WebmFloat;\n break;\n }\n const section = new ctr(info.name, info.type);\n section.setSource(data);\n this.data.push({\n id: id,\n idHex: id.toString(16),\n data: section,\n });\n }\n }\n \n writeUint(x: number, draft = false) {\n let bytes = 1, flag = 0x80;\n while (x >= flag && bytes < 8) {\n bytes++;\n flag *= 0x80;\n }\n\n if (!draft) {\n let value = flag + x;\n for (let i = bytes - 1; i >= 0; i--) {\n const c = value % 256;\n this.source![this.offset! + i] = c;\n value = (value - c) / 256;\n }\n }\n\n this.offset += bytes;\n }\n\n writeSections(draft = false) {\n this.offset = 0;\n for (let i = 0; i < this.data.length; i++) {\n const section = this.data[i],\n content = section.data.source,\n contentLength = content!.length;\n this.writeUint(section.id, draft);\n this.writeUint(contentLength, draft);\n if (!draft) {\n this.source!.set(content!, this.offset);\n }\n this.offset += contentLength;\n }\n return this.offset;\n }\n\n updateByData() {\n const length = this.writeSections(true);\n this.source = new Uint8Array(length);\n this.writeSections();\n }\n\n getSectionById(id: number) {\n for (let i = 0; i < this.data.length; i++) {\n const section = this.data[i];\n if (section.id === id) {\n return section.data;\n }\n }\n return undefined;\n }\n}\n\nclass WebmFile extends WebmContainer {\n constructor(source: Uint8Array) {\n super(\"File\", \"File\");\n this.setSource(source);\n }\n\n fixDuration(duration: number) {\n const segmentSection = this.getSectionById(0x8538067) as WebmContainer;\n if (!segmentSection) {\n return false;\n }\n\n const infoSection = segmentSection.getSectionById(0x549a966) as WebmContainer;\n if (!infoSection) {\n return false;\n }\n\n const timeScaleSection = infoSection.getSectionById(0xad7b1) as WebmFloat;\n if (!timeScaleSection) {\n return false;\n }\n\n let durationSection = infoSection.getSectionById(0x489) as WebmFloat;\n if (durationSection) {\n if (durationSection.getValue()! <= 0) {\n durationSection.setValue(duration);\n } else {\n return false;\n }\n } else {\n durationSection = new WebmFloat(\"Duration\", \"Float\");\n durationSection.setValue(duration);\n infoSection.data.push({\n id: 0x489,\n data: durationSection,\n });\n }\n\n timeScaleSection.setValue(1000000);\n infoSection.updateByData();\n segmentSection.updateByData();\n this.updateByData();\n\n return true;\n }\n\n toBlob(type = \"video/webm\") {\n return new Blob([this.source!.buffer as ArrayBuffer], { type });\n }\n}\n\nexport const webmFixDuration = (\n blob: Blob,\n duration: number,\n type = \"video/webm\",\n): Promise<Blob> => {\n return new Promise((resolve, reject) => {\n try {\n const reader = new FileReader();\n\n reader.addEventListener(\"loadend\", () => {\n try {\n const result = reader.result as ArrayBuffer;\n const file = new WebmFile(new Uint8Array(result));\n if (file.fixDuration(duration)) {\n resolve(file.toBlob(type));\n } else {\n resolve(blob);\n }\n } catch (ex) {\n reject(ex);\n }\n });\n\n reader.addEventListener(\"error\", () => reject());\n\n reader.readAsArrayBuffer(blob);\n } catch (ex) {\n reject(ex);\n }\n });\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es55.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/ui/branching.js"],"sourcesContent":["//#region src/ui/branching.ts\nfunction getBranchSequence(history) {\n\tconst nodeIds = /* @__PURE__ */ new Set();\n\tconst childrenMap = {};\n\tif (history.length <= 1) return {\n\t\trootSequence: {\n\t\t\ttype: \"sequence\",\n\t\t\titems: history.map((value) => ({\n\t\t\t\ttype: \"node\",\n\t\t\t\tvalue,\n\t\t\t\tpath: []\n\t\t\t}))\n\t\t},\n\t\tpaths: []\n\t};\n\thistory.forEach((state) => {\n\t\tconst checkpointId = state.parent_checkpoint?.checkpoint_id ?? \"$\";\n\t\tchildrenMap[checkpointId] ??= [];\n\t\tchildrenMap[checkpointId].push(state);\n\t\tif (state.checkpoint?.checkpoint_id != null) nodeIds.add(state.checkpoint.checkpoint_id);\n\t});\n\tconst maxId = (...ids) => ids.filter((i) => i != null).sort((a, b) => a.localeCompare(b)).at(-1);\n\tconst lastOrphanedNode = childrenMap.$ == null ? Object.keys(childrenMap).filter((parentId) => !nodeIds.has(parentId)).map((parentId) => {\n\t\tconst queue$1 = [parentId];\n\t\tconst seen = /* @__PURE__ */ new Set();\n\t\tlet lastId = parentId;\n\t\twhile (queue$1.length > 0) {\n\t\t\tconst current = queue$1.shift();\n\t\t\tif (seen.has(current)) continue;\n\t\t\tseen.add(current);\n\t\t\tconst children = (childrenMap[current] ?? []).flatMap((i) => i.checkpoint?.checkpoint_id ?? []);\n\t\t\tlastId = maxId(lastId, ...children);\n\t\t\tqueue$1.push(...children);\n\t\t}\n\t\treturn {\n\t\t\tparentId,\n\t\t\tlastId\n\t\t};\n\t}).sort((a, b) => a.lastId.localeCompare(b.lastId)).at(-1)?.parentId : void 0;\n\tif (lastOrphanedNode != null) childrenMap.$ = childrenMap[lastOrphanedNode];\n\tconst rootSequence = {\n\t\ttype: \"sequence\",\n\t\titems: []\n\t};\n\tconst queue = [{\n\t\tid: \"$\",\n\t\tsequence: rootSequence,\n\t\tpath: []\n\t}];\n\tconst paths = [];\n\tconst visited = /* @__PURE__ */ new Set();\n\twhile (queue.length > 0) {\n\t\tconst task = queue.shift();\n\t\tif (visited.has(task.id)) continue;\n\t\tvisited.add(task.id);\n\t\tconst children = childrenMap[task.id];\n\t\tif (children == null || children.length === 0) continue;\n\t\tlet fork;\n\t\tif (children.length > 1) {\n\t\t\tfork = {\n\t\t\t\ttype: \"fork\",\n\t\t\t\titems: []\n\t\t\t};\n\t\t\ttask.sequence.items.push(fork);\n\t\t}\n\t\tfor (const value of children) {\n\t\t\tconst id = value.checkpoint?.checkpoint_id;\n\t\t\tif (id == null) continue;\n\t\t\tlet { sequence } = task;\n\t\t\tlet { path } = task;\n\t\t\tif (fork != null) {\n\t\t\t\tsequence = {\n\t\t\t\t\ttype: \"sequence\",\n\t\t\t\t\titems: []\n\t\t\t\t};\n\t\t\t\tfork.items.unshift(sequence);\n\t\t\t\tpath = path.slice();\n\t\t\t\tpath.push(id);\n\t\t\t\tpaths.push(path);\n\t\t\t}\n\t\t\tsequence.items.push({\n\t\t\t\ttype: \"node\",\n\t\t\t\tvalue,\n\t\t\t\tpath\n\t\t\t});\n\t\t\tqueue.push({\n\t\t\t\tid,\n\t\t\t\tsequence,\n\t\t\t\tpath\n\t\t\t});\n\t\t}\n\t}\n\treturn {\n\t\trootSequence,\n\t\tpaths\n\t};\n}\nconst PATH_SEP = \">\";\nconst ROOT_ID = \"$\";\nfunction getBranchView(sequence, paths, branch) {\n\tconst path = branch.split(PATH_SEP);\n\tconst pathMap = {};\n\tfor (const path$1 of paths) {\n\t\tconst parent = path$1.at(-2) ?? ROOT_ID;\n\t\tpathMap[parent] ??= [];\n\t\tpathMap[parent].unshift(path$1);\n\t}\n\tconst history = [];\n\tconst branchByCheckpoint = {};\n\tconst forkStack = path.slice();\n\tconst queue = [...sequence.items];\n\twhile (queue.length > 0) {\n\t\tconst item = queue.shift();\n\t\tif (item.type === \"node\") {\n\t\t\thistory.push(item.value);\n\t\t\tconst checkpointId = item.value.checkpoint?.checkpoint_id;\n\t\t\tif (checkpointId == null) continue;\n\t\t\tbranchByCheckpoint[checkpointId] = {\n\t\t\t\tbranch: item.path.join(PATH_SEP),\n\t\t\t\tbranchOptions: (item.path.length > 0 ? pathMap[item.path.at(-2) ?? ROOT_ID] ?? [] : []).map((p) => p.join(PATH_SEP))\n\t\t\t};\n\t\t}\n\t\tif (item.type === \"fork\") {\n\t\t\tconst forkId = forkStack.shift();\n\t\t\tconst index = forkId != null ? item.items.findIndex((value) => {\n\t\t\t\tconst firstItem = value.items.at(0);\n\t\t\t\tif (!firstItem || firstItem.type !== \"node\") return false;\n\t\t\t\treturn firstItem.value.checkpoint?.checkpoint_id === forkId;\n\t\t\t}) : -1;\n\t\t\tconst nextItems = item.items.at(index)?.items ?? [];\n\t\t\tqueue.push(...nextItems);\n\t\t}\n\t}\n\treturn {\n\t\thistory,\n\t\tbranchByCheckpoint\n\t};\n}\nfunction getBranchContext(branch, history) {\n\tconst { rootSequence: branchTree, paths } = getBranchSequence(history ?? []);\n\tconst { history: flatHistory, branchByCheckpoint } = getBranchView(branchTree, paths, branch);\n\treturn {\n\t\tbranchTree,\n\t\tflatHistory,\n\t\tbranchByCheckpoint,\n\t\tthreadHead: flatHistory.at(-1)\n\t};\n}\n\n//#endregion\nexport { getBranchContext };\n//# sourceMappingURL=branching.js.map"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/index.es59.js
CHANGED
package/dist/index.es6.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
2
|
+
import "@langchain/langgraph-sdk";
|
|
3
3
|
import { createContext, useContext, useState, useEffect, useCallback } from "react";
|
|
4
4
|
import { validate } from "uuid";
|
|
5
5
|
import { useChatRuntime } from "./index.es5.js";
|
|
@@ -13,7 +13,7 @@ function getThreadSearchMetadata(assistantId) {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
function ThreadProvider({ children }) {
|
|
16
|
-
const { apiUrl, assistantId } = useChatRuntime();
|
|
16
|
+
const { apiUrl, assistantId, identity } = useChatRuntime();
|
|
17
17
|
const [threads, setThreads] = useState([]);
|
|
18
18
|
const [threadsLoading, setThreadsLoading] = useState(false);
|
|
19
19
|
const [threadId, setThreadId] = useState(null);
|
|
@@ -28,7 +28,12 @@ function ThreadProvider({ children }) {
|
|
|
28
28
|
}, []);
|
|
29
29
|
const getThreads = useCallback(async () => {
|
|
30
30
|
if (!apiUrl || !assistantId) return [];
|
|
31
|
-
|
|
31
|
+
if (!identity?.authToken) {
|
|
32
|
+
console.error("No authToken available for getThreads");
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
console.log("Fetching threads with authToken:", identity?.authToken);
|
|
36
|
+
const client = createClient(apiUrl, identity?.authToken ?? void 0);
|
|
32
37
|
const threads2 = await client.threads.search({
|
|
33
38
|
metadata: {
|
|
34
39
|
...getThreadSearchMetadata(assistantId)
|
|
@@ -36,23 +41,31 @@ function ThreadProvider({ children }) {
|
|
|
36
41
|
limit: 100
|
|
37
42
|
});
|
|
38
43
|
return threads2;
|
|
39
|
-
}, [apiUrl, assistantId]);
|
|
44
|
+
}, [apiUrl, assistantId, identity]);
|
|
40
45
|
const deleteThread = useCallback(async (threadIdToDelete) => {
|
|
41
46
|
if (!apiUrl) return;
|
|
42
|
-
|
|
47
|
+
if (!identity?.authToken) {
|
|
48
|
+
console.error("No authToken available for deleteThread");
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const client = createClient(apiUrl, identity?.authToken ?? void 0);
|
|
43
52
|
await client.threads.delete(threadIdToDelete);
|
|
44
53
|
setThreads((prev) => prev.filter((t) => t.thread_id !== threadIdToDelete));
|
|
45
54
|
if (threadId === threadIdToDelete) {
|
|
46
55
|
setThreadId(null);
|
|
47
56
|
}
|
|
48
|
-
}, [apiUrl, threadId]);
|
|
57
|
+
}, [apiUrl, threadId, identity]);
|
|
49
58
|
const updateThread = useCallback(async (threadIdToUpdate, metadata) => {
|
|
50
59
|
if (!apiUrl) return;
|
|
51
|
-
|
|
60
|
+
if (!identity?.authToken) {
|
|
61
|
+
console.error("No authToken available for updateThread");
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const client = createClient(apiUrl, identity?.authToken ?? void 0);
|
|
52
65
|
await client.threads.update(threadIdToUpdate, { metadata });
|
|
53
66
|
const updatedThreads = await getThreads();
|
|
54
67
|
setThreads(updatedThreads);
|
|
55
|
-
}, [apiUrl, getThreads]);
|
|
68
|
+
}, [apiUrl, getThreads, identity]);
|
|
56
69
|
return /* @__PURE__ */ jsx(
|
|
57
70
|
ThreadContext.Provider,
|
|
58
71
|
{
|
package/dist/index.es6.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es6.js","sources":["../src/providers/Thread.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"index.es6.js","sources":["../src/providers/Thread.tsx"],"sourcesContent":["import { type Thread } from \"@langchain/langgraph-sdk\";\nimport { createContext, useCallback, useContext, useEffect, useState, type Dispatch, type ReactNode, type SetStateAction } from \"react\";\nimport { validate } from \"uuid\";\nimport { useChatRuntime } from \"./ChatRuntime\";\nimport { createClient } from \"./client\";\n/**\n * Thread context manages the current conversation thread ID and configuration.\n * A thread represents a single conversation session with the AI.\n */\n\nexport type ThreadMode = \"single\" | \"multi\";\n\n\ninterface ThreadContextType {\n /** Current thread ID, null if no thread exists yet */\n threadId: string | null;\n /** Set or update the current thread ID */\n setThreadId: (id: string | null) => void;\n /** List of existing threads */\n threads: Thread[];\n /** Function to fetch existing threads from the API */\n getThreads: () => Promise<Thread[]>;\n /** Function to update the list of threads */\n setThreads: Dispatch<SetStateAction<Thread[]>>;\n /** Thread-specific configuration passed to the LangGraph API */\n configuration: any;\n /** Update thread configuration */\n setConfiguration: (config: any) => void;\n /** Whether threads are currently being loaded */\n threadsLoading: boolean;\n /** Set the loading state for threads */\n setThreadsLoading: Dispatch<SetStateAction<boolean>>;\n\n mode: ThreadMode;\n setMode: Dispatch<SetStateAction<ThreadMode>>;\n /** Delete a thread by ID */\n deleteThread: (threadId: string) => Promise<void>;\n /** Update thread metadata */\n updateThread: (threadId: string, metadata: Record<string, any>) => Promise<void>;\n // createNewThread: () => void;\n // clearThread: () => void;\n}\n\n\nconst ThreadContext = createContext<ThreadContextType | undefined>(undefined);\n\nfunction getThreadSearchMetadata(\n assistantId: string,\n): { graph_id: string } | { assistant_id: string } {\n if (validate(assistantId)) {\n return { assistant_id: assistantId };\n } else {\n return { graph_id: assistantId };\n }\n}\n\n/**\n * Provides thread management for chat conversations.\n * Stores the current thread ID and configuration.\n * \n * @example\n * ```tsx\n * <ThreadProvider>\n * <YourChatComponent />\n * </ThreadProvider>\n * ```\n */\nexport function ThreadProvider({ children }: { children: ReactNode }) {\n\n const { apiUrl, assistantId, identity } = useChatRuntime();\n const [threads, setThreads] = useState<Thread[]>([]);\n const [threadsLoading, setThreadsLoading] = useState(false);\n\n const [threadId, setThreadId] = useState<string | null>(null);\n const [configuration, setConfiguration] = useState<any>();\n\n const [mode, setMode] = useState<ThreadMode>(\"single\");\n\n // Extract thread ID from URL query parameter on component mount\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const threadFromUrl = searchParams.get(\"thread\");\n if (threadFromUrl) {\n setThreadId(threadFromUrl);\n }\n }, []);\n\n\n const getThreads = useCallback(async (): Promise<Thread[]> => {\n if (!apiUrl || !assistantId) return [];\n if (!identity?.authToken) {\n console.error(\"No authToken available for getThreads\");\n return [];\n }\n console.log(\"Fetching threads with authToken:\", identity?.authToken);\n const client = createClient(apiUrl, identity?.authToken ?? undefined);\n\n const threads = await client.threads.search({\n metadata: {\n ...getThreadSearchMetadata(assistantId),\n },\n limit: 100,\n });\n\n return threads;\n }, [apiUrl, assistantId, identity]);\n\n const deleteThread = useCallback(async (threadIdToDelete: string) => {\n if (!apiUrl) return;\n if (!identity?.authToken) {\n console.error(\"No authToken available for deleteThread\");\n return;\n }\n const client = createClient(apiUrl, identity?.authToken ?? undefined);\n\n await client.threads.delete(threadIdToDelete);\n\n // Update local state\n setThreads(prev => prev.filter(t => t.thread_id !== threadIdToDelete));\n\n // Clear current thread if it was deleted\n if (threadId === threadIdToDelete) {\n setThreadId(null);\n }\n }, [apiUrl, threadId, identity]);\n\n const updateThread = useCallback(async (threadIdToUpdate: string, metadata: Record<string, any>) => {\n if (!apiUrl) return;\n if (!identity?.authToken) {\n console.error(\"No authToken available for updateThread\");\n return;\n }\n const client = createClient(apiUrl, identity?.authToken ?? undefined);\n\n await client.threads.update(threadIdToUpdate, { metadata });\n\n // Refresh threads to get updated data\n const updatedThreads = await getThreads();\n setThreads(updatedThreads);\n }, [apiUrl, getThreads, identity]);\n\n return (\n <ThreadContext.Provider\n value={{ mode, setMode, threadId, setThreadId, getThreads, threads, setThreads, configuration, setConfiguration, threadsLoading, setThreadsLoading, deleteThread, updateThread }}\n >\n {children}\n </ThreadContext.Provider>\n );\n}\n\n/**\n * Hook to access the current thread context.\n * Use this to get or set the thread ID and configuration.\n * \n * @throws {Error} If used outside of ThreadProvider\n * \n * @example\n * ```tsx\n * const { threadId, setThreadId, configuration, setConfiguration } = useThread();\n * ```\n */\nexport function useThread() {\n const context = useContext(ThreadContext);\n if (!context) {\n throw new Error(\"useThread must be used within a ThreadProvider\");\n }\n return context;\n}\n"],"names":["threads"],"mappings":";;;;;;AA4CA,MAAM,gBAAgB,cAA6C,MAAS;AAE5E,SAAS,wBACP,aACiD;AACjD,MAAI,SAAS,WAAW,GAAG;AACzB,WAAO,EAAE,cAAc,YAAA;AAAA,EACzB,OAAO;AACL,WAAO,EAAE,UAAU,YAAA;AAAA,EACrB;AACF;AAaO,SAAS,eAAe,EAAE,YAAqC;AAEpE,QAAM,EAAE,QAAQ,aAAa,SAAA,IAAa,eAAA;AAC1C,QAAM,CAAC,SAAS,UAAU,IAAI,SAAmB,CAAA,CAAE;AACnD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAE1D,QAAM,CAAC,UAAU,WAAW,IAAI,SAAwB,IAAI;AAC5D,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAA;AAE1C,QAAM,CAAC,MAAM,OAAO,IAAI,SAAqB,QAAQ;AAGrD,YAAU,MAAM;AACd,UAAM,eAAe,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC/D,UAAM,gBAAgB,aAAa,IAAI,QAAQ;AAC/C,QAAI,eAAe;AACjB,kBAAY,aAAa;AAAA,IAC3B;AAAA,EACF,GAAG,CAAA,CAAE;AAGL,QAAM,aAAa,YAAY,YAA+B;AAC5D,QAAI,CAAC,UAAU,CAAC,oBAAoB,CAAA;AACpC,QAAI,CAAC,UAAU,WAAW;AACxB,cAAQ,MAAM,uCAAuC;AACrD,aAAO,CAAA;AAAA,IACT;AACA,YAAQ,IAAI,oCAAoC,UAAU,SAAS;AACnE,UAAM,SAAS,aAAa,QAAQ,UAAU,aAAa,MAAS;AAEpE,UAAMA,WAAU,MAAM,OAAO,QAAQ,OAAO;AAAA,MAC1C,UAAU;AAAA,QACR,GAAG,wBAAwB,WAAW;AAAA,MAAA;AAAA,MAExC,OAAO;AAAA,IAAA,CACR;AAED,WAAOA;AAAAA,EACT,GAAG,CAAC,QAAQ,aAAa,QAAQ,CAAC;AAElC,QAAM,eAAe,YAAY,OAAO,qBAA6B;AACnE,QAAI,CAAC,OAAQ;AACb,QAAI,CAAC,UAAU,WAAW;AACxB,cAAQ,MAAM,yCAAyC;AACvD;AAAA,IACF;AACA,UAAM,SAAS,aAAa,QAAQ,UAAU,aAAa,MAAS;AAEpE,UAAM,OAAO,QAAQ,OAAO,gBAAgB;AAG5C,eAAW,UAAQ,KAAK,OAAO,OAAK,EAAE,cAAc,gBAAgB,CAAC;AAGrE,QAAI,aAAa,kBAAkB;AACjC,kBAAY,IAAI;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,QAAQ,UAAU,QAAQ,CAAC;AAE/B,QAAM,eAAe,YAAY,OAAO,kBAA0B,aAAkC;AAClG,QAAI,CAAC,OAAQ;AACb,QAAI,CAAC,UAAU,WAAW;AACxB,cAAQ,MAAM,yCAAyC;AACvD;AAAA,IACF;AACA,UAAM,SAAS,aAAa,QAAQ,UAAU,aAAa,MAAS;AAEpE,UAAM,OAAO,QAAQ,OAAO,kBAAkB,EAAE,UAAU;AAG1D,UAAM,iBAAiB,MAAM,WAAA;AAC7B,eAAW,cAAc;AAAA,EAC3B,GAAG,CAAC,QAAQ,YAAY,QAAQ,CAAC;AAEjC,SACE;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACC,OAAO,EAAE,MAAM,SAAS,UAAU,aAAa,YAAY,SAAS,YAAY,eAAe,kBAAkB,gBAAgB,mBAAmB,cAAc,aAAA;AAAA,MAEjK;AAAA,IAAA;AAAA,EAAA;AAGP;AAaO,SAAS,YAAY;AAC1B,QAAM,UAAU,WAAW,aAAa;AACxC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AACA,SAAO;AACT;"}
|
package/dist/index.es60.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseMessageChunk, _mergeDicts, mergeContent, BaseMessage } from "./index.
|
|
1
|
+
import { BaseMessageChunk, _mergeDicts, mergeContent, BaseMessage } from "./index.es45.js";
|
|
2
2
|
var ChatMessage = class ChatMessage2 extends BaseMessage {
|
|
3
3
|
static lc_name() {
|
|
4
4
|
return "ChatMessage";
|
package/dist/index.es61.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseMessageChunk, _mergeDicts, mergeContent, BaseMessage } from "./index.
|
|
1
|
+
import { BaseMessageChunk, _mergeDicts, mergeContent, BaseMessage } from "./index.es45.js";
|
|
2
2
|
var FunctionMessage = class extends BaseMessage {
|
|
3
3
|
static lc_name() {
|
|
4
4
|
return "FunctionMessage";
|
package/dist/index.es62.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { isBaseMessageChunk } from "./index.
|
|
2
|
-
import { ToolMessageChunk, ToolMessage } from "./index.
|
|
1
|
+
import { isBaseMessageChunk } from "./index.es45.js";
|
|
2
|
+
import { ToolMessageChunk, ToolMessage } from "./index.es49.js";
|
|
3
3
|
import { ChatMessageChunk, ChatMessage } from "./index.es60.js";
|
|
4
4
|
import { FunctionMessageChunk, FunctionMessage } from "./index.es61.js";
|
|
5
|
-
import { HumanMessageChunk, HumanMessage } from "./index.
|
|
6
|
-
import { RemoveMessage } from "./index.
|
|
7
|
-
import { SystemMessageChunk, SystemMessage } from "./index.
|
|
8
|
-
import { convertToChunk } from "./index.
|
|
9
|
-
import { AIMessageChunk, AIMessage } from "./index.
|
|
5
|
+
import { HumanMessageChunk, HumanMessage } from "./index.es46.js";
|
|
6
|
+
import { RemoveMessage } from "./index.es50.js";
|
|
7
|
+
import { SystemMessageChunk, SystemMessage } from "./index.es48.js";
|
|
8
|
+
import { convertToChunk } from "./index.es51.js";
|
|
9
|
+
import { AIMessageChunk, AIMessage } from "./index.es47.js";
|
|
10
10
|
import { RunnableLambda } from "./index.es78.js";
|
|
11
11
|
const _isMessageType = (msg, types) => {
|
|
12
12
|
const typesAsStrings = [...new Set(types?.map((t) => {
|
package/dist/index.es67.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { PrismAsyncLight } from "react-syntax-highlighter";
|
|
3
|
-
import tsx from "./index.
|
|
4
|
-
import python from "./index.
|
|
5
|
-
import { p as prismExports } from "./index.
|
|
3
|
+
import tsx from "./index.es84.js";
|
|
4
|
+
import python from "./index.es85.js";
|
|
5
|
+
import { p as prismExports } from "./index.es86.js";
|
|
6
6
|
import "react";
|
|
7
7
|
PrismAsyncLight.registerLanguage("js", tsx);
|
|
8
8
|
PrismAsyncLight.registerLanguage("jsx", tsx);
|
package/dist/index.es69.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __export } from "./index.es56.js";
|
|
2
|
-
import { mapKeys, keyToJson } from "./index.
|
|
3
|
-
import { escapeIfNeeded } from "./index.
|
|
2
|
+
import { mapKeys, keyToJson } from "./index.es87.js";
|
|
3
|
+
import { escapeIfNeeded } from "./index.es88.js";
|
|
4
4
|
var serializable_exports = {};
|
|
5
5
|
__export(serializable_exports, {
|
|
6
6
|
Serializable: () => Serializable,
|
package/dist/index.es70.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _isContentBlock, _isObject, _isString, _isArray, iife, safeParseJson, _isNumber } from "./index.
|
|
1
|
+
import { _isContentBlock, _isObject, _isString, _isArray, iife, safeParseJson, _isNumber } from "./index.es89.js";
|
|
2
2
|
function convertAnthropicAnnotation(citation) {
|
|
3
3
|
if (citation.type === "char_location" && _isString(citation.document_title) && _isNumber(citation.start_char_index) && _isNumber(citation.end_char_index) && _isString(citation.cited_text)) {
|
|
4
4
|
const { document_title, start_char_index, end_char_index, cited_text, ...rest } = citation;
|
package/dist/index.es71.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isURLContentBlock, isBase64ContentBlock, isIDContentBlock, parseBase64DataUrl } from "./index.es57.js";
|
|
2
|
-
import { _isContentBlock, _isObject, _isString } from "./index.
|
|
2
|
+
import { _isContentBlock, _isObject, _isString } from "./index.es89.js";
|
|
3
3
|
function convertToV1FromDataContentBlock(block) {
|
|
4
4
|
if (isURLContentBlock(block)) return {
|
|
5
5
|
type: block.type,
|
package/dist/index.es72.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _isObject, _isArray, _isString, _isContentBlock, iife } from "./index.
|
|
1
|
+
import { _isObject, _isArray, _isString, _isContentBlock, iife } from "./index.es89.js";
|
|
2
2
|
import { isOpenAIDataBlock, convertToV1FromOpenAIDataBlock } from "./index.es71.js";
|
|
3
3
|
function convertToV1FromChatCompletions(message) {
|
|
4
4
|
const blocks = [];
|