langgraph-ui-components 0.0.27 → 0.0.29

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 (444) hide show
  1. package/README.md +103 -4
  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/components/ChatBody.cjs.js +2 -2
  10. package/dist/components/ChatBody.cjs.js.map +1 -1
  11. package/dist/components/ChatBody.d.ts.map +1 -1
  12. package/dist/components/ChatBody.es.js +191 -164
  13. package/dist/components/ChatBody.es.js.map +1 -1
  14. package/dist/components/TodoList.cjs.js +2 -0
  15. package/dist/components/TodoList.cjs.js.map +1 -0
  16. package/dist/components/TodoList.d.ts +5 -0
  17. package/dist/components/TodoList.d.ts.map +1 -0
  18. package/dist/components/TodoList.es.js +65 -0
  19. package/dist/components/TodoList.es.js.map +1 -0
  20. package/dist/components/messages/AgentMessage.cjs.js +2 -2
  21. package/dist/components/messages/AgentMessage.cjs.js.map +1 -1
  22. package/dist/components/messages/AgentMessage.d.ts +3 -1
  23. package/dist/components/messages/AgentMessage.d.ts.map +1 -1
  24. package/dist/components/messages/AgentMessage.es.js +107 -104
  25. package/dist/components/messages/AgentMessage.es.js.map +1 -1
  26. package/dist/components/messages/CustomComponentRender.cjs.js.map +1 -1
  27. package/dist/components/messages/CustomComponentRender.es.js.map +1 -1
  28. package/dist/components/ui/syntax-highlighter.cjs.js +1 -1
  29. package/dist/components/ui/syntax-highlighter.cjs.js.map +1 -1
  30. package/dist/components/ui/syntax-highlighter.es.js +1 -1
  31. package/dist/index.d.ts +1 -1
  32. package/dist/index.d.ts.map +1 -1
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. package/dist/pages/Chat/Chat.cjs.js +1 -1
  42. package/dist/pages/Chat/Chat.cjs.js.map +1 -1
  43. package/dist/pages/Chat/Chat.d.ts.map +1 -1
  44. package/dist/pages/Chat/Chat.es.js +41 -34
  45. package/dist/pages/Chat/Chat.es.js.map +1 -1
  46. package/dist/pages/Sidebar/sidebar.cjs.js +1 -1
  47. package/dist/pages/Sidebar/sidebar.cjs.js.map +1 -1
  48. package/dist/pages/Sidebar/sidebar.d.ts.map +1 -1
  49. package/dist/pages/Sidebar/sidebar.es.js +75 -70
  50. package/dist/pages/Sidebar/sidebar.es.js.map +1 -1
  51. package/dist/providers/Stream.cjs.js +1 -1
  52. package/dist/providers/Stream.cjs.js.map +1 -1
  53. package/dist/providers/Stream.d.ts +40 -8
  54. package/dist/providers/Stream.d.ts.map +1 -1
  55. package/dist/providers/Stream.es.js +136 -123
  56. package/dist/providers/Stream.es.js.map +1 -1
  57. package/package.json +25 -1
  58. package/src/components/ChatBody.tsx +158 -67
  59. package/src/components/TodoList.tsx +72 -0
  60. package/src/components/messages/AgentMessage.tsx +7 -1
  61. package/src/components/messages/CustomComponentRender.tsx +1 -1
  62. package/src/index.ts +1 -1
  63. package/src/pages/Chat/Chat.tsx +13 -3
  64. package/src/pages/Sidebar/sidebar.tsx +12 -3
  65. package/src/providers/Stream.tsx +76 -32
  66. package/dist/_virtual/index.cjs10.js +0 -2
  67. package/dist/_virtual/index.cjs10.js.map +0 -1
  68. package/dist/_virtual/index.cjs11.js +0 -2
  69. package/dist/_virtual/index.cjs11.js.map +0 -1
  70. package/dist/_virtual/index.cjs12.js +0 -2
  71. package/dist/_virtual/index.cjs12.js.map +0 -1
  72. package/dist/_virtual/index.cjs4.js +0 -2
  73. package/dist/_virtual/index.cjs4.js.map +0 -1
  74. package/dist/_virtual/index.cjs5.js +0 -2
  75. package/dist/_virtual/index.cjs5.js.map +0 -1
  76. package/dist/_virtual/index.cjs6.js +0 -2
  77. package/dist/_virtual/index.cjs6.js.map +0 -1
  78. package/dist/_virtual/index.cjs7.js +0 -2
  79. package/dist/_virtual/index.cjs7.js.map +0 -1
  80. package/dist/_virtual/index.cjs8.js +0 -2
  81. package/dist/_virtual/index.cjs8.js.map +0 -1
  82. package/dist/_virtual/index.cjs9.js +0 -2
  83. package/dist/_virtual/index.cjs9.js.map +0 -1
  84. package/dist/_virtual/index.es10.js +0 -8
  85. package/dist/_virtual/index.es10.js.map +0 -1
  86. package/dist/_virtual/index.es11.js +0 -5
  87. package/dist/_virtual/index.es11.js.map +0 -1
  88. package/dist/_virtual/index.es12.js +0 -8
  89. package/dist/_virtual/index.es12.js.map +0 -1
  90. package/dist/_virtual/index.es4.js +0 -6
  91. package/dist/_virtual/index.es4.js.map +0 -1
  92. package/dist/_virtual/index.es5.js +0 -5
  93. package/dist/_virtual/index.es5.js.map +0 -1
  94. package/dist/_virtual/index.es6.js +0 -5
  95. package/dist/_virtual/index.es6.js.map +0 -1
  96. package/dist/_virtual/index.es7.js +0 -5
  97. package/dist/_virtual/index.es7.js.map +0 -1
  98. package/dist/_virtual/index.es8.js +0 -5
  99. package/dist/_virtual/index.es8.js.map +0 -1
  100. package/dist/_virtual/index.es9.js +0 -5
  101. package/dist/_virtual/index.es9.js.map +0 -1
  102. package/dist/_virtual/lower-bound.cjs.js +0 -2
  103. package/dist/_virtual/lower-bound.cjs.js.map +0 -1
  104. package/dist/_virtual/lower-bound.es.js +0 -5
  105. package/dist/_virtual/lower-bound.es.js.map +0 -1
  106. package/dist/_virtual/priority-queue.cjs.js +0 -2
  107. package/dist/_virtual/priority-queue.cjs.js.map +0 -1
  108. package/dist/_virtual/priority-queue.es.js +0 -5
  109. package/dist/_virtual/priority-queue.es.js.map +0 -1
  110. package/dist/_virtual/re.cjs.js +0 -2
  111. package/dist/_virtual/re.cjs.js.map +0 -1
  112. package/dist/_virtual/re.es.js +0 -5
  113. package/dist/_virtual/re.es.js.map +0 -1
  114. 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
  115. 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
  116. 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
  117. 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
  118. 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
  119. 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
  120. 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
  121. 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
  122. 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
  123. 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
  124. 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
  125. 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
  126. 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
  127. 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
  128. 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
  129. 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
  130. 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
  131. 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
  132. 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
  133. 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
  134. 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
  135. 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
  136. 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
  137. 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
  138. 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
  139. 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
  140. 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
  141. 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
  142. 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
  143. 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
  144. 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
  145. 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
  146. 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
  147. 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
  148. 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
  149. 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
  150. 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
  151. 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
  152. 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
  153. 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
  154. 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
  155. 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
  156. 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
  157. 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
  158. 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
  159. 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
  160. 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
  161. 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
  162. 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
  163. 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
  164. 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
  165. 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
  166. 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
  167. 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
  168. 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
  169. 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
  170. 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
  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/xai.cjs.js.map +0 -1
  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/xai.es.js +0 -42
  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/xai.es.js.map +0 -1
  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/content/data.cjs.js +0 -2
  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/content/data.cjs.js.map +0 -1
  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/content/data.es.js +0 -16
  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/content/data.es.js.map +0 -1
  178. 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
  179. 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
  180. 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
  181. 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
  182. 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
  183. 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
  184. 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
  185. 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
  186. 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
  187. 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
  188. 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
  189. 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
  190. 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
  191. 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
  192. 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
  193. 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
  194. 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
  195. 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
  196. 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
  197. 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
  198. 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
  199. 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
  200. 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
  201. 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
  202. 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
  203. 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
  204. 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
  205. 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
  206. package/dist/node_modules/.pnpm/ansi-styles@5.2.0/node_modules/ansi-styles/index.cjs.js +0 -2
  207. package/dist/node_modules/.pnpm/ansi-styles@5.2.0/node_modules/ansi-styles/index.cjs.js.map +0 -1
  208. package/dist/node_modules/.pnpm/ansi-styles@5.2.0/node_modules/ansi-styles/index.es.js +0 -111
  209. package/dist/node_modules/.pnpm/ansi-styles@5.2.0/node_modules/ansi-styles/index.es.js.map +0 -1
  210. package/dist/node_modules/.pnpm/camelcase@6.3.0/node_modules/camelcase/index.cjs.js +0 -2
  211. package/dist/node_modules/.pnpm/camelcase@6.3.0/node_modules/camelcase/index.cjs.js.map +0 -1
  212. package/dist/node_modules/.pnpm/camelcase@6.3.0/node_modules/camelcase/index.es.js +0 -30
  213. package/dist/node_modules/.pnpm/camelcase@6.3.0/node_modules/camelcase/index.es.js.map +0 -1
  214. package/dist/node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.cjs.js +0 -2
  215. package/dist/node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.cjs.js.map +0 -1
  216. package/dist/node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.es.js +0 -112
  217. package/dist/node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.es.js.map +0 -1
  218. 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
  219. 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
  220. 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
  221. 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
  222. 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
  223. 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
  224. 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
  225. 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
  226. 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
  227. 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
  228. 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
  229. 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
  230. 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
  231. 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
  232. 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
  233. 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
  234. 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
  235. 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
  236. 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
  237. 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
  238. 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
  239. 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
  240. 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
  241. 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
  242. package/dist/node_modules/.pnpm/p-finally@1.0.0/node_modules/p-finally/index.cjs.js +0 -2
  243. package/dist/node_modules/.pnpm/p-finally@1.0.0/node_modules/p-finally/index.cjs.js.map +0 -1
  244. package/dist/node_modules/.pnpm/p-finally@1.0.0/node_modules/p-finally/index.es.js +0 -18
  245. package/dist/node_modules/.pnpm/p-finally@1.0.0/node_modules/p-finally/index.es.js.map +0 -1
  246. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/index.cjs.js +0 -2
  247. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/index.cjs.js.map +0 -1
  248. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/index.es.js +0 -198
  249. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/index.es.js.map +0 -1
  250. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/lower-bound.cjs.js +0 -2
  251. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/lower-bound.cjs.js.map +0 -1
  252. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/lower-bound.es.js +0 -20
  253. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/lower-bound.es.js.map +0 -1
  254. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/priority-queue.cjs.js +0 -2
  255. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/priority-queue.cjs.js.map +0 -1
  256. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/priority-queue.es.js +0 -41
  257. package/dist/node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/priority-queue.es.js.map +0 -1
  258. package/dist/node_modules/.pnpm/p-timeout@3.2.0/node_modules/p-timeout/index.cjs.js +0 -2
  259. package/dist/node_modules/.pnpm/p-timeout@3.2.0/node_modules/p-timeout/index.cjs.js.map +0 -1
  260. package/dist/node_modules/.pnpm/p-timeout@3.2.0/node_modules/p-timeout/index.es.js +0 -45
  261. package/dist/node_modules/.pnpm/p-timeout@3.2.0/node_modules/p-timeout/index.es.js.map +0 -1
  262. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.cjs.js +0 -2
  263. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.cjs.js.map +0 -1
  264. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.es.js +0 -57
  265. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.es.js.map +0 -1
  266. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.cjs.js +0 -2
  267. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.cjs.js.map +0 -1
  268. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.es.js +0 -149
  269. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.es.js.map +0 -1
  270. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.cjs.js +0 -2
  271. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.cjs.js.map +0 -1
  272. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.es.js +0 -170
  273. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.es.js.map +0 -1
  274. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/clean.cjs.js +0 -2
  275. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/clean.cjs.js.map +0 -1
  276. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/clean.es.js +0 -15
  277. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/clean.es.js.map +0 -1
  278. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.cjs.js +0 -2
  279. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.cjs.js.map +0 -1
  280. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.es.js +0 -40
  281. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.es.js.map +0 -1
  282. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/coerce.cjs.js +0 -2
  283. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/coerce.cjs.js.map +0 -1
  284. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/coerce.es.js +0 -34
  285. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/coerce.es.js.map +0 -1
  286. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-build.cjs.js +0 -2
  287. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-build.cjs.js.map +0 -1
  288. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-build.es.js +0 -15
  289. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-build.es.js.map +0 -1
  290. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-loose.cjs.js +0 -2
  291. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-loose.cjs.js.map +0 -1
  292. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-loose.es.js +0 -12
  293. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-loose.es.js.map +0 -1
  294. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.cjs.js +0 -2
  295. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.cjs.js.map +0 -1
  296. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.es.js +0 -12
  297. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.es.js.map +0 -1
  298. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/diff.cjs.js +0 -2
  299. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/diff.cjs.js.map +0 -1
  300. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/diff.es.js +0 -25
  301. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/diff.es.js.map +0 -1
  302. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.cjs.js +0 -2
  303. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.cjs.js.map +0 -1
  304. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.es.js +0 -12
  305. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.es.js.map +0 -1
  306. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.cjs.js +0 -2
  307. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.cjs.js.map +0 -1
  308. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.es.js +0 -12
  309. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.es.js.map +0 -1
  310. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.cjs.js +0 -2
  311. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.cjs.js.map +0 -1
  312. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.es.js +0 -12
  313. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.es.js.map +0 -1
  314. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/inc.cjs.js +0 -2
  315. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/inc.cjs.js.map +0 -1
  316. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/inc.es.js +0 -22
  317. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/inc.es.js.map +0 -1
  318. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.cjs.js +0 -2
  319. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.cjs.js.map +0 -1
  320. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.es.js +0 -12
  321. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.es.js.map +0 -1
  322. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.cjs.js +0 -2
  323. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.cjs.js.map +0 -1
  324. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.es.js +0 -12
  325. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.es.js.map +0 -1
  326. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/major.cjs.js +0 -2
  327. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/major.cjs.js.map +0 -1
  328. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/major.es.js +0 -12
  329. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/major.es.js.map +0 -1
  330. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/minor.cjs.js +0 -2
  331. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/minor.cjs.js.map +0 -1
  332. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/minor.es.js +0 -12
  333. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/minor.es.js.map +0 -1
  334. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.cjs.js +0 -2
  335. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.cjs.js.map +0 -1
  336. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.es.js +0 -12
  337. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.es.js.map +0 -1
  338. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.cjs.js +0 -2
  339. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.cjs.js.map +0 -1
  340. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.es.js +0 -22
  341. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.es.js.map +0 -1
  342. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/patch.cjs.js +0 -2
  343. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/patch.cjs.js.map +0 -1
  344. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/patch.es.js +0 -12
  345. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/patch.es.js.map +0 -1
  346. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/prerelease.cjs.js +0 -2
  347. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/prerelease.cjs.js.map +0 -1
  348. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/prerelease.es.js +0 -15
  349. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/prerelease.es.js.map +0 -1
  350. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rcompare.cjs.js +0 -2
  351. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rcompare.cjs.js.map +0 -1
  352. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rcompare.es.js +0 -12
  353. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rcompare.es.js.map +0 -1
  354. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rsort.cjs.js +0 -2
  355. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rsort.cjs.js.map +0 -1
  356. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rsort.es.js +0 -12
  357. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rsort.es.js.map +0 -1
  358. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.cjs.js +0 -2
  359. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.cjs.js.map +0 -1
  360. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.es.js +0 -19
  361. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.es.js.map +0 -1
  362. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/sort.cjs.js +0 -2
  363. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/sort.cjs.js.map +0 -1
  364. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/sort.es.js +0 -12
  365. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/sort.es.js.map +0 -1
  366. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/valid.cjs.js +0 -2
  367. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/valid.cjs.js.map +0 -1
  368. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/valid.es.js +0 -15
  369. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/valid.es.js.map +0 -1
  370. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/index.cjs.js +0 -2
  371. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/index.cjs.js.map +0 -1
  372. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/index.es.js +0 -98
  373. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/index.es.js.map +0 -1
  374. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.cjs.js +0 -2
  375. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.cjs.js.map +0 -1
  376. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.es.js +0 -29
  377. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.es.js.map +0 -1
  378. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.cjs.js +0 -2
  379. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.cjs.js.map +0 -1
  380. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.es.js +0 -9
  381. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.es.js.map +0 -1
  382. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.cjs.js +0 -2
  383. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.cjs.js.map +0 -1
  384. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.es.js +0 -19
  385. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.es.js.map +0 -1
  386. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.cjs.js +0 -2
  387. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.cjs.js.map +0 -1
  388. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.es.js +0 -33
  389. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.es.js.map +0 -1
  390. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.cjs.js +0 -2
  391. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.cjs.js.map +0 -1
  392. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.es.js +0 -11
  393. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.es.js.map +0 -1
  394. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.cjs.js +0 -2
  395. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.cjs.js.map +0 -1
  396. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.es.js +0 -33
  397. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.es.js.map +0 -1
  398. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/gtr.cjs.js +0 -2
  399. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/gtr.cjs.js.map +0 -1
  400. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/gtr.es.js +0 -12
  401. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/gtr.es.js.map +0 -1
  402. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/intersects.cjs.js +0 -2
  403. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/intersects.cjs.js.map +0 -1
  404. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/intersects.es.js +0 -12
  405. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/intersects.es.js.map +0 -1
  406. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/ltr.cjs.js +0 -2
  407. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/ltr.cjs.js.map +0 -1
  408. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/ltr.es.js +0 -12
  409. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/ltr.es.js.map +0 -1
  410. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/max-satisfying.cjs.js +0 -2
  411. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/max-satisfying.cjs.js.map +0 -1
  412. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/max-satisfying.es.js +0 -23
  413. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/max-satisfying.es.js.map +0 -1
  414. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-satisfying.cjs.js +0 -2
  415. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-satisfying.cjs.js.map +0 -1
  416. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-satisfying.es.js +0 -23
  417. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-satisfying.es.js.map +0 -1
  418. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-version.cjs.js +0 -2
  419. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-version.cjs.js.map +0 -1
  420. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-version.es.js +0 -43
  421. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-version.es.js.map +0 -1
  422. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/outside.cjs.js +0 -2
  423. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/outside.cjs.js.map +0 -1
  424. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/outside.es.js +0 -45
  425. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/outside.es.js.map +0 -1
  426. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/simplify.cjs.js +0 -2
  427. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/simplify.cjs.js.map +0 -1
  428. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/simplify.es.js +0 -25
  429. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/simplify.es.js.map +0 -1
  430. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/subset.cjs.js +0 -2
  431. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/subset.cjs.js.map +0 -1
  432. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/subset.es.js +0 -95
  433. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/subset.es.js.map +0 -1
  434. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/to-comparators.cjs.js +0 -2
  435. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/to-comparators.cjs.js.map +0 -1
  436. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/to-comparators.es.js +0 -12
  437. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/to-comparators.es.js.map +0 -1
  438. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/valid.cjs.js +0 -2
  439. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/valid.cjs.js.map +0 -1
  440. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/valid.es.js +0 -18
  441. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/valid.es.js.map +0 -1
  442. package/src/App.css +0 -183
  443. package/src/App.tsx +0 -70
  444. package/src/main.tsx +0 -9
