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.
Files changed (316) hide show
  1. package/dist/index.es100.js +20 -354
  2. package/dist/index.es100.js.map +1 -1
  3. package/dist/index.es101.js +172 -127
  4. package/dist/index.es101.js.map +1 -1
  5. package/dist/index.es102.js +231 -60
  6. package/dist/index.es102.js.map +1 -1
  7. package/dist/index.es103.js +352 -34
  8. package/dist/index.es103.js.map +1 -1
  9. package/dist/index.es104.js +134 -34
  10. package/dist/index.es104.js.map +1 -1
  11. package/dist/index.es105.js +65 -161
  12. package/dist/index.es105.js.map +1 -1
  13. package/dist/index.es106.js +30 -196
  14. package/dist/index.es106.js.map +1 -1
  15. package/dist/index.es107.js +36 -13
  16. package/dist/index.es107.js.map +1 -1
  17. package/dist/index.es108.js +162 -26
  18. package/dist/index.es108.js.map +1 -1
  19. package/dist/index.es109.js +196 -27
  20. package/dist/index.es109.js.map +1 -1
  21. package/dist/index.es110.js +13 -3156
  22. package/dist/index.es110.js.map +1 -1
  23. package/dist/index.es111.js +27 -34
  24. package/dist/index.es111.js.map +1 -1
  25. package/dist/index.es112.js +34 -5
  26. package/dist/index.es112.js.map +1 -1
  27. package/dist/index.es113.js +3145 -61
  28. package/dist/index.es113.js.map +1 -1
  29. package/dist/index.es114.js +33 -33
  30. package/dist/index.es114.js.map +1 -1
  31. package/dist/index.es115.js +5 -21
  32. package/dist/index.es115.js.map +1 -1
  33. package/dist/index.es116.js +69 -64
  34. package/dist/index.es116.js.map +1 -1
  35. package/dist/index.es117.js +37 -3
  36. package/dist/index.es117.js.map +1 -1
  37. package/dist/index.es12.js +1 -1
  38. package/dist/index.es121.js +9 -9
  39. package/dist/index.es122.js +1 -1
  40. package/dist/index.es126.js +1 -1
  41. package/dist/index.es128.js +2 -2
  42. package/dist/index.es13.js +9 -3
  43. package/dist/index.es13.js.map +1 -1
  44. package/dist/index.es136.js +1 -1
  45. package/dist/index.es137.js +6 -6
  46. package/dist/index.es139.js +1 -1
  47. package/dist/index.es14.js +6 -6
  48. package/dist/index.es140.js +1 -1
  49. package/dist/index.es143.js +1 -1
  50. package/dist/index.es144.js +1 -1
  51. package/dist/index.es145.js +1 -1
  52. package/dist/index.es146.js +1 -1
  53. package/dist/index.es147.js +1 -1
  54. package/dist/index.es148.js +1 -1
  55. package/dist/index.es149.js +1 -1
  56. package/dist/index.es150.js +1 -1
  57. package/dist/index.es151.js +1 -1
  58. package/dist/index.es152.js +1 -1
  59. package/dist/index.es153.js +1 -1
  60. package/dist/index.es154.js +1 -1
  61. package/dist/index.es155.js +1 -1
  62. package/dist/index.es156.js +1 -1
  63. package/dist/index.es157.js +1 -1
  64. package/dist/index.es158.js +1 -1
  65. package/dist/index.es159.js +1 -1
  66. package/dist/index.es16.js +10 -5
  67. package/dist/index.es16.js.map +1 -1
  68. package/dist/index.es160.js +1 -1
  69. package/dist/index.es161.js +1 -1
  70. package/dist/index.es162.js +1 -1
  71. package/dist/index.es163.js +1 -1
  72. package/dist/index.es164.js +1 -1
  73. package/dist/index.es165.js +1 -1
  74. package/dist/index.es166.js +1 -1
  75. package/dist/index.es167.js +1 -1
  76. package/dist/index.es168.js +1 -1
  77. package/dist/index.es169.js +1 -1
  78. package/dist/index.es170.js +1 -1
  79. package/dist/index.es171.js +1 -1
  80. package/dist/index.es172.js +1 -1
  81. package/dist/index.es173.js +1 -1
  82. package/dist/index.es174.js +1 -1
  83. package/dist/index.es175.js +1 -1
  84. package/dist/index.es176.js +1 -1
  85. package/dist/index.es177.js +1 -1
  86. package/dist/index.es178.js +1 -1
  87. package/dist/index.es179.js +1 -1
  88. package/dist/index.es18.js +7 -7
  89. package/dist/index.es180.js +1 -1
  90. package/dist/index.es181.js +1 -1
  91. package/dist/index.es182.js +1 -1
  92. package/dist/index.es183.js +1 -1
  93. package/dist/index.es184.js +1 -1
  94. package/dist/index.es185.js +1 -1
  95. package/dist/index.es186.js +1 -1
  96. package/dist/index.es187.js +1 -1
  97. package/dist/index.es191.js +2 -56
  98. package/dist/index.es191.js.map +1 -1
  99. package/dist/index.es192.js +2 -100
  100. package/dist/index.es192.js.map +1 -1
  101. package/dist/index.es193.js +2 -191
  102. package/dist/index.es193.js.map +1 -1
  103. package/dist/index.es194.js +2 -110
  104. package/dist/index.es194.js.map +1 -1
  105. package/dist/index.es195.js +2 -35
  106. package/dist/index.es195.js.map +1 -1
  107. package/dist/index.es196.js +2 -10
  108. package/dist/index.es196.js.map +1 -1
  109. package/dist/index.es197.js +2 -11
  110. package/dist/index.es197.js.map +1 -1
  111. package/dist/index.es198.js +2 -12
  112. package/dist/index.es198.js.map +1 -1
  113. package/dist/index.es199.js +2 -91
  114. package/dist/index.es199.js.map +1 -1
  115. package/dist/index.es2.js +96 -11
  116. package/dist/index.es2.js.map +1 -1
  117. package/dist/index.es20.js +2 -2
  118. package/dist/index.es200.js +2 -275
  119. package/dist/index.es200.js.map +1 -1
  120. package/dist/index.es201.js +2 -2
  121. package/dist/index.es202.js +2 -164
  122. package/dist/index.es202.js.map +1 -1
  123. package/dist/index.es203.js +2 -51
  124. package/dist/index.es203.js.map +1 -1
  125. package/dist/index.es204.js +2 -40
  126. package/dist/index.es204.js.map +1 -1
  127. package/dist/index.es205.js +2 -35
  128. package/dist/index.es205.js.map +1 -1
  129. package/dist/index.es206.js +2 -40
  130. package/dist/index.es206.js.map +1 -1
  131. package/dist/index.es207.js +2 -24
  132. package/dist/index.es207.js.map +1 -1
  133. package/dist/index.es208.js +2 -591
  134. package/dist/index.es208.js.map +1 -1
  135. package/dist/index.es209.js +2 -125
  136. package/dist/index.es209.js.map +1 -1
  137. package/dist/index.es210.js +2 -164
  138. package/dist/index.es210.js.map +1 -1
  139. package/dist/index.es211.js +2 -2
  140. package/dist/index.es212.js +2 -2
  141. package/dist/index.es213.js +2 -2
  142. package/dist/index.es214.js +2 -2
  143. package/dist/index.es215.js +2 -2
  144. package/dist/index.es216.js +2 -2
  145. package/dist/index.es217.js +2 -2
  146. package/dist/index.es218.js +2 -2
  147. package/dist/index.es219.js +2 -2
  148. package/dist/index.es22.js +35 -119
  149. package/dist/index.es22.js.map +1 -1
  150. package/dist/index.es220.js +2 -2
  151. package/dist/index.es221.js +2 -2
  152. package/dist/index.es222.js +2 -2
  153. package/dist/index.es223.js +2 -2
  154. package/dist/index.es224.js +2 -2
  155. package/dist/index.es225.js +2 -2
  156. package/dist/index.es226.js +2 -2
  157. package/dist/index.es227.js +2 -2
  158. package/dist/index.es228.js +2 -2
  159. package/dist/index.es229.js +2 -2
  160. package/dist/index.es23.js +66 -36
  161. package/dist/index.es23.js.map +1 -1
  162. package/dist/index.es230.js +2 -2
  163. package/dist/index.es231.js +2 -2
  164. package/dist/index.es232.js +2 -2
  165. package/dist/index.es233.js +2 -2
  166. package/dist/index.es234.js +2 -2
  167. package/dist/index.es235.js +2 -2
  168. package/dist/index.es236.js +56 -2
  169. package/dist/index.es236.js.map +1 -1
  170. package/dist/index.es237.js +100 -2
  171. package/dist/index.es237.js.map +1 -1
  172. package/dist/index.es238.js +191 -2
  173. package/dist/index.es238.js.map +1 -1
  174. package/dist/index.es239.js +110 -2
  175. package/dist/index.es239.js.map +1 -1
  176. package/dist/index.es24.js +30 -64
  177. package/dist/index.es24.js.map +1 -1
  178. package/dist/index.es240.js +35 -2
  179. package/dist/index.es240.js.map +1 -1
  180. package/dist/index.es241.js +10 -2
  181. package/dist/index.es241.js.map +1 -1
  182. package/dist/index.es242.js +11 -2
  183. package/dist/index.es242.js.map +1 -1
  184. package/dist/index.es243.js +12 -2
  185. package/dist/index.es243.js.map +1 -1
  186. package/dist/index.es244.js +91 -2
  187. package/dist/index.es244.js.map +1 -1
  188. package/dist/index.es245.js +275 -2
  189. package/dist/index.es245.js.map +1 -1
  190. package/dist/index.es246.js +2 -2
  191. package/dist/index.es247.js +164 -2
  192. package/dist/index.es247.js.map +1 -1
  193. package/dist/index.es248.js +51 -2
  194. package/dist/index.es248.js.map +1 -1
  195. package/dist/index.es249.js +40 -2
  196. package/dist/index.es249.js.map +1 -1
  197. package/dist/index.es25.js +120 -29
  198. package/dist/index.es25.js.map +1 -1
  199. package/dist/index.es250.js +35 -2
  200. package/dist/index.es250.js.map +1 -1
  201. package/dist/index.es251.js +40 -2
  202. package/dist/index.es251.js.map +1 -1
  203. package/dist/index.es252.js +24 -2
  204. package/dist/index.es252.js.map +1 -1
  205. package/dist/index.es253.js +591 -2
  206. package/dist/index.es253.js.map +1 -1
  207. package/dist/index.es254.js +125 -2
  208. package/dist/index.es254.js.map +1 -1
  209. package/dist/index.es255.js +164 -2
  210. package/dist/index.es255.js.map +1 -1
  211. package/dist/index.es256.js +2 -2
  212. package/dist/index.es26.js +102 -123
  213. package/dist/index.es26.js.map +1 -1
  214. package/dist/index.es267.js +1 -1
  215. package/dist/index.es27.js +66 -101
  216. package/dist/index.es27.js.map +1 -1
  217. package/dist/index.es28.js +139 -66
  218. package/dist/index.es28.js.map +1 -1
  219. package/dist/index.es29.js +295 -131
  220. package/dist/index.es29.js.map +1 -1
  221. package/dist/index.es30.js +114 -298
  222. package/dist/index.es30.js.map +1 -1
  223. package/dist/index.es305.js +1 -1
  224. package/dist/index.es307.js +1 -1
  225. package/dist/index.es319.js +1 -1
  226. package/dist/index.es32.js +7 -7
  227. package/dist/index.es33.js +1 -1
  228. package/dist/index.es339.js +2 -2
  229. package/dist/index.es36.js +4 -4
  230. package/dist/index.es37.js +289 -114
  231. package/dist/index.es37.js.map +1 -1
  232. package/dist/index.es38.js +44 -70
  233. package/dist/index.es38.js.map +1 -1
  234. package/dist/index.es39.js +145 -19
  235. package/dist/index.es39.js.map +1 -1
  236. package/dist/index.es40.js +5 -261
  237. package/dist/index.es40.js.map +1 -1
  238. package/dist/index.es41.js +247 -38
  239. package/dist/index.es41.js.map +1 -1
  240. package/dist/index.es42.js +110 -207
  241. package/dist/index.es42.js.map +1 -1
  242. package/dist/index.es43.js +68 -64
  243. package/dist/index.es43.js.map +1 -1
  244. package/dist/index.es44.js +17 -141
  245. package/dist/index.es44.js.map +1 -1
  246. package/dist/index.es45.js +251 -14
  247. package/dist/index.es45.js.map +1 -1
  248. package/dist/index.es46.js +36 -223
  249. package/dist/index.es46.js.map +1 -1
  250. package/dist/index.es47.js +213 -7
  251. package/dist/index.es47.js.map +1 -1
  252. package/dist/index.es48.js +55 -1180
  253. package/dist/index.es48.js.map +1 -1
  254. package/dist/index.es49.js +141 -6
  255. package/dist/index.es49.js.map +1 -1
  256. package/dist/index.es50.js +21 -144
  257. package/dist/index.es50.js.map +1 -1
  258. package/dist/index.es51.js +230 -5
  259. package/dist/index.es51.js.map +1 -1
  260. package/dist/index.es52.js +8 -292
  261. package/dist/index.es52.js.map +1 -1
  262. package/dist/index.es53.js +1190 -43
  263. package/dist/index.es53.js.map +1 -1
  264. package/dist/index.es54.js +7 -144
  265. package/dist/index.es54.js.map +1 -1
  266. package/dist/index.es55.js +136 -241
  267. package/dist/index.es55.js.map +1 -1
  268. package/dist/index.es59.js +1 -1
  269. package/dist/index.es6.js +21 -8
  270. package/dist/index.es6.js.map +1 -1
  271. package/dist/index.es60.js +1 -1
  272. package/dist/index.es61.js +1 -1
  273. package/dist/index.es62.js +7 -7
  274. package/dist/index.es67.js +3 -3
  275. package/dist/index.es69.js +2 -2
  276. package/dist/index.es70.js +1 -1
  277. package/dist/index.es71.js +1 -1
  278. package/dist/index.es72.js +1 -1
  279. package/dist/index.es77.js +7 -7
  280. package/dist/index.es78.js +17 -17
  281. package/dist/index.es82.js +1 -1
  282. package/dist/index.es83.js +4 -4
  283. package/dist/index.es84.js +20 -11
  284. package/dist/index.es84.js.map +1 -1
  285. package/dist/index.es85.js +66 -38
  286. package/dist/index.es85.js.map +1 -1
  287. package/dist/index.es86.js +3 -34
  288. package/dist/index.es86.js.map +1 -1
  289. package/dist/index.es87.js +10 -230
  290. package/dist/index.es87.js.map +1 -1
  291. package/dist/index.es88.js +39 -29
  292. package/dist/index.es88.js.map +1 -1
  293. package/dist/index.es89.js +32 -73
  294. package/dist/index.es89.js.map +1 -1
  295. package/dist/index.es90.js +200 -44
  296. package/dist/index.es90.js.map +1 -1
  297. package/dist/index.es91.js +15 -37
  298. package/dist/index.es91.js.map +1 -1
  299. package/dist/index.es92.js +71 -26
  300. package/dist/index.es92.js.map +1 -1
  301. package/dist/index.es93.js +72 -39
  302. package/dist/index.es93.js.map +1 -1
  303. package/dist/index.es94.js +48 -53
  304. package/dist/index.es94.js.map +1 -1
  305. package/dist/index.es95.js +30 -13
  306. package/dist/index.es95.js.map +1 -1
  307. package/dist/index.es96.js +40 -134
  308. package/dist/index.es96.js.map +1 -1
  309. package/dist/index.es97.js +56 -20
  310. package/dist/index.es97.js.map +1 -1
  311. package/dist/index.es98.js +11 -180
  312. package/dist/index.es98.js.map +1 -1
  313. package/dist/index.es99.js +129 -233
  314. package/dist/index.es99.js.map +1 -1
  315. package/dist/styles.css +1 -1
  316. package/package.json +1 -1
