langgraph-ui-components 0.0.25 → 0.0.28

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 (490) hide show
  1. package/README.md +515 -55
  2. package/dist/_virtual/index.cjs.js +1 -1
  3. package/dist/_virtual/index.cjs2.js +1 -1
  4. package/dist/_virtual/index.cjs3.js +1 -1
  5. package/dist/_virtual/index.es.js +5 -2
  6. package/dist/_virtual/index.es2.js +4 -2
  7. package/dist/_virtual/index.es2.js.map +1 -1
  8. package/dist/_virtual/index.es3.js +4 -4
  9. package/dist/assets/langgraph-ui-components.css +1 -1
  10. package/dist/components/ChatBody.cjs.js +2 -2
  11. package/dist/components/ChatBody.cjs.js.map +1 -1
  12. package/dist/components/ChatBody.d.ts.map +1 -1
  13. package/dist/components/ChatBody.es.js +208 -142
  14. package/dist/components/ChatBody.es.js.map +1 -1
  15. package/dist/components/TodoList.cjs.js +2 -0
  16. package/dist/components/TodoList.cjs.js.map +1 -0
  17. package/dist/components/TodoList.d.ts +5 -0
  18. package/dist/components/TodoList.d.ts.map +1 -0
  19. package/dist/components/TodoList.es.js +65 -0
  20. package/dist/components/TodoList.es.js.map +1 -0
  21. package/dist/components/messages/AgentMessage.cjs.js +3 -1
  22. package/dist/components/messages/AgentMessage.cjs.js.map +1 -1
  23. package/dist/components/messages/AgentMessage.d.ts +5 -1
  24. package/dist/components/messages/AgentMessage.d.ts.map +1 -1
  25. package/dist/components/messages/AgentMessage.es.js +200 -112
  26. package/dist/components/messages/AgentMessage.es.js.map +1 -1
  27. package/dist/components/messages/CustomComponentRender.cjs.js.map +1 -1
  28. package/dist/components/messages/CustomComponentRender.es.js.map +1 -1
  29. package/dist/components/ui/syntax-highlighter.cjs.js +1 -1
  30. package/dist/components/ui/syntax-highlighter.cjs.js.map +1 -1
  31. package/dist/components/ui/syntax-highlighter.es.js +1 -1
  32. package/dist/entries/components.cjs.js +1 -1
  33. package/dist/entries/components.d.ts.map +1 -1
  34. package/dist/entries/components.es.js +4 -5
  35. package/dist/entries/components.es.js.map +1 -1
  36. package/dist/entries/hooks.cjs.js +1 -1
  37. package/dist/entries/hooks.d.ts.map +1 -1
  38. package/dist/entries/hooks.es.js +5 -6
  39. package/dist/entries/hooks.es.js.map +1 -1
  40. package/dist/entries/providers.cjs.js +1 -1
  41. package/dist/entries/providers.d.ts +1 -1
  42. package/dist/entries/providers.d.ts.map +1 -1
  43. package/dist/entries/providers.es.js +18 -19
  44. package/dist/entries/providers.es.js.map +1 -1
  45. package/dist/index.cjs.js +1 -1
  46. package/dist/index.d.ts +2 -2
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.es.js +28 -29
  49. package/dist/index.es.js.map +1 -1
  50. package/dist/node_modules/.pnpm/react-syntax-highlighter@16.1.0_react@19.2.3/node_modules/react-syntax-highlighter/dist/cjs/styles/prism/index.cjs.js +1 -1
  51. package/dist/node_modules/.pnpm/react-syntax-highlighter@16.1.0_react@19.2.3/node_modules/react-syntax-highlighter/dist/cjs/styles/prism/index.es.js +1 -1
  52. package/dist/node_modules/.pnpm/react-syntax-highlighter@16.1.0_react@19.2.3/node_modules/react-syntax-highlighter/dist/esm/async-languages/create-language-async-loader.cjs.js +1 -1
  53. package/dist/node_modules/.pnpm/react-syntax-highlighter@16.1.0_react@19.2.3/node_modules/react-syntax-highlighter/dist/esm/async-languages/create-language-async-loader.cjs.js.map +1 -1
  54. package/dist/node_modules/.pnpm/react-syntax-highlighter@16.1.0_react@19.2.3/node_modules/react-syntax-highlighter/dist/esm/async-languages/create-language-async-loader.es.js +1 -1
  55. package/dist/node_modules/.pnpm/react-syntax-highlighter@16.1.0_react@19.2.3/node_modules/react-syntax-highlighter/dist/esm/async-syntax-highlighter.cjs.js +1 -1
  56. package/dist/node_modules/.pnpm/react-syntax-highlighter@16.1.0_react@19.2.3/node_modules/react-syntax-highlighter/dist/esm/async-syntax-highlighter.cjs.js.map +1 -1
  57. package/dist/node_modules/.pnpm/react-syntax-highlighter@16.1.0_react@19.2.3/node_modules/react-syntax-highlighter/dist/esm/async-syntax-highlighter.es.js +1 -1
  58. package/dist/pages/Chat/Chat.cjs.js +1 -1
  59. package/dist/pages/Chat/Chat.cjs.js.map +1 -1
  60. package/dist/pages/Chat/Chat.d.ts.map +1 -1
  61. package/dist/pages/Chat/Chat.es.js +41 -34
  62. package/dist/pages/Chat/Chat.es.js.map +1 -1
  63. package/dist/pages/Sidebar/sidebar.cjs.js +1 -1
  64. package/dist/pages/Sidebar/sidebar.cjs.js.map +1 -1
  65. package/dist/pages/Sidebar/sidebar.d.ts.map +1 -1
  66. package/dist/pages/Sidebar/sidebar.es.js +75 -70
  67. package/dist/pages/Sidebar/sidebar.es.js.map +1 -1
  68. package/dist/providers/ChatProvider.cjs.js +1 -1
  69. package/dist/providers/ChatProvider.cjs.js.map +1 -1
  70. package/dist/providers/ChatProvider.d.ts +17 -1
  71. package/dist/providers/ChatProvider.d.ts.map +1 -1
  72. package/dist/providers/ChatProvider.es.js +18 -17
  73. package/dist/providers/ChatProvider.es.js.map +1 -1
  74. package/dist/providers/ChatRuntime.es.js +4 -4
  75. package/dist/providers/CustomComponentProvider.cjs.js +1 -1
  76. package/dist/providers/CustomComponentProvider.cjs.js.map +1 -1
  77. package/dist/providers/CustomComponentProvider.d.ts +11 -0
  78. package/dist/providers/CustomComponentProvider.d.ts.map +1 -1
  79. package/dist/providers/CustomComponentProvider.es.js +51 -35
  80. package/dist/providers/CustomComponentProvider.es.js.map +1 -1
  81. package/dist/providers/Stream.cjs.js +1 -1
  82. package/dist/providers/Stream.cjs.js.map +1 -1
  83. package/dist/providers/Stream.d.ts +40 -8
  84. package/dist/providers/Stream.d.ts.map +1 -1
  85. package/dist/providers/Stream.es.js +151 -119
  86. package/dist/providers/Stream.es.js.map +1 -1
  87. package/dist/providers/Thread.cjs.js +1 -1
  88. package/dist/providers/Thread.cjs.js.map +1 -1
  89. package/dist/providers/Thread.d.ts +2 -1
  90. package/dist/providers/Thread.d.ts.map +1 -1
  91. package/dist/providers/Thread.es.js +19 -19
  92. package/dist/providers/Thread.es.js.map +1 -1
  93. package/dist/styles.css +1 -1
  94. package/package.json +17 -1
  95. package/src/App.tsx +4 -4
  96. package/src/components/ChatBody.tsx +229 -78
  97. package/src/components/TodoList.tsx +72 -0
  98. package/src/components/messages/AgentMessage.tsx +288 -82
  99. package/src/components/messages/CustomComponentRender.tsx +1 -1
  100. package/src/entries/components.ts +0 -2
  101. package/src/entries/hooks.ts +0 -2
  102. package/src/entries/providers.ts +1 -3
  103. package/src/index.css +2 -2
  104. package/src/index.ts +2 -4
  105. package/src/pages/Chat/Chat.tsx +13 -3
  106. package/src/pages/Sidebar/sidebar.tsx +12 -3
  107. package/src/providers/ChatProvider.tsx +18 -1
  108. package/src/providers/CustomComponentProvider.tsx +41 -0
  109. package/src/providers/Stream.tsx +88 -25
  110. package/src/providers/Thread.tsx +2 -2
  111. package/dist/_virtual/index.cjs10.js +0 -2
  112. package/dist/_virtual/index.cjs10.js.map +0 -1
  113. package/dist/_virtual/index.cjs11.js +0 -2
  114. package/dist/_virtual/index.cjs11.js.map +0 -1
  115. package/dist/_virtual/index.cjs12.js +0 -2
  116. package/dist/_virtual/index.cjs12.js.map +0 -1
  117. package/dist/_virtual/index.cjs4.js +0 -2
  118. package/dist/_virtual/index.cjs4.js.map +0 -1
  119. package/dist/_virtual/index.cjs5.js +0 -2
  120. package/dist/_virtual/index.cjs5.js.map +0 -1
  121. package/dist/_virtual/index.cjs6.js +0 -2
  122. package/dist/_virtual/index.cjs6.js.map +0 -1
  123. package/dist/_virtual/index.cjs7.js +0 -2
  124. package/dist/_virtual/index.cjs7.js.map +0 -1
  125. package/dist/_virtual/index.cjs8.js +0 -2
  126. package/dist/_virtual/index.cjs8.js.map +0 -1
  127. package/dist/_virtual/index.cjs9.js +0 -2
  128. package/dist/_virtual/index.cjs9.js.map +0 -1
  129. package/dist/_virtual/index.es10.js +0 -8
  130. package/dist/_virtual/index.es10.js.map +0 -1
  131. package/dist/_virtual/index.es11.js +0 -5
  132. package/dist/_virtual/index.es11.js.map +0 -1
  133. package/dist/_virtual/index.es12.js +0 -8
  134. package/dist/_virtual/index.es12.js.map +0 -1
  135. package/dist/_virtual/index.es4.js +0 -6
  136. package/dist/_virtual/index.es4.js.map +0 -1
  137. package/dist/_virtual/index.es5.js +0 -5
  138. package/dist/_virtual/index.es5.js.map +0 -1
  139. package/dist/_virtual/index.es6.js +0 -5
  140. package/dist/_virtual/index.es6.js.map +0 -1
  141. package/dist/_virtual/index.es7.js +0 -5
  142. package/dist/_virtual/index.es7.js.map +0 -1
  143. package/dist/_virtual/index.es8.js +0 -5
  144. package/dist/_virtual/index.es8.js.map +0 -1
  145. package/dist/_virtual/index.es9.js +0 -5
  146. package/dist/_virtual/index.es9.js.map +0 -1
  147. package/dist/_virtual/lower-bound.cjs.js +0 -2
  148. package/dist/_virtual/lower-bound.cjs.js.map +0 -1
  149. package/dist/_virtual/lower-bound.es.js +0 -5
  150. package/dist/_virtual/lower-bound.es.js.map +0 -1
  151. package/dist/_virtual/priority-queue.cjs.js +0 -2
  152. package/dist/_virtual/priority-queue.cjs.js.map +0 -1
  153. package/dist/_virtual/priority-queue.es.js +0 -5
  154. package/dist/_virtual/priority-queue.es.js.map +0 -1
  155. package/dist/_virtual/re.cjs.js +0 -2
  156. package/dist/_virtual/re.cjs.js.map +0 -1
  157. package/dist/_virtual/re.es.js +0 -5
  158. package/dist/_virtual/re.es.js.map +0 -1
  159. package/dist/components/ToolCallFunctions.cjs.js +0 -2
  160. package/dist/components/ToolCallFunctions.cjs.js.map +0 -1
  161. package/dist/components/ToolCallFunctions.es.js +0 -75
  162. package/dist/components/ToolCallFunctions.es.js.map +0 -1
  163. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/_virtual/_rolldown/runtime.cjs.js +0 -2
  164. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/_virtual/_rolldown/runtime.cjs.js.map +0 -1
  165. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/_virtual/_rolldown/runtime.es.js +0 -12
  166. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/_virtual/_rolldown/runtime.es.js.map +0 -1
  167. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/errors/index.cjs.js +0 -2
  168. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/errors/index.cjs.js.map +0 -1
  169. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/errors/index.es.js +0 -66
  170. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/errors/index.es.js.map +0 -1
  171. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/anthropic.cjs.js +0 -2
  172. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/anthropic.cjs.js.map +0 -1
  173. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/anthropic.es.js +0 -283
  174. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/anthropic.es.js.map +0 -1
  175. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/bedrock_converse.cjs.js +0 -2
  176. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/bedrock_converse.cjs.js.map +0 -1
  177. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/bedrock_converse.es.js +0 -219
  178. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/bedrock_converse.es.js.map +0 -1
  179. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/data.cjs.js +0 -2
  180. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/data.cjs.js.map +0 -1
  181. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/data.es.js +0 -42
  182. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/data.es.js.map +0 -1
  183. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/deepseek.cjs.js +0 -2
  184. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/deepseek.cjs.js.map +0 -1
  185. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/deepseek.es.js +0 -31
  186. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/deepseek.es.js.map +0 -1
  187. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/google.cjs.js +0 -2
  188. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/google.cjs.js.map +0 -1
  189. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/google.es.js +0 -77
  190. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/google.es.js.map +0 -1
  191. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/google_genai.cjs.js +0 -2
  192. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/google_genai.cjs.js.map +0 -1
  193. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/google_genai.es.js +0 -78
  194. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/google_genai.es.js.map +0 -1
  195. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/google_vertexai.cjs.js +0 -2
  196. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/google_vertexai.cjs.js.map +0 -1
  197. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/google_vertexai.es.js +0 -75
  198. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/google_vertexai.es.js.map +0 -1
  199. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/groq.cjs.js +0 -2
  200. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/groq.cjs.js.map +0 -1
  201. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/groq.es.js +0 -51
  202. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/groq.es.js.map +0 -1
  203. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/index.cjs.js +0 -2
  204. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/index.cjs.js.map +0 -1
  205. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/index.es.js +0 -23
  206. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/index.es.js.map +0 -1
  207. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/ollama.cjs.js +0 -2
  208. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/ollama.cjs.js.map +0 -1
  209. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/ollama.es.js +0 -31
  210. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/ollama.es.js.map +0 -1
  211. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/openai.cjs.js +0 -2
  212. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/openai.cjs.js.map +0 -1
  213. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/openai.es.js +0 -241
  214. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/openai.es.js.map +0 -1
  215. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/utils.cjs.js +0 -2
  216. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/utils.cjs.js.map +0 -1
  217. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/utils.es.js +0 -37
  218. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/utils.es.js.map +0 -1
  219. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/xai.cjs.js +0 -2
  220. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/xai.cjs.js.map +0 -1
  221. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/xai.es.js +0 -42
  222. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/xai.es.js.map +0 -1
  223. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/content/data.cjs.js +0 -2
  224. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/content/data.cjs.js.map +0 -1
  225. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/content/data.es.js +0 -16
  226. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/content/data.es.js.map +0 -1
  227. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/tracers/console.cjs.js +0 -2
  228. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/tracers/console.cjs.js.map +0 -1
  229. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/tracers/console.es.js +0 -9
  230. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/tracers/console.es.js.map +0 -1
  231. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/fast-json-patch/index.cjs.js +0 -2
  232. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/fast-json-patch/index.cjs.js.map +0 -1
  233. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/fast-json-patch/index.es.js +0 -3
  234. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/fast-json-patch/index.es.js.map +0 -1
  235. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/fast-json-patch/src/core.cjs.js +0 -2
  236. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/fast-json-patch/src/core.cjs.js.map +0 -1
  237. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/fast-json-patch/src/core.es.js +0 -230
  238. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/fast-json-patch/src/core.es.js.map +0 -1
  239. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/fast-json-patch/src/helpers.cjs.js +0 -3
  240. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/fast-json-patch/src/helpers.cjs.js.map +0 -1
  241. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/fast-json-patch/src/helpers.es.js +0 -87
  242. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/fast-json-patch/src/helpers.es.js.map +0 -1
  243. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/json.cjs.js +0 -3
  244. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/json.cjs.js.map +0 -1
  245. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/json.es.js +0 -133
  246. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/json.es.js.map +0 -1
  247. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/namespace.cjs.js +0 -2
  248. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/namespace.cjs.js.map +0 -1
  249. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/namespace.es.js +0 -29
  250. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/namespace.es.js.map +0 -1
  251. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/sax-js/sax.cjs.js +0 -10
  252. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/sax-js/sax.cjs.js.map +0 -1
  253. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/sax-js/sax.es.js +0 -795
  254. package/dist/node_modules/.pnpm/@langchain_core@1.1.33_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/utils/sax-js/sax.es.js.map +0 -1
  255. package/dist/node_modules/.pnpm/ansi-styles@5.2.0/node_modules/ansi-styles/index.cjs.js +0 -2
  256. package/dist/node_modules/.pnpm/ansi-styles@5.2.0/node_modules/ansi-styles/index.cjs.js.map +0 -1
  257. package/dist/node_modules/.pnpm/ansi-styles@5.2.0/node_modules/ansi-styles/index.es.js +0 -111
  258. package/dist/node_modules/.pnpm/ansi-styles@5.2.0/node_modules/ansi-styles/index.es.js.map +0 -1
  259. package/dist/node_modules/.pnpm/camelcase@6.3.0/node_modules/camelcase/index.cjs.js +0 -2
  260. package/dist/node_modules/.pnpm/camelcase@6.3.0/node_modules/camelcase/index.cjs.js.map +0 -1
  261. package/dist/node_modules/.pnpm/camelcase@6.3.0/node_modules/camelcase/index.es.js +0 -30
  262. package/dist/node_modules/.pnpm/camelcase@6.3.0/node_modules/camelcase/index.es.js.map +0 -1
  263. package/dist/node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.cjs.js +0 -2
  264. package/dist/node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.cjs.js.map +0 -1
  265. package/dist/node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.es.js +0 -112
  266. package/dist/node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.es.js.map +0 -1
  267. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/_uuid.cjs.js +0 -2
  268. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/_uuid.cjs.js.map +0 -1
  269. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/_uuid.es.js +0 -3
  270. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/_uuid.es.js.map +0 -1
  271. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/fast-safe-stringify/index.cjs.js +0 -2
  272. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/fast-safe-stringify/index.cjs.js.map +0 -1
  273. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/fast-safe-stringify/index.es.js +0 -6
  274. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/fast-safe-stringify/index.es.js.map +0 -1
  275. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/fs.browser.cjs.js +0 -2
  276. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/fs.browser.cjs.js.map +0 -1
  277. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/fs.browser.es.js +0 -14
  278. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/fs.browser.es.js.map +0 -1
  279. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/p-queue.cjs.js +0 -2
  280. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/p-queue.cjs.js.map +0 -1
  281. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/p-queue.es.js +0 -3
  282. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/p-queue.es.js.map +0 -1
  283. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/prompt_cache/index.cjs.js +0 -2
  284. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/prompt_cache/index.cjs.js.map +0 -1
  285. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/prompt_cache/index.es.js +0 -200
  286. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/prompt_cache/index.es.js.map +0 -1
  287. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/xxhash/xxhash.cjs.js +0 -2
  288. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/xxhash/xxhash.cjs.js.map +0 -1
  289. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/xxhash/xxhash.es.js +0 -22
  290. package/dist/node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/xxhash/xxhash.es.js.map +0 -1
  291. package/dist/node_modules/.pnpm/p-finally@1.0.0/node_modules/p-finally/index.cjs.js +0 -2
  292. package/dist/node_modules/.pnpm/p-finally@1.0.0/node_modules/p-finally/index.cjs.js.map +0 -1
  293. package/dist/node_modules/.pnpm/p-finally@1.0.0/node_modules/p-finally/index.es.js +0 -18
  294. package/dist/node_modules/.pnpm/p-finally@1.0.0/node_modules/p-finally/index.es.js.map +0 -1
  295. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/index.cjs.js +0 -2
  296. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/index.cjs.js.map +0 -1
  297. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/index.es.js +0 -198
  298. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/index.es.js.map +0 -1
  299. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/lower-bound.cjs.js +0 -2
  300. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/lower-bound.cjs.js.map +0 -1
  301. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/lower-bound.es.js +0 -20
  302. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/lower-bound.es.js.map +0 -1
  303. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/priority-queue.cjs.js +0 -2
  304. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/priority-queue.cjs.js.map +0 -1
  305. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/priority-queue.es.js +0 -41
  306. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/priority-queue.es.js.map +0 -1
  307. package/dist/node_modules/.pnpm/p-timeout@3.2.0/node_modules/p-timeout/index.cjs.js +0 -2
  308. package/dist/node_modules/.pnpm/p-timeout@3.2.0/node_modules/p-timeout/index.cjs.js.map +0 -1
  309. package/dist/node_modules/.pnpm/p-timeout@3.2.0/node_modules/p-timeout/index.es.js +0 -45
  310. package/dist/node_modules/.pnpm/p-timeout@3.2.0/node_modules/p-timeout/index.es.js.map +0 -1
  311. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.cjs.js +0 -2
  312. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.cjs.js.map +0 -1
  313. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.es.js +0 -57
  314. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.es.js.map +0 -1
  315. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.cjs.js +0 -2
  316. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.cjs.js.map +0 -1
  317. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.es.js +0 -149
  318. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.es.js.map +0 -1
  319. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.cjs.js +0 -2
  320. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.cjs.js.map +0 -1
  321. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.es.js +0 -170
  322. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.es.js.map +0 -1
  323. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/clean.cjs.js +0 -2
  324. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/clean.cjs.js.map +0 -1
  325. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/clean.es.js +0 -15
  326. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/clean.es.js.map +0 -1
  327. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.cjs.js +0 -2
  328. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.cjs.js.map +0 -1
  329. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.es.js +0 -40
  330. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.es.js.map +0 -1
  331. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/coerce.cjs.js +0 -2
  332. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/coerce.cjs.js.map +0 -1
  333. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/coerce.es.js +0 -34
  334. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/coerce.es.js.map +0 -1
  335. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-build.cjs.js +0 -2
  336. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-build.cjs.js.map +0 -1
  337. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-build.es.js +0 -15
  338. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-build.es.js.map +0 -1
  339. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-loose.cjs.js +0 -2
  340. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-loose.cjs.js.map +0 -1
  341. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-loose.es.js +0 -12
  342. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-loose.es.js.map +0 -1
  343. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.cjs.js +0 -2
  344. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.cjs.js.map +0 -1
  345. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.es.js +0 -12
  346. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.es.js.map +0 -1
  347. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/diff.cjs.js +0 -2
  348. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/diff.cjs.js.map +0 -1
  349. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/diff.es.js +0 -25
  350. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/diff.es.js.map +0 -1
  351. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.cjs.js +0 -2
  352. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.cjs.js.map +0 -1
  353. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.es.js +0 -12
  354. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.es.js.map +0 -1
  355. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.cjs.js +0 -2
  356. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.cjs.js.map +0 -1
  357. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.es.js +0 -12
  358. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.es.js.map +0 -1
  359. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.cjs.js +0 -2
  360. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.cjs.js.map +0 -1
  361. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.es.js +0 -12
  362. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.es.js.map +0 -1
  363. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/inc.cjs.js +0 -2
  364. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/inc.cjs.js.map +0 -1
  365. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/inc.es.js +0 -22
  366. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/inc.es.js.map +0 -1
  367. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.cjs.js +0 -2
  368. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.cjs.js.map +0 -1
  369. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.es.js +0 -12
  370. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.es.js.map +0 -1
  371. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.cjs.js +0 -2
  372. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.cjs.js.map +0 -1
  373. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.es.js +0 -12
  374. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.es.js.map +0 -1
  375. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/major.cjs.js +0 -2
  376. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/major.cjs.js.map +0 -1
  377. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/major.es.js +0 -12
  378. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/major.es.js.map +0 -1
  379. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/minor.cjs.js +0 -2
  380. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/minor.cjs.js.map +0 -1
  381. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/minor.es.js +0 -12
  382. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/minor.es.js.map +0 -1
  383. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.cjs.js +0 -2
  384. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.cjs.js.map +0 -1
  385. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.es.js +0 -12
  386. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.es.js.map +0 -1
  387. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.cjs.js +0 -2
  388. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.cjs.js.map +0 -1
  389. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.es.js +0 -22
  390. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.es.js.map +0 -1
  391. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/patch.cjs.js +0 -2
  392. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/patch.cjs.js.map +0 -1
  393. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/patch.es.js +0 -12
  394. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/patch.es.js.map +0 -1
  395. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/prerelease.cjs.js +0 -2
  396. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/prerelease.cjs.js.map +0 -1
  397. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/prerelease.es.js +0 -15
  398. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/prerelease.es.js.map +0 -1
  399. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rcompare.cjs.js +0 -2
  400. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rcompare.cjs.js.map +0 -1
  401. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rcompare.es.js +0 -12
  402. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rcompare.es.js.map +0 -1
  403. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rsort.cjs.js +0 -2
  404. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rsort.cjs.js.map +0 -1
  405. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rsort.es.js +0 -12
  406. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rsort.es.js.map +0 -1
  407. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.cjs.js +0 -2
  408. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.cjs.js.map +0 -1
  409. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.es.js +0 -19
  410. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.es.js.map +0 -1
  411. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/sort.cjs.js +0 -2
  412. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/sort.cjs.js.map +0 -1
  413. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/sort.es.js +0 -12
  414. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/sort.es.js.map +0 -1
  415. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/valid.cjs.js +0 -2
  416. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/valid.cjs.js.map +0 -1
  417. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/valid.es.js +0 -15
  418. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/valid.es.js.map +0 -1
  419. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/index.cjs.js +0 -2
  420. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/index.cjs.js.map +0 -1
  421. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/index.es.js +0 -98
  422. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/index.es.js.map +0 -1
  423. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.cjs.js +0 -2
  424. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.cjs.js.map +0 -1
  425. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.es.js +0 -29
  426. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.es.js.map +0 -1
  427. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.cjs.js +0 -2
  428. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.cjs.js.map +0 -1
  429. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.es.js +0 -9
  430. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.es.js.map +0 -1
  431. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.cjs.js +0 -2
  432. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.cjs.js.map +0 -1
  433. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.es.js +0 -19
  434. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.es.js.map +0 -1
  435. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.cjs.js +0 -2
  436. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.cjs.js.map +0 -1
  437. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.es.js +0 -33
  438. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.es.js.map +0 -1
  439. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.cjs.js +0 -2
  440. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.cjs.js.map +0 -1
  441. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.es.js +0 -11
  442. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.es.js.map +0 -1
  443. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.cjs.js +0 -2
  444. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.cjs.js.map +0 -1
  445. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.es.js +0 -33
  446. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.es.js.map +0 -1
  447. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/gtr.cjs.js +0 -2
  448. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/gtr.cjs.js.map +0 -1
  449. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/gtr.es.js +0 -12
  450. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/gtr.es.js.map +0 -1
  451. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/intersects.cjs.js +0 -2
  452. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/intersects.cjs.js.map +0 -1
  453. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/intersects.es.js +0 -12
  454. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/intersects.es.js.map +0 -1
  455. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/ltr.cjs.js +0 -2
  456. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/ltr.cjs.js.map +0 -1
  457. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/ltr.es.js +0 -12
  458. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/ltr.es.js.map +0 -1
  459. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/max-satisfying.cjs.js +0 -2
  460. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/max-satisfying.cjs.js.map +0 -1
  461. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/max-satisfying.es.js +0 -23
  462. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/max-satisfying.es.js.map +0 -1
  463. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-satisfying.cjs.js +0 -2
  464. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-satisfying.cjs.js.map +0 -1
  465. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-satisfying.es.js +0 -23
  466. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-satisfying.es.js.map +0 -1
  467. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-version.cjs.js +0 -2
  468. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-version.cjs.js.map +0 -1
  469. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-version.es.js +0 -43
  470. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-version.es.js.map +0 -1
  471. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/outside.cjs.js +0 -2
  472. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/outside.cjs.js.map +0 -1
  473. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/outside.es.js +0 -45
  474. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/outside.es.js.map +0 -1
  475. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/simplify.cjs.js +0 -2
  476. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/simplify.cjs.js.map +0 -1
  477. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/simplify.es.js +0 -25
  478. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/simplify.es.js.map +0 -1
  479. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/subset.cjs.js +0 -2
  480. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/subset.cjs.js.map +0 -1
  481. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/subset.es.js +0 -95
  482. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/subset.es.js.map +0 -1
  483. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/to-comparators.cjs.js +0 -2
  484. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/to-comparators.cjs.js.map +0 -1
  485. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/to-comparators.es.js +0 -12
  486. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/to-comparators.es.js.map +0 -1
  487. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/valid.cjs.js +0 -2
  488. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/valid.cjs.js.map +0 -1
  489. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/valid.es.js +0 -18
  490. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/valid.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Stream.cjs.js","sources":["../../src/providers/Stream.tsx"],"sourcesContent":["/* @refresh reset */\nimport { useChatRuntime } from \"@/providers/ChatRuntime\";\nimport { logger } from \"@/utils/logger\";\nimport { type AIMessage, type Message } from \"@langchain/langgraph-sdk\";\n\n// Derive the tool-call types from AIMessage since the SDK doesn't re-export them\ntype ToolCall = NonNullable<AIMessage[\"tool_calls\"]>[number];\ntype InvalidToolCall = NonNullable<AIMessage[\"invalid_tool_calls\"]>[number];\nimport { useStream, type UseStream } from \"@langchain/langgraph-sdk/react\";\nimport {\n isRemoveUIMessage,\n isUIMessage,\n type RemoveUIMessage,\n type UIMessage,\n uiMessageReducer,\n} from \"@langchain/langgraph-sdk/react-ui\";\nimport {\n createContext,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { toast } from \"sonner\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { useThread } from \"./Thread\";\n\nexport type StateType = {\n messages: Message[];\n ui?: UIMessage[];\n suggestions?: string[];\n};\n\nconst useTypedStream = useStream<\n StateType,\n {\n UpdateType: {\n messages?: Message[] | Message | string;\n ui?: (UIMessage | RemoveUIMessage)[] | UIMessage | RemoveUIMessage;\n };\n CustomEventType: UIMessage | RemoveUIMessage;\n }\n>;\n\ntype StreamContextType = UseStream<StateType, {\n UpdateType: {\n\n messages?: Message[] | Message | string;\n ui?: (UIMessage | RemoveUIMessage)[] | UIMessage | RemoveUIMessage;\n };\n CustomEventType: UIMessage | RemoveUIMessage;\n}> & {\n sendMessage: (\n message: Message | string,\n options?: {\n /** If true, message is meant for agent only (not user-visible) */\n type?: Message[\"type\"];\n /** Name field required for function/tool messages */\n name?: string;\n /** If true, message is hidden from user UI */\n hidden?: boolean;\n /** Tool calls associated with this message */\n tool_calls?: ToolCall[];\n /** Invalid tool calls associated with this message */\n invalid_tool_calls?: InvalidToolCall[];\n /** If provided, use this ID for the message instead of generating one */\n tool_call_id?: string;\n /** Additional kwargs to attach to the message */\n additional_kwargs?: Record<string, unknown>;\n /** UI components to display alongside the message */\n ui?: UIMessage[];\n /** Custom ID for the message (will also be used for UI components) */\n id?: string;\n /** Custom context to override/merge with identity */\n context?: Record<string, unknown>;\n }\n ) => Promise<void>;\n submitMessage: (\n message: Message,\n options?: {\n streamMode?: (\"values\" | \"updates\" | \"messages\" | \"custom\" | \"debug\")[];\n streamSubgraphs?: boolean;\n streamResumable?: boolean;\n contextValues?: Record<string, unknown>;\n }\n ) => Promise<void>;\n regenerateMessage: (messageId: string) => Promise<void>;\n fetchCatalog: () => Promise<unknown>;\n};\n\nconst StreamContext = createContext<StreamContextType | undefined>(undefined);\n\nasync function checkGraphStatus(apiUrl: string, authToken: string | null | undefined) {\n try {\n const res = await fetch(`${apiUrl}/info`, {\n headers: authToken ? { Authorization: `Bearer ${authToken}` } : undefined,\n });\n return res.ok;\n } catch {\n logger.error(\"Failed to initialize LangGraph Agent\");\n }\n}\n\nasync function fetchCatalog(apiUrl: string, authToken: string | null | undefined) {\n try {\n const res = await fetch(`${apiUrl}/agents/catalog`, {\n headers: authToken ? { Authorization: `Bearer ${authToken}` } : undefined,\n });\n if (res.ok) {\n const data = await res.json();\n return data;\n }\n return null;\n }\n catch {\n logger.error(\"Failed to fetch LangGraph Catalog\");\n return null;\n }\n}\n\nasync function sleep(ms = 6000) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nconst StreamSession = ({ children }: { children: ReactNode }) => {\n const { apiUrl, assistantId, identity } = useChatRuntime();\n const { mode, threadId, setThreadId, getThreads, setThreads, configuration } = useThread();\n\n // Store local-only AI messages that shouldn't trigger backend calls\n const [localMessages, setLocalMessages] = useState<Message[]>([]);\n // Store local-only UI components\n const [localUI, setLocalUI] = useState<UIMessage[]>([]);\n // Track if catalog has been fetched to prevent duplicate calls\n const [catalogFetched, setCatalogFetched] = useState(false);\n const [catalogCache, setCatalogCache] = useState<unknown>(null);\n\n const streamValue = useTypedStream({\n apiUrl,\n assistantId,\n threadId: mode === \"multi\" ? threadId : null,\n defaultHeaders: identity?.authToken\n ? { Authorization: `Bearer ${identity?.authToken}` }\n : undefined,\n fetchStateHistory: true,\n onUpdateEvent: (data, options) => {\n // Scan update data (potentially nested by node name) for AI messages\n // with reasoning_content. Inject them into state early so they're\n // visible during streaming of the final text response.\n const reasoningMessages: Message[] = [];\n\n const scan = (obj: unknown) => {\n if (!obj || typeof obj !== \"object\") return;\n const o = obj as Record<string, unknown>;\n if (Array.isArray(o.messages)) {\n for (const m of o.messages as Message[]) {\n const ak = (m as Record<string, unknown>).additional_kwargs as Record<string, unknown> | undefined;\n if (\n m?.type === \"ai\" &&\n m.id &&\n typeof ak?.reasoning_content === \"string\" &&\n ak.reasoning_content.length > 0\n ) {\n reasoningMessages.push(m);\n }\n }\n }\n for (const val of Object.values(o)) {\n if (val && typeof val === \"object\" && !Array.isArray(val)) {\n scan(val);\n }\n }\n };\n\n scan(data);\n\n if (reasoningMessages.length > 0) {\n options.mutate((prev) => {\n const prevMessages = (prev.messages ?? []) as Message[];\n const prevIds = new Set(prevMessages.map((m) => m.id).filter(Boolean));\n const newMessages = reasoningMessages.filter((m) => !prevIds.has(m.id!));\n if (newMessages.length === 0) return prev;\n return { ...prev, messages: [...prevMessages, ...newMessages] };\n });\n }\n },\n onCustomEvent: (event, options) => {\n if (isUIMessage(event) || isRemoveUIMessage(event)) {\n options.mutate((prev) => {\n logger.debug(\"UI Event received in StreamProvider:\", event);\n const ui = uiMessageReducer(prev.ui ?? [], event);\n return { ...prev, ui };\n });\n }\n },\n\n onThreadId: (id) => {\n if (!id) return;\n if (mode === \"single\") {\n // lock once\n if (!threadId) setThreadId(id);\n } else {\n // switch freely\n setThreadId(id);\n // Refetch threads list when thread ID changes.\n // Wait for some seconds before fetching so we're able to get the new thread that was created.\n sleep().then(() => getThreads().then(setThreads).catch((err) => logger.error(\"Failed to refresh threads:\", err)));\n }\n },\n });\n\n /**\n * Send a message to the agent programmatically\n * Useful for triggering agent actions without user-visible messages\n * e.g., \"login completed\", \"card clicked: {id}\"\n */\n const sendMessage = useCallback(\n async (\n message: Message | string,\n options?: {\n type?: Message[\"type\"];\n name?: string;\n hidden?: boolean;\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n tool_call_id?: string;\n additional_kwargs?: Record<string, unknown>;\n ui?: UIMessage[];\n id?: string; // Allow passing custom ID\n context?: Record<string, unknown>; // Allow passing custom context to override identity\n }\n ) => {\n // Use provided ID or generate new one\n const messageId = options?.id || uuidv4();\n\n const messageObj: Message =\n typeof message === \"string\"\n ? ({\n id: messageId, // Use the determined ID\n type: options?.type ?? \"human\",\n content: message,\n ...(options?.name && { name: options.name }),\n ...(options?.tool_calls && { tool_calls: options.tool_calls }),\n ...(options?.invalid_tool_calls && { invalid_tool_calls: options.invalid_tool_calls }),\n ...(options?.tool_call_id && { tool_call_id: options.tool_call_id }),\n ...((options?.additional_kwargs || options?.hidden) && {\n additional_kwargs: {\n ...(options?.hidden && { hidden: true }),\n ...(options?.additional_kwargs ?? {}),\n }\n }),\n } as Message)\n : {\n ...message,\n id: messageId, // Override with determined ID\n // Allow overriding message fields with options\n ...(options?.tool_calls && { tool_calls: options.tool_calls }),\n ...(options?.additional_kwargs && {\n additional_kwargs: {\n ...message.additional_kwargs,\n ...options.additional_kwargs,\n }\n }),\n };\n\n // console.log(\"Sending message via sendMessage:\", messageObj); → converted to debug log\n logger.debug(\"Sending message via sendMessage:\", messageObj);\n\n // If message type is \"ai\", just append to local state without submitting to agent\n // This is useful for injecting initial messages or system messages that don't need agent processing\n if (options?.type === \"ai\") {\n setLocalMessages((prev) => [...prev, messageObj]);\n logger.debug(\"Appended AI message to localMessages:\", options?.ui);\n // Also store any UI components, linking them to the message id\n if (options.ui && options.ui.length > 0) {\n const uiWithMessageId = options.ui.map((ui, index) => ({\n ...ui,\n id: messageId, // Link to the message ID so CustomComponentRender can find it\n // Ensure each UI component has a unique identifier for React keys\n _key: (ui as UIMessage & { _key?: string })._key || `${messageId}-ui-${index}`,\n })) as UIMessage[];\n setLocalUI((prev) => [...prev, ...uiWithMessageId]);\n }\n return;\n }\n\n // For non-AI messages, submit to the agent\n const currentMessages = streamValue.messages || [];\n // Merge identity with custom context, custom context takes precedence\n const mergedContext = options?.context\n ? { ...identity, ...options.context, ...configuration }\n : identity || {};\n\n await streamValue.submit(\n { messages: [...currentMessages, messageObj] },\n {\n context: mergedContext,\n streamMode: [\"values\", \"messages-tuple\", \"updates\", \"custom\"],\n }\n );\n },\n [streamValue, identity, configuration, setLocalMessages, setLocalUI]\n );\n\n // Combine stream messages with local AI messages, deduplicating by ID\n const combinedMessages = useMemo(() => {\n const allMessages = [...localMessages, ...(streamValue.messages || [])];\n // Deduplicate by message ID, keeping the first occurrence\n const seen = new Set<string>();\n return allMessages.filter(msg => {\n if (!msg.id) return true; // Keep messages without IDs\n if (seen.has(msg.id)) return false;\n seen.add(msg.id);\n return true;\n });\n }, [localMessages, streamValue.messages]);\n\n // Combine local UI with stream UI, deduplicating by unique key\n const combinedUI = useMemo(() => {\n logger.debug(\"Combining local UI with stream UI:\", localUI, streamValue.values?.ui);\n const allUI = [...localUI, ...(streamValue.values?.ui || [])];\n // Deduplicate by _key or id+name combination\n const seen = new Set<string>();\n return allUI.filter(ui => {\n const key = (ui as UIMessage & { _key?: string })._key || `${ui.id}-${ui.name}`;\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n }, [localUI, streamValue.values?.ui]);\n\n const submitMessage = useCallback(\n async (\n message: Message,\n options?: {\n streamMode?: (\"values\" | \"updates\" | \"messages\" | \"custom\" | \"debug\")[];\n streamSubgraphs?: boolean;\n streamResumable?: boolean;\n contextValues?: Record<string, unknown>;\n }\n ) => {\n // Get ALL current messages (including local AI messages)\n const allCurrentMessages = combinedMessages || [];\n\n await streamValue.submit(\n { messages: [...allCurrentMessages, message] },\n {\n context: { ...identity, ...options?.contextValues },\n streamMode: options?.streamMode || [\"values\", \"messages-tuple\", \"updates\", \"custom\"],\n streamSubgraphs: options?.streamSubgraphs ?? true,\n streamResumable: options?.streamResumable ?? true,\n optimisticValues: (prev) => ({\n ...prev,\n messages: [...allCurrentMessages, message],\n }),\n }\n );\n },\n [streamValue, identity, combinedMessages]\n );\n\n /**\n * Regenerate an AI response by finding the last human message before the specified AI message\n * and resubmitting from that point\n */\n const regenerateMessage = useCallback(\n async (messageId: string) => {\n const allMessages = combinedMessages || [];\n const messageIndex = allMessages.findIndex((msg) => msg.id === messageId);\n\n if (messageIndex === -1) {\n logger.error(\"Message not found for regeneration:\", messageId);\n return;\n }\n\n // Find the last human message before this AI message\n let lastHumanIndex = messageIndex - 1;\n while (lastHumanIndex >= 0 && allMessages[lastHumanIndex].type !== \"human\") {\n lastHumanIndex--;\n }\n\n if (lastHumanIndex === -1) {\n logger.error(\"No human message found before AI message:\", messageId);\n return;\n }\n\n // Get all messages up to and including the last human message\n const messagesToKeep = allMessages.slice(0, lastHumanIndex + 1);\n\n // Remove the last human message from the list since we'll resubmit it\n const messagesBeforeHuman = messagesToKeep.slice(0, -1);\n const humanMessage = messagesToKeep[messagesToKeep.length - 1];\n\n // Clear local messages that came after the human message\n setLocalMessages((prev) =>\n prev.filter((msg) => {\n const msgIndex = allMessages.findIndex((m) => m.id === msg.id);\n return msgIndex < lastHumanIndex;\n })\n );\n\n // Clear local UI that came after the human message \n setLocalUI((prev) =>\n prev.filter((ui) => {\n const msgIndex = allMessages.findIndex((m) => m.id === ui.id);\n return msgIndex < lastHumanIndex;\n })\n );\n\n // Resubmit from the human message\n await streamValue.submit(\n { messages: [...messagesBeforeHuman, humanMessage] },\n {\n streamMode: [\"values\"],\n streamSubgraphs: true,\n streamResumable: true,\n }\n );\n },\n [combinedMessages, streamValue, identity, configuration, setLocalMessages, setLocalUI]\n );\n\n useEffect(() => {\n checkGraphStatus(apiUrl, identity?.authToken).then((ok) => {\n if (!ok) {\n toast.error(\"Failed to connect to LangGraph server\", {\n description: `Unable to reach ${apiUrl}`,\n duration: 10000,\n });\n }\n });\n }, [apiUrl, identity?.authToken]);\n\n const fetchCatalogMemoized = useCallback(async () => {\n // Return cached data if already fetched\n if (catalogFetched && catalogCache !== null) {\n return catalogCache;\n }\n\n // Fetch catalog only once\n if (!catalogFetched) {\n setCatalogFetched(true);\n const data = await fetchCatalog(apiUrl, identity?.authToken);\n setCatalogCache(data);\n return data;\n }\n\n return catalogCache;\n }, [apiUrl, identity?.authToken, catalogFetched, catalogCache]);\n\n const value = useMemo(\n () => ({\n ...streamValue,\n messages: combinedMessages, // Override with combined messages\n values: {\n ...streamValue.values,\n ui: combinedUI, // Override with combined UI\n },\n sendMessage,\n submitMessage,\n regenerateMessage,\n fetchCatalog: fetchCatalogMemoized,\n }),\n [streamValue, combinedMessages, combinedUI, sendMessage, submitMessage, regenerateMessage, fetchCatalogMemoized]\n );\n\n return (\n <StreamContext.Provider value={value}>{children}</StreamContext.Provider>\n );\n};\n\n/**\n * Provides streaming message functionality for real-time AI responses.\n * Manages message state, handles streaming updates, and provides submit/sendMessage functions.\n * \n * @example\n * ```tsx\n * <StreamProvider>\n * <ChatInterface />\n * </StreamProvider>\n * ```\n */\nexport function StreamProvider({ children }: { children: ReactNode }) {\n return <StreamSession>{children}</StreamSession>;\n}\n\n/**\n * Hook to access the streaming context.\n * Provides access to messages, loading state, and functions to submit messages.\n * \n * @throws {Error} If used outside of StreamProvider\n * \n * @example\n * ```tsx\n * const { messages, isLoading, submit, sendMessage } = useStreamContext();\n * ```\n */\nexport function useStreamContext(): StreamContextType {\n const ctx = useContext(StreamContext);\n if (!ctx) {\n throw new Error(\"useStreamContext must be used within StreamProvider\");\n }\n return ctx;\n}"],"names":["useTypedStream","useStream","StreamContext","createContext","checkGraphStatus","apiUrl","authToken","logger","fetchCatalog","res","sleep","ms","resolve","StreamSession","children","assistantId","identity","useChatRuntime","mode","threadId","setThreadId","getThreads","setThreads","configuration","useThread","localMessages","setLocalMessages","useState","localUI","setLocalUI","catalogFetched","setCatalogFetched","catalogCache","setCatalogCache","streamValue","data","options","reasoningMessages","scan","obj","o","m","ak","val","prev","prevMessages","prevIds","newMessages","event","isUIMessage","isRemoveUIMessage","ui","uiMessageReducer","id","err","sendMessage","useCallback","message","messageId","uuidv4","messageObj","uiWithMessageId","index","currentMessages","mergedContext","combinedMessages","useMemo","allMessages","seen","msg","combinedUI","allUI","key","submitMessage","allCurrentMessages","regenerateMessage","messageIndex","lastHumanIndex","messagesToKeep","messagesBeforeHuman","humanMessage","useEffect","ok","toast","fetchCatalogMemoized","value","jsx","StreamProvider","useStreamContext","ctx","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"Stream.cjs.js","sources":["../../src/providers/Stream.tsx"],"sourcesContent":["/* @refresh reset */\nimport { useChatRuntime } from \"@/providers/ChatRuntime\";\nimport { logger } from \"@/utils/logger\";\nimport { type AIMessage, type Message } from \"@langchain/langgraph-sdk\";\n\n// Derive the tool-call types from AIMessage since the SDK doesn't re-export them\ntype ToolCall = NonNullable<AIMessage[\"tool_calls\"]>[number];\ntype InvalidToolCall = NonNullable<AIMessage[\"invalid_tool_calls\"]>[number];\nimport { useStream } from \"@langchain/langgraph-sdk/react\";\nimport {\n isRemoveUIMessage,\n isUIMessage,\n type RemoveUIMessage,\n type UIMessage,\n uiMessageReducer,\n} from \"@langchain/langgraph-sdk/react-ui\";\nimport {\n createContext,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { toast } from \"sonner\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { useThread } from \"./Thread\";\n\nexport type TodoItem = {\n id: string;\n content: string;\n status: \"pending\" | \"in_progress\" | \"completed\";\n updatedAt?: string | number | Date;\n run_id?: string;\n runId?: string;\n messageId?: string;\n checkpoint?: string;\n};\n\nexport type StateType = {\n messages: Message[];\n ui?: UIMessage[];\n suggestions?: string[];\n todos?: TodoItem[];\n};\n\nconst useTypedStream = useStream<\n StateType,\n {\n UpdateType: {\n messages?: Message[] | Message | string;\n ui?: (UIMessage | RemoveUIMessage)[] | UIMessage | RemoveUIMessage;\n };\n CustomEventType: UIMessage | RemoveUIMessage;\n }\n>;\n\ntype StreamContextType = ReturnType<typeof useTypedStream> & {\n sendMessage: (\n message: Message | string,\n options?: {\n /** If true, message is meant for agent only (not user-visible) */\n type?: Message[\"type\"];\n /** Name field required for function/tool messages */\n name?: string;\n /** If true, message is hidden from user UI */\n hidden?: boolean;\n /** Tool calls associated with this message */\n tool_calls?: ToolCall[];\n /** Invalid tool calls associated with this message */\n invalid_tool_calls?: InvalidToolCall[];\n /** If provided, use this ID for the message instead of generating one */\n tool_call_id?: string;\n /** Additional kwargs to attach to the message */\n additional_kwargs?: Record<string, unknown>;\n /** UI components to display alongside the message */\n ui?: UIMessage[];\n /** Custom ID for the message (will also be used for UI components) */\n id?: string;\n /** Custom context to override/merge with identity */\n context?: Record<string, unknown>;\n }\n ) => Promise<void>;\n submitMessage: (\n message: Message,\n options?: {\n streamMode?: (\"values\" | \"updates\" | \"messages\" | \"custom\" | \"debug\")[];\n streamSubgraphs?: boolean;\n streamResumable?: boolean;\n contextValues?: Record<string, unknown>;\n }\n ) => Promise<void>;\n regenerateMessage: (messageId: string) => Promise<void>;\n fetchCatalog: () => Promise<unknown>;\n};\n\nconst StreamContext = createContext<StreamContextType | undefined>(undefined);\n\nasync function checkGraphStatus(apiUrl: string, authToken: string | null | undefined) {\n try {\n const res = await fetch(`${apiUrl}/info`, {\n headers: authToken ? { Authorization: `Bearer ${authToken}` } : undefined,\n });\n return res.ok;\n } catch {\n logger.error(\"Failed to initialize LangGraph Agent\");\n }\n}\n\nasync function fetchCatalog(apiUrl: string, authToken: string | null | undefined) {\n try {\n const res = await fetch(`${apiUrl}/agents/catalog`, {\n headers: authToken ? { Authorization: `Bearer ${authToken}` } : undefined,\n });\n if (res.ok) {\n const data = await res.json();\n return data;\n }\n return null;\n }\n catch {\n logger.error(\"Failed to fetch LangGraph Catalog\");\n return null;\n }\n}\n\nasync function sleep(ms = 6000) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nconst StreamSession = ({ children }: { children: ReactNode }) => {\n const { apiUrl, assistantId, identity } = useChatRuntime();\n const { mode, threadId, setThreadId, getThreads, setThreads, configuration } = useThread();\n\n // Store local-only AI messages that shouldn't trigger backend calls\n const [localMessages, setLocalMessages] = useState<Message[]>([]);\n // Store local-only UI components\n const [localUI, setLocalUI] = useState<UIMessage[]>([]);\n // Track if catalog has been fetched to prevent duplicate calls\n const [catalogFetched, setCatalogFetched] = useState(false);\n const [catalogCache, setCatalogCache] = useState<unknown>(null);\n\n const streamValue = useTypedStream({\n apiUrl,\n assistantId,\n threadId: mode === \"multi\" ? threadId : null,\n defaultHeaders: identity?.authToken\n ? { Authorization: `Bearer ${identity?.authToken}` }\n : undefined,\n fetchStateHistory: true,\n onUpdateEvent: (data, options) => {\n // Scan update data (potentially nested by node name) for AI messages\n // with reasoning_content or tool_status in additional_kwargs.\n // Merge these into existing messages so they're available during streaming.\n const enrichedMessages: Message[] = [];\n\n const scan = (obj: unknown) => {\n if (!obj || typeof obj !== \"object\") return;\n const o = obj as Record<string, unknown>;\n if (Array.isArray(o.messages)) {\n for (const m of o.messages as Message[]) {\n const ak = (m as Record<string, unknown>).additional_kwargs as Record<string, unknown> | undefined;\n if (m?.type === \"ai\" && m.id && ak) {\n const hasReasoning = typeof ak.reasoning_content === \"string\" && ak.reasoning_content.length > 0;\n const hasToolStatus = Array.isArray(ak.tool_status) && (ak.tool_status as unknown[]).length > 0;\n if (hasReasoning || hasToolStatus) {\n enrichedMessages.push(m);\n }\n }\n }\n }\n for (const val of Object.values(o)) {\n if (val && typeof val === \"object\" && !Array.isArray(val)) {\n scan(val);\n }\n }\n };\n\n scan(data);\n\n // Scan update data for todos. We track whether the field was present at all\n // (foundTodos !== undefined) vs absent (foundTodos === undefined), so we can\n // distinguish \"event has todos: []\" (preserve previous) from \"event has no\n // todos field\" (don't touch). A non-empty array updates the stored todos.\n // To explicitly clear todos, the backend should send a dedicated signal\n // (e.g. a custom event) rather than relying on an empty array.\n let foundTodos: unknown[] | undefined;\n const scanTodos = (obj: unknown) => {\n if (!obj || typeof obj !== \"object\") return;\n const o = obj as Record<string, unknown>;\n if (\"todos\" in o && Array.isArray(o.todos)) {\n // Prefer non-empty arrays; keep existing foundTodos if we already found one.\n if (o.todos.length > 0 || foundTodos === undefined) {\n foundTodos = o.todos;\n }\n }\n for (const val of Object.values(o)) {\n if (val && typeof val === \"object\" && !Array.isArray(val)) {\n scanTodos(val);\n }\n }\n };\n scanTodos(data);\n\n if (enrichedMessages.length > 0 || foundTodos !== undefined) {\n options.mutate((prev) => {\n let result = prev;\n\n if (enrichedMessages.length > 0) {\n const prevMessages = (result.messages ?? []) as Message[];\n const enrichedById = new Map<string, Message>();\n for (const m of enrichedMessages) {\n if (m.id) enrichedById.set(m.id, m);\n }\n\n let changed = false;\n const updatedMessages = prevMessages.map((m) => {\n if (!m.id || !enrichedById.has(m.id)) return m;\n const enriched = enrichedById.get(m.id)!;\n enrichedById.delete(m.id);\n changed = true;\n const enrichedKwargs = (enriched as Record<string, unknown>).additional_kwargs as Record<string, unknown> | undefined;\n return {\n ...m,\n additional_kwargs: {\n ...(m.additional_kwargs ?? {}),\n ...(enrichedKwargs ?? {}),\n },\n };\n });\n\n if (changed) {\n result = { ...result, messages: updatedMessages };\n }\n }\n\n if (foundTodos !== undefined) {\n // If the event delivered a non-empty array, update; if empty, preserve\n // the previous value so subgraph events that don't own todos don't wipe them.\n if (foundTodos.length > 0) {\n result = { ...result, todos: foundTodos as TodoItem[] };\n }\n // foundTodos.length === 0: field was present but empty — keep prev.todos\n }\n\n return result === prev ? prev : result;\n });\n }\n },\n onCustomEvent: (event, options) => {\n if (isUIMessage(event) || isRemoveUIMessage(event)) {\n options.mutate((prev) => {\n logger.debug(\"UI Event received in StreamProvider:\", event);\n const ui = uiMessageReducer(prev.ui ?? [], event);\n return { ...prev, ui };\n });\n }\n },\n\n onThreadId: (id) => {\n if (!id) return;\n if (mode === \"single\") {\n // lock once\n if (!threadId) setThreadId(id);\n } else {\n // switch freely\n setThreadId(id);\n // Refetch threads list when thread ID changes.\n // Wait for some seconds before fetching so we're able to get the new thread that was created.\n sleep().then(() => getThreads().then(setThreads).catch((err) => logger.error(\"Failed to refresh threads:\", err)));\n }\n },\n });\n\n /**\n * Send a message to the agent programmatically\n * Useful for triggering agent actions without user-visible messages\n * e.g., \"login completed\", \"card clicked: {id}\"\n */\n const sendMessage = useCallback(\n async (\n message: Message | string,\n options?: {\n type?: Message[\"type\"];\n name?: string;\n hidden?: boolean;\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n tool_call_id?: string;\n additional_kwargs?: Record<string, unknown>;\n ui?: UIMessage[];\n id?: string; // Allow passing custom ID\n context?: Record<string, unknown>; // Allow passing custom context to override identity\n }\n ) => {\n // Use provided ID or generate new one\n const messageId = options?.id || uuidv4();\n\n const messageObj: Message =\n typeof message === \"string\"\n ? ({\n id: messageId, // Use the determined ID\n type: options?.type ?? \"human\",\n content: message,\n ...(options?.name && { name: options.name }),\n ...(options?.tool_calls && { tool_calls: options.tool_calls }),\n ...(options?.invalid_tool_calls && { invalid_tool_calls: options.invalid_tool_calls }),\n ...(options?.tool_call_id && { tool_call_id: options.tool_call_id }),\n ...((options?.additional_kwargs || options?.hidden) && {\n additional_kwargs: {\n ...(options?.hidden && { hidden: true }),\n ...(options?.additional_kwargs ?? {}),\n }\n }),\n } as Message)\n : {\n ...message,\n id: messageId, // Override with determined ID\n // Allow overriding message fields with options\n ...(options?.tool_calls && { tool_calls: options.tool_calls }),\n ...(options?.additional_kwargs && {\n additional_kwargs: {\n ...message.additional_kwargs,\n ...options.additional_kwargs,\n }\n }),\n };\n\n // console.log(\"Sending message via sendMessage:\", messageObj); → converted to debug log\n logger.debug(\"Sending message via sendMessage:\", messageObj);\n\n // If message type is \"ai\", just append to local state without submitting to agent\n // This is useful for injecting initial messages or system messages that don't need agent processing\n if (options?.type === \"ai\") {\n setLocalMessages((prev) => [...prev, messageObj]);\n logger.debug(\"Appended AI message to localMessages:\", options?.ui);\n // Also store any UI components, linking them to the message id\n if (options.ui && options.ui.length > 0) {\n const uiWithMessageId = options.ui.map((ui, index) => ({\n ...ui,\n id: messageId, // Link to the message ID so CustomComponentRender can find it\n // Ensure each UI component has a unique identifier for React keys\n _key: (ui as UIMessage & { _key?: string })._key || `${messageId}-ui-${index}`,\n })) as UIMessage[];\n setLocalUI((prev) => [...prev, ...uiWithMessageId]);\n }\n return;\n }\n\n // For non-AI messages, submit to the agent\n const currentMessages = streamValue.messages || [];\n // Merge identity with custom context, custom context takes precedence\n const mergedContext = options?.context\n ? { ...identity, ...options.context, ...configuration }\n : identity || {};\n\n await streamValue.submit(\n { messages: [...currentMessages, messageObj] },\n {\n context: mergedContext,\n streamMode: [\"values\", \"messages-tuple\", \"updates\", \"custom\"],\n }\n );\n },\n [streamValue, identity, configuration, setLocalMessages, setLocalUI]\n );\n\n // Combine stream messages with local AI messages, deduplicating by ID\n const combinedMessages = useMemo(() => {\n const allMessages = [...localMessages, ...(streamValue.messages || [])];\n // Deduplicate by message ID, keeping the first occurrence\n const seen = new Set<string>();\n return allMessages.filter(msg => {\n if (!msg.id) return true; // Keep messages without IDs\n if (seen.has(msg.id)) return false;\n seen.add(msg.id);\n return true;\n });\n }, [localMessages, streamValue.messages]);\n\n // Combine local UI with stream UI, deduplicating by unique key\n const combinedUI = useMemo(() => {\n logger.debug(\"Combining local UI with stream UI:\", localUI, streamValue.values?.ui);\n const allUI = [...localUI, ...(streamValue.values?.ui || [])];\n // Deduplicate by _key or id+name combination\n const seen = new Set<string>();\n return allUI.filter(ui => {\n const key = (ui as UIMessage & { _key?: string })._key || `${ui.id}-${ui.name}`;\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n }, [localUI, streamValue.values?.ui]);\n\n const submitMessage = useCallback(\n async (\n message: Message,\n options?: {\n streamMode?: (\"values\" | \"updates\" | \"messages\" | \"custom\" | \"debug\")[];\n streamSubgraphs?: boolean;\n streamResumable?: boolean;\n contextValues?: Record<string, unknown>;\n }\n ) => {\n // Get ALL current messages (including local AI messages)\n const allCurrentMessages = combinedMessages || [];\n\n await streamValue.submit(\n { messages: [...allCurrentMessages, message] },\n {\n context: { ...identity, ...options?.contextValues },\n streamMode: options?.streamMode || [\"values\", \"messages-tuple\", \"updates\", \"custom\"],\n streamSubgraphs: options?.streamSubgraphs ?? true,\n streamResumable: options?.streamResumable ?? true,\n optimisticValues: (prev) => ({\n ...prev,\n messages: [...allCurrentMessages, message],\n }),\n }\n );\n },\n [streamValue, identity, combinedMessages]\n );\n\n /**\n * Regenerate an AI response by finding the last human message before the specified AI message\n * and resubmitting from that point\n */\n const regenerateMessage = useCallback(\n async (messageId: string) => {\n const allMessages = combinedMessages || [];\n const messageIndex = allMessages.findIndex((msg) => msg.id === messageId);\n\n if (messageIndex === -1) {\n logger.error(\"Message not found for regeneration:\", messageId);\n return;\n }\n\n // Find the last human message before this AI message\n let lastHumanIndex = messageIndex - 1;\n while (lastHumanIndex >= 0 && allMessages[lastHumanIndex].type !== \"human\") {\n lastHumanIndex--;\n }\n\n if (lastHumanIndex === -1) {\n logger.error(\"No human message found before AI message:\", messageId);\n return;\n }\n\n // Get all messages up to and including the last human message\n const messagesToKeep = allMessages.slice(0, lastHumanIndex + 1);\n\n // Remove the last human message from the list since we'll resubmit it\n const messagesBeforeHuman = messagesToKeep.slice(0, -1);\n const humanMessage = messagesToKeep[messagesToKeep.length - 1];\n\n // Clear local messages that came after the human message\n setLocalMessages((prev) =>\n prev.filter((msg) => {\n const msgIndex = allMessages.findIndex((m) => m.id === msg.id);\n return msgIndex < lastHumanIndex;\n })\n );\n\n // Clear local UI that came after the human message \n setLocalUI((prev) =>\n prev.filter((ui) => {\n const msgIndex = allMessages.findIndex((m) => m.id === ui.id);\n return msgIndex < lastHumanIndex;\n })\n );\n\n // Resubmit from the human message\n await streamValue.submit(\n { messages: [...messagesBeforeHuman, humanMessage] },\n {\n streamMode: [\"values\"],\n streamSubgraphs: true,\n streamResumable: true,\n }\n );\n },\n [combinedMessages, streamValue, identity, configuration, setLocalMessages, setLocalUI]\n );\n\n useEffect(() => {\n checkGraphStatus(apiUrl, identity?.authToken).then((ok) => {\n if (!ok) {\n toast.error(\"Failed to connect to LangGraph server\", {\n description: `Unable to reach ${apiUrl}`,\n duration: 10000,\n });\n }\n });\n }, [apiUrl, identity?.authToken]);\n\n const fetchCatalogMemoized = useCallback(async () => {\n // Return cached data if already fetched\n if (catalogFetched && catalogCache !== null) {\n return catalogCache;\n }\n\n // Fetch catalog only once\n if (!catalogFetched) {\n setCatalogFetched(true);\n const data = await fetchCatalog(apiUrl, identity?.authToken);\n setCatalogCache(data);\n return data;\n }\n\n return catalogCache;\n }, [apiUrl, identity?.authToken, catalogFetched, catalogCache]);\n\n const value = useMemo(\n () => ({\n ...streamValue,\n messages: combinedMessages, // Override with combined messages\n values: {\n ...streamValue.values,\n ui: combinedUI, // Override with combined UI\n },\n sendMessage,\n submitMessage,\n regenerateMessage,\n fetchCatalog: fetchCatalogMemoized,\n }),\n [streamValue, combinedMessages, combinedUI, sendMessage, submitMessage, regenerateMessage, fetchCatalogMemoized]\n );\n\n return (\n <StreamContext.Provider value={value}>{children}</StreamContext.Provider>\n );\n};\n\n/**\n * Provides streaming message functionality for real-time AI responses.\n * Manages message state, handles streaming updates, and provides submit/sendMessage functions.\n * \n * @example\n * ```tsx\n * <StreamProvider>\n * <ChatInterface />\n * </StreamProvider>\n * ```\n */\nexport function StreamProvider({ children }: { children: ReactNode }) {\n return <StreamSession>{children}</StreamSession>;\n}\n\n/**\n * Hook to access the streaming context.\n * Provides access to messages, loading state, and functions to submit messages.\n * \n * @throws {Error} If used outside of StreamProvider\n * \n * @example\n * ```tsx\n * const { messages, isLoading, submit, sendMessage } = useStreamContext();\n * ```\n */\nexport function useStreamContext(): StreamContextType {\n const ctx = useContext(StreamContext);\n if (!ctx) {\n throw new Error(\"useStreamContext must be used within StreamProvider\");\n }\n return ctx;\n}"],"names":["useTypedStream","useStream","StreamContext","createContext","checkGraphStatus","apiUrl","authToken","logger","fetchCatalog","res","sleep","ms","resolve","StreamSession","children","assistantId","identity","useChatRuntime","mode","threadId","setThreadId","getThreads","setThreads","configuration","useThread","localMessages","setLocalMessages","useState","localUI","setLocalUI","catalogFetched","setCatalogFetched","catalogCache","setCatalogCache","streamValue","data","options","enrichedMessages","scan","obj","o","m","ak","hasReasoning","hasToolStatus","val","foundTodos","scanTodos","prev","result","prevMessages","enrichedById","changed","updatedMessages","enriched","enrichedKwargs","event","isUIMessage","isRemoveUIMessage","ui","uiMessageReducer","id","err","sendMessage","useCallback","message","messageId","uuidv4","messageObj","uiWithMessageId","index","currentMessages","mergedContext","combinedMessages","useMemo","allMessages","seen","msg","combinedUI","allUI","key","submitMessage","allCurrentMessages","regenerateMessage","messageIndex","lastHumanIndex","messagesToKeep","messagesBeforeHuman","humanMessage","useEffect","ok","toast","fetchCatalogMemoized","value","jsx","StreamProvider","useStreamContext","ctx","useContext"],"mappings":"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"}
