langgraph-ui-components 0.0.7 → 0.0.8

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 (283) hide show
  1. package/dist/index.es100.js +25 -157
  2. package/dist/index.es100.js.map +1 -1
  3. package/dist/index.es101.js +3130 -176
  4. package/dist/index.es101.js.map +1 -1
  5. package/dist/index.es102.js +36 -13
  6. package/dist/index.es102.js.map +1 -1
  7. package/dist/index.es103.js +5 -30
  8. package/dist/index.es103.js.map +1 -1
  9. package/dist/index.es104.js +69 -30
  10. package/dist/index.es104.js.map +1 -1
  11. package/dist/index.es105.js +28 -3148
  12. package/dist/index.es105.js.map +1 -1
  13. package/dist/index.es106.js +5 -16
  14. package/dist/index.es106.js.map +1 -1
  15. package/dist/index.es107.js +2 -7
  16. package/dist/index.es107.js.map +1 -1
  17. package/dist/index.es108.js +13 -2
  18. package/dist/index.es108.js.map +1 -1
  19. package/dist/index.es109.js +499 -9
  20. package/dist/index.es109.js.map +1 -1
  21. package/dist/index.es11.js +2 -2
  22. package/dist/index.es11.js.map +1 -1
  23. package/dist/index.es110.js +5 -501
  24. package/dist/index.es110.js.map +1 -1
  25. package/dist/index.es111.js +2 -7
  26. package/dist/index.es111.js.map +1 -1
  27. package/dist/index.es112.js +148 -2
  28. package/dist/index.es112.js.map +1 -1
  29. package/dist/index.es113.js +878 -118
  30. package/dist/index.es113.js.map +1 -1
  31. package/dist/index.es114.js +251 -877
  32. package/dist/index.es114.js.map +1 -1
  33. package/dist/index.es115.js +3 -281
  34. package/dist/index.es115.js.map +1 -1
  35. package/dist/index.es116.js +445 -3
  36. package/dist/index.es116.js.map +1 -1
  37. package/dist/index.es117.js +39 -437
  38. package/dist/index.es117.js.map +1 -1
  39. package/dist/index.es118.js +22 -46
  40. package/dist/index.es118.js.map +1 -1
  41. package/dist/index.es119.js +78 -21
  42. package/dist/index.es119.js.map +1 -1
  43. package/dist/index.es120.js +126 -76
  44. package/dist/index.es120.js.map +1 -1
  45. package/dist/index.es121.js +45 -125
  46. package/dist/index.es121.js.map +1 -1
  47. package/dist/index.es122.js +9 -48
  48. package/dist/index.es122.js.map +1 -1
  49. package/dist/index.es123.js +45 -10
  50. package/dist/index.es123.js.map +1 -1
  51. package/dist/index.es124.js +97 -43
  52. package/dist/index.es124.js.map +1 -1
  53. package/dist/index.es125.js +48 -94
  54. package/dist/index.es125.js.map +1 -1
  55. package/dist/index.es126.js +14 -51
  56. package/dist/index.es126.js.map +1 -1
  57. package/dist/index.es127.js +13 -162
  58. package/dist/index.es127.js.map +1 -1
  59. package/dist/index.es128.js +89 -2
  60. package/dist/index.es128.js.map +1 -1
  61. package/dist/index.es129.js +2 -15
  62. package/dist/index.es129.js.map +1 -1
  63. package/dist/index.es130.js +54 -87
  64. package/dist/index.es130.js.map +1 -1
  65. package/dist/index.es131.js +100 -2
  66. package/dist/index.es131.js.map +1 -1
  67. package/dist/index.es132.js +186 -51
  68. package/dist/index.es132.js.map +1 -1
  69. package/dist/index.es133.js +97 -87
  70. package/dist/index.es133.js.map +1 -1
  71. package/dist/index.es134.js +31 -187
  72. package/dist/index.es134.js.map +1 -1
  73. package/dist/index.es135.js +10 -110
  74. package/dist/index.es135.js.map +1 -1
  75. package/dist/index.es136.js +11 -35
  76. package/dist/index.es136.js.map +1 -1
  77. package/dist/index.es137.js +12 -10
  78. package/dist/index.es137.js.map +1 -1
  79. package/dist/index.es138.js +90 -10
  80. package/dist/index.es138.js.map +1 -1
  81. package/dist/index.es139.js +274 -11
  82. package/dist/index.es139.js.map +1 -1
  83. package/dist/index.es140.js +2 -91
  84. package/dist/index.es140.js.map +1 -1
  85. package/dist/index.es141.js +150 -261
  86. package/dist/index.es141.js.map +1 -1
  87. package/dist/index.es142.js +51 -2
  88. package/dist/index.es142.js.map +1 -1
  89. package/dist/index.es143.js +34 -158
  90. package/dist/index.es143.js.map +1 -1
  91. package/dist/index.es144.js +34 -50
  92. package/dist/index.es144.js.map +1 -1
  93. package/dist/index.es145.js +32 -32
  94. package/dist/index.es145.js.map +1 -1
  95. package/dist/index.es146.js +23 -34
  96. package/dist/index.es146.js.map +1 -1
  97. package/dist/index.es147.js +583 -32
  98. package/dist/index.es147.js.map +1 -1
  99. package/dist/index.es148.js +121 -20
  100. package/dist/index.es148.js.map +1 -1
  101. package/dist/index.es149.js +158 -585
  102. package/dist/index.es149.js.map +1 -1
  103. package/dist/index.es15.js +15 -15
  104. package/dist/index.es150.js +2 -125
  105. package/dist/index.es150.js.map +1 -1
  106. package/dist/index.es157.js +2 -2
  107. package/dist/index.es159.js +2 -2
  108. package/dist/index.es161.js +64 -25
  109. package/dist/index.es161.js.map +1 -1
  110. package/dist/index.es162.js +22 -12
  111. package/dist/index.es162.js.map +1 -1
  112. package/dist/index.es163.js +5 -53
  113. package/dist/index.es163.js.map +1 -1
  114. package/dist/index.es164.js +337 -52
  115. package/dist/index.es164.js.map +1 -1
  116. package/dist/index.es165.js +24 -21
  117. package/dist/index.es165.js.map +1 -1
  118. package/dist/index.es166.js +12 -6
  119. package/dist/index.es166.js.map +1 -1
  120. package/dist/index.es167.js +49 -344
  121. package/dist/index.es167.js.map +1 -1
  122. package/dist/index.es175.js +1 -1
  123. package/dist/index.es178.js +1 -1
  124. package/dist/index.es183.js +1 -1
  125. package/dist/index.es195.js +2 -2
  126. package/dist/index.es197.js +2 -2
  127. package/dist/index.es200.js +1 -1
  128. package/dist/index.es201.js +1 -1
  129. package/dist/index.es203.js +1 -1
  130. package/dist/index.es204.js +2 -2
  131. package/dist/index.es206.js +1 -1
  132. package/dist/index.es209.js +3 -3
  133. package/dist/index.es21.js +1 -1
  134. package/dist/index.es210.js +2 -2
  135. package/dist/index.es212.js +1 -1
  136. package/dist/index.es214.js +1 -1
  137. package/dist/index.es215.js +1 -1
  138. package/dist/index.es217.js +1 -1
  139. package/dist/index.es218.js +2 -2
  140. package/dist/index.es219.js +1 -1
  141. package/dist/index.es220.js +1 -1
  142. package/dist/index.es221.js +1 -1
  143. package/dist/index.es222.js +1 -1
  144. package/dist/index.es223.js +1 -1
  145. package/dist/index.es224.js +1 -1
  146. package/dist/index.es225.js +1 -1
  147. package/dist/index.es229.js +2 -2
  148. package/dist/index.es28.js +7 -7
  149. package/dist/index.es29.js +1 -1
  150. package/dist/index.es32.js +4 -4
  151. package/dist/index.es33.js +15 -1191
  152. package/dist/index.es33.js.map +1 -1
  153. package/dist/index.es34.js +117 -6
  154. package/dist/index.es34.js.map +1 -1
  155. package/dist/index.es35.js +70 -8
  156. package/dist/index.es35.js.map +1 -1
  157. package/dist/index.es36.js +19 -148
  158. package/dist/index.es36.js.map +1 -1
  159. package/dist/index.es37.js +255 -112
  160. package/dist/index.es37.js.map +1 -1
  161. package/dist/index.es38.js +40 -68
  162. package/dist/index.es38.js.map +1 -1
  163. package/dist/index.es39.js +214 -17
  164. package/dist/index.es39.js.map +1 -1
  165. package/dist/index.es40.js +53 -247
  166. package/dist/index.es40.js.map +1 -1
  167. package/dist/index.es41.js +123 -24
  168. package/dist/index.es41.js.map +1 -1
  169. package/dist/index.es42.js +14 -205
  170. package/dist/index.es42.js.map +1 -1
  171. package/dist/index.es43.js +221 -58
  172. package/dist/index.es43.js.map +1 -1
  173. package/dist/index.es44.js +7 -140
  174. package/dist/index.es44.js.map +1 -1
  175. package/dist/index.es45.js +1185 -17
  176. package/dist/index.es45.js.map +1 -1
  177. package/dist/index.es46.js +6 -229
  178. package/dist/index.es46.js.map +1 -1
  179. package/dist/index.es47.js +146 -15
  180. package/dist/index.es47.js.map +1 -1
  181. package/dist/index.es49.js +7 -90
  182. package/dist/index.es49.js.map +1 -1
  183. package/dist/index.es50.js +92 -6
  184. package/dist/index.es50.js.map +1 -1
  185. package/dist/index.es51.js +3 -14
  186. package/dist/index.es51.js.map +1 -1
  187. package/dist/index.es52.js +36 -8
  188. package/dist/index.es52.js.map +1 -1
  189. package/dist/index.es53.js +61 -83
  190. package/dist/index.es53.js.map +1 -1
  191. package/dist/index.es54.js +37 -3
  192. package/dist/index.es54.js.map +1 -1
  193. package/dist/index.es55.js +304 -34
  194. package/dist/index.es55.js.map +1 -1
  195. package/dist/index.es56.js +9 -72
  196. package/dist/index.es56.js.map +1 -1
  197. package/dist/index.es57.js +85 -32
  198. package/dist/index.es57.js.map +1 -1
  199. package/dist/index.es58.js +6 -304
  200. package/dist/index.es58.js.map +1 -1
  201. package/dist/index.es59.js +15 -9
  202. package/dist/index.es59.js.map +1 -1
  203. package/dist/index.es60.js +142 -5
  204. package/dist/index.es60.js.map +1 -1
  205. package/dist/index.es61.js +285 -148
  206. package/dist/index.es61.js.map +1 -1
  207. package/dist/index.es62.js +62 -668
  208. package/dist/index.es62.js.map +1 -1
  209. package/dist/index.es63.js +201 -131
  210. package/dist/index.es63.js.map +1 -1
  211. package/dist/index.es64.js +29 -295
  212. package/dist/index.es64.js.map +1 -1
  213. package/dist/index.es65.js +8 -65
  214. package/dist/index.es65.js.map +1 -1
  215. package/dist/index.es66.js +9 -210
  216. package/dist/index.es66.js.map +1 -1
  217. package/dist/index.es67.js +181 -28
  218. package/dist/index.es67.js.map +1 -1
  219. package/dist/index.es68.js +23 -8
  220. package/dist/index.es68.js.map +1 -1
  221. package/dist/index.es69.js +1397 -9
  222. package/dist/index.es69.js.map +1 -1
  223. package/dist/index.es70.js +9 -187
  224. package/dist/index.es70.js.map +1 -1
  225. package/dist/index.es71.js +8 -24
  226. package/dist/index.es71.js.map +1 -1
  227. package/dist/index.es72.js +5 -1399
  228. package/dist/index.es72.js.map +1 -1
  229. package/dist/index.es73.js +163 -9
  230. package/dist/index.es73.js.map +1 -1
  231. package/dist/index.es74.js +672 -8
  232. package/dist/index.es74.js.map +1 -1
  233. package/dist/index.es75.js +11 -36
  234. package/dist/index.es75.js.map +1 -1
  235. package/dist/index.es76.js +40 -5
  236. package/dist/index.es76.js.map +1 -1
  237. package/dist/index.es77.js +32 -71
  238. package/dist/index.es77.js.map +1 -1
  239. package/dist/index.es78.js +225 -30
  240. package/dist/index.es78.js.map +1 -1
  241. package/dist/index.es79.js +29 -11
  242. package/dist/index.es79.js.map +1 -1
  243. package/dist/index.es80.js +72 -37
  244. package/dist/index.es80.js.map +1 -1
  245. package/dist/index.es81.js +74 -32
  246. package/dist/index.es81.js.map +1 -1
  247. package/dist/index.es82.js +46 -226
  248. package/dist/index.es82.js.map +1 -1
  249. package/dist/index.es83.js +6 -6
  250. package/dist/index.es83.js.map +1 -1
  251. package/dist/index.es84.js +39 -71
  252. package/dist/index.es84.js.map +1 -1
  253. package/dist/index.es85.js +54 -73
  254. package/dist/index.es85.js.map +1 -1
  255. package/dist/index.es86.js +13 -52
  256. package/dist/index.es86.js.map +1 -1
  257. package/dist/index.es87.js +135 -28
  258. package/dist/index.es87.js.map +1 -1
  259. package/dist/index.es88.js +20 -42
  260. package/dist/index.es88.js.map +1 -1
  261. package/dist/index.es89.js +175 -50
  262. package/dist/index.es89.js.map +1 -1
  263. package/dist/index.es90.js +240 -12
  264. package/dist/index.es90.js.map +1 -1
  265. package/dist/index.es91.js +348 -130
  266. package/dist/index.es91.js.map +1 -1
  267. package/dist/index.es92.js +134 -18
  268. package/dist/index.es92.js.map +1 -1
  269. package/dist/index.es93.js +62 -174
  270. package/dist/index.es93.js.map +1 -1
  271. package/dist/index.es94.js +30 -234
  272. package/dist/index.es94.js.map +1 -1
  273. package/dist/index.es95.js +26 -344
  274. package/dist/index.es95.js.map +1 -1
  275. package/dist/index.es96.js +156 -127
  276. package/dist/index.es96.js.map +1 -1
  277. package/dist/index.es97.js +196 -63
  278. package/dist/index.es97.js.map +1 -1
  279. package/dist/index.es98.js +14 -37
  280. package/dist/index.es98.js.map +1 -1
  281. package/dist/index.es99.js +27 -34
  282. package/dist/index.es99.js.map +1 -1
  283. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.es33.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/client.js"],"sourcesContent":["import { AsyncCaller } from \"./utils/async_caller.js\";\nimport { getEnvironmentVariable } from \"./utils/env.js\";\nimport { mergeSignals } from \"./utils/signals.js\";\nimport { BytesLineDecoder, SSEDecoder } from \"./utils/sse.js\";\nimport { streamWithRetry } from \"./utils/stream.js\";\n\n//#region src/client.ts\nfunction* iterateHeaders(headers) {\n\tlet iter;\n\tlet shouldClear = false;\n\tif (headers instanceof Headers) {\n\t\tconst entries = [];\n\t\theaders.forEach((value, name) => {\n\t\t\tentries.push([name, value]);\n\t\t});\n\t\titer = entries;\n\t} else if (Array.isArray(headers)) iter = headers;\n\telse {\n\t\tshouldClear = true;\n\t\titer = Object.entries(headers ?? {});\n\t}\n\tfor (const item of iter) {\n\t\tconst name = item[0];\n\t\tif (typeof name !== \"string\") throw new TypeError(`Expected header name to be a string, got ${typeof name}`);\n\t\tconst values = Array.isArray(item[1]) ? item[1] : [item[1]];\n\t\tlet didClear = false;\n\t\tfor (const value of values) {\n\t\t\tif (value === void 0) continue;\n\t\t\tif (shouldClear && !didClear) {\n\t\t\t\tdidClear = true;\n\t\t\t\tyield [name, null];\n\t\t\t}\n\t\t\tyield [name, value];\n\t\t}\n\t}\n}\nfunction mergeHeaders(...headerObjects) {\n\tconst outputHeaders = new Headers();\n\tfor (const headers of headerObjects) {\n\t\tif (!headers) continue;\n\t\tfor (const [name, value] of iterateHeaders(headers)) if (value === null) outputHeaders.delete(name);\n\t\telse outputHeaders.append(name, value);\n\t}\n\tconst headerEntries = [];\n\toutputHeaders.forEach((value, name) => {\n\t\theaderEntries.push([name, value]);\n\t});\n\treturn Object.fromEntries(headerEntries);\n}\n/**\n* Get the API key from the environment.\n* Precedence:\n* 1. explicit argument (if string)\n* 2. LANGGRAPH_API_KEY\n* 3. LANGSMITH_API_KEY\n* 4. LANGCHAIN_API_KEY\n*\n* @param apiKey - API key provided as an argument. If null, skips environment lookup. If undefined, tries environment.\n* @returns The API key if found, otherwise undefined\n*/\nfunction getApiKey(apiKey) {\n\tif (apiKey === null) return;\n\tif (apiKey) return apiKey;\n\tfor (const prefix of [\n\t\t\"LANGGRAPH\",\n\t\t\"LANGSMITH\",\n\t\t\"LANGCHAIN\"\n\t]) {\n\t\tconst envKey = getEnvironmentVariable(`${prefix}_API_KEY`);\n\t\tif (envKey) return envKey.trim().replace(/^[\"']|[\"']$/g, \"\");\n\t}\n}\nconst REGEX_RUN_METADATA = /(\\/threads\\/(?<thread_id>.+))?\\/runs\\/(?<run_id>.+)/;\nfunction getRunMetadataFromResponse(response) {\n\tconst contentLocation = response.headers.get(\"Content-Location\");\n\tif (!contentLocation) return void 0;\n\tconst match = REGEX_RUN_METADATA.exec(contentLocation);\n\tif (!match?.groups?.run_id) return void 0;\n\treturn {\n\t\trun_id: match.groups.run_id,\n\t\tthread_id: match.groups.thread_id || void 0\n\t};\n}\nvar BaseClient = class {\n\tasyncCaller;\n\ttimeoutMs;\n\tapiUrl;\n\tdefaultHeaders;\n\tonRequest;\n\tconstructor(config) {\n\t\tconst callerOptions = {\n\t\t\tmaxRetries: 4,\n\t\t\tmaxConcurrency: 4,\n\t\t\t...config?.callerOptions\n\t\t};\n\t\tlet defaultApiUrl = \"http://localhost:8123\";\n\t\tif (!config?.apiUrl && typeof globalThis === \"object\" && globalThis != null) {\n\t\t\tconst fetchSmb = Symbol.for(\"langgraph_api:fetch\");\n\t\t\tconst urlSmb = Symbol.for(\"langgraph_api:url\");\n\t\t\tconst global = globalThis;\n\t\t\tif (global[fetchSmb]) callerOptions.fetch ??= global[fetchSmb];\n\t\t\tif (global[urlSmb]) defaultApiUrl = global[urlSmb];\n\t\t}\n\t\tthis.asyncCaller = new AsyncCaller(callerOptions);\n\t\tthis.timeoutMs = config?.timeoutMs;\n\t\tthis.apiUrl = config?.apiUrl?.replace(/\\/$/, \"\") || defaultApiUrl;\n\t\tthis.defaultHeaders = config?.defaultHeaders || {};\n\t\tthis.onRequest = config?.onRequest;\n\t\tconst apiKey = getApiKey(config?.apiKey);\n\t\tif (apiKey) this.defaultHeaders[\"x-api-key\"] = apiKey;\n\t}\n\tprepareFetchOptions(path, options) {\n\t\tconst mutatedOptions = {\n\t\t\t...options,\n\t\t\theaders: mergeHeaders(this.defaultHeaders, options?.headers)\n\t\t};\n\t\tif (mutatedOptions.json) {\n\t\t\tmutatedOptions.body = JSON.stringify(mutatedOptions.json);\n\t\t\tmutatedOptions.headers = mergeHeaders(mutatedOptions.headers, { \"content-type\": \"application/json\" });\n\t\t\tdelete mutatedOptions.json;\n\t\t}\n\t\tif (mutatedOptions.withResponse) delete mutatedOptions.withResponse;\n\t\tlet timeoutSignal = null;\n\t\tif (typeof options?.timeoutMs !== \"undefined\") {\n\t\t\tif (options.timeoutMs != null) timeoutSignal = AbortSignal.timeout(options.timeoutMs);\n\t\t} else if (this.timeoutMs != null) timeoutSignal = AbortSignal.timeout(this.timeoutMs);\n\t\tmutatedOptions.signal = mergeSignals(timeoutSignal, mutatedOptions.signal);\n\t\tconst targetUrl = new URL(`${this.apiUrl}${path}`);\n\t\tif (mutatedOptions.params) {\n\t\t\tfor (const [key, value] of Object.entries(mutatedOptions.params)) {\n\t\t\t\tif (value == null) continue;\n\t\t\t\tconst strValue = typeof value === \"string\" || typeof value === \"number\" ? value.toString() : JSON.stringify(value);\n\t\t\t\ttargetUrl.searchParams.append(key, strValue);\n\t\t\t}\n\t\t\tdelete mutatedOptions.params;\n\t\t}\n\t\treturn [targetUrl, mutatedOptions];\n\t}\n\tasync fetch(path, options) {\n\t\tconst [url, init] = this.prepareFetchOptions(path, options);\n\t\tlet finalInit = init;\n\t\tif (this.onRequest) finalInit = await this.onRequest(url, init);\n\t\tconst response = await this.asyncCaller.fetch(url, finalInit);\n\t\tconst body = (() => {\n\t\t\tif (response.status === 202 || response.status === 204) return;\n\t\t\treturn response.json();\n\t\t})();\n\t\tif (options?.withResponse) return [await body, response];\n\t\treturn body;\n\t}\n\t/**\n\t* Protected helper for streaming with automatic retry logic.\n\t* Handles both initial requests and reconnections with SSE.\n\t*/\n\tasync *streamWithRetry(config) {\n\t\tconst makeRequest = async (reconnectParams) => {\n\t\t\tconst requestEndpoint = reconnectParams?.reconnectPath || config.endpoint;\n\t\t\tconst isReconnect = !!reconnectParams?.reconnectPath;\n\t\t\tconst method = isReconnect ? \"GET\" : config.method || \"GET\";\n\t\t\tconst requestHeaders = isReconnect && reconnectParams?.lastEventId ? {\n\t\t\t\t...config.headers,\n\t\t\t\t\"Last-Event-ID\": reconnectParams.lastEventId\n\t\t\t} : config.headers;\n\t\t\tlet [url, init] = this.prepareFetchOptions(requestEndpoint, {\n\t\t\t\tmethod,\n\t\t\t\ttimeoutMs: null,\n\t\t\t\tsignal: config.signal,\n\t\t\t\theaders: requestHeaders,\n\t\t\t\tparams: config.params,\n\t\t\t\tjson: isReconnect ? void 0 : config.json\n\t\t\t});\n\t\t\tif (this.onRequest != null) init = await this.onRequest(url, init);\n\t\t\tconst response = await this.asyncCaller.fetch(url, init);\n\t\t\tif (!isReconnect && config.onInitialResponse) await config.onInitialResponse(response);\n\t\t\treturn {\n\t\t\t\tresponse,\n\t\t\t\tstream: (response.body || new ReadableStream({ start: (ctrl) => ctrl.close() })).pipeThrough(BytesLineDecoder()).pipeThrough(SSEDecoder())\n\t\t\t};\n\t\t};\n\t\tyield* streamWithRetry(makeRequest, {\n\t\t\tmaxRetries: config.maxRetries ?? 5,\n\t\t\tsignal: config.signal,\n\t\t\tonReconnect: config.onReconnect\n\t\t});\n\t}\n};\nvar CronsClient = class extends BaseClient {\n\t/**\n\t*\n\t* @param threadId The ID of the thread.\n\t* @param assistantId Assistant ID to use for this cron job.\n\t* @param payload Payload for creating a cron job.\n\t* @returns The created background run.\n\t*/\n\tasync createForThread(threadId, assistantId, payload) {\n\t\tconst json = {\n\t\t\tschedule: payload?.schedule,\n\t\t\tinput: payload?.input,\n\t\t\tconfig: payload?.config,\n\t\t\tcontext: payload?.context,\n\t\t\tmetadata: payload?.metadata,\n\t\t\tassistant_id: assistantId,\n\t\t\tinterrupt_before: payload?.interruptBefore,\n\t\t\tinterrupt_after: payload?.interruptAfter,\n\t\t\twebhook: payload?.webhook,\n\t\t\tmultitask_strategy: payload?.multitaskStrategy,\n\t\t\tif_not_exists: payload?.ifNotExists,\n\t\t\tcheckpoint_during: payload?.checkpointDuring,\n\t\t\tdurability: payload?.durability\n\t\t};\n\t\treturn this.fetch(`/threads/${threadId}/runs/crons`, {\n\t\t\tmethod: \"POST\",\n\t\t\tjson,\n\t\t\tsignal: payload?.signal\n\t\t});\n\t}\n\t/**\n\t*\n\t* @param assistantId Assistant ID to use for this cron job.\n\t* @param payload Payload for creating a cron job.\n\t* @returns\n\t*/\n\tasync create(assistantId, payload) {\n\t\tconst json = {\n\t\t\tschedule: payload?.schedule,\n\t\t\tinput: payload?.input,\n\t\t\tconfig: payload?.config,\n\t\t\tcontext: payload?.context,\n\t\t\tmetadata: payload?.metadata,\n\t\t\tassistant_id: assistantId,\n\t\t\tinterrupt_before: payload?.interruptBefore,\n\t\t\tinterrupt_after: payload?.interruptAfter,\n\t\t\twebhook: payload?.webhook,\n\t\t\ton_run_completed: payload?.onRunCompleted,\n\t\t\tmultitask_strategy: payload?.multitaskStrategy,\n\t\t\tif_not_exists: payload?.ifNotExists,\n\t\t\tcheckpoint_during: payload?.checkpointDuring,\n\t\t\tdurability: payload?.durability\n\t\t};\n\t\treturn this.fetch(`/runs/crons`, {\n\t\t\tmethod: \"POST\",\n\t\t\tjson,\n\t\t\tsignal: payload?.signal\n\t\t});\n\t}\n\t/**\n\t*\n\t* @param cronId Cron ID of Cron job to delete.\n\t*/\n\tasync delete(cronId, options) {\n\t\tawait this.fetch(`/runs/crons/${cronId}`, {\n\t\t\tmethod: \"DELETE\",\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t*\n\t* @param query Query options.\n\t* @returns List of crons.\n\t*/\n\tasync search(query) {\n\t\treturn this.fetch(\"/runs/crons/search\", {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: {\n\t\t\t\tassistant_id: query?.assistantId ?? void 0,\n\t\t\t\tthread_id: query?.threadId ?? void 0,\n\t\t\t\tlimit: query?.limit ?? 10,\n\t\t\t\toffset: query?.offset ?? 0,\n\t\t\t\tsort_by: query?.sortBy ?? void 0,\n\t\t\t\tsort_order: query?.sortOrder ?? void 0,\n\t\t\t\tselect: query?.select ?? void 0\n\t\t\t},\n\t\t\tsignal: query?.signal\n\t\t});\n\t}\n\t/**\n\t* Count cron jobs matching filters.\n\t*\n\t* @param query.assistantId Assistant ID to filter by.\n\t* @param query.threadId Thread ID to filter by.\n\t* @returns Number of cron jobs matching the criteria.\n\t*/\n\tasync count(query) {\n\t\treturn this.fetch(`/runs/crons/count`, {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: {\n\t\t\t\tassistant_id: query?.assistantId ?? void 0,\n\t\t\t\tthread_id: query?.threadId ?? void 0\n\t\t\t},\n\t\t\tsignal: query?.signal\n\t\t});\n\t}\n};\nvar AssistantsClient = class extends BaseClient {\n\t/**\n\t* Get an assistant by ID.\n\t*\n\t* @param assistantId The ID of the assistant.\n\t* @returns Assistant\n\t*/\n\tasync get(assistantId, options) {\n\t\treturn this.fetch(`/assistants/${assistantId}`, { signal: options?.signal });\n\t}\n\t/**\n\t* Get the JSON representation of the graph assigned to a runnable\n\t* @param assistantId The ID of the assistant.\n\t* @param options.xray Whether to include subgraphs in the serialized graph representation. If an integer value is provided, only subgraphs with a depth less than or equal to the value will be included.\n\t* @returns Serialized graph\n\t*/\n\tasync getGraph(assistantId, options) {\n\t\treturn this.fetch(`/assistants/${assistantId}/graph`, {\n\t\t\tparams: { xray: options?.xray },\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t* Get the state and config schema of the graph assigned to a runnable\n\t* @param assistantId The ID of the assistant.\n\t* @returns Graph schema\n\t*/\n\tasync getSchemas(assistantId, options) {\n\t\treturn this.fetch(`/assistants/${assistantId}/schemas`, { signal: options?.signal });\n\t}\n\t/**\n\t* Get the schemas of an assistant by ID.\n\t*\n\t* @param assistantId The ID of the assistant to get the schema of.\n\t* @param options Additional options for getting subgraphs, such as namespace or recursion extraction.\n\t* @returns The subgraphs of the assistant.\n\t*/\n\tasync getSubgraphs(assistantId, options) {\n\t\tif (options?.namespace) return this.fetch(`/assistants/${assistantId}/subgraphs/${options.namespace}`, {\n\t\t\tparams: { recurse: options?.recurse },\n\t\t\tsignal: options?.signal\n\t\t});\n\t\treturn this.fetch(`/assistants/${assistantId}/subgraphs`, {\n\t\t\tparams: { recurse: options?.recurse },\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t* Create a new assistant.\n\t* @param payload Payload for creating an assistant.\n\t* @returns The created assistant.\n\t*/\n\tasync create(payload) {\n\t\treturn this.fetch(\"/assistants\", {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: {\n\t\t\t\tgraph_id: payload.graphId,\n\t\t\t\tconfig: payload.config,\n\t\t\t\tcontext: payload.context,\n\t\t\t\tmetadata: payload.metadata,\n\t\t\t\tassistant_id: payload.assistantId,\n\t\t\t\tif_exists: payload.ifExists,\n\t\t\t\tname: payload.name,\n\t\t\t\tdescription: payload.description\n\t\t\t},\n\t\t\tsignal: payload.signal\n\t\t});\n\t}\n\t/**\n\t* Update an assistant.\n\t* @param assistantId ID of the assistant.\n\t* @param payload Payload for updating the assistant.\n\t* @returns The updated assistant.\n\t*/\n\tasync update(assistantId, payload) {\n\t\treturn this.fetch(`/assistants/${assistantId}`, {\n\t\t\tmethod: \"PATCH\",\n\t\t\tjson: {\n\t\t\t\tgraph_id: payload.graphId,\n\t\t\t\tconfig: payload.config,\n\t\t\t\tcontext: payload.context,\n\t\t\t\tmetadata: payload.metadata,\n\t\t\t\tname: payload.name,\n\t\t\t\tdescription: payload.description\n\t\t\t},\n\t\t\tsignal: payload.signal\n\t\t});\n\t}\n\t/**\n\t* Delete an assistant.\n\t*\n\t* @param assistantId ID of the assistant.\n\t* @param deleteThreads If true, delete all threads with `metadata.assistant_id` equal to `assistantId`. Defaults to false.\n\t*/\n\tasync delete(assistantId, options) {\n\t\treturn this.fetch(`/assistants/${assistantId}?delete_threads=${options?.deleteThreads ?? false}`, {\n\t\t\tmethod: \"DELETE\",\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\tasync search(query) {\n\t\tconst json = {\n\t\t\tgraph_id: query?.graphId ?? void 0,\n\t\t\tname: query?.name ?? void 0,\n\t\t\tmetadata: query?.metadata ?? void 0,\n\t\t\tlimit: query?.limit ?? 10,\n\t\t\toffset: query?.offset ?? 0,\n\t\t\tsort_by: query?.sortBy ?? void 0,\n\t\t\tsort_order: query?.sortOrder ?? void 0,\n\t\t\tselect: query?.select ?? void 0\n\t\t};\n\t\tconst [assistants, response] = await this.fetch(\"/assistants/search\", {\n\t\t\tmethod: \"POST\",\n\t\t\tjson,\n\t\t\twithResponse: true,\n\t\t\tsignal: query?.signal\n\t\t});\n\t\tif (query?.includePagination) return {\n\t\t\tassistants,\n\t\t\tnext: response.headers.get(\"X-Pagination-Next\")\n\t\t};\n\t\treturn assistants;\n\t}\n\t/**\n\t* Count assistants matching filters.\n\t*\n\t* @param query.metadata Metadata to filter by. Exact match for each key/value.\n\t* @param query.graphId Optional graph id to filter by.\n\t* @param query.name Optional name to filter by.\n\t* @returns Number of assistants matching the criteria.\n\t*/\n\tasync count(query) {\n\t\treturn this.fetch(`/assistants/count`, {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: {\n\t\t\t\tmetadata: query?.metadata ?? void 0,\n\t\t\t\tgraph_id: query?.graphId ?? void 0,\n\t\t\t\tname: query?.name ?? void 0\n\t\t\t},\n\t\t\tsignal: query?.signal\n\t\t});\n\t}\n\t/**\n\t* List all versions of an assistant.\n\t*\n\t* @param assistantId ID of the assistant.\n\t* @returns List of assistant versions.\n\t*/\n\tasync getVersions(assistantId, payload) {\n\t\treturn this.fetch(`/assistants/${assistantId}/versions`, {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: {\n\t\t\t\tmetadata: payload?.metadata ?? void 0,\n\t\t\t\tlimit: payload?.limit ?? 10,\n\t\t\t\toffset: payload?.offset ?? 0\n\t\t\t},\n\t\t\tsignal: payload?.signal\n\t\t});\n\t}\n\t/**\n\t* Change the version of an assistant.\n\t*\n\t* @param assistantId ID of the assistant.\n\t* @param version The version to change to.\n\t* @returns The updated assistant.\n\t*/\n\tasync setLatest(assistantId, version, options) {\n\t\treturn this.fetch(`/assistants/${assistantId}/latest`, {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: { version },\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n};\nvar ThreadsClient = class extends BaseClient {\n\t/**\n\t* Get a thread by ID.\n\t*\n\t* @param threadId ID of the thread.\n\t* @returns The thread.\n\t*/\n\tasync get(threadId, options) {\n\t\treturn this.fetch(`/threads/${threadId}`, { signal: options?.signal });\n\t}\n\t/**\n\t* Create a new thread.\n\t*\n\t* @param payload Payload for creating a thread.\n\t* @returns The created thread.\n\t*/\n\tasync create(payload) {\n\t\tconst ttlPayload = typeof payload?.ttl === \"number\" ? {\n\t\t\tttl: payload.ttl,\n\t\t\tstrategy: \"delete\"\n\t\t} : payload?.ttl;\n\t\treturn this.fetch(`/threads`, {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: {\n\t\t\t\tmetadata: {\n\t\t\t\t\t...payload?.metadata,\n\t\t\t\t\tgraph_id: payload?.graphId\n\t\t\t\t},\n\t\t\t\tthread_id: payload?.threadId,\n\t\t\t\tif_exists: payload?.ifExists,\n\t\t\t\tsupersteps: payload?.supersteps?.map((s) => ({ updates: s.updates.map((u) => ({\n\t\t\t\t\tvalues: u.values,\n\t\t\t\t\tcommand: u.command,\n\t\t\t\t\tas_node: u.asNode\n\t\t\t\t})) })),\n\t\t\t\tttl: ttlPayload\n\t\t\t},\n\t\t\tsignal: payload?.signal\n\t\t});\n\t}\n\t/**\n\t* Copy an existing thread\n\t* @param threadId ID of the thread to be copied\n\t* @returns Newly copied thread\n\t*/\n\tasync copy(threadId, options) {\n\t\treturn this.fetch(`/threads/${threadId}/copy`, {\n\t\t\tmethod: \"POST\",\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t* Update a thread.\n\t*\n\t* @param threadId ID of the thread.\n\t* @param payload Payload for updating the thread.\n\t* @returns The updated thread.\n\t*/\n\tasync update(threadId, payload) {\n\t\tconst ttlPayload = typeof payload?.ttl === \"number\" ? {\n\t\t\tttl: payload.ttl,\n\t\t\tstrategy: \"delete\"\n\t\t} : payload?.ttl;\n\t\treturn this.fetch(`/threads/${threadId}`, {\n\t\t\tmethod: \"PATCH\",\n\t\t\tjson: {\n\t\t\t\tmetadata: payload?.metadata,\n\t\t\t\tttl: ttlPayload\n\t\t\t},\n\t\t\tsignal: payload?.signal\n\t\t});\n\t}\n\t/**\n\t* Delete a thread.\n\t*\n\t* @param threadId ID of the thread.\n\t*/\n\tasync delete(threadId, options) {\n\t\treturn this.fetch(`/threads/${threadId}`, {\n\t\t\tmethod: \"DELETE\",\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t* List threads\n\t*\n\t* @param query Query options\n\t* @returns List of threads\n\t*/\n\tasync search(query) {\n\t\treturn this.fetch(\"/threads/search\", {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: {\n\t\t\t\tmetadata: query?.metadata ?? void 0,\n\t\t\t\tids: query?.ids ?? void 0,\n\t\t\t\tlimit: query?.limit ?? 10,\n\t\t\t\toffset: query?.offset ?? 0,\n\t\t\t\tstatus: query?.status,\n\t\t\t\tsort_by: query?.sortBy,\n\t\t\t\tsort_order: query?.sortOrder,\n\t\t\t\tselect: query?.select ?? void 0,\n\t\t\t\tvalues: query?.values ?? void 0\n\t\t\t},\n\t\t\tsignal: query?.signal\n\t\t});\n\t}\n\t/**\n\t* Count threads matching filters.\n\t*\n\t* @param query.metadata Thread metadata to filter on.\n\t* @param query.values State values to filter on.\n\t* @param query.status Thread status to filter on.\n\t* @returns Number of threads matching the criteria.\n\t*/\n\tasync count(query) {\n\t\treturn this.fetch(`/threads/count`, {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: {\n\t\t\t\tmetadata: query?.metadata ?? void 0,\n\t\t\t\tvalues: query?.values ?? void 0,\n\t\t\t\tstatus: query?.status ?? void 0\n\t\t\t},\n\t\t\tsignal: query?.signal\n\t\t});\n\t}\n\t/**\n\t* Get state for a thread.\n\t*\n\t* @param threadId ID of the thread.\n\t* @returns Thread state.\n\t*/\n\tasync getState(threadId, checkpoint, options) {\n\t\tif (checkpoint != null) {\n\t\t\tif (typeof checkpoint !== \"string\") return this.fetch(`/threads/${threadId}/state/checkpoint`, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tjson: {\n\t\t\t\t\tcheckpoint,\n\t\t\t\t\tsubgraphs: options?.subgraphs\n\t\t\t\t},\n\t\t\t\tsignal: options?.signal\n\t\t\t});\n\t\t\treturn this.fetch(`/threads/${threadId}/state/${checkpoint}`, {\n\t\t\t\tparams: { subgraphs: options?.subgraphs },\n\t\t\t\tsignal: options?.signal\n\t\t\t});\n\t\t}\n\t\treturn this.fetch(`/threads/${threadId}/state`, {\n\t\t\tparams: { subgraphs: options?.subgraphs },\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t* Add state to a thread.\n\t*\n\t* @param threadId The ID of the thread.\n\t* @returns\n\t*/\n\tasync updateState(threadId, options) {\n\t\treturn this.fetch(`/threads/${threadId}/state`, {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: {\n\t\t\t\tvalues: options.values,\n\t\t\t\tcheckpoint_id: options.checkpointId,\n\t\t\t\tcheckpoint: options.checkpoint,\n\t\t\t\tas_node: options?.asNode\n\t\t\t},\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t* Patch the metadata of a thread.\n\t*\n\t* @param threadIdOrConfig Thread ID or config to patch the state of.\n\t* @param metadata Metadata to patch the state with.\n\t*/\n\tasync patchState(threadIdOrConfig, metadata, options) {\n\t\tlet threadId;\n\t\tif (typeof threadIdOrConfig !== \"string\") {\n\t\t\tif (typeof threadIdOrConfig.configurable?.thread_id !== \"string\") throw new Error(\"Thread ID is required when updating state with a config.\");\n\t\t\tthreadId = threadIdOrConfig.configurable.thread_id;\n\t\t} else threadId = threadIdOrConfig;\n\t\treturn this.fetch(`/threads/${threadId}/state`, {\n\t\t\tmethod: \"PATCH\",\n\t\t\tjson: { metadata },\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t* Get all past states for a thread.\n\t*\n\t* @param threadId ID of the thread.\n\t* @param options Additional options.\n\t* @returns List of thread states.\n\t*/\n\tasync getHistory(threadId, options) {\n\t\treturn this.fetch(`/threads/${threadId}/history`, {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: {\n\t\t\t\tlimit: options?.limit ?? 10,\n\t\t\t\tbefore: options?.before,\n\t\t\t\tmetadata: options?.metadata,\n\t\t\t\tcheckpoint: options?.checkpoint\n\t\t\t},\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\tasync *joinStream(threadId, options) {\n\t\tyield* this.streamWithRetry({\n\t\t\tendpoint: `/threads/${threadId}/stream`,\n\t\t\tmethod: \"GET\",\n\t\t\tsignal: options?.signal,\n\t\t\theaders: options?.lastEventId ? { \"Last-Event-ID\": options.lastEventId } : void 0,\n\t\t\tparams: options?.streamMode ? { stream_mode: options.streamMode } : void 0\n\t\t});\n\t}\n};\nvar RunsClient = class extends BaseClient {\n\t/**\n\t* Create a run and stream the results.\n\t*\n\t* @param threadId The ID of the thread.\n\t* @param assistantId Assistant ID to use for this run.\n\t* @param payload Payload for creating a run.\n\t*/\n\tasync *stream(threadId, assistantId, payload) {\n\t\tconst json = {\n\t\t\tinput: payload?.input,\n\t\t\tcommand: payload?.command,\n\t\t\tconfig: payload?.config,\n\t\t\tcontext: payload?.context,\n\t\t\tmetadata: payload?.metadata,\n\t\t\tstream_mode: payload?.streamMode,\n\t\t\tstream_subgraphs: payload?.streamSubgraphs,\n\t\t\tstream_resumable: payload?.streamResumable,\n\t\t\tfeedback_keys: payload?.feedbackKeys,\n\t\t\tassistant_id: assistantId,\n\t\t\tinterrupt_before: payload?.interruptBefore,\n\t\t\tinterrupt_after: payload?.interruptAfter,\n\t\t\tcheckpoint: payload?.checkpoint,\n\t\t\tcheckpoint_id: payload?.checkpointId,\n\t\t\twebhook: payload?.webhook,\n\t\t\tmultitask_strategy: payload?.multitaskStrategy,\n\t\t\ton_completion: payload?.onCompletion,\n\t\t\ton_disconnect: payload?.onDisconnect,\n\t\t\tafter_seconds: payload?.afterSeconds,\n\t\t\tif_not_exists: payload?.ifNotExists,\n\t\t\tcheckpoint_during: payload?.checkpointDuring,\n\t\t\tdurability: payload?.durability\n\t\t};\n\t\tyield* this.streamWithRetry({\n\t\t\tendpoint: threadId == null ? `/runs/stream` : `/threads/${threadId}/runs/stream`,\n\t\t\tmethod: \"POST\",\n\t\t\tjson,\n\t\t\tsignal: payload?.signal,\n\t\t\tonInitialResponse: (response) => {\n\t\t\t\tconst runMetadata = getRunMetadataFromResponse(response);\n\t\t\t\tif (runMetadata) payload?.onRunCreated?.(runMetadata);\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Create a run.\n\t*\n\t* @param threadId The ID of the thread.\n\t* @param assistantId Assistant ID to use for this run.\n\t* @param payload Payload for creating a run.\n\t* @returns The created run.\n\t*/\n\tasync create(threadId, assistantId, payload) {\n\t\tconst json = {\n\t\t\tinput: payload?.input,\n\t\t\tcommand: payload?.command,\n\t\t\tconfig: payload?.config,\n\t\t\tcontext: payload?.context,\n\t\t\tmetadata: payload?.metadata,\n\t\t\tstream_mode: payload?.streamMode,\n\t\t\tstream_subgraphs: payload?.streamSubgraphs,\n\t\t\tstream_resumable: payload?.streamResumable,\n\t\t\tassistant_id: assistantId,\n\t\t\tinterrupt_before: payload?.interruptBefore,\n\t\t\tinterrupt_after: payload?.interruptAfter,\n\t\t\twebhook: payload?.webhook,\n\t\t\tcheckpoint: payload?.checkpoint,\n\t\t\tcheckpoint_id: payload?.checkpointId,\n\t\t\tmultitask_strategy: payload?.multitaskStrategy,\n\t\t\tafter_seconds: payload?.afterSeconds,\n\t\t\tif_not_exists: payload?.ifNotExists,\n\t\t\tcheckpoint_during: payload?.checkpointDuring,\n\t\t\tdurability: payload?.durability,\n\t\t\tlangsmith_tracer: payload?._langsmithTracer ? {\n\t\t\t\tproject_name: payload?._langsmithTracer?.projectName,\n\t\t\t\texample_id: payload?._langsmithTracer?.exampleId\n\t\t\t} : void 0\n\t\t};\n\t\tconst endpoint = threadId === null ? \"/runs\" : `/threads/${threadId}/runs`;\n\t\tconst [run, response] = await this.fetch(endpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\tjson,\n\t\t\tsignal: payload?.signal,\n\t\t\twithResponse: true\n\t\t});\n\t\tconst runMetadata = getRunMetadataFromResponse(response);\n\t\tif (runMetadata) payload?.onRunCreated?.(runMetadata);\n\t\treturn run;\n\t}\n\t/**\n\t* Create a batch of stateless background runs.\n\t*\n\t* @param payloads An array of payloads for creating runs.\n\t* @returns An array of created runs.\n\t*/\n\tasync createBatch(payloads, options) {\n\t\tconst filteredPayloads = payloads.map((payload) => ({\n\t\t\t...payload,\n\t\t\tassistant_id: payload.assistantId\n\t\t})).map((payload) => {\n\t\t\treturn Object.fromEntries(Object.entries(payload).filter(([_, v]) => v !== void 0));\n\t\t});\n\t\treturn this.fetch(\"/runs/batch\", {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: filteredPayloads,\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t* Create a run and wait for it to complete.\n\t*\n\t* @param threadId The ID of the thread.\n\t* @param assistantId Assistant ID to use for this run.\n\t* @param payload Payload for creating a run.\n\t* @returns The last values chunk of the thread.\n\t*/\n\tasync wait(threadId, assistantId, payload) {\n\t\tconst json = {\n\t\t\tinput: payload?.input,\n\t\t\tcommand: payload?.command,\n\t\t\tconfig: payload?.config,\n\t\t\tcontext: payload?.context,\n\t\t\tmetadata: payload?.metadata,\n\t\t\tassistant_id: assistantId,\n\t\t\tinterrupt_before: payload?.interruptBefore,\n\t\t\tinterrupt_after: payload?.interruptAfter,\n\t\t\tcheckpoint: payload?.checkpoint,\n\t\t\tcheckpoint_id: payload?.checkpointId,\n\t\t\twebhook: payload?.webhook,\n\t\t\tmultitask_strategy: payload?.multitaskStrategy,\n\t\t\ton_completion: payload?.onCompletion,\n\t\t\ton_disconnect: payload?.onDisconnect,\n\t\t\tafter_seconds: payload?.afterSeconds,\n\t\t\tif_not_exists: payload?.ifNotExists,\n\t\t\tcheckpoint_during: payload?.checkpointDuring,\n\t\t\tdurability: payload?.durability,\n\t\t\tlangsmith_tracer: payload?._langsmithTracer ? {\n\t\t\t\tproject_name: payload?._langsmithTracer?.projectName,\n\t\t\t\texample_id: payload?._langsmithTracer?.exampleId\n\t\t\t} : void 0\n\t\t};\n\t\tconst endpoint = threadId == null ? `/runs/wait` : `/threads/${threadId}/runs/wait`;\n\t\tconst [run, response] = await this.fetch(endpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\tjson,\n\t\t\ttimeoutMs: null,\n\t\t\tsignal: payload?.signal,\n\t\t\twithResponse: true\n\t\t});\n\t\tconst runMetadata = getRunMetadataFromResponse(response);\n\t\tif (runMetadata) payload?.onRunCreated?.(runMetadata);\n\t\tif ((payload?.raiseError !== void 0 ? payload.raiseError : true) && \"__error__\" in run && typeof run.__error__ === \"object\" && run.__error__ && \"error\" in run.__error__ && \"message\" in run.__error__) throw new Error(`${run.__error__?.error}: ${run.__error__?.message}`);\n\t\treturn run;\n\t}\n\t/**\n\t* List all runs for a thread.\n\t*\n\t* @param threadId The ID of the thread.\n\t* @param options Filtering and pagination options.\n\t* @returns List of runs.\n\t*/\n\tasync list(threadId, options) {\n\t\treturn this.fetch(`/threads/${threadId}/runs`, {\n\t\t\tparams: {\n\t\t\t\tlimit: options?.limit ?? 10,\n\t\t\t\toffset: options?.offset ?? 0,\n\t\t\t\tstatus: options?.status ?? void 0,\n\t\t\t\tselect: options?.select ?? void 0\n\t\t\t},\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t* Get a run by ID.\n\t*\n\t* @param threadId The ID of the thread.\n\t* @param runId The ID of the run.\n\t* @returns The run.\n\t*/\n\tasync get(threadId, runId, options) {\n\t\treturn this.fetch(`/threads/${threadId}/runs/${runId}`, { signal: options?.signal });\n\t}\n\t/**\n\t* Cancel a run.\n\t*\n\t* @param threadId The ID of the thread.\n\t* @param runId The ID of the run.\n\t* @param wait Whether to block when canceling\n\t* @param action Action to take when cancelling the run. Possible values are `interrupt` or `rollback`. Default is `interrupt`.\n\t* @returns\n\t*/\n\tasync cancel(threadId, runId, wait = false, action = \"interrupt\", options = {}) {\n\t\treturn this.fetch(`/threads/${threadId}/runs/${runId}/cancel`, {\n\t\t\tmethod: \"POST\",\n\t\t\tparams: {\n\t\t\t\twait: wait ? \"1\" : \"0\",\n\t\t\t\taction\n\t\t\t},\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t* Block until a run is done.\n\t*\n\t* @param threadId The ID of the thread.\n\t* @param runId The ID of the run.\n\t* @returns\n\t*/\n\tasync join(threadId, runId, options) {\n\t\treturn this.fetch(`/threads/${threadId}/runs/${runId}/join`, {\n\t\t\ttimeoutMs: null,\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t* Stream output from a run in real-time, until the run is done.\n\t*\n\t* @param threadId The ID of the thread. Can be set to `null` | `undefined` for stateless runs.\n\t* @param runId The ID of the run.\n\t* @param options Additional options for controlling the stream behavior:\n\t* - signal: An AbortSignal that can be used to cancel the stream request\n\t* - lastEventId: The ID of the last event received. Can be used to reconnect to a stream without losing events.\n\t* - cancelOnDisconnect: When true, automatically cancels the run if the client disconnects from the stream\n\t* - streamMode: Controls what types of events to receive from the stream (can be a single mode or array of modes)\n\t* Must be a subset of the stream modes passed when creating the run. Background runs default to having the union of all\n\t* stream modes enabled.\n\t* @returns An async generator yielding stream parts.\n\t*/\n\tasync *joinStream(threadId, runId, options) {\n\t\tconst opts = typeof options === \"object\" && options != null && options instanceof AbortSignal ? { signal: options } : options;\n\t\tyield* this.streamWithRetry({\n\t\t\tendpoint: threadId != null ? `/threads/${threadId}/runs/${runId}/stream` : `/runs/${runId}/stream`,\n\t\t\tmethod: \"GET\",\n\t\t\tsignal: opts?.signal,\n\t\t\theaders: opts?.lastEventId ? { \"Last-Event-ID\": opts.lastEventId } : void 0,\n\t\t\tparams: {\n\t\t\t\tcancel_on_disconnect: opts?.cancelOnDisconnect ? \"1\" : \"0\",\n\t\t\t\tstream_mode: opts?.streamMode\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Delete a run.\n\t*\n\t* @param threadId The ID of the thread.\n\t* @param runId The ID of the run.\n\t* @returns\n\t*/\n\tasync delete(threadId, runId, options) {\n\t\treturn this.fetch(`/threads/${threadId}/runs/${runId}`, {\n\t\t\tmethod: \"DELETE\",\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n};\nvar StoreClient = class extends BaseClient {\n\t/**\n\t* Store or update an item.\n\t*\n\t* @param namespace A list of strings representing the namespace path.\n\t* @param key The unique identifier for the item within the namespace.\n\t* @param value A dictionary containing the item's data.\n\t* @param options.index Controls search indexing - null (use defaults), false (disable), or list of field paths to index.\n\t* @param options.ttl Optional time-to-live in minutes for the item, or null for no expiration.\n\t* @returns Promise<void>\n\t*\n\t* @example\n\t* ```typescript\n\t* await client.store.putItem(\n\t* [\"documents\", \"user123\"],\n\t* \"item456\",\n\t* { title: \"My Document\", content: \"Hello World\" },\n\t* { ttl: 60 } // expires in 60 minutes\n\t* );\n\t* ```\n\t*/\n\tasync putItem(namespace, key, value, options) {\n\t\tnamespace.forEach((label) => {\n\t\t\tif (label.includes(\".\")) throw new Error(`Invalid namespace label '${label}'. Namespace labels cannot contain periods ('.')`);\n\t\t});\n\t\tconst payload = {\n\t\t\tnamespace,\n\t\t\tkey,\n\t\t\tvalue,\n\t\t\tindex: options?.index,\n\t\t\tttl: options?.ttl\n\t\t};\n\t\treturn this.fetch(\"/store/items\", {\n\t\t\tmethod: \"PUT\",\n\t\t\tjson: payload,\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t* Retrieve a single item.\n\t*\n\t* @param namespace A list of strings representing the namespace path.\n\t* @param key The unique identifier for the item.\n\t* @param options.refreshTtl Whether to refresh the TTL on this read operation. If null, uses the store's default behavior.\n\t* @returns Promise<Item>\n\t*\n\t* @example\n\t* ```typescript\n\t* const item = await client.store.getItem(\n\t* [\"documents\", \"user123\"],\n\t* \"item456\",\n\t* { refreshTtl: true }\n\t* );\n\t* console.log(item);\n\t* // {\n\t* // namespace: [\"documents\", \"user123\"],\n\t* // key: \"item456\",\n\t* // value: { title: \"My Document\", content: \"Hello World\" },\n\t* // createdAt: \"2024-07-30T12:00:00Z\",\n\t* // updatedAt: \"2024-07-30T12:00:00Z\"\n\t* // }\n\t* ```\n\t*/\n\tasync getItem(namespace, key, options) {\n\t\tnamespace.forEach((label) => {\n\t\t\tif (label.includes(\".\")) throw new Error(`Invalid namespace label '${label}'. Namespace labels cannot contain periods ('.')`);\n\t\t});\n\t\tconst params = {\n\t\t\tnamespace: namespace.join(\".\"),\n\t\t\tkey\n\t\t};\n\t\tif (options?.refreshTtl !== void 0) params.refresh_ttl = options.refreshTtl;\n\t\tconst response = await this.fetch(\"/store/items\", {\n\t\t\tparams,\n\t\t\tsignal: options?.signal\n\t\t});\n\t\treturn response ? {\n\t\t\t...response,\n\t\t\tcreatedAt: response.created_at,\n\t\t\tupdatedAt: response.updated_at\n\t\t} : null;\n\t}\n\t/**\n\t* Delete an item.\n\t*\n\t* @param namespace A list of strings representing the namespace path.\n\t* @param key The unique identifier for the item.\n\t* @returns Promise<void>\n\t*/\n\tasync deleteItem(namespace, key, options) {\n\t\tnamespace.forEach((label) => {\n\t\t\tif (label.includes(\".\")) throw new Error(`Invalid namespace label '${label}'. Namespace labels cannot contain periods ('.')`);\n\t\t});\n\t\treturn this.fetch(\"/store/items\", {\n\t\t\tmethod: \"DELETE\",\n\t\t\tjson: {\n\t\t\t\tnamespace,\n\t\t\t\tkey\n\t\t\t},\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n\t/**\n\t* Search for items within a namespace prefix.\n\t*\n\t* @param namespacePrefix List of strings representing the namespace prefix.\n\t* @param options.filter Optional dictionary of key-value pairs to filter results.\n\t* @param options.limit Maximum number of items to return (default is 10).\n\t* @param options.offset Number of items to skip before returning results (default is 0).\n\t* @param options.query Optional search query.\n\t* @param options.refreshTtl Whether to refresh the TTL on items returned by this search. If null, uses the store's default behavior.\n\t* @returns Promise<SearchItemsResponse>\n\t*\n\t* @example\n\t* ```typescript\n\t* const results = await client.store.searchItems(\n\t* [\"documents\"],\n\t* {\n\t* filter: { author: \"John Doe\" },\n\t* limit: 5,\n\t* refreshTtl: true\n\t* }\n\t* );\n\t* console.log(results);\n\t* // {\n\t* // items: [\n\t* // {\n\t* // namespace: [\"documents\", \"user123\"],\n\t* // key: \"item789\",\n\t* // value: { title: \"Another Document\", author: \"John Doe\" },\n\t* // createdAt: \"2024-07-30T12:00:00Z\",\n\t* // updatedAt: \"2024-07-30T12:00:00Z\"\n\t* // },\n\t* // // ... additional items ...\n\t* // ]\n\t* // }\n\t* ```\n\t*/\n\tasync searchItems(namespacePrefix, options) {\n\t\tconst payload = {\n\t\t\tnamespace_prefix: namespacePrefix,\n\t\t\tfilter: options?.filter,\n\t\t\tlimit: options?.limit ?? 10,\n\t\t\toffset: options?.offset ?? 0,\n\t\t\tquery: options?.query,\n\t\t\trefresh_ttl: options?.refreshTtl\n\t\t};\n\t\treturn { items: (await this.fetch(\"/store/items/search\", {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: payload,\n\t\t\tsignal: options?.signal\n\t\t})).items.map((item) => ({\n\t\t\t...item,\n\t\t\tcreatedAt: item.created_at,\n\t\t\tupdatedAt: item.updated_at\n\t\t})) };\n\t}\n\t/**\n\t* List namespaces with optional match conditions.\n\t*\n\t* @param options.prefix Optional list of strings representing the prefix to filter namespaces.\n\t* @param options.suffix Optional list of strings representing the suffix to filter namespaces.\n\t* @param options.maxDepth Optional integer specifying the maximum depth of namespaces to return.\n\t* @param options.limit Maximum number of namespaces to return (default is 100).\n\t* @param options.offset Number of namespaces to skip before returning results (default is 0).\n\t* @returns Promise<ListNamespaceResponse>\n\t*/\n\tasync listNamespaces(options) {\n\t\tconst payload = {\n\t\t\tprefix: options?.prefix,\n\t\t\tsuffix: options?.suffix,\n\t\t\tmax_depth: options?.maxDepth,\n\t\t\tlimit: options?.limit ?? 100,\n\t\t\toffset: options?.offset ?? 0\n\t\t};\n\t\treturn this.fetch(\"/store/namespaces\", {\n\t\t\tmethod: \"POST\",\n\t\t\tjson: payload,\n\t\t\tsignal: options?.signal\n\t\t});\n\t}\n};\nvar UiClient = class UiClient extends BaseClient {\n\tstatic promiseCache = {};\n\tstatic getOrCached(key, fn) {\n\t\tif (UiClient.promiseCache[key] != null) return UiClient.promiseCache[key];\n\t\tconst promise = fn();\n\t\tUiClient.promiseCache[key] = promise;\n\t\treturn promise;\n\t}\n\tasync getComponent(assistantId, agentName) {\n\t\treturn UiClient.getOrCached(`${this.apiUrl}-${assistantId}-${agentName}`, async () => {\n\t\t\tlet [url, init] = this.prepareFetchOptions(`/ui/${assistantId}`, {\n\t\t\t\theaders: {\n\t\t\t\t\tAccept: \"text/html\",\n\t\t\t\t\t\"Content-Type\": \"application/json\"\n\t\t\t\t},\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tjson: { name: agentName }\n\t\t\t});\n\t\t\tif (this.onRequest != null) init = await this.onRequest(url, init);\n\t\t\treturn (await this.asyncCaller.fetch(url, init)).text();\n\t\t});\n\t}\n};\nvar Client = class {\n\t/**\n\t* The client for interacting with assistants.\n\t*/\n\tassistants;\n\t/**\n\t* The client for interacting with threads.\n\t*/\n\tthreads;\n\t/**\n\t* The client for interacting with runs.\n\t*/\n\truns;\n\t/**\n\t* The client for interacting with cron runs.\n\t*/\n\tcrons;\n\t/**\n\t* The client for interacting with the KV store.\n\t*/\n\tstore;\n\t/**\n\t* The client for interacting with the UI.\n\t* @internal Used by LoadExternalComponent and the API might change in the future.\n\t*/\n\t\"~ui\";\n\t/**\n\t* @internal Used to obtain a stable key representing the client.\n\t*/\n\t\"~configHash\";\n\tconstructor(config) {\n\t\tthis[\"~configHash\"] = JSON.stringify({\n\t\t\tapiUrl: config?.apiUrl,\n\t\t\tapiKey: config?.apiKey,\n\t\t\ttimeoutMs: config?.timeoutMs,\n\t\t\tdefaultHeaders: config?.defaultHeaders,\n\t\t\tmaxConcurrency: config?.callerOptions?.maxConcurrency,\n\t\t\tmaxRetries: config?.callerOptions?.maxRetries,\n\t\t\tcallbacks: {\n\t\t\t\tonFailedResponseHook: config?.callerOptions?.onFailedResponseHook != null,\n\t\t\t\tonRequest: config?.onRequest != null,\n\t\t\t\tfetch: config?.callerOptions?.fetch != null\n\t\t\t}\n\t\t});\n\t\tthis.assistants = new AssistantsClient(config);\n\t\tthis.threads = new ThreadsClient(config);\n\t\tthis.runs = new RunsClient(config);\n\t\tthis.crons = new CronsClient(config);\n\t\tthis.store = new StoreClient(config);\n\t\tthis[\"~ui\"] = new UiClient(config);\n\t}\n};\n/**\n* @internal Used to obtain a stable key representing the client.\n*/\nfunction getClientConfigHash(client) {\n\treturn client[\"~configHash\"];\n}\n\n//#endregion\nexport { AssistantsClient, Client, CronsClient, RunsClient, StoreClient, ThreadsClient, getApiKey, getClientConfigHash };\n//# sourceMappingURL=client.js.map"],"names":["UiClient"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es33.js","sources":["../src/components/messages/AgentMarkdown.tsx"],"sourcesContent":["import ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkBreaks from \"remark-breaks\";\nimport remarkMath from \"remark-math\";\nimport rehypeHighlight from \"rehype-highlight\";\n// import \"highlight.js/styles/github.css\";\n\nexport function AgentMarkdown({ content }: { content: string }) {\n return (\n <ReactMarkdown\n remarkPlugins={[remarkGfm, remarkBreaks, remarkMath]}\n rehypePlugins={[rehypeHighlight]}\n >\n {content}\n </ReactMarkdown>\n );\n}\n"],"names":[],"mappings":";;;;;;AAOO,SAAS,cAAc,EAAE,WAAgC;AAC9D,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAe,CAAC,WAAW,cAAc,UAAU;AAAA,MACnD,eAAe,CAAC,eAAe;AAAA,MAE9B,UAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1,11 +1,122 @@