@@ -1,24 +1,8 @@
1
- import jsx from "./index.es257.js";
2
- import typescript from "./index.es258.js";
3
- tsx.displayName = "tsx";
4
- tsx.aliases = [];
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
- tsx as default
6
+ EventEmitter as default
23
7
  };
24
8
  //# sourceMappingURL=index.es115.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es115.js","sources":["../node_modules/.pnpm/refractor@5.0.0/node_modules/refractor/lang/tsx.js"],"sourcesContent":["// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJsx from './jsx.js'\nimport refractorTypescript from './typescript.js'\ntsx.displayName = 'tsx'\ntsx.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function tsx(Prism) {\n Prism.register(refractorJsx)\n Prism.register(refractorTypescript)\n ;(function (Prism) {\n var typescript = Prism.util.clone(Prism.languages.typescript)\n Prism.languages.tsx = Prism.languages.extend('jsx', typescript)\n\n // doesn't work with TS because TS is too complex\n delete Prism.languages.tsx['parameter']\n delete Prism.languages.tsx['literal-property']\n\n // This will prevent collisions between TSX tags and TS generic types.\n // Idea by https://github.com/karlhorky\n // Discussion: https://github.com/PrismJS/prism/issues/2594#issuecomment-710666928\n var tag = Prism.languages.tsx.tag\n tag.pattern = RegExp(\n /(^|[^\\w$]|(?=<\\/))/.source + '(?:' + tag.pattern.source + ')',\n tag.pattern.flags\n )\n tag.lookbehind = true\n })(Prism)\n}\n"],"names":["refractorJsx","refractorTypescript","Prism","typescript"],"mappings":";;AAMA,IAAI,cAAc;AAClB,IAAI,UAAU,CAAA;AAGC,SAAS,IAAI,OAAO;AACjC,QAAM,SAASA,GAAY;AAC3B,QAAM,SAASC,UAAmB;AACjC,GAAC,SAAUC,QAAO;AACjB,QAAIC,cAAaD,OAAM,KAAK,MAAMA,OAAM,UAAU,UAAU;AAC5D,IAAAA,OAAM,UAAU,MAAMA,OAAM,UAAU,OAAO,OAAOC,WAAU;AAG9D,WAAOD,OAAM,UAAU,IAAI,WAAW;AACtC,WAAOA,OAAM,UAAU,IAAI,kBAAkB;AAK7C,QAAI,MAAMA,OAAM,UAAU,IAAI;AAC9B,QAAI,UAAU;AAAA,MACZ,qBAAqB,SAAS,QAAQ,IAAI,QAAQ,SAAS;AAAA,MAC3D,IAAI,QAAQ;AAAA,IAClB;AACI,QAAI,aAAa;AAAA,EACnB,GAAG,KAAK;AACV;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es115.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,71 +1,76 @@