@@ -1,21 +1,53 @@
1
1
  import { AIMessage, Message } from '@langchain/langgraph-sdk';
2
- import { UseStream } from '@langchain/langgraph-sdk/react';
3
2
  import { RemoveUIMessage, UIMessage } from '@langchain/langgraph-sdk/react-ui';
4
3
  import { ReactNode } from 'react';
5
4
  type ToolCall = NonNullable<AIMessage["tool_calls"]>[number];
6
5
  type InvalidToolCall = NonNullable<AIMessage["invalid_tool_calls"]>[number];
6
+ export type TodoItem = {
7
+ id: string;
8
+ content: string;
9
+ status: "pending" | "in_progress" | "completed";
10
+ updatedAt?: string | number | Date;
11
+ run_id?: string;
12
+ runId?: string;
13
+ messageId?: string;
14
+ checkpoint?: string;
15
+ };
7
16
  export type StateType = {
8
17
  messages: Message[];
9
18
  ui?: UIMessage[];
10
19
  suggestions?: string[];
20
+ todos?: TodoItem[];
21
+ };
22
+ declare const useTypedStream: {
23
+ (options: import('@langchain/langgraph-sdk/react').UseStreamOptions<StateType, {
24
+ UpdateType: {
25
+ messages?: Message[] | Message | string;
26
+ ui?: (UIMessage | RemoveUIMessage)[] | UIMessage | RemoveUIMessage;
27
+ };
28
+ CustomEventType: UIMessage | RemoveUIMessage;
29
+ }>): import('@langchain/langgraph-sdk').BaseStream<StateType, import('@langchain/langgraph-sdk').DefaultToolCall, {
30
+ UpdateType: {
31
+ messages?: Message[] | Message | string;
32
+ ui?: (UIMessage | RemoveUIMessage)[] | UIMessage | RemoveUIMessage;
33
+ };
34
+ CustomEventType: UIMessage | RemoveUIMessage;
35
+ }>;
36
+ (options: import('@langchain/langgraph-sdk/react').UseStreamCustomOptions<StateType, {
37
+ UpdateType: {
38
+ messages?: Message[] | Message | string;
39
+ ui?: (UIMessage | RemoveUIMessage)[] | UIMessage | RemoveUIMessage;
40
+ };
41
+ CustomEventType: UIMessage | RemoveUIMessage;
42
+ }>): import('@langchain/langgraph-sdk').BaseStream<StateType, import('@langchain/langgraph-sdk').DefaultToolCall, {
43
+ UpdateType: {
44
+ messages?: Message[] | Message | string;
45
+ ui?: (UIMessage | RemoveUIMessage)[] | UIMessage | RemoveUIMessage;
46
+ };
47
+ CustomEventType: UIMessage | RemoveUIMessage;
48
+ }>;
11
49
  };