1
- function unique(array) {
2
- return [...new Set(array)];
1
+ const CR = "\r".charCodeAt(0);
2
+ const LF = "\n".charCodeAt(0);
3
+ const NULL = "\0".charCodeAt(0);
4
+ const COLON = ":".charCodeAt(0);
5
+ const SPACE = " ".charCodeAt(0);
6
+ const TRAILING_NEWLINE = [CR, LF];
7
+ function BytesLineDecoder() {
8
+ let buffer = [];
9
+ let trailingCr = false;
10
+ return new TransformStream({
11
+ start() {
12
+ buffer = [];
13
+ trailingCr = false;
14
+ },
15
+ transform(chunk, controller) {
16
+ let text = chunk;
17
+ if (trailingCr) {
18
+ text = joinArrays([[CR], text]);
19
+ trailingCr = false;
20
+ }
21
+ if (text.length > 0 && text.at(-1) === CR) {
22
+ trailingCr = true;
23
+ text = text.subarray(0, -1);
24
+ }
25
+ if (!text.length) return;
26
+ const trailingNewline = TRAILING_NEWLINE.includes(text.at(-1));
27
+ const lastIdx = text.length - 1;
28
+ const { lines } = text.reduce((acc, cur, idx) => {
29
+ if (acc.from > idx) return acc;
30
+ if (cur === CR || cur === LF) {
31
+ acc.lines.push(text.subarray(acc.from, idx));
32
+ if (cur === CR && text[idx + 1] === LF) acc.from = idx + 2;
33
+ else acc.from = idx + 1;
34
+ }
35
+ if (idx === lastIdx && acc.from <= lastIdx) acc.lines.push(text.subarray(acc.from));
36
+ return acc;
37
+ }, {
38
+ lines: [],
39
+ from: 0
40
+ });
41
+ if (lines.length === 1 && !trailingNewline) {
42
+ buffer.push(lines[0]);
43
+ return;
44
+ }
45
+ if (buffer.length) {
46
+ buffer.push(lines[0]);
47
+ lines[0] = joinArrays(buffer);
48
+ buffer = [];
49
+ }
50
+ if (!trailingNewline) {
51
+ if (lines.length) buffer = [lines.pop()];
52
+ }
53
+ for (const line of lines) controller.enqueue(line);
54
+ },
55
+ flush(controller) {
56
+ if (buffer.length) controller.enqueue(joinArrays(buffer));
57
+ }
58
+ });
3
59
  }
4
- function findLast(array, predicate) {
5
- for (let i = array.length - 1; i >= 0; i -= 1) if (predicate(array[i])) return array[i];
60
+ function SSEDecoder() {
61
+ let event = "";
62
+ let data = [];
63
+ let lastEventId = "";
64
+ let retry = null;
65
+ const decoder = new TextDecoder();
66
+ return new TransformStream({
67
+ transform(chunk, controller) {
68
+ if (!chunk.length) {
69
+ if (!event && !data.length && !lastEventId && retry == null) return;
70
+ const sse = {
71
+ id: lastEventId || void 0,
72
+ event,
73
+ data: data.length ? decodeArraysToJson(decoder, data) : null
74
+ };
75
+ event = "";
76
+ data = [];
77
+ retry = null;
78
+ controller.enqueue(sse);
79
+ return;
80
+ }
81
+ if (chunk[0] === COLON) return;
82
+ const sepIdx = chunk.indexOf(COLON);
83
+ if (sepIdx === -1) return;
84
+ const fieldName = decoder.decode(chunk.subarray(0, sepIdx));
85
+ let value = chunk.subarray(sepIdx + 1);
86
+ if (value[0] === SPACE) value = value.subarray(1);
87
+ if (fieldName === "event") event = decoder.decode(value);
88
+ else if (fieldName === "data") data.push(value);
89
+ else if (fieldName === "id") {
90
+ if (value.indexOf(NULL) === -1) lastEventId = decoder.decode(value);
91
+ } else if (fieldName === "retry") {
92
+ const retryNum = Number.parseInt(decoder.decode(value), 10);
93
+ if (!Number.isNaN(retryNum)) retry = retryNum;
94
+ }
95
+ },
96
+ flush(controller) {
97
+ if (event) controller.enqueue({
98
+ id: lastEventId || void 0,
99
+ event,
100
+ data: data.length ? decodeArraysToJson(decoder, data) : null
101
+ });
102
+ }
103
+ });
104
+ }
105
+ function joinArrays(data) {
106
+ const totalLength = data.reduce((acc, curr) => acc + curr.length, 0);
107
+ const merged = new Uint8Array(totalLength);
108
+ let offset = 0;
109
+ for (const c of data) {
110
+ merged.set(c, offset);
111
+ offset += c.length;
112
+ }
113
+ return merged;
114
+ }
115
+ function decodeArraysToJson(decoder, data) {
116
+ return JSON.parse(decoder.decode(joinArrays(data)));
6
117
  }
7
118
  export {
8
- findLast,
9
- unique
119
+ BytesLineDecoder,
120
+ SSEDecoder
10
121
  };
11
122
  //# sourceMappingURL=index.es34.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es34.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/ui/utils.js"],"sourcesContent":["//#region src/ui/utils.ts\nfunction unique(array) {\n\treturn [...new Set(array)];\n}\nfunction findLast(array, predicate) {\n\tfor (let i = array.length - 1; i >= 0; i -= 1) if (predicate(array[i])) return array[i];\n}\n\n//#endregion\nexport { findLast, unique };\n//# sourceMappingURL=utils.js.map"],"names":[],"mappings":"AACA,SAAS,OAAO,OAAO;AACtB,SAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC;AAC1B;AACA,SAAS,SAAS,OAAO,WAAW;AACnC,WAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,EAAG,KAAI,UAAU,MAAM,CAAC,CAAC,EAAG,QAAO,MAAM,CAAC;AACvF;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es34.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/utils/sse.js"],"sourcesContent":["//#region src/utils/sse.ts\nconst CR = \"\\r\".charCodeAt(0);\nconst LF = \"\\n\".charCodeAt(0);\nconst NULL = \"\\0\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst TRAILING_NEWLINE = [CR, LF];\nfunction BytesLineDecoder() {\n\tlet buffer = [];\n\tlet trailingCr = false;\n\treturn new TransformStream({\n\t\tstart() {\n\t\t\tbuffer = [];\n\t\t\ttrailingCr = false;\n\t\t},\n\t\ttransform(chunk, controller) {\n\t\t\tlet text = chunk;\n\t\t\tif (trailingCr) {\n\t\t\t\ttext = joinArrays([[CR], text]);\n\t\t\t\ttrailingCr = false;\n\t\t\t}\n\t\t\tif (text.length > 0 && text.at(-1) === CR) {\n\t\t\t\ttrailingCr = true;\n\t\t\t\ttext = text.subarray(0, -1);\n\t\t\t}\n\t\t\tif (!text.length) return;\n\t\t\tconst trailingNewline = TRAILING_NEWLINE.includes(text.at(-1));\n\t\t\tconst lastIdx = text.length - 1;\n\t\t\tconst { lines } = text.reduce((acc, cur, idx) => {\n\t\t\t\tif (acc.from > idx) return acc;\n\t\t\t\tif (cur === CR || cur === LF) {\n\t\t\t\t\tacc.lines.push(text.subarray(acc.from, idx));\n\t\t\t\t\tif (cur === CR && text[idx + 1] === LF) acc.from = idx + 2;\n\t\t\t\t\telse acc.from = idx + 1;\n\t\t\t\t}\n\t\t\t\tif (idx === lastIdx && acc.from <= lastIdx) acc.lines.push(text.subarray(acc.from));\n\t\t\t\treturn acc;\n\t\t\t}, {\n\t\t\t\tlines: [],\n\t\t\t\tfrom: 0\n\t\t\t});\n\t\t\tif (lines.length === 1 && !trailingNewline) {\n\t\t\t\tbuffer.push(lines[0]);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (buffer.length) {\n\t\t\t\tbuffer.push(lines[0]);\n\t\t\t\tlines[0] = joinArrays(buffer);\n\t\t\t\tbuffer = [];\n\t\t\t}\n\t\t\tif (!trailingNewline) {\n\t\t\t\tif (lines.length) buffer = [lines.pop()];\n\t\t\t}\n\t\t\tfor (const line of lines) controller.enqueue(line);\n\t\t},\n\t\tflush(controller) {\n\t\t\tif (buffer.length) controller.enqueue(joinArrays(buffer));\n\t\t}\n\t});\n}\nfunction SSEDecoder() {\n\tlet event = \"\";\n\tlet data = [];\n\tlet lastEventId = \"\";\n\tlet retry = null;\n\tconst decoder = new TextDecoder();\n\treturn new TransformStream({\n\t\ttransform(chunk, controller) {\n\t\t\tif (!chunk.length) {\n\t\t\t\tif (!event && !data.length && !lastEventId && retry == null) return;\n\t\t\t\tconst sse = {\n\t\t\t\t\tid: lastEventId || void 0,\n\t\t\t\t\tevent,\n\t\t\t\t\tdata: data.length ? decodeArraysToJson(decoder, data) : null\n\t\t\t\t};\n\t\t\t\tevent = \"\";\n\t\t\t\tdata = [];\n\t\t\t\tretry = null;\n\t\t\t\tcontroller.enqueue(sse);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (chunk[0] === COLON) return;\n\t\t\tconst sepIdx = chunk.indexOf(COLON);\n\t\t\tif (sepIdx === -1) return;\n\t\t\tconst fieldName = decoder.decode(chunk.subarray(0, sepIdx));\n\t\t\tlet value = chunk.subarray(sepIdx + 1);\n\t\t\tif (value[0] === SPACE) value = value.subarray(1);\n\t\t\tif (fieldName === \"event\") event = decoder.decode(value);\n\t\t\telse if (fieldName === \"data\") data.push(value);\n\t\t\telse if (fieldName === \"id\") {\n\t\t\t\tif (value.indexOf(NULL) === -1) lastEventId = decoder.decode(value);\n\t\t\t} else if (fieldName === \"retry\") {\n\t\t\t\tconst retryNum = Number.parseInt(decoder.decode(value), 10);\n\t\t\t\tif (!Number.isNaN(retryNum)) retry = retryNum;\n\t\t\t}\n\t\t},\n\t\tflush(controller) {\n\t\t\tif (event) controller.enqueue({\n\t\t\t\tid: lastEventId || void 0,\n\t\t\t\tevent,\n\t\t\t\tdata: data.length ? decodeArraysToJson(decoder, data) : null\n\t\t\t});\n\t\t}\n\t});\n}\nfunction joinArrays(data) {\n\tconst totalLength = data.reduce((acc, curr) => acc + curr.length, 0);\n\tconst merged = new Uint8Array(totalLength);\n\tlet offset = 0;\n\tfor (const c of data) {\n\t\tmerged.set(c, offset);\n\t\toffset += c.length;\n\t}\n\treturn merged;\n}\nfunction decodeArraysToJson(decoder, data) {\n\treturn JSON.parse(decoder.decode(joinArrays(data)));\n}\n\n//#endregion\nexport { BytesLineDecoder, SSEDecoder };\n//# sourceMappingURL=sse.js.map"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,13 +1,75 @@
1
- var StreamError = class extends Error {
2
- constructor(data) {
3
- super(data.message);
4
- this.name = data.name ?? data.error ?? "StreamError";
5
- }
6
- static isStructuredError(error) {
7
- return typeof error === "object" && error != null && "message" in error;
1
+ import { isNetworkError } from "./index.es36.js";
2
+ var MaxReconnectAttemptsError = class extends Error {
3
+ constructor(maxAttempts, cause) {
4
+ super(`Exceeded maximum SSE reconnection attempts (${maxAttempts})`);
5
+ this.name = "MaxReconnectAttemptsError";
6
+ this.cause = cause;
8
7
  }
9
8
  };
9
+ async function* streamWithRetry(makeRequest, options = {}) {
10
+ const maxRetries = options.maxRetries ?? 5;
11
+ let attempt = 0;
12
+ let lastEventId;
13
+ let reconnectPath;
14
+ while (true) {
15
+ let shouldRetry = false;
16
+ let lastError;
17
+ let reader;
18
+ try {
19
+ if (options.signal?.aborted) return;
20
+ const { response, stream } = await makeRequest(reconnectPath ? {
21
+ lastEventId,
22
+ reconnectPath
23
+ } : void 0);
24
+ const locationHeader = response.headers.get("location");
25
+ if (locationHeader) reconnectPath = locationHeader;
26
+ const contentType = response.headers.get("content-type")?.split(";")[0];
27
+ if (contentType && !contentType.includes("text/event-stream")) throw new Error(`Expected response header Content-Type to contain 'text/event-stream', got '${contentType}'`);
28
+ reader = stream.getReader();
29
+ try {
30
+ while (true) {
31
+ if (options.signal?.aborted) {
32
+ await reader.cancel();
33
+ return;
34
+ }
35
+ const { done, value } = await reader.read();
36
+ if (done) break;
37
+ if (value.id) lastEventId = value.id;
38
+ yield value;
39
+ }
40
+ break;
41
+ } catch (error) {
42
+ if (reconnectPath && !options.signal?.aborted) shouldRetry = true;
43
+ else throw error;
44
+ } finally {
45
+ if (reader) try {
46
+ reader.releaseLock();
47
+ } catch {
48
+ }
49
+ }
50
+ } catch (error) {
51
+ lastError = error;
52
+ if (isNetworkError(error) && reconnectPath && !options.signal?.aborted) shouldRetry = true;
53
+ else throw error;
54
+ }
55
+ if (shouldRetry) {
56
+ attempt += 1;
57
+ if (attempt > maxRetries) throw new MaxReconnectAttemptsError(maxRetries, lastError);
58
+ options.onReconnect?.({
59
+ attempt,
60
+ lastEventId,
61
+ cause: lastError
62
+ });
63
+ const delay = Math.min(1e3 * 2 ** (attempt - 1), 5e3) + Math.random() * 1e3;
64
+ await new Promise((resolve) => {
65
+ setTimeout(resolve, delay);
66
+ });
67
+ continue;
68
+ }
69
+ break;
70
+ }
71
+ }
10
72
  export {
11
- StreamError
73
+ streamWithRetry
12
74
  };
13
75
  //# sourceMappingURL=index.es35.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es35.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/ui/errors.js"],"sourcesContent":["//#region src/ui/errors.ts\nvar StreamError = class extends Error {\n\tconstructor(data) {\n\t\tsuper(data.message);\n\t\tthis.name = data.name ?? data.error ?? \"StreamError\";\n\t}\n\tstatic isStructuredError(error) {\n\t\treturn typeof error === \"object\" && error != null && \"message\" in error;\n\t}\n};\n\n//#endregion\nexport { StreamError };\n//# sourceMappingURL=errors.js.map"],"names":[],"mappings":"AACG,IAAC,cAAc,cAAc,MAAM;AAAA,EACrC,YAAY,MAAM;AACjB,UAAM,KAAK,OAAO;AAClB,SAAK,OAAO,KAAK,QAAQ,KAAK,SAAS;AAAA,EACxC;AAAA,EACA,OAAO,kBAAkB,OAAO;AAC/B,WAAO,OAAO,UAAU,YAAY,SAAS,QAAQ,aAAa;AAAA,EACnE;AACD;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es35.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/utils/stream.js"],"sourcesContent":["import { isNetworkError } from \"./error.js\";\n\n//#region src/utils/stream.ts\n/**\n* Error thrown when maximum reconnection attempts are exceeded.\n*/\nvar MaxReconnectAttemptsError = class extends Error {\n\tconstructor(maxAttempts, cause) {\n\t\tsuper(`Exceeded maximum SSE reconnection attempts (${maxAttempts})`);\n\t\tthis.name = \"MaxReconnectAttemptsError\";\n\t\tthis.cause = cause;\n\t}\n};\n/**\n* Stream with automatic retry logic for SSE connections.\n* Implements reconnection behavior similar to the Python SDK.\n*\n* @param makeRequest Function to make requests. When `params` is undefined/empty, it's the initial request.\n* When `params.reconnectPath` is provided, it's a reconnection request.\n* @param options Configuration options\n* @returns AsyncGenerator yielding stream events\n*/\nasync function* streamWithRetry(makeRequest, options = {}) {\n\tconst maxRetries = options.maxRetries ?? 5;\n\tlet attempt = 0;\n\tlet lastEventId;\n\tlet reconnectPath;\n\twhile (true) {\n\t\tlet shouldRetry = false;\n\t\tlet lastError;\n\t\tlet reader;\n\t\ttry {\n\t\t\tif (options.signal?.aborted) return;\n\t\t\tconst { response, stream } = await makeRequest(reconnectPath ? {\n\t\t\t\tlastEventId,\n\t\t\t\treconnectPath\n\t\t\t} : void 0);\n\t\t\tconst locationHeader = response.headers.get(\"location\");\n\t\t\tif (locationHeader) reconnectPath = locationHeader;\n\t\t\tconst contentType = response.headers.get(\"content-type\")?.split(\";\")[0];\n\t\t\tif (contentType && !contentType.includes(\"text/event-stream\")) throw new Error(`Expected response header Content-Type to contain 'text/event-stream', got '${contentType}'`);\n\t\t\treader = stream.getReader();\n\t\t\ttry {\n\t\t\t\twhile (true) {\n\t\t\t\t\tif (options.signal?.aborted) {\n\t\t\t\t\t\tawait reader.cancel();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\tif (done) break;\n\t\t\t\t\tif (value.id) lastEventId = value.id;\n\t\t\t\t\tyield value;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t} catch (error) {\n\t\t\t\tif (reconnectPath && !options.signal?.aborted) shouldRetry = true;\n\t\t\t\telse throw error;\n\t\t\t} finally {\n\t\t\t\tif (reader) try {\n\t\t\t\t\treader.releaseLock();\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlastError = error;\n\t\t\tif (isNetworkError(error) && reconnectPath && !options.signal?.aborted) shouldRetry = true;\n\t\t\telse throw error;\n\t\t}\n\t\tif (shouldRetry) {\n\t\t\tattempt += 1;\n\t\t\tif (attempt > maxRetries) throw new MaxReconnectAttemptsError(maxRetries, lastError);\n\t\t\toptions.onReconnect?.({\n\t\t\t\tattempt,\n\t\t\t\tlastEventId,\n\t\t\t\tcause: lastError\n\t\t\t});\n\t\t\tconst delay = Math.min(1e3 * 2 ** (attempt - 1), 5e3) + Math.random() * 1e3;\n\t\t\tawait new Promise((resolve) => {\n\t\t\t\tsetTimeout(resolve, delay);\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tbreak;\n\t}\n}\nvar IterableReadableStream = class IterableReadableStream extends ReadableStream {\n\treader;\n\tensureReader() {\n\t\tif (!this.reader) this.reader = this.getReader();\n\t}\n\tasync next() {\n\t\tthis.ensureReader();\n\t\ttry {\n\t\t\tconst result = await this.reader.read();\n\t\t\tif (result.done) {\n\t\t\t\tthis.reader.releaseLock();\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: void 0\n\t\t\t\t};\n\t\t\t} else return {\n\t\t\t\tdone: false,\n\t\t\t\tvalue: result.value\n\t\t\t};\n\t\t} catch (e) {\n\t\t\tthis.reader.releaseLock();\n\t\t\tthrow e;\n\t\t}\n\t}\n\tasync return() {\n\t\tthis.ensureReader();\n\t\tif (this.locked) {\n\t\t\tconst cancelPromise = this.reader.cancel();\n\t\t\tthis.reader.releaseLock();\n\t\t\tawait cancelPromise;\n\t\t}\n\t\treturn {\n\t\t\tdone: true,\n\t\t\tvalue: void 0\n\t\t};\n\t}\n\tasync throw(e) {\n\t\tthis.ensureReader();\n\t\tif (this.locked) {\n\t\t\tconst cancelPromise = this.reader.cancel();\n\t\t\tthis.reader.releaseLock();\n\t\t\tawait cancelPromise;\n\t\t}\n\t\tthrow e;\n\t}\n\tasync [Symbol.asyncDispose]() {\n\t\tawait this.return();\n\t}\n\t[Symbol.asyncIterator]() {\n\t\treturn this;\n\t}\n\tstatic fromReadableStream(stream) {\n\t\tconst reader = stream.getReader();\n\t\treturn new IterableReadableStream({\n\t\t\tstart(controller) {\n\t\t\t\treturn pump();\n\t\t\t\tfunction pump() {\n\t\t\t\t\treturn reader.read().then(({ done, value }) => {\n\t\t\t\t\t\tif (done) {\n\t\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontroller.enqueue(value);\n\t\t\t\t\t\treturn pump();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tcancel() {\n\t\t\t\treader.releaseLock();\n\t\t\t}\n\t\t});\n\t}\n\tstatic fromAsyncGenerator(generator) {\n\t\treturn new IterableReadableStream({\n\t\t\tasync pull(controller) {\n\t\t\t\tconst { value, done } = await generator.next();\n\t\t\t\tif (done) controller.close();\n\t\t\t\tcontroller.enqueue(value);\n\t\t\t},\n\t\t\tasync cancel(reason) {\n\t\t\t\tawait generator.return(reason);\n\t\t\t}\n\t\t});\n\t}\n};\n\n//#endregion\nexport { IterableReadableStream, streamWithRetry };\n//# sourceMappingURL=stream.js.map"],"names":[],"mappings":";AAMA,IAAI,4BAA4B,cAAc,MAAM;AAAA,EACnD,YAAY,aAAa,OAAO;AAC/B,UAAM,+CAA+C,WAAW,GAAG;AACnE,SAAK,OAAO;AACZ,SAAK,QAAQ;AAAA,EACd;AACD;AAUA,gBAAgB,gBAAgB,aAAa,UAAU,IAAI;AAC1D,QAAM,aAAa,QAAQ,cAAc;AACzC,MAAI,UAAU;AACd,MAAI;AACJ,MAAI;AACJ,SAAO,MAAM;AACZ,QAAI,cAAc;AAClB,QAAI;AACJ,QAAI;AACJ,QAAI;AACH,UAAI,QAAQ,QAAQ,QAAS;AAC7B,YAAM,EAAE,UAAU,OAAM,IAAK,MAAM,YAAY,gBAAgB;AAAA,QAC9D;AAAA,QACA;AAAA,MACJ,IAAO,MAAM;AACV,YAAM,iBAAiB,SAAS,QAAQ,IAAI,UAAU;AACtD,UAAI,eAAgB,iBAAgB;AACpC,YAAM,cAAc,SAAS,QAAQ,IAAI,cAAc,GAAG,MAAM,GAAG,EAAE,CAAC;AACtE,UAAI,eAAe,CAAC,YAAY,SAAS,mBAAmB,EAAG,OAAM,IAAI,MAAM,8EAA8E,WAAW,GAAG;AAC3K,eAAS,OAAO,UAAS;AACzB,UAAI;AACH,eAAO,MAAM;AACZ,cAAI,QAAQ,QAAQ,SAAS;AAC5B,kBAAM,OAAO,OAAM;AACnB;AAAA,UACD;AACA,gBAAM,EAAE,MAAM,MAAK,IAAK,MAAM,OAAO,KAAI;AACzC,cAAI,KAAM;AACV,cAAI,MAAM,GAAI,eAAc,MAAM;AAClC,gBAAM;AAAA,QACP;AACA;AAAA,MACD,SAAS,OAAO;AACf,YAAI,iBAAiB,CAAC,QAAQ,QAAQ,QAAS,eAAc;AAAA,YACxD,OAAM;AAAA,MACZ,UAAC;AACA,YAAI,OAAQ,KAAI;AACf,iBAAO,YAAW;AAAA,QACnB,QAAQ;AAAA,QAAC;AAAA,MACV;AAAA,IACD,SAAS,OAAO;AACf,kBAAY;AACZ,UAAI,eAAe,KAAK,KAAK,iBAAiB,CAAC,QAAQ,QAAQ,QAAS,eAAc;AAAA,UACjF,OAAM;AAAA,IACZ;AACA,QAAI,aAAa;AAChB,iBAAW;AACX,UAAI,UAAU,WAAY,OAAM,IAAI,0BAA0B,YAAY,SAAS;AACnF,cAAQ,cAAc;AAAA,QACrB;AAAA,QACA;AAAA,QACA,OAAO;AAAA,MACX,CAAI;AACD,YAAM,QAAQ,KAAK,IAAI,MAAM,MAAM,UAAU,IAAI,GAAG,IAAI,KAAK,OAAM,IAAK;AACxE,YAAM,IAAI,QAAQ,CAAC,YAAY;AAC9B,mBAAW,SAAS,KAAK;AAAA,MAC1B,CAAC;AACD;AAAA,IACD;AACA;AAAA,EACD;AACD;","x_google_ignoreList":[0]}
@@ -1,151 +1,22 @@
1
- function getBranchSequence(history) {
2
- const nodeIds = /* @__PURE__ */ new Set();
3
- const childrenMap = {};
4
- if (history.length <= 1) return {
5
- rootSequence: {
6
- type: "sequence",
7
- items: history.map((value) => ({
8
- type: "node",
9
- value,
10
- path: []
11
- }))
12
- },
13
- paths: []
14
- };
15
- history.forEach((state) => {
16
- const checkpointId = state.parent_checkpoint?.checkpoint_id ?? "$";
17
- childrenMap[checkpointId] ??= [];
18
- childrenMap[checkpointId].push(state);
19
- if (state.checkpoint?.checkpoint_id != null) nodeIds.add(state.checkpoint.checkpoint_id);
20
- });
21
- const maxId = (...ids) => ids.filter((i) => i != null).sort((a, b) => a.localeCompare(b)).at(-1);
22
- const lastOrphanedNode = childrenMap.$ == null ? Object.keys(childrenMap).filter((parentId) => !nodeIds.has(parentId)).map((parentId) => {
23
- const queue$1 = [parentId];
24
- const seen = /* @__PURE__ */ new Set();
25
- let lastId = parentId;
26
- while (queue$1.length > 0) {
27
- const current = queue$1.shift();
28
- if (seen.has(current)) continue;
29
- seen.add(current);
30
- const children = (childrenMap[current] ?? []).flatMap((i) => i.checkpoint?.checkpoint_id ?? []);
31
- lastId = maxId(lastId, ...children);
32
- queue$1.push(...children);
33
- }
34
- return {
35
- parentId,
36
- lastId
37
- };
38
- }).sort((a, b) => a.lastId.localeCompare(b.lastId)).at(-1)?.parentId : void 0;
39
- if (lastOrphanedNode != null) childrenMap.$ = childrenMap[lastOrphanedNode];
40
- const rootSequence = {
41
- type: "sequence",
42
- items: []
43
- };
44
- const queue = [{
45
- id: "$",
46
- sequence: rootSequence,
47
- path: []
48
- }];
49
- const paths = [];
50
- const visited = /* @__PURE__ */ new Set();
51
- while (queue.length > 0) {
52
- const task = queue.shift();
53
- if (visited.has(task.id)) continue;
54
- visited.add(task.id);
55
- const children = childrenMap[task.id];
56
- if (children == null || children.length === 0) continue;
57
- let fork;
58
- if (children.length > 1) {
59
- fork = {
60
- type: "fork",
61
- items: []
62
- };
63
- task.sequence.items.push(fork);
64
- }
65
- for (const value of children) {
66
- const id = value.checkpoint?.checkpoint_id;
67
- if (id == null) continue;
68
- let { sequence } = task;
69
- let { path } = task;
70
- if (fork != null) {
71
- sequence = {
72
- type: "sequence",
73
- items: []
74
- };
75
- fork.items.unshift(sequence);
76
- path = path.slice();
77
- path.push(id);
78
- paths.push(path);
79
- }
80
- sequence.items.push({
81
- type: "node",
82
- value,
83
- path
84
- });
85
- queue.push({
86
- id,
87
- sequence,
88
- path
89
- });
90
- }
91
- }
92
- return {
93
- rootSequence,
94
- paths
95
- };
96
- }
97
- const PATH_SEP = ">";
98
- const ROOT_ID = "$";
99
- function getBranchView(sequence, paths, branch) {
100
- const path = branch.split(PATH_SEP);
101
- const pathMap = {};
102
- for (const path$1 of paths) {
103
- const parent = path$1.at(-2) ?? ROOT_ID;
104
- pathMap[parent] ??= [];
105
- pathMap[parent].unshift(path$1);
106
- }
107
- const history = [];
108
- const branchByCheckpoint = {};
109
- const forkStack = path.slice();
110
- const queue = [...sequence.items];
111
- while (queue.length > 0) {
112
- const item = queue.shift();
113
- if (item.type === "node") {
114
- history.push(item.value);
115
- const checkpointId = item.value.checkpoint?.checkpoint_id;
116
- if (checkpointId == null) continue;
117
- branchByCheckpoint[checkpointId] = {
118
- branch: item.path.join(PATH_SEP),
119
- branchOptions: (item.path.length > 0 ? pathMap[item.path.at(-2) ?? ROOT_ID] ?? [] : []).map((p) => p.join(PATH_SEP))
120
- };
121
- }
122
- if (item.type === "fork") {
123
- const forkId = forkStack.shift();
124
- const index = forkId != null ? item.items.findIndex((value) => {
125
- const firstItem = value.items.at(0);
126
- if (!firstItem || firstItem.type !== "node") return false;
127
- return firstItem.value.checkpoint?.checkpoint_id === forkId;
128
- }) : -1;
129
- const nextItems = item.items.at(index)?.items ?? [];
130
- queue.push(...nextItems);
131
- }
132
- }
133
- return {
134
- history,
135
- branchByCheckpoint
136
- };
137
- }
138
- function getBranchContext(branch, history) {
139
- const { rootSequence: branchTree, paths } = getBranchSequence(history ?? []);
140
- const { history: flatHistory, branchByCheckpoint } = getBranchView(branchTree, paths, branch);
141
- return {
142
- branchTree,
143
- flatHistory,
144
- branchByCheckpoint,
145
- threadHead: flatHistory.at(-1)
146
- };
147
- }
1
+ const isError = (error) => {
2
+ if ("isError" in Error && typeof Error.isError === "function") return Error.isError(error);
3
+ const stringTag = Object.prototype.toString.call(error);
4
+ return stringTag === "[object Error]" || stringTag === "[object DOMException]" || stringTag === "[object DOMError]" || stringTag === "[object Exception]";
5
+ };
6
+ const getCauseError = (error) => {
7
+ const { cause } = error;
8
+ if (typeof cause !== "object" || cause == null) return null;
9
+ if (!isError(cause)) return null;
10
+ return cause;
11
+ };
12
+ const isNetworkError = (error) => {
13
+ if (!isError(error)) return false;
14
+ if (error.name !== "TypeError" || typeof error.message !== "string") return false;
15
+ const msg = error.message.toLowerCase();
16
+ const causeMsg = getCauseError(error)?.message?.toLowerCase() ?? "";
17
+ return msg.includes("fetch") || msg.includes("network") || msg.includes("connection") || msg.includes("error sending request") || msg.includes("load failed") || msg.includes("terminated") || causeMsg.includes("other side closed") || causeMsg.includes("socket");
18
+ };
148
19
  export {
149
- getBranchContext
20
+ isNetworkError
150
21
  };
151
22
  //# sourceMappingURL=index.es36.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es36.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/ui/branching.js"],"sourcesContent":["//#region src/ui/branching.ts\nfunction getBranchSequence(history) {\n\tconst nodeIds = /* @__PURE__ */ new Set();\n\tconst childrenMap = {};\n\tif (history.length <= 1) return {\n\t\trootSequence: {\n\t\t\ttype: \"sequence\",\n\t\t\titems: history.map((value) => ({\n\t\t\t\ttype: \"node\",\n\t\t\t\tvalue,\n\t\t\t\tpath: []\n\t\t\t}))\n\t\t},\n\t\tpaths: []\n\t};\n\thistory.forEach((state) => {\n\t\tconst checkpointId = state.parent_checkpoint?.checkpoint_id ?? \"$\";\n\t\tchildrenMap[checkpointId] ??= [];\n\t\tchildrenMap[checkpointId].push(state);\n\t\tif (state.checkpoint?.checkpoint_id != null) nodeIds.add(state.checkpoint.checkpoint_id);\n\t});\n\tconst maxId = (...ids) => ids.filter((i) => i != null).sort((a, b) => a.localeCompare(b)).at(-1);\n\tconst lastOrphanedNode = childrenMap.$ == null ? Object.keys(childrenMap).filter((parentId) => !nodeIds.has(parentId)).map((parentId) => {\n\t\tconst queue$1 = [parentId];\n\t\tconst seen = /* @__PURE__ */ new Set();\n\t\tlet lastId = parentId;\n\t\twhile (queue$1.length > 0) {\n\t\t\tconst current = queue$1.shift();\n\t\t\tif (seen.has(current)) continue;\n\t\t\tseen.add(current);\n\t\t\tconst children = (childrenMap[current] ?? []).flatMap((i) => i.checkpoint?.checkpoint_id ?? []);\n\t\t\tlastId = maxId(lastId, ...children);\n\t\t\tqueue$1.push(...children);\n\t\t}\n\t\treturn {\n\t\t\tparentId,\n\t\t\tlastId\n\t\t};\n\t}).sort((a, b) => a.lastId.localeCompare(b.lastId)).at(-1)?.parentId : void 0;\n\tif (lastOrphanedNode != null) childrenMap.$ = childrenMap[lastOrphanedNode];\n\tconst rootSequence = {\n\t\ttype: \"sequence\",\n\t\titems: []\n\t};\n\tconst queue = [{\n\t\tid: \"$\",\n\t\tsequence: rootSequence,\n\t\tpath: []\n\t}];\n\tconst paths = [];\n\tconst visited = /* @__PURE__ */ new Set();\n\twhile (queue.length > 0) {\n\t\tconst task = queue.shift();\n\t\tif (visited.has(task.id)) continue;\n\t\tvisited.add(task.id);\n\t\tconst children = childrenMap[task.id];\n\t\tif (children == null || children.length === 0) continue;\n\t\tlet fork;\n\t\tif (children.length > 1) {\n\t\t\tfork = {\n\t\t\t\ttype: \"fork\",\n\t\t\t\titems: []\n\t\t\t};\n\t\t\ttask.sequence.items.push(fork);\n\t\t}\n\t\tfor (const value of children) {\n\t\t\tconst id = value.checkpoint?.checkpoint_id;\n\t\t\tif (id == null) continue;\n\t\t\tlet { sequence } = task;\n\t\t\tlet { path } = task;\n\t\t\tif (fork != null) {\n\t\t\t\tsequence = {\n\t\t\t\t\ttype: \"sequence\",\n\t\t\t\t\titems: []\n\t\t\t\t};\n\t\t\t\tfork.items.unshift(sequence);\n\t\t\t\tpath = path.slice();\n\t\t\t\tpath.push(id);\n\t\t\t\tpaths.push(path);\n\t\t\t}\n\t\t\tsequence.items.push({\n\t\t\t\ttype: \"node\",\n\t\t\t\tvalue,\n\t\t\t\tpath\n\t\t\t});\n\t\t\tqueue.push({\n\t\t\t\tid,\n\t\t\t\tsequence,\n\t\t\t\tpath\n\t\t\t});\n\t\t}\n\t}\n\treturn {\n\t\trootSequence,\n\t\tpaths\n\t};\n}\nconst PATH_SEP = \">\";\nconst ROOT_ID = \"$\";\nfunction getBranchView(sequence, paths, branch) {\n\tconst path = branch.split(PATH_SEP);\n\tconst pathMap = {};\n\tfor (const path$1 of paths) {\n\t\tconst parent = path$1.at(-2) ?? ROOT_ID;\n\t\tpathMap[parent] ??= [];\n\t\tpathMap[parent].unshift(path$1);\n\t}\n\tconst history = [];\n\tconst branchByCheckpoint = {};\n\tconst forkStack = path.slice();\n\tconst queue = [...sequence.items];\n\twhile (queue.length > 0) {\n\t\tconst item = queue.shift();\n\t\tif (item.type === \"node\") {\n\t\t\thistory.push(item.value);\n\t\t\tconst checkpointId = item.value.checkpoint?.checkpoint_id;\n\t\t\tif (checkpointId == null) continue;\n\t\t\tbranchByCheckpoint[checkpointId] = {\n\t\t\t\tbranch: item.path.join(PATH_SEP),\n\t\t\t\tbranchOptions: (item.path.length > 0 ? pathMap[item.path.at(-2) ?? ROOT_ID] ?? [] : []).map((p) => p.join(PATH_SEP))\n\t\t\t};\n\t\t}\n\t\tif (item.type === \"fork\") {\n\t\t\tconst forkId = forkStack.shift();\n\t\t\tconst index = forkId != null ? item.items.findIndex((value) => {\n\t\t\t\tconst firstItem = value.items.at(0);\n\t\t\t\tif (!firstItem || firstItem.type !== \"node\") return false;\n\t\t\t\treturn firstItem.value.checkpoint?.checkpoint_id === forkId;\n\t\t\t}) : -1;\n\t\t\tconst nextItems = item.items.at(index)?.items ?? [];\n\t\t\tqueue.push(...nextItems);\n\t\t}\n\t}\n\treturn {\n\t\thistory,\n\t\tbranchByCheckpoint\n\t};\n}\nfunction getBranchContext(branch, history) {\n\tconst { rootSequence: branchTree, paths } = getBranchSequence(history ?? []);\n\tconst { history: flatHistory, branchByCheckpoint } = getBranchView(branchTree, paths, branch);\n\treturn {\n\t\tbranchTree,\n\t\tflatHistory,\n\t\tbranchByCheckpoint,\n\t\tthreadHead: flatHistory.at(-1)\n\t};\n}\n\n//#endregion\nexport { getBranchContext };\n//# sourceMappingURL=branching.js.map"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es36.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/utils/error.js"],"sourcesContent":["//#region src/utils/error.ts\nconst isError = (error) => {\n\tif (\"isError\" in Error && typeof Error.isError === \"function\") return Error.isError(error);\n\tconst stringTag = Object.prototype.toString.call(error);\n\treturn stringTag === \"[object Error]\" || stringTag === \"[object DOMException]\" || stringTag === \"[object DOMError]\" || stringTag === \"[object Exception]\";\n};\nconst getCauseError = (error) => {\n\tconst { cause } = error;\n\tif (typeof cause !== \"object\" || cause == null) return null;\n\tif (!isError(cause)) return null;\n\treturn cause;\n};\nconst isNetworkError = (error) => {\n\tif (!isError(error)) return false;\n\tif (error.name !== \"TypeError\" || typeof error.message !== \"string\") return false;\n\tconst msg = error.message.toLowerCase();\n\tconst causeMsg = getCauseError(error)?.message?.toLowerCase() ?? \"\";\n\treturn msg.includes(\"fetch\") || msg.includes(\"network\") || msg.includes(\"connection\") || msg.includes(\"error sending request\") || msg.includes(\"load failed\") || msg.includes(\"terminated\") || causeMsg.includes(\"other side closed\") || causeMsg.includes(\"socket\");\n};\n\n//#endregion\nexport { isNetworkError };\n//# sourceMappingURL=error.js.map"],"names":[],"mappings":"AACA,MAAM,UAAU,CAAC,UAAU;AAC1B,MAAI,aAAa,SAAS,OAAO,MAAM,YAAY,WAAY,QAAO,MAAM,QAAQ,KAAK;AACzF,QAAM,YAAY,OAAO,UAAU,SAAS,KAAK,KAAK;AACtD,SAAO,cAAc,oBAAoB,cAAc,2BAA2B,cAAc,uBAAuB,cAAc;AACtI;AACA,MAAM,gBAAgB,CAAC,UAAU;AAChC,QAAM,EAAE,MAAK,IAAK;AAClB,MAAI,OAAO,UAAU,YAAY,SAAS,KAAM,QAAO;AACvD,MAAI,CAAC,QAAQ,KAAK,EAAG,QAAO;AAC5B,SAAO;AACR;AACK,MAAC,iBAAiB,CAAC,UAAU;AACjC,MAAI,CAAC,QAAQ,KAAK,EAAG,QAAO;AAC5B,MAAI,MAAM,SAAS,eAAe,OAAO,MAAM,YAAY,SAAU,QAAO;AAC5E,QAAM,MAAM,MAAM,QAAQ,YAAW;AACrC,QAAM,WAAW,cAAc,KAAK,GAAG,SAAS,YAAW,KAAM;AACjE,SAAO,IAAI,SAAS,OAAO,KAAK,IAAI,SAAS,SAAS,KAAK,IAAI,SAAS,YAAY,KAAK,IAAI,SAAS,uBAAuB,KAAK,IAAI,SAAS,aAAa,KAAK,IAAI,SAAS,YAAY,KAAK,SAAS,SAAS,mBAAmB,KAAK,SAAS,SAAS,QAAQ;AACpQ;","x_google_ignoreList":[0]}