@@ -0,0 +1,65 @@
1
+ import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
+ import { Sparkles as o, Circle as d, Loader2 as m, CheckCircle2 as p } from "lucide-react";
3
+ const x = {
4
+ completed: {
5
+ icon: p,
6
+ iconClass: "text-emerald-400",
7
+ textClass: "text-zinc-400 line-through"
8
+ },
9
+ in_progress: {
10
+ icon: m,
11
+ iconClass: "text-blue-400 animate-spin",
12
+ textClass: "text-zinc-100"
13
+ },
14
+ pending: {
15
+ icon: d,
16
+ iconClass: "text-zinc-500",
17
+ textClass: "text-zinc-400"
18
+ }
19
+ };
20
+ function h({ todos: t }) {
21
+ if (!t.length) return null;
22
+ const l = t.filter((n) => n.status === "completed").length, r = t.find((n) => n.status === "in_progress"), c = Math.round(l / t.length * 100);
23
+ return /* @__PURE__ */ s("div", { className: "mb-3 w-full max-w-full rounded-2xl border border-zinc-700/60 bg-zinc-950/35 px-4 py-3.5 shadow-[0_10px_30px_rgba(0,0,0,0.25)] backdrop-blur-sm", children: [
24
+ /* @__PURE__ */ s("div", { className: "mb-3 flex items-start justify-between gap-3", children: [
25
+ /* @__PURE__ */ s("div", { className: "min-w-0", children: [
26
+ /* @__PURE__ */ s("div", { className: "flex items-center gap-2 text-zinc-200", children: [
27
+ /* @__PURE__ */ e(o, { className: "h-3.5 w-3.5 text-cyan-300/90" }),
28
+ /* @__PURE__ */ e("span", { className: "text-xs font-semibold uppercase tracking-[0.14em] text-zinc-300", children: "Agent Plan" })
29
+ ] }),
30
+ /* @__PURE__ */ e("p", { className: "mt-1 truncate text-xs text-zinc-400", children: r ? `Now: ${r.content}` : "Wrapping up remaining steps" })
31
+ ] }),
32
+ /* @__PURE__ */ s("div", { className: "rounded-lg border border-zinc-700/80 bg-zinc-900/70 px-2.5 py-1 text-[11px] font-medium text-zinc-300", children: [
33
+ l,
34
+ "/",
35
+ t.length,
36
+ " done"
37
+ ] })
38
+ ] }),
39
+ /* @__PURE__ */ e("div", { className: "mb-3 h-1.5 overflow-hidden rounded-full bg-zinc-800/80", children: /* @__PURE__ */ e(
40
+ "div",
41
+ {
42
+ className: "h-full rounded-full bg-linear-to-r from-cyan-400 to-emerald-400 transition-all duration-500",
43
+ style: { width: `${c}%` }
44
+ }
45
+ ) }),
46
+ /* @__PURE__ */ e("ul", { className: "space-y-1.5", children: t.map((n) => {
47
+ const i = x[n.status], a = i.icon;
48
+ return /* @__PURE__ */ s(
49
+ "li",
50
+ {
51
+ className: "group flex items-center gap-2 rounded-lg border border-zinc-800/80 bg-zinc-900/45 px-2.5 py-2 transition-colors duration-200 hover:border-zinc-700/80",
52
+ children: [
53
+ /* @__PURE__ */ e(a, { className: `h-3.5 w-3.5 flex-shrink-0 ${i.iconClass}` }),
54
+ /* @__PURE__ */ e("span", { className: `line-clamp-1 text-xs ${i.textClass}`, children: n.content })
55
+ ]
56
+ },
57
+ n.id
58
+ );
59
+ }) })
60
+ ] });
61
+ }
62
+ export {
63
+ h as default
64
+ };
65
+ //# sourceMappingURL=TodoList.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoList.es.js","sources":["../../src/components/TodoList.tsx"],"sourcesContent":["import type { TodoItem } from \"@/providers/Stream\";\nimport { CheckCircle2, Circle, Loader2, Sparkles } from \"lucide-react\";\n\nconst statusConfig = {\n completed: {\n icon: CheckCircle2,\n iconClass: \"text-emerald-400\",\n textClass: \"text-zinc-400 line-through\",\n },\n in_progress: {\n icon: Loader2,\n iconClass: \"text-blue-400 animate-spin\",\n textClass: \"text-zinc-100\",\n },\n pending: {\n icon: Circle,\n iconClass: \"text-zinc-500\",\n textClass: \"text-zinc-400\",\n },\n} as const;\n\nexport default function TodoList({ todos }: { todos: TodoItem[] }) {\n if (!todos.length) return null;\n\n const completed = todos.filter((t) => t.status === \"completed\").length;\n const inProgress = todos.find((t) => t.status === \"in_progress\");\n const percentage = Math.round((completed / todos.length) * 100);\n\n return (\n <div className=\"mb-3 w-full max-w-full rounded-2xl border border-zinc-700/60 bg-zinc-950/35 px-4 py-3.5 shadow-[0_10px_30px_rgba(0,0,0,0.25)] backdrop-blur-sm\">\n <div className=\"mb-3 flex items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-2 text-zinc-200\">\n <Sparkles className=\"h-3.5 w-3.5 text-cyan-300/90\" />\n <span className=\"text-xs font-semibold uppercase tracking-[0.14em] text-zinc-300\">Agent Plan</span>\n </div>\n <p className=\"mt-1 truncate text-xs text-zinc-400\">\n {inProgress ? `Now: ${inProgress.content}` : \"Wrapping up remaining steps\"}\n </p>\n </div>\n <div className=\"rounded-lg border border-zinc-700/80 bg-zinc-900/70 px-2.5 py-1 text-[11px] font-medium text-zinc-300\">\n {completed}/{todos.length} done\n </div>\n </div>\n\n <div className=\"mb-3 h-1.5 overflow-hidden rounded-full bg-zinc-800/80\">\n <div\n className=\"h-full rounded-full bg-linear-to-r from-cyan-400 to-emerald-400 transition-all duration-500\"\n style={{ width: `${percentage}%` }}\n />\n </div>\n\n <ul className=\"space-y-1.5\">\n {todos.map((todo) => {\n const config = statusConfig[todo.status];\n const Icon = config.icon;\n return (\n <li\n key={todo.id}\n className=\"group flex items-center gap-2 rounded-lg border border-zinc-800/80 bg-zinc-900/45 px-2.5 py-2 transition-colors duration-200 hover:border-zinc-700/80\"\n >\n <Icon className={`h-3.5 w-3.5 flex-shrink-0 ${config.iconClass}`} />\n <span className={`line-clamp-1 text-xs ${config.textClass}`}>\n {todo.content}\n </span>\n </li>\n );\n })}\n </ul>\n </div>\n );\n}\n"],"names":["statusConfig","CheckCircle2","Loader2","Circle","TodoList","todos","completed","t","inProgress","percentage","jsxs","jsx","Sparkles","todo","config","Icon"],"mappings":";;AAGA,MAAMA,IAAe;AAAA,EACnB,WAAW;AAAA,IACT,MAAMC;AAAA,IACN,WAAW;AAAA,IACX,WAAW;AAAA,EAAA;AAAA,EAEb,aAAa;AAAA,IACX,MAAMC;AAAA,IACN,WAAW;AAAA,IACX,WAAW;AAAA,EAAA;AAAA,EAEb,SAAS;AAAA,IACP,MAAMC;AAAA,IACN,WAAW;AAAA,IACX,WAAW;AAAA,EAAA;AAEf;AAEA,SAAwBC,EAAS,EAAE,OAAAC,KAAgC;AACjE,MAAI,CAACA,EAAM,OAAQ,QAAO;AAE1B,QAAMC,IAAYD,EAAM,OAAO,CAACE,MAAMA,EAAE,WAAW,WAAW,EAAE,QAC1DC,IAAaH,EAAM,KAAK,CAACE,MAAMA,EAAE,WAAW,aAAa,GACzDE,IAAa,KAAK,MAAOH,IAAYD,EAAM,SAAU,GAAG;AAE9D,SACE,gBAAAK,EAAC,OAAA,EAAI,WAAU,kJACb,UAAA;AAAA,IAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,WACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,yCACb,UAAA;AAAA,UAAA,gBAAAC,EAACC,GAAA,EAAS,WAAU,+BAAA,CAA+B;AAAA,UACnD,gBAAAD,EAAC,QAAA,EAAK,WAAU,mEAAkE,UAAA,aAAA,CAAU;AAAA,QAAA,GAC9F;AAAA,QACA,gBAAAA,EAAC,OAAE,WAAU,uCACV,cAAa,QAAQH,EAAW,OAAO,KAAK,8BAAA,CAC/C;AAAA,MAAA,GACF;AAAA,MACA,gBAAAE,EAAC,OAAA,EAAI,WAAU,yGACZ,UAAA;AAAA,QAAAJ;AAAA,QAAU;AAAA,QAAED,EAAM;AAAA,QAAO;AAAA,MAAA,EAAA,CAC5B;AAAA,IAAA,GACF;AAAA,IAEA,gBAAAM,EAAC,OAAA,EAAI,WAAU,0DACb,UAAA,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,OAAO,GAAGF,CAAU,IAAA;AAAA,MAAI;AAAA,IAAA,GAErC;AAAA,sBAEC,MAAA,EAAG,WAAU,eACX,UAAAJ,EAAM,IAAI,CAACQ,MAAS;AACnB,YAAMC,IAASd,EAAaa,EAAK,MAAM,GACjCE,IAAOD,EAAO;AACpB,aACE,gBAAAJ;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,gBAAAC,EAACI,GAAA,EAAK,WAAW,6BAA6BD,EAAO,SAAS,IAAI;AAAA,YAClE,gBAAAH,EAAC,UAAK,WAAW,wBAAwBG,EAAO,SAAS,IACtD,YAAK,QAAA,CACR;AAAA,UAAA;AAAA,QAAA;AAAA,QANKD,EAAK;AAAA,MAAA;AAAA,IAShB,CAAC,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;"}
@@ -1,4 +1,4 @@
1
- "use strict";const n=require("react/jsx-runtime"),L=require("../../utils/tailwindUtil.cjs.js"),E=require("../../utils/utils.cjs.js"),j=require("lucide-react"),C=require("react"),R=require("../ui/AgentMarkdown.cjs.js"),O=require("./BranchSwitcher.cjs.js"),J=require("./MessageActions.cjs.js");function U(t){if(!t)return null;const e=t.additional_kwargs;return e&&typeof e.reasoning_content=="string"&&e.reasoning_content.length>0?e.reasoning_content:null}function W({reasoningText:t,toolStatuses:e,isStreaming:s,fontSize:m}){const[g,a]=C.useState(!1);C.useEffect(()=>{a(!!s)},[s]);const x=e&&e.length>0,y=!!t&&t.length>0;return!x&&!y&&!s?null:n.jsxs("div",{className:"my-1",children:[n.jsxs("button",{type:"button",onClick:()=>a(d=>!d),className:"inline-flex items-center gap-1.5 text-xs text-zinc-400/80 transition-colors hover:text-zinc-300",children:[s?n.jsx(j.LoaderCircle,{className:"size-3 animate-spin"}):n.jsx(j.Sparkles,{className:"size-3"}),n.jsx("span",{children:s?"Thinking":"Thought"}),n.jsx(j.ChevronRight,{className:L.cn("size-3 transition-transform duration-200",g&&"rotate-90")})]}),g&&n.jsxs("div",{className:"mt-1.5 border-l-2 border-white/10 pl-4 space-y-1",children:[x&&e.map(d=>n.jsxs("div",{className:"flex items-center gap-2 text-sm text-zinc-300 py-0.5",children:[!d.isCompleted&&n.jsx(j.LoaderCircle,{className:"size-3.5 animate-spin text-zinc-400"}),n.jsx(j.Wrench,{className:"size-3.5 text-zinc-500"}),n.jsx("span",{children:d.label})]},d.key)),y&&n.jsx("div",{className:"text-sm text-zinc-300",children:n.jsx(R.AgentMarkdown,{fontSize:m,children:t})})]})]})}function D(t){if(!t||typeof t!="object")return null;const e=t,s=typeof e.visible=="boolean"?e.visible:typeof e.show=="boolean"?e.show:typeof e.display=="boolean"?e.display:typeof e.hidden=="boolean"?!e.hidden:!0;return{id:typeof e.id=="string"?e.id:void 0,name:typeof e.name=="string"?e.name:void 0,label:typeof e.label=="string"?e.label:void 0,event:typeof e.event=="string"?e.event:void 0,visible:s}}function G(t){if(!t)return[];const e=t.additional_kwargs;return!e||!Array.isArray(e.tool_status)?[]:e.tool_status.map(D).filter(s=>s!==null)}function H(t){if(!t)return!1;const e=t.additional_kwargs;return e?Object.prototype.hasOwnProperty.call(e,"tool_status"):!1}function T(t){return t?t.toLowerCase().replace(/\s+/g," ").replace(/\s*event:\s*metadata\s*$/i,"").trim():""}function Q(t){return!(t.visible===!1||T(t.label).length===0||t.event?.toLowerCase()==="metadata"||/\bevent:\s*metadata\b/i.test(t.label??""))}function V(t,e){if(!e)return t;if(typeof e=="string"){const s=e.trim();return s.length===0?t:`${t} ${s.slice(0,80)}${s.length>80?"...":""}`}if(typeof e=="object")try{const s=JSON.stringify(e);return`${t} ${s.length>80?`${s.slice(0,80)}...`:s}`}catch{return t}return t}function X(t,e,s,m){if(!t||t.length===0)return null;const g=t,a=g.filter(i=>i.type==="tool"),x=g.some(i=>H(i)),y=new Set(a.map(i=>i.tool_call_id).filter(i=>typeof i=="string"&&i.length>0)),d=new Set(a.map(i=>i.name).filter(i=>typeof i=="string"&&i.length>0)),f=[],u=[],h=[],p=new Set;let c=0;const q=i=>{if(e)for(const o of G(i)){if(!Q(o))continue;const r=T(o.label)||T(o.name)||"tool";if(p.has(r))continue;p.add(r);const w=o.label??o.name??"Running tool",b=(o.id?y.has(o.id):!1)||(o.name?d.has(o.name):!1)||!s;f.push({key:r,label:w,isCompleted:b})}};for(const i of g){if(i.type!=="ai")continue;const o=i.content,r=U(i);if(q(i),typeof o=="string"){r?u.push(r):o.length>0&&(h.push(n.jsx("div",{className:"py-1",children:n.jsx(R.AgentMarkdown,{fontSize:m,children:o})},`text-content-${i.id??c}`)),c++);continue}if(!Array.isArray(o)){r&&u.push(r);continue}const w=o;let b="",M=!1;const z=()=>{b.length>0&&(h.push(n.jsx("div",{className:"py-1",children:n.jsx(R.AgentMarkdown,{fontSize:m,children:b})},`text-${i.id??c}-${c}`)),b="",c++)};for(let N=0;N<w.length;N++){const l=w[N];if(l.type==="text"&&typeof l.text=="string"){b+=l.text;continue}if(l.type==="reasoning"&&typeof l.reasoning=="string"||l.type==="thinking"&&typeof l.thinking=="string"){z(),M=!0;const v=l.reasoning??l.thinking;u.push(v);continue}if(e&&!x&&l.type==="tool_use"){z();const v=typeof l.id=="string"?l.id:void 0,K=typeof l.name=="string"?l.name:"tool",A=T(K)||`tool-${N}`;if(!p.has(A)){p.add(A);const I=V(K,l.input),B=v?y.has(v):!s;f.push({key:A,label:I,isCompleted:B})}}}!M&&r?(b="",u.push(r)):z()}if(e&&!s&&!x&&f.length===0&&h.length===0&&a.length>0)for(const i of a)f.push({key:`tool-msg-${i.id??c}`,label:"Tool call completed",isCompleted:!0}),c++;const k=[],S=h.length>0,$=u.join(`
1
+ "use strict";const n=require("react/jsx-runtime"),B=require("../../utils/tailwindUtil.cjs.js"),E=require("../../utils/utils.cjs.js"),j=require("lucide-react"),R=require("react"),O=require("../TodoList.cjs.js"),$=require("../ui/AgentMarkdown.cjs.js"),J=require("./BranchSwitcher.cjs.js"),U=require("./MessageActions.cjs.js");function W(t){if(!t)return null;const e=t.additional_kwargs;return e&&typeof e.reasoning_content=="string"&&e.reasoning_content.length>0?e.reasoning_content:null}function D({reasoningText:t,toolStatuses:e,isStreaming:s,fontSize:x}){const[g,a]=R.useState(!1);R.useEffect(()=>{a(!!s)},[s]);const y=e&&e.length>0,p=!!t&&t.length>0;return!y&&!p&&!s?null:n.jsxs("div",{className:"my-1",children:[n.jsxs("button",{type:"button",onClick:()=>a(d=>!d),className:"inline-flex items-center gap-1.5 text-xs text-zinc-400/80 transition-colors hover:text-zinc-300",children:[s?n.jsx(j.LoaderCircle,{className:"size-3 animate-spin"}):n.jsx(j.Sparkles,{className:"size-3"}),n.jsx("span",{children:s?"Thinking":"Thought"}),n.jsx(j.ChevronRight,{className:B.cn("size-3 transition-transform duration-200",g&&"rotate-90")})]}),g&&n.jsxs("div",{className:"mt-1.5 border-l-2 border-white/10 pl-4 space-y-1",children:[y&&e.map(d=>n.jsxs("div",{className:"flex items-center gap-2 text-sm text-zinc-300 py-0.5",children:[!d.isCompleted&&n.jsx(j.LoaderCircle,{className:"size-3.5 animate-spin text-zinc-400"}),n.jsx(j.Wrench,{className:"size-3.5 text-zinc-500"}),n.jsx("span",{children:d.label})]},d.key)),p&&n.jsx("div",{className:"text-sm text-zinc-300",children:n.jsx($.AgentMarkdown,{fontSize:x,children:t})})]})]})}function G(t){if(!t||typeof t!="object")return null;const e=t,s=typeof e.visible=="boolean"?e.visible:typeof e.show=="boolean"?e.show:typeof e.display=="boolean"?e.display:typeof e.hidden=="boolean"?!e.hidden:!0;return{id:typeof e.id=="string"?e.id:void 0,name:typeof e.name=="string"?e.name:void 0,label:typeof e.label=="string"?e.label:void 0,event:typeof e.event=="string"?e.event:void 0,visible:s}}function H(t){if(!t)return[];const e=t.additional_kwargs;return!e||!Array.isArray(e.tool_status)?[]:e.tool_status.map(G).filter(s=>s!==null)}function Q(t){if(!t)return!1;const e=t.additional_kwargs;return e?Object.prototype.hasOwnProperty.call(e,"tool_status"):!1}function z(t){return t?t.toLowerCase().replace(/\s+/g," ").replace(/\s*event:\s*metadata\s*$/i,"").trim():""}function V(t){return!(t.visible===!1||z(t.label).length===0||t.event?.toLowerCase()==="metadata"||/\bevent:\s*metadata\b/i.test(t.label??""))}function X(t,e){if(!e)return t;if(typeof e=="string"){const s=e.trim();return s.length===0?t:`${t} ${s.slice(0,80)}${s.length>80?"...":""}`}if(typeof e=="object")try{const s=JSON.stringify(e);return`${t} ${s.length>80?`${s.slice(0,80)}...`:s}`}catch{return t}return t}function Y(t,e,s,x){if(!t||t.length===0)return null;const g=t,a=g.filter(i=>i.type==="tool"),y=g.some(i=>Q(i)),p=new Set(a.map(i=>i.tool_call_id).filter(i=>typeof i=="string"&&i.length>0)),d=new Set(a.map(i=>i.name).filter(i=>typeof i=="string"&&i.length>0)),f=[],u=[],h=[],m=new Set;let c=0;const k=i=>{if(e)for(const o of H(i)){if(!V(o))continue;const r=z(o.label)||z(o.name)||"tool";if(m.has(r))continue;m.add(r);const N=o.label??o.name??"Running tool",b=(o.id?p.has(o.id):!1)||(o.name?d.has(o.name):!1)||!s;f.push({key:r,label:N,isCompleted:b})}};for(const i of g){if(i.type!=="ai")continue;const o=i.content,r=W(i);if(k(i),typeof o=="string"){r?u.push(r):o.length>0&&(h.push(n.jsx("div",{className:"py-1",children:n.jsx($.AgentMarkdown,{fontSize:x,children:o})},`text-content-${i.id??c}`)),c++);continue}if(!Array.isArray(o)){r&&u.push(r);continue}const N=o;let b="",q=!1;const A=()=>{b.length>0&&(h.push(n.jsx("div",{className:"py-1",children:n.jsx($.AgentMarkdown,{fontSize:x,children:b})},`text-${i.id??c}-${c}`)),b="",c++)};for(let v=0;v<N.length;v++){const l=N[v];if(l.type==="text"&&typeof l.text=="string"){b+=l.text;continue}if(l.type==="reasoning"&&typeof l.reasoning=="string"||l.type==="thinking"&&typeof l.thinking=="string"){A(),q=!0;const T=l.reasoning??l.thinking;u.push(T);continue}if(e&&!y&&l.type==="tool_use"){A();const T=typeof l.id=="string"?l.id:void 0,K=typeof l.name=="string"?l.name:"tool",C=z(K)||`tool-${v}`;if(!m.has(C)){m.add(C);const I=X(K,l.input),L=T?p.has(T):!s;f.push({key:C,label:I,isCompleted:L})}}}!q&&r?(b="",u.push(r)):A()}if(e&&!s&&!y&&f.length===0&&h.length===0&&a.length>0)for(const i of a)f.push({key:`tool-msg-${i.id??c}`,label:"Tool call completed",isCompleted:!0}),c++;const w=[],S=h.length>0,_=u.join(`
2
2
 
3
- `),F=e&&f.length>0||$.length>0,_=!!s&&!S;return(F||_)&&k.push(n.jsx(W,{reasoningText:$||void 0,toolStatuses:e?f:void 0,isStreaming:_,fontSize:m},"agent-activity")),k.push(...h),k.length>0?n.jsx(n.Fragment,{children:k}):null}function Y({agentName:t,fontSize:e,message:s,groupedMessages:m,showToolActivity:g=!0,isStreaming:a=!1,onRegenerate:x,feedback:y,onFeedback:d,branch:f,branchOptions:u,onBranchSelect:h}){const p=E.getContentString(s?.content),c=X(m??[s],g,a,e);return n.jsxs("div",{className:"agent-message flex flex-col gap-1 w-full group",children:[n.jsxs("div",{className:"flex items-center gap-3 w-full",children:[n.jsx("div",{className:"rounded-full size-8 shrink-0 bg-zinc-800 flex items-center justify-center p-2","data-alt":"AI Avatar",children:n.jsx(j.BotMessageSquare,{className:"text-xs",color:"white"})}),n.jsx("span",{className:"text-zinc-500 text-sm",children:t||"Agent"})]}),n.jsxs("div",{className:"flex flex-1 flex-col gap-1 items-start min-w-0",children:[n.jsx("div",{className:"text-content text-foreground",style:e?{fontSize:e}:void 0,children:c||n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"flex items-center gap-2 text-zinc-500",children:n.jsx("span",{children:"Thinking..."})}),a&&p&&n.jsx("span",{className:"inline-block w-2 h-4 ml-1 bg-zinc-400 animate-pulse"})]})}),!a&&f&&u&&h&&u.length>1&&n.jsx(O.BranchSwitcher,{branch:f,branchOptions:u,onSelect:h,isLoading:a}),!a&&p&&n.jsx(J.MessageActions,{message:s,onRegenerate:x,feedback:y,onFeedback:d,className:""})]})]})}const Z=C.memo(Y,(t,e)=>e.isStreaming?!1:t.message.id===e.message.id&&t.groupedMessages?.length===e.groupedMessages?.length&&t.showToolActivity===e.showToolActivity&&t.isStreaming===e.isStreaming&&t.feedback===e.feedback&&t.onRegenerate===e.onRegenerate&&t.onFeedback===e.onFeedback&&t.branch===e.branch&&t.branchOptions?.length===e.branchOptions?.length&&t.onBranchSelect===e.onBranchSelect);module.exports=Z;
3
+ `),F=e&&f.length>0||_.length>0,M=!!s&&!S;return(F||M)&&w.push(n.jsx(D,{reasoningText:_||void 0,toolStatuses:e?f:void 0,isStreaming:M,fontSize:x},"agent-activity")),w.push(...h),w.length>0?n.jsx(n.Fragment,{children:w}):null}function Z({agentName:t,fontSize:e,message:s,groupedMessages:x,showToolActivity:g=!0,isStreaming:a=!1,onRegenerate:y,feedback:p,onFeedback:d,branch:f,branchOptions:u,onBranchSelect:h,todos:m}){const c=E.getContentString(s?.content),k=Y(x??[s],g,a,e);return n.jsxs("div",{className:"agent-message flex flex-col gap-1 w-full group",children:[n.jsxs("div",{className:"flex items-center gap-3 w-full",children:[n.jsx("div",{className:"rounded-full size-8 shrink-0 bg-zinc-800 flex items-center justify-center p-2","data-alt":"AI Avatar",children:n.jsx(j.BotMessageSquare,{className:"text-xs",color:"white"})}),n.jsx("span",{className:"text-zinc-500 text-sm",children:t||"Agent"})]}),n.jsxs("div",{className:"flex flex-1 flex-col gap-1 items-start min-w-0",children:[m&&m.length>0&&n.jsx(O,{todos:m}),n.jsx("div",{className:"text-content text-foreground",style:e?{fontSize:e}:void 0,children:k||n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"flex items-center gap-2 text-zinc-500",children:n.jsx("span",{children:"Thinking..."})}),a&&c&&n.jsx("span",{className:"inline-block w-2 h-4 ml-1 bg-zinc-400 animate-pulse"})]})}),!a&&f&&u&&h&&u.length>1&&n.jsx(J.BranchSwitcher,{branch:f,branchOptions:u,onSelect:h,isLoading:a}),!a&&c&&n.jsx(U.MessageActions,{message:s,onRegenerate:y,feedback:p,onFeedback:d,className:""})]})]})}const P=R.memo(Z,(t,e)=>e.isStreaming?!1:t.message.id===e.message.id&&t.groupedMessages?.length===e.groupedMessages?.length&&t.showToolActivity===e.showToolActivity&&t.isStreaming===e.isStreaming&&t.feedback===e.feedback&&t.onRegenerate===e.onRegenerate&&t.onFeedback===e.onFeedback&&t.branch===e.branch&&t.branchOptions?.length===e.branchOptions?.length&&t.onBranchSelect===e.onBranchSelect&&t.todos===e.todos);module.exports=P;
4
4
  //# sourceMappingURL=AgentMessage.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentMessage.cjs.js","sources":["../../../src/components/messages/AgentMessage.tsx"],"sourcesContent":["import { cn } from \"@/utils/tailwindUtil\";\nimport { getContentString } from \"@/utils/utils\";\nimport type { Message } from \"@langchain/langgraph-sdk\";\nimport { BotMessageSquare, ChevronRight, LoaderCircle, Sparkles, Wrench } from \"lucide-react\";\nimport React, { useEffect, useState } from \"react\";\nimport { AgentMarkdown } from \"../ui/AgentMarkdown\";\nimport { BranchSwitcher } from \"./BranchSwitcher\";\nimport { MessageActions, type MessageFeedback } from \"./MessageActions\";\n\ntype ToolStatusEntry = {\n id?: string;\n name?: string;\n label?: string;\n event?: string;\n visible?: boolean;\n};\n\nfunction getReasoningFromKwargs(message: Message | undefined): string | null {\n if (!message) return null;\n const ak = (message as Record<string, unknown>).additional_kwargs as\n | Record<string, unknown>\n | undefined;\n if (\n ak &&\n typeof ak.reasoning_content === \"string\" &&\n ak.reasoning_content.length > 0\n ) {\n return ak.reasoning_content;\n }\n return null;\n}\n\nfunction AgentActivity({\n reasoningText,\n toolStatuses,\n isStreaming,\n fontSize,\n}: {\n reasoningText?: string;\n toolStatuses?: Array<{ key: string; label: string; isCompleted: boolean }>;\n isStreaming?: boolean;\n fontSize?: string;\n}) {\n const [expanded, setExpanded] = useState(false);\n\n useEffect(() => {\n setExpanded(!!isStreaming);\n }, [isStreaming]);\n\n const hasTools = toolStatuses && toolStatuses.length > 0;\n const hasReasoning = !!reasoningText && reasoningText.length > 0;\n\n if (!hasTools && !hasReasoning && !isStreaming) return null;\n\n return (\n <div className=\"my-1\">\n <button\n type=\"button\"\n onClick={() => setExpanded((p) => !p)}\n className=\"inline-flex items-center gap-1.5 text-xs text-zinc-400/80 transition-colors hover:text-zinc-300\"\n >\n {isStreaming ? (\n <LoaderCircle className=\"size-3 animate-spin\" />\n ) : (\n <Sparkles className=\"size-3\" />\n )}\n <span>{isStreaming ? \"Thinking\" : \"Thought\"}</span>\n <ChevronRight\n className={cn(\n \"size-3 transition-transform duration-200\",\n expanded && \"rotate-90\",\n )}\n />\n </button>\n {expanded && (\n <div className=\"mt-1.5 border-l-2 border-white/10 pl-4 space-y-1\">\n {hasTools && toolStatuses!.map((ts) => (\n <div key={ts.key} className=\"flex items-center gap-2 text-sm text-zinc-300 py-0.5\">\n {!ts.isCompleted && (\n <LoaderCircle className=\"size-3.5 animate-spin text-zinc-400\" />\n )}\n <Wrench className=\"size-3.5 text-zinc-500\" />\n <span>{ts.label}</span>\n </div>\n ))}\n {hasReasoning && (\n <div className=\"text-sm text-zinc-300\">\n <AgentMarkdown fontSize={fontSize}>{reasoningText!}</AgentMarkdown>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nfunction toToolStatusEntry(value: unknown): ToolStatusEntry | null {\n if (!value || typeof value !== \"object\") return null;\n const v = value as Record<string, unknown>;\n\n const visible =\n typeof v.visible === \"boolean\"\n ? v.visible\n : typeof v.show === \"boolean\"\n ? v.show\n : typeof v.display === \"boolean\"\n ? v.display\n : typeof v.hidden === \"boolean\"\n ? !v.hidden\n : true;\n\n return {\n id: typeof v.id === \"string\" ? v.id : undefined,\n name: typeof v.name === \"string\" ? v.name : undefined,\n label: typeof v.label === \"string\" ? v.label : undefined,\n event: typeof v.event === \"string\" ? v.event : undefined,\n visible,\n };\n}\n\nfunction getToolStatusFromKwargs(message: Message | undefined): ToolStatusEntry[] {\n if (!message) return [];\n const ak = (message as Record<string, unknown>).additional_kwargs as\n | Record<string, unknown>\n | undefined;\n\n if (!ak || !Array.isArray(ak.tool_status)) return [];\n\n return (ak.tool_status as unknown[])\n .map(toToolStatusEntry)\n .filter((s): s is ToolStatusEntry => s !== null);\n}\n\nfunction hasToolStatusFieldInKwargs(message: Message | undefined): boolean {\n if (!message) return false;\n const ak = (message as Record<string, unknown>).additional_kwargs as\n | Record<string, unknown>\n | undefined;\n if (!ak) return false;\n return Object.prototype.hasOwnProperty.call(ak, \"tool_status\");\n}\n\nfunction normalizeSemanticKey(value: string | undefined): string {\n if (!value) return \"\";\n return value\n .toLowerCase()\n .replace(/\\s+/g, \" \")\n .replace(/\\s*event:\\s*metadata\\s*$/i, \"\")\n .trim();\n}\n\nfunction shouldRenderToolStatus(status: ToolStatusEntry): boolean {\n if (status.visible === false) return false;\n\n const labelKey = normalizeSemanticKey(status.label);\n if (labelKey.length === 0) return false;\n\n // Filter transport/debug noise like \"event: metadata\".\n if (status.event?.toLowerCase() === \"metadata\") return false;\n if (/\\bevent:\\s*metadata\\b/i.test(status.label ?? \"\")) return false;\n\n return true;\n}\n\nfunction normalizeToolLabel(name: string, input: unknown): string {\n if (!input) return name;\n if (typeof input === \"string\") {\n const trimmed = input.trim();\n if (trimmed.length === 0) return name;\n return `${name} ${trimmed.slice(0, 80)}${trimmed.length > 80 ? \"...\" : \"\"}`;\n }\n if (typeof input === \"object\") {\n try {\n const json = JSON.stringify(input);\n return `${name} ${json.length > 80 ? `${json.slice(0, 80)}...` : json}`;\n } catch {\n return name;\n }\n }\n return name;\n}\n\nfunction renderContentInline(\n groupedMessages: Message[] | undefined,\n showToolActivity: boolean,\n isActivelyStreaming?: boolean,\n fontSize?: string,\n) {\n if (!groupedMessages || groupedMessages.length === 0) return null;\n\n const timeline = groupedMessages;\n const toolMessages = timeline.filter((m) => m.type === \"tool\");\n const hasBackendToolStatus = timeline.some((m) => hasToolStatusFieldInKwargs(m));\n\n const completedToolIds = new Set(\n toolMessages\n .map((m) => (m as Record<string, unknown>).tool_call_id)\n .filter((id): id is string => typeof id === \"string\" && id.length > 0),\n );\n const completedToolNames = new Set(\n toolMessages\n .map((m) => (m as Record<string, unknown>).name)\n .filter((name): name is string => typeof name === \"string\" && name.length > 0),\n );\n\n // ── Collect activity (reasoning + tool statuses) and text content separately ──\n const collectedToolStatuses: Array<{ key: string; label: string; isCompleted: boolean }> = [];\n const reasoningTexts: string[] = [];\n const textParts: React.ReactNode[] = [];\n const renderedToolKeys = new Set<string>();\n let textIdx = 0;\n\n const collectToolStatusFromKwargs = (message: Message) => {\n if (!showToolActivity) return;\n for (const status of getToolStatusFromKwargs(message)) {\n if (!shouldRenderToolStatus(status)) continue;\n const semanticKey =\n normalizeSemanticKey(status.label) || normalizeSemanticKey(status.name) || \"tool\";\n if (renderedToolKeys.has(semanticKey)) continue;\n renderedToolKeys.add(semanticKey);\n const label = status.label ?? status.name ?? \"Running tool\";\n const isCompleted =\n (status.id ? completedToolIds.has(status.id) : false) ||\n (status.name ? completedToolNames.has(status.name) : false) ||\n !isActivelyStreaming;\n collectedToolStatuses.push({ key: semanticKey, label, isCompleted });\n }\n };\n\n for (const message of timeline) {\n if (message.type !== \"ai\") continue;\n\n const content = message.content;\n const kwargsReasoning = getReasoningFromKwargs(message);\n\n // Collect tool statuses from kwargs\n collectToolStatusFromKwargs(message);\n\n if (typeof content === \"string\") {\n if (kwargsReasoning) {\n // When reasoning_content exists in kwargs, the string content is the\n // same thinking text (set by messages-tuple before wrapModelCall clears\n // it). Capture it only as reasoning to avoid duplication.\n reasoningTexts.push(kwargsReasoning);\n } else if (content.length > 0) {\n textParts.push(\n <div key={`text-content-${message.id ?? textIdx}`} className=\"py-1\">\n <AgentMarkdown fontSize={fontSize}>{content}</AgentMarkdown>\n </div>,\n );\n textIdx++;\n }\n continue;\n }\n\n if (!Array.isArray(content)) {\n if (kwargsReasoning) reasoningTexts.push(kwargsReasoning);\n continue;\n }\n\n const blocks = content as Record<string, unknown>[];\n let textAccum = \"\";\n let hasReasoningBlock = false;\n\n const flushText = () => {\n if (textAccum.length > 0) {\n textParts.push(\n <div key={`text-${message.id ?? textIdx}-${textIdx}`} className=\"py-1\">\n <AgentMarkdown fontSize={fontSize}>{textAccum}</AgentMarkdown>\n </div>,\n );\n textAccum = \"\";\n textIdx++;\n }\n };\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n if (block.type === \"text\" && typeof block.text === \"string\") {\n textAccum += block.text;\n continue;\n }\n\n if (\n (block.type === \"reasoning\" && typeof block.reasoning === \"string\") ||\n (block.type === \"thinking\" && typeof block.thinking === \"string\")\n ) {\n flushText();\n hasReasoningBlock = true;\n const text = (block.reasoning ?? block.thinking) as string;\n reasoningTexts.push(text);\n continue;\n }\n\n if (showToolActivity && !hasBackendToolStatus && block.type === \"tool_use\") {\n flushText();\n const toolId = typeof block.id === \"string\" ? block.id : undefined;\n const toolName = typeof block.name === \"string\" ? block.name : \"tool\";\n const semanticKey = normalizeSemanticKey(toolName) || `tool-${i}`;\n if (!renderedToolKeys.has(semanticKey)) {\n renderedToolKeys.add(semanticKey);\n const label = normalizeToolLabel(toolName, (block as Record<string, unknown>).input);\n const isCompleted = toolId ? completedToolIds.has(toolId) : !isActivelyStreaming;\n collectedToolStatuses.push({ key: semanticKey, label, isCompleted });\n }\n }\n }\n\n if (!hasReasoningBlock && kwargsReasoning) {\n // Same as the string-content case: kwargs reasoning duplicates the\n // text blocks, so discard accumulated text and capture as reasoning only.\n textAccum = \"\";\n reasoningTexts.push(kwargsReasoning);\n } else {\n flushText();\n }\n }\n\n // Fallback for legacy payloads without backend tool_status (only after streaming completes)\n if (showToolActivity && !isActivelyStreaming && !hasBackendToolStatus && collectedToolStatuses.length === 0 && textParts.length === 0 && toolMessages.length > 0) {\n for (const toolMessage of toolMessages) {\n collectedToolStatuses.push({\n key: `tool-msg-${toolMessage.id ?? textIdx}`,\n label: \"Tool call completed\",\n isCompleted: true,\n });\n textIdx++;\n }\n }\n\n // ── Assemble output: AgentActivity block first, then text content ──\n const parts: React.ReactNode[] = [];\n const hasTextContent = textParts.length > 0;\n const combinedReasoning = reasoningTexts.join(\"\\n\\n\");\n const hasActivity =\n (showToolActivity && collectedToolStatuses.length > 0) ||\n combinedReasoning.length > 0;\n const activityIsStreaming = !!isActivelyStreaming && !hasTextContent;\n\n if (hasActivity || activityIsStreaming) {\n parts.push(\n <AgentActivity\n key=\"agent-activity\"\n reasoningText={combinedReasoning || undefined}\n toolStatuses={showToolActivity ? collectedToolStatuses : undefined}\n isStreaming={activityIsStreaming}\n fontSize={fontSize}\n />,\n );\n }\n\n parts.push(...textParts);\n\n return parts.length > 0 ? <>{parts}</> : null;\n}\n\nfunction AgentMessage({\n agentName,\n fontSize,\n message,\n groupedMessages,\n showToolActivity = true,\n isStreaming = false,\n onRegenerate,\n feedback,\n onFeedback,\n branch,\n branchOptions,\n onBranchSelect,\n}: {\n agentName?: string;\n fontSize?: string;\n message: Message;\n groupedMessages?: Message[];\n showToolActivity?: boolean;\n isStreaming?: boolean;\n onRegenerate?: (parentCheckpoint: any | null | undefined, messageId: string, currentMessage: any) => void;\n feedback?: MessageFeedback;\n onFeedback?: (messageId: string, feedback: MessageFeedback) => void;\n branch?: string;\n branchOptions?: string[];\n onBranchSelect?: (branch: string) => void;\n}) {\n const content = getContentString(message?.content);\n const inlineContent = renderContentInline(groupedMessages ?? [message], showToolActivity, isStreaming, fontSize);\n\n return (\n <div className=\"agent-message flex flex-col gap-1 w-full group\">\n <div className=\"flex items-center gap-3 w-full\">\n <div\n className=\"rounded-full size-8 shrink-0 bg-zinc-800 flex items-center justify-center p-2\"\n data-alt=\"AI Avatar\"\n >\n <BotMessageSquare className=\"text-xs\" color=\"white\" />\n </div>\n <span className=\"text-zinc-500 text-sm\">{agentName || \"Agent\"}</span>\n </div>\n <div className=\"flex flex-1 flex-col gap-1 items-start min-w-0\">\n <div className=\"text-content text-foreground\" style={fontSize ? { fontSize } : undefined}>\n {inlineContent ? (\n inlineContent\n ) : (\n <>\n <div className=\"flex items-center gap-2 text-zinc-500\">\n {/* <Loader2 className=\"animate-spin\" size={16} /> */}\n <span>Thinking...</span>\n </div>\n {isStreaming && content && (\n <span className=\"inline-block w-2 h-4 ml-1 bg-zinc-400 animate-pulse\" />\n )}\n </>\n )}\n </div>\n\n {/* Branch switcher - show when multiple branches exist */}\n {!isStreaming && branch && branchOptions && onBranchSelect && branchOptions.length > 1 && (\n <BranchSwitcher\n branch={branch}\n branchOptions={branchOptions}\n onSelect={onBranchSelect}\n isLoading={isStreaming}\n />\n )}\n\n {/* Show actions only when not streaming and content exists */}\n {!isStreaming && content && (\n <MessageActions\n message={message}\n onRegenerate={onRegenerate}\n feedback={feedback}\n onFeedback={onFeedback}\n className=\"\"\n />\n )}\n </div>\n </div>\n );\n}\n\n// Memoize - only re-render if message ID changes or streaming state changes\nexport default React.memo(AgentMessage, (prevProps, nextProps) => {\n // If it's streaming, we need to re-render to show updates\n if (nextProps.isStreaming) {\n return false; // Always re-render when streaming\n }\n\n // Otherwise, only re-render if the message ID, feedback, branch, or callbacks changed\n return (\n prevProps.message.id === nextProps.message.id &&\n prevProps.groupedMessages?.length === nextProps.groupedMessages?.length &&\n prevProps.showToolActivity === nextProps.showToolActivity &&\n prevProps.isStreaming === nextProps.isStreaming &&\n prevProps.feedback === nextProps.feedback &&\n prevProps.onRegenerate === nextProps.onRegenerate &&\n prevProps.onFeedback === nextProps.onFeedback &&\n prevProps.branch === nextProps.branch &&\n prevProps.branchOptions?.length === nextProps.branchOptions?.length &&\n prevProps.onBranchSelect === nextProps.onBranchSelect\n );\n});\n"],"names":["getReasoningFromKwargs","message","ak","AgentActivity","reasoningText","toolStatuses","isStreaming","fontSize","expanded","setExpanded","useState","useEffect","hasTools","hasReasoning","jsxs","p","jsx","LoaderCircle","Sparkles","ChevronRight","cn","ts","Wrench","AgentMarkdown","toToolStatusEntry","value","v","visible","getToolStatusFromKwargs","hasToolStatusFieldInKwargs","normalizeSemanticKey","shouldRenderToolStatus","status","normalizeToolLabel","name","input","trimmed","json","renderContentInline","groupedMessages","showToolActivity","isActivelyStreaming","timeline","toolMessages","m","hasBackendToolStatus","completedToolIds","id","completedToolNames","collectedToolStatuses","reasoningTexts","textParts","renderedToolKeys","textIdx","collectToolStatusFromKwargs","semanticKey","label","isCompleted","content","kwargsReasoning","blocks","textAccum","hasReasoningBlock","flushText","i","block","text","toolId","toolName","toolMessage","parts","hasTextContent","combinedReasoning","hasActivity","activityIsStreaming","Fragment","AgentMessage","agentName","onRegenerate","feedback","onFeedback","branch","branchOptions","onBranchSelect","getContentString","inlineContent","BotMessageSquare","BranchSwitcher","MessageActions","React","prevProps","nextProps"],"mappings":"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"}
