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,4 +1,4 @@
1
- "use strict";const o=require("react/jsx-runtime"),G=require("../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");require("../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");require("../_virtual/index.cjs.js");require("../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");require("../node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/_uuid.cjs.js");require("../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");require("../node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/p-queue.cjs.js");require("../_virtual/index.cjs2.js");require("../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");require("../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");require("../_virtual/index.cjs3.js");require("../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");require("../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");const J=require("../providers/Stream.cjs.js"),I=require("../utils/logger.cjs.js"),f=require("../utils/utils.cjs.js"),s=require("react"),Q=require("./messages/AgentMessage.cjs.js"),U=require("./messages/CustomComponentRender.cjs.js"),V=require("./messages/HumanMessage.cjs.js"),F=require("./Thinking.cjs.js"),X=require("./ToolCallFunctions.cjs.js");function Z({setIsFirstMessage:y,enableToolCallIndicator:k,chatBodyProps:b}){const i=J.useStreamContext(),M=i.messages,a=i.isLoading,[q,_]=s.useState({});I.logger.debug("ChatBody render - messages count:",M,"isLoading:",a);const l=s.useMemo(()=>M??[],[M]),h=s.useRef(null),v=s.useRef(0),p=s.useRef(!0),j=s.useCallback((e,r)=>{_(n=>({...n,[e]:r}))},[]),S=s.useCallback(async e=>{if(!e){console.error("No parent checkpoint available for regeneration");return}await i.submit(void 0,{checkpoint:e,streamMode:["values"],streamSubgraphs:!0,streamResumable:!0})},[i]),w=s.useCallback(e=>{i.setBranch(e)},[i]),z=s.useCallback(e=>Array.isArray(e)?e.filter(n=>typeof n=="object"&&n!==null&&n.type==="tool_use"&&n.id).map(n=>{let c={};if(n?.input)if(typeof n.input=="string")try{c=G.parsePartialJson(n.input)??{}}catch{c={}}else typeof n.input=="object"&&(c=n.input);return{name:n.name??"",id:n.id??"",args:c,type:"tool_call"}}):[],[]),g=s.useCallback(()=>{if(h.current){let e=h.current.parentElement;for(;e;){const r=window.getComputedStyle(e);if(r.overflowY==="auto"||r.overflowY==="scroll")return e;e=e.parentElement}}return null},[]);s.useEffect(()=>{l.length>0&&y&&y(!1)},[l.length,y]);const T=s.useCallback((e,r,n)=>{const c=a&&r===n.length-1&&e.type==="ai";if(!e.content.length&&!f.isAiWithToolCalls(e)&&!c||e.additional_kwargs?.hidden)return null;const C=e.id??`msg-${r}`;if(e.type==="human")return o.jsx(V,{message:e,fontSize:b?.fontSize},C);if(f.isToolMessage(e))return null;if(e.type==="ai"&&r>0){let t=r-1;for(;t>=0&&f.isToolMessage(n[t]);)t--;if(t>=0&&n[t].type==="ai")return null}const u=[e],R=[];let d=r+1;for(;d<n.length;){const t=n[d];if(f.isToolMessage(t))R.push(t),d++;else if(t.type==="ai")u.push(t),d++;else break}const x=u.some(t=>Array.isArray(t.content)),m=x?u.flatMap(t=>Array.isArray(t.content)?t.content:typeof t.content=="string"&&t.content.length>0?[{type:"text",text:t.content}]:[]):u.map(t=>typeof t.content=="string"?t.content:"").filter(Boolean).join(`
1
+ "use strict";const u=require("react/jsx-runtime"),oe=require("../providers/Stream.cjs.js"),ae=require("../providers/CustomComponentProvider.cjs.js"),ie=require("../utils/logger.cjs.js"),y=require("../utils/utils.cjs.js"),o=require("react"),ce=require("./messages/AgentMessage.cjs.js"),ue=require("./messages/CustomComponentRender.cjs.js"),le=require("./messages/HumanMessage.cjs.js"),$=require("./Thinking.cjs.js");function de({setIsFirstMessage:j,enableToolCallIndicator:w=!0,chatBodyProps:A}){const i=oe.useStreamContext(),{interruptComponents:U}=ae.useCustomComponents(),T=i.messages,d=i.isLoading,[z,W]=o.useState({});ie.logger.debug("ChatBody render - messages count:",T,"isLoading:",d);const l=o.useMemo(()=>T??[],[T]),L=o.useMemo(()=>{const e=new Set,n=i.values?.ui;if(!Array.isArray(n))return e;for(const r of n){const s=r,c=s.metadata&&typeof s.metadata=="object"?s.metadata:void 0,h=[typeof s.id=="string"?s.id:void 0,typeof c?.id=="string"?c.id:void 0,typeof c?.message_id=="string"?c.message_id:void 0];for(const f of h)f&&e.add(f)}return e},[i.values?.ui]),v=o.useRef(null),H=o.useRef(0),b=o.useRef(!0),R=o.useRef(new Map),q=o.useCallback(e=>Array.isArray(e)?e.map((n,r)=>{if(!n||typeof n!="object")return null;const s=n,c=s.status;return typeof s.content!="string"||c!=="pending"&&c!=="in_progress"&&c!=="completed"?null:{id:s.id&&typeof s.id=="string"?s.id:`todo-${r}`,content:s.content,status:c,updatedAt:s.updatedAt instanceof Date||typeof s.updatedAt=="string"||typeof s.updatedAt=="number"?s.updatedAt:void 0,run_id:typeof s.run_id=="string"?s.run_id:void 0,runId:typeof s.runId=="string"?s.runId:void 0,messageId:typeof s.messageId=="string"?s.messageId:void 0,checkpoint:typeof s.checkpoint=="string"?s.checkpoint:void 0}}).filter(n=>n!==null):[],[]),I=o.useCallback((e,n)=>{W(r=>({...r,[e]:n}))},[]),F=o.useCallback(async e=>{if(!e){console.error("No parent checkpoint available for regeneration");return}await i.submit(void 0,{checkpoint:e,streamMode:["values"],streamSubgraphs:!0,streamResumable:!0})},[i]),B=o.useCallback(e=>{i.setBranch(e)},[i]),x=o.useCallback(e=>{i.submit(null,{command:{resume:e},streamMode:["values","messages-tuple","updates","custom"],streamSubgraphs:!0})},[i]),K=o.useMemo(()=>{const e=i.interrupt;if(!e)return null;const r=e.value?.actionRequests??[];return{approve:()=>{x({decisions:r.map(()=>({type:"approve"}))})},reject:s=>{x({decisions:r.map(()=>({type:"reject",message:s||void 0}))})},edit:s=>{const c=r[0];x({decisions:[{type:"edit",editedAction:{name:c?.name??"",args:{...c?.args,...s}}}]})}}},[i.interrupt,x]),p=o.useCallback(()=>{if(v.current){let e=v.current.parentElement;for(;e;){const n=window.getComputedStyle(e);if(n.overflowY==="auto"||n.overflowY==="scroll")return e;e=e.parentElement}}return null},[]);o.useEffect(()=>{l.length>0&&j&&j(!1)},[l.length,j]);const O=o.useCallback((e,n,r)=>{const s=d&&n===r.length-1&&e.type==="ai";if(!e.content.length&&!y.isAiWithToolCalls(e)&&!s||e.additional_kwargs?.hidden)return null;const c=e.id??`msg-${n}`,h=t=>typeof t.id=="string"&&L.has(t.id);if(e.type==="human")return u.jsx(le,{message:e,fontSize:A?.fontSize},c);if(y.isToolMessage(e))return null;if(e.type==="ai"&&n>0){let t=n-1;for(;t>=0&&y.isToolMessage(r[t]);)t--;if(t>=0&&r[t].type==="ai"&&!h(e))return null}const f=[e];let M=n+1;for(;M<r.length;){const t=r[M];if(y.isToolMessage(t))f.push(t),M++;else if(t.type==="ai"){if(h(t))break;f.push(t),M++}else break}const g=f.filter(t=>t.type==="ai"),_=g.some(t=>Array.isArray(t.content)),m=new Set,k=_?g.flatMap(t=>Array.isArray(t.content)?t.content.filter(a=>{if(a.type==="text"&&typeof a.text=="string"){if(m.has(a.text))return!1;m.add(a.text)}return!0}):typeof t.content=="string"&&t.content.length>0?m.has(t.content)?[]:(m.add(t.content),[{type:"text",text:t.content}]):[]):(()=>{const t=[];for(const a of g){const C=typeof a.content=="string"?a.content:"";C&&!m.has(C)&&(m.add(C),t.push(C))}return t.join(`
2
2
 
3
- `),H=x?m.map(t=>t.type==="text"?t.text:"").filter(Boolean).join(" "):m,E=u.flatMap(t=>z(t.content)||[]).filter(t=>t!=null&&t!==void 0),O={...e,content:m},A=e?i.getMessagesMetadata(e):void 0,W=x?m.some(t=>t.type==="thinking"&&t.thinking?.length>0||t.type==="reasoning"&&t.reasoning?.length>0):!1,D=typeof e.additional_kwargs?.reasoning_content=="string"&&e.additional_kwargs.reasoning_content.length>0,L=!!H||W||D,K=d>=n.length,N=a&&K,Y=f.isAiWithToolCalls(e)||E.length>0,$=N&&!L;return o.jsxs(s.Fragment,{children:[$&&o.jsx(F,{}),k&&Y&&o.jsx(X,{title:"Agent Thinking",toolMessages:R,toolCalls:E}),L&&o.jsx(Q,{agentName:b?.agentName,fontSize:b?.fontSize,message:O,isStreaming:N,onRegenerate:S,feedback:e.id?q[e.id]:void 0,onFeedback:j,branch:A?.branch,branchOptions:A?.branchOptions,onBranchSelect:w}),u.map(t=>o.jsx(U,{message:t,thread:i},t.id))]},C)},[a,i,k,S,q,j,w]),B=s.useMemo(()=>l.map((e,r)=>{const n=T(e,r,l);return n&&!n.key?s.cloneElement(n,{key:e.id??`msg-${r}`}):n}),[l,T]);return s.useEffect(()=>{const e=g();if(!e)return;const r=()=>{const{scrollTop:n,scrollHeight:c,clientHeight:C}=e,u=c-n-C;p.current=u<100};return e.addEventListener("scroll",r),()=>e.removeEventListener("scroll",r)},[g]),s.useEffect(()=>{const e=g();if(!e)return;const r=l.length;r>v.current&&(e.scrollTop=e.scrollHeight,p.current=!0),v.current=r},[l,g]),s.useEffect(()=>{const e=g();if(!e||!a)return;const r=new MutationObserver(()=>{p.current&&e&&(e.scrollTop=e.scrollHeight)});return h.current&&r.observe(h.current,{childList:!0,subtree:!0,characterData:!0}),()=>r.disconnect()},[a,g]),s.useLayoutEffect(()=>{const e=g();a&&p.current&&e&&(e.scrollTop=e.scrollHeight)}),o.jsx("div",{ref:h,className:"flex flex-col gap-4 rounded-4xl p-2",children:l.length===0?o.jsx("div",{className:"flex items-center justify-center h-full text-zinc-500",children:a?o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"animate-spin h-5 w-5 border-2 border-zinc-500 border-t-transparent rounded-full"}),o.jsx("span",{children:"Loading conversation..."})]}):"Start a conversation..."}):o.jsxs(o.Fragment,{children:[B,a&&l.length>0&&(()=>{const e=l[l.length-1];return e.type==="human"||e.type==="ai"&&!e.content&&f.isAiWithToolCalls(e)})()&&o.jsx(F,{})]})})}module.exports=Z;
3
+ `)})(),V=_?k.map(t=>t.type==="text"?t.text:"").filter(Boolean).join(" "):k,J={...e,content:k},D=e?i.getMessagesMetadata(e):void 0,Q=_?k.some(t=>t.type==="thinking"&&t.thinking?.length>0||t.type==="reasoning"&&t.reasoning?.length>0):!1,X=g.some(t=>{const a=t.additional_kwargs;return typeof a?.reasoning_content=="string"&&a.reasoning_content.length>0}),Z=g.some(t=>{const a=t.additional_kwargs;return Array.isArray(a?.tool_status)&&a.tool_status.length>0}),P=f.some(t=>y.isToolMessage(t)),ee=w&&(g.some(t=>y.isAiWithToolCalls(t))||Z||P),G=!!V||Q||X||ee,te=M>=r.length,S=d&&te,E=g.map(t=>t.id).filter(t=>typeof t=="string"&&t.length>0).join("|")||c,ne=(()=>{const t=R.current.get(E);if(!S&&t&&t.length>0)return t;if(S){const a=q(i.values?.todos);if(a.length>0)return R.current.set(E,a),a}for(let a=g.length-1;a>=0;a--){const re=i.getMessagesMetadata(g[a])?.firstSeenState?.values,N=q(re?.todos);if(N.length>0)return(!t||t.length===0)&&R.current.set(E,N),t??N}return t&&t.length>0?t:[]})(),se=S&&!G;return u.jsxs(o.Fragment,{children:[se&&u.jsx($,{}),G&&u.jsx(ce,{agentName:A?.agentName,fontSize:A?.fontSize,message:J,groupedMessages:f,showToolActivity:w,isStreaming:S,onRegenerate:F,feedback:e.id?z[e.id]:void 0,onFeedback:I,branch:D?.branch,branchOptions:D?.branchOptions,onBranchSelect:B,todos:ne}),g.map(t=>u.jsx(ue,{message:t,thread:i},t.id))]},c)},[d,i,q,w,F,z,I,B,L]),Y=o.useMemo(()=>l.map((e,n)=>{const r=O(e,n,l);return r&&!r.key?o.cloneElement(r,{key:e.id??`msg-${n}`}):r}),[l,O]);return o.useEffect(()=>{const e=p();if(!e)return;const n=()=>{const{scrollTop:r,scrollHeight:s,clientHeight:c}=e,h=s-r-c;b.current=h<100};return e.addEventListener("scroll",n),()=>e.removeEventListener("scroll",n)},[p]),o.useEffect(()=>{const e=p();if(!e)return;const n=l.length;n>H.current&&(e.scrollTop=e.scrollHeight,b.current=!0),H.current=n},[l,p]),o.useEffect(()=>{const e=p();if(!e||!d)return;const n=new MutationObserver(()=>{b.current&&e&&(e.scrollTop=e.scrollHeight)});return v.current&&n.observe(v.current,{childList:!0,subtree:!0,characterData:!0}),()=>n.disconnect()},[d,p]),o.useLayoutEffect(()=>{const e=p();d&&b.current&&e&&(e.scrollTop=e.scrollHeight)}),u.jsx("div",{ref:v,className:"flex flex-col gap-4 rounded-4xl p-2",children:l.length===0?u.jsx("div",{className:"flex items-center justify-center h-full text-zinc-500",children:d?u.jsxs("div",{className:"flex items-center gap-2",children:[u.jsx("div",{className:"animate-spin h-5 w-5 border-2 border-zinc-500 border-t-transparent rounded-full"}),u.jsx("span",{children:"Loading conversation..."})]}):"Start a conversation..."}):u.jsxs(u.Fragment,{children:[Y,d&&l.length>0&&l[l.length-1].type==="human"&&u.jsx($,{}),!d&&i.interrupt&&K&&(()=>{const e=i.interrupt.value,n=e?.actionRequests?.[0]?.name,r=n?U[n]:void 0;return r?u.jsx(r,{interrupt:e,actions:K}):null})()]})})}module.exports=de;
4
4
  //# sourceMappingURL=ChatBody.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatBody.cjs.js","sources":["../../src/components/ChatBody.tsx"],"sourcesContent":["import { parsePartialJson } from \"@langchain/core/output_parsers\";\nimport { useStreamContext } from \"@/providers/Stream\";\nimport type { chatBodyProps } from \"@/types/ChatProps\";\nimport { logger } from \"@/utils/logger\";\nimport { isAiWithToolCalls, isToolMessage } from \"@/utils/utils\";\nimport type { AIMessage, Message } from \"@langchain/langgraph-sdk\";\nimport React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport AgentMessage from \"./messages/AgentMessage\";\nimport CustomComponentRender from \"./messages/CustomComponentRender\";\nimport HumanMessage from \"./messages/HumanMessage\";\nimport type { MessageFeedback } from \"./messages/MessageActions\";\nimport Thinking from \"./Thinking\";\nimport ToolCallFunctions from \"./ToolCallFunctions\";\n\nexport default function ChatBody({ setIsFirstMessage, enableToolCallIndicator, chatBodyProps }: { setIsFirstMessage?: React.Dispatch<React.SetStateAction<boolean>>, enableToolCallIndicator?: boolean, chatBodyProps?: chatBodyProps }) {\n const stream = useStreamContext();\n const messages = stream.messages;\n const isLoading = stream.isLoading;\n\n // State to track message feedback (likes/dislikes)\n const [messageFeedback, setMessageFeedback] = useState<Record<string, MessageFeedback>>({});\n\n logger.debug(\"ChatBody render - messages count:\", messages, \"isLoading:\", isLoading);\n\n // Memoize messages with stable reference\n const memoMessages = useMemo(() => messages ?? [], [messages]);\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n const prevMessageCountRef = useRef(0);\n const shouldAutoScrollRef = useRef(true);\n\n // Handler for message feedback\n const handleFeedback = useCallback((messageId: string, feedback: MessageFeedback) => {\n setMessageFeedback(prev => ({\n ...prev,\n [messageId]: feedback,\n }));\n }, []);\n\n // Handler for message regeneration\n const handleRegenerate = useCallback(async (\n parentCheckpoint: any | null | undefined,\n ) => {\n if (!parentCheckpoint) {\n console.error(\"No parent checkpoint available for regeneration\");\n return;\n }\n\n await stream.submit(undefined, {\n checkpoint: parentCheckpoint,\n streamMode: [\"values\"],\n streamSubgraphs: true,\n streamResumable: true,\n });\n }, [stream]);\n\n // Handler for selecting a different branch\n const handleBranchSelect = useCallback((branch: string) => {\n stream.setBranch(branch);\n }, [stream]);\n\n const getToolCallsFromContent = useCallback((content: Message[\"content\"]): AIMessage[\"tool_calls\"] => {\n if (!Array.isArray(content)) return [];\n const toolCallContents = content.filter(\n (c) => typeof c === \"object\" && c !== null && (c as any).type === \"tool_use\" && (c as any).id,\n ) as Array<Record<string, any>>;\n\n return toolCallContents.map((tc) => {\n let args: Record<string, any> = {};\n if (tc?.input) {\n if (typeof tc.input === \"string\") {\n try {\n args = parsePartialJson(tc.input) ?? {};\n } catch {\n args = {};\n }\n } else if (typeof tc.input === \"object\") {\n args = tc.input as Record<string, any>;\n }\n }\n return {\n name: tc.name ?? \"\",\n id: tc.id ?? \"\",\n args,\n type: \"tool_call\",\n };\n });\n }, []);\n\n // Get the parent scroll container\n const getScrollContainer = useCallback(() => {\n if (containerRef.current) {\n // Find the parent with overflow-y-auto class\n let parent = containerRef.current.parentElement;\n while (parent) {\n const style = window.getComputedStyle(parent);\n if (style.overflowY === 'auto' || style.overflowY === 'scroll') {\n return parent;\n }\n parent = parent.parentElement;\n }\n }\n return null;\n }, []);\n\n useEffect(() => {\n if (memoMessages.length > 0 && setIsFirstMessage) {\n setIsFirstMessage(false);\n }\n }, [memoMessages.length, setIsFirstMessage]);\n\n // Memoize message rendering logic to prevent unnecessary re-renders\n const renderMessage = useCallback((msg: typeof messages[0], index: number, messagesArray: typeof messages) => {\n const isCurrentlyStreamingMessage = isLoading && index === messagesArray.length - 1 && msg.type === \"ai\";\n if (!msg.content.length && !isAiWithToolCalls(msg) && !isCurrentlyStreamingMessage) return null;\n\n if (msg.additional_kwargs?.hidden) {\n return null;\n }\n\n // Use message id or fallback to index for key\n const msgKey = msg.id ?? `msg-${index}`;\n\n if (msg.type === \"human\") {\n return <HumanMessage key={msgKey} message={msg} fontSize={chatBodyProps?.fontSize} />;\n }\n\n // Skip standalone tool messages\n if (isToolMessage(msg)) {\n return null;\n }\n\n // Skip if this AI message was already combined with a previous one\n if (msg.type === \"ai\" && index > 0) {\n // Check if previous non-tool message is also an AI message\n let prevIndex = index - 1;\n while (prevIndex >= 0 && isToolMessage(messagesArray[prevIndex])) {\n prevIndex--;\n }\n\n if (prevIndex >= 0 && messagesArray[prevIndex].type === \"ai\") {\n // This is a consecutive AI message, skip it (it will be combined with the previous one)\n return null;\n }\n }\n\n // Collect all consecutive AI messages and tool messages\n const groupedMessages = [msg];\n const toolMessages = [];\n let nextIndex = index + 1;\n\n while (nextIndex < messagesArray.length) {\n const nextMsg = messagesArray[nextIndex];\n\n if (isToolMessage(nextMsg)) {\n toolMessages.push(nextMsg);\n nextIndex++;\n } else if (nextMsg.type === \"ai\") {\n // Combine consecutive AI messages\n groupedMessages.push(nextMsg);\n nextIndex++;\n } else {\n // Stop at human messages or other types\n break;\n }\n }\n\n // Merge content from all AI messages, preserving r/reasoning blocks\n const hasArrayContent = groupedMessages.some(m => Array.isArray(m.content));\n const mergedContent: Message[\"content\"] = hasArrayContent\n ? groupedMessages.flatMap(m => {\n if (Array.isArray(m.content)) return m.content as any[];\n if (typeof m.content === \"string\" && m.content.length > 0)\n return [{ type: \"text\", text: m.content }];\n return [];\n })\n : groupedMessages\n .map(m => (typeof m.content === \"string\" ? m.content : \"\"))\n .filter(Boolean)\n .join(\"\\n\\n\");\n\n // Extract plain-text portion for legacy checks (tool-call extraction, etc.)\n const combinedContent = hasArrayContent\n ? (mergedContent as any[])\n .map((c: any) => (c.type === \"text\" ? (c.text as string) : \"\"))\n .filter(Boolean)\n .join(\" \")\n : (mergedContent as string);\n\n const toolCallsFromContent = groupedMessages\n .flatMap((m) => {\n const calls = getToolCallsFromContent(m.content);\n return calls || [];\n })\n .filter((tc): tc is NonNullable<typeof tc> => tc != null && tc !== undefined);\n\n // Create a combined message object preserving full content (including thinking blocks)\n const combinedMessage = {\n ...msg,\n content: mergedContent,\n };\n\n // Get branch metadata from thread\n const meta = msg ? stream.getMessagesMetadata(msg) : undefined;\n\n // Determine if there is any displayable content (text OR thinking/reasoning blocks)\n const hasThinkingContent = hasArrayContent\n ? (mergedContent as any[]).some(\n (b: any) =>\n (b.type === \"thinking\" && (b.thinking as string)?.length > 0) ||\n (b.type === \"reasoning\" && (b.reasoning as string)?.length > 0),\n )\n : false;\n const hasKwargsReasoning =\n typeof (msg as any).additional_kwargs?.reasoning_content === \"string\" &&\n ((msg as any).additional_kwargs.reasoning_content as string).length > 0;\n const hasAnyDisplayableContent = !!combinedContent || hasThinkingContent || hasKwargsReasoning;\n\n const isLastMessageGroup = nextIndex >= messagesArray.length;\n const isStreamingThisMessage = isLoading && isLastMessageGroup;\n\n // Check if the first message in the group has tool calls\n const hasToolCalls = isAiWithToolCalls(msg) || toolCallsFromContent.length > 0;\n\n // Show Thinking animation whenever streaming with no displayable content yet (plain chat or tool-call)\n const showThinkingIndicator = isStreamingThisMessage && !hasAnyDisplayableContent;\n\n return (\n <React.Fragment key={msgKey}>\n {/* 1. Thinking indicator - show when streaming with no content yet (no icon shown) */}\n {showThinkingIndicator && (\n <Thinking />\n )}\n {enableToolCallIndicator && hasToolCalls && (\n <ToolCallFunctions\n title=\"Agent Thinking\"\n toolMessages={toolMessages}\n toolCalls={toolCallsFromContent}\n />\n )}\n {/* 2. Agent message — pass full mergedContent so thinking/reasoning blocks are preserved */}\n {hasAnyDisplayableContent && (\n <AgentMessage\n agentName={chatBodyProps?.agentName}\n fontSize={chatBodyProps?.fontSize}\n // agentAvatarUrl={chatBodyProps?.agentAvatarUrl}\n message={combinedMessage}\n isStreaming={isStreamingThisMessage}\n onRegenerate={handleRegenerate}\n feedback={msg.id ? messageFeedback[msg.id] : undefined}\n onFeedback={handleFeedback}\n branch={meta?.branch}\n branchOptions={meta?.branchOptions}\n onBranchSelect={handleBranchSelect}\n />\n )}\n {/* 3. Custom component (from all messages in the group) */}\n {groupedMessages.map((m) => (\n <CustomComponentRender key={m.id} message={m} thread={stream} />\n ))}\n </React.Fragment>\n );\n }, [isLoading, stream, enableToolCallIndicator, handleRegenerate, messageFeedback, handleFeedback, handleBranchSelect]);\n\n // Memoize the rendered messages array\n const renderedMessages = useMemo(() => {\n return memoMessages.map((msg, index) => {\n const element = renderMessage(msg, index, memoMessages);\n // Ensure every element has a key, using message id or fallback to index\n if (element && !element.key) {\n return React.cloneElement(element, { key: msg.id ?? `msg-${index}` });\n }\n return element;\n });\n }, [memoMessages, renderMessage]);\n\n // Track user scroll position to determine if we should auto-scroll\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer) return;\n\n const handleScroll = () => {\n const { scrollTop, scrollHeight, clientHeight } = scrollContainer;\n const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\n // Consider \"at bottom\" if within 100px\n shouldAutoScrollRef.current = distanceFromBottom < 100;\n };\n\n scrollContainer.addEventListener('scroll', handleScroll);\n return () => scrollContainer.removeEventListener('scroll', handleScroll);\n }, [getScrollContainer]);\n\n // Auto-scroll when new messages are added\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer) return;\n\n const currentCount = memoMessages.length;\n const hasNewMessage = currentCount > prevMessageCountRef.current;\n\n if (hasNewMessage) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n shouldAutoScrollRef.current = true;\n }\n\n prevMessageCountRef.current = currentCount;\n }, [memoMessages, getScrollContainer]);\n\n // Use MutationObserver to detect DOM changes and auto-scroll during streaming\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer || !isLoading) return;\n\n const observer = new MutationObserver(() => {\n if (shouldAutoScrollRef.current && scrollContainer) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n }\n });\n\n // Observe the ChatBody container for changes\n if (containerRef.current) {\n observer.observe(containerRef.current, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n }\n\n return () => observer.disconnect();\n }, [isLoading, getScrollContainer]);\n\n // Use useLayoutEffect to scroll after DOM updates\n useLayoutEffect(() => {\n const scrollContainer = getScrollContainer();\n if (isLoading && shouldAutoScrollRef.current && scrollContainer) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n }\n });\n\n return (\n <div\n ref={containerRef}\n className=\"flex flex-col gap-4 rounded-4xl p-2\"\n >\n {memoMessages.length === 0 ? (\n <div className=\"flex items-center justify-center h-full text-zinc-500\">\n {isLoading ? (\n <div className=\"flex items-center gap-2\">\n <div className=\"animate-spin h-5 w-5 border-2 border-zinc-500 border-t-transparent rounded-full\" />\n <span>Loading conversation...</span>\n </div>\n ) : (\n \"Start a conversation...\"\n )}\n </div>\n ) : (\n <>\n {renderedMessages}\n {/* Show thinking indicator when loading and no AI response has started yet */}\n {isLoading && memoMessages.length > 0 && (() => {\n const lastMsg = memoMessages[memoMessages.length - 1];\n // Show if last message is human or if last AI has no content (only tool calls)\n return lastMsg.type === \"human\" ||\n (lastMsg.type === \"ai\" && !lastMsg.content && isAiWithToolCalls(lastMsg));\n })() && (\n <Thinking />\n )}\n </>\n )}\n\n </div>\n );\n}\n"],"names":["ChatBody","setIsFirstMessage","enableToolCallIndicator","chatBodyProps","stream","useStreamContext","messages","isLoading","messageFeedback","setMessageFeedback","useState","logger","memoMessages","useMemo","containerRef","useRef","prevMessageCountRef","shouldAutoScrollRef","handleFeedback","useCallback","messageId","feedback","prev","handleRegenerate","parentCheckpoint","handleBranchSelect","branch","getToolCallsFromContent","content","c","tc","args","parsePartialJson","getScrollContainer","parent","style","useEffect","renderMessage","msg","index","messagesArray","isCurrentlyStreamingMessage","isAiWithToolCalls","msgKey","HumanMessage","isToolMessage","prevIndex","groupedMessages","toolMessages","nextIndex","nextMsg","hasArrayContent","m","mergedContent","combinedContent","toolCallsFromContent","combinedMessage","meta","hasThinkingContent","b","hasKwargsReasoning","hasAnyDisplayableContent","isLastMessageGroup","isStreamingThisMessage","hasToolCalls","showThinkingIndicator","jsxs","React","Thinking","jsx","ToolCallFunctions","AgentMessage","CustomComponentRender","renderedMessages","element","scrollContainer","handleScroll","scrollTop","scrollHeight","clientHeight","distanceFromBottom","currentCount","observer","useLayoutEffect","Fragment","lastMsg"],"mappings":"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"}
