flujo-ai 3.9.0 → 3.10.0

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 (356) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +124 -117
  3. package/.next/app-path-routes-manifest.json +7 -6
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/required-server-files.json +2 -2
  6. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  7. package/.next/server/app/_not-found.html +1 -1
  8. package/.next/server/app/_not-found.rsc +1 -1
  9. package/.next/server/app/api/backup/route.js +1 -2
  10. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  11. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/encryption/secure/route.js +1 -1
  15. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  16. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/env/route.js +1 -1
  18. package/.next/server/app/api/env/route.js.nft.json +1 -1
  19. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/flow/[id]/route.js +1 -1
  21. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  22. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
  24. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  25. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/flow/route.js +1 -1
  27. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  28. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/git/route.js +5 -3
  30. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/init/route.js +1 -1
  32. package/.next/server/app/api/init/route.js.nft.json +1 -1
  33. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/mcp/cancel/route.js +1 -1
  35. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  36. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  38. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  39. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  41. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  42. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  44. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  45. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  47. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  48. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  50. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  51. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  53. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  54. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  56. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  57. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  59. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  60. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/mcp/servers/route.js +1 -1
  62. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  63. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  65. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  66. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -0
  68. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -0
  69. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -0
  70. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -2
  72. package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -1
  73. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/model/[id]/route.js +1 -1
  75. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  76. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/model/provider/route.js +1 -1
  78. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  79. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/model/route.js +1 -1
  81. package/.next/server/app/api/model/route.js.nft.json +1 -1
  82. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/model/test/route.js +1 -1
  84. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  85. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/oauth/callback/route.js +1 -1
  87. package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
  88. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/oauth/initiate/route.js +1 -1
  90. package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
  91. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/oauth/reset/route.js +1 -1
  93. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  94. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/planned-executions/[id]/route.js +1 -1
  96. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  97. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/planned-executions/[id]/run/route.js +1 -1
  99. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  100. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/planned-executions/[id]/runs/route.js +1 -1
  102. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  103. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/planned-executions/route.js +1 -1
  106. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  107. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/restore/route.js +1 -2
  109. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  110. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/storage/route.js +1 -2
  112. package/.next/server/app/api/storage/route.js.nft.json +1 -1
  113. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  116. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  117. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/chat/page.js +8 -8
  119. package/.next/server/app/chat/page.js.nft.json +1 -1
  120. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  121. package/.next/server/app/chat.html +1 -1
  122. package/.next/server/app/chat.rsc +2 -2
  123. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  124. package/.next/server/app/docs.html +1 -1
  125. package/.next/server/app/docs.rsc +1 -1
  126. package/.next/server/app/executions/page.js +2 -2
  127. package/.next/server/app/executions/page.js.nft.json +1 -1
  128. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  129. package/.next/server/app/executions.html +1 -1
  130. package/.next/server/app/executions.rsc +2 -2
  131. package/.next/server/app/flows/page.js +10 -10
  132. package/.next/server/app/flows/page.js.nft.json +1 -1
  133. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  134. package/.next/server/app/flows.html +1 -1
  135. package/.next/server/app/flows.rsc +2 -2
  136. package/.next/server/app/index.html +1 -1
  137. package/.next/server/app/index.rsc +1 -1
  138. package/.next/server/app/mcp/page.js +13 -13
  139. package/.next/server/app/mcp/page.js.nft.json +1 -1
  140. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  141. package/.next/server/app/mcp-flows/route.js +1 -1
  142. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  143. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  145. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  146. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/mcp.html +1 -1
  148. package/.next/server/app/mcp.rsc +2 -2
  149. package/.next/server/app/models/page.js +2 -2
  150. package/.next/server/app/models/page.js.nft.json +1 -1
  151. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  152. package/.next/server/app/page_client-reference-manifest.js +1 -1
  153. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  154. package/.next/server/app/settings.html +1 -1
  155. package/.next/server/app/settings.rsc +1 -1
  156. package/.next/server/app/v1/chat/completions/route.js +2 -2
  157. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  158. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +1 -1
  160. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  161. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  163. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  164. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  166. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  167. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  169. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  170. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +1 -1
  172. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  173. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +2 -2
  175. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  176. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  178. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  179. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  181. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  182. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  184. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  185. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/v1/models/route.js +1 -1
  187. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  188. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app-paths-manifest.json +7 -6
  190. package/.next/server/chunks/117.js +1 -0
  191. package/.next/server/chunks/1373.js +1 -1
  192. package/.next/server/chunks/1403.js +1 -1
  193. package/.next/server/chunks/2181.js +6 -6
  194. package/.next/server/chunks/2372.js +2 -0
  195. package/.next/server/chunks/3426.js +1 -0
  196. package/.next/server/chunks/3984.js +2 -2
  197. package/.next/server/chunks/4323.js +1 -0
  198. package/.next/server/chunks/4379.js +1 -0
  199. package/.next/server/chunks/4706.js +1 -1
  200. package/.next/server/chunks/4729.js +2 -2
  201. package/.next/server/chunks/5389.js +11 -11
  202. package/.next/server/chunks/5547.js +2 -2
  203. package/.next/server/chunks/6637.js +2 -2
  204. package/.next/server/chunks/6936.js +13 -13
  205. package/.next/server/chunks/724.js +12 -12
  206. package/.next/server/chunks/8460.js +1 -1
  207. package/.next/server/chunks/8739.js +1 -2
  208. package/.next/server/chunks/9188.js +1 -1
  209. package/.next/server/chunks/9509.js +2 -0
  210. package/.next/server/chunks/9989.js +1 -1
  211. package/.next/server/functions-config-manifest.json +3 -2
  212. package/.next/server/pages/404.html +1 -1
  213. package/.next/server/pages/500.html +1 -1
  214. package/.next/server/server-reference-manifest.js +1 -1
  215. package/.next/server/server-reference-manifest.json +1 -1
  216. package/.next/static/chunks/1811-8ee01cf37161913c.js +1 -0
  217. package/.next/static/chunks/2380-5696e0dc0469f6a5.js +1 -0
  218. package/.next/static/chunks/4205-b9e33afc7e96ecb9.js +1 -0
  219. package/.next/static/chunks/5781-4328d17aad13f908.js +8 -0
  220. package/.next/static/chunks/687-98ba5f5043866f48.js +1 -0
  221. package/.next/static/chunks/7458-4445e76668151564.js +1 -0
  222. package/.next/static/chunks/{9718-12d33c1a26bb002d.js → 8215-a966f4c36f1ca174.js} +1 -1
  223. package/.next/static/chunks/8862-8f17ef601bb1fbd0.js +1 -0
  224. package/.next/static/chunks/8890-a7a8c6f1dc3cd343.js +1 -0
  225. package/.next/static/chunks/app/api/backup/{route-acd5b6e731d45f1a.js → route-3291f6991ce3f52c.js} +1 -1
  226. package/.next/static/chunks/app/api/browse/{route-acd5b6e731d45f1a.js → route-3291f6991ce3f52c.js} +1 -1
  227. package/.next/static/chunks/app/api/cwd/{route-acd5b6e731d45f1a.js → route-3291f6991ce3f52c.js} +1 -1
  228. package/.next/static/chunks/app/api/encryption/secure/{route-acd5b6e731d45f1a.js → route-3291f6991ce3f52c.js} +1 -1
  229. package/.next/static/chunks/app/api/env/route-3291f6991ce3f52c.js +1 -0
  230. package/.next/static/chunks/app/api/flow/[id]/route-3291f6991ce3f52c.js +1 -0
  231. package/.next/static/chunks/app/api/flow/prompt-renderer/route-3291f6991ce3f52c.js +1 -0
  232. package/.next/static/chunks/app/api/flow/route-3291f6991ce3f52c.js +1 -0
  233. package/.next/static/chunks/app/api/git/route-3291f6991ce3f52c.js +1 -0
  234. package/.next/static/chunks/app/api/init/route-3291f6991ce3f52c.js +1 -0
  235. package/.next/static/chunks/app/api/mcp/cancel/route-3291f6991ce3f52c.js +1 -0
  236. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-3291f6991ce3f52c.js +1 -0
  237. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-3291f6991ce3f52c.js +1 -0
  238. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-3291f6991ce3f52c.js +1 -0
  239. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-3291f6991ce3f52c.js +1 -0
  240. package/.next/static/chunks/app/api/mcp/servers/[name]/route-3291f6991ce3f52c.js +1 -0
  241. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-3291f6991ce3f52c.js +1 -0
  242. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-3291f6991ce3f52c.js +1 -0
  243. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-3291f6991ce3f52c.js +1 -0
  244. package/.next/static/chunks/app/api/mcp/servers/route-3291f6991ce3f52c.js +1 -0
  245. package/.next/static/chunks/app/api/mcp/test-connection/route-3291f6991ce3f52c.js +1 -0
  246. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-3291f6991ce3f52c.js +1 -0
  247. package/.next/static/chunks/app/api/mcp-registry/route-3291f6991ce3f52c.js +1 -0
  248. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-3291f6991ce3f52c.js +1 -0
  249. package/.next/static/chunks/app/api/model/[id]/route-3291f6991ce3f52c.js +1 -0
  250. package/.next/static/chunks/app/api/model/provider/route-3291f6991ce3f52c.js +1 -0
  251. package/.next/static/chunks/app/api/model/route-3291f6991ce3f52c.js +1 -0
  252. package/.next/static/chunks/app/api/model/test/route-3291f6991ce3f52c.js +1 -0
  253. package/.next/static/chunks/app/api/oauth/callback/route-3291f6991ce3f52c.js +1 -0
  254. package/.next/static/chunks/app/api/oauth/initiate/route-3291f6991ce3f52c.js +1 -0
  255. package/.next/static/chunks/app/api/oauth/reset/route-3291f6991ce3f52c.js +1 -0
  256. package/.next/static/chunks/app/api/planned-executions/[id]/route-3291f6991ce3f52c.js +1 -0
  257. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-3291f6991ce3f52c.js +1 -0
  258. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-3291f6991ce3f52c.js +1 -0
  259. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-3291f6991ce3f52c.js +1 -0
  260. package/.next/static/chunks/app/api/planned-executions/route-3291f6991ce3f52c.js +1 -0
  261. package/.next/static/chunks/app/api/restore/route-3291f6991ce3f52c.js +1 -0
  262. package/.next/static/chunks/app/api/storage/route-3291f6991ce3f52c.js +1 -0
  263. package/.next/static/chunks/app/api/update/route-3291f6991ce3f52c.js +1 -0
  264. package/.next/static/chunks/app/api/webhooks/[id]/route-3291f6991ce3f52c.js +1 -0
  265. package/.next/static/chunks/app/chat/page-aea8c8cbfa461e7f.js +1 -0
  266. package/.next/static/chunks/app/executions/{page-b46744c507a6e810.js → page-95fec57bf97ee809.js} +1 -1
  267. package/.next/static/chunks/app/flows/page-7fe295069ccdb5fe.js +1 -0
  268. package/.next/static/chunks/app/mcp/page-0f923960004aa437.js +1 -0
  269. package/.next/static/chunks/app/mcp-flows/route-3291f6991ce3f52c.js +1 -0
  270. package/.next/static/chunks/app/mcp-proxy/[server]/route-3291f6991ce3f52c.js +1 -0
  271. package/.next/static/chunks/app/models/page-f43476ea07d5b501.js +1 -0
  272. package/.next/static/chunks/app/v1/chat/completions/route-3291f6991ce3f52c.js +1 -0
  273. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-3291f6991ce3f52c.js +1 -0
  274. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-3291f6991ce3f52c.js +1 -0
  275. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-3291f6991ce3f52c.js +1 -0
  276. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-3291f6991ce3f52c.js +1 -0
  277. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-3291f6991ce3f52c.js +1 -0
  278. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-3291f6991ce3f52c.js +1 -0
  279. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-3291f6991ce3f52c.js +1 -0
  280. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-3291f6991ce3f52c.js +1 -0
  281. package/.next/static/chunks/app/v1/chat/conversations/route-3291f6991ce3f52c.js +1 -0
  282. package/.next/static/chunks/app/v1/models/route-3291f6991ce3f52c.js +1 -0
  283. package/.next/static/geAgl8xNIf0s1v2mfu4tE/_buildManifest.js +1 -0
  284. package/.next/trace +7 -7
  285. package/.next/types/app/api/mcp/test-connection/stream/route.ts +347 -0
  286. package/.next/types/routes.d.ts +2 -1
  287. package/.next/types/validator.ts +9 -0
  288. package/README.md +37 -7
  289. package/{next.config.ts → next.config.mjs} +105 -99
  290. package/package.json +2 -3
  291. package/.next/server/chunks/1986.js +0 -1
  292. package/.next/server/chunks/5486.js +0 -1
  293. package/.next/server/chunks/62.js +0 -1
  294. package/.next/server/chunks/6542.js +0 -1
  295. package/.next/static/GbXXL_8DLT2oVwT-JdpbM/_buildManifest.js +0 -1
  296. package/.next/static/chunks/2380-2a7acfa037ec8e80.js +0 -1
  297. package/.next/static/chunks/3235-dfcb73b8d483f8cd.js +0 -1
  298. package/.next/static/chunks/3750-38474d67566af4c3.js +0 -1
  299. package/.next/static/chunks/3810-cee95063d5535307.js +0 -1
  300. package/.next/static/chunks/39-1732a0b689c7b641.js +0 -1
  301. package/.next/static/chunks/6134-758747aabd77289d.js +0 -8
  302. package/.next/static/chunks/7488-b58bc701d0deda00.js +0 -1
  303. package/.next/static/chunks/8862-1314a13b011c4817.js +0 -1
  304. package/.next/static/chunks/app/api/env/route-acd5b6e731d45f1a.js +0 -1
  305. package/.next/static/chunks/app/api/flow/[id]/route-acd5b6e731d45f1a.js +0 -1
  306. package/.next/static/chunks/app/api/flow/prompt-renderer/route-acd5b6e731d45f1a.js +0 -1
  307. package/.next/static/chunks/app/api/flow/route-acd5b6e731d45f1a.js +0 -1
  308. package/.next/static/chunks/app/api/git/route-acd5b6e731d45f1a.js +0 -1
  309. package/.next/static/chunks/app/api/init/route-acd5b6e731d45f1a.js +0 -1
  310. package/.next/static/chunks/app/api/mcp/cancel/route-acd5b6e731d45f1a.js +0 -1
  311. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-acd5b6e731d45f1a.js +0 -1
  312. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-acd5b6e731d45f1a.js +0 -1
  313. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-acd5b6e731d45f1a.js +0 -1
  314. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-acd5b6e731d45f1a.js +0 -1
  315. package/.next/static/chunks/app/api/mcp/servers/[name]/route-acd5b6e731d45f1a.js +0 -1
  316. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-acd5b6e731d45f1a.js +0 -1
  317. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-acd5b6e731d45f1a.js +0 -1
  318. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-acd5b6e731d45f1a.js +0 -1
  319. package/.next/static/chunks/app/api/mcp/servers/route-acd5b6e731d45f1a.js +0 -1
  320. package/.next/static/chunks/app/api/mcp/test-connection/route-acd5b6e731d45f1a.js +0 -1
  321. package/.next/static/chunks/app/api/mcp-registry/route-acd5b6e731d45f1a.js +0 -1
  322. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-acd5b6e731d45f1a.js +0 -1
  323. package/.next/static/chunks/app/api/model/[id]/route-acd5b6e731d45f1a.js +0 -1
  324. package/.next/static/chunks/app/api/model/provider/route-acd5b6e731d45f1a.js +0 -1
  325. package/.next/static/chunks/app/api/model/route-acd5b6e731d45f1a.js +0 -1
  326. package/.next/static/chunks/app/api/model/test/route-acd5b6e731d45f1a.js +0 -1
  327. package/.next/static/chunks/app/api/oauth/callback/route-acd5b6e731d45f1a.js +0 -1
  328. package/.next/static/chunks/app/api/oauth/initiate/route-acd5b6e731d45f1a.js +0 -1
  329. package/.next/static/chunks/app/api/oauth/reset/route-acd5b6e731d45f1a.js +0 -1
  330. package/.next/static/chunks/app/api/planned-executions/[id]/route-acd5b6e731d45f1a.js +0 -1
  331. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-acd5b6e731d45f1a.js +0 -1
  332. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-acd5b6e731d45f1a.js +0 -1
  333. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-acd5b6e731d45f1a.js +0 -1
  334. package/.next/static/chunks/app/api/planned-executions/route-acd5b6e731d45f1a.js +0 -1
  335. package/.next/static/chunks/app/api/restore/route-acd5b6e731d45f1a.js +0 -1
  336. package/.next/static/chunks/app/api/storage/route-acd5b6e731d45f1a.js +0 -1
  337. package/.next/static/chunks/app/api/update/route-acd5b6e731d45f1a.js +0 -1
  338. package/.next/static/chunks/app/api/webhooks/[id]/route-acd5b6e731d45f1a.js +0 -1
  339. package/.next/static/chunks/app/chat/page-019d2b836f34f40d.js +0 -1
  340. package/.next/static/chunks/app/flows/page-7b5c0e06951398ac.js +0 -1
  341. package/.next/static/chunks/app/mcp/page-1ca55f88a3045b5d.js +0 -1
  342. package/.next/static/chunks/app/mcp-flows/route-acd5b6e731d45f1a.js +0 -1
  343. package/.next/static/chunks/app/mcp-proxy/[server]/route-acd5b6e731d45f1a.js +0 -1
  344. package/.next/static/chunks/app/models/page-a20e6c4e1a5a0c9a.js +0 -1
  345. package/.next/static/chunks/app/v1/chat/completions/route-acd5b6e731d45f1a.js +0 -1
  346. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-acd5b6e731d45f1a.js +0 -1
  347. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-acd5b6e731d45f1a.js +0 -1
  348. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-acd5b6e731d45f1a.js +0 -1
  349. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-acd5b6e731d45f1a.js +0 -1
  350. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-acd5b6e731d45f1a.js +0 -1
  351. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-acd5b6e731d45f1a.js +0 -1
  352. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-acd5b6e731d45f1a.js +0 -1
  353. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-acd5b6e731d45f1a.js +0 -1
  354. package/.next/static/chunks/app/v1/chat/conversations/route-acd5b6e731d45f1a.js +0 -1
  355. package/.next/static/chunks/app/v1/models/route-acd5b6e731d45f1a.js +0 -1
  356. /package/.next/static/{GbXXL_8DLT2oVwT-JdpbM → geAgl8xNIf0s1v2mfu4tE}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8862],{33420:(e,t,o)=>{o.d(t,{IK:()=>S,M6:()=>k,Uw:()=>N,lA:()=>T,v2:()=>X,vm:()=>I});var r=o(95155),n=o(12115),a=o(22539),s=o(76122),i=o(48116),l=o(33567),d=o(2300),c=o(94049),p=o(25635),u=o(41983),y=o(50430),h=o(12313),f=o(56350),x=o(77842),g=o(55930),m=o(63186),w=o(62962);let b=(0,i.Ay)(d.A,{shouldForwardProp:e=>!["nodeType","selected"].includes(e)})(e=>{let{theme:t,nodeType:o,selected:r}=e;return{padding:t.spacing(1.5),width:"200px",borderRadius:"8px",backgroundColor:t.palette.background.paper,border:"2px solid ".concat("start"===o?"#795548":"process"===o?t.palette.secondary.main:"finish"===o?t.palette.success.main:"mcp"===o?t.palette.info.main:t.palette.warning.main),boxShadow:r?"0 0 0 2px ".concat(t.palette.primary.main,", 0 3px 10px rgba(0,0,0,0.2)"):t.shadows[2],transition:"all 0.2s ease","&:hover":{boxShadow:"0 0 0 1px ".concat("start"===o?"#795548":"process"===o?t.palette.secondary.main:"finish"===o?t.palette.success.main:"mcp"===o?t.palette.info.main:t.palette.warning.main,", 0 3px 10px rgba(0,0,0,0.1)")}}}),j=(0,i.Ay)(c.default,{shouldForwardProp:e=>"nodeType"!==e})(e=>{let{theme:t,nodeType:o}=e;return{display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:"1px solid ".concat("start"===o?"#A1887F":"process"===o?t.palette.secondary.light:"finish"===o?t.palette.success.light:"mcp"===o?t.palette.info.light:t.palette.warning.light),marginBottom:t.spacing(1),paddingBottom:t.spacing(.5)}}),v=(0,i.Ay)(c.default)({display:"flex",alignItems:"center",gap:"8px"}),F=(0,i.Ay)(c.default)(e=>{let{theme:t}=e;return{marginTop:t.spacing(1),fontSize:"0.8rem"}}),C=(0,i.Ay)(c.default)(e=>{let{theme:t}=e;return{display:"flex",justifyContent:"space-between",padding:t.spacing(.5,0),borderBottom:"1px dashed ".concat("dark"===t.palette.mode?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)")}}),k=(e,t)=>{switch(e){case"start":default:return"#795548";case"process":return t.palette.secondary.main;case"finish":return t.palette.success.main;case"mcp":return t.palette.info.main;case"subflow":return t.palette.warning.main}},A=e=>({backgroundColor:e.palette.info.main,borderColor:"dark"===e.palette.mode?e.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),E=e=>({backgroundColor:e.palette.secondary.main,borderColor:"dark"===e.palette.mode?e.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),P=e=>({backgroundColor:e.palette.primary.main,borderColor:"dark"===e.palette.mode?e.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),M=e=>{let{data:t,nodeType:o,selected:i}=e,d=(0,l.A)(),[c,k]=(0,n.useState)(!1),M=t||{label:"No Label",properties:{}},I="string"==typeof M.label?M.label:"No Label",N=M.properties||{},S=Object.keys(N).length;return(0,r.jsx)(r.Fragment,{children:(0,r.jsxs)(b,{elevation:2,nodeType:o,selected:i,children:[(()=>{if("mcp"===o)return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h7,{id:"mcp-top",type:"target",position:s.yX.Top,style:A(d)}),(0,r.jsx)(a.h7,{id:"mcp-right",type:"target",position:s.yX.Right,style:A(d)}),(0,r.jsx)(a.h7,{id:"mcp-bottom",type:"source",position:s.yX.Bottom,style:A(d)}),(0,r.jsx)(a.h7,{id:"mcp-left",type:"target",position:s.yX.Left,style:A(d)})]});if("process"===o)return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h7,{id:"process-top",type:"target",position:s.yX.Top,style:E(d)}),(0,r.jsx)(a.h7,{id:"process-bottom",type:"source",position:s.yX.Bottom,style:E(d)}),(0,r.jsx)(a.h7,{id:"process-left-mcp",type:"source",position:s.yX.Left,style:P(d)}),(0,r.jsx)(a.h7,{id:"process-right-mcp",type:"source",position:s.yX.Right,style:P(d)})]});if("start"===o)return(0,r.jsx)(a.h7,{id:"start-bottom",type:"source",position:s.yX.Bottom,style:E(d)});if("finish"===o)return(0,r.jsx)(a.h7,{id:"finish-top",type:"target",position:s.yX.Top,style:E(d)});if("subflow"===o)return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h7,{id:"subflow-top",type:"target",position:s.yX.Top,style:E(d)}),(0,r.jsx)(a.h7,{id:"subflow-bottom",type:"source",position:s.yX.Bottom,style:E(d)})]});return null})(),(0,r.jsxs)(j,{nodeType:o,children:[(0,r.jsxs)(v,{children:[(e=>{switch(e){case"start":default:return(0,r.jsx)(h.A,{sx:{color:"#795548"}});case"process":return(0,r.jsx)(f.A,{color:"secondary"});case"finish":return(0,r.jsx)(x.A,{color:"success"});case"mcp":return(0,r.jsx)(f.A,{color:"info"});case"subflow":return(0,r.jsx)(g.A,{sx:{color:"warning.main"}})}})(o),(0,r.jsx)(p.default,{variant:"subtitle2",fontWeight:"bold",children:I})]}),S>0&&(0,r.jsx)(u.A,{size:"small",onClick:e=>{e.stopPropagation(),k(!c)},sx:{padding:.5},children:c?(0,r.jsx)(w.A,{fontSize:"small"}):(0,r.jsx)(m.A,{fontSize:"small"})})]}),(0,r.jsx)(y.A,{in:c,children:(0,r.jsx)(F,{children:Object.entries(N).map(e=>{let[t,o]=e;return(0,r.jsxs)(C,{children:[(0,r.jsxs)(p.default,{variant:"caption",sx:{fontWeight:"bold"},children:[t,":"]}),(0,r.jsxs)(p.default,{variant:"caption",children:[String(o).substring(0,30),String(o).length>30?"...":""]})]},t)})})}),S>0&&!c&&(0,r.jsx)(p.default,{variant:"caption",color:"text.secondary",children:"".concat(S," properties configured")})]})})},I=(0,n.memo)(function(e){return(0,r.jsx)(M,{...e,nodeType:"start",selected:e.selected})}),N=(0,n.memo)(function(e){return(0,r.jsx)(M,{...e,nodeType:"process",selected:e.selected})}),S=(0,n.memo)(function(e){return(0,r.jsx)(M,{...e,nodeType:"finish",selected:e.selected})}),X=(0,n.memo)(function(e){return(0,r.jsx)(M,{...e,nodeType:"mcp",selected:e.selected})}),T=(0,n.memo)(function(e){return(0,r.jsx)(M,{...e,nodeType:"subflow",selected:e.selected})})},40379:(e,t,o)=>{o.d(t,{R:()=>c,A:()=>h});var r=o(95155),n=o(12115),a=o(22539),s=o(76122),i=o(48116),l=o(33567);function d(e){return e===s.yX.Left||e===s.yX.Right?"h":"v"}let c="flowEdgeWaypoint",p={x:16,y:-16},u=(0,i.Ay)("button")(e=>{let{theme:t}=e;return{background:t.palette.background.paper,border:"1px solid ".concat(t.palette.divider),cursor:"pointer",borderRadius:"50%",fontSize:"10px",width:"20px",height:"20px",display:"flex",justifyContent:"center",alignItems:"center",color:t.palette.text.secondary,boxShadow:"dark"===t.palette.mode?"0 2px 4px rgba(0,0,0,0.3)":"0 2px 4px rgba(0,0,0,0.1)","&:hover":{background:t.palette.error.main,borderColor:t.palette.error.main,color:t.palette.error.contrastText}}}),y=(0,i.Ay)(a.tE)({"&&.animated":{strokeDasharray:5,animation:"flowPathAnimation 0.5s infinite linear"},"&&.animated-both":{strokeDasharray:5,animation:"flowPathAnimation 0.75s infinite linear alternate"},"@keyframes flowPathAnimation":{"0%":{strokeDashoffset:10},"100%":{strokeDashoffset:0}}}),h=e=>{var t;let o,i,{variant:h,id:f,sourceX:x,sourceY:g,targetX:m,targetY:w,sourcePosition:b,targetPosition:j,style:v={},markerEnd:F,markerStart:C,data:k,selected:A}=e,E=(0,l.A)(),{deleteElements:P,screenToFlowPosition:M}=(0,a.VH)(),[I,N]=(0,n.useState)(!1),[S,X]=(0,n.useState)(null),T=(0,n.useRef)(null),R=(0,n.useRef)(!1),L=null!=(t=null==k?void 0:k.waypoints)?t:(null==k?void 0:k.waypoint)?[k.waypoint]:[],D=null!=S?S:L,U="standard"===h&&!!(null==k?void 0:k.bidirectional),B=b||("mcp"===h?s.yX.Left:s.yX.Bottom),Y=j||("mcp"===h?s.yX.Right:s.yX.Top),W=null;if(D.length>0)o=(W=function(e,t,o,r,n){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:8,s=[e,...n,o],i=[e],l=[],d=t,c=(e,t)=>{let o;o=i[i.length-1],.01>Math.abs(o.x-e.x)&&.01>Math.abs(o.y-e.y)||(i.push(e),l.push(t))};for(let e=1;e<s.length;e++){let t=i[i.length-1],o=s[e],n=e-1;if(e===s.length-1){if("v"===r)if("h"===d)c({x:o.x,y:t.y},n);else{let e=(t.y+o.y)/2;c({x:t.x,y:e},n),c({x:o.x,y:e},n)}else if("v"===d)c({x:t.x,y:o.y},n);else{let e=(t.x+o.x)/2;c({x:e,y:t.y},n),c({x:e,y:o.y},n)}c(o,n)}else c("v"===d?{x:t.x,y:o.y}:{x:o.x,y:t.y},n),c(o,n),d="v"===d?"h":"v"}!function(e,t){for(let s=1;s<e.length-1;s++){var o,r,n,a;let i=e[s-1],l=e[s],d=e[s+1],c=.01>Math.abs(i.x-l.x)&&.01>Math.abs(d.x-l.x)&&(l.y-i.y)*(d.y-l.y)<0,p=.01>Math.abs(i.y-l.y)&&.01>Math.abs(d.y-l.y)&&(l.x-i.x)*(d.x-l.x)<0;if(c||p){if(c){let n=(null!=(r=null==(o=e[s-2])?void 0:o.x)?r:l.x-1)<=l.x,a=n?l.x-12:l.x+12,c=n?l.x+12:l.x-12,p=t[s-1];e.splice(s-1,3,{x:a,y:i.y},{x:a,y:l.y},{x:c,y:l.y},{x:c,y:d.y}),t.splice(s-1,2,p,p,p)}else{let o=(null!=(a=null==(n=e[s-2])?void 0:n.y)?a:l.y-1)<=l.y,r=o?l.y-12:l.y+12,c=o?l.y+12:l.y-12,p=t[s-1];e.splice(s-1,3,{x:i.x,y:r},{x:l.x,y:r},{x:l.x,y:c},{x:d.x,y:c}),t.splice(s-1,2,p,p,p)}s++}}}(i,l);let p=[];for(let e=0;e<i.length-1;e++)p.push({a:i[e],b:i[e+1],gap:l[e]});return{d:function(e,t){if(0===e.length)return"";let o="M ".concat(e[0].x,",").concat(e[0].y);for(let r=1;r<e.length-1;r++){let n=e[r-1],a=e[r],s=e[r+1],i=Math.hypot(a.x-n.x,a.y-n.y),l=Math.hypot(s.x-a.x,s.y-a.y),d=Math.min(t,i/2,l/2);if(d<.5){o+=" L ".concat(a.x,",").concat(a.y);continue}let c={x:a.x-(a.x-n.x)/i*d,y:a.y-(a.y-n.y)/i*d},p={x:a.x+(s.x-a.x)/l*d,y:a.y+(s.y-a.y)/l*d};o+=" L ".concat(c.x,",").concat(c.y," Q ").concat(a.x,",").concat(a.y," ").concat(p.x,",").concat(p.y)}let r=e[e.length-1];return o+" L ".concat(r.x,",").concat(r.y)}(i,a),points:i,segments:p,midpoint:function(e,t){let o=0;for(let t=0;t<e.length-1;t++)o+=Math.hypot(e[t+1].x-e[t].x,e[t+1].y-e[t].y);if(0===o)return e[0];let r=.5*o;for(let t=0;t<e.length-1;t++){let o=Math.hypot(e[t+1].x-e[t].x,e[t+1].y-e[t].y);if(r<=o){let n=0===o?0:r/o;return{x:e[t].x+(e[t+1].x-e[t].x)*n,y:e[t].y+(e[t+1].y-e[t].y)*n}}r-=o}return e[e.length-1]}(i,.5)}}({x:x,y:g},d(B),{x:m,y:w},d(Y),D,16)).d,i=W.midpoint;else{let[e,t,r]=(0,s.oN)({sourceX:x,sourceY:g,sourcePosition:B,targetX:m,targetY:w,targetPosition:Y,borderRadius:16});o=e,i={x:t,y:r}}let z={...v,strokeWidth:A?3:2,stroke:"mcp"===h?A?E.palette.info.light:E.palette.info.main:A?E.palette.primary.main:E.palette.text.secondary},O="mcp"===h?"":U?"animated-both":(null==k?void 0:k.animated)!==!1?"animated":"",_=e=>{document.dispatchEvent(new CustomEvent(c,{detail:{edgeId:f,waypoints:e&&e.length>0?e:null}}))},H=e=>{if(0!==e.button)return;let t=M({x:e.clientX,y:e.clientY}),o=W?function(e,t){let o=0,r=1/0;for(let n of t){let t=function(e,t,o){let r=o.x-t.x,n=o.y-t.y,a=r*r+n*n,s=0===a?0:Math.max(0,Math.min(1,((e.x-t.x)*r+(e.y-t.y)*n)/a));return Math.hypot(e.x-(t.x+r*s),e.y-(t.y+n*s))}(e,n.a,n.b);t<r&&(r=t,o=n.gap)}return o}(t,W.segments):0,r=[...D];r.splice(o,0,t),T.current={index:o,pointerId:e.pointerId,startClient:{x:e.clientX,y:e.clientY},base:r,active:!1,fromPath:!0},e.target.setPointerCapture(e.pointerId)},J=e=>{let t=T.current;if(!t||e.pointerId!==t.pointerId)return;if(!t.active){if(4>Math.hypot(e.clientX-t.startClient.x,e.clientY-t.startClient.y))return;t.active=!0}let o=[...t.base];o[t.index]=M({x:e.clientX,y:e.clientY}),X(o)},V=e=>{let t=T.current;if(!t||e.pointerId!==t.pointerId||(T.current=null,e.target.releasePointerCapture(e.pointerId),R.current=t.active,!t.active))return;let o=[...t.base];o[t.index]=M({x:e.clientX,y:e.clientY}),_(o),X(null)},q=null!==S,K=A||I||q;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(y,{path:o,markerEnd:F,markerStart:C,style:z,id:f,className:O}),(0,r.jsx)("path",{d:o,fill:"none",stroke:"transparent",strokeWidth:20,style:{cursor:q?"grabbing":"grab"},onMouseEnter:()=>N(!0),onMouseLeave:()=>N(!1),onPointerDown:H,onPointerMove:J,onPointerUp:V}),(0,r.jsxs)(a.rV,{children:[K&&D.map((e,t)=>(0,r.jsx)("div",{style:{position:"absolute",transform:"translate(-50%, -50%) translate(".concat(e.x,"px,").concat(e.y,"px)"),width:12,height:12,borderRadius:"50%",background:E.palette.primary.main,border:"2px solid ".concat(E.palette.background.paper),boxShadow:E.shadows[1],cursor:"move",pointerEvents:"all",touchAction:"none",zIndex:1001},className:"nodrag nopan",title:"Drag to move; double-click to remove this bend",onMouseEnter:()=>N(!0),onMouseLeave:()=>N(!1),onPointerDown:e=>{0===e.button&&(e.stopPropagation(),T.current={index:t,pointerId:e.pointerId,startClient:{x:e.clientX,y:e.clientY},base:[...D],active:!1,fromPath:!1},e.target.setPointerCapture(e.pointerId))},onPointerMove:J,onPointerUp:V,onDoubleClick:e=>{e.stopPropagation(),(e=>{let t=D.filter((t,o)=>o!==e);X(null),_(t)})(t)}},t)),(0,r.jsx)("div",{style:{position:"absolute",transform:"translate(-50%, -50%) translate(".concat(i.x+p.x,"px,").concat(i.y+p.y,"px)"),pointerEvents:K&&!q?"all":"none",opacity:K&&!q?1:0,transition:"opacity 120ms ease",zIndex:1e3},className:"nodrag nopan",onMouseEnter:()=>N(!0),onMouseLeave:()=>N(!1),children:(0,r.jsx)(u,{title:"Delete connection (drag to re-route)",style:{touchAction:"none"},onPointerDown:H,onPointerMove:J,onPointerUp:V,onClick:e=>{if(e.stopPropagation(),R.current){R.current=!1;return}P({edges:[{id:f}]})},children:"\xd7"})})]})]})}},80685:(e,t,o)=>{o.d(t,{jY:()=>a,oY:()=>s});var r=o(95155);o(12115);var n=o(40379);let a=e=>(0,r.jsx)(n.A,{...e,variant:"standard"}),s=e=>(0,r.jsx)(n.A,{...e,variant:"mcp"})},90057:(e,t,o)=>{o.d(t,{g:()=>s});var r=o(74879);let n=(0,o(87021).h)("frontend/services/flow/index");class a{async loadFlows(){n.debug("loadFlows: Entering method");try{if(this.flowsCache)return n.debug("loadFlows: Using cached flows",{count:this.flowsCache.length}),this.flowsCache;let e=await fetch("/api/flow");if(!e.ok){let t=await e.json();throw Error(t.error||"Failed to load flows")}let t=await e.json();return n.debug("loadFlows: Loaded flows from API",{count:t.length}),this.flowsCache=t,t}catch(e){return n.warn("loadFlows: Failed to load flows:",e),[]}}async getFlow(e){n.debug("getFlow: Entering method",{flowId:e});try{if(this.flowsCache){let t=this.flowsCache.find(t=>t.id===e);if(t)return n.debug("getFlow: Using cached flow",{flowId:e}),t}let t=await fetch("/api/flow/".concat(encodeURIComponent(e)));if(!t.ok){if(404===t.status)return n.debug("getFlow: Flow ".concat(e," not found")),null;let o=await t.json();throw Error(o.error||"Failed to get flow: ".concat(e))}let o=await t.json();return n.debug("getFlow: Retrieved flow from API",{flowId:e}),o}catch(t){return n.warn("getFlow: Failed to get flow ".concat(e,":"),t),null}}async addFlow(e){n.debug("addFlow: Entering method",{flowId:e.id,flowName:e.name,nodeCount:e.nodes.length,edgeCount:e.edges.length});try{let t=await fetch("/api/flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){let e=await t.json();return{success:!1,error:e.error||"Failed to add flow"}}let o=await t.json();return this.flowsCache&&this.flowsCache.push(o),n.debug("addFlow: Flow added successfully",{flowId:e.id}),{success:!0}}catch(e){return n.warn("addFlow: Failed to add flow:",e),{success:!1,error:e instanceof Error?e.message:"Failed to add flow"}}}async updateFlow(e){n.debug("updateFlow: Entering method",{flowId:e.id,flowName:e.name,nodeCount:e.nodes.length,edgeCount:e.edges.length});try{let t=await fetch("/api/flow/".concat(encodeURIComponent(e.id)),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){let e=await t.json();return{success:!1,error:e.error||"Failed to update flow"}}let o=await t.json();if(this.flowsCache){let t=this.flowsCache.findIndex(t=>t.id===e.id);t>=0?this.flowsCache[t]=o:this.flowsCache.push(o)}return n.debug("updateFlow: Flow updated successfully",{flowId:e.id}),{success:!0}}catch(e){return n.warn("updateFlow: Failed to update flow:",e),{success:!1,error:e instanceof Error?e.message:"Failed to update flow"}}}async deleteFlow(e){n.debug("deleteFlow: Entering method",{flowId:e});try{let t=await fetch("/api/flow/".concat(encodeURIComponent(e)),{method:"DELETE"});if(!t.ok){let e=await t.json();return{success:!1,error:e.error||"Failed to delete flow"}}return this.flowsCache&&(this.flowsCache=this.flowsCache.filter(t=>t.id!==e)),n.debug("deleteFlow: Flow deleted successfully",{flowId:e}),{success:!0}}catch(e){return n.warn("deleteFlow: Failed to delete flow:",e),{success:!1,error:e instanceof Error?e.message:"Failed to delete flow"}}}createNode(e,t){return n.debug("createNode: Entering method",{type:e,position:t}),{id:(0,r.A)(),type:e,position:t,data:{label:"".concat("mcp"===e?"MCP":e.charAt(0).toUpperCase()+e.slice(1)," Node"),type:e,properties:{}}}}createStartNode(){return{id:(0,r.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}}}createNewFlow(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"NewFlow";return n.debug("createNewFlow: Entering method",{name:e}),{id:(0,r.A)(),name:e,nodes:[this.createStartNode()],edges:[]}}createHistoryEntry(e,t){return n.debug("createHistoryEntry: Entering method"),{nodes:[...e],edges:[...t]}}generateSampleFlow(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Sample Flow";return n.debug("generateSampleFlow: Entering method",{name:e}),{id:(0,r.A)(),name:e,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]}}constructor(){this.flowsCache=null}}let s=new a}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,2047,2348,2437,2483,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5817,6078,6744,7002,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8457],{67421:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>ta});var o=n(95155),r=n(12115),a=n(97322),l=n(94049),i=n(22003),s=n(70690),d=n(25635),c=n(2778),u=n(52363),p=n(65036),g=n(50001),f=n(75912),h=n(76530),m=n(36741),x=n(60691),v=n(29692),b=n(21067),y=n(41602),w=n(23820),j=n(17681),A=n(41983),S=n(73707),I=n(78470),C=n(4484),k=n(86946);let E=e=>{let{conversations:t,currentConversationId:n,onSelectConversation:r,onDeleteConversation:a,onNewConversation:i}=e;return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(l.default,{sx:{p:2,display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,o.jsx)(d.default,{variant:"h6",children:"Conversations"}),(0,o.jsx)(s.A,{variant:"contained",color:"primary",startIcon:(0,o.jsx)(k.A,{}),onClick:i,size:"small",children:"New"})]}),(0,o.jsx)(b.A,{}),(0,o.jsx)(y.A,{sx:{overflow:"auto",flex:1},children:0===t.length?(0,o.jsx)(w.Ay,{children:(0,o.jsx)(j.A,{primary:"No conversations yet",secondary:"Start a new conversation",primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}):t.sort((e,t)=>t.updatedAt-e.updatedAt).map(e=>(0,o.jsx)(w.Ay,{disablePadding:!0,secondaryAction:(0,o.jsx)(A.A,{edge:"end","aria-label":"delete",onClick:t=>{t.stopPropagation(),a(e.id)},children:(0,o.jsx)(C.A,{})}),sx:{opacity:e.id===n?1:.7},children:(0,o.jsx)(S.A,{selected:e.id===n,onClick:()=>r(e.id),sx:{pr:7},children:(0,o.jsx)(j.A,{primary:(0,o.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[e.status&&(0,o.jsx)(I.A,{title:(e=>{switch(e){case"running":return"Processing";case"awaiting_tool_approval":return"Waiting for tool approval";case"paused_debug":return"Paused in debug mode";case"completed":return"Completed";case"error":return"Error";default:return""}})(e.status),children:(0,o.jsx)(l.default,{component:"span",sx:{width:8,height:8,borderRadius:"50%",bgcolor:(e=>{switch(e){case"running":return"primary.main";case"awaiting_tool_approval":return"warning.main";case"paused_debug":return"secondary.main";case"completed":return"success.main";case"error":return"error.main";default:return"transparent"}})(e.status),display:"inline-block",flexShrink:0}})}),(0,o.jsx)(d.default,{component:"span",noWrap:!0,fontWeight:e.id===n?"bold":"normal",children:e.title})]}),secondary:new Date(e.updatedAt).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})})},e.id))})]})};var T=n(28548),N=n(2300),R=n(52641),D=n(51221),z=n(55606),P=n(86973),O=n(98267),F=n(20537),W=n(37960),L=n(99944),_=n(9957),M=n(36314),B=n(49501),U=n(6504),J=n(22133),q=n(11665),H=n(97516),G=n(91861),Y=n(53612),V=n(3014),X=n(63186),K=n(70863),Z=n(67891),$=n(14915),Q=n(63992),ee=n(59637),et=n(1877),en=n(87021);let eo=(0,en.h)("frontend/components/Chat/ChatMessages");function er(e){return"assistant"===e.role&&"tool_calls"in e&&Array.isArray(e.tool_calls)}let ea={p:e=>(0,o.jsx)(d.default,{variant:"body1",sx:{mb:.5,whiteSpace:"pre-line"},children:e.children}),h1:e=>(0,o.jsx)(d.default,{variant:"h5",sx:{mt:2,mb:.5},children:e.children}),h2:e=>(0,o.jsx)(d.default,{variant:"h6",sx:{mt:2,mb:.5},children:e.children}),h3:e=>(0,o.jsx)(d.default,{variant:"subtitle1",sx:{mt:1.5,mb:.5},children:e.children}),h4:e=>(0,o.jsx)(d.default,{variant:"subtitle2",sx:{mt:1.5,mb:.5},children:e.children}),h5:e=>(0,o.jsx)(d.default,{variant:"body1",sx:{mt:1,mb:.5,fontWeight:"bold"},children:e.children}),h6:e=>(0,o.jsx)(d.default,{variant:"body2",sx:{mt:1,mb:.5,fontWeight:"bold"},children:e.children}),ul:e=>(0,o.jsx)(l.default,{component:"ul",sx:{pl:2,mb:1},children:e.children}),ol:e=>(0,o.jsx)(l.default,{component:"ol",sx:{pl:2,mb:1},children:e.children}),li:e=>(0,o.jsx)(l.default,{component:"li",sx:{mb:.5,whiteSpace:"pre-line"},children:e.children}),a:e=>(0,o.jsx)(d.default,{component:"a",sx:{color:"primary.main"},href:e.href,children:e.children}),blockquote:e=>(0,o.jsx)(l.default,{component:"blockquote",sx:{borderLeft:"4px solid",borderColor:"divider",pl:2,py:.5,my:1,bgcolor:"action.hover",borderRadius:"4px"},children:e.children}),code:e=>{let{node:t,className:n,children:r,...a}=e;return/language-(\w+)/.exec(n||"")||n?(0,o.jsx)(l.default,{component:"pre",sx:{bgcolor:"action.hover",p:1.5,borderRadius:"4px",overflowX:"auto",fontFamily:"monospace",fontSize:"0.875rem",my:1,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:r}):(0,o.jsx)(d.default,{component:"code",sx:{bgcolor:"action.hover",px:.5,py:.25,borderRadius:"4px",fontFamily:"monospace",wordBreak:"break-all"},children:r})}},el=r.memo(function(e){var t,n;let r,{message:a,nodeLabel:i,availableNodes:c,showRaw:u,edit:p,onMenuOpen:g,onToggleRaw:f,onEditContentChange:h,onEditNodeChange:m,onSaveEdit:x,onCancelEdit:v}=e,b=null!=(t=a.depth)?t:0;return(0,o.jsxs)(l.default,{sx:{display:"flex",flexDirection:"column",alignItems:"user"===a.role?"flex-end":"flex-start",opacity:a.disabled?.5:1,...b>0&&{pl:3*b,borderLeft:"2px solid",borderColor:"divider",ml:1}},children:[(0,o.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,o.jsxs)(d.default,{variant:"caption",color:"text.secondary",sx:{mr:1},children:["user"===a.role?"You":"assistant"===a.role?"Assistant":"tool"===a.role?"Tool":"System"," • ","number"!=typeof(n=a.timestamp)||isNaN(n)?(eo.warn("formatTime received invalid timestamp:",n),"Invalid Date"):new Date(n).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"})]}),a.processNodeId&&(0,o.jsx)(I.A,{title:"".concat(i?"".concat(i," — "):"","Process Node ID: ").concat(a.processNodeId),children:(0,o.jsx)(T.A,{label:"Node: ".concat(i||"".concat(a.processNodeId.substring(0,6),"...")),size:"small",color:"primary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),b>0&&(0,o.jsx)(I.A,{title:"Nested subflow step (depth ".concat(b,")"),children:(0,o.jsx)(T.A,{label:"Subflow step",size:"small",color:"secondary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),a.disabled&&(0,o.jsx)(T.A,{label:"Disabled",size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem"}}),a.usage&&(0,o.jsx)(I.A,{title:"".concat(a.usage.promptTokens.toLocaleString()," prompt + ").concat(a.usage.completionTokens.toLocaleString()," completion tokens (provider-reported)"),children:(0,o.jsx)(T.A,{label:"".concat((r=a.usage.totalTokens)>=1e3?"".concat((r/1e3).toFixed(r>=1e5?0:1),"k"):"".concat(r)," tok"),size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),(0,o.jsx)(A.A,{size:"small",onClick:e=>g(e,a.id),sx:{ml:1},children:(0,o.jsx)(q.A,{fontSize:"small"})})]}),(0,o.jsxs)(N.A,{elevation:1,sx:{p:2,maxWidth:"75vw",borderRadius:2,bgcolor:"user"===a.role?"primary.light":"assistant"===a.role||"tool"===a.role?"background.paper":"info.light",color:"user"===a.role?"primary.contrastText":"assistant"===a.role||"tool"===a.role?"text.primary":"info.contrastText",position:"relative",borderLeft:"tool"===a.role?"4px solid":"none",borderColor:"tool"===a.role?"grey.400":"transparent",overflowWrap:"break-word",wordBreak:"break-word",overflow:"hidden"},children:[p?(0,o.jsxs)(l.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:[(0,o.jsx)("textarea",{value:p.content,onChange:e=>h(e.target.value),style:{width:"100%",minHeight:"100px",padding:"8px",borderRadius:"4px",border:"1px solid #ccc",fontFamily:"inherit",fontSize:"inherit",backgroundColor:"white",color:"black"}}),(0,o.jsxs)(R.A,{fullWidth:!0,size:"small",sx:{mt:1},children:[(0,o.jsx)(D.A,{id:"node-id-select-label",children:"Process Node"}),(0,o.jsx)(z.A,{labelId:"node-id-select-label",id:"node-id-select",value:p.nodeId||(c.length>0?c[0].id:""),label:"Process Node",onChange:e=>m(e.target.value),children:c.map(e=>(0,o.jsx)(P.A,{value:e.id,children:e.label||e.id.substring(0,8)},e.id))})]}),(0,o.jsxs)(l.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:1},children:[(0,o.jsx)(s.A,{variant:"outlined",size:"small",onClick:v,children:"Cancel"}),(0,o.jsx)(s.A,{variant:"contained",size:"small",onClick:x,children:"Save"})]})]}):(0,o.jsxs)(o.Fragment,{children:["tool"!==a.role&&"string"==typeof a.content&&(0,o.jsx)(U.oz,{remarkPlugins:[J.A],components:ea,children:a.content}),"tool"!==a.role&&Array.isArray(a.content)&&(0,o.jsx)(l.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:a.content.map((e,t)=>{var n;return(null==e?void 0:e.type)==="text"?(0,o.jsx)(U.oz,{remarkPlugins:[J.A],children:e.text},t):(null==e?void 0:e.type)==="image_url"&&(null==(n=e.image_url)?void 0:n.url)?(0,o.jsx)("img",{src:e.image_url.url,alt:"Image ".concat(t+1),style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}},t):null})}),"tool"!==a.role&&"string"!=typeof a.content&&!Array.isArray(a.content)&&!er(a)&&(0,o.jsx)(d.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:"[No text content]"})]}),er(a)&&a.tool_calls.length>0&&(0,o.jsxs)(l.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,o.jsxs)(d.default,{variant:"body2",sx:{display:"flex",alignItems:"center",color:"primary.main",mb:1},children:[(0,o.jsx)(K.A,{fontSize:"small",sx:{mr:1}}),"The assistant is using a tool"]}),a.tool_calls.map((e,t)=>{let n=(0,et.yo)(e.function.name),r=e.function.arguments;try{let t=JSON.parse(e.function.arguments);r=JSON.stringify(t,null,2)}catch(e){}return(0,o.jsxs)(O.A,{defaultExpanded:!1,sx:{mb:.5,"&:before":{display:"none"},boxShadow:"none",bgcolor:"rgba(0, 0, 0, 0.04)"},children:[(0,o.jsx)(F.A,{expandIcon:(0,o.jsx)(X.A,{}),children:(0,o.jsxs)(l.default,{sx:{display:"flex",alignItems:"center"},children:[(0,o.jsx)(K.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),(0,o.jsx)(d.default,{variant:"subtitle2",sx:{fontWeight:"bold"},children:n}),(0,o.jsx)(T.A,{label:"ID: ".concat(e.id?e.id.substring(0,8):"N/A","..."),size:"small",color:"default",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}})]})}),(0,o.jsx)(W.A,{sx:{p:0,pl:2,pr:2,pb:1},children:(0,o.jsx)(l.default,{component:"pre",sx:{bgcolor:"action.hover",p:1,borderRadius:"4px",overflowX:"auto",fontFamily:"monospace",fontSize:"0.75rem",my:.5,maxHeight:"150px",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:r})})]},e.id||"tc-".concat(a.id,"-").concat(t))})]}),"tool"===a.role&&a.tool_call_id&&(0,o.jsxs)(l.default,{children:[(0,o.jsxs)(d.default,{variant:"body2",sx:{display:"flex",alignItems:"center",color:"text.secondary",mb:1},children:[(0,o.jsx)(Z.A,{fontSize:"small",sx:{mr:1}}),"The tool responded to the assistant"]}),(0,o.jsxs)(O.A,{defaultExpanded:!1,sx:{mb:.5,"&:before":{display:"none"},boxShadow:"none",bgcolor:"rgba(0, 0, 0, 0.02)"},children:[(0,o.jsx)(F.A,{expandIcon:(0,o.jsx)(X.A,{}),children:(0,o.jsxs)(l.default,{sx:{display:"flex",alignItems:"center"},children:[(0,o.jsx)(Z.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,o.jsx)(d.default,{variant:"subtitle2",children:"Tool Result"}),(0,o.jsx)(T.A,{label:"ID: ".concat(a.tool_call_id.substring(0,8),"..."),size:"small",color:"default",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}}),(0,o.jsx)(L.A,{control:(0,o.jsx)(_.A,{size:"small",checked:u,onChange:e=>f(a.id,e.target.checked),onClick:e=>e.stopPropagation()}),label:"Raw",sx:{mr:1,ml:"auto","& .MuiTypography-root":{fontSize:"0.75rem"}},onClick:e=>e.stopPropagation()})]})}),(0,o.jsx)(W.A,{sx:{pt:0,pb:1,overflow:"hidden"},children:u?(0,o.jsx)(l.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontSize:"0.8rem",p:1,borderRadius:1,border:1,borderColor:e=>"dark"===e.palette.mode?"#3a3a3a":"#e5e7eb",bgcolor:"action.hover",color:e=>e.palette.text.primary,overflow:"auto",maxHeight:"300px"},children:"string"==typeof a.content?a.content:"[Invalid tool content]"}):(0,o.jsx)(l.default,{sx:{width:"100%",minWidth:0},children:"string"==typeof a.content?(()=>{try{let e=JSON.parse(a.content);if(e&&Array.isArray(e.content))return(0,o.jsx)(l.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:e.content.map((e,t)=>"text"===e.type?(0,o.jsx)(U.oz,{remarkPlugins:[J.A],children:e.text},t):"image"===e.type&&e.data&&e.mimeType?(0,o.jsx)("img",{src:"data:".concat(e.mimeType,";base64,").concat(e.data),alt:"Tool Result Image ".concat(t+1),style:{maxWidth:"100%",height:"auto",borderRadius:"4px",marginTop:"8px"}},t):"audio"===e.type&&e.data&&e.mimeType?(0,o.jsx)("audio",{controls:!0,src:"data:".concat(e.mimeType,";base64,").concat(e.data),style:{width:"100%",marginTop:"8px"},children:"Your browser does not support the audio element."},t):(0,o.jsx)(l.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontSize:"0.8rem",p:1,borderRadius:1,border:1,borderColor:e=>"dark"===e.palette.mode?"#3a3a3a":"#e5e7eb",bgcolor:"action.hover",color:e=>e.palette.text.primary,overflow:"auto",mt:1},children:"Unsupported content type: ".concat(e.type,"\n").concat(JSON.stringify(e,null,2))},t))});return(0,o.jsx)(U.oz,{remarkPlugins:[J.A],children:"```json\n".concat(JSON.stringify(e,null,2),"\n```")})}catch(e){return(0,o.jsx)(U.oz,{remarkPlugins:[J.A],children:a.content})}})():(0,o.jsx)(d.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:"[Invalid tool content]"})})})]})]}),a.attachments&&a.attachments.length>0&&(0,o.jsxs)(l.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,o.jsx)(d.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:.5},children:"Attachments:"}),a.attachments.map(e=>"image"===e.type?(0,o.jsx)(l.default,{sx:{mb:.5},children:(0,o.jsx)("img",{src:e.content,alt:e.originalName||"image attachment",style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}})},e.id):(0,o.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",p:1,borderRadius:1,bgcolor:"rgba(0, 0, 0, 0.04)",mb:.5},children:["document"===e.type?(0,o.jsx)(Y.A,{fontSize:"small",sx:{mr:1}}):(0,o.jsx)(V.A,{fontSize:"small",sx:{mr:1}}),(0,o.jsx)(d.default,{variant:"caption",sx:{wordBreak:"break-all"},children:e.originalName||"".concat(e.type," attachment")})]},e.id))]})]})]})}),ei=e=>{let{messages:t,pendingToolCalls:n,availableNodes:a=[],conversationId:i,onToggleDisabled:c,onSplitConversation:u,onEditMessage:p,onApproveToolCall:g,onRejectToolCall:f}=e,h=(0,r.useRef)(null),[m,x]=(0,r.useState)(50);(0,r.useEffect)(()=>{x(50)},[i]);let v=Array.isArray(t)?t.length:0,b=Math.max(0,v-m),y=(0,r.useMemo)(()=>Array.isArray(t)?b>0?t.slice(b):t:[],[t,b]),w=v>0?t[v-1].id:void 0,A=(0,r.useRef)(void 0);(0,r.useEffect)(()=>{var e;w!==A.current&&(A.current=w,null==(e=h.current)||e.scrollIntoView({behavior:"smooth"}))},[w]);let[S,I]=r.useState(null),[C,k]=r.useState(null),[E,R]=r.useState(null),[D,z]=r.useState(!1),[L,_]=r.useState(""),[U,J]=r.useState(null),[q,Y]=r.useState({}),V=(0,r.useCallback)((e,t)=>{eo.debug("handleMenuOpen called with messageId: ".concat(t)),I(e.currentTarget),k(t)},[]),Z=(0,r.useCallback)((e,t)=>{Y(n=>({...n,[e]:t}))},[]),en=(0,r.useCallback)(e=>{_(e)},[]),er=(0,r.useCallback)(e=>{J(e)},[]),ea=()=>{I(null),k(null)},ei=()=>{if(C){let e=t.find(e=>e.id===C);e&&"user"===e.role&&"string"==typeof e.content&&(_(e.content),J(e.processNodeId||(a.length>0?a[0].id:"")),R(C),z(!0)),ea()}},es=()=>{E&&p&&(p(E,L,U||""),z(!1),R(null),J(null))},ed=()=>{z(!1),R(null),J(null)},ec=(0,r.useMemo)(()=>{let e=new Map;for(let t of a)e.set(t.id,t.label);return e},[a]),eu=(0,r.useMemo)(()=>C&&t.find(e=>e.id===C)||null,[C,t]);return(0,o.jsxs)(l.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:[b>0&&(0,o.jsx)(l.default,{sx:{display:"flex",justifyContent:"center"},children:(0,o.jsxs)(s.A,{size:"small",variant:"outlined",onClick:()=>x(e=>e+200),children:["Show earlier messages (",b," more)"]})}),y.map((e,t)=>{let n=D&&e.id===E;return(0,o.jsx)(el,{message:e,nodeLabel:e.processNodeId?ec.get(e.processNodeId):void 0,availableNodes:a,showRaw:!!q[e.id],edit:n?{content:L,nodeId:U}:null,onMenuOpen:V,onToggleRaw:Z,onEditContentChange:en,onEditNodeChange:er,onSaveEdit:n?es:void 0,onCancelEdit:n?ed:void 0},e.id||"msg-".concat(b+t))}),(0,o.jsxs)(M.A,{anchorEl:S,open:!!S,onClose:ea,children:[eu&&(()=>{eo.debug("Entering menu item rendering logic",{activeMessageId:C}),eo.debug("Active message object for menu:",eu),eo.debug("Active message role for menu:",null==eu?void 0:eu.role);try{let e=!!p,t="user"===eu.role&&e;if(eo.debug("Rendering Edit Message menu item check",{activeMessageId:eu.id,messageRole:eu.role,onEditMessagePropType:typeof p,hasOnEditMessageProp:e,shouldShowEdit:t}),t)return(0,o.jsxs)(P.A,{onClick:ei,children:[(0,o.jsx)(B.A,{children:(0,o.jsx)($.A,{fontSize:"small"})}),(0,o.jsx)(j.A,{children:"Edit Message"})]});return null}catch(e){return eo.error("Error rendering Edit Message menu item",{error:e}),null}})(),(0,o.jsxs)(P.A,{onClick:()=>{C&&(c(C),ea())},children:[(0,o.jsx)(B.A,{children:(0,o.jsx)(H.A,{fontSize:"small"})}),(0,o.jsx)(j.A,{children:(null==eu?void 0:eu.disabled)?"Enable Message":"Disable Message"})]}),(0,o.jsxs)(P.A,{onClick:()=>{C&&(u(C),ea())},children:[(0,o.jsx)(B.A,{children:(0,o.jsx)(G.A,{fontSize:"small"})}),(0,o.jsx)(j.A,{children:"Split Conversation Here"})]})]}),(0,o.jsx)("div",{ref:h}),n&&n.length>0&&(0,o.jsxs)(N.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"warning.light",border:"1px solid",borderColor:"warning.main",borderRadius:2},children:[(0,o.jsxs)(d.default,{variant:"h6",sx:{mb:1,display:"flex",alignItems:"center"},children:[(0,o.jsx)(K.A,{sx:{mr:1}})," Tool Approval Required"]}),(0,o.jsx)(d.default,{variant:"body2",sx:{mb:2},children:"The assistant wants to use the following tool(s). Please approve or reject each request."}),n.map((e,t)=>{let n=(0,et.yo)(e.function.name),r=e.function.arguments;try{let t=JSON.parse(e.function.arguments);r=JSON.stringify(t,null,2)}catch(e){}return(0,o.jsxs)(O.A,{defaultExpanded:!0,sx:{mb:1,"&:before":{display:"none"},boxShadow:1},children:[(0,o.jsx)(F.A,{expandIcon:(0,o.jsx)(X.A,{}),children:(0,o.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",width:"100%"},children:[(0,o.jsx)(K.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),(0,o.jsx)(d.default,{variant:"subtitle2",sx:{fontWeight:"bold",flexGrow:1},children:n}),(0,o.jsx)(T.A,{label:"ID: ".concat(e.id?e.id.substring(0,8):"N/A","..."),size:"small",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}})]})}),(0,o.jsxs)(W.A,{sx:{pt:0},children:[(0,o.jsx)(l.default,{component:"pre",sx:{bgcolor:"action.hover",p:1,borderRadius:"4px",overflowX:"auto",fontFamily:"monospace",fontSize:"0.75rem",my:.5,maxHeight:"150px",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:r}),(0,o.jsxs)(l.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:1},children:[(0,o.jsx)(s.A,{variant:"outlined",color:"error",size:"small",startIcon:(0,o.jsx)(ee.A,{}),onClick:()=>f&&f(e.id),disabled:!f,children:"Reject"}),(0,o.jsx)(s.A,{variant:"contained",color:"success",size:"small",startIcon:(0,o.jsx)(Q.A,{}),onClick:()=>g&&g(e.id),disabled:!g,children:"Approve"})]})]})]},e.id||"ptc-".concat(t))})]})]})};var es=n(84869);let ed=(0,en.h)("frontend/services/transcription");async function ec(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{onProgress:n,onStatusChange:o,language:r}=t;try{if(ed.debug("Starting transcription service"),o&&o("Initializing transcription..."),!(0,es.G)().supported)throw Error("Web Speech API is not supported in this browser");o&&o("Using browser speech recognition...");let t=await (0,es.S)(e,{language:r,onInterimResult:e=>{o&&o("Transcribing: ".concat(e)),n&&n(50)}});return o&&o("Transcription completed"),ed.debug("Web Speech API transcription completed successfully",{textLength:t.length}),{text:t,success:!0,engine:"webspeech"}}catch(e){return ed.error("Transcription failed",{error:e}),o&&o("Transcription failed"),{text:"Transcription failed. Please check if your browser supports speech recognition.",success:!1,error:e instanceof Error?e.message:String(e)}}}var eu=n(9164),ep=n(9562),eg=n(22822),ef=n(4474),eh=n(35205),em=n(77073),ex=n(55930),ev=n(9693),eb=n(4823),ey=n(74879);let ew=(0,en.h)("frontend/components/Chat/ChatInput"),ej=e=>{var t;let{onSendMessage:n,disabled:a=!1,requireApproval:i=!1,onRequireApprovalChange:g,executeInDebugger:h=!1,onExecuteInDebuggerChange:m,availableNodes:x=[],currentNodeId:v=null,nodeOverrideActive:y=!1,onSelectNode:w}=e,{settings:S}=(0,eu.useStorage)(),[C,k]=(0,r.useState)(""),[E,R]=(0,r.useState)([]),[D,z]=(0,r.useState)(!1),[O,F]=(0,r.useState)(0),[W,_]=(0,r.useState)(null),U=(0,r.useRef)(null),J=(0,r.useRef)(null),q=(0,r.useRef)([]),[H,G]=(0,r.useState)(null),X=(null==(t=x.find(e=>e.id===v))?void 0:t.label)||(v?"".concat(v.substring(0,6),"..."):"Start"),[K,Z]=(0,r.useState)(!1),[$,Q]=(0,r.useState)(""),[ee,et]=(0,r.useState)(""),[en,eo]=(0,r.useState)("document"),[er,ea]=(0,r.useState)(!1),[el,ei]=(0,r.useState)(0),[es,ed]=(0,r.useState)(""),ej=()=>{(C.trim()||E.length>0)&&(ew.debug("Sending message",{messageLength:C.length,attachmentsCount:E.length}),n(C,E),k(""),R([]))},eA=async e=>{let t=e.target.files;if(!t||0===t.length)return;let n=t[0];ew.debug("File selected",{fileName:n.name,fileSize:n.size,fileType:n.type}),et("Processing ".concat(n.name)),eo("document"),Q(""),ea(!0),Z(!0);try{let e=await eS(n);ew.debug("File read successfully",{contentLength:e.length}),Q(e),ea(!1)}catch(e){ew.error("Error reading file:",e),Q("Error reading file. Please try again with a text file."),ea(!1)}U.current&&(U.current.value="")},eS=e=>new Promise((t,n)=>{let o=new FileReader;o.onload=e=>{var o;(null==(o=e.target)?void 0:o.result)?t(e.target.result):n(Error("Failed to read file"))},o.onerror=()=>{n(Error("Error reading file"))},o.readAsText(e)}),eI=async()=>{ew.debug("Starting audio recording");try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});ew.debug("Audio stream obtained successfully"),q.current=[];let t=new MediaRecorder(e);J.current=t,t.ondataavailable=e=>{e.data.size>0&&q.current.push(e.data)},t.onstop=async()=>{let t=new Blob(q.current,{type:"audio/wav"});et("Audio Recording"),eo("audio"),Q(""),ea(!0),Z(!0);try{if(((null==S?void 0:S.speech)||{enabled:!0,modelSize:"base",autoDownload:!1}).enabled){ed("Initializing transcription..."),ei(0);let e=await ec(t,{onProgress:ei,onStatusChange:ed,language:navigator.language});if(e.success){let t=e.text;Q(t),ew.debug("Transcription successful",{textLength:e.text.length,engine:e.engine})}else Q("Error transcribing audio: ".concat(e.error,".")),ew.error("Transcription failed",{error:e.error})}else Q("Speech recognition is disabled in settings. Enable it to get automatic transcriptions.")}catch(e){ew.error("Error handling audio recording",{error:e}),Q("Failed to process audio: ".concat(e))}finally{ea(!1),e.getTracks().forEach(e=>e.stop())}},t.start(),z(!0);let n=setInterval(()=>{F(e=>e+1)},1e3);_(n)}catch(e){ew.error("Error starting recording:",e),alert("Could not access microphone. Please check permissions.")}};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(N.A,{elevation:3,sx:{p:2,display:"flex",flexDirection:"column",borderRadius:2},children:[E.length>0&&(0,o.jsx)(l.default,{sx:{mb:2,display:"flex",flexWrap:"wrap",gap:1},children:E.map(e=>(0,o.jsxs)(N.A,{variant:"outlined",sx:{p:1,display:"flex",alignItems:"center",borderRadius:1,bgcolor:"background.default"},children:["image"===e.type?(0,o.jsx)(l.default,{component:"img",src:e.content,alt:e.originalName||"pasted image",sx:{width:40,height:40,objectFit:"cover",borderRadius:1,mr:1}}):"document"===e.type?(0,o.jsx)(Y.A,{fontSize:"small",sx:{mr:1}}):(0,o.jsx)(V.A,{fontSize:"small",sx:{mr:1}}),(0,o.jsx)(d.default,{variant:"body2",noWrap:!0,sx:{maxWidth:150},children:e.originalName||"".concat(e.type," attachment")}),(0,o.jsx)(A.A,{size:"small",onClick:()=>(e=>{ew.debug("Removing attachment",{id:e}),R(E.filter(t=>t.id!==e))})(e.id),sx:{ml:1},children:(0,o.jsx)(em.A,{fontSize:"small"})})]},e.id))}),(0,o.jsxs)(l.default,{sx:{display:"flex",alignItems:"flex-end"},children:[(0,o.jsx)(ep.A,{fullWidth:!0,multiline:!0,maxRows:4,"data-tour":"chat-input",placeholder:"Type a message...",value:C,onChange:e=>{k(e.target.value)},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(ew.debug("Enter key pressed, sending message"),e.preventDefault(),ej())},onPaste:e=>{var t;let n=null==(t=e.clipboardData)?void 0:t.items;if(!n)return;let o=[];for(let e=0;e<n.length;e++){let t=n[e];if("file"===t.kind&&t.type.startsWith("image/")){let e=t.getAsFile();e&&o.push(e)}}0!==o.length&&(e.preventDefault(),ew.debug("Pasting image attachment(s)",{count:o.length}),o.forEach(e=>{let t=new FileReader;t.onload=t=>{var n;let o=null==(n=t.target)?void 0:n.result;if("string"!=typeof o)return;let r=(e.type.split("/")[1]||"png").split("+")[0];R(t=>[...t,{id:(0,ey.A)(),type:"image",content:o,originalName:e.name&&!/^image\.\w+$/i.test(e.name)?e.name:"Pasted image.".concat(r)}])},t.onerror=()=>ew.error("Failed to read pasted image"),t.readAsDataURL(e)}))},disabled:a,variant:"outlined",sx:{mr:1},InputProps:{sx:{borderRadius:2}}}),(0,o.jsx)(I.A,{title:"Attach document",children:(0,o.jsx)(A.A,{color:"primary",onClick:()=>{var e;ew.debug("File selection triggered"),null==(e=U.current)||e.click()},disabled:a||D,children:(0,o.jsx)(Y.A,{})})}),(0,o.jsx)("input",{type:"file",ref:U,onChange:eA,style:{display:"none"},accept:".txt,.md,.json,.csv,.html,.xml,.js,.ts,.jsx,.tsx,.css,.scss"}),(0,o.jsx)(I.A,{title:D?"Stop recording":"Record audio",children:(0,o.jsxs)(A.A,{color:D?"error":"primary",onClick:D?()=>{ew.debug("Stopping audio recording"),J.current&&"inactive"!==J.current.state&&(J.current.stop(),z(!1),W&&(clearInterval(W),_(null)),F(0))}:eI,disabled:a,children:[(0,o.jsx)(V.A,{}),D&&(0,o.jsx)(d.default,{variant:"caption",sx:{position:"absolute",bottom:-15,fontSize:"0.7rem",color:"error.main"},children:(e=>{let t=Math.floor(e/60);return"".concat(t.toString().padStart(2,"0"),":").concat((e%60).toString().padStart(2,"0"))})(O)})]})}),(0,o.jsx)(I.A,{title:"Send message",children:(0,o.jsx)(A.A,{color:"primary",onClick:ej,disabled:a||!C.trim()&&0===E.length,children:(0,o.jsx)(eh.A,{})})})]})," ",(g||w&&x.length>0)&&(0,o.jsxs)(l.default,{sx:{mt:1,display:"flex",justifyContent:"flex-start",alignItems:"center",flexWrap:"wrap",gap:1},children:[w&&x.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(I.A,{title:y?"Next message will run on this manually picked node — click to change":"Node the next message will run on — click to pick a different one",children:(0,o.jsx)(T.A,{icon:(0,o.jsx)(ex.A,{}),label:X,size:"small",color:y?"primary":"default",variant:y?"filled":"outlined",onClick:e=>G(e.currentTarget),disabled:a})}),(0,o.jsxs)(M.A,{anchorEl:H,open:!!H,onClose:()=>G(null),children:[(0,o.jsxs)(P.A,{selected:!y,onClick:()=>{w(null),G(null)},children:[(0,o.jsx)(B.A,{children:(0,o.jsx)(eb.A,{fontSize:"small"})}),(0,o.jsx)(j.A,{primary:"Automatic",secondary:"Follow the conversation",secondaryTypographyProps:{variant:"caption"}})]}),(0,o.jsx)(b.A,{}),x.map(e=>(0,o.jsxs)(P.A,{selected:y&&e.id===v,onClick:()=>{w(e.id),G(null)},children:[(0,o.jsx)(B.A,{children:e.id===v?(0,o.jsx)(ev.A,{fontSize:"small"}):null}),(0,o.jsx)(j.A,{primary:e.label})]},e.id))]})]}),g&&(0,o.jsx)(L.A,{control:(0,o.jsx)(eg.A,{checked:i,onChange:e=>g(e.target.checked),size:"small",disabled:a}),label:(0,o.jsx)(d.default,{variant:"caption",children:"Require Tool Approvals"}),sx:{mr:"auto"}}),m&&(0,o.jsx)(L.A,{control:(0,o.jsx)(eg.A,{checked:h,onChange:e=>m(e.target.checked),size:"small",disabled:a}),label:(0,o.jsx)(d.default,{variant:"caption",children:"Execute in Debugger"}),sx:{ml:2}})]})," "]})," ",(0,o.jsxs)(c.A,{open:K,onClose:()=>!er&&Z(!1),maxWidth:"md",fullWidth:!0,children:[(0,o.jsxs)(u.A,{children:[ee,!er&&(0,o.jsx)(A.A,{"aria-label":"close",onClick:()=>Z(!1),sx:{position:"absolute",right:8,top:8},children:(0,o.jsx)(em.A,{})})]}),(0,o.jsx)(p.A,{dividers:!0,children:er?(0,o.jsxs)(l.default,{sx:{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",p:4},children:[(0,o.jsx)(ef.default,{value:"audio"===en&&el?el:void 0,variant:"audio"===en&&el>0?"determinate":"indeterminate"}),"audio"===en&&(0,o.jsxs)(l.default,{sx:{mt:2,textAlign:"center"},children:[(0,o.jsx)(d.default,{variant:"body2",children:es||"Processing audio..."}),el>0&&(0,o.jsxs)(d.default,{variant:"body2",color:"text.secondary",sx:{mt:1},children:[Math.round(el),"%"]})]})]}):(0,o.jsx)(ep.A,{multiline:!0,fullWidth:!0,minRows:10,maxRows:20,value:$,onChange:e=>Q(e.target.value),variant:"outlined",placeholder:"document"===en?"Document content":"Audio transcription"})}),(0,o.jsxs)(f.A,{children:[(0,o.jsx)(s.A,{onClick:()=>Z(!1),disabled:er,children:"Cancel"}),(0,o.jsx)(s.A,{onClick:()=>{ew.debug("Adding attachment",{type:en,titleLength:ee.length}),R([...E,{id:(0,ey.A)(),type:en,content:$,originalName:ee}]),Z(!1)},variant:"contained",disabled:er||!$.trim(),children:"Add to Message"})]})]})]})},eA=e=>{var t;let{liveStats:n,onStop:a,stopDisabled:i}=e,[c,u]=(0,r.useState)(()=>Date.now());(0,r.useEffect)(()=>{let e=setInterval(()=>u(Date.now()),1e3);return()=>clearInterval(e)},[]);let p=n?Math.max(0,Math.round((c-n.startedAt)/1e3)):0,g=n?Math.round((c-n.lastEventAt)/1e3):0,f=!!n&&g>=60;return(0,o.jsxs)(l.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",my:2,gap:.5},children:[(0,o.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,o.jsx)(ef.default,{size:20,color:f?"warning":"primary"}),(0,o.jsx)(d.default,{variant:"body2",color:"textSecondary",children:(null==n?void 0:n.activeNode)?"Running: ".concat(n.activeNode):"Working…"}),(0,o.jsx)(s.A,{variant:"outlined",color:"secondary",size:"small",onClick:a,disabled:i,children:"Stop"})]}),(0,o.jsxs)(d.default,{variant:"caption",color:f?"warning.main":"textSecondary",children:[(null!=(t=null==n?void 0:n.totalTokens)?t:0).toLocaleString()," tokens \xb7 ",p,"s elapsed",f?" \xb7 no activity for ".concat(g,"s — may be stuck"):""]})]})};var eS=n(88538),eI=n(16963),eC=n(2456),ek=n(64792),eE=n(71356),eT=n(45202),eN=n(52005),eR=n(77998);let eD=e=>e>=1e3?"".concat((e/1e3).toFixed(e>=1e5?0:1),"k"):"".concat(e),ez=e=>{let{usage:t,contextInfo:n,availableNodes:a}=e,[i,s]=(0,r.useState)(null);if(!t&&!n)return null;let c=(null==t?void 0:t.byNode)?Object.entries(t.byNode):[],u=(null==n?void 0:n.contextWindow)&&n.contextWindow>0?Math.min(100,Math.round(n.promptTokens/n.contextWindow*100)):void 0;return(0,o.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:1.5,flexShrink:0},children:[t&&t.totalTokens>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(I.A,{title:"Total tokens this conversation — ".concat(t.promptTokens.toLocaleString()," prompt / ").concat(t.completionTokens.toLocaleString()," completion. Click for the per-node breakdown."),children:(0,o.jsx)(T.A,{icon:(0,o.jsx)(eR.A,{}),label:"".concat(eD(t.totalTokens)," tokens"),size:"small",variant:"outlined",onClick:e=>s(e.currentTarget),sx:{cursor:"pointer"}})}),(0,o.jsx)(eS.Ay,{open:!!i,anchorEl:i,onClose:()=>s(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:(0,o.jsxs)(l.default,{sx:{p:2,maxWidth:420},children:[(0,o.jsx)(d.default,{variant:"subtitle2",sx:{mb:1},children:"Token usage by node"}),(0,o.jsxs)(eI.A,{size:"small",children:[(0,o.jsx)(eC.A,{children:(0,o.jsxs)(ek.A,{children:[(0,o.jsx)(eE.A,{children:"Node"}),(0,o.jsx)(eE.A,{align:"right",children:"Prompt"}),(0,o.jsx)(eE.A,{align:"right",children:"Completion"}),(0,o.jsx)(eE.A,{align:"right",children:"Total"})]})}),(0,o.jsxs)(eT.A,{children:[c.map(e=>{let[t,n]=e;return(0,o.jsxs)(ek.A,{children:[(0,o.jsx)(eE.A,{children:(0,o.jsx)(I.A,{title:t,children:(0,o.jsx)("span",{children:(e=>{var t;return(null==(t=a.find(t=>t.id===e))?void 0:t.label)||"".concat(e.substring(0,8),"…")})(t)})})}),(0,o.jsx)(eE.A,{align:"right",children:n.promptTokens.toLocaleString()}),(0,o.jsx)(eE.A,{align:"right",children:n.completionTokens.toLocaleString()}),(0,o.jsx)(eE.A,{align:"right",children:n.totalTokens.toLocaleString()})]},t)}),(0,o.jsxs)(ek.A,{children:[(0,o.jsx)(eE.A,{sx:{fontWeight:"bold"},children:"Total"}),(0,o.jsx)(eE.A,{align:"right",sx:{fontWeight:"bold"},children:t.promptTokens.toLocaleString()}),(0,o.jsx)(eE.A,{align:"right",sx:{fontWeight:"bold"},children:t.completionTokens.toLocaleString()}),(0,o.jsx)(eE.A,{align:"right",sx:{fontWeight:"bold"},children:t.totalTokens.toLocaleString()})]})]})]})]})})]}),n&&void 0!==u&&(0,o.jsx)(I.A,{title:"Context of the latest call".concat(n.modelDisplayName?" (".concat(n.modelDisplayName,")"):"",": ").concat(n.promptTokens.toLocaleString()," of ").concat(n.contextWindow.toLocaleString()," tokens"),children:(0,o.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:1,minWidth:140},children:[(0,o.jsx)(eN.A,{variant:"determinate",value:u,color:u>=90?"error":u>=70?"warning":"primary",sx:{flex:1,height:6,borderRadius:3}}),(0,o.jsxs)(d.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:[eD(n.promptTokens),"/",eD(n.contextWindow)," (",u,"%)"]})]})}),n&&void 0===u&&(0,o.jsx)(I.A,{title:"Prompt size of the latest call".concat(n.modelDisplayName?" (".concat(n.modelDisplayName,")"):"",". Set the model's Context Window in its settings to see a usage meter."),children:(0,o.jsxs)(d.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:["ctx ",eD(n.promptTokens)]})})]})};var eP=n(18369),eO=n(90057);let eF=e=>{let{selectedFlowId:t,onSelectFlow:n,disabled:a=!1}=e,[i,s]=(0,r.useState)([]),[c,u]=(0,r.useState)(!0),[p,g]=(0,r.useState)(null);return(0,r.useEffect)(()=>{(async()=>{u(!0),g(null);try{let e=await eO.g.loadFlows();s(e)}catch(e){console.error("Error loading flows:",e),g("Failed to load flows")}finally{u(!1)}})()},[]),(0,o.jsxs)(l.default,{children:[(0,o.jsx)(d.default,{variant:"subtitle1",gutterBottom:!0,children:"Select Flow"}),c?(0,o.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,o.jsx)(ef.default,{size:20}),(0,o.jsx)(d.default,{variant:"body2",color:"text.secondary",children:"Loading flows..."})]}):p?(0,o.jsx)(d.default,{color:"error",variant:"body2",children:p}):0===i.length?(0,o.jsx)(d.default,{variant:"body2",color:"text.secondary",children:"No flows available. Create some flows in the Flow Builder first."}):(0,o.jsxs)(R.A,{fullWidth:!0,disabled:a,children:[" ",(0,o.jsx)(D.A,{id:"flow-select-label",children:"Flow"}),(0,o.jsx)(z.A,{labelId:"flow-select-label",id:"flow-select",value:t||"",label:"Flow",onChange:e=>{n(e.target.value)},disabled:a,children:i.map(e=>(0,o.jsx)(P.A,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(eP.A,{children:t?'Using "'.concat((()=>{if(!t)return"";let e=i.find(e=>e.id===t);return e?e.name:""})(),'" flow for this conversation'):"Select a flow to use for this conversation"})]})]})};var eW=n(53940),eL=n(48116),e_=n(33567),eM=n(22539),eB=n(33420),eU=n(80685);let eJ=(0,en.h)("frontend/components/Chat/DebuggerCanvas"),eq={start:eB.vm,process:eB.Uw,finish:eB.IK,mcp:eB.v2,subflow:eB.lA},eH={custom:eU.jY,mcpEdge:eU.oY},eG=(0,eL.Ay)(N.A)(e=>{let{theme:t}=e;return{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden",padding:t.spacing(1)}}),eY=(0,eL.Ay)(l.default)(e=>{let{theme:t}=e;return{padding:t.spacing(1,2),borderBottom:"1px solid ".concat(t.palette.divider)}}),eV=(0,eL.Ay)(l.default)({flexGrow:1,display:"flex",overflow:"hidden"}),eX=(0,eL.Ay)(l.default)(e=>{let{theme:t}=e;return{width:"200px",borderRight:"1px solid ".concat(t.palette.divider),overflowY:"auto",padding:t.spacing(1)}}),eK=(0,eL.Ay)(l.default)({flexGrow:1,position:"relative",height:"100%"}),eZ=(0,eL.Ay)(l.default)(e=>{let{theme:t}=e;return{width:"300px",borderLeft:"1px solid ".concat(t.palette.divider),overflowY:"auto",padding:t.spacing(2)}}),e$=(0,eL.Ay)(l.default)(e=>{let{theme:t}=e;return{padding:t.spacing(1,2),borderTop:"1px solid ".concat(t.palette.divider),display:"flex",gap:t.spacing(1),justifyContent:"center"}}),eQ=e=>{var t,n,a,c;let{debugState:u,conversationId:p,onStep:g,onStepOver:f,onContinue:h,onCancel:m,isLoading:x,breakpoints:v,onToggleBreakpoint:b,onClose:C}=e,k=(0,e_.A)(),[E,T]=(0,r.useState)(u.executionTrace&&u.executionTrace.length>0?u.executionTrace.length-1:-1),[N,R]=(0,r.useState)(!0),[D,z]=(0,r.useState)(!0),[P,L]=(0,r.useState)(null),[_,M]=(0,r.useState)(!0),[B,U]=(0,r.useState)(null),[J,q,H]=(0,eM.ck)([]),[G,Y,V]=(0,eM.fM)([]);(0,r.useEffect)(()=>{var e;let t=(null==(e=u.executionTrace)?void 0:e.length)||0;t>0?(T(e=>Math.min(e,t-1)),E<t-1&&T(t-1)):T(-1)},[u.executionTrace]),(0,r.useEffect)(()=>{(async()=>{if(!u.flowId){U("Flow ID is missing in debug state."),M(!1);return}M(!0),U(null);try{eJ.debug("Loading flow definition for ID: ".concat(u.flowId));let e=await eO.g.getFlow(u.flowId);if(!e)throw Error("Flow with ID ".concat(u.flowId," not found."));L(e),eJ.info("Flow definition loaded: ".concat(e.name))}catch(e){eJ.error("Error loading flow definition:",e),U(e instanceof Error?e.message:"Failed to load flow definition."),L(null)}finally{M(!1)}})()},[u.flowId]),(0,r.useEffect)(()=>{if(P){eJ.debug("Setting nodes and edges from flow definition");let e=P.nodes.map(e=>({...e,draggable:!1,selectable:!1,connectable:!1})),t=P.edges.map(e=>({...e,selectable:!1}));q(e),Y(t)}},[P,q,Y]);let K=(0,r.useCallback)(()=>{if(eJ.debug("Previous button clicked. Current index: ".concat(E)),E>0){let e=E-1;eJ.debug("Setting current step index to: ".concat(e)),T(e)}else eJ.debug("Already at the first step, cannot go previous.")},[E]),Z=(0,r.useCallback)(()=>{var e;if(eJ.debug("Next button clicked. Current index: ".concat(E,", Trace length: ").concat(null==(e=u.executionTrace)?void 0:e.length)),u.executionTrace&&E<u.executionTrace.length-1){let e=E+1;eJ.debug("Navigating to next trace step: ".concat(e)),T(e)}else eJ.info("At end of trace, triggering API call for next step."),g()},[E,u.executionTrace,g]),$=(0,r.useMemo)(()=>{if(u.executionTrace&&E>=0&&E<u.executionTrace.length)return u.executionTrace[E]},[u.executionTrace,E]),Q=(0,r.useMemo)(()=>{let e=null==$?void 0:$.nodeId;return J.map(t=>{var n;let o=t.id===e,r=null==v?void 0:v.includes(t.id);return{...t,style:{...t.style,border:o?"2px solid ".concat(k.palette.warning.main):r?"2px dashed ".concat(k.palette.error.main):null==(n=t.style)?void 0:n.border,boxShadow:o?"0 0 10px ".concat(k.palette.warning.light):void 0}}})},[J,$,v,k]);return(0,o.jsxs)(eG,{elevation:2,children:[(0,o.jsxs)(eY,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-between"},children:[(0,o.jsxs)(l.default,{children:[(0,o.jsx)(d.default,{variant:"h6",children:"Flow Debugger"}),(0,o.jsxs)(d.default,{variant:"caption",color:"textSecondary",display:"block",children:["Click a node to toggle a breakpoint",v&&v.length>0?" \xb7 ".concat(v.length," active"):""]})]}),(0,o.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,o.jsx)(I.A,{title:N?"Hide execution trace":"Show execution trace",children:(0,o.jsx)(A.A,{size:"small",onClick:()=>R(e=>!e),color:N?"primary":"default","aria-label":N?"Hide execution trace":"Show execution trace",children:(0,o.jsx)(eW.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})})}),(0,o.jsx)(I.A,{title:D?"Hide step inspector":"Show step inspector",children:(0,o.jsx)(A.A,{size:"small",onClick:()=>z(e=>!e),color:D?"primary":"default","aria-label":D?"Hide step inspector":"Show step inspector",children:(0,o.jsx)(eW.A,{fontSize:"small"})})}),C&&(0,o.jsx)(I.A,{title:"Close debugger",children:(0,o.jsx)(A.A,{size:"small",onClick:C,"aria-label":"Close debugger",children:(0,o.jsx)(em.A,{fontSize:"small"})})})]})]}),(0,o.jsxs)(eV,{children:[N&&(0,o.jsxs)(eX,{children:[(0,o.jsx)(d.default,{variant:"subtitle2",gutterBottom:!0,children:"Execution Trace"}),(0,o.jsxs)(y.A,{dense:!0,disablePadding:!0,children:[null==(t=u.executionTrace)?void 0:t.map((e,t)=>(0,o.jsx)(w.Ay,{disablePadding:!0,children:(0,o.jsx)(S.A,{selected:t===E,onClick:()=>(e=>{u.executionTrace&&e>=0&&e<u.executionTrace.length?(eJ.debug("Trace step selected: ".concat(e)),T(e)):eJ.warn("Invalid step index selected: ".concat(e)),T(e),T(e)})(t),children:(0,o.jsx)(j.A,{primary:"".concat(e.stepIndex,": ").concat(e.nodeName||e.nodeId),secondary:e.nodeType})})},e.stepIndex)),x&&(0,o.jsx)(w.Ay,{children:(0,o.jsx)(ef.default,{size:20,sx:{margin:"auto"}})})]})]}),(0,o.jsx)(eK,{children:_?(0,o.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,o.jsx)(ef.default,{})}):B?(0,o.jsx)(i.A,{severity:"error",sx:{margin:2},children:B}):(0,o.jsxs)(eM.Ln,{children:[" ",(0,o.jsx)(eM.Gc,{nodes:Q,edges:G,onNodesChange:H,onEdgesChange:V,nodeTypes:eq,edgeTypes:eH,fitView:!0,attributionPosition:"bottom-right",nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!1,onNodeClick:(e,t)=>{e.preventDefault(),b&&b(t.id)},onEdgeClick:e=>e.preventDefault(),onPaneClick:()=>{},children:" "})]})}),D&&(0,o.jsxs)(eZ,{children:[(0,o.jsx)(d.default,{variant:"subtitle2",gutterBottom:!0,children:"Step Inspector"}),$?(0,o.jsxs)(l.default,{children:[(0,o.jsxs)(d.default,{variant:"body2",children:[(0,o.jsx)("b",{children:"Node:"})," ",$.nodeName," (",$.nodeId,")"]}),(0,o.jsxs)(d.default,{variant:"body2",children:[(0,o.jsx)("b",{children:"Type:"})," ",$.nodeType]}),(0,o.jsxs)(d.default,{variant:"body2",children:[(0,o.jsx)("b",{children:"Timestamp:"})," ",new Date($.timestamp).toLocaleString()]}),(0,o.jsxs)(d.default,{variant:"body2",children:[(0,o.jsx)("b",{children:"Action Taken:"})," ",$.actionTaken]}),(0,o.jsxs)(O.A,{sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,o.jsx)(F.A,{expandIcon:(0,o.jsx)(X.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,o.jsx)(d.default,{variant:"caption",children:"Prep Result"})}),(0,o.jsx)(W.A,{sx:{p:0},children:(0,o.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"#f5f5f5",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify($.prepResultSnapshot,null,2)})})]}),(0,o.jsxs)(O.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,o.jsx)(F.A,{expandIcon:(0,o.jsx)(X.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,o.jsxs)(d.default,{variant:"caption",color:(null==(n=$.execResultSnapshot)?void 0:n.success)===!1?"error":"inherit",children:["Exec Result ",(null==(a=$.execResultSnapshot)?void 0:a.success)===!1?"(Error)":""]})}),(0,o.jsx)(W.A,{sx:{p:0},children:(null==(c=$.execResultSnapshot)?void 0:c.success)===!1?(0,o.jsxs)(l.default,{sx:{p:1,background:k.palette.error.light,borderRadius:1},children:[" ",(0,o.jsxs)(d.default,{variant:"body2",color:"error",gutterBottom:!0,children:[(0,o.jsx)("b",{children:"Error:"})," ",$.execResultSnapshot.error||"Unknown error"]}),$.execResultSnapshot.errorDetails&&(0,o.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"150px",overflowY:"auto",background:"#f5f5f5",padding:"4px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify($.execResultSnapshot.errorDetails,null,2)})]}):(0,o.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"#f5f5f5",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify($.execResultSnapshot,null,2)})})]}),(0,o.jsxs)(O.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,o.jsx)(F.A,{expandIcon:(0,o.jsx)(X.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,o.jsx)(d.default,{variant:"caption",children:"State Before"})}),(0,o.jsx)(W.A,{sx:{p:0},children:(0,o.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"#f5f5f5",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify($.stateBefore,null,2)})})]}),(0,o.jsxs)(O.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,o.jsx)(F.A,{expandIcon:(0,o.jsx)(X.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,o.jsx)(d.default,{variant:"caption",children:"State After"})}),(0,o.jsx)(W.A,{sx:{p:0},children:(0,o.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"#f5f5f5",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify($.stateAfter,null,2)})})]})]}):(0,o.jsx)(d.default,{variant:"body2",color:"textSecondary",children:"Select a step from the trace."})]})]}),(0,o.jsxs)(e$,{children:[(0,o.jsx)(s.A,{variant:"outlined",size:"small",onClick:K,disabled:x||E<=0,children:"Previous"}),(0,o.jsx)(s.A,{variant:"contained",size:"small",onClick:Z,disabled:x||-1===E,children:u.executionTrace&&E<u.executionTrace.length-1?"Next Trace Step":"Step Next"}),f&&(0,o.jsx)(s.A,{variant:"outlined",size:"small",onClick:f,disabled:x,children:"Step Over"}),(0,o.jsx)(s.A,{variant:"contained",color:"secondary",size:"small",onClick:h,disabled:x,children:"Continue"}),(0,o.jsx)(s.A,{variant:"outlined",color:"error",size:"small",onClick:m,disabled:x,children:"Stop"})]})]})};var e0=n(94929),e1=n(29155),e2=n(63650);let e5=(0,en.h)("frontend/services/chat/index");class e4 extends Error{constructor(e,t,n){super(e),this.name="ChatApiError",this.status=t,this.body=n}}let e6="/v1/chat/conversations";async function e3(e){let t;if(204===e.status)return;let n=await e.text();if(n)try{t=JSON.parse(n)}catch(e){t=n}if(!e.ok)throw new e4(t&&"object"==typeof t&&(t.error||t.message)||"Request failed with status ".concat(e.status),e.status,t);return t}class e7{async listConversations(){return e5.debug("listConversations: Entering method"),e3(await fetch(e6))}async getConversation(e){return e5.debug("getConversation: Entering method",{conversationId:e}),e3(await fetch("".concat(e6,"/").concat(encodeURIComponent(e))))}async createConversation(e){return e5.debug("createConversation: Entering method",{conversationId:e.id}),e3(await fetch(e6,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}))}async updateConversationFlow(e,t){return e5.debug("updateConversationFlow: Entering method",{conversationId:e,flowId:t}),e3(await fetch("".concat(e6,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({flowId:t})}))}async updateConversationApproval(e,t){return e5.debug("updateConversationApproval: Entering method",{conversationId:e,requireApproval:t}),e3(await fetch("".concat(e6,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApproval:t})}))}async deleteConversation(e){e5.debug("deleteConversation: Entering method",{conversationId:e});let t=await fetch("".concat(e6,"/").concat(encodeURIComponent(e)),{method:"DELETE"});await e3(t)}async respondToToolCall(e,t,n){return e5.debug("respondToToolCall: Entering method",{conversationId:e,action:t,toolCallId:n}),e3(await fetch("".concat(e6,"/").concat(encodeURIComponent(e),"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:t,toolCallId:n})}))}async debugStep(e){return e5.debug("debugStep: Entering method",{conversationId:e}),e3(await fetch("".concat(e6,"/").concat(encodeURIComponent(e),"/debug/step"),{method:"POST"}))}async debugContinue(e){return e5.debug("debugContinue: Entering method",{conversationId:e}),e3(await fetch("".concat(e6,"/").concat(encodeURIComponent(e),"/debug/continue"),{method:"POST"}))}async setBreakpoints(e,t){e5.debug("setBreakpoints: Entering method",{conversationId:e,count:t.length});let n=await fetch("".concat(e6,"/").concat(encodeURIComponent(e),"/breakpoints"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({breakpoints:t})});await e3(n)}async cancel(e){e5.debug("cancel: Entering method",{conversationId:e});let t=await fetch("".concat(e6,"/").concat(encodeURIComponent(e),"/cancel"),{method:"POST"});await e3(t)}subscribeToEvents(e,t,n){let o=new EventSource(void 0!==n?"".concat(e6,"/").concat(encodeURIComponent(e),"/events?fromSeq=").concat(n):"".concat(e6,"/").concat(encodeURIComponent(e),"/events"));return o.onopen=()=>{var n;e5.debug("Execution event stream open",{conversationId:e}),null==(n=t.onOpen)||n.call(t)},o.onmessage=e=>{try{t.onEvent(JSON.parse(e.data))}catch(e){e5.warn("Failed to parse SSE event",{err:e})}},o.onerror=e=>{var n;e5.debug("SSE stream error (browser will retry if still open)"),null==(n=t.onError)||n.call(t,e)},o}}let e8=new e7,e9=(0,en.h)("frontend/components/Chat/index");function te(e){var t;if(Array.isArray(e.content))return e.content;let n="string"==typeof e.content?e.content:"",o=null!=(t=e.attachments)?t:[],r=o.filter(e=>"image"!==e.type),a=o.filter(e=>"image"===e.type);if(r.length>0&&(n+="\n\n"+r.map(e=>"[".concat(e.type.toUpperCase(),"]: ").concat(e.content)).join("\n\n")),0===a.length)return n;let l=[];for(let e of(n.trim()&&l.push({type:"text",text:n}),a))l.push({type:"image_url",image_url:{url:e.content}});return l}let tt=()=>{var e;let[t,n]=(0,r.useState)([]),[a,b]=(0,r.useState)(!0),[y,w]=(0,r.useState)(null),[j,A]=(0,r.useState)(null),[S,I]=(0,r.useState)(!1),[C,k]=(0,r.useState)(null),[T,N]=(0,v.Mj)(v.Zg.CURRENT_CONVERSATION_ID,null),[R,D]=(0,r.useState)(!1),[z,P]=(0,r.useState)(new Set),O=(0,r.useCallback)((e,t)=>{e&&P(n=>{if(t===n.has(e))return n;let o=new Set(n);return t?o.add(e):o.delete(e),o})},[]),[F,W]=(0,r.useState)(null),[L,_]=(0,r.useState)([]),[M,B]=(0,r.useState)(!1),[U,J]=(0,r.useState)(!1),[q,H]=(0,r.useState)(null),[G,Y]=(0,r.useState)(null),[V,X]=(0,r.useState)(null),[K,Z]=(0,r.useState)(!1),[$,Q]=(0,r.useState)(null),[ee,et]=(0,r.useState)(!1),[en,eo]=(0,r.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-debugger-width"));return Number.isFinite(e)&&e>0?e:0}),er=(0,r.useCallback)(e=>{e.preventDefault();let t=document.body.style.userSelect,n=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let o=e=>{eo(Math.min(Math.max(window.innerWidth-e.clientX,360),Math.round(.85*window.innerWidth)))},r=()=>{window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",r),document.body.style.userSelect=t,document.body.style.cursor=n,eo(e=>(e>0&&window.localStorage.setItem("flujo-debugger-width",String(Math.round(e))),e))};window.addEventListener("pointermove",o),window.addEventListener("pointerup",r)},[]),[ea,el]=(0,r.useState)(null),[es,ed]=(0,r.useState)([]),[ec,eu]=(0,r.useState)(null),ep=(0,r.useRef)(null),eg=(0,r.useRef)(null),ef=(0,r.useRef)(null),eh=(0,r.useRef)(-1),em=(0,r.useRef)(T);(0,r.useEffect)(()=>{em.current=T},[T]);let ex=(0,r.useRef)(null);(0,r.useEffect)(()=>{ex.current=ec},[ec]),(0,r.useEffect)(()=>{let e=window.location.origin+"/v1";ep.current=new e1.Ay({baseURL:e,apiKey:"FLUJO",dangerouslyAllowBrowser:!0,maxRetries:0,timeout:18e6})},[]),(0,r.useEffect)(()=>{(async()=>{e9.debug("Loading flows");try{let e=await eO.g.loadFlows();_(e)}catch(e){e9.error("Error loading flows:",e)}})()},[]);let ev=(0,r.useCallback)(async(e,t)=>{var o;let r=null!=(o=null==t?void 0:t.silent)&&o;e9.debug("Fetching conversation list from backend",{silent:r}),r||(b(!0),w(null));let a=[],l=!1;try{a=(await e8.listConversations()).sort((e,t)=>t.updatedAt-e.updatedAt),n(a),e9.info("Fetched ".concat(a.length," conversations for the list"))}catch(e){l=!0,e9.error("Error fetching conversation list:",e),r||(w("Failed to load conversation history."),n([]))}finally{if(r||b(!1),r||l)return;let t=void 0!==e?e:em.current,n=em.current;if(t&&a.some(e=>e.id===t))t!==n&&(e9.debug("Setting currentConversationId to ".concat(t," after fetch/operation.")),N(t));else if(a.length>0){let e=a[0].id;e!==n&&(e9.debug("Selecting most recent conversation ".concat(e," after fetch/operation.")),N(e))}else null!==n&&(e9.debug("No conversations available after fetch/operation, clearing selection."),N(null))}},[N]);(0,r.useEffect)(()=>{ev()},[]);let eb=(0,r.useCallback)(async e=>{e9.debug("Fetching detailed conversation",{conversationId:e}),I(!0),k(null),A(null);try{let t=await e8.getConversation(e);if(em.current!==e)return void e9.debug("Discarding stale detailed conversation response",{fetchedId:e,currentId:em.current});A(t),n(n=>n.map(n=>n.id===e?{...n,title:t.title,flowId:t.flowId,updatedAt:t.updatedAt}:n).sort((e,t)=>t.updatedAt-e.updatedAt)),e9.info("Fetched detailed conversation successfully",{conversationId:e})}catch(t){if(e9.error("Error fetching detailed conversation:",{conversationId:e,err:t}),em.current!==e)return;t instanceof e4&&404===t.status?(k("Conversation ".concat(e," not found.")),N(null),ev()):k("Failed to load details for conversation ".concat(e,".")),A(null)}finally{em.current===e&&I(!1)}},[ev,N]);(0,r.useEffect)(()=>{H(null),X(null),T?eb(T):(A(null),I(!1),k(null))},[T,eb]),(0,r.useEffect)(()=>{if(j){var e;B(null!=(e=j.requireApproval)&&e)}},[null==j?void 0:j.id]);let ew=(0,r.useCallback)(async e=>{if(B(e),T)try{await e8.updateConversationApproval(T,e)}catch(e){e9.warn("Failed to persist requireApproval setting",{conversationId:T,err:e})}},[T]),eS=t.find(e=>e.id===T)||null,eI=(0,r.useMemo)(()=>{var e,t;return(null==(t=L.find(e=>e.id===(null==j?void 0:j.flowId)))||null==(e=t.nodes)?void 0:e.map(e=>({id:e.id,label:e.data.label||e.id})))||[]},[L,null==j?void 0:j.flowId]),eC=(0,r.useMemo)(()=>{var e,t,n;let o=e=>!!e&&eI.some(t=>t.id===e);if(o(V))return V;if(o(null==j?void 0:j.currentNodeId))return j.currentNodeId;let r=null!=(t=null==j?void 0:j.messages)?t:[];for(let e=r.length-1;e>=0;e--){let t=r[e];if("assistant"===t.role&&o(t.processNodeId))return t.processNodeId}return null!=(n=null==(e=eI[0])?void 0:e.id)?n:null},[V,j,eI]),ek=async()=>{var e,t;e9.debug("Attempting to create new conversation"),W(null);let o=(null==(e=L[0])?void 0:e.id)||null;if(!o){e9.error("Cannot create conversation: No flows available or first flow has no ID."),W("Cannot create a new conversation: No flows available.");return}let r=(0,ey.A)(),a=Date.now(),l={id:r,title:"New Conversation",flowId:o,createdAt:a,updatedAt:a};try{e9.info("Sending request to create conversation on backend",{payload:JSON.stringify(l)});let e=await e8.createConversation(l);e9.info("Successfully created conversation on backend",{conversationId:e.id}),n(t=>[e,...t].sort((e,t)=>t.updatedAt-e.updatedAt)),N(e.id),A({id:e.id,title:e.title,flowId:e.flowId,createdAt:e.createdAt,updatedAt:e.updatedAt,messages:[]}),I(!1),k(null)}catch(n){e9.error("Error creating conversation on backend:",n);let e="Failed to create conversation on the server.";n instanceof e4?e+=" Error: ".concat((null==(t=n.body)?void 0:t.error)||n.message):n instanceof Error&&(e+=" Error: ".concat(n.message)),W(e)}},eE=(0,r.useCallback)(e=>{e9.debug("Updating detailed conversation state locally",{conversationId:e.id});let t={...e,updatedAt:Date.now()};A(t),n(e=>e.map(e=>e.id===t.id?{...e,title:t.title,updatedAt:t.updatedAt}:e).sort((e,t)=>t.updatedAt-e.updatedAt))},[]),eT=(0,r.useCallback)(()=>{ef.current&&(e9.debug("Closing execution event stream"),ef.current.close(),ef.current=null)},[]),eN=(0,r.useCallback)(e=>{if("number"==typeof e.seq){if(e.seq<=eh.current)return;eh.current=e.seq}let t=e=>el(t=>{var n,o,r,a;return{totalTokens:null!=(o=null!=(n=e.totalTokens)?n:null==t?void 0:t.totalTokens)?o:0,activeNode:void 0!==e.activeNode?e.activeNode:null!=(r=null==t?void 0:t.activeNode)?r:null,startedAt:null!=(a=null==t?void 0:t.startedAt)?a:Date.now(),lastEventAt:Date.now()}});switch(e.type){case"run:start":el({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()});break;case"message":{let n=e.message;t({}),A(t=>{let o;if(!t||t.id!==e.conversationId)return t;let r=t.messages.findIndex(e=>e.id===n.id);return r>=0?(o=[...t.messages])[r]={...o[r],...n}:o=[...t.messages,n],{...t,messages:o}});break}case"usage":el(t=>{var n,o,r;return{totalTokens:(null!=(n=null==t?void 0:t.totalTokens)?n:0)+(e.totalTokens||0),activeNode:null!=(o=null==t?void 0:t.activeNode)?o:null,startedAt:null!=(r=null==t?void 0:t.startedAt)?r:Date.now(),lastEventAt:Date.now()}});break;case"node:enter":var n,o;t({activeNode:(null==(n=e.node)?void 0:n.nodeName)||(null==(o=e.node)?void 0:o.nodeId)||null});break;case"tool:call":t({activeNode:e.name});break;case"tool:progress":t({activeNode:e.message?"".concat(e.name," — ").concat(e.message):e.name});break;case"subflow:start":t({activeNode:"↳ ".concat(e.subflowName||e.subflowId)});break;case"handoff":t({activeNode:"→ ".concat(e.toNodeId)});break;case"run:awaiting_approval":e.conversationId&&e.conversationId===em.current&&H(e.pendingToolCalls||[]);break;case"breakpoint:hit":case"run:paused":D(!1),e.conversationId&&O(e.conversationId,!1),Z(!0);break;case"run:done":el(null),D(!1),eu(null),e.conversationId&&O(e.conversationId,!1),eT(),e.conversationId&&e.conversationId===em.current?eb(e.conversationId):ev(void 0,{silent:!0});break;case"error":W(e.message||"Execution error");break;default:t({})}},[eT,eb,ev,O]),eR=(0,r.useCallback)((e,t)=>(eT(),eh.current=void 0!==t?t-1:-1,new Promise(n=>{let o=!1,r=()=>{o||(o=!0,n())};try{ef.current=e8.subscribeToEvents(e,{onEvent:eN,onOpen:r},t),setTimeout(r,1500)}catch(t){e9.error("Failed to open execution event stream",{conversationId:e,err:t}),r()}})),[eN,eT]);(0,r.useEffect)(()=>{T&&(null==eS?void 0:eS.status)==="running"&&ex.current!==T&&(e9.info("Re-attaching to in-progress run",{conversationId:T}),ex.current=T,D(!0),eu(T),O(T,!0),el(e=>null!=e?e:{totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),eR(T,0))},[T,null==eS?void 0:eS.status,eR]);let eD=async e=>{e9.debug("Attempting to delete conversation",{conversationId:e}),W(null);let o=t.filter(t=>t.id!==e);n(o);let r=T;T===e&&(o.length>0?(r=o[0].id,e9.debug("Deleted current conversation, selecting next most recent",{nextSelectionId:r})):(r=null,e9.debug("Deleted last conversation, clearing selection")),N(r));try{await e8.deleteConversation(e),e9.info("Successfully deleted conversation on backend",{conversationId:e})}catch(o){e9.error("Error deleting conversation:",{conversationId:e,err:o}),W("Failed to delete conversation ".concat(e,". Please try again.")),n(t),N(T)}},eP=async e=>{if(e9.debug("Flow selected, attempting to update",{flowId:e,currentConversationId:T}),W(null),!T){e9.warn("Cannot update flow: No conversation selected."),W("Please select a conversation first.");return}j&&j.id===T&&A({...j,flowId:e,updatedAt:Date.now()}),n(t=>t.map(t=>t.id===T?{...t,flowId:e,updatedAt:Date.now()}:t).sort((e,t)=>t.updatedAt-e.updatedAt));try{let t=await e8.updateConversationFlow(T,e);e9.info("Successfully updated flowId on backend",{conversationId:T,flowId:e}),A(e=>e&&e.id===T?(e9.debug("Confirming detailedConversation update from server response",{conversationId:T,flowId:t.flowId}),{...e,flowId:t.flowId,updatedAt:t.updatedAt}):(e9.debug("Skipping detailedConversation update, ID mismatch or null state",{currentDetailedId:null==e?void 0:e.id,targetId:T}),e)),n(e=>e.map(e=>e.id===T?t:e).sort((e,t)=>t.updatedAt-e.updatedAt))}catch(a){e9.error("Error updating flowId on backend:",{conversationId:T,flowId:e,err:a});let r="Failed to update the selected flow.";if(a instanceof e4){var o;r+=" Error: ".concat((null==(o=a.body)?void 0:o.error)||a.message)}else a instanceof Error&&(r+=" Error: ".concat(a.message));W(r),A(j),n(t)}},eW=async function(e){var t,n;let o,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!e.trim()&&0===r.length)return;if(!j){e9.error("Cannot send message, detailed conversation not loaded."),W("Cannot send message: conversation details not loaded.");return}e9.debug("Sending message",{conversationId:j.id,contentLength:e.length,attachmentsCount:r.length});let a=j.messages,l=!a.some(e=>"user"===e.role),i=j.flowId;if(V)o=V,X(null),e9.debug("Assigning manually picked node ID to user message: ".concat(o));else if(l){let e=L.find(e=>e.id===i),n=null==e||null==(t=e.nodes)?void 0:t[0];n?(o=n.id,e9.debug("Assigning start node ID to first user message: ".concat(o))):e9.warn("Could not find start node for flow ".concat(i,". User message will not have a processNodeId."))}else{for(let e=a.length-1;e>=0;e--){let t=a[e];if("assistant"===t.role&&t.processNodeId){o=t.processNodeId,e9.debug("Assigning last assistant node ID to user message: ".concat(o));break}}if(!o){let e=L.find(e=>e.id===i),t=null==e||null==(n=e.nodes)?void 0:n[0];t?(o=t.id,e9.debug("No prior assistant node ID found, falling back to start node ID: ".concat(o))):e9.warn("Could not find start node for fallback in flow ".concat(i,". User message will not have a processNodeId."))}}let s={id:(0,ey.A)(),role:"user",content:e,timestamp:Date.now(),attachments:r.length>0?r:void 0,processNodeId:o},d={...j,messages:[...j.messages,s]};eE(d),d.flowId?await eM(d):(W("Please select a flow for this conversation before sending messages"),A(j))},eL=(0,r.useCallback)((e,t)=>{if(e9.verbose("Handling API response data",JSON.stringify(e)),O(t,"running"===e.status),"paused_debug"===e.status&&e.debugState)return e9.info("API Response: Paused for debugging",{conversationId:t}),Q(e.debugState),Z(!0),et(!0),D(!1),eu(null),eT(),e_(),A(n=>(null==n?void 0:n.id)===t&&e.debugState.messages&&JSON.stringify(n.messages)!==JSON.stringify(e.debugState.messages)?(e9.debug("Updating detailed conversation messages from debug state"),{...n,messages:e.debugState.messages,updatedAt:e.debugState.updatedAt}):n),n(n=>n.map(n=>{var o,r;return n.id===t?{...n,title:null!=(o=e.debugState.title)?o:n.title,flowId:null!=(r=e.debugState.flowId)?r:n.flowId,status:"paused_debug",updatedAt:e.debugState.updatedAt}:n}).sort((e,t)=>t.updatedAt-e.updatedAt)),!0;if("completed"===e.status||"error"===e.status?(e9.info("API Response: Execution completed or errored (Status: ".concat(e.status,"). Hiding debugger panel."),{conversationId:t}),Z(!1),Q(null),et(!1)):e9.debug("API Response: Status is '".concat(e.status,"'. Debugger panel visibility unchanged (currently ").concat(K?"visible":"hidden",")."),{conversationId:t}),e.messages&&e.conversation_id===t){let n=e.messages.map((e,n)=>"number"!=typeof e.timestamp||isNaN(e.timestamp)?(e9.warn("Invalid timestamp found in message index ".concat(n," from API response. Defaulting to Date.now()."),{conversationId:t,messageId:e.id,invalidTimestamp:e.timestamp}),{...e,timestamp:Date.now()}):e);A(o=>{var r,a;let l=o;return(null==o?void 0:o.id)===t&&JSON.stringify(o.messages)!==JSON.stringify(n)&&(e9.info("API Response/Polling: Updating detailed conversation messages",{conversationId:t,newMessageCount:n.length}),l={...o,messages:n,updatedAt:e.updatedAt||o.updatedAt}),e9.debug("Polling: setDetailedConversation callback executed.",{conversationId:t,messagesChanged:l!==o,newMessageCount:null!=(a=null==l||null==(r=l.messages)?void 0:r.length)?a:"N/A"}),l})}if("awaiting_tool_approval"===e.status)e9.info("API Response/Polling: Pausing for tool approval",{conversationId:t}),H(e.pendingToolCalls||[]),D(!1),eu(null),eT(),e_();else if("completed"===e.status||"error"===e.status){if(e9.info("API Response/Polling: Stopping due to final status",{conversationId:t,status:e.status}),e_(),D(!1),eu(null),eT(),"error"===e.status){var o,r;W((null==(o=e.error)?void 0:o.message)||(null==(r=e.lastResponse)?void 0:r.error)||"Unknown error during execution"),e9.error("API Response/Polling: Execution resulted in error",{conversationId:t,error:e.error||e.lastResponse})}eb(t)}else"running"!==e.status||K?H(null):(H(null),eg.current||D(!0));return e.conversation_id===t&&n(n=>n.map(n=>{var o,r,a;return n.id===t?{...n,title:null!=(o=e.title)?o:n.title,flowId:null!=(r=e.flowId)?r:n.flowId,status:null!=(a=e.status)?a:n.status,updatedAt:e.updatedAt||n.updatedAt}:n}).sort((e,t)=>t.updatedAt-e.updatedAt)),!1},[A,H,D,W,Z,Q,n,eb,eT,O]),e_=()=>{eg.current&&(e9.debug("Stopping polling interval"),clearInterval(eg.current),eg.current=null)};(0,r.useEffect)(()=>()=>{eT()},[eT]);let eM=async e=>{if(!(null==e?void 0:e.id)||!e.flowId||!ep.current)return e9.error("Cannot send to completions: Missing conversation ID or flow ID.",{id:null==e?void 0:e.id,flowId:null==e?void 0:e.flowId}),W("Cannot send message: Missing conversation ID or flow ID."),!1;H(null),W(null),D(!0),eu(e.id),O(e.id,!0),el({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await eR(e.id);let t=!1;try{let n=await eO.g.getFlow(e.flowId);if(!n)throw Error("Flow with ID ".concat(e.flowId," not found"));e9.debug("Sending to chat completions",{flowId:e.flowId,flowName:n.name,conversationId:e.id});let o=e.messages.filter(e=>{var t;return!e.disabled&&!((null!=(t=e.depth)?t:0)>0)}).map(e=>{let t=te(e),n=e.processNodeId,o={id:e.id,timestamp:e.timestamp};return"user"===e.role?{role:"user",content:t,...o,processNodeId:n}:"assistant"===e.role?{role:"assistant",content:t,tool_calls:e.tool_calls,...o,processNodeId:n}:"system"===e.role?{role:"system",content:t,...o,processNodeId:n}:"tool"===e.role?e.tool_call_id?{role:"tool",content:t,tool_call_id:e.tool_call_id,...o,processNodeId:n}:{role:"user",content:"string"==typeof t?"Tool result: ".concat(t):t,...o,processNodeId:n}:{role:"user",content:t,...o,processNodeId:n}}),r=await ep.current.chat.completions.create({model:"flow-".concat(n.name),messages:o,stream:!1,metadata:(()=>{let t={flujo:"true",requireApproval:M?"true":void 0,flujodebug:U?"true":void 0,conversationId:e.id},n={};return t.flujo&&(n.flujo=t.flujo),t.requireApproval&&(n.requireApproval=t.requireApproval),t.flujodebug&&(n.flujodebug=t.flujodebug),t.conversationId&&(n.conversationId=t.conversationId),n})()});e9.debug("Chat completion initial response received",{completionId:r.id}),t=!0;let a={...r,status:r.status||"completed",conversation_id:e.id,messages:r.messages||e.messages,pendingToolCalls:r.pendingToolCalls,debugState:r.debugState,error:r.error,lastResponse:r.lastResponse,updatedAt:r.updatedAt||Date.now()},l=eL(a,e.id);l||eg.current?l&&e9.debug("Debug state handled, polling remains stopped."):e9.debug("Starting polling after initial non-debug response.")}catch(r){e9.error("Error calling chat completions API:",r),t=!1;let o="An error occurred while sending the message.";if(r instanceof e2.LG)o="API Error: ".concat(r.message," (Status: ").concat(r.status,")"),r.code&&(o+=" (Code: ".concat(r.code,")")),r.type&&(o+=" [Type: ".concat(r.type,"]")),e9.verbose("APIError details",JSON.stringify(r));else if(r instanceof e2.vc){o="OpenAI Error: ".concat(r.message);let e=r.error;e&&"object"==typeof e&&(e.code&&(o+=" (Code: ".concat(e.code,")")),e.type&&(o+=" [Type: ".concat(e.type,"]"))),e9.verbose("OpenAIError details",JSON.stringify(r))}else if(r instanceof e4){var n;o="Error: ".concat((null==(n=r.body)?void 0:n.error)||r.message),r.status&&(o+=" (Status: ".concat(r.status,")")),e9.verbose("ChatApiError details",JSON.stringify(r.body))}else r instanceof Error&&(o=r.message);W(o),e_(),D(!1),eu(null),O(e.id,!1),eT()}finally{}return t},eB=async(e,t,n)=>{if(!j)return;e9.debug("Editing message",{messageId:e,contentLength:t.length,processNodeId:n});let o=j.messages.findIndex(t=>t.id===e);if(-1===o)return;let r={...j.messages[o],content:t,timestamp:Date.now(),processNodeId:n||void 0},a=[...j.messages.slice(0,o),r],l={...j,messages:a};if(eE(l),l.flowId){let e={flujo:"true",requireApproval:M?"true":void 0,flujodebug:U?"true":void 0,conversationId:l.id,processNodeId:n||void 0};if(!ep.current)return;W(null),D(!0),eu(l.id),O(l.id,!0),el({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await eR(l.id);try{let t=await eO.g.getFlow(l.flowId);if(!t)throw Error("Flow with ID ".concat(l.flowId," not found"));let n=l.messages.filter(e=>{var t;return!e.disabled&&!((null!=(t=e.depth)?t:0)>0)}).map(e=>{let t=te(e),n={id:e.id,timestamp:e.timestamp,processNodeId:e.processNodeId};return"user"===e.role?{role:"user",content:t,...n}:"assistant"===e.role?{role:"assistant",content:t,tool_calls:e.tool_calls,...n}:"system"===e.role?{role:"system",content:t,...n}:"tool"===e.role?e.tool_call_id?{role:"tool",content:t,tool_call_id:e.tool_call_id,...n}:{role:"user",content:"string"==typeof t?"Tool result: ".concat(t):t,...n}:{role:"user",content:t,...n}}),o=await ep.current.chat.completions.create({model:"flow-".concat(t.name),messages:n,stream:!1,metadata:(()=>{let t={};return e.flujo&&(t.flujo=e.flujo),e.requireApproval&&(t.requireApproval=e.requireApproval),e.flujodebug&&(t.flujodebug=e.flujodebug),e.conversationId&&(t.conversationId=e.conversationId),e.processNodeId&&(t.processNodeId=e.processNodeId),t})()}),r={...o,status:o.status||"completed",conversation_id:l.id,messages:o.messages||l.messages,pendingToolCalls:o.pendingToolCalls,debugState:o.debugState,error:o.error,updatedAt:o.updatedAt||Date.now()};eL(r,l.id)}catch(e){e9.error("Error sending edited message:",e),W(e instanceof Error?e.message:"Failed to send edited message"),D(!1),eu(null),O(l.id,!1),eT()}}},eU=async(e,t)=>{if(T){e9.info("Handling tool response: ".concat(e),{conversationId:T,toolCallId:t}),H(null),D(!0),eu(T),O(T,!0),W(null),await eR(T);try{let n=await e8.respondToToolCall(T,e,t);e9.debug("Tool response successful",{conversationId:T,action:e,toolCallId:t}),eL(n,T)}catch(r){e9.error("Error sending tool response (".concat(e,")"),{conversationId:T,toolCallId:t,err:r});let o="Failed to ".concat(e," tool call.");if(r instanceof e4){var n;o+=" Error: ".concat((null==(n=r.body)?void 0:n.error)||r.message)}else r instanceof Error&&(o+=" Error: ".concat(r.message));W(o),D(!1),O(T,!1)}}},eJ=async()=>{if(T&&K){e9.info("Handling debug step request",{conversationId:T}),D(!0),eu(T),O(T,!0),W(null),await eR(T);try{let e=await e8.debugStep(T);eL(e,T)}catch(e){e9.error("Error during debug step API call",{conversationId:T,err:e}),W(e instanceof Error?e.message:"Failed to execute debug step."),D(!1),O(T,!1),Z(!1),Q(null)}finally{}}},eq=async()=>{if(T&&K){e9.info("Handling debug continue request",{conversationId:T}),D(!0),eu(T),O(T,!0),W(null),Z(!1),await eR(T);try{let e=await e8.debugContinue(T);eL(e,T)}catch(e){e9.error("Error during debug continue API call",{conversationId:T,err:e}),W(e instanceof Error?e.message:"Failed to continue execution."),D(!1),O(T,!1)}finally{}}};(0,r.useEffect)(()=>{if($){var e;ed(null!=(e=$.breakpoints)?e:[])}},[$]);let eH=(0,r.useCallback)(async e=>{if(!T)return;let t=es.includes(e)?es.filter(t=>t!==e):[...es,e];ed(t);try{await e8.setBreakpoints(T,t)}catch(e){e9.error("Failed to update breakpoints",{conversationId:T,err:e}),ed(es)}},[es,T]),eG=async()=>{if(!T||!K)return;let e=null==$?void 0:$.currentNodeId;D(!0),eu(T),O(T,!0),W(null),await eR(T);try{for(let r=0;r<50;r++){var t,n,o;let r=await e8.debugStep(T),a=null!=(o=null==r?void 0:r.status)?o:null==r||null==(t=r.debugState)?void 0:t.status,l=null==r||null==(n=r.debugState)?void 0:n.currentNodeId;if("paused_debug"!==a||l&&l!==e)return void eL(r,T)}e9.warn("Step Over hit iteration cap",{conversationId:T}),D(!1),O(T,!1)}catch(e){e9.error("Error during step over",{conversationId:T,err:e}),W(e instanceof Error?e.message:"Failed to step over."),D(!1),O(T,!1)}},eY=async()=>{if(T){e9.info("Cancelling request",{conversationId:T}),e_(),D(!1),eu(null),O(T,!1),et(!1),eT(),H(null);try{await e8.cancel(T),e9.debug("Cancel request sent successfully",{conversationId:T}),await eb(T)}catch(e){e9.error("Error sending cancel request",{conversationId:T,err:e}),W("Failed to send cancel request to the server.")}}},eV=async()=>{e9.info("Closing debugger panel",{conversationId:T}),Z(!1),Q(null),et(!1),await eY()};e9.debug("Rendering Chat component",{currentConversationId:T,isHandleEditMessageDefined:!0});let eX=(ee||K)&&!!$&&!!T;return(0,o.jsxs)(l.default,{sx:{display:"flex",height:"calc(100vh - 64px)"},children:[(0,o.jsx)(l.default,{sx:{width:300,borderRight:1,borderColor:"divider",display:"flex",flexDirection:"column"},children:a?(0,o.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",p:2},children:(0,o.jsx)(e0.default,{size:"medium",color:"primary"})}):y?(0,o.jsx)(i.A,{severity:"error",sx:{m:2},children:y}):(0,o.jsx)(E,{conversations:t,currentConversationId:T,onSelectConversation:N,onDeleteConversation:eD,onNewConversation:ek})}),(0,o.jsxs)(l.default,{sx:{flex:1,height:"100%",display:"flex",minWidth:0,minHeight:0},children:[(0,o.jsxs)(l.default,{sx:{flex:1,minWidth:0,display:"flex",flexDirection:"column",height:"100%"},children:[T&&(0,o.jsxs)(l.default,{sx:{p:2,borderBottom:1,borderColor:"divider",display:"flex",alignItems:"center",gap:2},children:[(0,o.jsx)(l.default,{sx:{flex:1,minWidth:0},children:(0,o.jsx)(eF,{selectedFlowId:(null==eS?void 0:eS.flowId)||(null==j?void 0:j.flowId)||null,onSelectFlow:e=>{var t,n,o,r;if(!T){e9.warn("Cannot update flow: No conversation selected."),W("Please select a conversation first.");return}let a=null!=(o=null!=(n=null==j?void 0:j.flowId)?n:null==eS?void 0:eS.flowId)?o:null;if((null!=(r=null==j||null==(t=j.messages)?void 0:t.length)?r:0)>0&&a&&e!==a){e9.debug("Flow switch on executed conversation — asking for confirmation",{flowId:e,currentFlowId:a}),Y(e);return}eP(e)},disabled:K})}),(0,o.jsx)(ez,{usage:null==j?void 0:j.usage,contextInfo:null==j?void 0:j.contextInfo,availableNodes:eI})]}),(0,o.jsx)(l.default,{sx:{flex:1,overflow:"auto",p:2},children:S?(0,o.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,o.jsx)(e0.default,{size:"medium",color:"primary"})}):C?(0,o.jsx)(i.A,{severity:"error",sx:{m:2},children:C}):j?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(ei,{messages:j.messages,pendingToolCalls:q,availableNodes:eI,conversationId:j.id,onToggleDisabled:e=>{if(!j)return;e9.debug("Toggling message disabled state",{messageId:e});let t=j.messages.map(t=>t.id===e?{...t,disabled:!t.disabled}:t);eE({...j,messages:t})},onSplitConversation:e=>{if(!j)return;e9.debug("Splitting conversation at message",{messageId:e});let t=j.messages.findIndex(t=>t.id===e);if(-1===t)return;let o=j.messages.slice(0,t+1),r=(0,ey.A)(),a={id:r,title:"Split from ".concat(j.title),messages:o,flowId:j.flowId,createdAt:Date.now(),updatedAt:Date.now()},l={id:r,title:a.title,flowId:a.flowId,createdAt:a.createdAt,updatedAt:a.updatedAt};n(e=>[l,...e].sort((e,t)=>t.updatedAt-e.updatedAt)),N(r),A(a),I(!1),k(null)},onEditMessage:eB,onApproveToolCall:e=>{eU("approve",e)},onRejectToolCall:e=>{eU("reject",e)}}),!R&&!K&&j.messages.length>0&&(null==eS?void 0:eS.status)==="completed"&&(0,o.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,o.jsx)(i.A,{icon:(0,o.jsx)(m.A,{fontSize:"inherit"}),severity:"success",variant:"filled",sx:{borderRadius:2,py:.5},children:"Conversation completed"})}),!R&&!K&&!F&&(null==eS?void 0:eS.status)==="error"&&(0,o.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,o.jsx)(i.A,{icon:(0,o.jsx)(x.A,{fontSize:"inherit"}),severity:"error",variant:"filled",sx:{borderRadius:2,py:.5,alignItems:"center"},action:(0,o.jsx)(s.A,{color:"inherit",size:"small",startIcon:(0,o.jsx)(h.A,{}),onClick:()=>{eM(j)},children:"Retry"}),children:"Conversation ended with an error"})}),R&&ec===T&&(0,o.jsx)(eA,{liveStats:ea,onStop:eY,stopDisabled:!T}),F&&(0,o.jsx)(i.A,{severity:"error",sx:{mt:2},action:(0,o.jsx)(s.A,{color:"inherit",size:"small",startIcon:(0,o.jsx)(h.A,{}),onClick:()=>{j&&eM(j)},children:"Retry"}),children:F})]}):(0,o.jsx)(d.default,{variant:"body1",color:"textSecondary",align:"center",sx:{mt:4},children:t.length>0?"Select a conversation or create a new one.":"Create a new conversation to start chatting."})}),(0,o.jsx)(l.default,{sx:{p:2,borderTop:1,borderColor:"divider"},children:(0,o.jsx)(ej,{onSendMessage:eW,disabled:S||!!T&&z.has(T)||!((null==j?void 0:j.flowId)||(null==eS?void 0:eS.flowId))||!!q||K,requireApproval:M,onRequireApprovalChange:ew,executeInDebugger:U,onExecuteInDebuggerChange:J,availableNodes:eI,currentNodeId:eC,nodeOverrideActive:!!V,onSelectNode:X})})]})," ",eX&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(l.default,{onPointerDown:er,sx:{width:"6px",flexShrink:0,cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":"Resize debugger panel"}),(0,o.jsx)(l.default,{sx:{width:en?"".concat(en,"px"):"50%",minWidth:360,maxWidth:"85vw",flexShrink:0,display:"flex",flexDirection:"column",height:"100%"},children:(0,o.jsx)(eQ,{debugState:$,conversationId:T,onStep:eJ,onStepOver:eG,onContinue:eq,onCancel:eY,isLoading:R,breakpoints:es,onToggleBreakpoint:eH,onClose:eV})})]})]})," ",(0,o.jsxs)(c.A,{open:!!G,onClose:()=>Y(null),children:[(0,o.jsx)(u.A,{children:"Switch flow?"}),(0,o.jsx)(p.A,{children:(0,o.jsxs)(g.A,{children:["This conversation has already been processed with its current flow."," ","If you switch to"," ",(0,o.jsx)("strong",{children:(null==(e=L.find(e=>e.id===G))?void 0:e.name)||"the selected flow"}),","," ","the conversation will continue processing from that flow's Start node again."]})}),(0,o.jsxs)(f.A,{children:[(0,o.jsx)(s.A,{onClick:()=>Y(null),children:"Cancel"}),(0,o.jsx)(s.A,{variant:"contained",onClick:()=>{Y(null),G&&eP(G)},children:"Switch Flow"})]})]})]})},tn=(0,en.h)("frontend/components/ClientOnly");function to(e){let{children:t}=e,[n,a]=(0,r.useState)(!1);return((0,r.useEffect)(()=>(tn.debug("ClientOnly component mounted"),a(!0),()=>{tn.debug("ClientOnly component unmounted")}),[]),n)?(tn.debug("ClientOnly component rendering children"),(0,o.jsx)(o.Fragment,{children:t})):(tn.debug("ClientOnly component rendering null (not yet mounted)"),null)}let tr=(0,en.h)("app/chat/page");function ta(){return tr.debug("Rendering ChatPage"),(0,o.jsx)(a.A,{maxWidth:!1,disableGutters:!0,children:(0,o.jsx)(to,{children:(0,o.jsx)(tt,{})})})}},84869:(e,t,n)=>{"use strict";n.d(t,{G:()=>l,S:()=>a});let o=(0,n(87021).h)("frontend/services/transcription/webSpeech"),r=()=>"webkitSpeechRecognition"in window||"SpeechRecognition"in window;async function a(e,t){if(!r())throw Error("Web Speech API is not supported in this browser");o.debug("Starting Web Speech API transcription");try{let n=URL.createObjectURL(e),r=new Audio(n),a=new(window.SpeechRecognition||window.webkitSpeechRecognition);return a.continuous=!0,a.interimResults=!0,(null==t?void 0:t.language)&&(a.lang=t.language),new Promise((e,n)=>{let l="";a.onresult=e=>{let n="";for(let t=e.resultIndex;t<e.results.length;t++){let o=e.results[t][0].transcript;e.results[t].isFinal?l+=o+" ":n+=o}(null==t?void 0:t.onInterimResult)&&t.onInterimResult(l+n),o.debug("Recognition interim result",{finalLength:l.length,interimLength:n.length})},a.onend=()=>{o.debug("Recognition ended",{transcriptLength:l.length}),e(l.trim())},a.onerror=e=>{o.error("Recognition error",{error:e.error}),n(Error("Speech recognition error: ".concat(e.error)))},r.onplay=()=>{a.start(),o.debug("Recognition started")},r.onended=()=>{a.stop(),o.debug("Audio playback ended")},r.onerror=e=>{o.error("Audio playback error",{error:e}),a.stop(),n(Error("Error playing audio"))},r.play().catch(e=>{o.error("Error starting audio playback",{error:e}),n(e)})})}catch(e){throw o.error("Error in Web Speech API transcription",{error:e}),e}}function l(){return{supported:r(),message:r()?"Web Speech API is supported":"Web Speech API is not supported in this browser"}}},87021:(e,t,n)=>{"use strict";n.d(t,{h:()=>s});let o={LOG_LEVEL:3},r={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},a="number"==typeof o.LOG_LEVEL?o.LOG_LEVEL:r.ERROR;function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(t>6)return String(e);if(!(e instanceof Error))return e;let n={name:e.name,message:e.message};for(let o of Object.getOwnPropertyNames(e)){if("name"===o||"message"===o)continue;let r=e[o];"function"!=typeof r&&("stack"===o?n.stack=r:"cause"===o?n.cause=l(r,t+1):"errors"===o&&Array.isArray(r)?n.errors=r.map(e=>l(e,t+1)):n[o]=r)}return n}function i(e,t,n,o,i){if(e>=("number"==typeof i?i:a)){if("function"==typeof o)try{o=o()}catch(e){o="[lazy log data threw]"}let a=new Date().toISOString(),i="[".concat(a,"] [").concat(t,"]"),s="".concat(i," ").concat(n);if(void 0!==o)if(o instanceof Error||"object"==typeof o)try{let e=o instanceof Error?l(o):o,t=JSON.stringify(e,(e,t)=>t instanceof Error?l(t):t,2);s+=":\n".concat(t)}catch(e){s+=": [Object cannot be stringified]"}else s+=": ".concat(o);switch(e){case r.VERBOSE:console.debug("[VERBOSE] ".concat(s));break;case r.DEBUG:console.debug(s);break;case r.INFO:console.info(s);break;case r.WARN:console.warn(s);break;case r.ERROR:console.error(s);break;default:console.log(s)}}}function s(e,t){let n,o=((n=e.replace(/^src\//,"")).startsWith("/")&&(n=n.substring(1)),n);return{verbose:(e,n)=>{i(r.VERBOSE,o,e,n,t)},debug:(e,n)=>{i(r.DEBUG,o,e,n,t)},info:(e,n)=>{i(r.INFO,o,e,n,t)},warn:(e,n)=>{i(r.WARN,o,e,n,t)},error:(e,n)=>{i(r.ERROR,o,e,n,t)}}}},94929:(e,t,n)=>{"use strict";n.d(t,{default:()=>l});var o=n(95155);n(12115);var r=n(94049),a=n(4474);let l=e=>{let{size:t="medium",color:n="primary",className:l="",sx:i={}}=e,s="white"===n?{color:"#fff",...i}:i;return(0,o.jsxs)(r.default,{component:"span",sx:{display:"inline-block",lineHeight:0,...s},className:l,role:"status",children:[(0,o.jsx)(a.default,{size:{small:16,medium:24,large:36}[t],color:"white"===n?"inherit":n,"aria-hidden":"true"}),(0,o.jsx)(r.default,{component:"span",sx:{position:"absolute",width:"1px",height:"1px",padding:0,margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:0},children:"Loading..."})]})}},97206:(e,t,n)=>{Promise.resolve().then(n.bind(n,67421))}},e=>{e.O(0,[3862,2678,4754,9244,8548,690,9562,2003,488,3272,5648,7396,7329,3750,1424,2005,7126,5961,6134,9164,8862,8441,1255,7358],()=>e(e.s=97206)),_N_E=e.O()}]);