1
+ {"version":3,"file":"AgentMessage.cjs.js","sources":["../../../src/components/messages/AgentMessage.tsx"],"sourcesContent":["import { cn } from \"@/utils/tailwindUtil\";\nimport type { TodoItem } from \"@/providers/Stream\";\nimport { getContentString } from \"@/utils/utils\";\nimport type { Message } from \"@langchain/langgraph-sdk\";\nimport { BotMessageSquare, ChevronRight, LoaderCircle, Sparkles, Wrench } from \"lucide-react\";\nimport React, { useEffect, useState } from \"react\";\nimport TodoList from \"../TodoList\";\nimport { AgentMarkdown } from \"../ui/AgentMarkdown\";\nimport { BranchSwitcher } from \"./BranchSwitcher\";\nimport { MessageActions, type MessageFeedback } from \"./MessageActions\";\n\ntype ToolStatusEntry = {\n id?: string;\n name?: string;\n label?: string;\n event?: string;\n visible?: boolean;\n};\n\nfunction getReasoningFromKwargs(message: Message | undefined): string | null {\n if (!message) return null;\n const ak = (message as Record<string, unknown>).additional_kwargs as\n | Record<string, unknown>\n | undefined;\n if (\n ak &&\n typeof ak.reasoning_content === \"string\" &&\n ak.reasoning_content.length > 0\n ) {\n return ak.reasoning_content;\n }\n return null;\n}\n\nfunction AgentActivity({\n reasoningText,\n toolStatuses,\n isStreaming,\n fontSize,\n}: {\n reasoningText?: string;\n toolStatuses?: Array<{ key: string; label: string; isCompleted: boolean }>;\n isStreaming?: boolean;\n fontSize?: string;\n}) {\n const [expanded, setExpanded] = useState(false);\n\n useEffect(() => {\n setExpanded(!!isStreaming);\n }, [isStreaming]);\n\n const hasTools = toolStatuses && toolStatuses.length > 0;\n const hasReasoning = !!reasoningText && reasoningText.length > 0;\n\n if (!hasTools && !hasReasoning && !isStreaming) return null;\n\n return (\n <div className=\"my-1\">\n <button\n type=\"button\"\n onClick={() => setExpanded((p) => !p)}\n className=\"inline-flex items-center gap-1.5 text-xs text-zinc-400/80 transition-colors hover:text-zinc-300\"\n >\n {isStreaming ? (\n <LoaderCircle className=\"size-3 animate-spin\" />\n ) : (\n <Sparkles className=\"size-3\" />\n )}\n <span>{isStreaming ? \"Thinking\" : \"Thought\"}</span>\n <ChevronRight\n className={cn(\n \"size-3 transition-transform duration-200\",\n expanded && \"rotate-90\",\n )}\n />\n </button>\n {expanded && (\n <div className=\"mt-1.5 border-l-2 border-white/10 pl-4 space-y-1\">\n {hasTools && toolStatuses!.map((ts) => (\n <div key={ts.key} className=\"flex items-center gap-2 text-sm text-zinc-300 py-0.5\">\n {!ts.isCompleted && (\n <LoaderCircle className=\"size-3.5 animate-spin text-zinc-400\" />\n )}\n <Wrench className=\"size-3.5 text-zinc-500\" />\n <span>{ts.label}</span>\n </div>\n ))}\n {hasReasoning && (\n <div className=\"text-sm text-zinc-300\">\n <AgentMarkdown fontSize={fontSize}>{reasoningText!}</AgentMarkdown>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nfunction toToolStatusEntry(value: unknown): ToolStatusEntry | null {\n if (!value || typeof value !== \"object\") return null;\n const v = value as Record<string, unknown>;\n\n const visible =\n typeof v.visible === \"boolean\"\n ? v.visible\n : typeof v.show === \"boolean\"\n ? v.show\n : typeof v.display === \"boolean\"\n ? v.display\n : typeof v.hidden === \"boolean\"\n ? !v.hidden\n : true;\n\n return {\n id: typeof v.id === \"string\" ? v.id : undefined,\n name: typeof v.name === \"string\" ? v.name : undefined,\n label: typeof v.label === \"string\" ? v.label : undefined,\n event: typeof v.event === \"string\" ? v.event : undefined,\n visible,\n };\n}\n\nfunction getToolStatusFromKwargs(message: Message | undefined): ToolStatusEntry[] {\n if (!message) return [];\n const ak = (message as Record<string, unknown>).additional_kwargs as\n | Record<string, unknown>\n | undefined;\n\n if (!ak || !Array.isArray(ak.tool_status)) return [];\n\n return (ak.tool_status as unknown[])\n .map(toToolStatusEntry)\n .filter((s): s is ToolStatusEntry => s !== null);\n}\n\nfunction hasToolStatusFieldInKwargs(message: Message | undefined): boolean {\n if (!message) return false;\n const ak = (message as Record<string, unknown>).additional_kwargs as\n | Record<string, unknown>\n | undefined;\n if (!ak) return false;\n return Object.prototype.hasOwnProperty.call(ak, \"tool_status\");\n}\n\nfunction normalizeSemanticKey(value: string | undefined): string {\n if (!value) return \"\";\n return value\n .toLowerCase()\n .replace(/\\s+/g, \" \")\n .replace(/\\s*event:\\s*metadata\\s*$/i, \"\")\n .trim();\n}\n\nfunction shouldRenderToolStatus(status: ToolStatusEntry): boolean {\n if (status.visible === false) return false;\n\n const labelKey = normalizeSemanticKey(status.label);\n if (labelKey.length === 0) return false;\n\n // Filter transport/debug noise like \"event: metadata\".\n if (status.event?.toLowerCase() === \"metadata\") return false;\n if (/\\bevent:\\s*metadata\\b/i.test(status.label ?? \"\")) return false;\n\n return true;\n}\n\nfunction normalizeToolLabel(name: string, input: unknown): string {\n if (!input) return name;\n if (typeof input === \"string\") {\n const trimmed = input.trim();\n if (trimmed.length === 0) return name;\n return `${name} ${trimmed.slice(0, 80)}${trimmed.length > 80 ? \"...\" : \"\"}`;\n }\n if (typeof input === \"object\") {\n try {\n const json = JSON.stringify(input);\n return `${name} ${json.length > 80 ? `${json.slice(0, 80)}...` : json}`;\n } catch {\n return name;\n }\n }\n return name;\n}\n\nfunction renderContentInline(\n groupedMessages: Message[] | undefined,\n showToolActivity: boolean,\n isActivelyStreaming?: boolean,\n fontSize?: string,\n) {\n if (!groupedMessages || groupedMessages.length === 0) return null;\n\n const timeline = groupedMessages;\n const toolMessages = timeline.filter((m) => m.type === \"tool\");\n const hasBackendToolStatus = timeline.some((m) => hasToolStatusFieldInKwargs(m));\n\n const completedToolIds = new Set(\n toolMessages\n .map((m) => (m as Record<string, unknown>).tool_call_id)\n .filter((id): id is string => typeof id === \"string\" && id.length > 0),\n );\n const completedToolNames = new Set(\n toolMessages\n .map((m) => (m as Record<string, unknown>).name)\n .filter((name): name is string => typeof name === \"string\" && name.length > 0),\n );\n\n // ── Collect activity (reasoning + tool statuses) and text content separately ──\n const collectedToolStatuses: Array<{ key: string; label: string; isCompleted: boolean }> = [];\n const reasoningTexts: string[] = [];\n const textParts: React.ReactNode[] = [];\n const renderedToolKeys = new Set<string>();\n let textIdx = 0;\n\n const collectToolStatusFromKwargs = (message: Message) => {\n if (!showToolActivity) return;\n for (const status of getToolStatusFromKwargs(message)) {\n if (!shouldRenderToolStatus(status)) continue;\n const semanticKey =\n normalizeSemanticKey(status.label) || normalizeSemanticKey(status.name) || \"tool\";\n if (renderedToolKeys.has(semanticKey)) continue;\n renderedToolKeys.add(semanticKey);\n const label = status.label ?? status.name ?? \"Running tool\";\n const isCompleted =\n (status.id ? completedToolIds.has(status.id) : false) ||\n (status.name ? completedToolNames.has(status.name) : false) ||\n !isActivelyStreaming;\n collectedToolStatuses.push({ key: semanticKey, label, isCompleted });\n }\n };\n\n for (const message of timeline) {\n if (message.type !== \"ai\") continue;\n\n const content = message.content;\n const kwargsReasoning = getReasoningFromKwargs(message);\n\n // Collect tool statuses from kwargs\n collectToolStatusFromKwargs(message);\n\n if (typeof content === \"string\") {\n if (kwargsReasoning) {\n // When reasoning_content exists in kwargs, the string content is the\n // same thinking text (set by messages-tuple before wrapModelCall clears\n // it). Capture it only as reasoning to avoid duplication.\n reasoningTexts.push(kwargsReasoning);\n } else if (content.length > 0) {\n textParts.push(\n <div key={`text-content-${message.id ?? textIdx}`} className=\"py-1\">\n <AgentMarkdown fontSize={fontSize}>{content}</AgentMarkdown>\n </div>,\n );\n textIdx++;\n }\n continue;\n }\n\n if (!Array.isArray(content)) {\n if (kwargsReasoning) reasoningTexts.push(kwargsReasoning);\n continue;\n }\n\n const blocks = content as Record<string, unknown>[];\n let textAccum = \"\";\n let hasReasoningBlock = false;\n\n const flushText = () => {\n if (textAccum.length > 0) {\n textParts.push(\n <div key={`text-${message.id ?? textIdx}-${textIdx}`} className=\"py-1\">\n <AgentMarkdown fontSize={fontSize}>{textAccum}</AgentMarkdown>\n </div>,\n );\n textAccum = \"\";\n textIdx++;\n }\n };\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n if (block.type === \"text\" && typeof block.text === \"string\") {\n textAccum += block.text;\n continue;\n }\n\n if (\n (block.type === \"reasoning\" && typeof block.reasoning === \"string\") ||\n (block.type === \"thinking\" && typeof block.thinking === \"string\")\n ) {\n flushText();\n hasReasoningBlock = true;\n const text = (block.reasoning ?? block.thinking) as string;\n reasoningTexts.push(text);\n continue;\n }\n\n if (showToolActivity && !hasBackendToolStatus && block.type === \"tool_use\") {\n flushText();\n const toolId = typeof block.id === \"string\" ? block.id : undefined;\n const toolName = typeof block.name === \"string\" ? block.name : \"tool\";\n const semanticKey = normalizeSemanticKey(toolName) || `tool-${i}`;\n if (!renderedToolKeys.has(semanticKey)) {\n renderedToolKeys.add(semanticKey);\n const label = normalizeToolLabel(toolName, (block as Record<string, unknown>).input);\n const isCompleted = toolId ? completedToolIds.has(toolId) : !isActivelyStreaming;\n collectedToolStatuses.push({ key: semanticKey, label, isCompleted });\n }\n }\n }\n\n if (!hasReasoningBlock && kwargsReasoning) {\n // Same as the string-content case: kwargs reasoning duplicates the\n // text blocks, so discard accumulated text and capture as reasoning only.\n textAccum = \"\";\n reasoningTexts.push(kwargsReasoning);\n } else {\n flushText();\n }\n }\n\n // Fallback for legacy payloads without backend tool_status (only after streaming completes)\n if (showToolActivity && !isActivelyStreaming && !hasBackendToolStatus && collectedToolStatuses.length === 0 && textParts.length === 0 && toolMessages.length > 0) {\n for (const toolMessage of toolMessages) {\n collectedToolStatuses.push({\n key: `tool-msg-${toolMessage.id ?? textIdx}`,\n label: \"Tool call completed\",\n isCompleted: true,\n });\n textIdx++;\n }\n }\n\n // ── Assemble output: AgentActivity block first, then text content ──\n const parts: React.ReactNode[] = [];\n const hasTextContent = textParts.length > 0;\n const combinedReasoning = reasoningTexts.join(\"\\n\\n\");\n const hasActivity =\n (showToolActivity && collectedToolStatuses.length > 0) ||\n combinedReasoning.length > 0;\n const activityIsStreaming = !!isActivelyStreaming && !hasTextContent;\n\n if (hasActivity || activityIsStreaming) {\n parts.push(\n <AgentActivity\n key=\"agent-activity\"\n reasoningText={combinedReasoning || undefined}\n toolStatuses={showToolActivity ? collectedToolStatuses : undefined}\n isStreaming={activityIsStreaming}\n fontSize={fontSize}\n />,\n );\n }\n\n parts.push(...textParts);\n\n return parts.length > 0 ? <>{parts}</> : null;\n}\n\nfunction AgentMessage({\n agentName,\n fontSize,\n message,\n groupedMessages,\n showToolActivity = true,\n isStreaming = false,\n onRegenerate,\n feedback,\n onFeedback,\n branch,\n branchOptions,\n onBranchSelect,\n todos,\n}: {\n agentName?: string;\n fontSize?: string;\n message: Message;\n groupedMessages?: Message[];\n showToolActivity?: boolean;\n isStreaming?: boolean;\n onRegenerate?: (parentCheckpoint: any | null | undefined, messageId: string, currentMessage: any) => void;\n feedback?: MessageFeedback;\n onFeedback?: (messageId: string, feedback: MessageFeedback) => void;\n branch?: string;\n branchOptions?: string[];\n onBranchSelect?: (branch: string) => void;\n todos?: TodoItem[];\n}) {\n const content = getContentString(message?.content);\n const inlineContent = renderContentInline(groupedMessages ?? [message], showToolActivity, isStreaming, fontSize);\n\n return (\n <div className=\"agent-message flex flex-col gap-1 w-full group\">\n <div className=\"flex items-center gap-3 w-full\">\n <div\n className=\"rounded-full size-8 shrink-0 bg-zinc-800 flex items-center justify-center p-2\"\n data-alt=\"AI Avatar\"\n >\n <BotMessageSquare className=\"text-xs\" color=\"white\" />\n </div>\n <span className=\"text-zinc-500 text-sm\">{agentName || \"Agent\"}</span>\n </div>\n <div className=\"flex flex-1 flex-col gap-1 items-start min-w-0\">\n {todos && todos.length > 0 && <TodoList todos={todos} />}\n <div className=\"text-content text-foreground\" style={fontSize ? { fontSize } : undefined}>\n {inlineContent ? (\n inlineContent\n ) : (\n <>\n <div className=\"flex items-center gap-2 text-zinc-500\">\n {/* <Loader2 className=\"animate-spin\" size={16} /> */}\n <span>Thinking...</span>\n </div>\n {isStreaming && content && (\n <span className=\"inline-block w-2 h-4 ml-1 bg-zinc-400 animate-pulse\" />\n )}\n </>\n )}\n </div>\n\n {/* Branch switcher - show when multiple branches exist */}\n {!isStreaming && branch && branchOptions && onBranchSelect && branchOptions.length > 1 && (\n <BranchSwitcher\n branch={branch}\n branchOptions={branchOptions}\n onSelect={onBranchSelect}\n isLoading={isStreaming}\n />\n )}\n\n {/* Show actions only when not streaming and content exists */}\n {!isStreaming && content && (\n <MessageActions\n message={message}\n onRegenerate={onRegenerate}\n feedback={feedback}\n onFeedback={onFeedback}\n className=\"\"\n />\n )}\n </div>\n </div>\n );\n}\n\n// Memoize - only re-render if message ID changes or streaming state changes\nexport default React.memo(AgentMessage, (prevProps, nextProps) => {\n // If it's streaming, we need to re-render to show updates\n if (nextProps.isStreaming) {\n return false; // Always re-render when streaming\n }\n\n // Otherwise, only re-render if the message ID, feedback, branch, or callbacks changed\n return (\n prevProps.message.id === nextProps.message.id &&\n prevProps.groupedMessages?.length === nextProps.groupedMessages?.length &&\n prevProps.showToolActivity === nextProps.showToolActivity &&\n prevProps.isStreaming === nextProps.isStreaming &&\n prevProps.feedback === nextProps.feedback &&\n prevProps.onRegenerate === nextProps.onRegenerate &&\n prevProps.onFeedback === nextProps.onFeedback &&\n prevProps.branch === nextProps.branch &&\n prevProps.branchOptions?.length === nextProps.branchOptions?.length &&\n prevProps.onBranchSelect === nextProps.onBranchSelect &&\n prevProps.todos === nextProps.todos\n );\n});\n"],"names":["getReasoningFromKwargs","message","ak","AgentActivity","reasoningText","toolStatuses","isStreaming","fontSize","expanded","setExpanded","useState","useEffect","hasTools","hasReasoning","jsxs","p","jsx","LoaderCircle","Sparkles","ChevronRight","cn","ts","Wrench","AgentMarkdown","toToolStatusEntry","value","v","visible","getToolStatusFromKwargs","hasToolStatusFieldInKwargs","normalizeSemanticKey","shouldRenderToolStatus","status","normalizeToolLabel","name","input","trimmed","json","renderContentInline","groupedMessages","showToolActivity","isActivelyStreaming","timeline","toolMessages","m","hasBackendToolStatus","completedToolIds","id","completedToolNames","collectedToolStatuses","reasoningTexts","textParts","renderedToolKeys","textIdx","collectToolStatusFromKwargs","semanticKey","label","isCompleted","content","kwargsReasoning","blocks","textAccum","hasReasoningBlock","flushText","i","block","text","toolId","toolName","toolMessage","parts","hasTextContent","combinedReasoning","hasActivity","activityIsStreaming","Fragment","AgentMessage","agentName","onRegenerate","feedback","onFeedback","branch","branchOptions","onBranchSelect","todos","getContentString","inlineContent","BotMessageSquare","TodoList","BranchSwitcher","MessageActions","React","prevProps","nextProps"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import { TodoItem } from '../../providers/Stream';
1
2
  import { Message } from '@langchain/langgraph-sdk';
2
3
  import { default as React } from 'react';
3
4
  import { MessageFeedback } from './MessageActions';
4
- declare function AgentMessage({ agentName, fontSize, message, groupedMessages, showToolActivity, isStreaming, onRegenerate, feedback, onFeedback, branch, branchOptions, onBranchSelect, }: {
5
+ declare function AgentMessage({ agentName, fontSize, message, groupedMessages, showToolActivity, isStreaming, onRegenerate, feedback, onFeedback, branch, branchOptions, onBranchSelect, todos, }: {
5
6
  agentName?: string;
6
7
  fontSize?: string;
7
8
  message: Message;
@@ -14,6 +15,7 @@ declare function AgentMessage({ agentName, fontSize, message, groupedMessages, s
14
15
  branch?: string;
15
16
  branchOptions?: string[];
16
17
  onBranchSelect?: (branch: string) => void;
18
+ todos?: TodoItem[];
17
19
  }): import("react/jsx-runtime").JSX.Element;
18
20
  declare const _default: React.MemoExoticComponent<typeof AgentMessage>;
19
21
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"AgentMessage.d.ts","sourceRoot":"","sources":["../../../src/components/messages/AgentMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA6VxE,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,QAAQ,EACR,OAAO,EACP,eAAe,EACf,gBAAuB,EACvB,WAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,MAAM,EACN,aAAa,EACb,cAAc,GACf,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1G,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,2CAuDA;;AAGD,wBAmBG"}
1
+ {"version":3,"file":"AgentMessage.d.ts","sourceRoot":"","sources":["../../../src/components/messages/AgentMessage.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA6VxE,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,QAAQ,EACR,OAAO,EACP,eAAe,EACf,gBAAuB,EACvB,WAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,MAAM,EACN,aAAa,EACb,cAAc,EACd,KAAK,GACN,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1G,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;CACpB,2CAwDA;;AAGD,wBAoBG"}