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.es115.js
CHANGED
|
@@ -1,24 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
function tsx(Prism) {
|
|
6
|
-
Prism.register(jsx);
|
|
7
|
-
Prism.register(typescript);
|
|
8
|
-
(function(Prism2) {
|
|
9
|
-
var typescript2 = Prism2.util.clone(Prism2.languages.typescript);
|
|
10
|
-
Prism2.languages.tsx = Prism2.languages.extend("jsx", typescript2);
|
|
11
|
-
delete Prism2.languages.tsx["parameter"];
|
|
12
|
-
delete Prism2.languages.tsx["literal-property"];
|
|
13
|
-
var tag = Prism2.languages.tsx.tag;
|
|
14
|
-
tag.pattern = RegExp(
|
|
15
|
-
/(^|[^\w$]|(?=<\/))/.source + "(?:" + tag.pattern.source + ")",
|
|
16
|
-
tag.pattern.flags
|
|
17
|
-
);
|
|
18
|
-
tag.lookbehind = true;
|
|
19
|
-
})(Prism);
|
|
20
|
-
}
|
|
1
|
+
import { getDefaultExportFromCjs } from "./index.es264.js";
|
|
2
|
+
import { __require as requireEventemitter3 } from "./index.es255.js";
|
|
3
|
+
var eventemitter3Exports = requireEventemitter3();
|
|
4
|
+
const EventEmitter = /* @__PURE__ */ getDefaultExportFromCjs(eventemitter3Exports);
|
|
21
5
|
export {
|
|
22
|
-
|
|
6
|
+
EventEmitter as default
|
|
23
7
|
};
|
|
24
8
|
//# sourceMappingURL=index.es115.js.map
|
package/dist/index.es115.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es115.js","sources":[
|
|
1
|
+
{"version":3,"file":"index.es115.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
package/dist/index.es116.js
CHANGED
|
@@ -1,71 +1,76 @@
|
|
|
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
|
-
|
|
1
|
+
class TimeoutError extends Error {
|
|
2
|
+
name = "TimeoutError";
|
|
3
|
+
constructor(message, options) {
|
|
4
|
+
super(message, options);
|
|
5
|
+
Error.captureStackTrace?.(this, TimeoutError);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
const getAbortedReason = (signal) => signal.reason ?? new DOMException("This operation was aborted.", "AbortError");
|
|
9
|
+
function pTimeout(promise, options) {
|
|
10
|
+
const {
|
|
11
|
+
milliseconds,
|
|
12
|
+
fallback,
|
|
13
|
+
message,
|
|
14
|
+
customTimers = { setTimeout, clearTimeout },
|
|
15
|
+
signal
|
|
16
|
+
} = options;
|
|
17
|
+
let timer;
|
|
18
|
+
let abortHandler;
|
|
19
|
+
const wrappedPromise = new Promise((resolve, reject) => {
|
|
20
|
+
if (typeof milliseconds !== "number" || Math.sign(milliseconds) !== 1) {
|
|
21
|
+
throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${milliseconds}\``);
|
|
22
|
+
}
|
|
23
|
+
if (signal?.aborted) {
|
|
24
|
+
reject(getAbortedReason(signal));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (signal) {
|
|
28
|
+
abortHandler = () => {
|
|
29
|
+
reject(getAbortedReason(signal));
|
|
30
|
+
};
|
|
31
|
+
signal.addEventListener("abort", abortHandler, { once: true });
|
|
32
|
+
}
|
|
33
|
+
promise.then(resolve, reject);
|
|
34
|
+
if (milliseconds === Number.POSITIVE_INFINITY) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const timeoutError = new TimeoutError();
|
|
38
|
+
timer = customTimers.setTimeout.call(void 0, () => {
|
|
39
|
+
if (fallback) {
|
|
40
|
+
try {
|
|
41
|
+
resolve(fallback());
|
|
42
|
+
} catch (error) {
|
|
43
|
+
reject(error);
|
|
44
|
+
}
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (typeof promise.cancel === "function") {
|
|
48
|
+
promise.cancel();
|
|
31
49
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
pattern: /(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,
|
|
40
|
-
greedy: true
|
|
41
|
-
},
|
|
42
|
-
function: {
|
|
43
|
-
pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,
|
|
44
|
-
lookbehind: true
|
|
45
|
-
},
|
|
46
|
-
"class-name": {
|
|
47
|
-
pattern: /(\bclass\s+)\w+/i,
|
|
48
|
-
lookbehind: true
|
|
49
|
-
},
|
|
50
|
-
decorator: {
|
|
51
|
-
pattern: /(^[\t ]*)@\w+(?:\.\w+)*/m,
|
|
52
|
-
lookbehind: true,
|
|
53
|
-
alias: ["annotation", "punctuation"],
|
|
54
|
-
inside: {
|
|
55
|
-
punctuation: /\./
|
|
50
|
+
if (message === false) {
|
|
51
|
+
resolve();
|
|
52
|
+
} else if (message instanceof Error) {
|
|
53
|
+
reject(message);
|
|
54
|
+
} else {
|
|
55
|
+
timeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;
|
|
56
|
+
reject(timeoutError);
|
|
56
57
|
}
|
|
57
|
-
},
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
}, milliseconds);
|
|
59
|
+
});
|
|
60
|
+
const cancelablePromise = wrappedPromise.finally(() => {
|
|
61
|
+
cancelablePromise.clear();
|
|
62
|
+
if (abortHandler && signal) {
|
|
63
|
+
signal.removeEventListener("abort", abortHandler);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
cancelablePromise.clear = () => {
|
|
67
|
+
customTimers.clearTimeout.call(void 0, timer);
|
|
68
|
+
timer = void 0;
|
|
64
69
|
};
|
|
65
|
-
|
|
66
|
-
Prism.languages.py = Prism.languages.python;
|
|
70
|
+
return cancelablePromise;
|
|
67
71
|
}
|
|
68
72
|
export {
|
|
69
|
-
|
|
73
|
+
TimeoutError,
|
|
74
|
+
pTimeout as default
|
|
70
75
|
};
|
|
71
76
|
//# sourceMappingURL=index.es116.js.map
|
package/dist/index.es116.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es116.js","sources":["../node_modules/.pnpm/
|
|
1
|
+
{"version":3,"file":"index.es116.js","sources":["../node_modules/.pnpm/p-timeout@7.0.1/node_modules/p-timeout/index.js"],"sourcesContent":["export class TimeoutError extends Error {\n\tname = 'TimeoutError';\n\n\tconstructor(message, options) {\n\t\tsuper(message, options);\n\t\tError.captureStackTrace?.(this, TimeoutError);\n\t}\n}\n\nconst getAbortedReason = signal => signal.reason ?? new DOMException('This operation was aborted.', 'AbortError');\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t\tsignal,\n\t} = options;\n\n\tlet timer;\n\tlet abortHandler;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (signal?.aborted) {\n\t\t\treject(getAbortedReason(signal));\n\t\t\treturn;\n\t\t}\n\n\t\tif (signal) {\n\t\t\tabortHandler = () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t};\n\n\t\t\tsignal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\t// Use .then() instead of async IIFE to preserve stack traces\n\t\t// eslint-disable-next-line promise/prefer-await-to-then, promise/prefer-catch\n\t\tpromise.then(resolve, reject);\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\t// `.call(undefined, ...)` is needed for custom timers to avoid context issues\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\t});\n\n\t// eslint-disable-next-line promise/prefer-await-to-then\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t\tif (abortHandler && signal) {\n\t\t\tsignal.removeEventListener('abort', abortHandler);\n\t\t}\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\t// `.call(undefined, ...)` is needed for custom timers to avoid context issues\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n"],"names":[],"mappings":"AAAO,MAAM,qBAAqB,MAAM;AAAA,EACvC,OAAO;AAAA,EAEP,YAAY,SAAS,SAAS;AAC7B,UAAM,SAAS,OAAO;AACtB,UAAM,oBAAoB,MAAM,YAAY;AAAA,EAC7C;AACD;AAEA,MAAM,mBAAmB,YAAU,OAAO,UAAU,IAAI,aAAa,+BAA+B,YAAY;AAEjG,SAAS,SAAS,SAAS,SAAS;AAClD,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe,EAAC,YAAY,aAAY;AAAA,IACxC;AAAA,EACF,IAAK;AAEJ,MAAI;AACJ,MAAI;AAEJ,QAAM,iBAAiB,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvD,QAAI,OAAO,iBAAiB,YAAY,KAAK,KAAK,YAAY,MAAM,GAAG;AACtE,YAAM,IAAI,UAAU,4DAA4D,YAAY,IAAI;AAAA,IACjG;AAEA,QAAI,QAAQ,SAAS;AACpB,aAAO,iBAAiB,MAAM,CAAC;AAC/B;AAAA,IACD;AAEA,QAAI,QAAQ;AACX,qBAAe,MAAM;AACpB,eAAO,iBAAiB,MAAM,CAAC;AAAA,MAChC;AAEA,aAAO,iBAAiB,SAAS,cAAc,EAAC,MAAM,KAAI,CAAC;AAAA,IAC5D;AAIA,YAAQ,KAAK,SAAS,MAAM;AAE5B,QAAI,iBAAiB,OAAO,mBAAmB;AAC9C;AAAA,IACD;AAGA,UAAM,eAAe,IAAI,aAAY;AAGrC,YAAQ,aAAa,WAAW,KAAK,QAAW,MAAM;AACrD,UAAI,UAAU;AACb,YAAI;AACH,kBAAQ,SAAQ,CAAE;AAAA,QACnB,SAAS,OAAO;AACf,iBAAO,KAAK;AAAA,QACb;AAEA;AAAA,MACD;AAEA,UAAI,OAAO,QAAQ,WAAW,YAAY;AACzC,gBAAQ,OAAM;AAAA,MACf;AAEA,UAAI,YAAY,OAAO;AACtB,gBAAO;AAAA,MACR,WAAW,mBAAmB,OAAO;AACpC,eAAO,OAAO;AAAA,MACf,OAAO;AACN,qBAAa,UAAU,WAAW,2BAA2B,YAAY;AACzE,eAAO,YAAY;AAAA,MACpB;AAAA,IACD,GAAG,YAAY;AAAA,EAChB,CAAC;AAGD,QAAM,oBAAoB,eAAe,QAAQ,MAAM;AACtD,sBAAkB,MAAK;AACvB,QAAI,gBAAgB,QAAQ;AAC3B,aAAO,oBAAoB,SAAS,YAAY;AAAA,IACjD;AAAA,EACD,CAAC;AAED,oBAAkB,QAAQ,MAAM;AAE/B,iBAAa,aAAa,KAAK,QAAW,KAAK;AAC/C,YAAQ;AAAA,EACT;AAEA,SAAO;AACR;","x_google_ignoreList":[0]}
|
package/dist/index.es117.js
CHANGED
|
@@ -1,6 +1,40 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import lowerBound from "./index.es138.js";
|
|
2
|
+
class PriorityQueue {
|
|
3
|
+
#queue = [];
|
|
4
|
+
enqueue(run, options) {
|
|
5
|
+
const { priority = 0, id } = options ?? {};
|
|
6
|
+
const element = {
|
|
7
|
+
priority,
|
|
8
|
+
id,
|
|
9
|
+
run
|
|
10
|
+
};
|
|
11
|
+
if (this.size === 0 || this.#queue[this.size - 1].priority >= priority) {
|
|
12
|
+
this.#queue.push(element);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);
|
|
16
|
+
this.#queue.splice(index, 0, element);
|
|
17
|
+
}
|
|
18
|
+
setPriority(id, priority) {
|
|
19
|
+
const index = this.#queue.findIndex((element) => element.id === id);
|
|
20
|
+
if (index === -1) {
|
|
21
|
+
throw new ReferenceError(`No promise function with the id "${id}" exists in the queue.`);
|
|
22
|
+
}
|
|
23
|
+
const [item] = this.#queue.splice(index, 1);
|
|
24
|
+
this.enqueue(item.run, { priority, id });
|
|
25
|
+
}
|
|
26
|
+
dequeue() {
|
|
27
|
+
const item = this.#queue.shift();
|
|
28
|
+
return item?.run;
|
|
29
|
+
}
|
|
30
|
+
filter(options) {
|
|
31
|
+
return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);
|
|
32
|
+
}
|
|
33
|
+
get size() {
|
|
34
|
+
return this.#queue.length;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
3
37
|
export {
|
|
4
|
-
|
|
38
|
+
PriorityQueue as default
|
|
5
39
|
};
|
|
6
40
|
//# sourceMappingURL=index.es117.js.map
|
package/dist/index.es117.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es117.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.es117.js","sources":["../node_modules/.pnpm/p-queue@9.1.0/node_modules/p-queue/dist/priority-queue.js"],"sourcesContent":["import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n const { priority = 0, id, } = options ?? {};\n const element = {\n priority,\n id,\n run,\n };\n if (this.size === 0 || this.#queue[this.size - 1].priority >= priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n setPriority(id, priority) {\n const index = this.#queue.findIndex((element) => element.id === id);\n if (index === -1) {\n throw new ReferenceError(`No promise function with the id \"${id}\" exists in the queue.`);\n }\n const [item] = this.#queue.splice(index, 1);\n this.enqueue(item.run, { priority, id });\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n"],"names":[],"mappings":";AACe,MAAM,cAAc;AAAA,EAC/B,SAAS,CAAA;AAAA,EACT,QAAQ,KAAK,SAAS;AAClB,UAAM,EAAE,WAAW,GAAG,GAAE,IAAM,WAAW,CAAA;AACzC,UAAM,UAAU;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACZ;AACQ,QAAI,KAAK,SAAS,KAAK,KAAK,OAAO,KAAK,OAAO,CAAC,EAAE,YAAY,UAAU;AACpE,WAAK,OAAO,KAAK,OAAO;AACxB;AAAA,IACJ;AACA,UAAM,QAAQ,WAAW,KAAK,QAAQ,SAAS,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ;AAChF,SAAK,OAAO,OAAO,OAAO,GAAG,OAAO;AAAA,EACxC;AAAA,EACA,YAAY,IAAI,UAAU;AACtB,UAAM,QAAQ,KAAK,OAAO,UAAU,CAAC,YAAY,QAAQ,OAAO,EAAE;AAClE,QAAI,UAAU,IAAI;AACd,YAAM,IAAI,eAAe,oCAAoC,EAAE,wBAAwB;AAAA,IAC3F;AACA,UAAM,CAAC,IAAI,IAAI,KAAK,OAAO,OAAO,OAAO,CAAC;AAC1C,SAAK,QAAQ,KAAK,KAAK,EAAE,UAAU,IAAI;AAAA,EAC3C;AAAA,EACA,UAAU;AACN,UAAM,OAAO,KAAK,OAAO,MAAK;AAC9B,WAAO,MAAM;AAAA,EACjB;AAAA,EACA,OAAO,SAAS;AACZ,WAAO,KAAK,OAAO,OAAO,CAAC,YAAY,QAAQ,aAAa,QAAQ,QAAQ,EAAE,IAAI,CAAC,YAAY,QAAQ,GAAG;AAAA,EAC9G;AAAA,EACA,IAAI,OAAO;AACP,WAAO,KAAK,OAAO;AAAA,EACvB;AACJ;","x_google_ignoreList":[0]}
|
package/dist/index.es12.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useStreamContext } from "./index.es7.js";
|
|
3
3
|
import { useGeneratedSuggestions } from "./index.es11.js";
|
|
4
|
-
import { LiquidButton } from "./index.
|
|
4
|
+
import { LiquidButton } from "./index.es29.js";
|
|
5
5
|
function Suggestion() {
|
|
6
6
|
const stream = useStreamContext();
|
|
7
7
|
const agentSuggestions = stream.values?.suggestions;
|
package/dist/index.es121.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { __export } from "./index.es56.js";
|
|
2
|
-
import { getBufferString } from "./index.
|
|
3
|
-
import { getEnvironmentVariable } from "./index.
|
|
4
|
-
import { isBaseCallbackHandler, BaseCallbackHandler } from "./index.
|
|
2
|
+
import { getBufferString } from "./index.es51.js";
|
|
3
|
+
import { getEnvironmentVariable } from "./index.es236.js";
|
|
4
|
+
import { isBaseCallbackHandler, BaseCallbackHandler } from "./index.es237.js";
|
|
5
5
|
import { isBaseTracer } from "./index.es128.js";
|
|
6
|
-
import { ConsoleCallbackHandler } from "./index.
|
|
7
|
-
import { LangChainTracer } from "./index.
|
|
8
|
-
import { consumeCallback } from "./index.
|
|
9
|
-
import "./index.
|
|
10
|
-
import { isTracingEnabled } from "./index.
|
|
11
|
-
import { _getConfigureHooks, getContextVariable } from "./index.
|
|
6
|
+
import { ConsoleCallbackHandler } from "./index.es238.js";
|
|
7
|
+
import { LangChainTracer } from "./index.es239.js";
|
|
8
|
+
import { consumeCallback } from "./index.es240.js";
|
|
9
|
+
import "./index.es241.js";
|
|
10
|
+
import { isTracingEnabled } from "./index.es242.js";
|
|
11
|
+
import { _getConfigureHooks, getContextVariable } from "./index.es243.js";
|
|
12
12
|
import { v7 } from "uuid";
|
|
13
13
|
var manager_exports = {};
|
|
14
14
|
__export(manager_exports, {
|
package/dist/index.es122.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getDefaultExportFromCjs } from "./index.es264.js";
|
|
2
|
-
import { __require as requireDist } from "./index.
|
|
2
|
+
import { __require as requireDist } from "./index.es245.js";
|
|
3
3
|
var distExports = requireDist();
|
|
4
4
|
const PQueueMod = /* @__PURE__ */ getDefaultExportFromCjs(distExports);
|
|
5
5
|
export {
|
package/dist/index.es126.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __export } from "./index.es56.js";
|
|
2
|
-
import { _deepClone, PatchError, unescapePathComponent, isInteger, hasUndefined } from "./index.
|
|
2
|
+
import { _deepClone, PatchError, unescapePathComponent, isInteger, hasUndefined } from "./index.es244.js";
|
|
3
3
|
var core_exports = {};
|
|
4
4
|
__export(core_exports, {
|
|
5
5
|
JsonPatchError: () => JsonPatchError,
|
package/dist/index.es128.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __export } from "./index.es56.js";
|
|
2
|
-
import { getRuntimeEnvironment } from "./index.
|
|
3
|
-
import { BaseCallbackHandler } from "./index.
|
|
2
|
+
import { getRuntimeEnvironment } from "./index.es236.js";
|
|
3
|
+
import { BaseCallbackHandler } from "./index.es237.js";
|
|
4
4
|
import { convertToDottedOrderFormat, RunTree } from "./index.es125.js";
|
|
5
5
|
var base_exports = {};
|
|
6
6
|
__export(base_exports, {
|
package/dist/index.es13.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import useTools from "./index.es10.js";
|
|
3
3
|
import { useThread } from "./index.es6.js";
|
|
4
|
-
import {
|
|
4
|
+
import { useChatRuntime } from "./index.es5.js";
|
|
5
|
+
import { getContentString, formatRelativeTime } from "./index.es22.js";
|
|
5
6
|
import { PanelLeftClose, MoreVertical, Pencil, Share2, Trash2 } from "lucide-react";
|
|
6
7
|
import { useState, useEffect, useRef } from "react";
|
|
7
8
|
function ThreadHistory({ header, isSidebar, onClose }) {
|
|
8
9
|
const [searchOpen, setSearchOpen] = useState(false);
|
|
9
10
|
const [searchQuery, setSearchQuery] = useState("");
|
|
10
11
|
const { threads, getThreads, setThreadId, setThreads, setThreadsLoading } = useThread();
|
|
12
|
+
const { identity } = useChatRuntime();
|
|
11
13
|
const { tool, userDefinedTools } = useTools();
|
|
12
14
|
useEffect(() => {
|
|
13
15
|
if (typeof window === "undefined") return;
|
|
14
16
|
setThreadsLoading(true);
|
|
15
17
|
getThreads().then(setThreads).catch(console.error).finally(() => setThreadsLoading(false));
|
|
16
|
-
}, []);
|
|
18
|
+
}, [identity?.authToken]);
|
|
17
19
|
const filteredThreads = threads.filter((t) => {
|
|
18
20
|
if (!searchQuery.trim()) return true;
|
|
19
21
|
const searchLower = searchQuery.toLowerCase();
|
|
@@ -25,6 +27,10 @@ function ThreadHistory({ header, isSidebar, onClose }) {
|
|
|
25
27
|
if (firstMessageContent.toLowerCase().includes(searchLower)) return true;
|
|
26
28
|
}
|
|
27
29
|
return false;
|
|
30
|
+
}).sort((a, b) => {
|
|
31
|
+
const dateA = new Date(a.updated_at).getTime();
|
|
32
|
+
const dateB = new Date(b.updated_at).getTime();
|
|
33
|
+
return dateB - dateA;
|
|
28
34
|
});
|
|
29
35
|
return /* @__PURE__ */ jsxs(
|
|
30
36
|
"aside",
|
|
@@ -246,7 +252,7 @@ function ThreadList({
|
|
|
246
252
|
children: /* @__PURE__ */ jsx("p", { className: "truncate text-ellipsis text-sm text-white/80", children: itemText })
|
|
247
253
|
}
|
|
248
254
|
),
|
|
249
|
-
/* @__PURE__ */ jsx("span", { className: "flex-shrink-0 text-xs text-white/40 ml-2", children: formatRelativeTime(t.
|
|
255
|
+
/* @__PURE__ */ jsx("span", { className: "flex-shrink-0 text-xs text-white/40 ml-2", children: formatRelativeTime(t.updated_at) })
|
|
250
256
|
] }),
|
|
251
257
|
!isEditing && hoveredThread === t.thread_id && /* @__PURE__ */ jsx(
|
|
252
258
|
"button",
|
package/dist/index.es13.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es13.js","sources":["../src/components/threads/ThreadHistory.tsx"],"sourcesContent":["import useTools from \"@/hooks/useTools\";\nimport { useThread } from \"@/providers/Thread\";\nimport { getContentString, formatRelativeTime } from \"@/utils/utils\";\nimport type { Thread } from \"@langchain/langgraph-sdk\";\nimport {\n MoreVertical,\n PanelLeftClose,\n Pencil,\n Share2,\n Trash2\n} from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\n\ntype ThreadHeaderProp = {\n title?: string;\n}\n\nexport default function ThreadHistory({ header, isSidebar, onClose }: { header?: ThreadHeaderProp, isSidebar?: boolean, onClose?: () => void }) {\n const [searchOpen, setSearchOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const { threads, getThreads, setThreadId, setThreads, setThreadsLoading } = useThread();\n const { tool, userDefinedTools } = 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 ${isSidebar ? \"\" : \"border-r\"} border-white/10 border-l border-white bg-zinc w-72`}>\n {/* Top */}\n <div className=\"flex h-14 items-center justify-between border-b border-white/10 px-2\">\n <div className=\"flex items-center gap-3\">\n {onClose && (\n <div className=\"cursor-pointer p-2 hover:bg-white/10 rounded-md\">\n <PanelLeftClose className=\"h-5 w-5 text-white/70\" onClick={onClose} />\n </div>\n )}\n {header && (\n <div className=\"text-white/70 text-lg font-medium\">\n {header.title}\n </div>\n )}\n </div>\n <div className=\"flex items-center gap-1\">\n {tool.map((t, index) => {\n // Override onClick for specific tools\n let handleClick = t.onClick;\n if (t.label === 'Chat') {\n handleClick = () => setThreadId(null);\n } else if (t.label === 'Search') {\n handleClick = () => setSearchOpen(true);\n }\n\n // Skip search button when search is open (we show input below)\n if (t.label === 'Search' && searchOpen) {\n return null;\n }\n\n return (\n <NavItem\n key={index}\n icon={t.icon}\n label={t.label}\n alt={t.alt}\n onClick={handleClick}\n showText={false}\n />\n );\n })}\n </div>\n </div>\n\n {/* Search input - full width when open */}\n {searchOpen && (\n <div className=\"p-2 mr-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 {/* Chats (scrollable) */}\n <div className=\"flex-1 flex flex-col p-2 mr-2 overflow-hidden\">\n <>\n {userDefinedTools.map((t, index) => (\n <NavItem\n key={index}\n icon={t.icon}\n label={t.label}\n alt={t.alt}\n onClick={t.onClick}\n showText={true}\n />\n ))}\n <div className=\"flex-1 space-y-1 overflow-y-auto overflow-x-hidden thread-scrollbar\">\n <ThreadList threads={filteredThreads} />\n </div>\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 onClick,\n showText = true\n}: {\n label: string;\n icon?: React.ReactNode;\n alt?: string;\n onClick?: () => void;\n showText?: boolean;\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 {icon}\n {showText && <span className=\"text-md font-medium\">{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-md 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 <div className=\"flex-1 flex items-center justify-between min-w-0\">\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 <span className=\"flex-shrink-0 text-xs text-white/40 ml-2\">\n {formatRelativeTime(t.created_at)}\n </span>\n </div>\n )}\n\n {!isEditing && hoveredThread === t.thread_id && (\n <button\n className=\"flex-shrink-0 p-2 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.es13.js","sources":["../src/components/threads/ThreadHistory.tsx"],"sourcesContent":["import useTools from \"@/hooks/useTools\";\nimport { useThread } from \"@/providers/Thread\";\nimport { useChatRuntime } from \"@/providers/ChatRuntime\";\nimport { getContentString, formatRelativeTime } from \"@/utils/utils\";\nimport type { Thread } from \"@langchain/langgraph-sdk\";\nimport {\n MoreVertical,\n PanelLeftClose,\n Pencil,\n Share2,\n Trash2\n} from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\n\ntype ThreadHeaderProp = {\n title?: string;\n}\n\nexport default function ThreadHistory({ header, isSidebar, onClose }: { header?: ThreadHeaderProp, isSidebar?: boolean, onClose?: () => void }) {\n const [searchOpen, setSearchOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const { threads, getThreads, setThreadId, setThreads, setThreadsLoading } = useThread();\n const { identity } = useChatRuntime();\n const { tool, userDefinedTools } = 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 }, [identity?.authToken]);\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 }).sort((a, b) => {\n // Sort by updated_at in descending order (most recent first)\n const dateA = new Date(a.updated_at).getTime();\n const dateB = new Date(b.updated_at).getTime();\n return dateB - dateA;\n });\n\n return (\n <aside\n className={`flex h-full flex-col ${isSidebar ? \"\" : \"border-r\"} border-white/10 border-l border-white bg-zinc w-72`}>\n {/* Top */}\n <div className=\"flex h-14 items-center justify-between border-b border-white/10 px-2\">\n <div className=\"flex items-center gap-3\">\n {onClose && (\n <div className=\"cursor-pointer p-2 hover:bg-white/10 rounded-md\">\n <PanelLeftClose className=\"h-5 w-5 text-white/70\" onClick={onClose} />\n </div>\n )}\n {header && (\n <div className=\"text-white/70 text-lg font-medium\">\n {header.title}\n </div>\n )}\n </div>\n <div className=\"flex items-center gap-1\">\n {tool.map((t, index) => {\n // Override onClick for specific tools\n let handleClick = t.onClick;\n if (t.label === 'Chat') {\n handleClick = () => setThreadId(null);\n } else if (t.label === 'Search') {\n handleClick = () => setSearchOpen(true);\n }\n\n // Skip search button when search is open (we show input below)\n if (t.label === 'Search' && searchOpen) {\n return null;\n }\n\n return (\n <NavItem\n key={index}\n icon={t.icon}\n label={t.label}\n alt={t.alt}\n onClick={handleClick}\n showText={false}\n />\n );\n })}\n </div>\n </div>\n\n {/* Search input - full width when open */}\n {searchOpen && (\n <div className=\"p-2 mr-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 {/* Chats (scrollable) */}\n <div className=\"flex-1 flex flex-col p-2 mr-2 overflow-hidden\">\n <>\n {userDefinedTools.map((t, index) => (\n <NavItem\n key={index}\n icon={t.icon}\n label={t.label}\n alt={t.alt}\n onClick={t.onClick}\n showText={true}\n />\n ))}\n <div className=\"flex-1 space-y-1 overflow-y-auto overflow-x-hidden thread-scrollbar\">\n <ThreadList threads={filteredThreads} />\n </div>\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 onClick,\n showText = true\n}: {\n label: string;\n icon?: React.ReactNode;\n alt?: string;\n onClick?: () => void;\n showText?: boolean;\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 {icon}\n {showText && <span className=\"text-md font-medium\">{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-md 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 <div className=\"flex-1 flex items-center justify-between min-w-0\">\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 <span className=\"flex-shrink-0 text-xs text-white/40 ml-2\">\n {formatRelativeTime(t.updated_at)}\n </span>\n </div>\n )}\n\n {!isEditing && hoveredThread === t.thread_id && (\n <button\n className=\"flex-shrink-0 p-2 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.es136.js
CHANGED
package/dist/index.es137.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { __export } from "./index.es56.js";
|
|
2
|
-
import { isZodSchemaV4, interopZodTransformInputSchema, isZodObjectV4, interopZodObjectStrict, isZodSchemaV3 } from "./index.
|
|
3
|
-
import { zodToJsonSchema } from "./index.
|
|
4
|
-
import { deepCompareStrict } from "./index.
|
|
5
|
-
import { Validator } from "./index.
|
|
6
|
-
import { toJSONSchema } from "./index.
|
|
7
|
-
import { dereference } from "./index.
|
|
2
|
+
import { isZodSchemaV4, interopZodTransformInputSchema, isZodObjectV4, interopZodObjectStrict, isZodSchemaV3 } from "./index.es108.js";
|
|
3
|
+
import { zodToJsonSchema } from "./index.es250.js";
|
|
4
|
+
import { deepCompareStrict } from "./index.es251.js";
|
|
5
|
+
import { Validator } from "./index.es252.js";
|
|
6
|
+
import { toJSONSchema } from "./index.es253.js";
|
|
7
|
+
import { dereference } from "./index.es254.js";
|
|
8
8
|
var json_schema_exports = {};
|
|
9
9
|
__export(json_schema_exports, {
|
|
10
10
|
Validator: () => Validator,
|
package/dist/index.es139.js
CHANGED
package/dist/index.es14.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useStreamContext } from "./index.es7.js";
|
|
3
|
-
import { isAiWithToolCalls, isToolMessage } from "./index.
|
|
3
|
+
import { isAiWithToolCalls, isToolMessage } from "./index.es22.js";
|
|
4
4
|
import React__default, { useState, useMemo, useRef, useCallback, useEffect, useLayoutEffect } from "react";
|
|
5
|
-
import AgentMessage from "./index.
|
|
6
|
-
import CustomComponentRender from "./index.
|
|
7
|
-
import HumanMessage from "./index.
|
|
8
|
-
import Thinking from "./index.
|
|
9
|
-
import ToolCallFunctions from "./index.
|
|
5
|
+
import AgentMessage from "./index.es23.js";
|
|
6
|
+
import CustomComponentRender from "./index.es24.js";
|
|
7
|
+
import HumanMessage from "./index.es25.js";
|
|
8
|
+
import Thinking from "./index.es26.js";
|
|
9
|
+
import ToolCallFunctions from "./index.es27.js";
|
|
10
10
|
function ChatBody({ setIsFirstMessage, enableToolCallIndicator, chatBodyProps }) {
|
|
11
11
|
const stream = useStreamContext();
|
|
12
12
|
const messages = stream.messages;
|
package/dist/index.es140.js
CHANGED
package/dist/index.es143.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __module as interopRequireDefault } from "./index.
|
|
1
|
+
import { __module as interopRequireDefault } from "./index.es191.js";
|
|
2
2
|
var hasRequiredInteropRequireDefault;
|
|
3
3
|
function requireInteropRequireDefault() {
|
|
4
4
|
if (hasRequiredInteropRequireDefault) return interopRequireDefault.exports;
|
package/dist/index.es144.js
CHANGED
package/dist/index.es145.js
CHANGED
package/dist/index.es146.js
CHANGED
package/dist/index.es147.js
CHANGED
package/dist/index.es148.js
CHANGED
package/dist/index.es149.js
CHANGED