1
+ {"version":3,"file":"ChatBody.cjs.js","sources":["../../src/components/ChatBody.tsx"],"sourcesContent":["import { useStreamContext } from \"@/providers/Stream\";\nimport { useCustomComponents } from \"@/providers/CustomComponentProvider\";\nimport type { chatBodyProps } from \"@/types/ChatProps\";\nimport { logger } from \"@/utils/logger\";\nimport { isAiWithToolCalls, isToolMessage } from \"@/utils/utils\";\nimport type { Message } from \"@langchain/langgraph-sdk\";\nimport type { TodoItem } from \"@/providers/Stream\";\nimport React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport AgentMessage from \"./messages/AgentMessage\";\nimport CustomComponentRender from \"./messages/CustomComponentRender\";\nimport HumanMessage from \"./messages/HumanMessage\";\nimport type { MessageFeedback } from \"./messages/MessageActions\";\nimport Thinking from \"./Thinking\";\n\nexport default function ChatBody({ setIsFirstMessage, enableToolCallIndicator = true, chatBodyProps }: { setIsFirstMessage?: React.Dispatch<React.SetStateAction<boolean>>, enableToolCallIndicator?: boolean, chatBodyProps?: chatBodyProps }) {\n const stream = useStreamContext();\n const { interruptComponents } = useCustomComponents();\n const messages = stream.messages;\n const isLoading = stream.isLoading;\n\n // State to track message feedback (likes/dislikes)\n const [messageFeedback, setMessageFeedback] = useState<Record<string, MessageFeedback>>({});\n\n logger.debug(\"ChatBody render - messages count:\", messages, \"isLoading:\", isLoading);\n\n // Memoize messages with stable reference\n const memoMessages = useMemo(() => messages ?? [], [messages]);\n\n const uiMessageIds = useMemo(() => {\n const ids = new Set<string>();\n const uiMessages = stream.values?.ui;\n if (!Array.isArray(uiMessages)) return ids;\n\n for (const ui of uiMessages) {\n const uiObj = ui as unknown as Record<string, unknown>;\n const metadata =\n uiObj.metadata && typeof uiObj.metadata === \"object\"\n ? (uiObj.metadata as Record<string, unknown>)\n : undefined;\n\n const candidates = [\n typeof uiObj.id === \"string\" ? uiObj.id : undefined,\n typeof metadata?.id === \"string\" ? metadata.id : undefined,\n typeof metadata?.message_id === \"string\" ? metadata.message_id : undefined,\n ];\n\n for (const candidate of candidates) {\n if (candidate) ids.add(candidate);\n }\n }\n\n return ids;\n }, [stream.values?.ui]);\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n const prevMessageCountRef = useRef(0);\n const shouldAutoScrollRef = useRef(true);\n const frozenTodosByGroupRef = useRef<Map<string, TodoItem[]>>(new Map());\n\n const normalizeTodos = useCallback((todos: unknown): TodoItem[] => {\n if (!Array.isArray(todos)) return [];\n\n return todos\n .map((todo, index) => {\n if (!todo || typeof todo !== \"object\") return null;\n const t = todo as Record<string, unknown>;\n const status = t.status;\n if (\n typeof t.content !== \"string\" ||\n (status !== \"pending\" && status !== \"in_progress\" && status !== \"completed\")\n ) {\n return null;\n }\n\n return {\n id: t.id && typeof t.id === \"string\" ? t.id : `todo-${index}`,\n content: t.content,\n status,\n updatedAt: t.updatedAt instanceof Date || typeof t.updatedAt === \"string\" || typeof t.updatedAt === \"number\"\n ? (t.updatedAt as string | number | Date)\n : undefined,\n run_id: typeof t.run_id === \"string\" ? t.run_id : undefined,\n runId: typeof t.runId === \"string\" ? t.runId : undefined,\n messageId: typeof t.messageId === \"string\" ? t.messageId : undefined,\n checkpoint: typeof t.checkpoint === \"string\" ? t.checkpoint : undefined,\n } as TodoItem;\n })\n .filter((todo): todo is TodoItem => todo !== null);\n }, []);\n\n // Handler for message feedback\n const handleFeedback = useCallback((messageId: string, feedback: MessageFeedback) => {\n setMessageFeedback(prev => ({\n ...prev,\n [messageId]: feedback,\n }));\n }, []);\n\n // Handler for message regeneration\n const handleRegenerate = useCallback(async (\n parentCheckpoint: any | null | undefined,\n ) => {\n if (!parentCheckpoint) {\n console.error(\"No parent checkpoint available for regeneration\");\n return;\n }\n\n await stream.submit(undefined, {\n checkpoint: parentCheckpoint,\n streamMode: [\"values\"],\n streamSubgraphs: true,\n streamResumable: true,\n });\n }, [stream]);\n\n // Handler for selecting a different branch\n const handleBranchSelect = useCallback((branch: string) => {\n stream.setBranch(branch);\n }, [stream]);\n\n // Handler for HITL interrupt responses\n const handleInterruptRespond = useCallback((response: any) => {\n stream.submit(null, {\n command: { resume: response },\n streamMode: [\"values\", \"messages-tuple\", \"updates\", \"custom\"],\n streamSubgraphs: true,\n });\n }, [stream]);\n\n // Build interrupt actions for custom renderers\n const interruptActions = useMemo(() => {\n const interrupt = stream.interrupt;\n if (!interrupt) return null;\n const payload = interrupt.value as any;\n const actionRequests = payload?.actionRequests ?? [];\n return {\n approve: () => {\n handleInterruptRespond({\n decisions: actionRequests.map(() => ({ type: \"approve\" as const })),\n });\n },\n reject: (reason?: string) => {\n handleInterruptRespond({\n decisions: actionRequests.map(() => ({\n type: \"reject\" as const,\n message: reason || undefined,\n })),\n });\n },\n edit: (editedArgs: Record<string, unknown>) => {\n const action = actionRequests[0];\n handleInterruptRespond({\n decisions: [\n {\n type: \"edit\" as const,\n editedAction: {\n name: action?.name ?? \"\",\n args: { ...action?.args, ...editedArgs },\n },\n },\n ],\n });\n },\n };\n }, [stream.interrupt, handleInterruptRespond]);\n\n // Get the parent scroll container\n const getScrollContainer = useCallback(() => {\n if (containerRef.current) {\n // Find the parent with overflow-y-auto class\n let parent = containerRef.current.parentElement;\n while (parent) {\n const style = window.getComputedStyle(parent);\n if (style.overflowY === 'auto' || style.overflowY === 'scroll') {\n return parent;\n }\n parent = parent.parentElement;\n }\n }\n return null;\n }, []);\n\n useEffect(() => {\n if (memoMessages.length > 0 && setIsFirstMessage) {\n setIsFirstMessage(false);\n }\n }, [memoMessages.length, setIsFirstMessage]);\n\n // Memoize message rendering logic to prevent unnecessary re-renders\n const renderMessage = useCallback((msg: typeof messages[0], index: number, messagesArray: typeof messages) => {\n const isCurrentlyStreamingMessage = isLoading && index === messagesArray.length - 1 && msg.type === \"ai\";\n if (!msg.content.length && !isAiWithToolCalls(msg) && !isCurrentlyStreamingMessage) return null;\n\n if (msg.additional_kwargs?.hidden) {\n return null;\n }\n\n // Use message id or fallback to index for key\n const msgKey = msg.id ?? `msg-${index}`;\n const hasCustomComponentForMessage = (message: Message) =>\n typeof message.id === \"string\" && uiMessageIds.has(message.id);\n\n if (msg.type === \"human\") {\n return <HumanMessage key={msgKey} message={msg} fontSize={chatBodyProps?.fontSize} />;\n }\n\n // Skip standalone tool messages\n if (isToolMessage(msg)) {\n return null;\n }\n\n // Skip if this AI message was already combined with a previous one\n if (msg.type === \"ai\" && index > 0) {\n // Check if previous non-tool message is also an AI message\n let prevIndex = index - 1;\n while (prevIndex >= 0 && isToolMessage(messagesArray[prevIndex])) {\n prevIndex--;\n }\n\n if (prevIndex >= 0 && messagesArray[prevIndex].type === \"ai\") {\n // Only render separately if THIS message owns custom UI (needs its own group).\n // Otherwise it was already consumed by the previous group's forward scan.\n const currentHasCustomUi = hasCustomComponentForMessage(msg);\n if (!currentHasCustomUi) {\n return null;\n }\n }\n }\n\n const groupedTimelineMessages: Message[] = [msg];\n let nextIndex = index + 1;\n\n while (nextIndex < messagesArray.length) {\n const nextMsg = messagesArray[nextIndex];\n\n if (isToolMessage(nextMsg)) {\n groupedTimelineMessages.push(nextMsg);\n nextIndex++;\n } else if (nextMsg.type === \"ai\") {\n if (hasCustomComponentForMessage(nextMsg)) {\n // Sub-agent/custom UI messages should be rendered in their own section\n // to avoid parent-bubble flicker and reparenting during streaming.\n break;\n }\n groupedTimelineMessages.push(nextMsg);\n nextIndex++;\n } else {\n // Stop at human messages or other types\n break;\n }\n }\n\n const groupedAiMessages = groupedTimelineMessages.filter((m) => m.type === \"ai\");\n\n // Merge content from all AI messages, preserving reasoning blocks.\n // Deduplicate identical text content (subgraph messages can duplicate parent messages).\n const hasArrayContent = groupedAiMessages.some((m) => Array.isArray(m.content));\n const seenTexts = new Set<string>();\n const mergedContent: Message[\"content\"] = hasArrayContent\n ? groupedAiMessages.flatMap((m) => {\n if (Array.isArray(m.content)) {\n return (m.content as any[]).filter((block: any) => {\n if (block.type === \"text\" && typeof block.text === \"string\") {\n if (seenTexts.has(block.text)) return false;\n seenTexts.add(block.text);\n }\n return true;\n });\n }\n if (typeof m.content === \"string\" && m.content.length > 0) {\n if (seenTexts.has(m.content)) return [];\n seenTexts.add(m.content);\n return [{ type: \"text\", text: m.content }];\n }\n return [];\n })\n : (() => {\n const unique: string[] = [];\n for (const m of groupedAiMessages) {\n const text = typeof m.content === \"string\" ? m.content : \"\";\n if (text && !seenTexts.has(text)) {\n seenTexts.add(text);\n unique.push(text);\n }\n }\n return unique.join(\"\\n\\n\");\n })();\n\n // Extract plain-text portion for legacy checks\n const combinedContent = hasArrayContent\n ? (mergedContent as any[])\n .map((c: any) => (c.type === \"text\" ? (c.text as string) : \"\"))\n .filter(Boolean)\n .join(\" \")\n : (mergedContent as string);\n\n // Create a combined message object preserving full content (including thinking blocks)\n const combinedMessage = {\n ...msg,\n content: mergedContent,\n };\n\n // Get branch metadata from thread\n const meta = msg ? stream.getMessagesMetadata(msg) : undefined;\n\n // Determine if there is any displayable content (text OR thinking/reasoning blocks)\n const hasThinkingContent = hasArrayContent\n ? (mergedContent as any[]).some(\n (b: any) =>\n (b.type === \"thinking\" && (b.thinking as string)?.length > 0) ||\n (b.type === \"reasoning\" && (b.reasoning as string)?.length > 0),\n )\n : false;\n const hasKwargsReasoning =\n groupedAiMessages.some((m) => {\n const ak = (m as Record<string, unknown>).additional_kwargs as Record<string, unknown> | undefined;\n return typeof ak?.reasoning_content === \"string\" && (ak.reasoning_content as string).length > 0;\n });\n\n const hasKwargsToolStatus = groupedAiMessages.some((m) => {\n const ak = (m as Record<string, unknown>).additional_kwargs as Record<string, unknown> | undefined;\n return Array.isArray(ak?.tool_status) && (ak.tool_status as unknown[]).length > 0;\n });\n const hasToolMessages = groupedTimelineMessages.some((m) => isToolMessage(m));\n const hasToolCalls = enableToolCallIndicator && (\n groupedAiMessages.some((m) => isAiWithToolCalls(m)) ||\n hasKwargsToolStatus ||\n hasToolMessages\n );\n const hasAnyDisplayableContent =\n !!combinedContent ||\n hasThinkingContent ||\n hasKwargsReasoning ||\n hasToolCalls;\n\n const isLastMessageGroup = nextIndex >= messagesArray.length;\n const isStreamingThisMessage = isLoading && isLastMessageGroup;\n\n const groupKey = groupedAiMessages\n .map((m) => m.id)\n .filter((id): id is string => typeof id === \"string\" && id.length > 0)\n .join(\"|\") || msgKey;\n\n const todosForGroup = (() => {\n const frozen = frozenTodosByGroupRef.current.get(groupKey);\n if (!isStreamingThisMessage && frozen && frozen.length > 0) {\n return frozen;\n }\n\n if (isStreamingThisMessage) {\n const live = normalizeTodos(stream.values?.todos);\n if (live.length > 0) {\n frozenTodosByGroupRef.current.set(groupKey, live);\n return live;\n }\n }\n\n for (let i = groupedAiMessages.length - 1; i >= 0; i--) {\n const aiMeta = stream.getMessagesMetadata(groupedAiMessages[i]);\n const aiValues = aiMeta?.firstSeenState?.values as { todos?: unknown } | undefined;\n const snapshot = normalizeTodos(aiValues?.todos);\n if (snapshot.length > 0) {\n if (!frozen || frozen.length === 0) {\n frozenTodosByGroupRef.current.set(groupKey, snapshot);\n }\n return frozen ?? snapshot;\n }\n }\n\n if (frozen && frozen.length > 0) {\n return frozen;\n }\n\n return [];\n })();\n\n // Show Thinking animation whenever streaming with no displayable content yet (plain chat or tool-call)\n const showThinkingIndicator = isStreamingThisMessage && !hasAnyDisplayableContent;\n\n return (\n <React.Fragment key={msgKey}>\n {/* 1. Thinking indicator - show when streaming with no content yet (no icon shown) */}\n {showThinkingIndicator && (\n <Thinking />\n )}\n {/* 2. Agent message — pass full mergedContent and grouped timeline for in-order rendering */}\n {hasAnyDisplayableContent && (\n <AgentMessage\n agentName={chatBodyProps?.agentName}\n fontSize={chatBodyProps?.fontSize}\n message={combinedMessage}\n groupedMessages={groupedTimelineMessages}\n showToolActivity={enableToolCallIndicator}\n isStreaming={isStreamingThisMessage}\n onRegenerate={handleRegenerate}\n feedback={msg.id ? messageFeedback[msg.id] : undefined}\n onFeedback={handleFeedback}\n branch={meta?.branch}\n branchOptions={meta?.branchOptions}\n onBranchSelect={handleBranchSelect}\n todos={todosForGroup}\n />\n )}\n {/* 3. Custom component (from all messages in the group) */}\n {groupedAiMessages.map((m) => (\n <CustomComponentRender key={m.id} message={m} thread={stream} />\n ))}\n </React.Fragment>\n );\n }, [isLoading, stream, normalizeTodos, enableToolCallIndicator, handleRegenerate, messageFeedback, handleFeedback, handleBranchSelect, uiMessageIds]);\n\n // Memoize the rendered messages array\n const renderedMessages = useMemo(() => {\n return memoMessages.map((msg, index) => {\n const element = renderMessage(msg, index, memoMessages);\n // Ensure every element has a key, using message id or fallback to index\n if (element && !element.key) {\n return React.cloneElement(element, { key: msg.id ?? `msg-${index}` });\n }\n return element;\n });\n }, [memoMessages, renderMessage]);\n\n // Track user scroll position to determine if we should auto-scroll\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer) return;\n\n const handleScroll = () => {\n const { scrollTop, scrollHeight, clientHeight } = scrollContainer;\n const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\n // Consider \"at bottom\" if within 100px\n shouldAutoScrollRef.current = distanceFromBottom < 100;\n };\n\n scrollContainer.addEventListener('scroll', handleScroll);\n return () => scrollContainer.removeEventListener('scroll', handleScroll);\n }, [getScrollContainer]);\n\n // Auto-scroll when new messages are added\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer) return;\n\n const currentCount = memoMessages.length;\n const hasNewMessage = currentCount > prevMessageCountRef.current;\n\n if (hasNewMessage) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n shouldAutoScrollRef.current = true;\n }\n\n prevMessageCountRef.current = currentCount;\n }, [memoMessages, getScrollContainer]);\n\n // Use MutationObserver to detect DOM changes and auto-scroll during streaming\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer || !isLoading) return;\n\n const observer = new MutationObserver(() => {\n if (shouldAutoScrollRef.current && scrollContainer) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n }\n });\n\n // Observe the ChatBody container for changes\n if (containerRef.current) {\n observer.observe(containerRef.current, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n }\n\n return () => observer.disconnect();\n }, [isLoading, getScrollContainer]);\n\n // Use useLayoutEffect to scroll after DOM updates\n useLayoutEffect(() => {\n const scrollContainer = getScrollContainer();\n if (isLoading && shouldAutoScrollRef.current && scrollContainer) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n }\n });\n\n return (\n <div\n ref={containerRef}\n className=\"flex flex-col gap-4 rounded-4xl p-2\"\n >\n {memoMessages.length === 0 ? (\n <div className=\"flex items-center justify-center h-full text-zinc-500\">\n {isLoading ? (\n <div className=\"flex items-center gap-2\">\n <div className=\"animate-spin h-5 w-5 border-2 border-zinc-500 border-t-transparent rounded-full\" />\n <span>Loading conversation...</span>\n </div>\n ) : (\n \"Start a conversation...\"\n )}\n </div>\n ) : (\n <>\n {renderedMessages}\n {/* Show HITL interrupt card when agent is paused for approval */}\n {/* Show thinking indicator when loading and last message is human (no AI response yet) */}\n {isLoading && memoMessages.length > 0 &&\n memoMessages[memoMessages.length - 1].type === \"human\" && (\n <Thinking />\n )}\n {!isLoading && stream.interrupt && interruptActions && (() => {\n const payload = stream.interrupt.value as any;\n const toolName = payload?.actionRequests?.[0]?.name;\n const InterruptComponent = toolName ? interruptComponents[toolName] : undefined;\n if (!InterruptComponent) return null;\n return <InterruptComponent interrupt={payload} actions={interruptActions} />;\n })()}\n </>\n )}\n\n </div>\n );\n}\n"],"names":["ChatBody","setIsFirstMessage","enableToolCallIndicator","chatBodyProps","stream","useStreamContext","interruptComponents","useCustomComponents","messages","isLoading","messageFeedback","setMessageFeedback","useState","logger","memoMessages","useMemo","uiMessageIds","ids","uiMessages","ui","uiObj","metadata","candidates","candidate","containerRef","useRef","prevMessageCountRef","shouldAutoScrollRef","frozenTodosByGroupRef","normalizeTodos","useCallback","todos","todo","index","t","status","handleFeedback","messageId","feedback","prev","handleRegenerate","parentCheckpoint","handleBranchSelect","branch","handleInterruptRespond","response","interruptActions","interrupt","actionRequests","reason","editedArgs","action","getScrollContainer","parent","style","useEffect","renderMessage","msg","messagesArray","isCurrentlyStreamingMessage","isAiWithToolCalls","msgKey","hasCustomComponentForMessage","message","HumanMessage","isToolMessage","prevIndex","groupedTimelineMessages","nextIndex","nextMsg","groupedAiMessages","m","hasArrayContent","seenTexts","mergedContent","block","unique","text","combinedContent","c","combinedMessage","meta","hasThinkingContent","b","hasKwargsReasoning","ak","hasKwargsToolStatus","hasToolMessages","hasToolCalls","hasAnyDisplayableContent","isLastMessageGroup","isStreamingThisMessage","groupKey","id","todosForGroup","frozen","live","i","aiValues","snapshot","showThinkingIndicator","jsxs","React","Thinking","jsx","AgentMessage","CustomComponentRender","renderedMessages","element","scrollContainer","handleScroll","scrollTop","scrollHeight","clientHeight","distanceFromBottom","currentCount","observer","useLayoutEffect","Fragment","payload","toolName","InterruptComponent"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatBody.d.ts","sourceRoot":"","sources":["../../src/components/ChatBody.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,KAA6E,MAAM,OAAO,CAAC;AAQlG,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,aAAa,EAAE,EAAE;IAAE,iBAAiB,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,aAAa,CAAA;CAAE,2CAsWtO"}
1
+ {"version":3,"file":"ChatBody.d.ts","sourceRoot":"","sources":["../../src/components/ChatBody.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKvD,OAAO,KAA6E,MAAM,OAAO,CAAC;AAOlG,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,iBAAiB,EAAE,uBAA8B,EAAE,aAAa,EAAE,EAAE;IAAE,iBAAiB,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,aAAa,CAAA;CAAE,2CA6f7O"}
@@ -1,192 +1,258 @@
1
- import { jsx as s, jsxs as k, Fragment as X } from "react/jsx-runtime";
2
- import { parsePartialJson as Z } from "../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";
3
- import "../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";
4
- import "../_virtual/index.es.js";
5
- import "../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";
6
- import "../node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/_uuid.es.js";
7
- import "../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";
8
- import "../node_modules/.pnpm/langsmith@0.5.10_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/p-queue.es.js";
9
- import "../_virtual/index.es2.js";
10
- import "../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";
11
- import "../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";
12
- import "../_virtual/index.es3.js";
13
- import "../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";
14
- import "../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";
15
- import { useStreamContext as P } from "../providers/Stream.es.js";
16
- import { logger as ee } from "../utils/logger.es.js";
17
- import { isAiWithToolCalls as w, isToolMessage as S } from "../utils/utils.es.js";
18
- import O, { useState as te, useMemo as D, useRef as x, useCallback as p, useEffect as y, useLayoutEffect as ne } from "react";
19
- import oe from "./messages/AgentMessage.es.js";
20
- import re from "./messages/CustomComponentRender.es.js";
21
- import se from "./messages/HumanMessage.es.js";
22
- import K from "./Thinking.es.js";
23
- import ie from "./ToolCallFunctions.es.js";
24
- function Fe({ setIsFirstMessage: C, enableToolCallIndicator: T, chatBodyProps: b }) {
25
- const i = P(), M = i.messages, a = i.isLoading, [R, Y] = te({});
26
- ee.debug("ChatBody render - messages count:", M, "isLoading:", a);
27
- const r = D(() => M ?? [], [M]), f = x(null), L = x(0), d = x(!0), N = p((e, o) => {
28
- Y((n) => ({
29
- ...n,
30
- [e]: o
1
+ import { jsx as d, jsxs as F, Fragment as de } from "react/jsx-runtime";
2
+ import { useStreamContext as pe } from "../providers/Stream.es.js";
3
+ import { useCustomComponents as fe } from "../providers/CustomComponentProvider.es.js";
4
+ import { logger as ge } from "../utils/logger.es.js";
5
+ import { isAiWithToolCalls as W, isToolMessage as k } from "../utils/utils.es.js";
6
+ import J, { useState as he, useMemo as x, useRef as A, useCallback as g, useEffect as T, useLayoutEffect as me } from "react";
7
+ import ye from "./messages/AgentMessage.es.js";
8
+ import ve from "./messages/CustomComponentRender.es.js";
9
+ import Me from "./messages/HumanMessage.es.js";
10
+ import Q from "./Thinking.es.js";
11
+ function je({ setIsFirstMessage: R, enableToolCallIndicator: _ = !0, chatBodyProps: j }) {
12
+ const a = pe(), { interruptComponents: X } = fe(), N = a.messages, u = a.isLoading, [B, Z] = he({});
13
+ ge.debug("ChatBody render - messages count:", N, "isLoading:", u);
14
+ const c = x(() => N ?? [], [N]), q = x(() => {
15
+ const e = /* @__PURE__ */ new Set(), n = a.values?.ui;
16
+ if (!Array.isArray(n)) return e;
17
+ for (const o of n) {
18
+ const r = o, i = r.metadata && typeof r.metadata == "object" ? r.metadata : void 0, h = [
19
+ typeof r.id == "string" ? r.id : void 0,
20
+ typeof i?.id == "string" ? i.id : void 0,
21
+ typeof i?.message_id == "string" ? i.message_id : void 0
22
+ ];
23
+ for (const p of h)
24
+ p && e.add(p);
25
+ }
26
+ return e;
27
+ }, [a.values?.ui]), y = A(null), K = A(0), C = A(!0), z = A(/* @__PURE__ */ new Map()), L = g((e) => Array.isArray(e) ? e.map((n, o) => {
28
+ if (!n || typeof n != "object") return null;
29
+ const r = n, i = r.status;
30
+ return typeof r.content != "string" || i !== "pending" && i !== "in_progress" && i !== "completed" ? null : {
31
+ id: r.id && typeof r.id == "string" ? r.id : `todo-${o}`,
32
+ content: r.content,
33
+ status: i,
34
+ updatedAt: r.updatedAt instanceof Date || typeof r.updatedAt == "string" || typeof r.updatedAt == "number" ? r.updatedAt : void 0,
35
+ run_id: typeof r.run_id == "string" ? r.run_id : void 0,
36
+ runId: typeof r.runId == "string" ? r.runId : void 0,
37
+ messageId: typeof r.messageId == "string" ? r.messageId : void 0,
38
+ checkpoint: typeof r.checkpoint == "string" ? r.checkpoint : void 0
39
+ };
40
+ }).filter((n) => n !== null) : [], []), O = g((e, n) => {
41
+ Z((o) => ({
42
+ ...o,
43
+ [e]: n
31
44
  }));
32
- }, []), _ = p(async (e) => {
45
+ }, []), D = g(async (e) => {
33
46
  if (!e) {
34
47
  console.error("No parent checkpoint available for regeneration");
35
48
  return;
36
49
  }
37
- await i.submit(void 0, {
50
+ await a.submit(void 0, {
38
51
  checkpoint: e,
39
52
  streamMode: ["values"],
40
53
  streamSubgraphs: !0,
41
54
  streamResumable: !0
42
55
  });
43
- }, [i]), F = p((e) => {
44
- i.setBranch(e);
45
- }, [i]), $ = p((e) => Array.isArray(e) ? e.filter(
46
- (n) => typeof n == "object" && n !== null && n.type === "tool_use" && n.id
47
- ).map((n) => {
48
- let l = {};
49
- if (n?.input)
50
- if (typeof n.input == "string")
51
- try {
52
- l = Z(n.input) ?? {};
53
- } catch {
54
- l = {};
55
- }
56
- else typeof n.input == "object" && (l = n.input);
56
+ }, [a]), G = g((e) => {
57
+ a.setBranch(e);
58
+ }, [a]), b = g((e) => {
59
+ a.submit(null, {
60
+ command: { resume: e },
61
+ streamMode: ["values", "messages-tuple", "updates", "custom"],
62
+ streamSubgraphs: !0
63
+ });
64
+ }, [a]), $ = x(() => {
65
+ const e = a.interrupt;
66
+ if (!e) return null;
67
+ const o = e.value?.actionRequests ?? [];
57
68
  return {
58
- name: n.name ?? "",
59
- id: n.id ?? "",
60
- args: l,
61
- type: "tool_call"
69
+ approve: () => {
70
+ b({
71
+ decisions: o.map(() => ({ type: "approve" }))
72
+ });
73
+ },
74
+ reject: (r) => {
75
+ b({
76
+ decisions: o.map(() => ({
77
+ type: "reject",
78
+ message: r || void 0
79
+ }))
80
+ });
81
+ },
82
+ edit: (r) => {
83
+ const i = o[0];
84
+ b({
85
+ decisions: [
86
+ {
87
+ type: "edit",
88
+ editedAction: {
89
+ name: i?.name ?? "",
90
+ args: { ...i?.args, ...r }
91
+ }
92
+ }
93
+ ]
94
+ });
95
+ }
62
96
  };
63
- }) : [], []), u = p(() => {
64
- if (f.current) {
65
- let e = f.current.parentElement;
97
+ }, [a.interrupt, b]), f = g(() => {
98
+ if (y.current) {
99
+ let e = y.current.parentElement;
66
100
  for (; e; ) {
67
- const o = window.getComputedStyle(e);
68
- if (o.overflowY === "auto" || o.overflowY === "scroll")
101
+ const n = window.getComputedStyle(e);
102
+ if (n.overflowY === "auto" || n.overflowY === "scroll")
69
103
  return e;
70
104
  e = e.parentElement;
71
105
  }
72
106
  }
73
107
  return null;
74
108
  }, []);
75
- y(() => {
76
- r.length > 0 && C && C(!1);
77
- }, [r.length, C]);
78
- const j = p((e, o, n) => {
79
- const l = a && o === n.length - 1 && e.type === "ai";
80
- if (!e.content.length && !w(e) && !l || e.additional_kwargs?.hidden)
109
+ T(() => {
110
+ c.length > 0 && R && R(!1);
111
+ }, [c.length, R]);
112
+ const U = g((e, n, o) => {
113
+ const r = u && n === o.length - 1 && e.type === "ai";
114
+ if (!e.content.length && !W(e) && !r || e.additional_kwargs?.hidden)
81
115
  return null;
82
- const h = e.id ?? `msg-${o}`;
116
+ const i = e.id ?? `msg-${n}`, h = (t) => typeof t.id == "string" && q.has(t.id);
83
117
  if (e.type === "human")
84
- return /* @__PURE__ */ s(se, { message: e, fontSize: b?.fontSize }, h);
85
- if (S(e))
118
+ return /* @__PURE__ */ d(Me, { message: e, fontSize: j?.fontSize }, i);
119
+ if (k(e))
86
120
  return null;
87
- if (e.type === "ai" && o > 0) {
88
- let t = o - 1;
89
- for (; t >= 0 && S(n[t]); )
121
+ if (e.type === "ai" && n > 0) {
122
+ let t = n - 1;
123
+ for (; t >= 0 && k(o[t]); )
90
124
  t--;
91
- if (t >= 0 && n[t].type === "ai")
125
+ if (t >= 0 && o[t].type === "ai" && !h(e))
92
126
  return null;
93
127
  }
94
- const c = [e], A = [];
95
- let g = o + 1;
96
- for (; g < n.length; ) {
97
- const t = n[g];
98
- if (S(t))
99
- A.push(t), g++;
100
- else if (t.type === "ai")
101
- c.push(t), g++;
102
- else
128
+ const p = [e];
129
+ let v = n + 1;
130
+ for (; v < o.length; ) {
131
+ const t = o[v];
132
+ if (k(t))
133
+ p.push(t), v++;
134
+ else if (t.type === "ai") {
135
+ if (h(t))
136
+ break;
137
+ p.push(t), v++;
138
+ } else
103
139
  break;
104
140
  }
105
- const v = c.some((t) => Array.isArray(t.content)), m = v ? c.flatMap((t) => Array.isArray(t.content) ? t.content : typeof t.content == "string" && t.content.length > 0 ? [{ type: "text", text: t.content }] : []) : c.map((t) => typeof t.content == "string" ? t.content : "").filter(Boolean).join(`
141
+ const l = p.filter((t) => t.type === "ai"), H = l.some((t) => Array.isArray(t.content)), m = /* @__PURE__ */ new Set(), S = H ? l.flatMap((t) => Array.isArray(t.content) ? t.content.filter((s) => {
142
+ if (s.type === "text" && typeof s.text == "string") {
143
+ if (m.has(s.text)) return !1;
144
+ m.add(s.text);
145
+ }
146
+ return !0;
147
+ }) : typeof t.content == "string" && t.content.length > 0 ? m.has(t.content) ? [] : (m.add(t.content), [{ type: "text", text: t.content }]) : []) : (() => {
148
+ const t = [];
149
+ for (const s of l) {
150
+ const M = typeof s.content == "string" ? s.content : "";
151
+ M && !m.has(M) && (m.add(M), t.push(M));
152
+ }
153
+ return t.join(`
106
154
 
107
- `), J = v ? m.map((t) => t.type === "text" ? t.text : "").filter(Boolean).join(" ") : m, E = c.flatMap((t) => $(t.content) || []).filter((t) => t != null && t !== void 0), W = {
155
+ `);
156
+ })(), ee = H ? S.map((t) => t.type === "text" ? t.text : "").filter(Boolean).join(" ") : S, te = {
108
157
  ...e,
109
- content: m
110
- }, z = e ? i.getMessagesMetadata(e) : void 0, q = v ? m.some(
158
+ content: S
159
+ }, Y = e ? a.getMessagesMetadata(e) : void 0, ne = H ? S.some(
111
160
  (t) => t.type === "thinking" && t.thinking?.length > 0 || t.type === "reasoning" && t.reasoning?.length > 0
112
- ) : !1, I = typeof e.additional_kwargs?.reasoning_content == "string" && e.additional_kwargs.reasoning_content.length > 0, B = !!J || q || I, Q = g >= n.length, H = a && Q, U = w(e) || E.length > 0, V = H && !B;
113
- return /* @__PURE__ */ k(O.Fragment, { children: [
114
- V && /* @__PURE__ */ s(K, {}),
115
- T && U && /* @__PURE__ */ s(
116
- ie,
117
- {
118
- title: "Agent Thinking",
119
- toolMessages: A,
120
- toolCalls: E
121
- }
122
- ),
123
- B && /* @__PURE__ */ s(
124
- oe,
161
+ ) : !1, re = l.some((t) => {
162
+ const s = t.additional_kwargs;
163
+ return typeof s?.reasoning_content == "string" && s.reasoning_content.length > 0;
164
+ }), oe = l.some((t) => {
165
+ const s = t.additional_kwargs;
166
+ return Array.isArray(s?.tool_status) && s.tool_status.length > 0;
167
+ }), se = p.some((t) => k(t)), ae = _ && (l.some((t) => W(t)) || oe || se), V = !!ee || ne || re || ae, ie = v >= o.length, w = u && ie, I = l.map((t) => t.id).filter((t) => typeof t == "string" && t.length > 0).join("|") || i, ce = (() => {
168
+ const t = z.current.get(I);
169
+ if (!w && t && t.length > 0)
170
+ return t;
171
+ if (w) {
172
+ const s = L(a.values?.todos);
173
+ if (s.length > 0)
174
+ return z.current.set(I, s), s;
175
+ }
176
+ for (let s = l.length - 1; s >= 0; s--) {
177
+ const le = a.getMessagesMetadata(l[s])?.firstSeenState?.values, E = L(le?.todos);
178
+ if (E.length > 0)
179
+ return (!t || t.length === 0) && z.current.set(I, E), t ?? E;
180
+ }
181
+ return t && t.length > 0 ? t : [];
182
+ })(), ue = w && !V;
183
+ return /* @__PURE__ */ F(J.Fragment, { children: [
184
+ ue && /* @__PURE__ */ d(Q, {}),
185
+ V && /* @__PURE__ */ d(
186
+ ye,
125
187
  {
126
- agentName: b?.agentName,
127
- fontSize: b?.fontSize,
128
- message: W,
129
- isStreaming: H,
130
- onRegenerate: _,
131
- feedback: e.id ? R[e.id] : void 0,
132
- onFeedback: N,
133
- branch: z?.branch,
134
- branchOptions: z?.branchOptions,
135
- onBranchSelect: F
188
+ agentName: j?.agentName,
189
+ fontSize: j?.fontSize,
190
+ message: te,
191
+ groupedMessages: p,
192
+ showToolActivity: _,
193
+ isStreaming: w,
194
+ onRegenerate: D,
195
+ feedback: e.id ? B[e.id] : void 0,
196
+ onFeedback: O,
197
+ branch: Y?.branch,
198
+ branchOptions: Y?.branchOptions,
199
+ onBranchSelect: G,
200
+ todos: ce
136
201
  }
137
202
  ),
138
- c.map((t) => /* @__PURE__ */ s(re, { message: t, thread: i }, t.id))
139
- ] }, h);
140
- }, [a, i, T, _, R, N, F]), G = D(() => r.map((e, o) => {
141
- const n = j(e, o, r);
142
- return n && !n.key ? O.cloneElement(n, { key: e.id ?? `msg-${o}` }) : n;
143
- }), [r, j]);
144
- return y(() => {
145
- const e = u();
203
+ l.map((t) => /* @__PURE__ */ d(ve, { message: t, thread: a }, t.id))
204
+ ] }, i);
205
+ }, [u, a, L, _, D, B, O, G, q]), P = x(() => c.map((e, n) => {
206
+ const o = U(e, n, c);
207
+ return o && !o.key ? J.cloneElement(o, { key: e.id ?? `msg-${n}` }) : o;
208
+ }), [c, U]);
209
+ return T(() => {
210
+ const e = f();
146
211
  if (!e) return;
147
- const o = () => {
148
- const { scrollTop: n, scrollHeight: l, clientHeight: h } = e, c = l - n - h;
149
- d.current = c < 100;
212
+ const n = () => {
213
+ const { scrollTop: o, scrollHeight: r, clientHeight: i } = e, h = r - o - i;
214
+ C.current = h < 100;
150
215
  };
151
- return e.addEventListener("scroll", o), () => e.removeEventListener("scroll", o);
152
- }, [u]), y(() => {
153
- const e = u();
216
+ return e.addEventListener("scroll", n), () => e.removeEventListener("scroll", n);
217
+ }, [f]), T(() => {
218
+ const e = f();
154
219
  if (!e) return;
155
- const o = r.length;
156
- o > L.current && (e.scrollTop = e.scrollHeight, d.current = !0), L.current = o;
157
- }, [r, u]), y(() => {
158
- const e = u();
159
- if (!e || !a) return;
160
- const o = new MutationObserver(() => {
161
- d.current && e && (e.scrollTop = e.scrollHeight);
220
+ const n = c.length;
221
+ n > K.current && (e.scrollTop = e.scrollHeight, C.current = !0), K.current = n;
222
+ }, [c, f]), T(() => {
223
+ const e = f();
224
+ if (!e || !u) return;
225
+ const n = new MutationObserver(() => {
226
+ C.current && e && (e.scrollTop = e.scrollHeight);
162
227
  });
163
- return f.current && o.observe(f.current, {
228
+ return y.current && n.observe(y.current, {
164
229
  childList: !0,
165
230
  subtree: !0,
166
231
  characterData: !0
167
- }), () => o.disconnect();
168
- }, [a, u]), ne(() => {
169
- const e = u();
170
- a && d.current && e && (e.scrollTop = e.scrollHeight);
171
- }), /* @__PURE__ */ s(
232
+ }), () => n.disconnect();
233
+ }, [u, f]), me(() => {
234
+ const e = f();
235
+ u && C.current && e && (e.scrollTop = e.scrollHeight);
236
+ }), /* @__PURE__ */ d(
172
237
  "div",
173
238
  {
174
- ref: f,
239
+ ref: y,
175
240
  className: "flex flex-col gap-4 rounded-4xl p-2",
176
- children: r.length === 0 ? /* @__PURE__ */ s("div", { className: "flex items-center justify-center h-full text-zinc-500", children: a ? /* @__PURE__ */ k("div", { className: "flex items-center gap-2", children: [
177
- /* @__PURE__ */ s("div", { className: "animate-spin h-5 w-5 border-2 border-zinc-500 border-t-transparent rounded-full" }),
178
- /* @__PURE__ */ s("span", { children: "Loading conversation..." })
179
- ] }) : "Start a conversation..." }) : /* @__PURE__ */ k(X, { children: [
180
- G,
181
- a && r.length > 0 && (() => {
182
- const e = r[r.length - 1];
183
- return e.type === "human" || e.type === "ai" && !e.content && w(e);
184
- })() && /* @__PURE__ */ s(K, {})
241
+ children: c.length === 0 ? /* @__PURE__ */ d("div", { className: "flex items-center justify-center h-full text-zinc-500", children: u ? /* @__PURE__ */ F("div", { className: "flex items-center gap-2", children: [
242
+ /* @__PURE__ */ d("div", { className: "animate-spin h-5 w-5 border-2 border-zinc-500 border-t-transparent rounded-full" }),
243
+ /* @__PURE__ */ d("span", { children: "Loading conversation..." })
244
+ ] }) : "Start a conversation..." }) : /* @__PURE__ */ F(de, { children: [
245
+ P,
246
+ u && c.length > 0 && c[c.length - 1].type === "human" && /* @__PURE__ */ d(Q, {}),
247
+ !u && a.interrupt && $ && (() => {
248
+ const e = a.interrupt.value, n = e?.actionRequests?.[0]?.name, o = n ? X[n] : void 0;
249
+ return o ? /* @__PURE__ */ d(o, { interrupt: e, actions: $ }) : null;
250
+ })()
185
251
  ] })
186
252
  }
187
253
  );
188
254
  }
189
255
  export {
190
- Fe as default
256
+ je as default
191
257
  };
192
258
  //# sourceMappingURL=ChatBody.es.js.map