1
- python.displayName = "python";
2
- python.aliases = ["py"];
3
- function python(Prism) {
4
- Prism.languages.python = {
5
- comment: {
6
- pattern: /(^|[^\\])#.*/,
7
- lookbehind: true,
8
- greedy: true
9
- },
10
- "string-interpolation": {
11
- pattern: /(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,
12
- greedy: true,
13
- inside: {
14
- interpolation: {
15
- // "{" <expression> <optional "!s", "!r", or "!a"> <optional ":" format specifier> "}"
16
- pattern: /((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,
17
- lookbehind: true,
18
- inside: {
19
- "format-spec": {
20
- pattern: /(:)[^:(){}]+(?=\}$)/,
21
- lookbehind: true
22
- },
23
- "conversion-option": {
24
- pattern: /![sra](?=[:}]$)/,
25
- alias: "punctuation"
26
- },
27
- rest: null
28
- }
29
- },
30
- string: /[\s\S]+/
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
- "triple-quoted-string": {
34
- pattern: /(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,
35
- greedy: true,
36
- alias: "string"
37
- },
38
- string: {
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
- keyword: /\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,
59
- builtin: /\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,
60
- boolean: /\b(?:False|None|True)\b/,
61
- number: /\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,
62
- operator: /[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,
63
- punctuation: /[{}[\];(),.:]/
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
- Prism.languages.python["string-interpolation"].inside["interpolation"].inside.rest = Prism.languages.python;
66
- Prism.languages.py = Prism.languages.python;
70
+ return cancelablePromise;
67
71
  }
68
72
  export {
69
- python as default
73
+ TimeoutError,
74
+ pTimeout as default
70
75
  };
71
76
  //# sourceMappingURL=index.es116.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es116.js","sources":["../node_modules/.pnpm/refractor@5.0.0/node_modules/refractor/lang/python.js"],"sourcesContent":["// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\npython.displayName = 'python'\npython.aliases = ['py']\n\n/** @param {Refractor} Prism */\nexport default function python(Prism) {\n Prism.languages.python = {\n comment: {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true,\n greedy: true\n },\n 'string-interpolation': {\n pattern:\n /(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n greedy: true,\n inside: {\n interpolation: {\n // \"{\" <expression> <optional \"!s\", \"!r\", or \"!a\"> <optional \":\" format specifier> \"}\"\n pattern:\n /((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,\n lookbehind: true,\n inside: {\n 'format-spec': {\n pattern: /(:)[^:(){}]+(?=\\}$)/,\n lookbehind: true\n },\n 'conversion-option': {\n pattern: /![sra](?=[:}]$)/,\n alias: 'punctuation'\n },\n rest: null\n }\n },\n string: /[\\s\\S]+/\n }\n },\n 'triple-quoted-string': {\n pattern: /(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,\n greedy: true,\n alias: 'string'\n },\n string: {\n pattern: /(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n greedy: true\n },\n function: {\n pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n lookbehind: true\n },\n 'class-name': {\n pattern: /(\\bclass\\s+)\\w+/i,\n lookbehind: true\n },\n decorator: {\n pattern: /(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,\n lookbehind: true,\n alias: ['annotation', 'punctuation'],\n inside: {\n punctuation: /\\./\n }\n },\n keyword:\n /\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n builtin:\n /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n boolean: /\\b(?:False|None|True)\\b/,\n number:\n /\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,\n operator: /[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n punctuation: /[{}[\\];(),.:]/\n }\n Prism.languages.python['string-interpolation'].inside[\n 'interpolation'\n ].inside.rest = Prism.languages.python\n Prism.languages.py = Prism.languages.python\n}\n"],"names":[],"mappings":"AAIA,OAAO,cAAc;AACrB,OAAO,UAAU,CAAC,IAAI;AAGP,SAAS,OAAO,OAAO;AACpC,QAAM,UAAU,SAAS;AAAA,IACvB,SAAS;AAAA,MACP,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,QAAQ;AAAA,IACd;AAAA,IACI,wBAAwB;AAAA,MACtB,SACE;AAAA,MACF,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe;AAAA;AAAA,UAEb,SACE;AAAA,UACF,YAAY;AAAA,UACZ,QAAQ;AAAA,YACN,eAAe;AAAA,cACb,SAAS;AAAA,cACT,YAAY;AAAA,YAC1B;AAAA,YACY,qBAAqB;AAAA,cACnB,SAAS;AAAA,cACT,OAAO;AAAA,YACrB;AAAA,YACY,MAAM;AAAA,UAClB;AAAA,QACA;AAAA,QACQ,QAAQ;AAAA,MAChB;AAAA,IACA;AAAA,IACI,wBAAwB;AAAA,MACtB,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,IACb;AAAA,IACI,QAAQ;AAAA,MACN,SAAS;AAAA,MACT,QAAQ;AAAA,IACd;AAAA,IACI,UAAU;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,IAClB;AAAA,IACI,cAAc;AAAA,MACZ,SAAS;AAAA,MACT,YAAY;AAAA,IAClB;AAAA,IACI,WAAW;AAAA,MACT,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,OAAO,CAAC,cAAc,aAAa;AAAA,MACnC,QAAQ;AAAA,QACN,aAAa;AAAA,MACrB;AAAA,IACA;AAAA,IACI,SACE;AAAA,IACF,SACE;AAAA,IACF,SAAS;AAAA,IACT,QACE;AAAA,IACF,UAAU;AAAA,IACV,aAAa;AAAA,EACjB;AACE,QAAM,UAAU,OAAO,sBAAsB,EAAE,OAC7C,eACJ,EAAI,OAAO,OAAO,MAAM,UAAU;AAChC,QAAM,UAAU,KAAK,MAAM,UAAU;AACvC;","x_google_ignoreList":[0]}
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]}
@@ -1,6 +1,40 @@
1
- import { __require as requirePrism } from "./index.es141.js";
2
- var prismExports = /* @__PURE__ */ requirePrism();
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
- prismExports as p
38
+ PriorityQueue as default
5
39
  };
6
40
  //# sourceMappingURL=index.es117.js.map
@@ -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]}
@@ -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.es30.js";
4
+ import { LiquidButton } from "./index.es29.js";
5
5
  function Suggestion() {
6
6
  const stream = useStreamContext();
7
7
  const agentSuggestions = stream.values?.suggestions;
@@ -1,14 +1,14 @@
1
1
  import { __export } from "./index.es56.js";
2
- import { getBufferString } from "./index.es46.js";
3
- import { getEnvironmentVariable } from "./index.es191.js";
4
- import { isBaseCallbackHandler, BaseCallbackHandler } from "./index.es192.js";
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.es193.js";
7
- import { LangChainTracer } from "./index.es194.js";
8
- import { consumeCallback } from "./index.es195.js";
9
- import "./index.es196.js";
10
- import { isTracingEnabled } from "./index.es197.js";
11
- import { _getConfigureHooks, getContextVariable } from "./index.es198.js";
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, {
@@ -1,5 +1,5 @@
1
1
  import { getDefaultExportFromCjs } from "./index.es264.js";
2
- import { __require as requireDist } from "./index.es200.js";
2
+ import { __require as requireDist } from "./index.es245.js";
3
3
  var distExports = requireDist();
4
4
  const PQueueMod = /* @__PURE__ */ getDefaultExportFromCjs(distExports);
5
5
  export {
@@ -1,5 +1,5 @@
1
1
  import { __export } from "./index.es56.js";
2
- import { _deepClone, PatchError, unescapePathComponent, isInteger, hasUndefined } from "./index.es199.js";
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,
@@ -1,6 +1,6 @@
1
1
  import { __export } from "./index.es56.js";
2
- import { getRuntimeEnvironment } from "./index.es191.js";
3
- import { BaseCallbackHandler } from "./index.es192.js";
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, {
@@ -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 { getContentString, formatRelativeTime } from "./index.es23.js";
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.created_at) })
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",
@@ -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":";;;;;;AAiBA,SAAwB,cAAc,EAAE,QAAQ,WAAW,WAAqF;AAC5I,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,EAAE;AACjD,QAAM,EAAE,SAAS,YAAY,aAAa,YAAY,kBAAA,IAAsB,UAAA;AAC5E,QAAM,EAAE,MAAM,iBAAA,IAAqB,SAAA;AAEnC,YAAU,MAAM;AACZ,QAAI,OAAO,WAAW,YAAa;AACnC,sBAAkB,IAAI;AACtB,iBACK,KAAK,UAAU,EACf,MAAM,QAAQ,KAAK,EACnB,QAAQ,MAAM,kBAAkB,KAAK,CAAC;AAAA,EAC/C,GAAG,CAAA,CAAE;AAGL,QAAM,kBAAkB,QAAQ,OAAO,CAAC,MAAM;AAC1C,QAAI,CAAC,YAAY,KAAA,EAAQ,QAAO;AAEhC,UAAM,cAAc,YAAY,YAAA;AAChC,UAAM,aAAc,EAAE,UAAU,QAAmB;AAGnD,QAAI,WAAW,YAAA,EAAc,SAAS,WAAW,EAAG,QAAO;AAG3D,UAAM,eAAe,EAAE;AACvB,QAAI,cAAc,WAAW,CAAC,GAAG;AAC7B,YAAM,sBAAsB,iBAAiB,aAAa,SAAS,CAAC,EAAE,OAAO;AAC7E,UAAI,oBAAoB,YAAA,EAAc,SAAS,WAAW,EAAG,QAAO;AAAA,IACxE;AAEA,WAAO;AAAA,EACX,CAAC;AAED,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAW,wBAAwB,YAAY,KAAK,UAAU;AAAA,MAE9D,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,wEACX,UAAA;AAAA,UAAA,qBAAC,OAAA,EAAI,WAAU,2BACV,UAAA;AAAA,YAAA,WACG,oBAAC,OAAA,EAAI,WAAU,mDACX,UAAA,oBAAC,kBAAe,WAAU,yBAAwB,SAAS,QAAA,CAAS,EAAA,CACxE;AAAA,YAEH,UACG,oBAAC,OAAA,EAAI,WAAU,qCACV,iBAAO,MAAA,CACZ;AAAA,UAAA,GAER;AAAA,UACA,oBAAC,SAAI,WAAU,2BACV,eAAK,IAAI,CAAC,GAAG,UAAU;AAEpB,gBAAI,cAAc,EAAE;AACpB,gBAAI,EAAE,UAAU,QAAQ;AACpB,4BAAc,MAAM,YAAY,IAAI;AAAA,YACxC,WAAW,EAAE,UAAU,UAAU;AAC7B,4BAAc,MAAM,cAAc,IAAI;AAAA,YAC1C;AAGA,gBAAI,EAAE,UAAU,YAAY,YAAY;AACpC,qBAAO;AAAA,YACX;AAEA,mBACI;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEG,MAAM,EAAE;AAAA,gBACR,OAAO,EAAE;AAAA,gBACT,KAAK,EAAE;AAAA,gBACP,SAAS;AAAA,gBACT,UAAU;AAAA,cAAA;AAAA,cALL;AAAA,YAAA;AAAA,UAQjB,CAAC,EAAA,CACL;AAAA,QAAA,GACJ;AAAA,QAGC,cACG,oBAAC,OAAA,EAAI,WAAU,YACX,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,MAAK;AAAA,YACL,aAAY;AAAA,YACZ,OAAO;AAAA,YACP,UAAU,CAAC,MAAM,eAAe,EAAE,OAAO,KAAK;AAAA,YAC9C,QAAQ,MAAM;AACV,kBAAI,CAAC,YAAY,QAAQ;AACrB,8BAAc,KAAK;AAAA,cACvB;AAAA,YACJ;AAAA,YACA,WAAS;AAAA,YACT,WAAU;AAAA,UAAA;AAAA,QAAA,GAElB;AAAA,QAIJ,oBAAC,OAAA,EAAI,WAAU,iDACX,UAAA,qBAAA,UAAA,EACK,UAAA;AAAA,UAAA,iBAAiB,IAAI,CAAC,GAAG,UACtB;AAAA,YAAC;AAAA,YAAA;AAAA,cAEG,MAAM,EAAE;AAAA,cACR,OAAO,EAAE;AAAA,cACT,KAAK,EAAE;AAAA,cACP,SAAS,EAAE;AAAA,cACX,UAAU;AAAA,YAAA;AAAA,YALL;AAAA,UAAA,CAOZ;AAAA,UACD,oBAAC,SAAI,WAAU,uEACX,8BAAC,YAAA,EAAW,SAAS,iBAAiB,EAAA,CAC1C;AAAA,QAAA,EAAA,CACJ,EAAA,CACJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAaZ;AAIA,SAAS,QAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AACf,GAMG;AACC,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAU;AAAA,MAEV;AAAA,MACA,OAAO,OAAO;AAAA,MAEb,UAAA;AAAA,QAAA;AAAA,QACA,YAAY,oBAAC,QAAA,EAAK,WAAU,uBAAuB,UAAA,MAAA,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGtE;AAEA,SAAS,WAAW;AAAA,EAChB;AAAA,EACA;AACJ,GAGG;AAEC,QAAM,EAAE,UAAU,aAAa,cAAc,aAAA,IAAiB,UAAA;AAC9D,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAwB,IAAI;AACtE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAwB,IAAI;AACxE,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAwB,IAAI;AACtE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,EAAE;AAC7C,QAAM,cAAc,OAAuB,IAAI;AAC/C,QAAM,eAAe,OAAyB,IAAI;AAGlD,YAAU,MAAM;AACZ,UAAM,qBAAqB,CAAC,UAAsB;AAC9C,UAAI,YAAY,WAAW,CAAC,YAAY,QAAQ,SAAS,MAAM,MAAc,GAAG;AAC5E,0BAAkB,IAAI;AAAA,MAC1B;AAAA,IACJ;AAEA,QAAI,gBAAgB;AAChB,eAAS,iBAAiB,aAAa,kBAAkB;AAAA,IAC7D;AAEA,WAAO,MAAM;AACT,eAAS,oBAAoB,aAAa,kBAAkB;AAAA,IAChE;AAAA,EACJ,GAAG,CAAC,cAAc,CAAC;AAGnB,YAAU,MAAM;AACZ,QAAI,iBAAiB,aAAa,SAAS;AACvC,mBAAa,QAAQ,MAAA;AACrB,mBAAa,QAAQ,OAAA;AAAA,IACzB;AAAA,EACJ,GAAG,CAAC,aAAa,CAAC;AAElB,QAAM,qBAAqB,OAAO,WAAmB;AACjD,UAAM,eAAe,OAAO;AAC5B,UAAM,eAAe,OAAO,UAAU,SACjC,cAAc,WAAW,CAAC,IAAI,iBAAiB,aAAa,SAAS,CAAC,EAAE,OAAO,IAAI,OAAO;AAE/F,QAAI,UAAU,KAAA,KAAU,UAAU,KAAA,MAAW,cAAc;AACvD,UAAI;AACA,cAAM,aAAa,OAAO,WAAW;AAAA,UACjC,GAAG,OAAO;AAAA,UACV,MAAM,UAAU,KAAA;AAAA,QAAK,CACxB;AAAA,MACL,SAAS,OAAO;AACZ,gBAAQ,MAAM,4BAA4B,KAAK;AAC/C,cAAM,4CAA4C;AAAA,MACtD;AAAA,IACJ;AACA,qBAAiB,IAAI;AACrB,iBAAa,EAAE;AAAA,EACnB;AAEA,QAAM,qBAAqB,MAAM;AAC7B,qBAAiB,IAAI;AACrB,iBAAa,EAAE;AAAA,EACnB;AAEA,QAAM,mBAAmB,OAAO,QAAgB,WAAmB;AAC/D,sBAAkB,IAAI;AAEtB,QAAI;AACA,cAAQ,QAAA;AAAA,QACJ,KAAK,UAAU;AACX,gBAAM,eAAe,OAAO;AAC5B,gBAAM,cAAuB,OAAO,UAAU,SACzC,cAAc,WAAW,CAAC,IAAI,iBAAiB,aAAa,SAAS,CAAC,EAAE,OAAO,IAAI,OAAO;AAC/F,uBAAa,WAAW;AACxB,2BAAiB,OAAO,SAAS;AACjC;AAAA,QACJ;AAAA,QACA,KAAK,SAAS;AAEV,gBAAM,gBAAgB,GAAG,OAAO,SAAS,MAAM,GAAG,OAAO,SAAS,QAAQ,WAAW,OAAO,SAAS;AACrG,gBAAM,UAAU,UAAU,UAAU,aAAa;AACjD,gBAAM,kCAAkC;AACxC;AAAA,QACJ;AAAA,QACA,KAAK,WAAW;AACZ,gBAAM,aAAa,OAAO,WAAW;AAAA,YACjC,GAAG,OAAO;AAAA,YACV,UAAU;AAAA,UAAA,CACb;AACD;AAAA,QACJ;AAAA,QACA,KAAK,UAAU;AACX,cAAI,QAAQ,4EAA4E,GAAG;AACvF,kBAAM,aAAa,OAAO,SAAS;AAAA,UACvC;AACA;AAAA,QACJ;AAAA,MAAA;AAAA,IAER,SAAS,OAAO;AACZ,cAAQ,MAAM,aAAa,MAAM,YAAY,KAAK;AAClD,YAAM,aAAa,MAAM,4BAA4B;AAAA,IACzD;AAAA,EACJ;AAEA,6BACK,OAAA,EAAI,WAAU,+DACV,UAAA,QAAQ,IAAI,CAAC,MAAM;AAChB,QAAI,WAAoB,EAAE,UAAU,QAAmB,EAAE;AACzD,QACI,CAAC,EAAE,UAAU,QACb,OAAO,EAAE,WAAW,YACpB,EAAE,UACF,cAAc,EAAE,UAChB,MAAM,QAAS,EAAE,OAAe,QAAQ,KACvC,EAAE,OAAe,UAAU,SAAS,GACvC;AACE,YAAM,eAAgB,EAAE,OAAe,SAAS,CAAC;AACjD,iBAAW,iBAAiB,aAAa,OAAO;AAAA,IACpD;AAEA,UAAM,YAAY,kBAAkB,EAAE;AAEtC,WACI;AAAA,MAAC;AAAA,MAAA;AAAA,QAEG,WAAU;AAAA,QACV,cAAc,MAAM,iBAAiB,EAAE,SAAS;AAAA,QAChD,cAAc,MAAM,iBAAiB,IAAI;AAAA,QAEzC,UAAA;AAAA,UAAA,qBAAC,OAAA,EAAI,WAAU,qCACV,UAAA;AAAA,YAAA,YACG;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,KAAK;AAAA,gBACL,MAAK;AAAA,gBACL,OAAO;AAAA,gBACP,UAAU,CAAC,MAAM,aAAa,EAAE,OAAO,KAAK;AAAA,gBAC5C,WAAW,CAAC,MAAM;AACd,sBAAI,EAAE,QAAQ,SAAS;AACnB,uCAAmB,CAAC;AAAA,kBACxB,WAAW,EAAE,QAAQ,UAAU;AAC3B,uCAAA;AAAA,kBACJ;AAAA,gBACJ;AAAA,gBACA,QAAQ,MAAM,mBAAmB,CAAC;AAAA,gBAClC,WAAU;AAAA,cAAA;AAAA,YAAA,IAGd,qBAAC,OAAA,EAAI,WAAU,oDACX,UAAA;AAAA,cAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACG,WAAU;AAAA,kBACV,SAAS,CAAC,MAAM;AACZ,sBAAE,eAAA;AACF,oCAAgB,EAAE,SAAS;AAC3B,wBAAI,EAAE,cAAc,SAAU;AAC9B,gCAAY,EAAE,SAAS;AAAA,kBAC3B;AAAA,kBAEA,UAAA,oBAAC,KAAA,EAAE,WAAU,gDAAgD,UAAA,SAAA,CAAS;AAAA,gBAAA;AAAA,cAAA;AAAA,kCAEzE,QAAA,EAAK,WAAU,4CACX,UAAA,mBAAmB,EAAE,UAAU,EAAA,CACpC;AAAA,YAAA,GACJ;AAAA,YAGH,CAAC,aAAa,kBAAkB,EAAE,aAC/B;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,WAAU;AAAA,gBACV,SAAS,CAAC,MAAM;AACZ,oBAAE,gBAAA;AACF,oCAAkB,mBAAmB,EAAE,YAAY,OAAO,EAAE,SAAS;AAAA,gBACzE;AAAA,gBAEA,UAAA,oBAAC,cAAA,EAAa,WAAU,wBAAA,CAAwB;AAAA,cAAA;AAAA,YAAA;AAAA,UACpD,GAER;AAAA,UAGC,mBAAmB,EAAE,aAClB;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,KAAK;AAAA,cACL,WAAU;AAAA,cACV,UAAA;AAAA,gBAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,WAAU;AAAA,oBACV,SAAS,MAAM,iBAAiB,UAAU,CAAC;AAAA,oBAE3C,UAAA;AAAA,sBAAA,oBAAC,QAAA,EAAO,WAAU,UAAA,CAAU;AAAA,sBAAE;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGlC;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,WAAU;AAAA,oBACV,SAAS,MAAM,iBAAiB,SAAS,CAAC;AAAA,oBAE1C,UAAA;AAAA,sBAAA,oBAAC,QAAA,EAAO,WAAU,UAAA,CAAU;AAAA,sBAAE;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAUlC,oBAAC,OAAA,EAAI,WAAU,gCAAA,CAAgC;AAAA,gBAC/C;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,WAAU;AAAA,oBACV,SAAS,MAAM,iBAAiB,UAAU,CAAC;AAAA,oBAE3C,UAAA;AAAA,sBAAA,oBAAC,QAAA,EAAO,WAAU,UAAA,CAAU;AAAA,sBAAE;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAElC;AAAA,YAAA;AAAA,UAAA;AAAA,QACJ;AAAA,MAAA;AAAA,MAxFC,EAAE;AAAA,IAAA;AAAA,EA4FnB,CAAC,EAAA,CACL;AAER;"}
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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"}
@@ -1,4 +1,4 @@
1
- import { toBase64Url } from "./index.es104.js";
1
+ import { toBase64Url } from "./index.es107.js";
2
2
  function _escapeNodeLabel(nodeLabel) {
3
3
  return nodeLabel.replace(/[^a-zA-Z-_0-9]/g, "_");
4
4
  }
@@ -1,10 +1,10 @@
1
1
  import { __export } from "./index.es56.js";
2
- import { isZodSchemaV4, interopZodTransformInputSchema, isZodObjectV4, interopZodObjectStrict, isZodSchemaV3 } from "./index.es105.js";
3
- import { zodToJsonSchema } from "./index.es205.js";
4
- import { deepCompareStrict } from "./index.es206.js";
5
- import { Validator } from "./index.es207.js";
6
- import { toJSONSchema } from "./index.es208.js";
7
- import { dereference } from "./index.es209.js";
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,
@@ -1,4 +1,4 @@
1
- import tsx from "./index.es115.js";
1
+ import tsx from "./index.es84.js";
2
2
  export {
3
3
  tsx as default
4
4
  };
@@ -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.es23.js";
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.es24.js";
6
- import CustomComponentRender from "./index.es25.js";
7
- import HumanMessage from "./index.es26.js";
8
- import Thinking from "./index.es27.js";
9
- import ToolCallFunctions from "./index.es28.js";
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;
@@ -1,4 +1,4 @@
1
- import python from "./index.es116.js";
1
+ import python from "./index.es85.js";
2
2
  export {
3
3
  python as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { __module as interopRequireDefault } from "./index.es212.js";
1
+ import { __module as interopRequireDefault } from "./index.es191.js";
2
2
  var hasRequiredInteropRequireDefault;
3
3
  function requireInteropRequireDefault() {
4
4
  if (hasRequiredInteropRequireDefault) return interopRequireDefault.exports;
@@ -1,4 +1,4 @@
1
- import { __exports as coy } from "./index.es213.js";
1
+ import { __exports as coy } from "./index.es192.js";
2
2
  var hasRequiredCoy;
3
3
  function requireCoy() {
4
4
  if (hasRequiredCoy) return coy;
@@ -1,4 +1,4 @@
1
- import { __exports as dark } from "./index.es214.js";
1
+ import { __exports as dark } from "./index.es193.js";
2
2
  var hasRequiredDark;
3
3
  function requireDark() {
4
4
  if (hasRequiredDark) return dark;
@@ -1,4 +1,4 @@
1
- import { __exports as funky } from "./index.es215.js";
1
+ import { __exports as funky } from "./index.es194.js";
2
2
  var hasRequiredFunky;
3
3
  function requireFunky() {
4
4
  if (hasRequiredFunky) return funky;
@@ -1,4 +1,4 @@
1
- import { __exports as okaidia } from "./index.es216.js";
1
+ import { __exports as okaidia } from "./index.es195.js";
2
2
  var hasRequiredOkaidia;
3
3
  function requireOkaidia() {
4
4
  if (hasRequiredOkaidia) return okaidia;
@@ -1,4 +1,4 @@
1
- import { __exports as solarizedlight } from "./index.es217.js";
1
+ import { __exports as solarizedlight } from "./index.es196.js";
2
2
  var hasRequiredSolarizedlight;
3
3
  function requireSolarizedlight() {
4
4
  if (hasRequiredSolarizedlight) return solarizedlight;
@@ -1,4 +1,4 @@
1
- import { __exports as tomorrow } from "./index.es218.js";
1
+ import { __exports as tomorrow } from "./index.es197.js";
2
2
  var hasRequiredTomorrow;
3
3
  function requireTomorrow() {
4
4
  if (hasRequiredTomorrow) return tomorrow;