12
- type StreamContextType = UseStream<StateType, {
13
- UpdateType: {
14
- messages?: Message[] | Message | string;
15
- ui?: (UIMessage | RemoveUIMessage)[] | UIMessage | RemoveUIMessage;
16
- };
17
- CustomEventType: UIMessage | RemoveUIMessage;
18
- }> & {
50
+ type StreamContextType = ReturnType<typeof useTypedStream> & {
19
51
  sendMessage: (message: Message | string, options?: {
20
52
  /** If true, message is meant for agent only (not user-visible) */
21
53
  type?: Message["type"];
@@ -1 +1 @@
1
- {"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["../../src/providers/Stream.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGxE,KAAK,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,KAAK,eAAe,GAAG,WAAW,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5E,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,SAAS,EAEf,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAKf,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAaF,KAAK,iBAAiB,GAAG,SAAS,CAAC,SAAS,EAAE;IAC5C,UAAU,EAAE;QAEV,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC;QACxC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,eAAe,CAAC,EAAE,GAAG,SAAS,GAAG,eAAe,CAAC;KACpE,CAAC;IACF,eAAe,EAAE,SAAS,GAAG,eAAe,CAAC;CAC9C,CAAC,GAAG;IACH,WAAW,EAAE,CACX,OAAO,EAAE,OAAO,GAAG,MAAM,EACzB,OAAO,CAAC,EAAE;QACR,kEAAkE;QAClE,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACvB,qDAAqD;QACrD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,8CAA8C;QAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,8CAA8C;QAC9C,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;QACxB,sDAAsD;QACtD,kBAAkB,CAAC,EAAE,eAAe,EAAE,CAAC;QACvC,yEAAyE;QACzE,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,iDAAiD;QACjD,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,qDAAqD;QACrD,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;QACjB,sEAAsE;QACtE,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,qDAAqD;QACrD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,KACE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,EAAE,CACb,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,CAAC,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;QACxE,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACzC,KACE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AA8XF;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAEnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,iBAAiB,CAMpD"}
1
+ {"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["../../src/providers/Stream.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGxE,KAAK,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,KAAK,eAAe,GAAG,WAAW,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,SAAS,EAEf,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAKf,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,cAAc;;oBAGJ;YACV,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC;YACxC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,eAAe,CAAC,EAAE,GAAG,SAAS,GAAG,eAAe,CAAC;SACpE;yBACgB,SAAS,GAAG,eAAe;;oBAJhC;YACV,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC;YACxC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,eAAe,CAAC,EAAE,GAAG,SAAS,GAAG,eAAe,CAAC;SACpE;yBACgB,SAAS,GAAG,eAAe;;;oBAJhC;YACV,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC;YACxC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,eAAe,CAAC,EAAE,GAAG,SAAS,GAAG,eAAe,CAAC;SACpE;yBACgB,SAAS,GAAG,eAAe;;oBAJhC;YACV,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC;YACxC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,eAAe,CAAC,EAAE,GAAG,SAAS,GAAG,eAAe,CAAC;SACpE;yBACgB,SAAS,GAAG,eAAe;;CAE/C,CAAC;AAEF,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,GAAG;IAC3D,WAAW,EAAE,CACX,OAAO,EAAE,OAAO,GAAG,MAAM,EACzB,OAAO,CAAC,EAAE;QACR,kEAAkE;QAClE,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACvB,qDAAqD;QACrD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,8CAA8C;QAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,8CAA8C;QAC9C,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;QACxB,sDAAsD;QACtD,kBAAkB,CAAC,EAAE,eAAe,EAAE,CAAC;QACvC,yEAAyE;QACzE,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,iDAAiD;QACjD,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,qDAAqD;QACrD,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;QACjB,sEAAsE;QACtE,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,qDAAqD;QACrD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,KACE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,EAAE,CACb,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,CAAC,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;QACxE,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACzC,KACE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAwbF;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAEnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,iBAAiB,CAMpD"}
@@ -1,73 +1,105 @@
1
- import { jsx as B } from "react/jsx-runtime";
2
- import { useChatRuntime as O } from "./ChatRuntime.es.js";
3
- import { logger as g } from "../utils/logger.es.js";
1
+ import { jsx as L } from "react/jsx-runtime";
2
+ import { useChatRuntime as q } from "./ChatRuntime.es.js";
3
+ import { logger as f } from "../utils/logger.es.js";
4
4
  import "@langchain/langgraph-sdk";
5
- import { useStream as K } from "@langchain/langgraph-sdk/react";
6
- import { isUIMessage as N, isRemoveUIMessage as W, uiMessageReducer as q } from "@langchain/langgraph-sdk/react-ui";
7
- import { useContext as D, createContext as J, useState as v, useCallback as I, useMemo as S, useEffect as Q } from "react";
8
- import { toast as X } from "sonner";
9
- import { useThread as Y } from "./Thread.es.js";
10
- import Z from "../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v4.es.js";
11
- const ee = K, E = J(void 0);
12
- async function te(u, i) {
5
+ import { useStream as D } from "@langchain/langgraph-sdk/react";
6
+ import { isUIMessage as J, isRemoveUIMessage as Q, uiMessageReducer as X } from "@langchain/langgraph-sdk/react-ui";
7
+ import { useContext as Y, createContext as Z, useState as b, useCallback as k, useMemo as A, useEffect as ee } from "react";
8
+ import { toast as te } from "sonner";
9
+ import { useThread as se } from "./Thread.es.js";
10
+ import ae from "../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v4.es.js";
11
+ const re = D, P = Z(void 0);
12
+ async function ne(c, l) {
13
13
  try {
14
- return (await fetch(`${u}/info`, {
15
- headers: i ? { Authorization: `Bearer ${i}` } : void 0
14
+ return (await fetch(`${c}/info`, {
15
+ headers: l ? { Authorization: `Bearer ${l}` } : void 0
16
16
  })).ok;
17
17
  } catch {
18
- g.error("Failed to initialize LangGraph Agent");
18
+ f.error("Failed to initialize LangGraph Agent");
19
19
  }
20
20
  }
21
- async function ae(u, i) {
21
+ async function oe(c, l) {
22
22
  try {
23
- const h = await fetch(`${u}/agents/catalog`, {
24
- headers: i ? { Authorization: `Bearer ${i}` } : void 0
23
+ const v = await fetch(`${c}/agents/catalog`, {
24
+ headers: l ? { Authorization: `Bearer ${l}` } : void 0
25
25
  });
26
- return h.ok ? await h.json() : null;
26
+ return v.ok ? await v.json() : null;
27
27
  } catch {
28
- return g.error("Failed to fetch LangGraph Catalog"), null;
28
+ return f.error("Failed to fetch LangGraph Catalog"), null;
29
29
  }
30
30
  }
31
- async function se(u = 6e3) {
32
- return new Promise((i) => setTimeout(i, u));
31
+ async function ie(c = 6e3) {
32
+ return new Promise((l) => setTimeout(l, c));
33
33
  }
34
- const re = ({ children: u }) => {
35
- const { apiUrl: i, assistantId: h, identity: l } = O(), { mode: C, threadId: p, setThreadId: T, getThreads: L, setThreads: P, configuration: w } = Y(), [U, _] = v([]), [b, y] = v([]), [x, j] = v(!1), [M, G] = v(null), o = ee({
36
- apiUrl: i,
37
- assistantId: h,
38
- threadId: C === "multi" ? p : null,
39
- defaultHeaders: l?.authToken ? { Authorization: `Bearer ${l?.authToken}` } : void 0,
34
+ const le = ({ children: c }) => {
35
+ const { apiUrl: l, assistantId: v, identity: d } = q(), { mode: T, threadId: U, setThreadId: $, getThreads: G, setThreads: H, configuration: x } = se(), [R, w] = b([]), [S, M] = b([]), [C, O] = b(!1), [I, V] = b(null), i = re({
36
+ apiUrl: l,
37
+ assistantId: v,
38
+ threadId: T === "multi" ? U : null,
39
+ defaultHeaders: d?.authToken ? { Authorization: `Bearer ${d?.authToken}` } : void 0,
40
40
  fetchStateHistory: !0,
41
41
  onUpdateEvent: (t, e) => {
42
- const a = [], s = (c) => {
43
- if (!c || typeof c != "object") return;
44
- const d = c;
45
- if (Array.isArray(d.messages))
46
- for (const r of d.messages) {
47
- const n = r.additional_kwargs;
48
- r?.type === "ai" && r.id && typeof n?.reasoning_content == "string" && n.reasoning_content.length > 0 && a.push(r);
42
+ const a = [], n = (o) => {
43
+ if (!o || typeof o != "object") return;
44
+ const s = o;
45
+ if (Array.isArray(s.messages))
46
+ for (const r of s.messages) {
47
+ const g = r.additional_kwargs;
48
+ if (r?.type === "ai" && r.id && g) {
49
+ const h = typeof g.reasoning_content == "string" && g.reasoning_content.length > 0, p = Array.isArray(g.tool_status) && g.tool_status.length > 0;
50
+ (h || p) && a.push(r);
51
+ }
49
52
  }
50
- for (const r of Object.values(d))
51
- r && typeof r == "object" && !Array.isArray(r) && s(r);
53
+ for (const r of Object.values(s))
54
+ r && typeof r == "object" && !Array.isArray(r) && n(r);
52
55
  };
53
- s(t), a.length > 0 && e.mutate((c) => {
54
- const d = c.messages ?? [], r = new Set(d.map((m) => m.id).filter(Boolean)), n = a.filter((m) => !r.has(m.id));
55
- return n.length === 0 ? c : { ...c, messages: [...d, ...n] };
56
+ n(t);
57
+ let u;
58
+ const _ = (o) => {
59
+ if (!o || typeof o != "object") return;
60
+ const s = o;
61
+ "todos" in s && Array.isArray(s.todos) && (s.todos.length > 0 || u === void 0) && (u = s.todos);
62
+ for (const r of Object.values(s))
63
+ r && typeof r == "object" && !Array.isArray(r) && _(r);
64
+ };
65
+ _(t), (a.length > 0 || u !== void 0) && e.mutate((o) => {
66
+ let s = o;
67
+ if (a.length > 0) {
68
+ const r = s.messages ?? [], g = /* @__PURE__ */ new Map();
69
+ for (const m of a)
70
+ m.id && g.set(m.id, m);
71
+ let h = !1;
72
+ const p = r.map((m) => {
73
+ if (!m.id || !g.has(m.id)) return m;
74
+ const N = g.get(m.id);
75
+ g.delete(m.id), h = !0;
76
+ const W = N.additional_kwargs;
77
+ return {
78
+ ...m,
79
+ additional_kwargs: {
80
+ ...m.additional_kwargs ?? {},
81
+ ...W ?? {}
82
+ }
83
+ };
84
+ });
85
+ h && (s = { ...s, messages: p });
86
+ }
87
+ return u !== void 0 && u.length > 0 && (s = { ...s, todos: u }), s === o ? o : s;
56
88
  });
57
89
  },
58
90
  onCustomEvent: (t, e) => {
59
- (N(t) || W(t)) && e.mutate((a) => {
60
- g.debug("UI Event received in StreamProvider:", t);
61
- const s = q(a.ui ?? [], t);
62
- return { ...a, ui: s };
91
+ (J(t) || Q(t)) && e.mutate((a) => {
92
+ f.debug("UI Event received in StreamProvider:", t);
93
+ const n = X(a.ui ?? [], t);
94
+ return { ...a, ui: n };
63
95
  });
64
96
  },
65
97
  onThreadId: (t) => {
66
- t && (C === "single" ? p || T(t) : (T(t), se().then(() => L().then(P).catch((e) => g.error("Failed to refresh threads:", e)))));
98
+ t && (T === "single" ? U || $(t) : ($(t), ie().then(() => G().then(H).catch((e) => f.error("Failed to refresh threads:", e)))));
67
99
  }
68
- }), A = I(
100
+ }), F = k(
69
101
  async (t, e) => {
70
- const a = e?.id || Z(), s = typeof t == "string" ? {
102
+ const a = e?.id || ae(), n = typeof t == "string" ? {
71
103
  id: a,
72
104
  // Use the determined ID
73
105
  type: e?.type ?? "human",
@@ -95,78 +127,78 @@ const re = ({ children: u }) => {
95
127
  }
96
128
  }
97
129
  };
98
- if (g.debug("Sending message via sendMessage:", s), e?.type === "ai") {
99
- if (_((r) => [...r, s]), g.debug("Appended AI message to localMessages:", e?.ui), e.ui && e.ui.length > 0) {
100
- const r = e.ui.map((n, m) => ({
101
- ...n,
130
+ if (f.debug("Sending message via sendMessage:", n), e?.type === "ai") {
131
+ if (w((o) => [...o, n]), f.debug("Appended AI message to localMessages:", e?.ui), e.ui && e.ui.length > 0) {
132
+ const o = e.ui.map((s, r) => ({
133
+ ...s,
102
134
  id: a,
103
135
  // Link to the message ID so CustomComponentRender can find it
104
136
  // Ensure each UI component has a unique identifier for React keys
105
- _key: n._key || `${a}-ui-${m}`
137
+ _key: s._key || `${a}-ui-${r}`
106
138
  }));
107
- y((n) => [...n, ...r]);
139
+ M((s) => [...s, ...o]);
108
140
  }
109
141
  return;
110
142
  }
111
- const c = o.messages || [], d = e?.context ? { ...l, ...e.context, ...w } : l || {};
112
- await o.submit(
113
- { messages: [...c, s] },
143
+ const u = i.messages || [], _ = e?.context ? { ...d, ...e.context, ...x } : d || {};
144
+ await i.submit(
145
+ { messages: [...u, n] },
114
146
  {
115
- context: d,
147
+ context: _,
116
148
  streamMode: ["values", "messages-tuple", "updates", "custom"]
117
149
  }
118
150
  );
119
151
  },
120
- [o, l, w, _, y]
121
- ), f = S(() => {
122
- const t = [...U, ...o.messages || []], e = /* @__PURE__ */ new Set();
152
+ [i, d, x, w, M]
153
+ ), y = A(() => {
154
+ const t = [...R, ...i.messages || []], e = /* @__PURE__ */ new Set();
123
155
  return t.filter((a) => a.id ? e.has(a.id) ? !1 : (e.add(a.id), !0) : !0);
124
- }, [U, o.messages]), $ = S(() => {
125
- g.debug("Combining local UI with stream UI:", b, o.values?.ui);
126
- const t = [...b, ...o.values?.ui || []], e = /* @__PURE__ */ new Set();
156
+ }, [R, i.messages]), j = A(() => {
157
+ f.debug("Combining local UI with stream UI:", S, i.values?.ui);
158
+ const t = [...S, ...i.values?.ui || []], e = /* @__PURE__ */ new Set();
127
159
  return t.filter((a) => {
128
- const s = a._key || `${a.id}-${a.name}`;
129
- return e.has(s) ? !1 : (e.add(s), !0);
160
+ const n = a._key || `${a.id}-${a.name}`;
161
+ return e.has(n) ? !1 : (e.add(n), !0);
130
162
  });
131
- }, [b, o.values?.ui]), F = I(
163
+ }, [S, i.values?.ui]), z = k(
132
164
  async (t, e) => {
133
- const a = f || [];
134
- await o.submit(
165
+ const a = y || [];
166
+ await i.submit(
135
167
  { messages: [...a, t] },
136
168
  {
137
- context: { ...l, ...e?.contextValues },
169
+ context: { ...d, ...e?.contextValues },
138
170
  streamMode: e?.streamMode || ["values", "messages-tuple", "updates", "custom"],
139
171
  streamSubgraphs: e?.streamSubgraphs ?? !0,
140
172
  streamResumable: e?.streamResumable ?? !0,
141
- optimisticValues: (s) => ({
142
- ...s,
173
+ optimisticValues: (n) => ({
174
+ ...n,
143
175
  messages: [...a, t]
144
176
  })
145
177
  }
146
178
  );
147
179
  },
148
- [o, l, f]
149
- ), R = I(
180
+ [i, d, y]
181
+ ), B = k(
150
182
  async (t) => {
151
- const e = f || [], a = e.findIndex((n) => n.id === t);
183
+ const e = y || [], a = e.findIndex((s) => s.id === t);
152
184
  if (a === -1) {
153
- g.error("Message not found for regeneration:", t);
185
+ f.error("Message not found for regeneration:", t);
154
186
  return;
155
187
  }
156
- let s = a - 1;
157
- for (; s >= 0 && e[s].type !== "human"; )
158
- s--;
159
- if (s === -1) {
160
- g.error("No human message found before AI message:", t);
188
+ let n = a - 1;
189
+ for (; n >= 0 && e[n].type !== "human"; )
190
+ n--;
191
+ if (n === -1) {
192
+ f.error("No human message found before AI message:", t);
161
193
  return;
162
194
  }
163
- const c = e.slice(0, s + 1), d = c.slice(0, -1), r = c[c.length - 1];
164
- _(
165
- (n) => n.filter((m) => e.findIndex((k) => k.id === m.id) < s)
166
- ), y(
167
- (n) => n.filter((m) => e.findIndex((k) => k.id === m.id) < s)
168
- ), await o.submit(
169
- { messages: [...d, r] },
195
+ const u = e.slice(0, n + 1), _ = u.slice(0, -1), o = u[u.length - 1];
196
+ w(
197
+ (s) => s.filter((r) => e.findIndex((h) => h.id === r.id) < n)
198
+ ), M(
199
+ (s) => s.filter((r) => e.findIndex((h) => h.id === r.id) < n)
200
+ ), await i.submit(
201
+ { messages: [..._, o] },
170
202
  {
171
203
  streamMode: ["values"],
172
204
  streamSubgraphs: !0,
@@ -174,55 +206,55 @@ const re = ({ children: u }) => {
174
206
  }
175
207
  );
176
208
  },
177
- [f, o, l, w, _, y]
209
+ [y, i, d, x, w, M]
178
210
  );
179
- Q(() => {
180
- te(i, l?.authToken).then((t) => {
181
- t || X.error("Failed to connect to LangGraph server", {
182
- description: `Unable to reach ${i}`,
211
+ ee(() => {
212
+ ne(l, d?.authToken).then((t) => {
213
+ t || te.error("Failed to connect to LangGraph server", {
214
+ description: `Unable to reach ${l}`,
183
215
  duration: 1e4
184
216
  });
185
217
  });
186
- }, [i, l?.authToken]);
187
- const z = I(async () => {
188
- if (x && M !== null)
189
- return M;
190
- if (!x) {
191
- j(!0);
192
- const t = await ae(i, l?.authToken);
193
- return G(t), t;
218
+ }, [l, d?.authToken]);
219
+ const E = k(async () => {
220
+ if (C && I !== null)
221
+ return I;
222
+ if (!C) {
223
+ O(!0);
224
+ const t = await oe(l, d?.authToken);
225
+ return V(t), t;
194
226
  }
195
- return M;
196
- }, [i, l?.authToken, x, M]), H = S(
227
+ return I;
228
+ }, [l, d?.authToken, C, I]), K = A(
197
229
  () => ({
198
- ...o,
199
- messages: f,
230
+ ...i,
231
+ messages: y,
200
232
  // Override with combined messages
201
233
  values: {
202
- ...o.values,
203
- ui: $
234
+ ...i.values,
235
+ ui: j
204
236
  // Override with combined UI
205
237
  },
206
- sendMessage: A,
207
- submitMessage: F,
208
- regenerateMessage: R,
209
- fetchCatalog: z
238
+ sendMessage: F,
239
+ submitMessage: z,
240
+ regenerateMessage: B,
241
+ fetchCatalog: E
210
242
  }),
211
- [o, f, $, A, F, R, z]
243
+ [i, y, j, F, z, B, E]
212
244
  );
213
- return /* @__PURE__ */ B(E.Provider, { value: H, children: u });
245
+ return /* @__PURE__ */ L(P.Provider, { value: K, children: c });
214
246
  };
215
- function he({ children: u }) {
216
- return /* @__PURE__ */ B(re, { children: u });
247
+ function we({ children: c }) {
248
+ return /* @__PURE__ */ L(le, { children: c });
217
249
  }
218
- function _e() {
219
- const u = D(E);
220
- if (!u)
250
+ function Me() {
251
+ const c = Y(P);
252
+ if (!c)
221
253
  throw new Error("useStreamContext must be used within StreamProvider");
222
- return u;
254
+ return c;
223
255
  }
224
256
  export {
225
- he as StreamProvider,
226
- _e as useStreamContext
257
+ we as StreamProvider,
258
+ Me as useStreamContext
227
259
  };
228
260
  //# sourceMappingURL=Stream.es.js.map