flujo-ai 3.23.0 → 3.24.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 (258) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +47 -44
  3. package/.next/app-path-routes-manifest.json +7 -7
  4. package/.next/build-manifest.json +4 -4
  5. package/.next/routes-manifest.json +19 -1
  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/approvals/[id]/route.js +1 -1
  10. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  11. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/approvals/route.js +1 -1
  13. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  14. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  16. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/bugs/enhance/route.js +1 -1
  19. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  20. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/encryption/secure/route.js +1 -1
  23. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  24. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/env/route.js +1 -1
  26. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  28. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/flow/compile/route.js +1 -1
  30. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  31. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/flow/generate/route.js +1 -1
  33. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  34. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/flow/improve/route.js +1 -1
  36. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  37. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/flow/prompt-renderer/route.js +1 -1
  39. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  40. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  42. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  43. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/flow/repair/route.js +1 -1
  45. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  46. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  48. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/init/route.js +1 -1
  51. package/.next/server/app/api/init/route.js.nft.json +1 -1
  52. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/mcp/cancel/route.js +1 -1
  57. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  58. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  60. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  61. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  63. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  64. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  66. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  67. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  69. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  70. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  72. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  73. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  75. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  76. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  78. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  79. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  81. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  82. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/mcp/servers/route.js +1 -1
  84. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  85. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  87. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  88. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  90. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  91. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/mcp-registry/route.js +1 -1
  93. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  94. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/model/[id]/route.js +1 -1
  97. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  98. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/model/provider/route.js +1 -1
  100. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  101. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/model/route.js +1 -1
  103. package/.next/server/app/api/model/route.js.nft.json +1 -1
  104. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/model/test/route.js +1 -1
  106. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  107. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/oauth/reset/route.js +1 -1
  111. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  112. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  114. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  116. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  118. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  121. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  122. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/planned-executions/route.js +1 -1
  124. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  125. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  127. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/runs/active/route.js +1 -1
  129. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  130. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/waves/route.js +1 -1
  134. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  135. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  137. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  138. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/chat/page.js +8 -8
  140. package/.next/server/app/chat/page.js.nft.json +1 -1
  141. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  142. package/.next/server/app/chat.html +1 -1
  143. package/.next/server/app/chat.rsc +2 -2
  144. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  145. package/.next/server/app/docs.html +1 -1
  146. package/.next/server/app/docs.rsc +1 -1
  147. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  148. package/.next/server/app/executions.html +1 -1
  149. package/.next/server/app/executions.rsc +1 -1
  150. package/.next/server/app/flows/page.js +1 -1
  151. package/.next/server/app/flows/page.js.nft.json +1 -1
  152. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  153. package/.next/server/app/flows.html +1 -1
  154. package/.next/server/app/flows.rsc +2 -2
  155. package/.next/server/app/index.html +1 -1
  156. package/.next/server/app/index.rsc +1 -1
  157. package/.next/server/app/mcp/page.js +2 -2
  158. package/.next/server/app/mcp/page.js.nft.json +1 -1
  159. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  160. package/.next/server/app/mcp-flows/route.js +1 -1
  161. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  162. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  164. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  165. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/mcp.html +1 -1
  167. package/.next/server/app/mcp.rsc +2 -2
  168. package/.next/server/app/models/page.js +1 -1
  169. package/.next/server/app/models/page.js.nft.json +1 -1
  170. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  171. package/.next/server/app/page_client-reference-manifest.js +1 -1
  172. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  173. package/.next/server/app/settings.html +1 -1
  174. package/.next/server/app/settings.rsc +1 -1
  175. package/.next/server/app/v1/chat/completions/route.js +1 -1
  176. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  177. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  179. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  180. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  182. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  183. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  185. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  186. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  188. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  189. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  191. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  192. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +1 -1
  194. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  195. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  198. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  199. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  201. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  202. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  204. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  205. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/v1/models/route.js +1 -1
  207. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  208. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  210. package/.next/server/app/waves.html +1 -1
  211. package/.next/server/app/waves.rsc +1 -1
  212. package/.next/server/app-paths-manifest.json +7 -7
  213. package/.next/server/chunks/{1556.js → 2998.js} +1 -1
  214. package/.next/server/chunks/3291.js +1 -0
  215. package/.next/server/chunks/3823.js +5 -4
  216. package/.next/server/chunks/4545.js +17 -0
  217. package/.next/server/chunks/4561.js +5 -4
  218. package/.next/server/chunks/4771.js +2 -2
  219. package/.next/server/chunks/701.js +1 -1
  220. package/.next/server/chunks/7362.js +4 -4
  221. package/.next/server/chunks/7506.js +1 -1
  222. package/.next/server/chunks/7723.js +1 -0
  223. package/.next/server/chunks/7821.js +1 -1
  224. package/.next/server/chunks/8652.js +1 -1
  225. package/.next/server/edge-instrumentation.js +2 -0
  226. package/.next/server/edge-instrumentation.js.map +1 -0
  227. package/.next/server/edge-runtime-webpack.js +2 -0
  228. package/.next/server/edge-runtime-webpack.js.map +1 -0
  229. package/.next/server/functions-config-manifest.json +2 -2
  230. package/.next/server/middleware-build-manifest.js +1 -1
  231. package/.next/server/middleware-manifest.json +33 -2
  232. package/.next/server/pages/404.html +1 -1
  233. package/.next/server/pages/500.html +1 -1
  234. package/.next/server/server-reference-manifest.js +1 -1
  235. package/.next/server/server-reference-manifest.json +1 -1
  236. package/.next/server/src/middleware.js +14 -0
  237. package/.next/server/src/middleware.js.map +1 -0
  238. package/.next/static/chunks/3454-a8db9caba457e5fa.js +1 -0
  239. package/.next/static/chunks/3730-149f2f058529f75f.js +1 -0
  240. package/.next/static/chunks/4749-f8796d16ff604d54.js +1 -0
  241. package/.next/static/chunks/{6730-c330b55cd0fe4f47.js → 6257-ee5d8d88050d7705.js} +1 -1
  242. package/.next/static/chunks/{9181-8d8ecd3f641b7209.js → 8611-f6d51119761d52ff.js} +3 -3
  243. package/.next/static/chunks/app/chat/page-6a5b5f9ea2542fb3.js +1 -0
  244. package/.next/static/chunks/app/flows/{page-1844e86dd43fa285.js → page-fbce5abe34500f28.js} +1 -1
  245. package/.next/static/chunks/app/mcp/{page-b6866f49f76a6801.js → page-8666173926cabf31.js} +1 -1
  246. package/.next/static/chunks/app/models/{page-5a13ea6ff5ac1b9c.js → page-18dbd8e01cf87e98.js} +1 -1
  247. package/.next/static/chunks/{main-be8e823624954fab.js → main-9bda5041078d2b6a.js} +1 -1
  248. package/.next/trace +8 -8
  249. package/README.md +1 -1
  250. package/next.config.mjs +139 -119
  251. package/package.json +1 -1
  252. package/.next/server/chunks/264.js +0 -17
  253. package/.next/server/chunks/8357.js +0 -1
  254. package/.next/static/chunks/5545-2ab6e5d749e103cd.js +0 -1
  255. package/.next/static/chunks/6920-a83ad5c0d5a54cf3.js +0 -1
  256. package/.next/static/chunks/app/chat/page-ea6752144d35c892.js +0 -1
  257. /package/.next/static/{WRUzIBdypUJvv0xAct8qc → eUM7C1boixGI469h5wtIk}/_buildManifest.js +0 -0
  258. /package/.next/static/{WRUzIBdypUJvv0xAct8qc → eUM7C1boixGI469h5wtIk}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8457],{62560:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>tX});var r=n(95155),o=n(12115),a=n(97322),l=n(94049),s=n(78470),i=n(41983),d=n(22003),c=n(9562),u=n(25635),p=n(28548),f=n(91871),h=n(3339),m=n(67895),x=n(2778),g=n(52363),v=n(65036),b=n(50001),y=n(75912),j=n(22719),w=n(11096),A=n(76530),S=n(36741),I=n(60691),C=n(47419),k=n(78410),E=n(14915),N=n(29692),T=n(21067),R=n(41602),z=n(23820),D=n(17681),P=n(73707),F=n(4484),_=n(86946),M=n(19219);let O=e=>{let{conversations:t,currentConversationId:n,onSelectConversation:o,onDeleteConversation:a,onStopConversation:d,onNewConversation:c,onQuickChat:p,onCollapse:h}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(l.default,{sx:{p:2,display:"flex",justifyContent:"space-between",alignItems:"center",gap:1},children:[h&&(0,r.jsx)(s.A,{title:"Hide sidebar",children:(0,r.jsx)(i.A,{size:"small",onClick:h,"aria-label":"Hide conversation sidebar",children:(0,r.jsx)(M.A,{})})}),(0,r.jsx)(u.default,{variant:"h6",sx:{flex:1},noWrap:!0,children:"Conversations"}),p&&(0,r.jsx)(s.A,{title:"Quick Chat: a model + optional MCP servers, no saved flow",children:(0,r.jsx)(f.A,{variant:"outlined",color:"primary",startIcon:(0,r.jsx)(w.A,{}),onClick:p,size:"small",children:"Quick"})}),(0,r.jsx)(f.A,{variant:"contained",color:"primary",startIcon:(0,r.jsx)(_.A,{}),onClick:c,size:"small",children:"New"})]}),(0,r.jsx)(T.A,{}),(0,r.jsx)(R.A,{sx:{overflow:"auto",flex:1},children:0===t.length?(0,r.jsx)(z.Ay,{children:(0,r.jsx)(D.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=>{let t=!!d&&("running"===e.status||"awaiting_tool_approval"===e.status);return(0,r.jsx)(z.Ay,{disablePadding:!0,secondaryAction:(0,r.jsxs)(r.Fragment,{children:[t&&(0,r.jsx)(s.A,{title:"Stop this run",children:(0,r.jsx)(i.A,{edge:"end","aria-label":"stop run",onClick:t=>{t.stopPropagation(),d(e.id)},children:(0,r.jsx)(C.A,{color:"error"})})}),(0,r.jsx)(i.A,{edge:"end","aria-label":"delete",onClick:t=>{t.stopPropagation(),a(e.id)},children:(0,r.jsx)(F.A,{})})]}),sx:{opacity:e.id===n?1:.7},children:(0,r.jsx)(P.A,{selected:e.id===n,onClick:()=>o(e.id),sx:{pr:t?12:7},children:(0,r.jsx)(D.A,{primary:(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[e.status&&(0,r.jsx)(s.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,r.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,r.jsx)(s.A,{title:e.title,enterDelay:500,children:(0,r.jsx)(u.default,{component:"span",fontWeight:e.id===n?"bold":"normal",sx:{display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",wordBreak:"break-word"},children:e.title})})]}),secondary:new Date(e.updatedAt).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})})},e.id)})})]})};var W=n(4474),L=n(50430),H=n(99944),B=n(9957),q=n(2300),U=n(52641),J=n(51221),Y=n(55606),G=n(86973),Q=n(98267),K=n(20537),V=n(37960),X=n(36314),$=n(49501),Z=n(6504),ee=n(22133),et=n(11665),en=n(97516),er=n(91861),eo=n(53612),ea=n(3014),el=n(63186),es=n(70863),ei=n(67891),ed=n(12121),ec=n(63992),eu=n(59637),ep=n(30949),ef=n(1877),eh=n(18466);function em(e){return!!e&&(e.startsWith(eh.n9)||"handoff"===e)}var ex=n(26188),eg=n(38952),ev=n(62962),eb=n(17897),ey=n(81029).hp,ej=n(87021);let ew=(0,ej.h)("frontend/components/Chat/McpAppFrame"),eA=e=>{let{serverName:t,uri:n}=e,[a,i]=(0,o.useState)(!1),[c,p]=(0,o.useState)(!1),[h,m]=(0,o.useState)(null),[x,g]=(0,o.useState)(null),v=(0,o.useCallback)(async()=>{p(!0),m(null);try{let e=await eb.S.readResource(t,n);if(!e||!1===e.success)return void m((null==e?void 0:e.error)||"Failed to read the UI resource.");let r=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2097152,r=null==e?void 0:e.contents;if(!Array.isArray(r)||0===r.length)return{error:"Resource has no contents"};let o=r.find(e=>(function(e){if("string"!=typeof e)return!1;let t=e.toLowerCase().replace(/\s+/g,"");return t.startsWith("text/html")&&t.includes("profile=mcp-app")})(e.mimeType)&&"string"==typeof e.text)||r.find(e=>"string"==typeof e.text);if(!o||"string"!=typeof o.text)return{error:"Resource has no HTML text body"};if((void 0!==ey?ey.byteLength(o.text,"utf8"):new TextEncoder().encode(o.text).length)>n)return{error:"Resource exceeds the ".concat(Math.round(n/1024)," KiB size cap")};let a=null==(t=o._meta)?void 0:t.ui;return{html:o.text,meta:a}}(e.data);if("error"in r)return void m(r.error);g(function(e,t){let n='<meta http-equiv="Content-Security-Policy" content="'.concat(function(e){let t=e=>(e||[]).map(e=>"string"==typeof e?e.trim():"").filter(e=>""!==e&&"string"==typeof e&&("'self'"===e||"'none'"===e||!(/[^\x21-\x7e]/.test(e)||/[;,'"`$<>\\()]/.test(e))&&/^(?:https|wss):\/\/(?:\*\.)?(?:[a-z0-9-]+\.)*[a-z0-9-]+(?::\d{1,5})?$/i.test(e))).join(" "),n=t(null==e?void 0:e.connectDomains),r=t(null==e?void 0:e.resourceDomains),o=t(null==e?void 0:e.frameDomains),a=t(null==e?void 0:e.baseUriDomains);return["default-src 'none'","script-src 'unsafe-inline'".concat(r?" ".concat(r):""),"style-src 'unsafe-inline'".concat(r?" ".concat(r):""),"img-src data: blob:".concat(r?" ".concat(r):""),"font-src".concat(r?" ".concat(r):" 'none'"),"media-src data: blob:".concat(r?" ".concat(r):""),"connect-src".concat(n?" ".concat(n):" 'none'"),"frame-src".concat(o?" ".concat(o):" 'none'"),"base-uri".concat(a?" ".concat(a):" 'none'"),"form-action 'none'"].join("; ")}(t),'">');return/<head[\s>]/i.test(e)?e.replace(/<head([^>]*)>/i,(e,t)=>"<head".concat(t,">").concat(n)):'<!DOCTYPE html><html><head><meta charset="utf-8">'.concat(n,"</head><body>").concat(e,"</body></html>")}(r.html,r.meta))}catch(e){ew.warn("Failed to load MCP App resource ".concat(n," from ").concat(t),e),m(e instanceof Error?e.message:"Failed to load the UI resource.")}finally{p(!1)}},[t,n]),b=(0,o.useCallback)(()=>{let e=!a;i(e),e&&null===x&&!c&&v()},[a,x,c,v]);return(0,r.jsxs)(l.default,{sx:{mt:1,border:"1px solid",borderColor:"divider",borderRadius:1,overflow:"hidden"},children:[(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.5,bgcolor:"action.hover"},children:[(0,r.jsx)(ex.A,{fontSize:"small",color:"primary"}),(0,r.jsxs)(u.default,{variant:"body2",sx:{fontWeight:500},children:["Interactive app from ",t]}),(0,r.jsx)(s.A,{title:"Rendered read-only in a strict sandbox (no same-origin access, no network unless the app declares it). The app cannot call tools in this view.",children:(0,r.jsx)(eg.A,{fontSize:"small",color:"action"})}),(0,r.jsx)(f.A,{size:"small",onClick:b,startIcon:a?(0,r.jsx)(ev.A,{}):(0,r.jsx)(el.A,{}),sx:{ml:"auto"},children:a?"Hide":"Open app"})]}),(0,r.jsx)(L.A,{in:a,unmountOnExit:!0,children:(0,r.jsxs)(l.default,{sx:{p:1},children:[c&&(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,r.jsx)(W.default,{size:16,thickness:6}),(0,r.jsx)(u.default,{variant:"body2",color:"text.secondary",children:"Loading the app…"})]}),h&&(0,r.jsx)(d.A,{severity:"error",sx:{my:1},children:h}),!c&&!h&&null!==x&&(0,r.jsx)(l.default,{component:"iframe",title:"MCP App: ".concat(n),srcDoc:x,sandbox:"allow-scripts",referrerPolicy:"no-referrer",sx:{width:"100%",height:420,border:"none",borderRadius:1,bgcolor:"#fff"}})]})})]})},eS=(0,ej.h)("frontend/components/Chat/ChatMessages");function eI(e){return"assistant"===e.role&&"tool_calls"in e&&Array.isArray(e.tool_calls)}function eC(e){if("tool"!==e.role||"string"!=typeof e.content)return!1;try{var t;return(null==(t=JSON.parse(e.content))?void 0:t.handoff)===!0}catch(e){return!1}}let ek={p:e=>(0,r.jsx)(u.default,{variant:"body1",sx:{mb:.5,whiteSpace:"pre-line"},children:e.children}),h1:e=>(0,r.jsx)(u.default,{variant:"h5",sx:{mt:2,mb:.5},children:e.children}),h2:e=>(0,r.jsx)(u.default,{variant:"h6",sx:{mt:2,mb:.5},children:e.children}),h3:e=>(0,r.jsx)(u.default,{variant:"subtitle1",sx:{mt:1.5,mb:.5},children:e.children}),h4:e=>(0,r.jsx)(u.default,{variant:"subtitle2",sx:{mt:1.5,mb:.5},children:e.children}),h5:e=>(0,r.jsx)(u.default,{variant:"body1",sx:{mt:1,mb:.5,fontWeight:"bold"},children:e.children}),h6:e=>(0,r.jsx)(u.default,{variant:"body2",sx:{mt:1,mb:.5,fontWeight:"bold"},children:e.children}),ul:e=>(0,r.jsx)(l.default,{component:"ul",sx:{pl:2,mb:1},children:e.children}),ol:e=>(0,r.jsx)(l.default,{component:"ol",sx:{pl:2,mb:1},children:e.children}),li:e=>(0,r.jsx)(l.default,{component:"li",sx:{mb:.5,whiteSpace:"pre-line"},children:e.children}),a:e=>(0,r.jsx)(u.default,{component:"a",sx:{color:"primary.main"},href:e.href,children:e.children}),blockquote:e=>(0,r.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:o,...a}=e;return/language-(\w+)/.exec(n||"")||n?(0,r.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:o}):(0,r.jsx)(u.default,{component:"code",sx:{bgcolor:"action.hover",px:.5,py:.25,borderRadius:"4px",fontFamily:"monospace",wordBreak:"break-all"},children:o})}},eE=e=>{let{content:t,showRaw:n}=e;return n?(0,r.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 t?t:"[Invalid tool content]"}):"string"!=typeof t?(0,r.jsx)(u.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:"[Invalid tool content]"}):(0,r.jsx)(l.default,{sx:{width:"100%",minWidth:0},children:(()=>{try{let e=JSON.parse(t);if(e&&Array.isArray(e.content))return(0,r.jsx)(l.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:e.content.map((e,t)=>"text"===e.type?(0,r.jsx)(Z.oz,{remarkPlugins:[ee.A],children:e.text},t):"image"===e.type&&e.data&&e.mimeType?(0,r.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,r.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,r.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,r.jsx)(Z.oz,{remarkPlugins:[ee.A],children:"```json\n".concat(JSON.stringify(e,null,2),"\n```")})}catch(e){return(0,r.jsx)(Z.oz,{remarkPlugins:[ee.A],children:t})}})()})},eN=e=>{let{pairs:t,messageId:n}=e,[a,i]=(0,o.useState)(null),[d,c]=(0,o.useState)({}),f=(e,t)=>e.toolCall.id||"tc-".concat(n,"-").concat(t);return(0,r.jsxs)(l.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",color:"primary.main",mb:1},children:[(0,r.jsx)(es.A,{fontSize:"small",sx:{mr:1}}),(0,r.jsx)(u.default,{variant:"body2",children:1===t.length?"The assistant used a tool":"The assistant used ".concat(t.length," tools")})]}),(0,r.jsx)(l.default,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:.5},children:t.map((e,t)=>{let n=f(e,t),d=function(e){if(!e)return"pending";if("string"==typeof e.content)try{let t=JSON.parse(e.content);if(t&&(!0===t.isError||null!=t.error))return"error"}catch(e){}return"done"}(e.result),c=a===n;return(0,r.jsxs)(o.Fragment,{children:[t>0&&(0,r.jsx)(l.default,{sx:{width:14,height:"2px",bgcolor:"divider",flexShrink:0}}),(0,r.jsx)(s.A,{title:c?"Hide call & result":"Show call & result",children:(0,r.jsx)(p.A,{icon:function(e){return"pending"===e?(0,r.jsx)(W.default,{size:14,thickness:6}):"error"===e?(0,r.jsx)(I.A,{fontSize:"small"}):(0,r.jsx)(ed.A,{fontSize:"small"})}(d),label:(0,ef.yo)(e.toolCall.function.name),size:"small",clickable:!0,variant:c?"filled":"outlined",color:"error"===d?"error":"pending"===d?"default":"primary",onClick:()=>i(c?null:n),sx:{maxWidth:"100%"}})})]},n)})}),t.map((e,t)=>{var n,o;let s=f(e,t),i=e.toolCall.function.arguments;try{i=JSON.stringify(JSON.parse(e.toolCall.function.arguments),null,2)}catch(e){}let h=!!d[s];return(0,r.jsx)(L.A,{in:a===s,unmountOnExit:!0,children:(0,r.jsxs)(l.default,{sx:{mt:1,p:1,borderRadius:1,bgcolor:"rgba(0, 0, 0, 0.03)"},children:[(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,r.jsx)(es.A,{fontSize:"small",sx:{mr:.5,color:"primary.main"}}),(0,r.jsx)(u.default,{variant:"caption",sx:{fontWeight:"bold"},children:"Parameters"}),(0,r.jsx)(p.A,{label:"ID: ".concat(e.toolCall.id?e.toolCall.id.substring(0,8):"N/A","..."),size:"small",color:"default",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}})]}),(0,r.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:i}),(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",mt:1,mb:.5},children:[(0,r.jsx)(ei.A,{fontSize:"small",sx:{mr:.5,color:"text.secondary"}}),(0,r.jsx)(u.default,{variant:"caption",sx:{fontWeight:"bold"},children:"Result"}),e.result&&(0,r.jsx)(H.A,{control:(0,r.jsx)(B.A,{size:"small",checked:h,onChange:e=>c(t=>({...t,[s]:e.target.checked}))}),label:"Raw",sx:{ml:"auto",mr:0,"& .MuiTypography-root":{fontSize:"0.75rem"}}})]}),e.result?(0,r.jsx)(eE,{content:e.result.content,showRaw:h}):(0,r.jsxs)(u.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",sx:{display:"flex",alignItems:"center",gap:1},children:[(0,r.jsx)(W.default,{size:14,thickness:6})," Waiting for the tool to respond…"]}),(null==(o=e.result)||null==(n=o.ui)?void 0:n.uri)&&e.result.ui.serverName&&(0,r.jsx)(eA,{serverName:e.result.ui.serverName,uri:e.result.ui.uri})]})},s)})]})},eT=o.memo(function(e){var t,n;let o,{message:a,nodeLabel:d,availableNodes:c,showRaw:h,toolCallPairs:m,hoistedHandoffs:x,edit:g,onMenuOpen:v,onToggleRaw:b,onEditContentChange:y,onEditNodeChange:j,onSaveEdit:w,onCancelEdit:A}=e,S=null!=(t=a.depth)?t:0;return(0,r.jsxs)(l.default,{sx:{display:"flex",flexDirection:"column",alignItems:"user"===a.role?"flex-end":"flex-start",opacity:a.disabled?.5:1,...S>0&&{pl:3*S,borderLeft:"2px solid",borderColor:"divider",ml:1}},children:[(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,r.jsxs)(u.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)?(eS.warn("formatTime received invalid timestamp:",n),"Invalid Date"):new Date(n).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"})]}),a.processNodeId&&(0,r.jsx)(s.A,{title:"".concat(d?"".concat(d," — "):"","Process Node ID: ").concat(a.processNodeId),children:(0,r.jsx)(p.A,{label:"Node: ".concat(d||"".concat(a.processNodeId.substring(0,6),"...")),size:"small",color:"primary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),S>0&&(0,r.jsx)(s.A,{title:"Nested subflow step (depth ".concat(S,")"),children:(0,r.jsx)(p.A,{label:"Subflow step",size:"small",color:"secondary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),a.disabled&&(0,r.jsx)(p.A,{label:"Disabled",size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem"}}),a.usage&&(0,r.jsx)(s.A,{title:"".concat(a.usage.promptTokens.toLocaleString()," prompt + ").concat(a.usage.completionTokens.toLocaleString()," completion tokens (provider-reported)"),children:(0,r.jsx)(p.A,{label:"".concat((o=a.usage.totalTokens)>=1e3?"".concat((o/1e3).toFixed(o>=1e5?0:1),"k"):"".concat(o)," tok"),size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),(0,r.jsx)(i.A,{size:"small",onClick:e=>v(e,a.id),sx:{ml:1},children:(0,r.jsx)(et.A,{fontSize:"small"})})]}),(0,r.jsxs)(q.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:[g?(0,r.jsxs)(l.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:[(0,r.jsx)("textarea",{value:g.content,onChange:e=>y(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,r.jsxs)(U.A,{fullWidth:!0,size:"small",sx:{mt:1},children:[(0,r.jsx)(J.A,{id:"node-id-select-label",children:"Process Node"}),(0,r.jsx)(Y.A,{labelId:"node-id-select-label",id:"node-id-select",value:g.nodeId||(c.length>0?c[0].id:""),label:"Process Node",onChange:e=>j(e.target.value),children:c.map(e=>(0,r.jsx)(G.A,{value:e.id,children:e.label||e.id.substring(0,8)},e.id))})]}),(0,r.jsxs)(l.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:1},children:[(0,r.jsx)(f.A,{variant:"outlined",size:"small",onClick:A,children:"Cancel"}),(0,r.jsx)(f.A,{variant:"contained",size:"small",onClick:w,children:"Save"})]})]}):(0,r.jsxs)(r.Fragment,{children:["tool"!==a.role&&"string"==typeof a.content&&(0,r.jsx)(Z.oz,{remarkPlugins:[ee.A],components:ek,children:a.content}),"tool"!==a.role&&Array.isArray(a.content)&&(0,r.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,r.jsx)(Z.oz,{remarkPlugins:[ee.A],children:e.text},t):(null==e?void 0:e.type)==="image_url"&&(null==(n=e.image_url)?void 0:n.url)?(0,r.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)&&!eI(a)&&(0,r.jsx)(u.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:"[No text content]"})]}),(()=>{let e=[...eI(a)?a.tool_calls.filter(e=>{var t;return!!(t=e.function.name)&&(t.startsWith(eh.n9)||"handoff"===t)}):[],...null!=x?x:[]];return(0,r.jsx)(l.default,{sx:{mt:1,display:"flex",flexWrap:"wrap",gap:.5},children:e.map((e,t)=>(0,r.jsx)(p.A,{size:"small",variant:"outlined",color:"secondary",icon:(0,r.jsx)(ep.A,{fontSize:"small"}),label:"Handoff → ".concat(function(e,t){let n=e.startsWith(eh.n9)?e.slice(eh.n9.length):e,r=n.replace(/_\d+$/,""),o=t.find(e=>{let t=(0,eh.RN)(e.label);return t===n||t===r});return(null==o?void 0:o.label)?o.label:r.split("_").filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")||"target node"}(e.function.name,c)),sx:{maxWidth:"100%",fontWeight:500}},e.id||"handoff-".concat(a.id,"-").concat(t)))})})(),m&&m.length>0&&(0,r.jsx)(eN,{pairs:m,messageId:a.id}),"tool"===a.role&&a.tool_call_id&&!eC(a)&&(0,r.jsxs)(l.default,{children:[(0,r.jsxs)(u.default,{variant:"body2",sx:{display:"flex",alignItems:"center",color:"text.secondary",mb:1},children:[(0,r.jsx)(ei.A,{fontSize:"small",sx:{mr:1}}),"The tool responded to the assistant"]}),(0,r.jsxs)(Q.A,{defaultExpanded:!1,sx:{mb:.5,"&:before":{display:"none"},boxShadow:"none",bgcolor:"rgba(0, 0, 0, 0.02)"},children:[(0,r.jsx)(K.A,{expandIcon:(0,r.jsx)(el.A,{}),children:(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center"},children:[(0,r.jsx)(ei.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,r.jsx)(u.default,{variant:"subtitle2",children:"Tool Result"}),(0,r.jsx)(p.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,r.jsx)(H.A,{control:(0,r.jsx)(B.A,{size:"small",checked:h,onChange:e=>b(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,r.jsx)(V.A,{sx:{pt:0,pb:1,overflow:"hidden"},children:(0,r.jsx)(eE,{content:a.content,showRaw:h})})]})]}),a.attachments&&a.attachments.length>0&&(0,r.jsxs)(l.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,r.jsx)(u.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:.5},children:"Attachments:"}),a.attachments.map(e=>"image"===e.type?(0,r.jsx)(l.default,{sx:{mb:.5},children:(0,r.jsx)("img",{src:e.content,alt:e.originalName||"image attachment",style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}})},e.id):(0,r.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,r.jsx)(eo.A,{fontSize:"small",sx:{mr:1}}):(0,r.jsx)(ea.A,{fontSize:"small",sx:{mr:1}}),(0,r.jsx)(u.default,{variant:"caption",sx:{wordBreak:"break-all"},children:e.originalName||"".concat(e.type," attachment")})]},e.id))]})]})]})}),eR=e=>{let{messages:t,pendingToolCalls:n,availableNodes:a=[],conversationId:s,onToggleDisabled:i,onSplitConversation:d,onEditMessage:c,onApproveToolCall:h,onRejectToolCall:m}=e,[x,g]=(0,o.useState)(50);(0,o.useEffect)(()=>{g(50)},[s]);let v=Math.max(0,(Array.isArray(t)?t.length:0)-x),b=(0,o.useMemo)(()=>Array.isArray(t)?v>0?t.slice(v):t:[],[t,v]),{pairsByAnchorId:y,handoffsByAnchorId:j,consumedToolCallIds:w,groups:A}=(0,o.useMemo)(()=>(function(e){let t=new Map,n=new Map,r=new Set,o=new Set,a=new Map,l=[];if(!Array.isArray(e))return{pairsByAnchorId:t,handoffsByAnchorId:n,hoistedAssistantIds:r,consumedToolCallIds:o,groups:l};let s=new Map;for(let t of e)"tool"===t.role&&"string"==typeof t.tool_call_id&&t.tool_call_id&&!s.has(t.tool_call_id)&&s.set(t.tool_call_id,t);let i=e=>{let r=a.get(e);return r||(r={anchorId:e,memberIds:[e],hoistedIds:[]},a.set(e,r),l.push(r),t.set(e,[]),n.set(e,[])),r},d=null;for(let a of e){if("user"===a.role||"system"===a.role){d=null;continue}if("assistant"!==a.role)continue;let e=Array.isArray(a.tool_calls)?a.tool_calls:[],l=[],u=[];for(let t of e){var c;if("function"!==t.type)continue;if(em(null==(c=t.function)?void 0:c.name)){u.push(t);continue}let e=t.id,n=e?s.get(e):void 0;e&&o.add(e),l.push({toolCall:t,result:n})}let p=function(e){let t=e.content;return"string"==typeof t?t.trim().length>0:!!Array.isArray(t)&&t.some(e=>{var t,n;return!!e&&"object"==typeof e&&("text"===e.type?"string"==typeof e.text&&e.text.trim().length>0:"image_url"===e.type?!!(null==(t=e.image_url)?void 0:t.url):"input_audio"===e.type&&!!(null==(n=e.input_audio)?void 0:n.data))})}(a),f=l.length>0||u.length>0;if(p){d=a.id,f&&(i(a.id),t.get(a.id).push(...l),n.get(a.id).push(...u));continue}if(f)if(d){let e=i(d);t.get(d).push(...l),n.get(d).push(...u),e.memberIds.push(a.id),e.hoistedIds.push(a.id),r.add(a.id)}else d=a.id,i(a.id),t.get(a.id).push(...l),n.get(a.id).push(...u)}return{pairsByAnchorId:t,handoffsByAnchorId:n,hoistedAssistantIds:r,consumedToolCallIds:o,groups:l}})(t),[t]),S=(0,o.useMemo)(()=>(function(e){let t=new Set;if(!Array.isArray(e))return t;for(let r of e){if("assistant"!==r.role)continue;let e=r.tool_calls;if(Array.isArray(e))for(let r of e){var n;"function"===r.type&&em(null==(n=r.function)?void 0:n.name)&&"string"==typeof r.id&&r.id&&t.add(r.id)}}return t})(t),[t]),I=(0,o.useMemo)(()=>new Set(b.map(e=>e.id)),[b]),{renderPairsById:C,renderHandoffsById:k,suppressedIds:N}=(0,o.useMemo)(()=>{let e=new Map,t=new Map,n=new Set;for(let l of A){var r,o,a;let s=null!=(r=y.get(l.anchorId))?r:[],i=null!=(o=j.get(l.anchorId))?o:[],d=null!=(a=l.memberIds.find(e=>I.has(e)))?a:l.anchorId;for(let r of(s.length>0&&e.set(d,s),i.length>0&&t.set(d,i),l.hoistedIds))r!==d&&n.add(r)}return{renderPairsById:e,renderHandoffsById:t,suppressedIds:n}},[A,y,j,I]),[T,R]=o.useState(null),[z,P]=o.useState(null),[F,_]=o.useState(null),[M,O]=o.useState(!1),[W,L]=o.useState(""),[H,B]=o.useState(null),[U,J]=o.useState({}),Y=(0,o.useCallback)((e,t)=>{eS.debug("handleMenuOpen called with messageId: ".concat(t)),R(e.currentTarget),P(t)},[]),Z=(0,o.useCallback)((e,t)=>{J(n=>({...n,[e]:t}))},[]),ee=(0,o.useCallback)(e=>{L(e)},[]),et=(0,o.useCallback)(e=>{B(e)},[]),eo=()=>{R(null),P(null)},ea=()=>{if(z){let e=t.find(e=>e.id===z);e&&"user"===e.role&&"string"==typeof e.content&&(L(e.content),B(e.processNodeId||(a.length>0?a[0].id:"")),_(z),O(!0)),eo()}},ei=()=>{F&&c&&(c(F,W,H||""),O(!1),_(null),B(null))},ed=()=>{O(!1),_(null),B(null)},ep=(0,o.useMemo)(()=>{let e=new Map;for(let t of a)e.set(t.id,t.label);return e},[a]),eh=(0,o.useMemo)(()=>z&&t.find(e=>e.id===z)||null,[z,t]);return(0,r.jsxs)(l.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:[v>0&&(0,r.jsx)(l.default,{sx:{display:"flex",justifyContent:"center"},children:(0,r.jsxs)(f.A,{size:"small",variant:"outlined",onClick:()=>g(e=>e+200),children:["Show earlier messages (",v," more)"]})}),b.map((e,t)=>{if(eC(e)||"tool"===e.role&&"string"==typeof e.tool_call_id&&S.has(e.tool_call_id)||"tool"===e.role&&"string"==typeof e.tool_call_id&&w.has(e.tool_call_id)||N.has(e.id))return null;let n=M&&e.id===F;return(0,r.jsx)(eT,{message:e,nodeLabel:e.processNodeId?ep.get(e.processNodeId):void 0,availableNodes:a,showRaw:!!U[e.id],toolCallPairs:C.get(e.id),hoistedHandoffs:k.get(e.id),edit:n?{content:W,nodeId:H}:null,onMenuOpen:Y,onToggleRaw:Z,onEditContentChange:ee,onEditNodeChange:et,onSaveEdit:n?ei:void 0,onCancelEdit:n?ed:void 0},e.id||"msg-".concat(v+t))}),(0,r.jsxs)(X.A,{anchorEl:T,open:!!T,onClose:eo,children:[eh&&(()=>{eS.debug("Entering menu item rendering logic",{activeMessageId:z}),eS.debug("Active message object for menu:",eh),eS.debug("Active message role for menu:",null==eh?void 0:eh.role);try{let e=!!c,t="user"===eh.role&&e;if(eS.debug("Rendering Edit Message menu item check",{activeMessageId:eh.id,messageRole:eh.role,onEditMessagePropType:typeof c,hasOnEditMessageProp:e,shouldShowEdit:t}),t)return(0,r.jsxs)(G.A,{onClick:ea,children:[(0,r.jsx)($.A,{children:(0,r.jsx)(E.A,{fontSize:"small"})}),(0,r.jsx)(D.A,{children:"Edit Message"})]});return null}catch(e){return eS.error("Error rendering Edit Message menu item",{error:e}),null}})(),(0,r.jsxs)(G.A,{onClick:()=>{z&&(i(z),eo())},children:[(0,r.jsx)($.A,{children:(0,r.jsx)(en.A,{fontSize:"small"})}),(0,r.jsx)(D.A,{children:(null==eh?void 0:eh.disabled)?"Enable Message":"Disable Message"})]}),(0,r.jsxs)(G.A,{onClick:()=>{z&&(d(z),eo())},children:[(0,r.jsx)($.A,{children:(0,r.jsx)(er.A,{fontSize:"small"})}),(0,r.jsx)(D.A,{children:"Split Conversation Here"})]})]}),n&&n.length>0&&(0,r.jsxs)(q.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"warning.light",border:"1px solid",borderColor:"warning.main",borderRadius:2},children:[(0,r.jsxs)(u.default,{variant:"h6",sx:{mb:1,display:"flex",alignItems:"center"},children:[(0,r.jsx)(es.A,{sx:{mr:1}})," Tool Approval Required"]}),(0,r.jsx)(u.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,ef.yo)(e.function.name),o=e.function.arguments;try{let t=JSON.parse(e.function.arguments);o=JSON.stringify(t,null,2)}catch(e){}return(0,r.jsxs)(Q.A,{defaultExpanded:!0,sx:{mb:1,"&:before":{display:"none"},boxShadow:1},children:[(0,r.jsx)(K.A,{expandIcon:(0,r.jsx)(el.A,{}),children:(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",width:"100%"},children:[(0,r.jsx)(es.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),(0,r.jsx)(u.default,{variant:"subtitle2",sx:{fontWeight:"bold",flexGrow:1},children:n}),(0,r.jsx)(p.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,r.jsxs)(V.A,{sx:{pt:0},children:[(0,r.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:o}),(0,r.jsxs)(l.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:1},children:[(0,r.jsx)(f.A,{variant:"outlined",color:"error",size:"small",startIcon:(0,r.jsx)(eu.A,{}),onClick:()=>m&&m(e.id),disabled:!m,children:"Reject"}),(0,r.jsx)(f.A,{variant:"contained",color:"success",size:"small",startIcon:(0,r.jsx)(ec.A,{}),onClick:()=>h&&h(e.id),disabled:!h,children:"Approve"})]})]})]},e.id||"ptc-".concat(t))})]})]})};var ez=n(84869);let eD=(0,ej.h)("frontend/services/transcription");async function eP(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{onProgress:n,onStatusChange:r,language:o}=t;try{if(eD.debug("Starting transcription service"),r&&r("Initializing transcription..."),!(0,ez.G)().supported)throw Error("Web Speech API is not supported in this browser");r&&r("Using browser speech recognition...");let t=await (0,ez.S)(e,{language:o,onInterimResult:e=>{r&&r("Transcribing: ".concat(e)),n&&n(50)}});return r&&r("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}),r&&r("Transcription failed"),{text:"Transcription failed. Please check if your browser supports speech recognition.",success:!1,error:e instanceof Error?e.message:String(e)}}}var eF=n(9164),e_=n(22822),eM=n(35205),eO=n(77073),eW=n(55930),eL=n(9693),eH=n(4823),eB=n(74879);let eq=(0,ej.h)("frontend/components/Chat/ChatInput"),eU=e=>{var t;let{onSendMessage:n,disabled:a=!1,requireApproval:d=!1,onRequireApprovalChange:h,executeInDebugger:m=!1,onExecuteInDebuggerChange:b,availableNodes:j=[],currentNodeId:w=null,nodeOverrideActive:A=!1,onSelectNode:S}=e,{settings:I}=(0,eF.useStorage)(),[C,k]=(0,o.useState)(""),[E,N]=(0,o.useState)([]),[R,z]=(0,o.useState)(!1),[P,F]=(0,o.useState)(0),[_,M]=(0,o.useState)(null),O=(0,o.useRef)(null),L=(0,o.useRef)(null),B=(0,o.useRef)([]),[U,J]=(0,o.useState)(null),Y=(null==(t=j.find(e=>e.id===w))?void 0:t.label)||(w?"".concat(w.substring(0,6),"..."):"Start"),[Q,K]=(0,o.useState)(!1),[V,Z]=(0,o.useState)(""),[ee,et]=(0,o.useState)(""),[en,er]=(0,o.useState)("document"),[el,es]=(0,o.useState)(!1),[ei,ed]=(0,o.useState)(0),[ec,eu]=(0,o.useState)(""),ep=()=>{(C.trim()||E.length>0)&&(eq.debug("Sending message",{messageLength:C.length,attachmentsCount:E.length}),n(C,E),k(""),N([]))},ef=async e=>{let t=e.target.files;if(!t||0===t.length)return;let n=t[0];eq.debug("File selected",{fileName:n.name,fileSize:n.size,fileType:n.type}),et("Processing ".concat(n.name)),er("document"),Z(""),es(!0),K(!0);try{let e=await eh(n);eq.debug("File read successfully",{contentLength:e.length}),Z(e),es(!1)}catch(e){eq.error("Error reading file:",e),Z("Error reading file. Please try again with a text file."),es(!1)}O.current&&(O.current.value="")},eh=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=e=>{var r;(null==(r=e.target)?void 0:r.result)?t(e.target.result):n(Error("Failed to read file"))},r.onerror=()=>{n(Error("Error reading file"))},r.readAsText(e)}),em=async()=>{eq.debug("Starting audio recording");try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});eq.debug("Audio stream obtained successfully"),B.current=[];let t=new MediaRecorder(e);L.current=t,t.ondataavailable=e=>{e.data.size>0&&B.current.push(e.data)},t.onstop=async()=>{let t=new Blob(B.current,{type:"audio/wav"});et("Audio Recording"),er("audio"),Z(""),es(!0),K(!0);try{if(((null==I?void 0:I.speech)||{enabled:!0,modelSize:"base",autoDownload:!1}).enabled){eu("Initializing transcription..."),ed(0);let e=await eP(t,{onProgress:ed,onStatusChange:eu,language:navigator.language});if(e.success){let t=e.text;Z(t),eq.debug("Transcription successful",{textLength:e.text.length,engine:e.engine})}else Z("Error transcribing audio: ".concat(e.error,".")),eq.error("Transcription failed",{error:e.error})}else Z("Speech recognition is disabled in settings. Enable it to get automatic transcriptions.")}catch(e){eq.error("Error handling audio recording",{error:e}),Z("Failed to process audio: ".concat(e))}finally{es(!1),e.getTracks().forEach(e=>e.stop())}},t.start(),z(!0);let n=setInterval(()=>{F(e=>e+1)},1e3);M(n)}catch(e){eq.error("Error starting recording:",e),alert("Could not access microphone. Please check permissions.")}};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(q.A,{elevation:3,sx:{p:2,display:"flex",flexDirection:"column",borderRadius:2},children:[E.length>0&&(0,r.jsx)(l.default,{sx:{mb:2,display:"flex",flexWrap:"wrap",gap:1},children:E.map(e=>(0,r.jsxs)(q.A,{variant:"outlined",sx:{p:1,display:"flex",alignItems:"center",borderRadius:1,bgcolor:"background.default"},children:["image"===e.type?(0,r.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,r.jsx)(eo.A,{fontSize:"small",sx:{mr:1}}):(0,r.jsx)(ea.A,{fontSize:"small",sx:{mr:1}}),(0,r.jsx)(u.default,{variant:"body2",noWrap:!0,sx:{maxWidth:150},children:e.originalName||"".concat(e.type," attachment")}),(0,r.jsx)(i.A,{size:"small",onClick:()=>(e=>{eq.debug("Removing attachment",{id:e}),N(E.filter(t=>t.id!==e))})(e.id),sx:{ml:1},children:(0,r.jsx)(eO.A,{fontSize:"small"})})]},e.id))}),(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"flex-end"},children:[(0,r.jsx)(c.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||(eq.debug("Enter key pressed, sending message"),e.preventDefault(),ep())},onPaste:e=>{var t;let n=null==(t=e.clipboardData)?void 0:t.items;if(!n)return;let r=[];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&&r.push(e)}}0!==r.length&&(e.preventDefault(),eq.debug("Pasting image attachment(s)",{count:r.length}),r.forEach(e=>{let t=new FileReader;t.onload=t=>{var n;let r=null==(n=t.target)?void 0:n.result;if("string"!=typeof r)return;let o=(e.type.split("/")[1]||"png").split("+")[0];N(t=>[...t,{id:(0,eB.A)(),type:"image",content:r,originalName:e.name&&!/^image\.\w+$/i.test(e.name)?e.name:"Pasted image.".concat(o)}])},t.onerror=()=>eq.error("Failed to read pasted image"),t.readAsDataURL(e)}))},disabled:a,variant:"outlined",sx:{mr:1},InputProps:{sx:{borderRadius:2}}}),(0,r.jsx)(s.A,{title:"Attach document",children:(0,r.jsx)(i.A,{color:"primary",onClick:()=>{var e;eq.debug("File selection triggered"),null==(e=O.current)||e.click()},disabled:a||R,children:(0,r.jsx)(eo.A,{})})}),(0,r.jsx)("input",{type:"file",ref:O,onChange:ef,style:{display:"none"},accept:".txt,.md,.json,.csv,.html,.xml,.js,.ts,.jsx,.tsx,.css,.scss"}),(0,r.jsx)(s.A,{title:R?"Stop recording":"Record audio",children:(0,r.jsxs)(i.A,{color:R?"error":"primary",onClick:R?()=>{eq.debug("Stopping audio recording"),L.current&&"inactive"!==L.current.state&&(L.current.stop(),z(!1),_&&(clearInterval(_),M(null)),F(0))}:em,disabled:a,children:[(0,r.jsx)(ea.A,{}),R&&(0,r.jsx)(u.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"))})(P)})]})}),(0,r.jsx)(s.A,{title:"Send message",children:(0,r.jsx)(i.A,{color:"primary",onClick:ep,disabled:a||!C.trim()&&0===E.length,children:(0,r.jsx)(eM.A,{})})})]})," ",(h||S&&j.length>0)&&(0,r.jsxs)(l.default,{sx:{mt:1,display:"flex",justifyContent:"flex-start",alignItems:"center",flexWrap:"wrap",gap:1},children:[S&&j.length>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.A,{title:A?"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,r.jsx)(p.A,{icon:(0,r.jsx)(eW.A,{}),label:Y,size:"small",color:A?"primary":"default",variant:A?"filled":"outlined",onClick:e=>J(e.currentTarget),disabled:a})}),(0,r.jsxs)(X.A,{anchorEl:U,open:!!U,onClose:()=>J(null),children:[(0,r.jsxs)(G.A,{selected:!A,onClick:()=>{S(null),J(null)},children:[(0,r.jsx)($.A,{children:(0,r.jsx)(eH.A,{fontSize:"small"})}),(0,r.jsx)(D.A,{primary:"Automatic",secondary:"Follow the conversation",secondaryTypographyProps:{variant:"caption"}})]}),(0,r.jsx)(T.A,{}),j.map(e=>(0,r.jsxs)(G.A,{selected:A&&e.id===w,onClick:()=>{S(e.id),J(null)},children:[(0,r.jsx)($.A,{children:e.id===w?(0,r.jsx)(eL.A,{fontSize:"small"}):null}),(0,r.jsx)(D.A,{primary:e.label})]},e.id))]})]}),h&&(0,r.jsx)(H.A,{control:(0,r.jsx)(e_.A,{checked:d,onChange:e=>h(e.target.checked),size:"small",disabled:a}),label:(0,r.jsx)(u.default,{variant:"caption",children:"Require Tool Approvals"}),sx:{mr:"auto"}}),b&&(0,r.jsx)(H.A,{control:(0,r.jsx)(e_.A,{checked:m,onChange:e=>b(e.target.checked),size:"small",disabled:a}),label:(0,r.jsx)(u.default,{variant:"caption",children:"Execute in Debugger"}),sx:{ml:2}})]})," "]})," ",(0,r.jsxs)(x.A,{open:Q,onClose:()=>!el&&K(!1),maxWidth:"md",fullWidth:!0,children:[(0,r.jsxs)(g.A,{children:[ee,!el&&(0,r.jsx)(i.A,{"aria-label":"close",onClick:()=>K(!1),sx:{position:"absolute",right:8,top:8},children:(0,r.jsx)(eO.A,{})})]}),(0,r.jsx)(v.A,{dividers:!0,children:el?(0,r.jsxs)(l.default,{sx:{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",p:4},children:[(0,r.jsx)(W.default,{value:"audio"===en&&ei?ei:void 0,variant:"audio"===en&&ei>0?"determinate":"indeterminate"}),"audio"===en&&(0,r.jsxs)(l.default,{sx:{mt:2,textAlign:"center"},children:[(0,r.jsx)(u.default,{variant:"body2",children:ec||"Processing audio..."}),ei>0&&(0,r.jsxs)(u.default,{variant:"body2",color:"text.secondary",sx:{mt:1},children:[Math.round(ei),"%"]})]})]}):(0,r.jsx)(c.A,{multiline:!0,fullWidth:!0,minRows:10,maxRows:20,value:V,onChange:e=>Z(e.target.value),variant:"outlined",placeholder:"document"===en?"Document content":"Audio transcription"})}),(0,r.jsxs)(y.A,{children:[(0,r.jsx)(f.A,{onClick:()=>K(!1),disabled:el,children:"Cancel"}),(0,r.jsx)(f.A,{onClick:()=>{eq.debug("Adding attachment",{type:en,titleLength:ee.length}),N([...E,{id:(0,eB.A)(),type:en,content:V,originalName:ee}]),K(!1)},variant:"contained",disabled:el||!V.trim(),children:"Add to Message"})]})]})]})};var eJ=n(25731);let eY=e=>{var t;let{liveStats:n,onStop:a,stopDisabled:s,awaitingApproval:i}=e,[d,c]=(0,o.useState)(()=>Date.now());(0,o.useEffect)(()=>{let e=setInterval(()=>c(Date.now()),1e3);return()=>clearInterval(e)},[]);let p=n?Math.max(0,Math.round((d-n.startedAt)/1e3)):0,h=n?Math.round((d-n.lastEventAt)/1e3):0,m=!i&&!!n&&h>=60;return(0,r.jsxs)(l.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",my:2,gap:.5},children:[(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:2},children:[i?(0,r.jsx)(eJ.A,{fontSize:"small",color:"warning"}):(0,r.jsx)(W.default,{size:20,color:m?"warning":"primary"}),(0,r.jsx)(u.default,{variant:"body2",color:"textSecondary",children:i?"Waiting for tool approval":(null==n?void 0:n.activeNode)?"Running: ".concat(n.activeNode):"Working…"}),(0,r.jsx)(f.A,{variant:"outlined",color:"secondary",size:"small",onClick:a,disabled:s,children:"Stop"})]}),!i&&(0,r.jsxs)(u.default,{variant:"caption",color:m?"warning.main":"textSecondary",children:[(null!=(t=null==n?void 0:n.totalTokens)?t:0).toLocaleString()," tokens \xb7 ",p,"s elapsed",m?" \xb7 no activity for ".concat(h,"s — may be stuck"):""]})]})};var eG=n(88538),eQ=n(16963),eK=n(2456),eV=n(64792),eX=n(71356),e$=n(45202),eZ=n(52005),e0=n(77998);let e1=e=>e>=1e3?"".concat((e/1e3).toFixed(e>=1e5?0:1),"k"):"".concat(e),e2=e=>{var t;let{usage:n,contextInfo:a,availableNodes:i}=e,[d,c]=(0,o.useState)(null);if(!n&&!a)return null;let f=(null==n?void 0:n.byNode)?Object.entries(n.byNode):[],h=null!=(t=null==n?void 0:n.cacheReadTokens)?t:0,m=n?Math.max(0,n.promptTokens-h):0,x=n?Math.max(0,n.totalTokens-h):0,g=(null==a?void 0:a.contextWindow)&&a.contextWindow>0?Math.min(100,Math.round(a.promptTokens/a.contextWindow*100)):void 0;return(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:1.5,flexShrink:0},children:[n&&x>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.A,{title:"Tokens this conversation — ".concat(m.toLocaleString()," prompt / ").concat(n.completionTokens.toLocaleString()," completion").concat(h>0?" (+".concat(h.toLocaleString()," cached reads, not counted)"):"",". Click for the per-node breakdown."),children:(0,r.jsx)(p.A,{icon:(0,r.jsx)(e0.A,{}),label:"".concat(e1(x)," tokens"),size:"small",variant:"outlined",onClick:e=>c(e.currentTarget),sx:{cursor:"pointer"}})}),(0,r.jsx)(eG.Ay,{open:!!d,anchorEl:d,onClose:()=>c(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:(0,r.jsxs)(l.default,{sx:{p:2,maxWidth:420},children:[(0,r.jsx)(u.default,{variant:"subtitle2",sx:{mb:1},children:"Token usage by node"}),(0,r.jsxs)(eQ.A,{size:"small",children:[(0,r.jsx)(eK.A,{children:(0,r.jsxs)(eV.A,{children:[(0,r.jsx)(eX.A,{children:"Node"}),(0,r.jsx)(eX.A,{align:"right",children:"Prompt"}),(0,r.jsx)(eX.A,{align:"right",children:"Completion"}),(0,r.jsx)(eX.A,{align:"right",children:"Total"})]})}),(0,r.jsxs)(e$.A,{children:[f.map(e=>{let[t,n]=e;return(0,r.jsxs)(eV.A,{children:[(0,r.jsx)(eX.A,{children:(0,r.jsx)(s.A,{title:t,children:(0,r.jsx)("span",{children:(e=>{var t;return(null==(t=i.find(t=>t.id===e))?void 0:t.label)||"".concat(e.substring(0,8),"…")})(t)})})}),(0,r.jsx)(eX.A,{align:"right",children:n.promptTokens.toLocaleString()}),(0,r.jsx)(eX.A,{align:"right",children:n.completionTokens.toLocaleString()}),(0,r.jsx)(eX.A,{align:"right",children:n.totalTokens.toLocaleString()})]},t)}),(0,r.jsxs)(eV.A,{children:[(0,r.jsx)(eX.A,{sx:{fontWeight:"bold"},children:"Total"}),(0,r.jsx)(eX.A,{align:"right",sx:{fontWeight:"bold"},children:n.promptTokens.toLocaleString()}),(0,r.jsx)(eX.A,{align:"right",sx:{fontWeight:"bold"},children:n.completionTokens.toLocaleString()}),(0,r.jsx)(eX.A,{align:"right",sx:{fontWeight:"bold"},children:n.totalTokens.toLocaleString()})]})]})]}),h>0&&(0,r.jsxs)(u.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1},children:["Prompt totals include ",h.toLocaleString()," tokens re-read from the prompt cache. The header chip shows the fresh figure (",x.toLocaleString(),") with those cached reads excluded."]})]})})]}),a&&void 0!==g&&(0,r.jsx)(s.A,{title:"Context of the latest call".concat(a.modelDisplayName?" (".concat(a.modelDisplayName,")"):"",": ").concat(a.promptTokens.toLocaleString()," of ").concat(a.contextWindow.toLocaleString()," tokens"),children:(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:1,minWidth:140},children:[(0,r.jsx)(eZ.A,{variant:"determinate",value:g,color:g>=90?"error":g>=70?"warning":"primary",sx:{flex:1,height:6,borderRadius:3}}),(0,r.jsxs)(u.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:[e1(a.promptTokens),"/",e1(a.contextWindow)," (",g,"%)"]})]})}),a&&void 0===g&&(0,r.jsx)(s.A,{title:"Prompt size of the latest call".concat(a.modelDisplayName?" (".concat(a.modelDisplayName,")"):"",". Set the model's Context Window in its settings to see a usage meter."),children:(0,r.jsxs)(u.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:["ctx ",e1(a.promptTokens)]})})]})};var e5=n(56900),e6=n(90057),e4=n(96362),e8=n(9226),e3=n(68503);let e7=e=>{let{selectedFlowId:t,onSelectFlow:n,disabled:a=!1}=e,[s,i]=(0,o.useState)([]),[d,c]=(0,o.useState)(!0),[p,h]=(0,o.useState)(null),[m,x]=(0,o.useState)(!1);(0,o.useEffect)(()=>{(async()=>{c(!0),h(null);try{let e=await e6.g.loadFlows();i(e)}catch(e){console.error("Error loading flows:",e),h("Failed to load flows")}finally{c(!1)}})()},[]);let g=e=>{n(e),x(!1)},v=async e=>{let t=s.find(t=>t.id===e);if(!t)return;let n=!t.favorite,r={...t,favorite:n||void 0};try{(await e6.g.updateFlow(r)).success&&i(t=>t.map(t=>t.id===e?r:t))}catch(e){console.error("Error toggling flow favorite:",e)}},b=(0,e3.E)("flows",s),y=e=>({key:e.id,content:(e=>(0,r.jsx)(e8.A,{flow:e,selected:e.id===t,onSelect:g,onToggleFavorite:v,pickerMode:!0}))(e)}),j=b.items.map(y),w=b.groups?b.groups.map(e=>({...e,items:e.items.map(y)})):null,A=(()=>{if(!t)return"";let e=s.find(e=>e.id===t);return e?e.name:""})();return(0,r.jsxs)(l.default,{children:[(0,r.jsx)(u.default,{variant:"subtitle1",gutterBottom:!0,children:"Select Flow"}),d?(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,r.jsx)(W.default,{size:20}),(0,r.jsx)(u.default,{variant:"body2",color:"text.secondary",children:"Loading flows..."})]}):p?(0,r.jsx)(u.default,{color:"error",variant:"body2",children:p}):0===s.length?(0,r.jsx)(u.default,{variant:"body2",color:"text.secondary",children:"No flows available. Create some flows in the Flow Builder first."}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(f.A,{variant:"outlined",startIcon:(0,r.jsx)(e5.A,{}),onClick:()=>x(!0),disabled:a,sx:{textTransform:"none",maxWidth:"100%"},children:(0,r.jsx)(l.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t&&A||"Select a flow"})}),(0,r.jsx)(u.default,{variant:"caption",color:"text.secondary",display:"block",sx:{mt:.5},children:t?'Using "'.concat(A,'" flow for this conversation'):"Select a flow to use for this conversation"}),(0,r.jsx)(e4.A,{open:m,onClose:()=>x(!1),title:"Select a flow",description:"Pick the flow this conversation will run.",skeleton:(0,r.jsx)(e8.o,{}),emptyMessage:"No flows available. Create some flows in the Flow Builder first.",searchable:!0,searchPlaceholder:"Search flows…",searchTerm:b.searchTerm,onSearchChange:b.setSearchTerm,items:j,groups:w,collapsedKeys:b.collapsedKeys,onToggleGroup:b.toggleGroup})]})]})};var e9=n(43076);let te=(0,ej.h)("frontend/components/Chat/QuickChatDialog"),tt=e=>{let{open:t,onClose:n,onStart:a}=e,[s,h]=(0,o.useState)([]),[m,b]=(0,o.useState)([]),[j,w]=(0,o.useState)(!1),[A,S]=(0,o.useState)(null),[I,C]=(0,o.useState)(""),[k,E]=(0,o.useState)(""),[N,R]=(0,o.useState)({}),[z,D]=(0,o.useState)(!1),[P,F]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!t)return;let e=!1;return w(!0),S(null),(async()=>{try{let[t,n]=await Promise.all([e9.N.loadModels(),eb.S.loadServerConfigs()]);if(e)return;h(t);let r=Array.isArray(n)?n.filter(e=>!e.disabled).map(e=>e.name):[];b(r),C(e=>{var n;return e||(null==(n=t[0])?void 0:n.id)||""})}catch(t){e||(te.warn("Failed to load models/servers for quick chat",t),S("Could not load models or servers."))}finally{e||w(!1)}})(),()=>{e=!0}},[t]),(0,o.useEffect)(()=>{t||(E(""),R({}),F(null),D(!1))},[t]);let _=(0,o.useCallback)(e=>{R(t=>{let n=t[e];return(null==n?void 0:n.selected)?{...t,[e]:{...n,selected:!1}}:{...t,[e]:{...null!=n?n:{tools:null,expanded:!1},selected:!0}}})},[]),M=(0,o.useCallback)(async e=>{R(t=>{var n;let r=null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!1};return{...t,[e]:{...r,expanded:!r.expanded}}});let t=N[e];if(!(null==t?void 0:t.available)&&!(null==t?void 0:t.loading)){R(t=>{var n;return{...t,[e]:{...null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!0},loading:!0}}});try{let{tools:t}=await eb.S.listServerTools(e),n=Array.isArray(t)?t.map(e=>e.name).filter(Boolean):[];R(t=>{var r;return{...t,[e]:{...null!=(r=t[e])?r:{selected:!1,tools:null,expanded:!0},available:n,loading:!1}}})}catch(t){te.warn("Failed to load tools for ".concat(e),t),R(t=>{var n;return{...t,[e]:{...null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!0},available:[],loading:!1}}})}}},[N]),O=(0,o.useCallback)((e,t,n)=>{R(r=>{var o,a;let l=null!=(o=r[e])?o:{selected:!0,tools:null,expanded:!0},s=new Set(null!=(a=l.tools)?a:new Set(n));return s.has(t)?s.delete(t):s.add(t),{...r,[e]:{...l,selected:!0,tools:s}}})},[]),B=!!I&&!z&&!j,q=async()=>{if(!I)return void F("Pick a model to chat with.");D(!0),F(null);let e=m.filter(e=>{var t;return null==(t=N[e])?void 0:t.selected}).map(e=>{let t=N[e];return!t.tools||t.available&&t.tools.size===t.available.length?{name:e}:{name:e,enabledTools:[...t.tools]}});try{await a({modelId:I,servers:e,systemPrompt:k.trim()||void 0})}catch(e){te.warn("Quick chat failed to start",e),F(e instanceof Error?e.message:"Could not start the quick chat."),D(!1)}};return(0,r.jsxs)(x.A,{open:t,onClose:z?void 0:n,maxWidth:"sm",fullWidth:!0,children:[(0,r.jsx)(g.A,{children:"Quick Chat"}),(0,r.jsxs)(v.A,{children:[(0,r.jsx)(u.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Chat with a model and, optionally, some MCP servers — no need to build and save a flow."}),A&&(0,r.jsx)(d.A,{severity:"error",sx:{mb:2},children:A}),(0,r.jsxs)(U.A,{fullWidth:!0,size:"small",sx:{mb:2},disabled:j,children:[(0,r.jsx)(J.A,{id:"quick-chat-model-label",children:"Model"}),(0,r.jsxs)(Y.A,{labelId:"quick-chat-model-label",label:"Model",value:I,onChange:e=>C(e.target.value),children:[0===s.length&&(0,r.jsx)(G.A,{value:"",disabled:!0,children:j?"Loading…":"No models configured"}),s.map(e=>(0,r.jsx)(G.A,{value:e.id,children:e.displayName||e.name},e.id))]})]}),(0,r.jsx)(c.A,{fullWidth:!0,size:"small",multiline:!0,minRows:2,maxRows:6,label:"System prompt (optional)",placeholder:"e.g. You are a concise coding assistant.",value:k,onChange:e=>E(e.target.value),sx:{mb:2}}),(0,r.jsx)(T.A,{sx:{mb:1}}),(0,r.jsx)(u.default,{variant:"subtitle2",gutterBottom:!0,children:"MCP servers (optional)"}),j?(0,r.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,r.jsx)(W.default,{size:22})}):0===m.length?(0,r.jsx)(u.default,{variant:"body2",color:"text.secondary",children:"No connected MCP servers. You can still chat with the model alone."}):m.map(e=>{let t=N[e],n=!!(null==t?void 0:t.selected),o=null==t?void 0:t.available,a=null==t?void 0:t.tools;return(0,r.jsxs)(l.default,{sx:{mb:.5},children:[(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center"},children:[(0,r.jsx)(H.A,{sx:{flexGrow:1,mr:0},control:(0,r.jsx)(e_.A,{size:"small",checked:n,onChange:()=>_(e)}),label:(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,r.jsx)(u.default,{variant:"body2",children:e}),n&&(0,r.jsx)(p.A,{size:"small",variant:"outlined",label:a?"".concat(a.size," tool").concat(1===a.size?"":"s"):"all tools"})]})}),(0,r.jsx)(i.A,{size:"small",onClick:()=>M(e),"aria-label":"customize ".concat(e," tools"),children:(null==t?void 0:t.expanded)?(0,r.jsx)(ev.A,{fontSize:"small"}):(0,r.jsx)(el.A,{fontSize:"small"})})]}),(0,r.jsx)(L.A,{in:!!(null==t?void 0:t.expanded),unmountOnExit:!0,children:(0,r.jsx)(l.default,{sx:{pl:4,pb:1},children:(null==t?void 0:t.loading)?(0,r.jsx)(W.default,{size:16}):o&&o.length>0?o.map(t=>{let n=!a||a.has(t);return(0,r.jsx)(H.A,{sx:{display:"flex"},control:(0,r.jsx)(e_.A,{size:"small",checked:n,onChange:()=>O(e,t,o)}),label:(0,r.jsx)(u.default,{variant:"caption",children:t})},t)}):(0,r.jsx)(u.default,{variant:"caption",color:"text.secondary",children:o?"No tools reported (server may be offline).":""})})})]},e)}),P&&(0,r.jsx)(d.A,{severity:"error",sx:{mt:2},children:P})]}),(0,r.jsxs)(y.A,{children:[(0,r.jsx)(f.A,{onClick:n,disabled:z,children:"Cancel"}),(0,r.jsx)(f.A,{variant:"contained",onClick:q,disabled:!B,startIcon:z?(0,r.jsx)(W.default,{size:16,color:"inherit"}):void 0,children:z?"Starting…":"Start chat"})]})]})};var tn=n(53940),tr=n(48116),to=n(33567),ta=n(22539),tl=n(33420),ts=n(53911);let ti={byNode:{},byResource:{},byResourceName:{},resourceVersion:0};function td(e,t){return"".concat(e," ").concat(t)}var tc=n(59323),tu=n(72308),tp=n(6422),tf=n(48363);let th=(0,ej.h)("frontend/components/Chat/RunResourcesPanel"),tm=e=>{let{conversationId:t,refreshToken:n}=e,[a,s]=(0,o.useState)(null),[i,d]=(0,o.useState)(null);return((0,o.useEffect)(()=>{if(!t)return;let e=!1;return fetch("/v1/chat/conversations/".concat(encodeURIComponent(t),"/resources")).then(async e=>{if(!e.ok)throw Error("HTTP ".concat(e.status));return e.json()}).then(t=>{e||(s(Array.isArray(t.resources)?t.resources:[]),d(null))}).catch(t=>{e||(th.warn("Failed to load run resources",t),d(t instanceof Error?t.message:String(t)))}),()=>{e=!0}},[t,n]),i)?(0,r.jsxs)(u.default,{variant:"caption",color:"text.secondary",children:["Run data unavailable (",i,")"]}):null===a?(0,r.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",p:1},children:(0,r.jsx)(W.default,{size:16})}):0===a.length?(0,r.jsx)(u.default,{variant:"caption",color:"text.secondary",children:"No data artifacts captured in this run yet."}):(0,r.jsx)(R.A,{dense:!0,disablePadding:!0,children:[...a].sort((e,t)=>t.createdAt-e.createdAt).map(e=>{var t;return(0,r.jsxs)(z.Ay,{disableGutters:!0,sx:{alignItems:"flex-start"},children:[(0,r.jsx)($.A,{sx:{minWidth:30,mt:.5},children:function(e){switch(e){case"image":return(0,r.jsx)(tu.A,{fontSize:"small",sx:{color:"#009688"}});case"audio":return(0,r.jsx)(tp.A,{fontSize:"small",sx:{color:"#009688"}});case"link":return(0,r.jsx)(tf.A,{fontSize:"small",sx:{color:"#009688"}});default:return(0,r.jsx)(tc.A,{fontSize:"small",sx:{color:"#009688"}})}}(e.kind)}),(0,r.jsx)(D.A,{primary:(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap"},children:[(0,r.jsx)(u.default,{variant:"body2",sx:{fontWeight:500},children:null!=(t=e.name)?t:"".concat(e.kind,"-").concat(e.id.slice(0,8))}),e.mimeType&&(0,r.jsx)(p.A,{label:e.mimeType,size:"small",variant:"outlined",sx:{height:18,fontSize:"0.65rem"}}),(0,r.jsx)(u.default,{variant:"caption",color:"text.secondary",children:function(e){return e<1024?"".concat(e," B"):e<1048576?"".concat(Math.round(e/1024)," KB"):"".concat((e/1048576).toFixed(1)," MB")}(e.size)})]}),secondary:(0,r.jsxs)(u.default,{variant:"caption",color:"text.secondary",component:"span",sx:{wordBreak:"break-all"},children:["by ",function(e){var t,n,r,o,a;let l=e.producedBy;switch(l.source){case"tool-result":return"tool ".concat(null!=(t=l.server)?t:"?","/").concat(null!=(n=l.toolName)?n:"?");case"capture":return"step ".concat(null!=(o=null!=(r=l.nodeName)?r:l.nodeId)?o:"?");case"mcp-link":return"link from ".concat(null!=(a=l.server)?a:"?");default:return"run"}}(e),e.readBy.length>0?" \xb7 read ".concat(e.readBy.length,"\xd7"):""," \xb7 ",e.uri]})})]},e.id)})})};var tx=n(14913),tg=n(57883);let tv={system:{label:"system",color:"secondary"},sent:{label:"sent",color:"success"},folded:{label:"folded",color:"warning"},"scoped-out":{label:"scoped out",color:"info"},"handoff-stripped":{label:"handoff plumbing",color:"default"}},tb={whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem",fontFamily:"inherit"},ty=e=>{let{role:t,content:n,toolCallNames:o,status:a,faded:s}=e;return(0,r.jsxs)(q.A,{variant:"outlined",sx:{p:1,mb:.75,opacity:s?.55:1,borderStyle:s?"dashed":"solid"},children:[(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:.5,mb:.5,flexWrap:"wrap"},children:[(0,r.jsx)(p.A,{size:"small",label:t,color:function(e){switch(e){case"system":return"secondary";case"user":return"primary";case"assistant":return"success";case"tool":return"info";default:return"default"}}(t),variant:"outlined"}),o&&o.length>0&&(0,r.jsx)(p.A,{size:"small",variant:"outlined",label:"\uD83D\uDD27 ".concat(o.join(", ")),sx:{maxWidth:"100%"}}),a&&"sent"!==a&&"system"!==a&&(0,r.jsx)(p.A,{size:"small",color:tv[a].color,label:tv[a].label})]}),n.trim().length>0?(0,r.jsx)("pre",{style:tb,children:n}):(0,r.jsx)(u.default,{variant:"caption",color:"textSecondary",children:"(no text content)"})]})},tj=e=>{let{modelInput:t}=e,[n,a]=(0,o.useState)("wire"),{systemMessage:s,wireMessages:i,provenance:d,counts:c,inputMode:f}=t,h=(0,o.useMemo)(()=>(i||[]).filter(e=>"system"!==e.role),[i]),m="".concat(c.threaded," in history → ").concat(c.sent," sent")+(c.folded?" \xb7 ".concat(c.folded," folded"):"")+(c.scopedOut?" \xb7 ".concat(c.scopedOut," scoped out"):"")+(c.handoffStripped?" \xb7 ".concat(c.handoffStripped," handoff-stripped"):"");return(0,r.jsxs)(l.default,{sx:{p:1},children:[(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap",mb:1},children:[(0,r.jsx)(u.default,{variant:"caption",color:"textSecondary",children:m}),f&&"full-history"!==f&&(0,r.jsx)(p.A,{size:"small",variant:"outlined",label:"inputMode: ".concat(f)})]}),(0,r.jsxs)(Q.A,{defaultExpanded:!0,sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,r.jsx)(K.A,{expandIcon:(0,r.jsx)(el.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,r.jsx)(u.default,{variant:"caption",children:(0,r.jsx)("b",{children:"System message"})})}),(0,r.jsx)(V.A,{sx:{p:0},children:s&&s.content.trim().length>0?(0,r.jsx)(q.A,{variant:"outlined",sx:{p:1,maxHeight:260,overflowY:"auto"},children:(0,r.jsx)("pre",{style:tb,children:s.content})}):(0,r.jsx)(u.default,{variant:"caption",color:"textSecondary",children:"(no system message)"})})]}),(0,r.jsxs)(tx.A,{size:"small",exclusive:!0,value:n,onChange:(e,t)=>{t&&a(t)},sx:{my:1},children:[(0,r.jsx)(tg.A,{value:"wire",children:"What the model sees"}),(0,r.jsx)(tg.A,{value:"annotated",children:"Full history (annotated)"})]}),"wire"===n?(0,r.jsxs)(l.default,{children:[(0,r.jsxs)(u.default,{variant:"caption",color:"textSecondary",sx:{display:"block",mb:.5},children:["Wire conversation (",h.length," message",1===h.length?"":"s",")"]}),0===h.length?(0,r.jsx)(u.default,{variant:"body2",color:"textSecondary",children:"No conversation messages — the model sees only the system message."}):h.map((e,t)=>{var n;return(0,r.jsx)(ty,{role:e.role,content:function(e){if("string"==typeof e)return e;if(Array.isArray(e))try{return JSON.stringify(e,null,2)}catch(t){return String(e)}if(null==e)return"";try{return JSON.stringify(e,null,2)}catch(t){return String(e)}}(e.content),toolCallNames:"assistant"===e.role&&Array.isArray(e.tool_calls)?e.tool_calls.map(e=>"function"===e.type?e.function.name:void 0).filter(e=>!!e):void 0},null!=(n=e.id)?n:"wire-".concat(t))})]}):(0,r.jsxs)(l.default,{children:[(0,r.jsx)(u.default,{variant:"caption",color:"textSecondary",sx:{display:"block",mb:.5},children:"Full threaded history — greyed rows are not sent to the model."}),d.map((e,t)=>{var n,o;return(0,r.jsx)(ty,{role:e.role,content:null!=(n=e.preview)?n:"",toolCallNames:e.toolCallNames,status:e.status,faded:"sent"!==e.status&&"system"!==e.status},null!=(o=e.id)?o:"hist-".concat(t))}),d.some(e=>"sent"!==e.status&&"system"!==e.status)&&(0,r.jsx)(u.default,{variant:"caption",color:"textSecondary",sx:{display:"block",mt:1},children:"Hover a badge label to understand why a message is not on the wire: folded (outputMode), scoped out (inputMode), or handoff plumbing (tool-call strip)."})]})]})},tw=(0,ej.h)("frontend/components/Chat/DebuggerCanvas"),tA={start:tl.vm,process:tl.Uw,finish:tl.IK,mcp:tl.v2,subflow:tl.lA,resource:tl.z9},tS={custom:ts.jY,mcpEdge:ts.oY,resourceEdge:ts.sZ},tI=(0,tr.Ay)(q.A)(e=>{let{theme:t}=e;return{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden",padding:t.spacing(1)}}),tC=(0,tr.Ay)(l.default)(e=>{let{theme:t}=e;return{padding:t.spacing(1,2),borderBottom:"1px solid ".concat(t.palette.divider)}}),tk=(0,tr.Ay)(l.default)({flexGrow:1,display:"flex",overflow:"hidden"}),tE=(0,tr.Ay)(l.default)(e=>{let{theme:t}=e;return{width:"200px",borderRight:"1px solid ".concat(t.palette.divider),overflowY:"auto",padding:t.spacing(1)}}),tN=(0,tr.Ay)(l.default)({flexGrow:1,position:"relative",height:"100%"}),tT=(0,tr.Ay)(l.default)(e=>{let{theme:t}=e;return{width:"300px",borderLeft:"1px solid ".concat(t.palette.divider),overflowY:"auto",padding:t.spacing(2)}}),tR=(0,tr.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"}}),tz=e=>{var t,n,a,c;let{debugState:p,conversationId:h,onStep:m,onStepOver:x,onContinue:g,onCancel:v,isLoading:b,breakpoints:y,onToggleBreakpoint:j,onClose:w,liveActivity:A}=e,S=(0,to.A)(),[I,C]=(0,o.useState)(p.executionTrace&&p.executionTrace.length>0?p.executionTrace.length-1:-1),[k,E]=(0,o.useState)(!0),[N,T]=(0,o.useState)(!0),[F,_]=(0,o.useState)(null),[M,O]=(0,o.useState)(!0),[L,H]=(0,o.useState)(null),[B,q,U]=(0,ta.ck)([]),[J,Y,G]=(0,ta.fM)([]);(0,o.useEffect)(()=>{var e;let t=(null==(e=p.executionTrace)?void 0:e.length)||0;t>0?(C(e=>Math.min(e,t-1)),I<t-1&&C(t-1)):C(-1)},[p.executionTrace]),(0,o.useEffect)(()=>{(async()=>{if(!p.flowId){H("Flow ID is missing in debug state."),O(!1);return}O(!0),H(null);try{tw.debug("Loading flow definition for ID: ".concat(p.flowId));let e=await e6.g.getFlow(p.flowId);if(!e)throw Error("Flow with ID ".concat(p.flowId," not found."));_(e),tw.info("Flow definition loaded: ".concat(e.name))}catch(e){tw.error("Error loading flow definition:",e),H(e instanceof Error?e.message:"Failed to load flow definition."),_(null)}finally{O(!1)}})()},[p.flowId]),(0,o.useEffect)(()=>{if(F){tw.debug("Setting nodes and edges from flow definition");let e=F.nodes.map(e=>({...e,draggable:!1,selectable:!1,connectable:!1})),t=F.edges.map(e=>({...e,selectable:!1}));q(e),Y(t)}},[F,q,Y]);let X=(0,o.useCallback)(()=>{if(tw.debug("Previous button clicked. Current index: ".concat(I)),I>0){let e=I-1;tw.debug("Setting current step index to: ".concat(e)),C(e)}else tw.debug("Already at the first step, cannot go previous.")},[I]),$=(0,o.useCallback)(()=>{var e;if(tw.debug("Next button clicked. Current index: ".concat(I,", Trace length: ").concat(null==(e=p.executionTrace)?void 0:e.length)),p.executionTrace&&I<p.executionTrace.length-1){let e=I+1;tw.debug("Navigating to next trace step: ".concat(e)),C(e)}else tw.info("At end of trace, triggering API call for next step."),m()},[I,p.executionTrace,m]),Z=(0,o.useMemo)(()=>{if(p.executionTrace&&I>=0&&I<p.executionTrace.length)return p.executionTrace[I]},[p.executionTrace,I]),[ee,et]=(0,o.useState)(()=>Date.now());(0,o.useEffect)(()=>{if(!A)return;let e=()=>{let e=Date.now();return[...Object.values(A.byNode),...Object.values(A.byResource),...Object.values(A.byResourceName)].some(t=>e-t.ts<4e3)};if(!e())return;let t=setInterval(()=>{et(Date.now()),e()||clearInterval(t)},350);return()=>clearInterval(t)},[A]);let en=(0,o.useCallback)(e=>{var t,n;if(!A)return null;let r=A.byNode[e.id];if(r&&ee-r.ts<4e3)return r;let o=e.data;if((null!=(t=null==o?void 0:o.type)?t:e.type)!=="resource")return null;let a=null!=(n=null==o?void 0:o.properties)?n:{},l="run"===a.scope?"string"==typeof a.runName?A.byResourceName[a.runName]:void 0:"string"==typeof a.boundServer&&"string"==typeof a.uri?A.byResource[td(a.boundServer,a.uri)]:void 0;return l&&ee-l.ts<4e3?{kind:"read"===l.kind?"resource-read":"resource-write",ts:l.ts}:null},[A,ee]),er=(0,o.useMemo)(()=>{let e=null==Z?void 0:Z.nodeId;return B.map(t=>{var n;let r=t.id===e,o=null==y?void 0:y.includes(t.id),a=r?null:en(t),l=a?Math.max(.25,1-(ee-a.ts)/4e3):0,s=(null==a?void 0:a.kind)==="active"?S.palette.primary.main:"#009688";return{...t,style:{...t.style,border:r?"2px solid ".concat(S.palette.warning.main):a?"2px solid ".concat(s):o?"2px dashed ".concat(S.palette.error.main):null==(n=t.style)?void 0:n.border,boxShadow:r?"0 0 10px ".concat(S.palette.warning.light):a?"0 0 ".concat("resource-write"===a.kind?14:10,"px ").concat(s).concat(Math.round(255*l).toString(16).padStart(2,"0")):void 0}}})},[B,Z,y,S,en,ee]);return(0,r.jsxs)(tI,{elevation:2,children:[(0,r.jsxs)(tC,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-between"},children:[(0,r.jsxs)(l.default,{children:[(0,r.jsx)(u.default,{variant:"h6",children:"Flow Debugger"}),(0,r.jsxs)(u.default,{variant:"caption",color:"textSecondary",display:"block",children:["Click a node to toggle a breakpoint",y&&y.length>0?" \xb7 ".concat(y.length," active"):""]})]}),(0,r.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,r.jsx)(s.A,{title:k?"Hide execution trace":"Show execution trace",children:(0,r.jsx)(i.A,{size:"small",onClick:()=>E(e=>!e),color:k?"primary":"default","aria-label":k?"Hide execution trace":"Show execution trace",children:(0,r.jsx)(tn.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})})}),(0,r.jsx)(s.A,{title:N?"Hide step inspector":"Show step inspector",children:(0,r.jsx)(i.A,{size:"small",onClick:()=>T(e=>!e),color:N?"primary":"default","aria-label":N?"Hide step inspector":"Show step inspector",children:(0,r.jsx)(tn.A,{fontSize:"small"})})}),w&&(0,r.jsx)(s.A,{title:"Close debugger",children:(0,r.jsx)(i.A,{size:"small",onClick:w,"aria-label":"Close debugger",children:(0,r.jsx)(eO.A,{fontSize:"small"})})})]})]}),(0,r.jsxs)(tk,{children:[k&&(0,r.jsxs)(tE,{children:[(0,r.jsx)(u.default,{variant:"subtitle2",gutterBottom:!0,children:"Execution Trace"}),(0,r.jsxs)(R.A,{dense:!0,disablePadding:!0,children:[null==(t=p.executionTrace)?void 0:t.map((e,t)=>(0,r.jsx)(z.Ay,{disablePadding:!0,children:(0,r.jsx)(P.A,{selected:t===I,onClick:()=>(e=>{p.executionTrace&&e>=0&&e<p.executionTrace.length?(tw.debug("Trace step selected: ".concat(e)),C(e)):tw.warn("Invalid step index selected: ".concat(e)),C(e),C(e)})(t),children:(0,r.jsx)(D.A,{primary:"".concat(e.stepIndex,": ").concat(e.nodeName||e.nodeId),secondary:e.nodeType})})},e.stepIndex)),b&&(0,r.jsx)(z.Ay,{children:(0,r.jsx)(W.default,{size:20,sx:{margin:"auto"}})})]})]}),(0,r.jsx)(tN,{children:M?(0,r.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,r.jsx)(W.default,{})}):L?(0,r.jsx)(d.A,{severity:"error",sx:{margin:2},children:L}):(0,r.jsxs)(ta.Ln,{children:[" ",(0,r.jsx)(ta.Gc,{nodes:er,edges:J,onNodesChange:U,onEdgesChange:G,nodeTypes:tA,edgeTypes:tS,fitView:!0,attributionPosition:"bottom-right",nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!1,onNodeClick:(e,t)=>{e.preventDefault(),j&&j(t.id)},onEdgeClick:e=>e.preventDefault(),onPaneClick:()=>{},children:" "})]})}),N&&(0,r.jsxs)(tT,{children:[(0,r.jsx)(u.default,{variant:"subtitle2",gutterBottom:!0,children:"Step Inspector"}),Z?(0,r.jsxs)(l.default,{children:[(0,r.jsxs)(u.default,{variant:"body2",children:[(0,r.jsx)("b",{children:"Node:"})," ",Z.nodeName," (",Z.nodeId,")"]}),(0,r.jsxs)(u.default,{variant:"body2",children:[(0,r.jsx)("b",{children:"Type:"})," ",Z.nodeType]}),(0,r.jsxs)(u.default,{variant:"body2",children:[(0,r.jsx)("b",{children:"Timestamp:"})," ",new Date(Z.timestamp).toLocaleString()]}),(0,r.jsxs)(u.default,{variant:"body2",children:[(0,r.jsx)("b",{children:"Action Taken:"})," ",Z.actionTaken]}),Z.modelInput?(0,r.jsxs)(Q.A,{defaultExpanded:!0,sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,r.jsx)(K.A,{expandIcon:(0,r.jsx)(el.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,r.jsx)(u.default,{variant:"caption",children:(0,r.jsx)("b",{children:"Model Input"})})}),(0,r.jsx)(V.A,{sx:{p:0},children:(0,r.jsx)(tj,{modelInput:Z.modelInput})})]}):(0,r.jsx)(u.default,{variant:"caption",color:"textSecondary",sx:{display:"block",mt:2},children:"No model call for this step."}),(0,r.jsxs)(Q.A,{sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,r.jsx)(K.A,{expandIcon:(0,r.jsx)(el.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,r.jsx)(u.default,{variant:"caption",children:"Prep Result"})}),(0,r.jsx)(V.A,{sx:{p:0},children:(0,r.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(Z.prepResultSnapshot,null,2)})})]}),(0,r.jsxs)(Q.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,r.jsx)(K.A,{expandIcon:(0,r.jsx)(el.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,r.jsxs)(u.default,{variant:"caption",color:(null==(n=Z.execResultSnapshot)?void 0:n.success)===!1?"error":"inherit",children:["Exec Result ",(null==(a=Z.execResultSnapshot)?void 0:a.success)===!1?"(Error)":""]})}),(0,r.jsx)(V.A,{sx:{p:0},children:(null==(c=Z.execResultSnapshot)?void 0:c.success)===!1?(0,r.jsxs)(l.default,{sx:{p:1,background:S.palette.error.light,borderRadius:1},children:[" ",(0,r.jsxs)(u.default,{variant:"body2",color:"error",gutterBottom:!0,children:[(0,r.jsx)("b",{children:"Error:"})," ",Z.execResultSnapshot.error||"Unknown error"]}),Z.execResultSnapshot.errorDetails&&(0,r.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(Z.execResultSnapshot.errorDetails,null,2)})]}):(0,r.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(Z.execResultSnapshot,null,2)})})]}),(0,r.jsxs)(Q.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,r.jsx)(K.A,{expandIcon:(0,r.jsx)(el.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,r.jsx)(u.default,{variant:"caption",children:"State Before"})}),(0,r.jsx)(V.A,{sx:{p:0},children:(0,r.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(Z.stateBefore,null,2)})})]}),(0,r.jsxs)(Q.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,r.jsx)(K.A,{expandIcon:(0,r.jsx)(el.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,r.jsx)(u.default,{variant:"caption",children:"State After"})}),(0,r.jsx)(V.A,{sx:{p:0},children:(0,r.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(Z.stateAfter,null,2)})})]})]}):(0,r.jsx)(u.default,{variant:"body2",color:"textSecondary",children:"Select a step from the trace."}),(0,r.jsxs)(Q.A,{defaultExpanded:!0,sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,r.jsx)(K.A,{expandIcon:(0,r.jsx)(el.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,r.jsx)(u.default,{variant:"caption",children:"Run Data"})}),(0,r.jsx)(V.A,{sx:{p:0},children:(0,r.jsx)(tm,{conversationId:h,refreshToken:null==A?void 0:A.resourceVersion})})]})]})]}),(0,r.jsxs)(tR,{children:[(0,r.jsx)(f.A,{variant:"outlined",size:"small",onClick:X,disabled:b||I<=0,children:"Previous"}),(0,r.jsx)(f.A,{variant:"contained",size:"small",onClick:$,disabled:b||-1===I,children:p.executionTrace&&I<p.executionTrace.length-1?"Next Trace Step":"Step Next"}),x&&(0,r.jsx)(f.A,{variant:"outlined",size:"small",onClick:x,disabled:b,children:"Step Over"}),(0,r.jsx)(f.A,{variant:"contained",color:"secondary",size:"small",onClick:g,disabled:b,children:"Continue"}),(0,r.jsx)(f.A,{variant:"outlined",color:"error",size:"small",onClick:v,disabled:b,children:"Stop"})]})]})};function tD(e){return"string"==typeof e&&e.startsWith("quickchat-")}n(77890);var tP=n(94929),tF=n(29155),t_=n(63650);let tM=(0,ej.h)("frontend/services/chat/index");class tO extends Error{constructor(e,t,n){super(e),this.name="ChatApiError",this.status=t,this.body=n}}let tW="/v1/chat/conversations";async function tL(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 tO(t&&"object"==typeof t&&(t.error||t.message)||"Request failed with status ".concat(e.status),e.status,t);return t}class tH{async listConversations(){return tM.debug("listConversations: Entering method"),tL(await fetch(tW))}async getConversation(e){return tM.debug("getConversation: Entering method",{conversationId:e}),tL(await fetch("".concat(tW,"/").concat(encodeURIComponent(e))))}async createConversation(e){return tM.debug("createConversation: Entering method",{conversationId:e.id}),tL(await fetch(tW,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}))}async updateConversationFlow(e,t){return tM.debug("updateConversationFlow: Entering method",{conversationId:e,flowId:t}),tL(await fetch("".concat(tW,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({flowId:t})}))}async updateConversationTitle(e,t){return tM.debug("updateConversationTitle: Entering method",{conversationId:e}),tL(await fetch("".concat(tW,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:t})}))}async updateConversationApproval(e,t){return tM.debug("updateConversationApproval: Entering method",{conversationId:e,requireApproval:t}),tL(await fetch("".concat(tW,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApproval:t})}))}async deleteConversation(e){tM.debug("deleteConversation: Entering method",{conversationId:e});let t=await fetch("".concat(tW,"/").concat(encodeURIComponent(e)),{method:"DELETE"});await tL(t)}async respondToToolCall(e,t,n){return tM.debug("respondToToolCall: Entering method",{conversationId:e,action:t,toolCallId:n}),tL(await fetch("".concat(tW,"/").concat(encodeURIComponent(e),"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:t,toolCallId:n})}))}async debugStep(e){return tM.debug("debugStep: Entering method",{conversationId:e}),tL(await fetch("".concat(tW,"/").concat(encodeURIComponent(e),"/debug/step"),{method:"POST"}))}async debugContinue(e){return tM.debug("debugContinue: Entering method",{conversationId:e}),tL(await fetch("".concat(tW,"/").concat(encodeURIComponent(e),"/debug/continue"),{method:"POST"}))}async setBreakpoints(e,t){tM.debug("setBreakpoints: Entering method",{conversationId:e,count:t.length});let n=await fetch("".concat(tW,"/").concat(encodeURIComponent(e),"/breakpoints"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({breakpoints:t})});await tL(n)}async synthesizeQuickChat(e){return tM.debug("synthesizeQuickChat: Entering method",{conversationId:e.conversationId}),tL(await fetch("/api/flow/quick-chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}))}async cancel(e){tM.debug("cancel: Entering method",{conversationId:e});let t=await fetch("".concat(tW,"/").concat(encodeURIComponent(e),"/cancel"),{method:"POST"});await tL(t)}subscribeToEvents(e,t,n){let r=new EventSource(void 0!==n?"".concat(tW,"/").concat(encodeURIComponent(e),"/events?fromSeq=").concat(n):"".concat(tW,"/").concat(encodeURIComponent(e),"/events"));return r.onopen=()=>{var n;tM.debug("Execution event stream open",{conversationId:e}),null==(n=t.onOpen)||n.call(t)},r.onmessage=e=>{try{t.onEvent(JSON.parse(e.data))}catch(e){tM.warn("Failed to parse SSE event",{err:e})}},r.onerror=e=>{var n;tM.debug("SSE stream error (browser will retry if still open)"),null==(n=t.onError)||n.call(t,e)},r}}let tB=new tH,tq=(0,ej.h)("frontend/components/Chat/index");function tU(e){var t;if(Array.isArray(e.content))return e.content;let n="string"==typeof e.content?e.content:"",r=null!=(t=e.attachments)?t:[],o=r.filter(e=>"image"!==e.type),a=r.filter(e=>"image"===e.type);if(o.length>0&&(n+="\n\n"+o.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 tJ=/cancelled by user|execution cancelled/i,tY=e=>{var t,n;return(null==e?void 0:e.code)==="cancelled"||(null==e||null==(t=e.error)?void 0:t.code)==="cancelled"||[null==e?void 0:e.message,"string"==typeof(null==e||null==(n=e.body)?void 0:n.error)?e.body.error:void 0].some(e=>"string"==typeof e&&tJ.test(e))},tG=()=>{var e;let[t,n]=(0,o.useState)([]),[a,T]=(0,o.useState)(!0),[R,z]=(0,o.useState)(null),[D,P]=(0,o.useState)(null),[F,_]=(0,o.useState)(!1),[M,W]=(0,o.useState)(null),[L,H]=(0,N.Mj)(N.Zg.CURRENT_CONVERSATION_ID,null),[B,q]=(0,N.Mj)(N.Zg.LAST_PICKED_FLOW_ID,null),[U,J]=(0,o.useState)(!1),[Y,G]=(0,o.useState)(new Set),Q=(0,o.useCallback)((e,t)=>{e&&G(n=>{if(t===n.has(e))return n;let r=new Set(n);return t?r.add(e):r.delete(e),r})},[]),[K,V]=(0,o.useState)(null),[X,$]=(0,o.useState)([]),[Z,ee]=(0,o.useState)(!1),[et,en]=(0,o.useState)(!1),[er,eo]=(0,o.useState)(""),[ea,el]=(0,o.useState)(!1),[es,ei]=(0,o.useState)(null),[ed,ec]=(0,o.useState)(null),[eu,ep]=(0,o.useState)(null),[ef,eh]=(0,o.useState)(!1),[em,ex]=(0,o.useState)(null),[eg,ev]=(0,o.useState)(!1),[eb,ey]=(0,o.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-debugger-width"));return Number.isFinite(e)&&e>0?e:0}),ej=(0,o.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 r=e=>{ey(Math.min(Math.max(window.innerWidth-e.clientX,360),Math.round(.85*window.innerWidth)))},o=()=>{window.removeEventListener("pointermove",r),window.removeEventListener("pointerup",o),document.body.style.userSelect=t,document.body.style.cursor=n,ey(e=>(e>0&&window.localStorage.setItem("flujo-debugger-width",String(Math.round(e))),e))};window.addEventListener("pointermove",r),window.addEventListener("pointerup",o)},[]),[ew,eA]=(0,o.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-chat-sidebar-width"));return Number.isFinite(e)&&e>0?e:300}),[eS,eI]=(0,o.useState)(()=>"1"===window.localStorage.getItem("flujo-chat-sidebar-collapsed")),eC=(0,o.useCallback)(()=>{eI(e=>{let t=!e;return window.localStorage.setItem("flujo-chat-sidebar-collapsed",t?"1":"0"),t})},[]),ek=(0,o.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 r=e=>{eA(Math.min(Math.max(e.clientX,220),560))},o=()=>{window.removeEventListener("pointermove",r),window.removeEventListener("pointerup",o),document.body.style.userSelect=t,document.body.style.cursor=n,eA(e=>(e>0&&window.localStorage.setItem("flujo-chat-sidebar-width",String(Math.round(e))),e))};window.addEventListener("pointermove",r),window.addEventListener("pointerup",o)},[]),[eE,eN]=(0,o.useState)(null),[eT,ez]=(0,o.useState)(ti),[eD,eP]=(0,o.useState)([]),[eF,e_]=(0,o.useState)(null),eM=(0,o.useRef)(null),eO=(0,o.useRef)(null),eW=(0,o.useRef)(null),eL=(0,o.useRef)(-1),eH=(0,o.useRef)(L);(0,o.useEffect)(()=>{eH.current=L},[L]);let eq=(0,o.useRef)(new Set),eJ=(0,o.useRef)(new Set),eG=(0,o.useRef)(new Set),[eQ,eK]=(0,o.useState)(new Set),eV=(0,o.useCallback)((e,t)=>{e&&(t?eG.current.add(e):eG.current.delete(e),eK(new Set(eG.current)))},[]),eX=(0,o.useRef)(null),e$=(0,o.useRef)(!0),[eZ,e0]=(0,o.useState)(!1),e1=(0,o.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"auto",t=eX.current;t&&t.scrollTo({top:t.scrollHeight,behavior:e})},[]),e5=(0,o.useCallback)(()=>{let e=eX.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight<80;e$.current=t,e0(!t)},[]),e4=(0,o.useCallback)(()=>{e$.current=!0,e0(!1),e1("smooth")},[e1]);(0,o.useEffect)(()=>{e$.current=!0,e0(!1)},[L]),(0,o.useEffect)(()=>{e$.current&&e1("auto")},[null==D?void 0:D.messages,e1]);let e8=(0,o.useRef)(null);(0,o.useEffect)(()=>{e8.current=eF},[eF]),(0,o.useEffect)(()=>{let e=window.location.origin+"/v1";eM.current=new tF.Ay({baseURL:e,apiKey:"FLUJO",dangerouslyAllowBrowser:!0,maxRetries:0,timeout:18e6})},[]),(0,o.useEffect)(()=>{(async()=>{tq.debug("Loading flows");try{let e=await e6.g.loadFlows();$(e)}catch(e){tq.error("Error loading flows:",e)}})()},[]);let e3=(0,o.useCallback)(async(e,t)=>{var r;let o=null!=(r=null==t?void 0:t.silent)&&r;tq.debug("Fetching conversation list from backend",{silent:o}),o||(T(!0),z(null));let a=[],l=!1;try{for(let e of a=(await tB.listConversations()).filter(e=>!eJ.current.has(e.id)).sort((e,t)=>t.updatedAt-e.updatedAt))eq.current.delete(e.id);n(e=>{let t=e.filter(e=>eq.current.has(e.id)),n=t.length>0?[...t,...a].sort((e,t)=>t.updatedAt-e.updatedAt):a;return((e,t)=>e.length===t.length&&e.every((e,n)=>{let r=t[n];return e.id===r.id&&e.title===r.title&&e.flowId===r.flowId&&e.status===r.status&&e.createdAt===r.createdAt&&e.updatedAt===r.updatedAt}))(e,n)?e:n}),tq.info("Fetched ".concat(a.length," conversations for the list"))}catch(e){l=!0,tq.error("Error fetching conversation list:",e),o||(z("Failed to load conversation history."),n([]))}finally{if(o||T(!1),o||l)return;let t=void 0!==e?e:eH.current,n=eH.current;if(t&&(e=>a.some(t=>t.id===e)||eq.current.has(e))(t))t!==n&&(tq.debug("Setting currentConversationId to ".concat(t," after fetch/operation.")),H(t));else if(a.length>0){let e=a[0].id;e!==n&&(tq.debug("Selecting most recent conversation ".concat(e," after fetch/operation.")),H(e))}else null===n||eq.current.has(n)||(tq.debug("No conversations available after fetch/operation, clearing selection."),H(null))}},[H]);(0,o.useEffect)(()=>{e3()},[]),(0,o.useEffect)(()=>{let e=()=>{("undefined"==typeof document||"visible"===document.visibilityState)&&e3(void 0,{silent:!0})},t=setInterval(e,5e3);return document.addEventListener("visibilitychange",e),()=>{clearInterval(t),document.removeEventListener("visibilitychange",e)}},[e3]);let e9=(0,o.useCallback)(async e=>{if(eq.current.has(e))return void tq.debug("Skipping detail fetch for client-only conversation",{conversationId:e});if(eH.current!==e){tq.debug("Detail fetch requested for non-viewed conversation; refreshing list instead",{conversationId:e}),e3(void 0,{silent:!0});return}tq.debug("Fetching detailed conversation",{conversationId:e}),_(!0),W(null),P(null);try{let t=await tB.getConversation(e);if(eH.current!==e)return void tq.debug("Discarding stale detailed conversation response",{fetchedId:e,currentId:eH.current});P(t),n(n=>n.map(n=>{var r;return n.id===e?{...n,title:t.title,flowId:t.flowId,updatedAt:t.updatedAt,status:null!=(r=t.status)?r:n.status}:n}).sort((e,t)=>t.updatedAt-e.updatedAt)),tq.info("Fetched detailed conversation successfully",{conversationId:e})}catch(t){if(tq.error("Error fetching detailed conversation:",{conversationId:e,err:t}),eH.current!==e)return;t instanceof tO&&404===t.status?(W("Conversation ".concat(e," not found.")),H(null),e3()):W("Failed to load details for conversation ".concat(e,".")),P(null)}finally{eH.current===e&&_(!1)}},[e3,H]);(0,o.useEffect)(()=>{ei(null),ep(null),L?e9(L):(P(null),_(!1),W(null))},[L,e9]),(0,o.useEffect)(()=>{if(D){var e;ee(null!=(e=D.requireApproval)&&e)}},[null==D?void 0:D.id]);let te=(0,o.useCallback)(async e=>{if(ee(e),L)try{await tB.updateConversationApproval(L,e)}catch(e){tq.warn("Failed to persist requireApproval setting",{conversationId:L,err:e})}},[L]),tn=t.find(e=>e.id===L)||null,tr=(0,o.useMemo)(()=>{var e,t;return(null==(t=X.find(e=>e.id===(null==D?void 0:D.flowId)))||null==(e=t.nodes)?void 0:e.map(e=>({id:e.id,label:e.data.label||e.id})))||[]},[X,null==D?void 0:D.flowId]),to=(0,o.useMemo)(()=>{var e,t,n;let r=e=>!!e&&tr.some(t=>t.id===e);if(r(eu))return eu;if(r(null==D?void 0:D.currentNodeId))return D.currentNodeId;let o=null!=(t=null==D?void 0:D.messages)?t:[];for(let e=o.length-1;e>=0;e--){let t=o[e];if("assistant"===t.role&&r(t.processNodeId))return t.processNodeId}return null!=(n=null==(e=tr[0])?void 0:e.id)?n:null},[eu,D,tr]),ta=async()=>{var e,t,r;tq.debug("Attempting to create new conversation"),V(null);let o=B&&!tD(B)?X.find(e=>e.id===B):void 0,a=(null==(e=null!=(t=null!=o?o:X.find(e=>e.favorite))?t:X[0])?void 0:e.id)||null;if(!a){tq.error("Cannot create conversation: No flows available or first flow has no ID."),V("Cannot create a new conversation: No flows available.");return}let l=(0,eB.A)(),s=Date.now(),i={id:l,title:"New Conversation",flowId:a,createdAt:s,updatedAt:s};try{tq.info("Sending request to create conversation on backend",{payload:JSON.stringify(i)});let e=await tB.createConversation(i);tq.info("Successfully created conversation on backend",{conversationId:e.id}),n(t=>[e,...t].sort((e,t)=>t.updatedAt-e.updatedAt)),H(e.id),P({id:e.id,title:e.title,flowId:e.flowId,createdAt:e.createdAt,updatedAt:e.updatedAt,messages:[]}),_(!1),W(null)}catch(t){tq.error("Error creating conversation on backend:",t);let e="Failed to create conversation on the server.";t instanceof tO?e+=" Error: ".concat((null==(r=t.body)?void 0:r.error)||t.message):t instanceof Error&&(e+=" Error: ".concat(t.message)),V(e)}},[tl,ts]=(0,o.useState)(!1),tc=async e=>{V(null);let t=(0,eB.A)(),{flow:r}=await tB.synthesizeQuickChat({conversationId:t,modelId:e.modelId,servers:e.servers,systemPrompt:e.systemPrompt}),o=Date.now(),a=await tB.createConversation({id:t,title:"Quick Chat",flowId:r.id,flowSnapshot:r,createdAt:o,updatedAt:o});n(e=>[a,...e].sort((e,t)=>t.updatedAt-e.updatedAt)),H(a.id),P({id:a.id,title:a.title,flowId:a.flowId,createdAt:a.createdAt,updatedAt:a.updatedAt,messages:[]}),_(!1),W(null),ts(!1)},tu=(0,o.useCallback)(e=>{tq.debug("Updating detailed conversation state locally",{conversationId:e.id});let t={...e,updatedAt:Date.now()};P(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))},[]),tp=(0,o.useCallback)(()=>{eW.current&&(tq.debug("Closing execution event stream"),eW.current.close(),eW.current=null)},[]),tf=(0,o.useCallback)((e,t)=>{n(n=>{let r=n.findIndex(t=>t.id===e);if(-1===r||n[r].status===t)return n;let o=[...n];return o[r]={...o[r],status:t},o})},[]),th=(0,o.useCallback)(e=>{if("number"==typeof e.seq){if(e.seq<=eL.current)return;eL.current=e.seq}let t=e=>eN(t=>{var n,r,o,a;return{totalTokens:null!=(r=null!=(n=e.totalTokens)?n:null==t?void 0:t.totalTokens)?r:0,activeNode:void 0!==e.activeNode?e.activeNode:null!=(o=null==t?void 0:t.activeNode)?o:null,startedAt:null!=(a=null==t?void 0:t.startedAt)?a:Date.now(),lastEventAt:Date.now()}}),n=e=>ez(t=>{let n=Date.now(),r={byNode:{...t.byNode},byResource:{...t.byResource},byResourceName:{...t.byResourceName},resourceVersion:t.resourceVersion};return e(r),function(e,t){let n=e=>{let n={};for(let[r,o]of Object.entries(e))t-o.ts<4e3&&(n[r]=o);return n};return{byNode:n(e.byNode),byResource:n(e.byResource),byResourceName:n(e.byResourceName),resourceVersion:e.resourceVersion}}(r,n)});switch(e.type){case"run:start":eN({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),ez(ti),e.conversationId&&(tf(e.conversationId,"running"),eV(e.conversationId,!1));break;case"message":{let n=e.message;t({}),P(t=>{let r;if(!t||t.id!==e.conversationId)return t;let o=t.messages.findIndex(e=>e.id===n.id);return o>=0?(r=[...t.messages])[o]={...r[o],...n}:r=[...t.messages,n],{...t,messages:r}});break}case"usage":eN(t=>{var n,r,o;return{totalTokens:(null!=(n=null==t?void 0:t.totalTokens)?n:0)+(e.totalTokens||0),activeNode:null!=(r=null==t?void 0:t.activeNode)?r:null,startedAt:null!=(o=null==t?void 0:t.startedAt)?o:Date.now(),lastEventAt:Date.now()}});break;case"node:enter":var r,o,a;if(t({activeNode:(null==(r=e.node)?void 0:r.nodeName)||(null==(o=e.node)?void 0:o.nodeId)||null}),null==(a=e.node)?void 0:a.nodeId){let t=e.node.nodeId;n(e=>{e.byNode[t]={kind:"active",ts:Date.now()}})}break;case"resource:read":case"resource:write":{let r="resource:read"===e.type?"read":"write";n(t=>{var n;let o=Date.now();(null==(n=e.node)?void 0:n.nodeId)&&(t.byNode[e.node.nodeId]={kind:"read"===r?"resource-read":"resource-write",ts:o}),e.server&&e.uri&&(t.byResource[td(e.server,e.uri)]={kind:r,ts:o}),e.name&&(t.byResourceName[e.name]={kind:r,ts:o}),"write"===r&&(t.resourceVersion=t.resourceVersion+1)}),t({});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===eH.current&&ei(e.pendingToolCalls||[]),e.conversationId&&tf(e.conversationId,"awaiting_tool_approval");break;case"breakpoint:hit":case"run:paused":J(!1),e.conversationId&&(Q(e.conversationId,!1),tf(e.conversationId,"paused_debug")),eh(!0);break;case"run:done":if(e.conversationId&&(Q(e.conversationId,!1),tf(e.conversationId,e.status)),e.conversationId&&e8.current&&e.conversationId!==e8.current)break;eN(null),ez(ti),J(!1),e_(null),tp(),e.conversationId&&e.conversationId===eH.current?e9(e.conversationId):e3(void 0,{silent:!0});break;case"error":V(e.message||"Execution error");break;default:t({})}},[tp,e9,e3,Q,tf,eV]),tm=(0,o.useCallback)((e,t)=>(tp(),eL.current=void 0!==t?t-1:-1,new Promise(n=>{let r=!1,o=()=>{r||(r=!0,n())};try{eW.current=tB.subscribeToEvents(e,{onEvent:th,onOpen:o},t),setTimeout(o,1500)}catch(t){tq.error("Failed to open execution event stream",{conversationId:e,err:t}),o()}})),[th,tp]);(0,o.useEffect)(()=>{if(L&&(null==tn?void 0:tn.status)==="running"&&e8.current!==L){if(eG.current.has(L))return void tq.debug("Skipping re-attach to a conversation the user just stopped",{conversationId:L});tq.info("Re-attaching to in-progress run",{conversationId:L}),e8.current=L,J(!0),e_(L),Q(L,!0),eN(e=>null!=e?e:{totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),tm(L,0)}},[L,null==tn?void 0:tn.status,tm]);let tx=async e=>{tq.debug("Attempting to delete conversation",{conversationId:e}),V(null),eJ.current.add(e);let r=eq.current.delete(e);e8.current===e&&(tp(),J(!1),e_(null),eN(null)),Q(e,!1);let o=t.filter(t=>t.id!==e);n(o);let a=L;L===e&&(o.length>0?(a=o[0].id,tq.debug("Deleted current conversation, selecting next most recent",{nextSelectionId:a})):(a=null,tq.debug("Deleted last conversation, clearing selection")),H(a));try{await tB.deleteConversation(e),tq.info("Successfully deleted conversation on backend",{conversationId:e})}catch(o){tq.error("Error deleting conversation:",{conversationId:e,err:o}),V("Failed to delete conversation ".concat(e,". Please try again.")),eJ.current.delete(e),r&&eq.current.add(e),n(t),H(L)}},tg=async e=>{if(tq.debug("Flow selected, attempting to update",{flowId:e,currentConversationId:L}),V(null),!L){tq.warn("Cannot update flow: No conversation selected."),V("Please select a conversation first.");return}D&&D.id===L&&P({...D,flowId:e,updatedAt:Date.now()}),n(t=>t.map(t=>t.id===L?{...t,flowId:e,updatedAt:Date.now()}:t).sort((e,t)=>t.updatedAt-e.updatedAt));try{let t=await tB.updateConversationFlow(L,e);tq.info("Successfully updated flowId on backend",{conversationId:L,flowId:e}),P(e=>e&&e.id===L?(tq.debug("Confirming detailedConversation update from server response",{conversationId:L,flowId:t.flowId}),{...e,flowId:t.flowId,updatedAt:t.updatedAt}):(tq.debug("Skipping detailedConversation update, ID mismatch or null state",{currentDetailedId:null==e?void 0:e.id,targetId:L}),e)),n(e=>e.map(e=>e.id===L?t:e).sort((e,t)=>t.updatedAt-e.updatedAt))}catch(a){tq.error("Error updating flowId on backend:",{conversationId:L,flowId:e,err:a});let o="Failed to update the selected flow.";if(a instanceof tO){var r;o+=" Error: ".concat((null==(r=a.body)?void 0:r.error)||a.message)}else a instanceof Error&&(o+=" Error: ".concat(a.message));V(o),P(D),n(t)}},tv=()=>{var e,t;eo(null!=(t=null!=(e=null==D?void 0:D.title)?e:null==tn?void 0:tn.title)?t:""),en(!0)},tb=async()=>{var e,t;if(en(!1),!L)return;let r=null!=(t=null!=(e=null==D?void 0:D.title)?e:null==tn?void 0:tn.title)?t:"",o=er.trim().slice(0,200);if(o&&o!==r){P(e=>e&&e.id===L?{...e,title:o}:e),n(e=>e.map(e=>e.id===L?{...e,title:o}:e));try{let e=await tB.updateConversationTitle(L,o);P(t=>t&&t.id===L?{...t,title:e.title}:t),n(t=>t.map(t=>t.id===L?{...t,title:e.title}:t))}catch(e){tq.warn("Failed to rename conversation",{conversationId:L,err:e}),P(e=>e&&e.id===L?{...e,title:r}:e),n(e=>e.map(e=>e.id===L?{...e,title:r}:e)),V("Failed to rename the conversation.")}}},ty=async function(e){var t,n;let r,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!e.trim()&&0===o.length)return;if(!D){tq.error("Cannot send message, detailed conversation not loaded."),V("Cannot send message: conversation details not loaded.");return}tq.debug("Sending message",{conversationId:D.id,contentLength:e.length,attachmentsCount:o.length});let a=D.messages,l=!a.some(e=>"user"===e.role),s=D.flowId;if(eu)r=eu,ep(null),tq.debug("Assigning manually picked node ID to user message: ".concat(r));else if(l){let e=X.find(e=>e.id===s),n=null==e||null==(t=e.nodes)?void 0:t[0];n?(r=n.id,tq.debug("Assigning start node ID to first user message: ".concat(r))):tq.warn("Could not find start node for flow ".concat(s,". 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){r=t.processNodeId,tq.debug("Assigning last assistant node ID to user message: ".concat(r));break}}if(!r){let e=X.find(e=>e.id===s),t=null==e||null==(n=e.nodes)?void 0:n[0];t?(r=t.id,tq.debug("No prior assistant node ID found, falling back to start node ID: ".concat(r))):tq.warn("Could not find start node for fallback in flow ".concat(s,". User message will not have a processNodeId."))}}let i={id:(0,eB.A)(),role:"user",content:e,timestamp:Date.now(),attachments:o.length>0?o:void 0,processNodeId:r},d={...D,messages:[...D.messages,i]};tu(d),d.flowId?await tA(d):(V("Please select a flow for this conversation before sending messages"),P(D))},tj=(0,o.useCallback)((e,t)=>{tq.verbose("Handling API response data",JSON.stringify(e)),Q(t,"running"===e.status);let r=e8.current===t,o=eH.current===t;if("paused_debug"===e.status&&e.debugState)return(tq.info("API Response: Paused for debugging",{conversationId:t}),o)?(ex(e.debugState),eh(!0),ev(!0),J(!1),e_(null),tp(),tw(),P(n=>(null==n?void 0:n.id)===t&&e.debugState.messages&&JSON.stringify(n.messages)!==JSON.stringify(e.debugState.messages)?(tq.debug("Updating detailed conversation messages from debug state"),{...n,messages:e.debugState.messages,updatedAt:e.debugState.updatedAt}):n),n(n=>n.map(n=>{var r,o;return n.id===t?{...n,title:null!=(r=e.debugState.title)?r:n.title,flowId:null!=(o=e.debugState.flowId)?o:n.flowId,status:"paused_debug",updatedAt:e.debugState.updatedAt}:n}).sort((e,t)=>t.updatedAt-e.updatedAt))):(tf(t,"paused_debug"),r&&(J(!1),e_(null),tp(),tw())),!0;if(("completed"===e.status||"error"===e.status)&&o?(tq.info("API Response: Execution completed or errored (Status: ".concat(e.status,"). Hiding debugger panel."),{conversationId:t}),eh(!1),ex(null),ev(!1)):tq.debug("API Response: Status is '".concat(e.status,"'. Debugger panel visibility unchanged (currently ").concat(ef?"visible":"hidden",")."),{conversationId:t}),e.messages&&e.conversation_id===t){let n=e.messages.map((e,n)=>"number"!=typeof e.timestamp||isNaN(e.timestamp)?(tq.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);P(r=>{var o,a;let l=r;return(null==r?void 0:r.id)===t&&JSON.stringify(r.messages)!==JSON.stringify(n)&&(tq.info("API Response/Polling: Updating detailed conversation messages",{conversationId:t,newMessageCount:n.length}),l={...r,messages:n,updatedAt:e.updatedAt||r.updatedAt}),tq.debug("Polling: setDetailedConversation callback executed.",{conversationId:t,messagesChanged:l!==r,newMessageCount:null!=(a=null==l||null==(o=l.messages)?void 0:o.length)?a:"N/A"}),l})}if("awaiting_tool_approval"===e.status)tq.info("API Response/Polling: Pausing for tool approval",{conversationId:t}),o&&ei(e.pendingToolCalls||[]),r&&(J(!1),e_(null),tp(),tw());else if("completed"===e.status||"error"===e.status){if(tq.info("API Response/Polling: Stopping due to final status",{conversationId:t,status:e.status}),r&&(tw(),J(!1),e_(null),tp()),"error"===e.status){var a,l;let n=(null==(a=e.error)?void 0:a.message)||(null==(l=e.lastResponse)?void 0:l.error)||"Unknown error during execution";tJ.test(n)||eG.current.has(t)?(eV(t,!0),(r||o)&&V(null),tq.info("API Response/Polling: Execution cancelled by user",{conversationId:t})):(V(n),tq.error("API Response/Polling: Execution resulted in error",{conversationId:t,error:e.error||e.lastResponse}))}e9(t)}else"running"!==e.status||ef?o&&ei(null):(o&&ei(null),r&&!eO.current&&J(!0));return e.conversation_id===t&&n(n=>n.map(n=>{var r,o,a;return n.id===t?{...n,title:null!=(r=e.title)?r:n.title,flowId:null!=(o=e.flowId)?o:n.flowId,status:null!=(a=e.status)?a:n.status,updatedAt:e.updatedAt||n.updatedAt}:n}).sort((e,t)=>t.updatedAt-e.updatedAt)),!1},[P,ei,J,V,eh,ex,n,e9,tp,Q,tf,eV]),tw=()=>{eO.current&&(tq.debug("Stopping polling interval"),clearInterval(eO.current),eO.current=null)};(0,o.useEffect)(()=>()=>{tp()},[tp]);let tA=async e=>{if(!(null==e?void 0:e.id)||!e.flowId||!eM.current)return tq.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}),V("Cannot send message: Missing conversation ID or flow ID."),!1;ei(null),V(null),J(!0),e_(e.id),Q(e.id,!0),eV(e.id,!1);let t=eq.current.delete(e.id);eN({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await tm(e.id);let n=!1;try{let t;if(tD(e.flowId))t="flow-Quick Chat",tq.debug("Sending quick chat to completions",{flowId:e.flowId,conversationId:e.id});else{let n=await e6.g.getFlow(e.flowId);if(!n)throw Error("Flow with ID ".concat(e.flowId," not found"));t="flow-".concat(n.name),tq.debug("Sending to chat completions",{flowId:e.flowId,flowName:n.name,conversationId:e.id})}let r=e.messages.filter(e=>{var t;return!e.disabled&&!((null!=(t=e.depth)?t:0)>0)}).map(e=>{let t=tU(e),n=e.processNodeId,r={id:e.id,timestamp:e.timestamp};return"user"===e.role?{role:"user",content:t,...r,processNodeId:n}:"assistant"===e.role?{role:"assistant",content:t,tool_calls:e.tool_calls,...r,processNodeId:n}:"system"===e.role?{role:"system",content:t,...r,processNodeId:n}:"tool"===e.role?e.tool_call_id?{role:"tool",content:t,tool_call_id:e.tool_call_id,...r,processNodeId:n}:{role:"user",content:"string"==typeof t?"Tool result: ".concat(t):t,...r,processNodeId:n}:{role:"user",content:t,...r,processNodeId:n}}),o=await eM.current.chat.completions.create({model:t,messages:r,stream:!1,metadata:(()=>{let t={flujo:"true",requireApproval:Z?"true":void 0,flujodebug:ea?"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})()});tq.debug("Chat completion initial response received",{completionId:o.id}),n=!0;let a={...o,status:o.status||"completed",conversation_id:e.id,messages:o.messages||e.messages,pendingToolCalls:o.pendingToolCalls,debugState:o.debugState,error:o.error,lastResponse:o.lastResponse,updatedAt:o.updatedAt||Date.now()},l=tj(a,e.id);l||eO.current?l&&tq.debug("Debug state handled, polling remains stopped."):tq.debug("Starting polling after initial non-debug response.")}catch(a){if(tY(a)||eG.current.has(e.id))return tq.info("Chat completion cancelled by user",{conversationId:e.id}),n=!1,Q(e.id,!1),eV(e.id,!0),e8.current===e.id&&(tw(),J(!1),e_(null),tp(),V(null)),n;tq.error("Error calling chat completions API:",a),n=!1;let o="An error occurred while sending the message.";if(a instanceof t_.LG)o="API Error: ".concat(a.message," (Status: ").concat(a.status,")"),a.code&&(o+=" (Code: ".concat(a.code,")")),a.type&&(o+=" [Type: ".concat(a.type,"]")),tq.verbose("APIError details",JSON.stringify(a));else if(a instanceof t_.vc){o="OpenAI Error: ".concat(a.message);let e=a.error;e&&"object"==typeof e&&(e.code&&(o+=" (Code: ".concat(e.code,")")),e.type&&(o+=" [Type: ".concat(e.type,"]"))),tq.verbose("OpenAIError details",JSON.stringify(a))}else if(a instanceof tO){var r;o="Error: ".concat((null==(r=a.body)?void 0:r.error)||a.message),a.status&&(o+=" (Status: ".concat(a.status,")")),tq.verbose("ChatApiError details",JSON.stringify(a.body))}else a instanceof Error&&(o=a.message);V(o),Q(e.id,!1),e8.current===e.id&&(tw(),J(!1),e_(null),tp()),t&&eq.current.add(e.id)}finally{}return n},tS=async(e,t,n)=>{if(!D)return;tq.debug("Editing message",{messageId:e,contentLength:t.length,processNodeId:n});let r=D.messages.findIndex(t=>t.id===e);if(-1===r)return;let o={...D.messages[r],content:t,timestamp:Date.now(),processNodeId:n||void 0},a=[...D.messages.slice(0,r),o],l={...D,messages:a};if(tu(l),l.flowId){let e={flujo:"true",requireApproval:Z?"true":void 0,flujodebug:ea?"true":void 0,conversationId:l.id,processNodeId:n||void 0};if(!eM.current)return;V(null),J(!0),e_(l.id),Q(l.id,!0),eV(l.id,!1),eN({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await tm(l.id);try{let t=await e6.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=tU(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}}),r=await eM.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})()}),o={...r,status:r.status||"completed",conversation_id:l.id,messages:r.messages||l.messages,pendingToolCalls:r.pendingToolCalls,debugState:r.debugState,error:r.error,updatedAt:r.updatedAt||Date.now()};tj(o,l.id)}catch(e){tY(e)||eG.current.has(l.id)?(tq.info("Edited-message run cancelled by user",{conversationId:l.id}),eV(l.id,!0)):(tq.error("Error sending edited message:",e),V(e instanceof Error?e.message:"Failed to send edited message")),Q(l.id,!1),e8.current===l.id&&(J(!1),e_(null),tp())}}},tI=async(e,t)=>{if(L){tq.info("Handling tool response: ".concat(e),{conversationId:L,toolCallId:t}),ei(null),J(!0),e_(L),Q(L,!0),V(null),await tm(L);try{let n=await tB.respondToToolCall(L,e,t);tq.debug("Tool response successful",{conversationId:L,action:e,toolCallId:t}),tj(n,L)}catch(o){if(tY(o)||eG.current.has(L)){tq.info("Tool-response resume cancelled by user",{conversationId:L}),eV(L,!0),e8.current===L&&J(!1),Q(L,!1);return}tq.error("Error sending tool response (".concat(e,")"),{conversationId:L,toolCallId:t,err:o});let r="Failed to ".concat(e," tool call.");if(o instanceof tO){var n;r+=" Error: ".concat((null==(n=o.body)?void 0:n.error)||o.message)}else o instanceof Error&&(r+=" Error: ".concat(o.message));V(r),e8.current===L&&J(!1),Q(L,!1)}}},tC=async()=>{if(L&&ef){tq.info("Handling debug step request",{conversationId:L}),J(!0),e_(L),Q(L,!0),V(null),await tm(L);try{let e=await tB.debugStep(L);tj(e,L)}catch(e){tq.error("Error during debug step API call",{conversationId:L,err:e}),V(e instanceof Error?e.message:"Failed to execute debug step."),J(!1),Q(L,!1),eh(!1),ex(null)}finally{}}},tk=async()=>{if(L&&ef){tq.info("Handling debug continue request",{conversationId:L}),J(!0),e_(L),Q(L,!0),V(null),eh(!1),await tm(L);try{let e=await tB.debugContinue(L);tj(e,L)}catch(e){tq.error("Error during debug continue API call",{conversationId:L,err:e}),V(e instanceof Error?e.message:"Failed to continue execution."),J(!1),Q(L,!1)}finally{}}};(0,o.useEffect)(()=>{if(em){var e;eP(null!=(e=em.breakpoints)?e:[])}},[em]);let tE=(0,o.useCallback)(async e=>{if(!L)return;let t=eD.includes(e)?eD.filter(t=>t!==e):[...eD,e];eP(t);try{await tB.setBreakpoints(L,t)}catch(e){tq.error("Failed to update breakpoints",{conversationId:L,err:e}),eP(eD)}},[eD,L]),tN=async()=>{if(!L||!ef)return;let e=null==em?void 0:em.currentNodeId;J(!0),e_(L),Q(L,!0),V(null),await tm(L);try{for(let o=0;o<50;o++){var t,n,r;let o=await tB.debugStep(L),a=null!=(r=null==o?void 0:o.status)?r:null==o||null==(t=o.debugState)?void 0:t.status,l=null==o||null==(n=o.debugState)?void 0:n.currentNodeId;if("paused_debug"!==a||l&&l!==e)return void tj(o,L)}tq.warn("Step Over hit iteration cap",{conversationId:L}),J(!1),Q(L,!1)}catch(e){tq.error("Error during step over",{conversationId:L,err:e}),V(e instanceof Error?e.message:"Failed to step over."),J(!1),Q(L,!1)}},tT=async()=>{if(L){tq.info("Cancelling request",{conversationId:L}),tw(),J(!1),e_(null),Q(L,!1),eV(L,!0),ev(!1),tp(),ei(null),V(null);try{await tB.cancel(L),tq.debug("Cancel request sent successfully",{conversationId:L}),await e9(L)}catch(e){tq.error("Error sending cancel request",{conversationId:L,err:e}),V("Failed to send cancel request to the server.")}}},tR=async e=>{if(e===L)return void await tT();tq.info("Stopping background conversation",{conversationId:e}),eV(e,!0);try{await tB.cancel(e),Q(e,!1),await e3(void 0,{silent:!0})}catch(t){tq.error("Error stopping background conversation",{conversationId:e,err:t}),V("Failed to send cancel request to the server.")}},tM=async()=>{tq.info("Closing debugger panel",{conversationId:L}),eh(!1),ex(null),ev(!1),await tT()};tq.debug("Rendering Chat component",{currentConversationId:L,isHandleEditMessageDefined:!0});let tW=(eg||ef)&&!!em&&!!L,tL=(null==tn?void 0:tn.status)==="awaiting_tool_approval"||!!es,tH=!(tL||(null==tn?void 0:tn.status)==="paused_debug")&&(U&&eF===L||!!L&&Y.has(L)||(null==tn?void 0:tn.status)==="running"),tG=!tH&&!!L&&eQ.has(L);return(0,r.jsxs)(l.default,{sx:{display:"flex",height:"calc(100vh - 64px)"},children:[eS&&(0,r.jsx)(l.default,{sx:{width:40,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",justifyContent:"center",pt:1},children:(0,r.jsx)(s.A,{title:"Show conversation sidebar",children:(0,r.jsx)(i.A,{size:"small",onClick:eC,"aria-label":"Show conversation sidebar",children:(0,r.jsx)(k.A,{fontSize:"small"})})})}),!eS&&(0,r.jsx)(l.default,{sx:{width:ew,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",flexDirection:"column"},children:a?(0,r.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",p:2},children:(0,r.jsx)(tP.default,{size:"medium",color:"primary"})}):R?(0,r.jsx)(d.A,{severity:"error",sx:{m:2},children:R}):(0,r.jsx)(O,{conversations:t,currentConversationId:L,onSelectConversation:H,onDeleteConversation:tx,onStopConversation:tR,onNewConversation:ta,onQuickChat:()=>ts(!0),onCollapse:eC})}),!eS&&(0,r.jsx)(l.default,{onPointerDown:ek,sx:{width:"6px",flexShrink:0,cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":"Resize conversation sidebar"}),(0,r.jsxs)(l.default,{sx:{flex:1,height:"100%",display:"flex",minWidth:0,minHeight:0},children:[(0,r.jsxs)(l.default,{sx:{flex:1,minWidth:0,display:"flex",flexDirection:"column",height:"100%"},children:[L&&(0,r.jsx)(l.default,{sx:{px:2,pt:2,pb:1,display:"flex",alignItems:"center",gap:1,minWidth:0},children:et?(0,r.jsx)(c.A,{value:er,onChange:e=>eo(e.target.value),onBlur:tb,onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),tb()):"Escape"===e.key&&en(!1)},size:"small",autoFocus:!0,fullWidth:!0,inputProps:{maxLength:200,"aria-label":"Conversation title"}}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(u.default,{variant:"h6",noWrap:!0,onClick:tv,title:(null==D?void 0:D.title)||(null==tn?void 0:tn.title)||"",sx:{flex:1,minWidth:0,cursor:"text"},children:(null==D?void 0:D.title)||(null==tn?void 0:tn.title)||"Untitled Conversation"}),(0,r.jsx)(s.A,{title:"Rename conversation",children:(0,r.jsx)(i.A,{size:"small",onClick:tv,"aria-label":"Rename conversation",children:(0,r.jsx)(E.A,{fontSize:"small"})})})]})}),L&&(0,r.jsxs)(l.default,{sx:{p:2,borderBottom:1,borderColor:"divider",display:"flex",alignItems:"center",gap:2},children:[(0,r.jsx)(l.default,{sx:{flex:1,minWidth:0},children:tD((null==tn?void 0:tn.flowId)||(null==D?void 0:D.flowId))?(0,r.jsx)(p.A,{color:"primary",variant:"outlined",icon:(0,r.jsx)(w.A,{}),label:"Quick Chat"}):(0,r.jsx)(e7,{selectedFlowId:(null==tn?void 0:tn.flowId)||(null==D?void 0:D.flowId)||null,onSelectFlow:e=>{var t,n,r,o;if(!L){tq.warn("Cannot update flow: No conversation selected."),V("Please select a conversation first.");return}tD(e)||q(e);let a=null!=(r=null!=(n=null==D?void 0:D.flowId)?n:null==tn?void 0:tn.flowId)?r:null;if((null!=(o=null==D||null==(t=D.messages)?void 0:t.length)?o:0)>0&&a&&e!==a){tq.debug("Flow switch on executed conversation — asking for confirmation",{flowId:e,currentFlowId:a}),ec(e);return}tg(e)},disabled:ef})}),(0,r.jsx)(e2,{usage:null==D?void 0:D.usage,contextInfo:null==D?void 0:D.contextInfo,availableNodes:tr})]}),(0,r.jsxs)(l.default,{sx:{flex:1,minHeight:0,position:"relative",display:"flex",flexDirection:"column"},children:[(0,r.jsx)(l.default,{ref:eX,onScroll:e5,sx:{flex:1,overflow:"auto",p:2},children:F?(0,r.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,r.jsx)(tP.default,{size:"medium",color:"primary"})}):M?(0,r.jsx)(d.A,{severity:"error",sx:{m:2},children:M}):D?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(eR,{messages:D.messages,pendingToolCalls:es,availableNodes:tr,conversationId:D.id,onToggleDisabled:e=>{if(!D)return;tq.debug("Toggling message disabled state",{messageId:e});let t=D.messages.map(t=>t.id===e?{...t,disabled:!t.disabled}:t);tu({...D,messages:t})},onSplitConversation:e=>{if(!D)return;tq.debug("Splitting conversation at message",{messageId:e});let t=D.messages.findIndex(t=>t.id===e);if(-1===t)return;let r=D.messages.slice(0,t+1),o=(0,eB.A)(),a={id:o,title:"Split from ".concat(D.title),messages:r,flowId:D.flowId,createdAt:Date.now(),updatedAt:Date.now()},l={id:o,title:a.title,flowId:a.flowId,createdAt:a.createdAt,updatedAt:a.updatedAt};eq.current.add(o),n(e=>[l,...e].sort((e,t)=>t.updatedAt-e.updatedAt)),H(o),P(a),_(!1),W(null)},onEditMessage:tS,onApproveToolCall:e=>{tI("approve",e)},onRejectToolCall:e=>{tI("reject",e)}}),!U&&!ef&&D.messages.length>0&&(null==tn?void 0:tn.status)==="completed"&&(0,r.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,r.jsx)(d.A,{icon:(0,r.jsx)(S.A,{fontSize:"inherit"}),severity:"success",variant:"filled",sx:{borderRadius:2,py:.5},children:"Conversation completed"})}),!U&&!ef&&tG&&(0,r.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,r.jsx)(d.A,{icon:(0,r.jsx)(C.A,{fontSize:"inherit"}),severity:"info",variant:"outlined",sx:{borderRadius:2,py:.5,alignItems:"center"},action:(0,r.jsx)(f.A,{color:"inherit",size:"small",startIcon:(0,r.jsx)(A.A,{}),onClick:()=>tA(D),children:"Resume"}),children:"Conversation stopped"})}),!U&&!ef&&!K&&!tG&&(null==tn?void 0:tn.status)==="error"&&(0,r.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,r.jsx)(d.A,{icon:(0,r.jsx)(I.A,{fontSize:"inherit"}),severity:"error",variant:"filled",sx:{borderRadius:2,py:.5,alignItems:"center"},action:(0,r.jsx)(f.A,{color:"inherit",size:"small",startIcon:(0,r.jsx)(A.A,{}),onClick:()=>{tA(D)},children:"Retry"}),children:"Conversation ended with an error"})}),tH&&!ef&&(0,r.jsx)(eY,{liveStats:eE,onStop:tT,stopDisabled:!L}),!tH&&tL&&!ef&&(0,r.jsx)(eY,{liveStats:eE,awaitingApproval:!0,onStop:tT,stopDisabled:!L}),K&&(0,r.jsx)(d.A,{severity:"error",sx:{mt:2},action:(0,r.jsx)(f.A,{color:"inherit",size:"small",startIcon:(0,r.jsx)(A.A,{}),onClick:()=>{D&&tA(D)},children:"Retry"}),children:K})]}):(0,r.jsx)(u.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,r.jsx)(h.A,{in:eZ,unmountOnExit:!0,children:(0,r.jsx)(m.A,{size:"small",color:"primary","aria-label":"Scroll to latest messages",onClick:e4,sx:{position:"absolute",bottom:16,right:24,zIndex:2},children:(0,r.jsx)(j.A,{})})})]}),(0,r.jsx)(l.default,{sx:{p:2,borderTop:1,borderColor:"divider"},children:(0,r.jsx)(eU,{onSendMessage:ty,disabled:F||!!L&&Y.has(L)||!((null==D?void 0:D.flowId)||(null==tn?void 0:tn.flowId))||!!es||ef,requireApproval:Z,onRequireApprovalChange:te,executeInDebugger:ea,onExecuteInDebuggerChange:el,availableNodes:tr,currentNodeId:to,nodeOverrideActive:!!eu,onSelectNode:ep})})]})," ",tW&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(l.default,{onPointerDown:ej,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,r.jsx)(l.default,{sx:{width:eb?"".concat(eb,"px"):"50%",minWidth:360,maxWidth:"85vw",flexShrink:0,display:"flex",flexDirection:"column",height:"100%"},children:(0,r.jsx)(tz,{debugState:em,conversationId:L,liveActivity:eT,onStep:tC,onStepOver:tN,onContinue:tk,onCancel:tT,isLoading:U,breakpoints:eD,onToggleBreakpoint:tE,onClose:tM})})]})]})," ",(0,r.jsxs)(x.A,{open:!!ed,onClose:()=>ec(null),children:[(0,r.jsx)(g.A,{children:"Switch flow?"}),(0,r.jsx)(v.A,{children:(0,r.jsxs)(b.A,{children:["This conversation has already been processed with its current flow."," ","If you switch to"," ",(0,r.jsx)("strong",{children:(null==(e=X.find(e=>e.id===ed))?void 0:e.name)||"the selected flow"}),","," ","the conversation will continue processing from that flow's Start node again."]})}),(0,r.jsxs)(y.A,{children:[(0,r.jsx)(f.A,{onClick:()=>ec(null),children:"Cancel"}),(0,r.jsx)(f.A,{variant:"contained",onClick:()=>{ec(null),ed&&tg(ed)},children:"Switch Flow"})]})]}),(0,r.jsx)(tt,{open:tl,onClose:()=>ts(!1),onStart:tc})]})},tQ=(0,ej.h)("frontend/components/ClientOnly");function tK(e){let{children:t}=e,[n,a]=(0,o.useState)(!1);return((0,o.useEffect)(()=>(tQ.debug("ClientOnly component mounted"),a(!0),()=>{tQ.debug("ClientOnly component unmounted")}),[]),n)?(tQ.debug("ClientOnly component rendering children"),(0,r.jsx)(r.Fragment,{children:t})):(tQ.debug("ClientOnly component rendering null (not yet mounted)"),null)}let tV=(0,ej.h)("app/chat/page");function tX(){return tV.debug("Rendering ChatPage"),(0,r.jsx)(a.A,{maxWidth:!1,disableGutters:!0,children:(0,r.jsx)(tK,{children:(0,r.jsx)(tG,{})})})}},65818:(e,t,n)=>{"use strict";n.d(t,{mO:()=>a,rI:()=>l});var r=n(38459);let o=["stdio","websocket","sse","streamable"];function a(e,t){switch(t){case"name-asc":case"name-desc":return(0,r.po)(e.name);case"status-connected":case"status-disconnected":{let t=e.status;if("connected"===t)return{key:"status:connected",label:"Connected"};if("error"===t)return{key:"status:error",label:"Error"};if("requires_authentication"===t)return{key:"status:auth",label:"Requires authentication"};return{key:"status:disconnected",label:"Disconnected"}}case"transport":{let t=e.transport||"unknown";return{key:"transport:".concat(t),label:({stdio:"Stdio",websocket:"WebSocket",sse:"SSE",streamable:"Streamable HTTP"})[t]||t}}default:return{key:"all",label:"All servers"}}}function l(e,t){return[...e].sort((e,n)=>{switch(t){case"name-asc":return e.name.localeCompare(n.name);case"name-desc":return n.name.localeCompare(e.name);case"status-connected":if("connected"===e.status&&"connected"!==n.status)return -1;if("connected"!==e.status&&"connected"===n.status)return 1;return e.name.localeCompare(n.name);case"status-disconnected":if("disconnected"===e.status&&"disconnected"!==n.status)return -1;if("disconnected"!==e.status&&"disconnected"===n.status)return 1;return e.name.localeCompare(n.name);case"transport":{var r,a;let t=o.indexOf(null!=(r=e.transport)?r:""),l=o.indexOf(null!=(a=n.transport)?a:"");if(t!==l)return t-l;return e.name.localeCompare(n.name)}default:return 0}})}},84869:(e,t,n)=>{"use strict";n.d(t,{G:()=>l,S:()=>a});let r=(0,n(87021).h)("frontend/services/transcription/webSpeech"),o=()=>"webkitSpeechRecognition"in window||"SpeechRecognition"in window;async function a(e,t){if(!o())throw Error("Web Speech API is not supported in this browser");r.debug("Starting Web Speech API transcription");try{let n=URL.createObjectURL(e),o=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 r=e.results[t][0].transcript;e.results[t].isFinal?l+=r+" ":n+=r}(null==t?void 0:t.onInterimResult)&&t.onInterimResult(l+n),r.debug("Recognition interim result",{finalLength:l.length,interimLength:n.length})},a.onend=()=>{r.debug("Recognition ended",{transcriptLength:l.length}),e(l.trim())},a.onerror=e=>{r.error("Recognition error",{error:e.error}),n(Error("Speech recognition error: ".concat(e.error)))},o.onplay=()=>{a.start(),r.debug("Recognition started")},o.onended=()=>{a.stop(),r.debug("Audio playback ended")},o.onerror=e=>{r.error("Audio playback error",{error:e}),a.stop(),n(Error("Error playing audio"))},o.play().catch(e=>{r.error("Error starting audio playback",{error:e}),n(e)})})}catch(e){throw r.error("Error in Web Speech API transcription",{error:e}),e}}function l(){return{supported:o(),message:o()?"Web Speech API is supported":"Web Speech API is not supported in this browser"}}},97206:(e,t,n)=>{Promise.resolve().then(n.bind(n,62560))}},e=>{e.O(0,[3862,2678,4754,9244,8548,1983,1871,2003,5501,488,3272,3077,9659,9451,2403,7687,9554,8480,3730,2005,6257,8611,9164,812,4207,8441,1255,7358],()=>e(e.s=97206)),_N_E=e.O()}]);