flujo-ai 3.28.0 → 3.29.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 (654) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +383 -373
  3. package/.next/app-path-routes-manifest.json +28 -26
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/react-loadable-manifest.json +5 -4
  6. package/.next/routes-manifest.json +8 -0
  7. package/.next/server/app/_not-found/page.js +2 -2
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_not-found.html +1 -1
  10. package/.next/server/app/_not-found.rsc +3 -3
  11. package/.next/server/app/api/approvals/[id]/route.js +1 -1
  12. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  13. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/approvals/route.js +2 -2
  15. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  16. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  18. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/bugs/enhance/route.js +2 -2
  21. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  22. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/cwd/route.js +1 -1
  24. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/encryption/secure/route.js +1 -1
  26. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  27. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/env/route.js +1 -1
  29. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  31. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
  33. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
  35. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/flow/compile/route.js +1 -1
  37. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  38. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/flow/generate/route.js +1 -1
  40. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  41. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/flow/improve/route.js +1 -1
  43. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  44. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
  46. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  47. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  49. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  50. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/flow/repair/route.js +1 -1
  52. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  53. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  55. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/git/route.js +1 -1
  57. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/init/route.js +1 -1
  59. package/.next/server/app/api/init/route.js.nft.json +1 -1
  60. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/local-models/capability/route.js +2 -1
  62. package/.next/server/app/api/local-models/capability/route.js.nft.json +1 -1
  63. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/local-models/pull/route.js +2 -1
  65. package/.next/server/app/api/local-models/pull/route.js.nft.json +1 -1
  66. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/mcp/app-sandbox/route.js +1 -1
  69. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/mcp/cancel/route.js +2 -2
  71. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  72. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/mcp/oauth-capability/route.js +1 -1
  74. package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
  75. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  77. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  78. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  80. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  81. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  83. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  84. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  86. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  87. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  89. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  90. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  92. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  93. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  95. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  96. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  98. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  99. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/mcp/servers/route.js +1 -1
  101. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  102. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  104. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  105. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  107. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  108. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/mcp-registry/route.js +2 -2
  110. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  111. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
  113. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/model/[id]/route.js +1 -1
  115. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  116. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/model/provider/route.js +2 -2
  118. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  119. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/model/route.js +1 -1
  121. package/.next/server/app/api/model/route.js.nft.json +1 -1
  122. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/model/test/route.js +2 -2
  124. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  125. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/oauth/reset/route.js +2 -2
  129. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  130. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
  132. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
  134. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/packages/install/route.js +1 -1
  136. package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
  137. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/packages/install/status/route.js +1 -1
  139. package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
  140. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/packages/installed/route.js +1 -1
  142. package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
  143. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
  145. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/packages/scan-targets/route.js +1 -0
  147. package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -0
  148. package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -0
  149. package/.next/server/app/api/packages/uninstall/route.js +1 -1
  150. package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
  151. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
  153. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  154. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/planned-executions/[id]/run/route.js +2 -2
  156. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  157. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/planned-executions/[id]/runs/route.js +2 -2
  159. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  160. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/planned-executions/preview-schedule/route.js +1 -1
  162. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  164. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  165. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/planned-executions/route.js +1 -1
  167. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  168. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/registry/auth/resend/route.js +1 -1
  170. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/registry/auth/reset/route.js +1 -1
  172. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/registry/auth/route.js +1 -1
  174. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/registry/oauth/callback/route.js +1 -1
  176. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/registry/oauth/initiate/route.js +1 -1
  178. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/registry/publish/route.js +1 -1
  180. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/registry/settings/route.js +1 -1
  182. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  184. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/runs/active/route.js +2 -2
  186. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  187. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/storage/route.js +1 -1
  189. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/update/route.js +1 -1
  191. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/waves/route.js +1 -1
  193. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  194. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  196. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  197. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/chat/page.js +8 -8
  199. package/.next/server/app/chat/page.js.nft.json +1 -1
  200. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  201. package/.next/server/app/chat.html +1 -1
  202. package/.next/server/app/chat.rsc +4 -4
  203. package/.next/server/app/docs/page.js +3 -3
  204. package/.next/server/app/docs/page.js.nft.json +1 -1
  205. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  206. package/.next/server/app/docs.html +1 -1
  207. package/.next/server/app/docs.rsc +4 -4
  208. package/.next/server/app/executions/page.js +2 -39
  209. package/.next/server/app/executions/page.js.nft.json +1 -1
  210. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  211. package/.next/server/app/executions.html +1 -1
  212. package/.next/server/app/executions.rsc +4 -4
  213. package/.next/server/app/flows/page.js +3 -3
  214. package/.next/server/app/flows/page.js.nft.json +1 -1
  215. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  216. package/.next/server/app/flows.html +1 -1
  217. package/.next/server/app/flows.rsc +4 -4
  218. package/.next/server/app/index.html +1 -1
  219. package/.next/server/app/index.rsc +3 -3
  220. package/.next/server/app/mcp/page.js +11 -11
  221. package/.next/server/app/mcp/page.js.nft.json +1 -1
  222. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  223. package/.next/server/app/mcp-flows/route.js +1 -1
  224. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  225. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  227. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  228. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/mcp.html +1 -1
  230. package/.next/server/app/mcp.rsc +4 -4
  231. package/.next/server/app/models/page.js +2 -2
  232. package/.next/server/app/models/page.js.nft.json +1 -1
  233. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  234. package/.next/server/app/packages/page.js +2 -2
  235. package/.next/server/app/packages/page.js.nft.json +1 -1
  236. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  237. package/.next/server/app/packages.html +1 -1
  238. package/.next/server/app/packages.rsc +4 -4
  239. package/.next/server/app/page_client-reference-manifest.js +1 -1
  240. package/.next/server/app/settings/page.js +2 -2
  241. package/.next/server/app/settings/page.js.nft.json +1 -1
  242. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  243. package/.next/server/app/settings.html +1 -1
  244. package/.next/server/app/settings.rsc +4 -4
  245. package/.next/server/app/v1/chat/completions/route.js +1 -1
  246. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  247. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  249. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  250. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  251. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  252. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  253. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  254. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  255. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  256. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  257. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  258. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  259. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  260. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  261. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  262. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +4 -4
  264. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  265. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  266. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +2 -0
  267. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -0
  268. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -0
  269. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
  270. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  271. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  272. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  273. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  274. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  275. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  276. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  277. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  278. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  279. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  280. package/.next/server/app/v1/chat/events/route.js +2 -2
  281. package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
  282. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
  283. package/.next/server/app/v1/models/route.js +2 -2
  284. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  285. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  286. package/.next/server/app/waves/page.js +2 -2
  287. package/.next/server/app/waves/page.js.nft.json +1 -1
  288. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  289. package/.next/server/app/waves.html +1 -1
  290. package/.next/server/app/waves.rsc +4 -4
  291. package/.next/server/app-paths-manifest.json +28 -26
  292. package/.next/server/chunks/1083.js +1 -1
  293. package/.next/server/chunks/1114.js +1 -1
  294. package/.next/server/chunks/1226.js +1 -1
  295. package/.next/server/chunks/1314.js +1 -1
  296. package/.next/server/chunks/{6529.js → 1578.js} +2 -2
  297. package/.next/server/chunks/1634.js +1 -0
  298. package/.next/server/chunks/166.js +5 -5
  299. package/.next/server/chunks/1819.js +1 -1
  300. package/.next/server/chunks/2180.js +1 -0
  301. package/.next/server/chunks/227.js +2 -2
  302. package/.next/server/chunks/2368.js +2 -0
  303. package/.next/server/chunks/2859.js +1 -1
  304. package/.next/server/chunks/{7674.js → 3030.js} +1 -1
  305. package/.next/server/chunks/3101.js +1 -0
  306. package/.next/server/chunks/3128.js +4 -4
  307. package/.next/server/chunks/3570.js +228 -105
  308. package/.next/server/chunks/3629.js +1 -1
  309. package/.next/server/chunks/3984.js +4 -4
  310. package/.next/server/chunks/4239.js +1 -1
  311. package/.next/server/chunks/4265.js +1 -1
  312. package/.next/server/chunks/4366.js +2 -0
  313. package/.next/server/chunks/4426.js +1 -1
  314. package/.next/server/chunks/4551.js +6 -0
  315. package/.next/server/chunks/4663.js +1 -0
  316. package/.next/server/chunks/4671.js +1 -1
  317. package/.next/server/chunks/4681.js +1 -1
  318. package/.next/server/chunks/4685.js +1 -0
  319. package/.next/server/chunks/4771.js +2 -2
  320. package/.next/server/chunks/4961.js +2 -0
  321. package/.next/server/chunks/5040.js +53 -0
  322. package/.next/server/chunks/5067.js +1 -1
  323. package/.next/server/chunks/544.js +135 -0
  324. package/.next/server/chunks/5463.js +1 -1
  325. package/.next/server/chunks/5544.js +5 -5
  326. package/.next/server/chunks/5561.js +1 -0
  327. package/.next/server/chunks/5708.js +1 -1
  328. package/.next/server/chunks/5786.js +2 -0
  329. package/.next/server/chunks/5829.js +1 -0
  330. package/.next/server/chunks/5863.js +37 -0
  331. package/.next/server/chunks/5880.js +1 -1
  332. package/.next/server/chunks/6034.js +77 -0
  333. package/.next/server/chunks/{5471.js → 6219.js} +1 -1
  334. package/.next/server/chunks/6226.js +6 -0
  335. package/.next/server/chunks/6432.js +1 -0
  336. package/.next/server/chunks/6496.js +1 -0
  337. package/.next/server/chunks/6518.js +2 -0
  338. package/.next/server/chunks/6588.js +2 -0
  339. package/.next/server/chunks/6793.js +1 -0
  340. package/.next/server/chunks/701.js +1 -1
  341. package/.next/server/chunks/7506.js +1 -1
  342. package/.next/server/chunks/7579.js +4 -4
  343. package/.next/server/chunks/7634.js +4 -0
  344. package/.next/server/chunks/7821.js +1 -1
  345. package/.next/server/chunks/793.js +15 -5
  346. package/.next/server/chunks/7969.js +1 -0
  347. package/.next/server/chunks/{6537.js → 8001.js} +1 -1
  348. package/.next/server/chunks/8092.js +1 -0
  349. package/.next/server/chunks/8321.js +1 -0
  350. package/.next/server/chunks/8339.js +1 -1
  351. package/.next/server/chunks/8356.js +1 -0
  352. package/.next/server/chunks/8387.js +1 -1
  353. package/.next/server/chunks/848.js +39 -0
  354. package/.next/server/chunks/8667.js +1 -1
  355. package/.next/server/chunks/8739.js +1 -1
  356. package/.next/server/chunks/9174.js +1 -0
  357. package/.next/server/chunks/9251.js +1 -0
  358. package/.next/server/chunks/9253.js +3 -0
  359. package/.next/server/chunks/94.js +1 -1
  360. package/.next/server/chunks/9537.js +39 -0
  361. package/.next/server/chunks/9671.js +1 -1
  362. package/.next/server/chunks/9724.js +16 -6
  363. package/.next/server/chunks/9857.js +1 -0
  364. package/.next/server/chunks/{3298.js → 9868.js} +2 -2
  365. package/.next/server/instrumentation.js.nft.json +1 -1
  366. package/.next/server/middleware-build-manifest.js +1 -1
  367. package/.next/server/middleware-manifest.json +1 -1
  368. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  369. package/.next/server/pages/404.html +1 -1
  370. package/.next/server/pages/500.html +1 -1
  371. package/.next/server/pages-manifest.json +1 -1
  372. package/.next/server/server-reference-manifest.js +1 -1
  373. package/.next/server/server-reference-manifest.json +1 -1
  374. package/.next/static/JGMk-MwwdpQ94asqw-mUR/_buildManifest.js +1 -0
  375. package/.next/static/chunks/1572-b663a83bba28a0a1.js +8 -0
  376. package/.next/static/chunks/1988-bd73f26184e930c1.js +1 -0
  377. package/.next/static/chunks/2233-1139c1d3ef356980.js +1 -0
  378. package/.next/static/chunks/2266-d812473724cc6643.js +1 -0
  379. package/.next/static/chunks/2988-0b197a9b468a2df9.js +1 -0
  380. package/.next/static/chunks/3089.a0856f8093b90939.js +1 -0
  381. package/.next/static/chunks/3659-0ab9580d5ee5deea.js +1 -0
  382. package/.next/static/chunks/3672-cd86ace43288da79.js +1 -0
  383. package/.next/static/chunks/435-17c79f3b9f8dd38d.js +1 -0
  384. package/.next/static/chunks/454.5fc2f8eef98483e3.js +1 -0
  385. package/.next/static/chunks/4740-62814d07b2b7f760.js +1 -0
  386. package/.next/static/chunks/5418-45aa7e646ad024be.js +1 -0
  387. package/.next/static/chunks/5661-1b976072cc3d2fed.js +1 -0
  388. package/.next/static/chunks/6404-86615a5f5ce5c00f.js +1 -0
  389. package/.next/static/chunks/7445-d8a8be6e451c522e.js +1 -0
  390. package/.next/static/chunks/8054-f33d06ecea5d36e4.js +1 -0
  391. package/.next/static/chunks/812-dfe7ba07ddb7a565.js +1 -0
  392. package/.next/static/chunks/8404-14ef0345dc401ac5.js +1 -0
  393. package/.next/static/chunks/8863-c140a742178a4a87.js +1 -0
  394. package/.next/static/chunks/9562-5494feecd8c6f7a3.js +1 -0
  395. package/.next/static/chunks/9581-6d2523fd68a5e3c4.js +1 -0
  396. package/.next/static/chunks/app/api/approvals/[id]/route-7d60cffa598f4779.js +1 -0
  397. package/.next/static/chunks/app/api/approvals/route-7d60cffa598f4779.js +1 -0
  398. package/.next/static/chunks/app/api/backup/route-7d60cffa598f4779.js +1 -0
  399. package/.next/static/chunks/app/api/browse/route-7d60cffa598f4779.js +1 -0
  400. package/.next/static/chunks/app/api/bugs/enhance/route-7d60cffa598f4779.js +1 -0
  401. package/.next/static/chunks/app/api/cwd/route-7d60cffa598f4779.js +1 -0
  402. package/.next/static/chunks/app/api/encryption/secure/route-7d60cffa598f4779.js +1 -0
  403. package/.next/static/chunks/app/api/env/route-7d60cffa598f4779.js +1 -0
  404. package/.next/static/chunks/app/api/flow/[id]/route-7d60cffa598f4779.js +1 -0
  405. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-7d60cffa598f4779.js +1 -0
  406. package/.next/static/chunks/app/api/flow/[id]/versions/route-7d60cffa598f4779.js +1 -0
  407. package/.next/static/chunks/app/api/flow/compile/route-7d60cffa598f4779.js +1 -0
  408. package/.next/static/chunks/app/api/flow/generate/route-7d60cffa598f4779.js +1 -0
  409. package/.next/static/chunks/app/api/flow/improve/route-7d60cffa598f4779.js +1 -0
  410. package/.next/static/chunks/app/api/flow/prompt-renderer/route-7d60cffa598f4779.js +1 -0
  411. package/.next/static/chunks/app/api/flow/quick-chat/route-7d60cffa598f4779.js +1 -0
  412. package/.next/static/chunks/app/api/flow/repair/route-7d60cffa598f4779.js +1 -0
  413. package/.next/static/chunks/app/api/flow/route-7d60cffa598f4779.js +1 -0
  414. package/.next/static/chunks/app/api/git/route-7d60cffa598f4779.js +1 -0
  415. package/.next/static/chunks/app/api/init/route-7d60cffa598f4779.js +1 -0
  416. package/.next/static/chunks/app/api/local-models/capability/route-7d60cffa598f4779.js +1 -0
  417. package/.next/static/chunks/app/api/local-models/pull/route-7d60cffa598f4779.js +1 -0
  418. package/.next/static/chunks/app/api/local-models/suggest/route-7d60cffa598f4779.js +1 -0
  419. package/.next/static/chunks/app/api/mcp/app-sandbox/route-7d60cffa598f4779.js +1 -0
  420. package/.next/static/chunks/app/api/mcp/cancel/route-7d60cffa598f4779.js +1 -0
  421. package/.next/static/chunks/app/api/mcp/oauth-capability/route-7d60cffa598f4779.js +1 -0
  422. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-7d60cffa598f4779.js +1 -0
  423. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-7d60cffa598f4779.js +1 -0
  424. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-7d60cffa598f4779.js +1 -0
  425. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-7d60cffa598f4779.js +1 -0
  426. package/.next/static/chunks/app/api/mcp/servers/[name]/route-7d60cffa598f4779.js +1 -0
  427. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-7d60cffa598f4779.js +1 -0
  428. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-7d60cffa598f4779.js +1 -0
  429. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-7d60cffa598f4779.js +1 -0
  430. package/.next/static/chunks/app/api/mcp/servers/route-7d60cffa598f4779.js +1 -0
  431. package/.next/static/chunks/app/api/mcp/test-connection/route-7d60cffa598f4779.js +1 -0
  432. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-7d60cffa598f4779.js +1 -0
  433. package/.next/static/chunks/app/api/mcp-registry/route-7d60cffa598f4779.js +1 -0
  434. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-7d60cffa598f4779.js +1 -0
  435. package/.next/static/chunks/app/api/model/[id]/route-7d60cffa598f4779.js +1 -0
  436. package/.next/static/chunks/app/api/model/provider/route-7d60cffa598f4779.js +1 -0
  437. package/.next/static/chunks/app/api/model/route-7d60cffa598f4779.js +1 -0
  438. package/.next/static/chunks/app/api/model/test/route-7d60cffa598f4779.js +1 -0
  439. package/.next/static/chunks/app/api/oauth/callback/route-7d60cffa598f4779.js +1 -0
  440. package/.next/static/chunks/app/api/oauth/initiate/route-7d60cffa598f4779.js +1 -0
  441. package/.next/static/chunks/app/api/oauth/reset/route-7d60cffa598f4779.js +1 -0
  442. package/.next/static/chunks/app/api/packages/build/route-7d60cffa598f4779.js +1 -0
  443. package/.next/static/chunks/app/api/packages/derive-secrets/route-7d60cffa598f4779.js +1 -0
  444. package/.next/static/chunks/app/api/packages/install/route-7d60cffa598f4779.js +1 -0
  445. package/.next/static/chunks/app/api/packages/install/status/route-7d60cffa598f4779.js +1 -0
  446. package/.next/static/chunks/app/api/packages/installed/route-7d60cffa598f4779.js +1 -0
  447. package/.next/static/chunks/app/api/packages/resolve/route-7d60cffa598f4779.js +1 -0
  448. package/.next/static/chunks/app/api/packages/scan-targets/route-7d60cffa598f4779.js +1 -0
  449. package/.next/static/chunks/app/api/packages/uninstall/route-7d60cffa598f4779.js +1 -0
  450. package/.next/static/chunks/app/api/planned-executions/[id]/route-7d60cffa598f4779.js +1 -0
  451. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-7d60cffa598f4779.js +1 -0
  452. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-7d60cffa598f4779.js +1 -0
  453. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-7d60cffa598f4779.js +1 -0
  454. package/.next/static/chunks/app/api/planned-executions/reconcile/route-7d60cffa598f4779.js +1 -0
  455. package/.next/static/chunks/app/api/planned-executions/route-7d60cffa598f4779.js +1 -0
  456. package/.next/static/chunks/app/api/registry/auth/resend/route-7d60cffa598f4779.js +1 -0
  457. package/.next/static/chunks/app/api/registry/auth/reset/route-7d60cffa598f4779.js +1 -0
  458. package/.next/static/chunks/app/api/registry/auth/route-7d60cffa598f4779.js +1 -0
  459. package/.next/static/chunks/app/api/registry/oauth/callback/route-7d60cffa598f4779.js +1 -0
  460. package/.next/static/chunks/app/api/registry/oauth/initiate/route-7d60cffa598f4779.js +1 -0
  461. package/.next/static/chunks/app/api/registry/publish/route-7d60cffa598f4779.js +1 -0
  462. package/.next/static/chunks/app/api/registry/settings/route-7d60cffa598f4779.js +1 -0
  463. package/.next/static/chunks/app/api/restore/route-7d60cffa598f4779.js +1 -0
  464. package/.next/static/chunks/app/api/runs/active/route-7d60cffa598f4779.js +1 -0
  465. package/.next/static/chunks/app/api/storage/route-7d60cffa598f4779.js +1 -0
  466. package/.next/static/chunks/app/api/update/route-7d60cffa598f4779.js +1 -0
  467. package/.next/static/chunks/app/api/waves/route-7d60cffa598f4779.js +1 -0
  468. package/.next/static/chunks/app/api/webhooks/[id]/route-7d60cffa598f4779.js +1 -0
  469. package/.next/static/chunks/app/chat/page-2b69c5e35164f553.js +1 -0
  470. package/.next/static/chunks/app/executions/page-1d8557a642114697.js +1 -0
  471. package/.next/static/chunks/app/flows/page-3f0d7cca2edff792.js +1 -0
  472. package/.next/static/chunks/app/layout-81f91fb3b894951a.js +1 -0
  473. package/.next/static/chunks/app/mcp/page-0e90177062130679.js +1 -0
  474. package/.next/static/chunks/app/mcp-flows/route-7d60cffa598f4779.js +1 -0
  475. package/.next/static/chunks/app/mcp-proxy/[server]/route-7d60cffa598f4779.js +1 -0
  476. package/.next/static/chunks/app/models/page-c69e10b83c06535d.js +1 -0
  477. package/.next/static/chunks/app/packages/page-bf8aad441c664433.js +1 -0
  478. package/.next/static/chunks/app/settings/page-4a9952c514f284e0.js +1 -0
  479. package/.next/static/chunks/app/v1/chat/completions/route-7d60cffa598f4779.js +1 -0
  480. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-7d60cffa598f4779.js +1 -0
  481. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-7d60cffa598f4779.js +1 -0
  482. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-7d60cffa598f4779.js +1 -0
  483. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-7d60cffa598f4779.js +1 -0
  484. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-7d60cffa598f4779.js +1 -0
  485. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-7d60cffa598f4779.js +1 -0
  486. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-7d60cffa598f4779.js +1 -0
  487. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-7d60cffa598f4779.js +1 -0
  488. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-7d60cffa598f4779.js +1 -0
  489. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-7d60cffa598f4779.js +1 -0
  490. package/.next/static/chunks/app/v1/chat/conversations/route-7d60cffa598f4779.js +1 -0
  491. package/.next/static/chunks/app/v1/chat/events/route-7d60cffa598f4779.js +1 -0
  492. package/.next/static/chunks/app/v1/models/route-7d60cffa598f4779.js +1 -0
  493. package/.next/static/chunks/app/waves/{page-97ad6b51c9cae4b3.js → page-3ca939f0f7e817b1.js} +1 -1
  494. package/.next/static/chunks/webpack-08eb993682e1fb1a.js +1 -0
  495. package/.next/static/css/30253fcfa8035221.css +1 -0
  496. package/.next/trace +10 -10
  497. package/.next/types/app/api/packages/scan-targets/route.ts +347 -0
  498. package/.next/types/app/v1/chat/conversations/[conversationId]/inject/route.ts +347 -0
  499. package/.next/types/routes.d.ts +3 -1
  500. package/.next/types/validator.ts +18 -0
  501. package/README.md +6 -1
  502. package/package.json +2 -1
  503. package/.next/server/chunks/1197.js +0 -2
  504. package/.next/server/chunks/1373.js +0 -1
  505. package/.next/server/chunks/1604.js +0 -70
  506. package/.next/server/chunks/1659.js +0 -1
  507. package/.next/server/chunks/2434.js +0 -2
  508. package/.next/server/chunks/2940.js +0 -46
  509. package/.next/server/chunks/3304.js +0 -1
  510. package/.next/server/chunks/346.js +0 -1
  511. package/.next/server/chunks/4042.js +0 -1
  512. package/.next/server/chunks/4661.js +0 -1
  513. package/.next/server/chunks/4765.js +0 -1
  514. package/.next/server/chunks/5958.js +0 -2
  515. package/.next/server/chunks/6005.js +0 -1
  516. package/.next/server/chunks/6126.js +0 -53
  517. package/.next/server/chunks/6849.js +0 -66
  518. package/.next/server/chunks/7214.js +0 -6
  519. package/.next/server/chunks/724.js +0 -27
  520. package/.next/server/chunks/7463.js +0 -6
  521. package/.next/server/chunks/7538.js +0 -21
  522. package/.next/server/chunks/8037.js +0 -1
  523. package/.next/server/chunks/8522.js +0 -2
  524. package/.next/server/chunks/8572.js +0 -1
  525. package/.next/server/chunks/869.js +0 -2
  526. package/.next/server/chunks/8979.js +0 -37
  527. package/.next/server/chunks/8994.js +0 -2
  528. package/.next/server/chunks/9165.js +0 -1
  529. package/.next/server/chunks/9387.js +0 -15
  530. package/.next/server/chunks/9400.js +0 -2
  531. package/.next/server/chunks/9472.js +0 -2
  532. package/.next/server/chunks/9583.js +0 -1
  533. package/.next/static/Q6ITx_bZyoEOnKdZu_C7j/_buildManifest.js +0 -1
  534. package/.next/static/chunks/1594-309fa6363f215d76.js +0 -1
  535. package/.next/static/chunks/1809-e56cf3c476261e34.js +0 -1
  536. package/.next/static/chunks/1937-6bbdcdc660db562c.js +0 -1
  537. package/.next/static/chunks/1988-1b651d581fc44a36.js +0 -1
  538. package/.next/static/chunks/2164-7d6451e88a447de7.js +0 -1
  539. package/.next/static/chunks/218-6cbe09820faa3272.js +0 -1
  540. package/.next/static/chunks/2566-60acd5838abd9f3f.js +0 -1
  541. package/.next/static/chunks/2800-4fa29a3eeb693593.js +0 -1
  542. package/.next/static/chunks/3089.9e15df4ffd0fe4e8.js +0 -1
  543. package/.next/static/chunks/3556-b9855146c7506696.js +0 -1
  544. package/.next/static/chunks/3948-1cb8fc7a64805254.js +0 -1
  545. package/.next/static/chunks/5328-4e556503b70e72b4.js +0 -1
  546. package/.next/static/chunks/5512.682bef7fd3a7c286.js +0 -1
  547. package/.next/static/chunks/6195-8c4c57628e9013d5.js +0 -1
  548. package/.next/static/chunks/6669-a949326b30ea1d39.js +0 -1
  549. package/.next/static/chunks/6777-4b0d05731a089de4.js +0 -1
  550. package/.next/static/chunks/7304-e7cd725083617b81.js +0 -8
  551. package/.next/static/chunks/7445-2802e158c9093556.js +0 -1
  552. package/.next/static/chunks/795-704a0e742ecc2ef6.js +0 -1
  553. package/.next/static/chunks/812-3ceea0da38ad2891.js +0 -1
  554. package/.next/static/chunks/8551-a28272acfda62ac9.js +0 -1
  555. package/.next/static/chunks/9554-cb5bd72cb40e8dbe.js +0 -1
  556. package/.next/static/chunks/9562-ef0ddd4e6b9023cf.js +0 -1
  557. package/.next/static/chunks/app/api/approvals/[id]/route-c745e5b53b81491a.js +0 -1
  558. package/.next/static/chunks/app/api/approvals/route-c745e5b53b81491a.js +0 -1
  559. package/.next/static/chunks/app/api/backup/route-c745e5b53b81491a.js +0 -1
  560. package/.next/static/chunks/app/api/browse/route-c745e5b53b81491a.js +0 -1
  561. package/.next/static/chunks/app/api/bugs/enhance/route-c745e5b53b81491a.js +0 -1
  562. package/.next/static/chunks/app/api/cwd/route-c745e5b53b81491a.js +0 -1
  563. package/.next/static/chunks/app/api/encryption/secure/route-c745e5b53b81491a.js +0 -1
  564. package/.next/static/chunks/app/api/env/route-c745e5b53b81491a.js +0 -1
  565. package/.next/static/chunks/app/api/flow/[id]/route-c745e5b53b81491a.js +0 -1
  566. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-c745e5b53b81491a.js +0 -1
  567. package/.next/static/chunks/app/api/flow/[id]/versions/route-c745e5b53b81491a.js +0 -1
  568. package/.next/static/chunks/app/api/flow/compile/route-c745e5b53b81491a.js +0 -1
  569. package/.next/static/chunks/app/api/flow/generate/route-c745e5b53b81491a.js +0 -1
  570. package/.next/static/chunks/app/api/flow/improve/route-c745e5b53b81491a.js +0 -1
  571. package/.next/static/chunks/app/api/flow/prompt-renderer/route-c745e5b53b81491a.js +0 -1
  572. package/.next/static/chunks/app/api/flow/quick-chat/route-c745e5b53b81491a.js +0 -1
  573. package/.next/static/chunks/app/api/flow/repair/route-c745e5b53b81491a.js +0 -1
  574. package/.next/static/chunks/app/api/flow/route-c745e5b53b81491a.js +0 -1
  575. package/.next/static/chunks/app/api/git/route-c745e5b53b81491a.js +0 -1
  576. package/.next/static/chunks/app/api/init/route-c745e5b53b81491a.js +0 -1
  577. package/.next/static/chunks/app/api/local-models/capability/route-c745e5b53b81491a.js +0 -1
  578. package/.next/static/chunks/app/api/local-models/pull/route-c745e5b53b81491a.js +0 -1
  579. package/.next/static/chunks/app/api/local-models/suggest/route-c745e5b53b81491a.js +0 -1
  580. package/.next/static/chunks/app/api/mcp/app-sandbox/route-c745e5b53b81491a.js +0 -1
  581. package/.next/static/chunks/app/api/mcp/cancel/route-c745e5b53b81491a.js +0 -1
  582. package/.next/static/chunks/app/api/mcp/oauth-capability/route-c745e5b53b81491a.js +0 -1
  583. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-c745e5b53b81491a.js +0 -1
  584. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-c745e5b53b81491a.js +0 -1
  585. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-c745e5b53b81491a.js +0 -1
  586. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-c745e5b53b81491a.js +0 -1
  587. package/.next/static/chunks/app/api/mcp/servers/[name]/route-c745e5b53b81491a.js +0 -1
  588. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-c745e5b53b81491a.js +0 -1
  589. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-c745e5b53b81491a.js +0 -1
  590. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-c745e5b53b81491a.js +0 -1
  591. package/.next/static/chunks/app/api/mcp/servers/route-c745e5b53b81491a.js +0 -1
  592. package/.next/static/chunks/app/api/mcp/test-connection/route-c745e5b53b81491a.js +0 -1
  593. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-c745e5b53b81491a.js +0 -1
  594. package/.next/static/chunks/app/api/mcp-registry/route-c745e5b53b81491a.js +0 -1
  595. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-c745e5b53b81491a.js +0 -1
  596. package/.next/static/chunks/app/api/model/[id]/route-c745e5b53b81491a.js +0 -1
  597. package/.next/static/chunks/app/api/model/provider/route-c745e5b53b81491a.js +0 -1
  598. package/.next/static/chunks/app/api/model/route-c745e5b53b81491a.js +0 -1
  599. package/.next/static/chunks/app/api/model/test/route-c745e5b53b81491a.js +0 -1
  600. package/.next/static/chunks/app/api/oauth/callback/route-c745e5b53b81491a.js +0 -1
  601. package/.next/static/chunks/app/api/oauth/initiate/route-c745e5b53b81491a.js +0 -1
  602. package/.next/static/chunks/app/api/oauth/reset/route-c745e5b53b81491a.js +0 -1
  603. package/.next/static/chunks/app/api/packages/build/route-c745e5b53b81491a.js +0 -1
  604. package/.next/static/chunks/app/api/packages/derive-secrets/route-c745e5b53b81491a.js +0 -1
  605. package/.next/static/chunks/app/api/packages/install/route-c745e5b53b81491a.js +0 -1
  606. package/.next/static/chunks/app/api/packages/install/status/route-c745e5b53b81491a.js +0 -1
  607. package/.next/static/chunks/app/api/packages/installed/route-c745e5b53b81491a.js +0 -1
  608. package/.next/static/chunks/app/api/packages/resolve/route-c745e5b53b81491a.js +0 -1
  609. package/.next/static/chunks/app/api/packages/uninstall/route-c745e5b53b81491a.js +0 -1
  610. package/.next/static/chunks/app/api/planned-executions/[id]/route-c745e5b53b81491a.js +0 -1
  611. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-c745e5b53b81491a.js +0 -1
  612. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-c745e5b53b81491a.js +0 -1
  613. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-c745e5b53b81491a.js +0 -1
  614. package/.next/static/chunks/app/api/planned-executions/reconcile/route-c745e5b53b81491a.js +0 -1
  615. package/.next/static/chunks/app/api/planned-executions/route-c745e5b53b81491a.js +0 -1
  616. package/.next/static/chunks/app/api/registry/auth/resend/route-c745e5b53b81491a.js +0 -1
  617. package/.next/static/chunks/app/api/registry/auth/reset/route-c745e5b53b81491a.js +0 -1
  618. package/.next/static/chunks/app/api/registry/auth/route-c745e5b53b81491a.js +0 -1
  619. package/.next/static/chunks/app/api/registry/oauth/callback/route-c745e5b53b81491a.js +0 -1
  620. package/.next/static/chunks/app/api/registry/oauth/initiate/route-c745e5b53b81491a.js +0 -1
  621. package/.next/static/chunks/app/api/registry/publish/route-c745e5b53b81491a.js +0 -1
  622. package/.next/static/chunks/app/api/registry/settings/route-c745e5b53b81491a.js +0 -1
  623. package/.next/static/chunks/app/api/restore/route-c745e5b53b81491a.js +0 -1
  624. package/.next/static/chunks/app/api/runs/active/route-c745e5b53b81491a.js +0 -1
  625. package/.next/static/chunks/app/api/storage/route-c745e5b53b81491a.js +0 -1
  626. package/.next/static/chunks/app/api/update/route-c745e5b53b81491a.js +0 -1
  627. package/.next/static/chunks/app/api/waves/route-c745e5b53b81491a.js +0 -1
  628. package/.next/static/chunks/app/api/webhooks/[id]/route-c745e5b53b81491a.js +0 -1
  629. package/.next/static/chunks/app/chat/page-c39160ddf90bbae9.js +0 -1
  630. package/.next/static/chunks/app/executions/page-10d09f36de30939f.js +0 -1
  631. package/.next/static/chunks/app/flows/page-0d8fb471adfc2981.js +0 -1
  632. package/.next/static/chunks/app/layout-eea7078d7553c21a.js +0 -1
  633. package/.next/static/chunks/app/mcp/page-8ad71bf5801bfe5f.js +0 -1
  634. package/.next/static/chunks/app/mcp-flows/route-c745e5b53b81491a.js +0 -1
  635. package/.next/static/chunks/app/mcp-proxy/[server]/route-c745e5b53b81491a.js +0 -1
  636. package/.next/static/chunks/app/models/page-17e8e6668f92f58d.js +0 -1
  637. package/.next/static/chunks/app/packages/page-9f61751e98134f3d.js +0 -1
  638. package/.next/static/chunks/app/settings/page-afbf8790e99fecaf.js +0 -1
  639. package/.next/static/chunks/app/v1/chat/completions/route-c745e5b53b81491a.js +0 -1
  640. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-c745e5b53b81491a.js +0 -1
  641. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-c745e5b53b81491a.js +0 -1
  642. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-c745e5b53b81491a.js +0 -1
  643. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-c745e5b53b81491a.js +0 -1
  644. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-c745e5b53b81491a.js +0 -1
  645. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-c745e5b53b81491a.js +0 -1
  646. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-c745e5b53b81491a.js +0 -1
  647. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-c745e5b53b81491a.js +0 -1
  648. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-c745e5b53b81491a.js +0 -1
  649. package/.next/static/chunks/app/v1/chat/conversations/route-c745e5b53b81491a.js +0 -1
  650. package/.next/static/chunks/app/v1/chat/events/route-c745e5b53b81491a.js +0 -1
  651. package/.next/static/chunks/app/v1/models/route-c745e5b53b81491a.js +0 -1
  652. package/.next/static/chunks/webpack-0d4a4e773990ac44.js +0 -1
  653. package/.next/static/css/40f9bef305b11bf5.css +0 -1
  654. /package/.next/static/{Q6ITx_bZyoEOnKdZu_C7j → JGMk-MwwdpQ94asqw-mUR}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8457],{38131:(e,t,n)=>{"use strict";n.d(t,{A:()=>z});var l=n(95155),r=n(12115),o=n(33567),a=n(94049),s=n(4474),i=n(25635),d=n(22003),c=n(78470),u=n(91871),p=n(50430),f=n(26188),h=n(38952),x=n(63186),m=n(62962),g=n(39486),v=n(82446),b=n(9127),y=n(17897),j=n(41080);let w=(0,n(87021).h)("frontend/components/Chat/McpAppFrame"),A={name:"FLUJO",version:"1.0.0"};function S(e){let t=(Array.isArray(null==e?void 0:e.content)?e.content:[]).map(e=>(null==e?void 0:e.type)==="text"&&"string"==typeof e.text?e.text:"").filter(Boolean).join("\n").trim();return t||((null==e?void 0:e.structuredContent)&&"object"==typeof e.structuredContent?JSON.stringify(e.structuredContent):"")}let C=null;async function I(){C||(C=fetch("/api/mcp/app-sandbox").then(e=>e.json()).then(e=>"number"==typeof(null==e?void 0:e.port)?e.port:4201).catch(()=>4201));let e=await C;return"".concat(window.location.protocol,"//").concat(window.location.hostname,":").concat(e,"/sandbox.html")}function k(e){if(e)try{return JSON.parse(e)}catch(e){return}}function E(e){let t=k(e);return t&&"object"==typeof t?Array.isArray(t.content)?t:{content:[{type:"text",text:e}]}:null}let z=e=>{let{serverName:t,uri:n,toolName:C,toolArgs:z,toolResultContent:N,onAppMessage:T,onRequestDock:R,onDockable:D,docked:M=!1,visible:P=!0}=e,O=(0,o.A)(),[W,F]=(0,r.useState)(!1),[_,L]=(0,r.useState)(!1),[H,U]=(0,r.useState)(null),[q,B]=(0,r.useState)("inline"),J=(0,r.useRef)(null),G=(0,r.useRef)(null),K=(0,r.useRef)(null),Q=(0,r.useRef)(!1),Y=(0,r.useRef)(T);(0,r.useEffect)(()=>{Y.current=T},[T]);let X=(0,r.useRef)(R);(0,r.useEffect)(()=>{X.current=R},[R]);let V=(0,r.useRef)(D);(0,r.useEffect)(()=>{V.current=D},[D]);let Z=(0,r.useRef)(M);(0,r.useEffect)(()=>{Z.current=M},[M]);let $=(0,r.useRef)(!1),ee=(0,r.useRef)(void 0),et=(0,r.useCallback)(()=>{try{var e;null==(e=K.current)||e.close()}catch(e){}K.current=null,G.current&&G.current.parentNode&&G.current.parentNode.removeChild(G.current),G.current=null,Q.current=!1},[]),en=(0,r.useCallback)(async()=>{if(!Q.current&&J.current){Q.current=!0,L(!0),U(null);try{let e=await y.S.readResource(t,n);if(!e||!1===e.success)throw Error((null==e?void 0:e.error)||"Failed to read the UI resource.");let l=function(e){var t,n;let l=null==e?void 0:e.contents;if(!Array.isArray(l)||0===l.length)throw Error("Resource has no contents");let r=l.find(e=>"string"==typeof e.mimeType&&e.mimeType.replace(/\s+/g,"").startsWith("text/html;profile=mcp-app".replace(/\s+/g,""))&&("string"==typeof e.text||"string"==typeof e.blob))||l.find(e=>"string"==typeof e.text||"string"==typeof e.blob);if(!r)throw Error("Resource has no HTML body");let o="string"==typeof r.text?r.text:atob(r.blob);if(new TextEncoder().encode(o).length>j.Pt)throw Error("Resource exceeds the ".concat(Math.round(j.Pt/1024)," KiB size cap"));let a=null==(t=null!=(n=r._meta)?n:r.meta)?void 0:t.ui;return{html:o,csp:null==a?void 0:a.csp,permissions:null==a?void 0:a.permissions}}(e.data),r=await I(),o=document.createElement("iframe");o.title="MCP App: ".concat(n),o.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms"),o.referrerPolicy="origin";let a=(0,b.Sy)(l.permissions);a&&o.setAttribute("allow",a),o.style.cssText=Z.current?"width:100%;height:100%;border:none;background:#fff;":"width:100%;min-height:120px;height:200px;border:none;border-radius:4px;background:#fff;",J.current.appendChild(o),G.current=o;let s=new Promise((e,t)=>{let n=setTimeout(()=>{window.removeEventListener("message",l),t(Error("Timed out waiting for the sandbox proxy."))},1e4),l=t=>{var r;t.source===o.contentWindow&&(null==(r=t.data)?void 0:r.method)==="ui/notifications/sandbox-proxy-ready"&&(clearTimeout(n),window.removeEventListener("message",l),e())};window.addEventListener("message",l)}),i=new URL(r);l.csp&&i.searchParams.set("csp",JSON.stringify(l.csp)),o.src=i.href,await s;let d=new b.T1(function(e){return{getServerCapabilities:()=>({tools:{},resources:{}}),setNotificationHandler:()=>{},request:async t=>{let{method:n,params:l}=t;if("tools/call"===n){var r;w.info("MCP App tools/call: ".concat(e,"/").concat(null==l?void 0:l.name));let t=await y.S.callTool(e,l.name,null!=(r=l.arguments)?r:{});if(!t||!1===t.success)throw Error((null==t?void 0:t.error)||"Tool call failed: ".concat(null==l?void 0:l.name));return t.data}if("resources/read"===n){let t=await y.S.readResource(e,l.uri);if(!t||!1===t.success)throw Error((null==t?void 0:t.error)||"Resource read failed: ".concat(null==l?void 0:l.uri));return t.data}if("resources/list"===n)return{resources:[]};if("resources/templates/list"===n)return{resourceTemplates:[]};throw Error("MCP App requested unsupported method: ".concat(n))}}}(t),A,{openLinks:{},serverTools:{},serverResources:{},updateModelContext:{text:{}}},{hostContext:{theme:"dark"===O.palette.mode?"dark":"light",platform:"web",displayMode:Z.current?"pip":"inline",availableDisplayModes:["inline","fullscreen","pip"],containerDimensions:{maxHeight:6e3}}});K.current=d,d.onopenlink=async e=>{let{url:t}=e;return window.open(t,"_blank","noopener,noreferrer"),{}},d.ondownloadfile=async e=>{let{contents:t}=e;try{for(let e of null!=t?t:[]){let t,l=null==e?void 0:e.resource;if(!l)continue;let r=("string"==typeof l.uri?l.uri.split("/").pop():"")||"download",o="string"==typeof l.mimeType?l.mimeType:"application/octet-stream";if("string"==typeof l.blob){let e=Uint8Array.from(atob(l.blob),e=>e.charCodeAt(0));t=new Blob([e],{type:o})}else{var n;t=new Blob([String(null!=(n=l.text)?n:"")],{type:o})}let a=URL.createObjectURL(t),s=document.createElement("a");s.href=a,s.download=r,document.body.appendChild(s),s.click(),s.remove(),setTimeout(()=>URL.revokeObjectURL(a),4e3)}return{}}catch(e){return w.warn("MCP App download failed",e),{isError:!0}}},d.onloggingmessage=e=>w.debug("MCP App log",null==e?void 0:e.data),d.onmessage=async e=>{let t=S(e);return t&&(Y.current?Y.current(t):w.info("MCP App message (no chat sink): ".concat(t))),{}},d.onupdatemodelcontext=async e=>{let t=S(e);return t&&(Y.current?Y.current(t):w.info("MCP App context update (no chat sink): ".concat(t))),{}},d.onsizechange=async e=>{let{width:t,height:n}=e;!Z.current&&("number"==typeof n&&n>0&&(o.style.height="".concat(n,"px")),"number"==typeof t&&t>0&&(o.style.minWidth="min(".concat(t,"px, 100%)")))},d.onrequestdisplaymode=async e=>{let{mode:t}=e;if("pip"===t)return X.current?(X.current(),B("pip"),d.sendHostContextChange({displayMode:"pip"}),{mode:"pip"}):(B("inline"),d.sendHostContextChange({displayMode:"inline"}),{mode:"inline"});let n="fullscreen"===t?"fullscreen":"inline";return B(n),d.sendHostContextChange({displayMode:n}),{mode:n}},d.oninitialized=()=>{try{var e,t;let n=null==(e=d.getAppCapabilities())?void 0:e.availableDisplayModes;null==(t=V.current)||t.call(V,Array.isArray(n)&&n.includes("pip"))}catch(e){}let n=k(z);n&&"object"==typeof n&&d.sendToolInput({arguments:n});let l=E(N);l&&d.sendToolResult(l),ee.current=N,$.current=!0,L(!1)},await d.connect(new b.hJ(o.contentWindow,o.contentWindow)),await d.sendSandboxResourceReady({html:l.html,csp:l.csp,permissions:l.permissions})}catch(e){w.warn("Failed to mount MCP App ".concat(n," from ").concat(t),e),U(e instanceof Error?e.message:"Failed to load the app."),L(!1),et()}}},[t,n,z,N,O.palette.mode,et]),el=(0,r.useCallback)(()=>{let e=!W;F(e),e&&setTimeout(()=>{en()},0)},[W,en]);return((0,r.useEffect)(()=>{M&&!Q.current&&en()},[M,en]),(0,r.useEffect)(()=>{if(!$.current||!K.current||N===ee.current)return;let e=E(N);if(e)try{K.current.sendToolResult(e)}catch(e){w.warn("MCP App re-feed failed",e)}ee.current=N},[N]),(0,r.useEffect)(()=>{var e;null==(e=K.current)||e.sendHostContextChange({theme:"dark"===O.palette.mode?"dark":"light"})},[O.palette.mode]),(0,r.useEffect)(()=>()=>et(),[et]),M)?(0,l.jsxs)(a.default,{sx:{height:"100%",width:"100%",minHeight:0,display:P?"flex":"none",flexDirection:"column"},children:[_&&(0,l.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,l.jsx)(s.default,{size:16,thickness:6}),(0,l.jsx)(i.default,{variant:"body2",color:"text.secondary",children:"Loading the app…"})]}),H&&(0,l.jsx)(d.A,{severity:"error",sx:{m:1},children:H}),(0,l.jsx)(a.default,{ref:J,sx:{flex:1,minHeight:0,width:"100%",display:H?"none":"block"}})]}):(0,l.jsxs)(a.default,{sx:{mt:1,border:"1px solid",borderColor:"divider",borderRadius:1,overflow:"hidden",..."fullscreen"===q?{position:"fixed",inset:16,zIndex:1300,bgcolor:"background.paper",boxShadow:6}:{}},children:[(0,l.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.5,bgcolor:"action.hover"},children:[(0,l.jsx)(f.A,{fontSize:"small",color:"primary"}),(0,l.jsxs)(i.default,{variant:"body2",sx:{fontWeight:500},children:["Interactive app from ",t]}),(0,l.jsx)(c.A,{title:"Runs in a separate-origin sandbox (no access to FLUJO's origin, cookies, storage, or DOM). Its tool calls are brokered through this server only.",children:(0,l.jsx)(h.A,{fontSize:"small",color:"action"})}),W&&(0,l.jsx)(c.A,{title:"fullscreen"===q?"Exit fullscreen":"Fullscreen",children:(0,l.jsx)(u.A,{size:"small",onClick:()=>{var e;let t="fullscreen"===q?"inline":"fullscreen";B(t),null==(e=K.current)||e.sendHostContextChange({displayMode:t})},sx:{minWidth:0,ml:"auto"},children:"fullscreen"===q?(0,l.jsx)(v.A,{fontSize:"small"}):(0,l.jsx)(g.A,{fontSize:"small"})})}),(0,l.jsx)(u.A,{size:"small",onClick:el,startIcon:W?(0,l.jsx)(m.A,{}):(0,l.jsx)(x.A,{}),sx:{ml:W?0:"auto"},children:W?"Hide":"Open app"})]}),(0,l.jsx)(p.A,{in:W,unmountOnExit:!0,onExited:et,children:(0,l.jsxs)(a.default,{sx:{p:1,height:"fullscreen"===q?"calc(100vh - 100px)":"auto"},children:[_&&(0,l.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,l.jsx)(s.default,{size:16,thickness:6}),(0,l.jsx)(i.default,{variant:"body2",color:"text.secondary",children:"Loading the app…"})]}),H&&(0,l.jsx)(d.A,{severity:"error",sx:{my:1},children:H}),(0,l.jsx)(a.default,{ref:J,sx:{width:"100%",height:"fullscreen"===q?"100%":"auto",display:H?"none":"block"}})]})})]})}},41080:(e,t,n)=>{"use strict";n.d(t,{Gt:()=>r,Pt:()=>l}),n(81029).hp;let l=2097152;function r(e){if(e&&"object"==typeof e){for(let t of[e.ui,e["io.modelcontextprotocol/ui"]])if(t&&"object"==typeof t){let e=t.resourceUri;if("string"==typeof e&&e.trim().toLowerCase().startsWith("ui://"))return e}}}},65818:(e,t,n)=>{"use strict";n.d(t,{mO:()=>o,oO:()=>a});var l=n(38459);let r=["stdio","websocket","sse","streamable"];function o(e,t){switch(t){case"name-asc":case"name-desc":return(0,l.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 a(e,t){let n=(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 l,o;let t=r.indexOf(null!=(l=e.transport)?l:""),a=r.indexOf(null!=(o=n.transport)?o:"");if(t!==a)return t-a;return e.name.localeCompare(n.name)}default:return 0}};return[...e].sort((e,t)=>{let l=Number(!!t.favorite)-Number(!!e.favorite);return 0!==l?l:n(e,t)})}},75870:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var l=n(95155),r=n(12115),o=n(94049),a=n(25635),s=n(4474),i=n(91871),d=n(56900),c=n(90057),u=n(96362),p=n(9226),f=n(68503);let h=e=>{let{selectedFlowId:t,onSelectFlow:n,disabled:h=!1,hideLabel:x=!1}=e,[m,g]=(0,r.useState)([]),[v,b]=(0,r.useState)(!0),[y,j]=(0,r.useState)(null),[w,A]=(0,r.useState)(!1);(0,r.useEffect)(()=>{(async()=>{b(!0),j(null);try{let e=await c.g.loadFlows();g(e)}catch(e){console.error("Error loading flows:",e),j("Failed to load flows")}finally{b(!1)}})()},[]);let S=e=>{n(e),A(!1)},C=async e=>{let t=m.find(t=>t.id===e);if(!t)return;let n=!t.favorite,l={...t,favorite:n||void 0};try{(await c.g.updateFlow(l)).success&&g(t=>t.map(t=>t.id===e?l:t))}catch(e){console.error("Error toggling flow favorite:",e)}},I=(0,f.E)("flows",m),k=e=>({key:e.id,content:(e=>(0,l.jsx)(p.A,{flow:e,selected:e.id===t,onSelect:S,onToggleFavorite:C,pickerMode:!0}))(e)}),E=I.items.map(k),z=I.groups?I.groups.map(e=>({...e,items:e.items.map(k)})):null,N=(()=>{if(!t)return"";let e=m.find(e=>e.id===t);return e?e.name:""})();return(0,l.jsxs)(o.default,{children:[!x&&(0,l.jsx)(a.default,{variant:"subtitle1",gutterBottom:!0,children:"Select Flow"}),v?(0,l.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(s.default,{size:20}),(0,l.jsx)(a.default,{variant:"body2",color:"text.secondary",children:"Loading flows..."})]}):y?(0,l.jsx)(a.default,{color:"error",variant:"body2",children:y}):0===m.length?(0,l.jsx)(a.default,{variant:"body2",color:"text.secondary",children:"No flows available. Create some flows in the Flow Builder first."}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.A,{variant:"outlined",startIcon:(0,l.jsx)(d.A,{}),onClick:()=>A(!0),disabled:h,sx:{textTransform:"none",maxWidth:"100%"},children:(0,l.jsx)(o.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t&&N||"Select a flow"})}),(0,l.jsx)(a.default,{variant:"caption",color:"text.secondary",display:"block",sx:{mt:.5},children:t?'Using "'.concat(N,'" flow for this conversation'):"Select a flow to use for this conversation"}),(0,l.jsx)(u.A,{open:w,onClose:()=>A(!1),title:"Select a flow",description:"Pick the flow this conversation will run.",skeleton:(0,l.jsx)(p.o,{}),emptyMessage:"No flows available. Create some flows in the Flow Builder first.",searchable:!0,searchPlaceholder:"Search flows…",searchTerm:I.searchTerm,onSearchChange:I.setSearchTerm,items:E,groups:z,collapsedKeys:I.collapsedKeys,onToggleGroup:I.toggleGroup})]})]})}},84869:(e,t,n)=>{"use strict";n.d(t,{G:()=>a,S:()=>o});let l=(0,n(87021).h)("frontend/services/transcription/webSpeech"),r=()=>"webkitSpeechRecognition"in window||"SpeechRecognition"in window;async function o(e,t){if(!r())throw Error("Web Speech API is not supported in this browser");l.debug("Starting Web Speech API transcription");try{let n=URL.createObjectURL(e),r=new Audio(n),o=new(window.SpeechRecognition||window.webkitSpeechRecognition);return o.continuous=!0,o.interimResults=!0,(null==t?void 0:t.language)&&(o.lang=t.language),new Promise((e,n)=>{let a="";o.onresult=e=>{let n="";for(let t=e.resultIndex;t<e.results.length;t++){let l=e.results[t][0].transcript;e.results[t].isFinal?a+=l+" ":n+=l}(null==t?void 0:t.onInterimResult)&&t.onInterimResult(a+n),l.debug("Recognition interim result",{finalLength:a.length,interimLength:n.length})},o.onend=()=>{l.debug("Recognition ended",{transcriptLength:a.length}),e(a.trim())},o.onerror=e=>{l.error("Recognition error",{error:e.error}),n(Error("Speech recognition error: ".concat(e.error)))},r.onplay=()=>{o.start(),l.debug("Recognition started")},r.onended=()=>{o.stop(),l.debug("Audio playback ended")},r.onerror=e=>{l.error("Audio playback error",{error:e}),o.stop(),n(Error("Error playing audio"))},r.play().catch(e=>{l.error("Error starting audio playback",{error:e}),n(e)})})}catch(e){throw l.error("Error in Web Speech API transcription",{error:e}),e}}function a(){return{supported:r(),message:r()?"Web Speech API is supported":"Web Speech API is not supported in this browser"}}},97206:(e,t,n)=>{Promise.resolve().then(n.bind(n,98060))},98060:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>nG});var l=n(95155),r=n(12115),o=n(97322),a=n(20063),s=n(94049),i=n(78470),d=n(41983),c=n(22003),u=n(9562),p=n(25635),f=n(28548),h=n(91871),x=n(3339),m=n(67895),g=n(2778),v=n(52363),b=n(65036),y=n(50001),j=n(75912),w=n(22719),A=n(11096),S=n(76530),C=n(36741),I=n(60691),k=n(47419),E=n(78410),z=n(14915),N=n(55930),T=n(56900),R=n(26922),D=n(29692),M=n(23820),P=n(73707),O=n(17681),W=n(21067),F=n(56422),_=n(52641),L=n(55606),H=n(86973),U=n(41602),q=n(50430),B=n(4484),J=n(86946),G=n(19219),K=n(51611),Q=n(12140),Y=n(63186),X=n(62962),V=n(51331),Z=n(97736);function $(e){return"string"==typeof e&&e.startsWith("quickchat-")}n(77890);var ee=n(88377),et=n(38459);let en="wave:__adhoc__",el="wave:__archived__";var er=n(97104);function eo(e){let{nodes:t,childrenByParent:n,renderItem:r,expanded:o,onToggle:a,depth:i=0,visited:c,maxDepth:u=20}=e;if(!t||0===t.length||i>u)return null;let p=null!=c?c:new Set;return(0,l.jsx)(l.Fragment,{children:t.map(e=>{var t;if(p.has(e.id))return null;let c=null!=(t=n.get(e.id))?t:[],f=c.length>0&&i<u,h=!1!==o[e.id],x=new Set(p);return x.add(e.id),(0,l.jsxs)(s.default,{sx:{pl:1.5*(i>0),borderLeft:i>0?"1px dashed rgba(128,128,128,0.35)":"none"},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"flex-start"},children:[f?(0,l.jsx)(d.A,{size:"small",onClick:()=>a(e.id),"aria-label":h?"Collapse chain":"Expand chain",sx:{mt:.5,flexShrink:0},children:h?(0,l.jsx)(X.A,{fontSize:"small"}):(0,l.jsx)(Y.A,{fontSize:"small"})}):(0,l.jsx)(s.default,{sx:{width:34,flexShrink:0}}),(0,l.jsx)(s.default,{sx:{flex:1,minWidth:0},children:r(e,i)})]}),f&&(0,l.jsx)(q.A,{in:h,timeout:"auto",unmountOnExit:!0,children:(0,l.jsx)(eo,{nodes:c,childrenByParent:n,renderItem:r,expanded:o,onToggle:a,depth:i+1,visited:x,maxDepth:u})})]},e.id)})})}function ea(e){var t,n;let l=new Map;for(let t of e)l.set(t.id,t);let r=new Map,o=[],a=e=>e.parentConversationId&&e.parentConversationId!==e.id?e.parentConversationId:null;for(let n of e){let e=a(n);if(e&&l.has(e)){let l=null!=(t=r.get(e))?t:[];l.push(n),r.set(e,l)}else o.push(n)}let s=new Set,i=[...o];for(;i.length;){let e=i.pop();if(!s.has(e.id))for(let t of(s.add(e.id),null!=(n=r.get(e.id))?n:[]))i.push(t)}let d=new Set(o.map(e=>e.id));for(let t of e)s.has(t.id)||d.has(t.id)||(o.push(t),d.add(t.id));return{roots:o,childrenByParent:r}}let es={group:"flujo-ui:chat-sidebar:group",status:"flujo-ui:chat-sidebar:status",flow:"flujo-ui:chat-sidebar:flow",date:"flujo-ui:chat-sidebar:date",collapsed:"flujo-ui:chat-sidebar:collapsed",searchDim:"flujo-ui:chat-sidebar:search-dim"},ei=[{value:"all",label:"Any status"},{value:"running",label:"Processing"},{value:"awaiting_tool_approval",label:"Awaiting approval"},{value:"paused_debug",label:"Paused (debug)"},{value:"completed",label:"Completed"},{value:"error",label:"Error"}],ed=[{value:"all",label:"Any time"},{value:"today",label:"Last 24h"},{value:"7d",label:"Last 7 days"},{value:"30d",label:"Last 30 days"}],ec=[{value:"none",label:"No grouping"},{value:"date",label:"Group by date"},{value:"flow",label:"Group by flow"},{value:"wave",label:"Group by wave"},{value:"chain",label:"Group by chain"}],eu=e=>{let{conversations:t,currentConversationId:n,onSelectConversation:o,onDeleteConversation:a,onBulkDelete:c,onStopConversation:x,onNewConversation:m,onQuickChat:w,onCollapse:S,flowNames:C={}}=e,[I,E]=r.useState(""),[z,N]=r.useState({open:!1,ids:[],label:""}),[T,R]=(0,er.Xk)(es.searchDim,"title"),[D,eu]=r.useState(null),[ep,ef]=(0,er.Xk)(es.group,"none"),[eh,ex]=(0,er.Xk)(es.status,"all"),[em,eg]=(0,er.Xk)(es.flow,"all"),[ev,eb]=(0,er.Xk)(es.date,"all"),[ey,ej]=(0,er.Xk)(es.collapsed,{}),[ew,eA]=r.useState(null);r.useEffect(()=>{if("wave"!==ep)return;let e=!1;return fetch("/api/waves").then(e=>e.ok?e.json():null).then(t=>{!e&&t&&eA(t)}).catch(()=>{}),()=>{e=!0}},[ep,t]);let eS=(0,r.useMemo)(()=>(function(e){let t=new Map;if(!(null==e?void 0:e.waves))return t;for(let l of e.waves){var n;let e=null==(n=l.rootExecutionIds)?void 0:n[0],r=e&&l.nodes.find(t=>t.executionId===e)||l.nodes[0],o=(null==r?void 0:r.name)||(null==r?void 0:r.flowName)||l.id;for(let e of l.nodes)t.set(e.executionId,{waveId:l.id,label:o})}return t})(ew),[ew]);r.useEffect(()=>{let e=I.trim();if("content"!==T||0===e.length)return void eu(null);let t=!1,n=setTimeout(()=>{fetch("/v1/chat/conversations?search=".concat(encodeURIComponent(e),"&dimension=content")).then(e=>e.ok?e.json():[]).then(e=>{t||eu(new Set(Array.isArray(e)?e.map(e=>e.id):[]))}).catch(()=>{t||eu(new Set)})},300);return()=>{t=!0,clearTimeout(n)}},[I,T]);let eC=r.useCallback(e=>{var t;return e?$(e)?{key:"flow:__quickchat__",label:"Quick Chat"}:{key:"flow:".concat(e),label:null!=(t=C[e])?t:"Unknown flow"}:{key:"flow:__none__",label:"No flow"}},[C]),eI=(0,r.useMemo)(()=>{let e=new Map;for(let n of t){let t=eC(n.flowId);e.has(t.key)||e.set(t.key,t.label)}return Array.from(e.entries()).map(e=>{let[t,n]=e;return{key:t,label:n}}).sort((e,t)=>e.label.localeCompare(t.label))},[t,eC]),ek=(0,r.useMemo)(()=>{let e=I.trim().toLowerCase(),n=Date.now(),l="today"===ev?n-864e5:"7d"===ev?n-6048e5:"30d"===ev?n-2592e6:0;return t.filter(t=>{if("all"!==eh&&t.status!==eh||"all"!==em&&eC(t.flowId).key!==em||l&&t.updatedAt<l)return!1;if(e){if("content"===T){if(!D||!D.has(t.id))return!1}else if(!"".concat(t.title," ").concat(eC(t.flowId).label).toLowerCase().includes(e))return!1}return!0}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})},[t,I,T,D,eh,em,ev,eC]),eE=(0,r.useMemo)(()=>"none"===ep?[{key:"all",label:"",items:ek}]:"wave"===ep?function(e){let t=new Set([en,el]);return[...e.filter(e=>!t.has(e.key)),...e.filter(e=>t.has(e.key))]}((0,et.Az)(ek,e=>(function(e,t){if(!e)return{key:en,label:"Ad-hoc"};let n=t.get(e);return n?{key:"wave:".concat(n.waveId),label:n.label}:{key:el,label:"Archived / no longer scheduled"}})(e.plannedExecutionId,eS))):(0,et.Az)(ek,e=>"date"===ep?(0,ee.K)(e.updatedAt):eC(e.flowId)),[ek,ep,eC,eS]),ez=(0,r.useMemo)(()=>"chain"===ep?ea(ek):{roots:[],childrenByParent:new Map},[ep,ek]),[eN,eT]=r.useState({}),eR=r.useCallback(e=>{eT(t=>({...t,[e]:!1===t[e]}))},[]),eD=(0,r.useMemo)(()=>{let e=new Map;if("wave"!==ep)return e;for(let t of eE)e.set(t.key,ea(t.items));return e},[ep,eE]),eM=+("all"!==eh)+ +("all"!==em)+ +("all"!==ev),eP=e=>{let t=!!x&&("running"===e.status||"awaiting_tool_approval"===e.status),r=eC(e.flowId),c="flow:__quickchat__"===r.key;return(0,l.jsx)(M.Ay,{disablePadding:!0,secondaryAction:(0,l.jsxs)(l.Fragment,{children:[t&&(0,l.jsx)(i.A,{title:"Stop this run",children:(0,l.jsx)(d.A,{edge:"end","aria-label":"stop run",onClick:t=>{t.stopPropagation(),x(e.id)},children:(0,l.jsx)(k.A,{color:"error"})})}),(0,l.jsx)(d.A,{edge:"end","aria-label":"delete",onClick:t=>{t.stopPropagation(),a(e.id)},children:(0,l.jsx)(B.A,{})})]}),sx:{opacity:e.id===n?1:.7},children:(0,l.jsx)(P.A,{selected:e.id===n,onClick:()=>o(e.id),sx:{pr:t?12:7},children:(0,l.jsx)(O.A,{primary:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[e.status&&(0,l.jsx)(i.A,{title:(e=>{switch(e){case"running":return"Processing";case"awaiting_tool_approval":return"Waiting for tool approval";case"paused_debug":return"Paused in debug mode";case"completed":return"Completed";case"capped":return"Landed at turn limit (summary produced)";case"error":return"Error";default:return""}})(e.status),children:(0,l.jsx)(s.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"capped":return"info.main";case"error":return"error.main";default:return"transparent"}})(e.status),display:"inline-block",flexShrink:0}})}),(0,l.jsx)(i.A,{title:e.title,enterDelay:500,children:(0,l.jsx)(p.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:(0,l.jsxs)(s.default,{component:"span",sx:{display:"flex",alignItems:"center",gap:.75,mt:.5,flexWrap:"wrap"},children:["flow"!==ep&&(0,l.jsx)(i.A,{title:c?"Quick Chat (no saved flow)":"Flow: ".concat(r.label),children:(0,l.jsx)(f.A,{icon:c?(0,l.jsx)(A.A,{}):void 0,label:r.label,size:"small",variant:"outlined",color:c?"secondary":"default",sx:{maxWidth:"100%",height:20,"& .MuiChip-label":{px:.75,fontSize:"0.7rem"}}})}),(0,l.jsx)(p.default,{component:"span",variant:"caption",color:"text.secondary",children:new Date(e.updatedAt).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),secondaryTypographyProps:{component:"div"}})})},e.id)},eO=t.length,eW=ek.length;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(s.default,{sx:{p:2,display:"flex",justifyContent:"space-between",alignItems:"center",gap:1},children:[S&&(0,l.jsx)(i.A,{title:"Hide sidebar",children:(0,l.jsx)(d.A,{size:"small",onClick:S,"aria-label":"Hide conversation sidebar",children:(0,l.jsx)(G.A,{})})}),(0,l.jsx)(p.default,{variant:"h6",sx:{flex:1},noWrap:!0,children:"Conversations"}),t.length>0&&(0,l.jsx)(i.A,{title:"Delete all conversations",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",color:"error","aria-label":"Delete all conversations",onClick:()=>N({open:!0,ids:t.map(e=>e.id),label:"Delete all ".concat(t.length," conversation(s)?")}),children:(0,l.jsx)(V.A,{fontSize:"small"})})})}),ek.length>0&&ek.length<t.length&&(0,l.jsx)(i.A,{title:"Delete visible conversations (matching current filter)",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",color:"error","aria-label":"Delete visible conversations",onClick:()=>N({open:!0,ids:ek.map(e=>e.id),label:"Delete ".concat(ek.length," visible conversation(s)?")}),children:(0,l.jsx)(Z.A,{fontSize:"small"})})})}),w&&(0,l.jsx)(i.A,{title:"Quick Chat: a model + optional MCP servers, no saved flow",children:(0,l.jsx)(h.A,{variant:"outlined",color:"primary",startIcon:(0,l.jsx)(A.A,{}),onClick:w,size:"small",children:"Quick"})}),(0,l.jsx)(h.A,{variant:"contained",color:"primary",startIcon:(0,l.jsx)(J.A,{}),onClick:m,size:"small",children:"New"})]}),(0,l.jsx)(W.A,{}),(0,l.jsxs)(s.default,{sx:{px:2,pt:1.5,pb:1,display:"flex",flexDirection:"column",gap:1},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",gap:1},children:[(0,l.jsx)(u.A,{size:"small",sx:{flex:1},placeholder:"content"===T?"Search message content…":"Search title or flow…",value:I,onChange:e=>E(e.target.value),InputProps:{startAdornment:(0,l.jsx)(F.A,{position:"start",children:(0,l.jsx)(K.A,{fontSize:"small"})}),endAdornment:I?(0,l.jsx)(F.A,{position:"end",children:(0,l.jsx)(d.A,{size:"small","aria-label":"Clear search",onClick:()=>E(""),children:(0,l.jsx)(Q.A,{fontSize:"small"})})}):void 0}}),(0,l.jsx)(_.A,{size:"small",sx:{minWidth:100},children:(0,l.jsxs)(L.A,{value:T,onChange:e=>R(e.target.value),"aria-label":"Search dimension",children:[(0,l.jsx)(H.A,{value:"title",children:"Title"}),(0,l.jsx)(H.A,{value:"content",children:"Content"})]})})]}),(0,l.jsxs)(s.default,{sx:{display:"flex",flexWrap:"wrap",gap:1},children:[(0,l.jsx)(_.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsx)(L.A,{value:ep,onChange:e=>ef(e.target.value),"aria-label":"Group conversations",children:ec.map(e=>(0,l.jsx)(H.A,{value:e.value,children:e.label},e.value))})}),(0,l.jsx)(_.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsx)(L.A,{value:eh,onChange:e=>ex(e.target.value),"aria-label":"Filter by status",children:ei.map(e=>(0,l.jsx)(H.A,{value:e.value,children:e.label},e.value))})}),(0,l.jsx)(_.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsxs)(L.A,{value:eI.some(e=>e.key===em)?em:"all",onChange:e=>eg(e.target.value),"aria-label":"Filter by flow",children:[(0,l.jsx)(H.A,{value:"all",children:"Any flow"}),eI.map(e=>(0,l.jsx)(H.A,{value:e.key,children:e.label},e.key))]})}),(0,l.jsx)(_.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsx)(L.A,{value:ev,onChange:e=>eb(e.target.value),"aria-label":"Filter by date",children:ed.map(e=>(0,l.jsx)(H.A,{value:e.value,children:e.label},e.value))})})]}),(I||eM>0)&&(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",children:[eW," of ",eO]}),(0,l.jsx)(h.A,{size:"small",onClick:()=>{E(""),ex("all"),eg("all"),eb("all")},children:"Clear filters"})]})]}),(0,l.jsx)(W.A,{}),(0,l.jsx)(U.A,{sx:{overflow:"auto",flex:1},children:0===eO?(0,l.jsx)(M.Ay,{children:(0,l.jsx)(O.A,{primary:"No conversations yet",secondary:"Start a new conversation",primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}):0===eW?(0,l.jsx)(M.Ay,{children:(0,l.jsx)(O.A,{primary:"No matching conversations",secondary:"Try a different search or filter",primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}):"chain"===ep?(0,l.jsx)(eo,{nodes:ez.roots,childrenByParent:ez.childrenByParent,renderItem:e=>eP(e),expanded:eN,onToggle:eR}):"none"===ep?ek.map(eP):eE.map(e=>{let t=!!ey[e.key],n="wave"===ep?eD.get(e.key):void 0;return(0,l.jsxs)(s.default,{children:[(0,l.jsxs)(P.A,{onClick:()=>(e=>{ej(t=>({...t,[e]:!t[e]}))})(e.key),sx:{py:.5,bgcolor:"action.hover"},children:[t?(0,l.jsx)(Y.A,{fontSize:"small"}):(0,l.jsx)(X.A,{fontSize:"small"}),(0,l.jsx)(p.default,{variant:"overline",sx:{ml:.5,flex:1,lineHeight:1.6},noWrap:!0,children:e.label}),(0,l.jsx)(f.A,{label:e.items.length,size:"small",sx:{height:18,"& .MuiChip-label":{px:.75,fontSize:"0.7rem"}}})]}),(0,l.jsx)(q.A,{in:!t,timeout:"auto",unmountOnExit:!0,children:n?(0,l.jsx)(eo,{nodes:n.roots,childrenByParent:n.childrenByParent,renderItem:e=>eP(e),expanded:eN,onToggle:eR}):e.items.map(eP)})]},e.key)})}),(0,l.jsxs)(g.A,{open:z.open,onClose:()=>N(e=>({...e,open:!1})),"aria-labelledby":"bulk-delete-dialog-title",children:[(0,l.jsx)(v.A,{id:"bulk-delete-dialog-title",children:"Confirm deletion"}),(0,l.jsx)(b.A,{children:(0,l.jsxs)(y.A,{children:[z.label," This cannot be undone."]})}),(0,l.jsxs)(j.A,{children:[(0,l.jsx)(h.A,{onClick:()=>N(e=>({...e,open:!1})),children:"Cancel"}),(0,l.jsx)(h.A,{color:"error",onClick:async()=>{N(e=>({...e,open:!1})),await c(z.ids)},autoFocus:!0,children:"Delete"})]})]})]})};var ep=n(4474),ef=n(99944),eh=n(9957),ex=n(2300),em=n(98267),eg=n(20537),ev=n(37960),eb=n(22822),ey=n(95436),ej=n(18369),ew=n(9839),eA=n(43861),eS=n(75656),eC=n(36314),eI=n(49501),ek=n(6504),eE=n(22133),ez=n(11665),eN=n(97516),eT=n(91861),eR=n(53612),eD=n(3014),eM=n(70863),eP=n(67891),eO=n(12121),eW=n(63992),eF=n(59637),e_=n(30949),eL=n(26188),eH=n(1877),eU=n(18466);function eq(e){return!!e&&(e.startsWith(eU.n9)||"handoff"===e)}var eB=n(38131),eJ=n(87021);let eG=(0,eJ.h)("frontend/components/Chat/ChatMessages");function eK(e){return"assistant"===e.role&&"tool_calls"in e&&Array.isArray(e.tool_calls)}function eQ(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 eY={p:e=>(0,l.jsx)(p.default,{variant:"body1",sx:{mb:.5,whiteSpace:"pre-line"},children:e.children}),h1:e=>(0,l.jsx)(p.default,{variant:"h5",sx:{mt:2,mb:.5},children:e.children}),h2:e=>(0,l.jsx)(p.default,{variant:"h6",sx:{mt:2,mb:.5},children:e.children}),h3:e=>(0,l.jsx)(p.default,{variant:"subtitle1",sx:{mt:1.5,mb:.5},children:e.children}),h4:e=>(0,l.jsx)(p.default,{variant:"subtitle2",sx:{mt:1.5,mb:.5},children:e.children}),h5:e=>(0,l.jsx)(p.default,{variant:"body1",sx:{mt:1,mb:.5,fontWeight:"bold"},children:e.children}),h6:e=>(0,l.jsx)(p.default,{variant:"body2",sx:{mt:1,mb:.5,fontWeight:"bold"},children:e.children}),ul:e=>(0,l.jsx)(s.default,{component:"ul",sx:{pl:2,mb:1},children:e.children}),ol:e=>(0,l.jsx)(s.default,{component:"ol",sx:{pl:2,mb:1},children:e.children}),li:e=>(0,l.jsx)(s.default,{component:"li",sx:{mb:.5,whiteSpace:"pre-line"},children:e.children}),a:e=>(0,l.jsx)(p.default,{component:"a",sx:{color:"primary.main"},href:e.href,children:e.children}),blockquote:e=>(0,l.jsx)(s.default,{component:"blockquote",sx:{borderLeft:"4px solid",borderColor:"divider",pl:2,py:.5,my:1,bgcolor:"action.hover",borderRadius:"4px"},children:e.children}),code:e=>{let{node:t,className:n,children:r,...o}=e;return/language-(\w+)/.exec(n||"")||n?(0,l.jsx)(s.default,{component:"pre",sx:{bgcolor:"action.hover",p:1.5,borderRadius:"4px",overflowX:"auto",fontFamily:"monospace",fontSize:"0.875rem",my:1,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:r}):(0,l.jsx)(p.default,{component:"code",sx:{bgcolor:"action.hover",px:.5,py:.25,borderRadius:"4px",fontFamily:"monospace",wordBreak:"break-all"},children:r})}},eX=e=>{let{content:t,showRaw:n}=e;return n?(0,l.jsx)(s.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontSize:"0.8rem",p:1,borderRadius:1,border:1,borderColor:e=>e.palette.divider,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,l.jsx)(p.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:"[Invalid tool content]"}):(0,l.jsx)(s.default,{sx:{width:"100%",minWidth:0},children:(()=>{try{let e=JSON.parse(t);if(e&&Array.isArray(e.content))return(0,l.jsx)(s.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:e.content.map((e,t)=>"text"===e.type?(0,l.jsx)(ek.oz,{remarkPlugins:[eE.A],children:e.text},t):"image"===e.type&&e.data&&e.mimeType?(0,l.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,l.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,l.jsx)(s.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontSize:"0.8rem",p:1,borderRadius:1,border:1,borderColor:e=>e.palette.divider,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,l.jsx)(ek.oz,{remarkPlugins:[eE.A],children:"```json\n".concat(JSON.stringify(e,null,2),"\n```")})}catch(e){return(0,l.jsx)(ek.oz,{remarkPlugins:[eE.A],children:t})}})()})},eV=e=>{let{pairs:t,messageId:n,onAppMessage:o,onOpenInCanvas:a,canvasKeys:d}=e,[c,u]=(0,r.useState)(null),[x,m]=(0,r.useState)({}),g=(e,t)=>e.toolCall.id||"tc-".concat(n,"-").concat(t);return(0,l.jsxs)(s.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",color:"primary.main",mb:1},children:[(0,l.jsx)(eM.A,{fontSize:"small",sx:{mr:1}}),(0,l.jsx)(p.default,{variant:"body2",children:1===t.length?"The assistant used a tool":"The assistant used ".concat(t.length," tools")})]}),(0,l.jsx)(s.default,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:.5},children:t.map((e,t)=>{let n=g(e,t),o=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),a=c===n;return(0,l.jsxs)(r.Fragment,{children:[t>0&&(0,l.jsx)(s.default,{sx:{width:14,height:"2px",bgcolor:"divider",flexShrink:0}}),(0,l.jsx)(i.A,{title:a?"Hide call & result":"Show call & result",children:(0,l.jsx)(f.A,{icon:function(e){return"pending"===e?(0,l.jsx)(ep.default,{size:14,thickness:6}):"error"===e?(0,l.jsx)(I.A,{fontSize:"small"}):(0,l.jsx)(eO.A,{fontSize:"small"})}(o),label:(0,eH.yo)(e.toolCall.function.name),size:"small",clickable:!0,variant:a?"filled":"outlined",color:"error"===o?"error":"pending"===o?"default":"primary",onClick:()=>u(a?null:n),sx:{maxWidth:"100%"}})})]},n)})}),t.map((e,t)=>{var n,r;let i=g(e,t),u=e.toolCall.function.arguments;try{u=JSON.stringify(JSON.parse(e.toolCall.function.arguments),null,2)}catch(e){}let v=!!x[i];return(0,l.jsx)(q.A,{in:c===i,unmountOnExit:!0,children:(0,l.jsxs)(s.default,{sx:{mt:1,p:1,borderRadius:1,bgcolor:"rgba(0, 0, 0, 0.03)"},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,l.jsx)(eM.A,{fontSize:"small",sx:{mr:.5,color:"primary.main"}}),(0,l.jsx)(p.default,{variant:"caption",sx:{fontWeight:"bold"},children:"Parameters"}),(0,l.jsx)(f.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,l.jsx)(s.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:u}),(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",mt:1,mb:.5},children:[(0,l.jsx)(eP.A,{fontSize:"small",sx:{mr:.5,color:"text.secondary"}}),(0,l.jsx)(p.default,{variant:"caption",sx:{fontWeight:"bold"},children:"Result"}),e.result&&(0,l.jsx)(ef.A,{control:(0,l.jsx)(eh.A,{size:"small",checked:v,onChange:e=>m(t=>({...t,[i]:e.target.checked}))}),label:"Raw",sx:{ml:"auto",mr:0,"& .MuiTypography-root":{fontSize:"0.75rem"}}})]}),e.result?(0,l.jsx)(eX,{content:e.result.content,showRaw:v}):(0,l.jsxs)(p.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",sx:{display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(ep.default,{size:14,thickness:6})," Waiting for the tool to respond…"]}),(null==(r=e.result)||null==(n=r.ui)?void 0:n.uri)&&e.result.ui.serverName&&(a?(()=>{let t=e.result.ui,n=!!(null==d?void 0:d.has("".concat(t.serverName,"::").concat(t.uri)));return(0,l.jsxs)(s.default,{sx:{mt:1,display:"flex",alignItems:"center",gap:1,px:1,py:.5,border:"1px dashed",borderColor:"divider",borderRadius:1},children:[(0,l.jsx)(eL.A,{fontSize:"small",color:"primary"}),(0,l.jsxs)(p.default,{variant:"body2",sx:{flex:1,minWidth:0},noWrap:!0,children:["Interactive app from ",t.serverName]}),(0,l.jsx)(h.A,{size:"small",variant:n?"text":"outlined",onClick:()=>{var n;return a({serverName:t.serverName,uri:t.uri,toolName:e.toolCall.function.name,toolArgs:e.toolCall.function.arguments,resultContent:"string"==typeof(null==(n=e.result)?void 0:n.content)?e.result.content:void 0})},children:n?"Show in canvas":"Open in canvas"})]})})():(0,l.jsx)(eB.A,{serverName:e.result.ui.serverName,uri:e.result.ui.uri,toolName:e.toolCall.function.name,toolArgs:e.toolCall.function.arguments,toolResultContent:"string"==typeof e.result.content?e.result.content:void 0,onAppMessage:o}))]})},i)})]})},eZ=r.memo(function(e){var t,n;let r,{message:o,nodeLabel:a,availableNodes:c,showRaw:u,toolCallPairs:h,onAppMessage:x,onOpenInCanvas:m,canvasKeys:g,hoistedHandoffs:v,isBeingEdited:b,onMenuOpen:y,onToggleRaw:j}=e,w=null!=(t=o.depth)?t:0;return(0,l.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",alignItems:"user"===o.role?"flex-end":"flex-start",opacity:o.disabled?.5:1,...w>0&&{pl:3*w,borderLeft:"2px solid",borderColor:"divider",ml:1}},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",sx:{mr:1},children:["user"===o.role?"You":"assistant"===o.role?"Assistant":"tool"===o.role?"Tool":"System"," • ","number"!=typeof(n=o.timestamp)||isNaN(n)?(eG.warn("formatTime received invalid timestamp:",n),"Invalid Date"):new Date(n).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"})]}),o.processNodeId&&(0,l.jsx)(i.A,{title:"".concat(a?"".concat(a," — "):"","Process Node ID: ").concat(o.processNodeId),children:(0,l.jsx)(f.A,{label:"Node: ".concat(a||"".concat(o.processNodeId.substring(0,6),"...")),size:"small",color:"primary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),w>0&&(0,l.jsx)(i.A,{title:"Nested subflow step (depth ".concat(w,")"),children:(0,l.jsx)(f.A,{label:"Subflow step",size:"small",color:"secondary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),o.disabled&&(0,l.jsx)(f.A,{label:"Disabled",size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem"}}),o.usage&&(0,l.jsx)(i.A,{title:"".concat(o.usage.promptTokens.toLocaleString()," prompt + ").concat(o.usage.completionTokens.toLocaleString()," completion tokens (provider-reported)"),children:(0,l.jsx)(f.A,{label:"".concat((r=o.usage.totalTokens)>=1e3?"".concat((r/1e3).toFixed(r>=1e5?0:1),"k"):"".concat(r)," tok"),size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),(0,l.jsx)(d.A,{size:"small",onClick:e=>y(e,o.id),sx:{ml:1},children:(0,l.jsx)(ez.A,{fontSize:"small"})})]}),(0,l.jsxs)(ex.A,{elevation:1,sx:{p:2,maxWidth:"75vw",borderRadius:2,bgcolor:"user"===o.role?"primary.light":"assistant"===o.role||"tool"===o.role?"background.paper":"info.light",color:"user"===o.role?"primary.contrastText":"assistant"===o.role||"tool"===o.role?"text.primary":"info.contrastText",position:"relative",borderLeft:"tool"===o.role?"4px solid":"none",borderColor:"tool"===o.role?"grey.400":"transparent",opacity:b?.55:1,outline:b?"2px dashed":"none",outlineColor:"warning.main",overflowWrap:"break-word",wordBreak:"break-word",overflow:"hidden"},children:[(0,l.jsxs)(l.Fragment,{children:["tool"!==o.role&&"string"==typeof o.content&&(0,l.jsx)(ek.oz,{remarkPlugins:[eE.A],components:eY,children:o.content}),"tool"!==o.role&&Array.isArray(o.content)&&(0,l.jsx)(s.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:o.content.map((e,t)=>{var n;return(null==e?void 0:e.type)==="text"?(0,l.jsx)(ek.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,l.jsx)("img",{src:e.image_url.url,alt:"Image ".concat(t+1),style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}},t):null})}),"tool"!==o.role&&"string"!=typeof o.content&&!Array.isArray(o.content)&&!eK(o)&&(0,l.jsx)(p.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:"[No text content]"})]}),(()=>{let e=[...eK(o)?o.tool_calls.filter(e=>{var t;return!!(t=e.function.name)&&(t.startsWith(eU.n9)||"handoff"===t)}):[],...null!=v?v:[]];return(0,l.jsx)(s.default,{sx:{mt:1,display:"flex",flexWrap:"wrap",gap:.5},children:e.map((e,t)=>(0,l.jsx)(f.A,{size:"small",variant:"outlined",color:"secondary",icon:(0,l.jsx)(e_.A,{fontSize:"small"}),label:"Handoff → ".concat(function(e,t){let n=e.startsWith(eU.n9)?e.slice(eU.n9.length):e,l=n.replace(/_\d+$/,""),r=t.find(e=>{let t=(0,eU.RN)(e.label);return t===n||t===l});return(null==r?void 0:r.label)?r.label:l.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(o.id,"-").concat(t)))})})(),h&&h.length>0&&(0,l.jsx)(eV,{pairs:h,messageId:o.id,onAppMessage:x,onOpenInCanvas:m,canvasKeys:g}),"tool"===o.role&&o.tool_call_id&&!eQ(o)&&(0,l.jsxs)(s.default,{children:[(0,l.jsxs)(p.default,{variant:"body2",sx:{display:"flex",alignItems:"center",color:"text.secondary",mb:1},children:[(0,l.jsx)(eP.A,{fontSize:"small",sx:{mr:1}}),"The tool responded to the assistant"]}),(0,l.jsxs)(em.A,{defaultExpanded:!1,sx:{mb:.5,"&:before":{display:"none"},boxShadow:"none",bgcolor:"rgba(0, 0, 0, 0.02)"},children:[(0,l.jsx)(eg.A,{expandIcon:(0,l.jsx)(Y.A,{}),children:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center"},children:[(0,l.jsx)(eP.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,l.jsx)(p.default,{variant:"subtitle2",children:"Tool Result"}),(0,l.jsx)(f.A,{label:"ID: ".concat(o.tool_call_id.substring(0,8),"..."),size:"small",color:"default",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}}),(0,l.jsx)(ef.A,{control:(0,l.jsx)(eh.A,{size:"small",checked:u,onChange:e=>j(o.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,l.jsx)(ev.A,{sx:{pt:0,pb:1,overflow:"hidden"},children:(0,l.jsx)(eX,{content:o.content,showRaw:u})})]})]}),o.attachments&&o.attachments.length>0&&(0,l.jsxs)(s.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,l.jsx)(p.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:.5},children:"Attachments:"}),o.attachments.map(e=>"image"===e.type?(0,l.jsx)(s.default,{sx:{mb:.5},children:(0,l.jsx)("img",{src:e.content,alt:e.originalName||"image attachment",style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}})},e.id):(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",p:1,borderRadius:1,bgcolor:"rgba(0, 0, 0, 0.04)",mb:.5},children:["document"===e.type?(0,l.jsx)(eR.A,{fontSize:"small",sx:{mr:1}}):(0,l.jsx)(eD.A,{fontSize:"small",sx:{mr:1}}),(0,l.jsx)(p.default,{variant:"caption",sx:{wordBreak:"break-all"},children:e.originalName||"".concat(e.type," attachment")})]},e.id))]})]})]})}),e$=e=>{var t;let{elicitation:n,onSubmit:o,onCancel:a}=e,{elicitationId:i,message:d,requestedSchema:c}=n,f=null!=(t=null==c?void 0:c.properties)?t:{},x=Object.keys(f),[m,g]=(0,r.useState)(()=>{let e={};for(let t of x){let n=f[t];void 0!==n.default?e[t]=n.default:"boolean"===n.type?e[t]=!1:"number"===n.type||"integer"===n.type?e[t]=0:e[t]=""}return e}),v=(e,t)=>{g(n=>({...n,[e]:t}))};return(0,l.jsxs)(ex.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"info.light",border:"1px solid",borderColor:"info.main",borderRadius:2},children:[(0,l.jsx)(p.default,{variant:"h6",sx:{mb:1},children:"Server needs more information"}),(0,l.jsx)(p.default,{variant:"body2",sx:{mb:2},children:d}),(0,l.jsx)(s.default,{sx:{display:"flex",flexDirection:"column",gap:1.5},children:x.map(e=>{let t=f[e],n=t.title||e,r=m[e];if("boolean"===t.type)return(0,l.jsx)(ef.A,{control:(0,l.jsx)(eb.A,{checked:!!r,onChange:t=>v(e,t.target.checked),size:"small"}),label:n},e);if(t.enum&&t.enum.length>0)return(0,l.jsxs)(_.A,{size:"small",sx:{minWidth:200},children:[(0,l.jsx)(ey.A,{children:n}),(0,l.jsx)(L.A,{label:n,value:String(null!=r?r:""),onChange:t=>v(e,t.target.value),children:t.enum.map((e,n)=>{var r;return(0,l.jsx)(H.A,{value:e,children:(null==(r=t.enumNames)?void 0:r[n])||e},e)})}),t.description&&(0,l.jsx)(ej.A,{children:t.description})]},e);let o="number"===t.type||"integer"===t.type;return(0,l.jsx)(u.A,{size:"small",label:n,type:o?"number":"text",value:String(null!=r?r:""),helperText:t.description,inputProps:{minLength:t.minLength,maxLength:t.maxLength,min:t.minimum,max:t.maximum},onChange:t=>{if(o){let n=parseFloat(t.target.value);v(e,isNaN(n)?0:n)}else v(e,t.target.value)}},e)})}),(0,l.jsxs)(s.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:2},children:[(0,l.jsx)(h.A,{variant:"outlined",color:"inherit",size:"small",onClick:()=>{a&&a(i)},disabled:!a,children:"Cancel"}),(0,l.jsx)(h.A,{variant:"contained",color:"primary",size:"small",onClick:()=>{o&&o(i,m)},disabled:!o,children:"Submit"})]})]})},e0="Type your own answer",e1=e=>{let{question:t,onAnswer:n,onDecline:o}=e,{questionId:a,questions:i}=t,[d,c]=(0,r.useState)(()=>i.map(()=>[])),[f,x]=(0,r.useState)(()=>i.map(()=>"")),m=()=>i.map((e,t)=>{var n;return(null!=(n=d[t])?n:[]).map(e=>e===e0?f[t].trim():e).filter(e=>e.length>0)}),g=i.every((e,t)=>{var n;return(null!=(n=m()[t])?n:[]).length>0});return(0,l.jsxs)(ex.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"info.light",border:"1px solid",borderColor:"info.main",borderRadius:2},children:[(0,l.jsx)(p.default,{variant:"h6",sx:{mb:1},children:"The assistant is asking"}),(0,l.jsx)(s.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:i.map((e,t)=>{var n,r,o;return(0,l.jsxs)(_.A,{component:"fieldset",sx:{display:"flex"},children:[(0,l.jsx)(ew.A,{sx:{mb:.5},children:e.prompt}),e.multiple?(0,l.jsx)(s.default,{sx:{display:"flex",flexDirection:"column"},children:e.options.map(e=>{var n;return(0,l.jsx)(ef.A,{control:(0,l.jsx)(eb.A,{size:"small",checked:(null!=(n=d[t])?n:[]).includes(e),onChange:()=>((e,t)=>{c(n=>{let l=n.map(e=>[...e]),r=l[e],o=r.indexOf(t);return o>=0?r.splice(o,1):r.push(t),l})})(t,e)}),label:e},e)})}):(0,l.jsx)(eA.A,{value:null!=(r=(null!=(n=d[t])?n:[])[0])?r:"",onChange:e=>{var n;return n=e.target.value,void c(e=>{let l=e.map(e=>[...e]);return l[t]=[n],l})},children:e.options.map(e=>(0,l.jsx)(ef.A,{value:e,control:(0,l.jsx)(eS.A,{size:"small"}),label:e},e))}),(null!=(o=d[t])?o:[]).includes(e0)&&(0,l.jsx)(u.A,{size:"small",sx:{mt:1},placeholder:"Your answer…",value:f[t],onChange:e=>x(n=>{let l=[...n];return l[t]=e.target.value,l})})]},t)})}),(0,l.jsxs)(s.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:2},children:[(0,l.jsx)(h.A,{variant:"outlined",color:"inherit",size:"small",onClick:()=>{o&&o(a)},disabled:!o,children:"Decline"}),(0,l.jsx)(h.A,{variant:"contained",color:"primary",size:"small",onClick:()=>{n&&n(a,m())},disabled:!n||!g,children:"Answer"})]})]})},e2=e=>{let{messages:t,pendingToolCalls:n,pendingElicitation:o,availableNodes:a=[],conversationId:i,editingMessageId:d,onToggleDisabled:c,onSplitConversation:x,onBeginEditMessage:m,onApproveToolCall:g,onRejectToolCall:v,onSubmitElicitation:b,onCancelElicitation:y,pendingQuestion:j,onAnswerQuestion:w,onDeclineQuestion:A,onAppMessage:S,onOpenInCanvas:C,canvasKeys:I,queuedMessages:k=[],queueHoldReason:E=null}=e,[N,T]=(0,r.useState)({}),[R,D]=(0,r.useState)(50);(0,r.useEffect)(()=>{D(50)},[i]);let M=Math.max(0,(Array.isArray(t)?t.length:0)-R),P=(0,r.useMemo)(()=>Array.isArray(t)?M>0?t.slice(M):t:[],[t,M]),{pairsByAnchorId:W,handoffsByAnchorId:F,consumedToolCallIds:_,groups:L}=(0,r.useMemo)(()=>(function(e){let t=new Map,n=new Map,l=new Set,r=new Set,o=new Map,a=[];if(!Array.isArray(e))return{pairsByAnchorId:t,handoffsByAnchorId:n,hoistedAssistantIds:l,consumedToolCallIds:r,groups:a};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 l=o.get(e);return l||(l={anchorId:e,memberIds:[e],hoistedIds:[]},o.set(e,l),a.push(l),t.set(e,[]),n.set(e,[])),l},d=null;for(let o of e){if("user"===o.role||"system"===o.role){d=null;continue}if("assistant"!==o.role)continue;let e=Array.isArray(o.tool_calls)?o.tool_calls:[],a=[],u=[];for(let t of e){var c;if("function"!==t.type)continue;if(eq(null==(c=t.function)?void 0:c.name)){u.push(t);continue}let e=t.id,n=e?s.get(e):void 0;e&&r.add(e),a.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))})}(o),f=a.length>0||u.length>0;if(p){d=o.id,f&&(i(o.id),t.get(o.id).push(...a),n.get(o.id).push(...u));continue}if(f)if(d){let e=i(d);t.get(d).push(...a),n.get(d).push(...u),e.memberIds.push(o.id),e.hoistedIds.push(o.id),l.add(o.id)}else d=o.id,i(o.id),t.get(o.id).push(...a),n.get(o.id).push(...u)}return{pairsByAnchorId:t,handoffsByAnchorId:n,hoistedAssistantIds:l,consumedToolCallIds:r,groups:a}})(t),[t]),U=(0,r.useMemo)(()=>(function(e){let t=new Set;if(!Array.isArray(e))return t;for(let l of e){if("assistant"!==l.role)continue;let e=l.tool_calls;if(Array.isArray(e))for(let l of e){var n;"function"===l.type&&eq(null==(n=l.function)?void 0:n.name)&&"string"==typeof l.id&&l.id&&t.add(l.id)}}return t})(t),[t]),q=(0,r.useMemo)(()=>new Set(P.map(e=>e.id)),[P]),{renderPairsById:B,renderHandoffsById:J,suppressedIds:G}=(0,r.useMemo)(()=>{let e=new Map,t=new Map,n=new Set;for(let a of L){var l,r,o;let s=null!=(l=W.get(a.anchorId))?l:[],i=null!=(r=F.get(a.anchorId))?r:[],d=null!=(o=a.memberIds.find(e=>q.has(e)))?o:a.anchorId;for(let l of(s.length>0&&e.set(d,s),i.length>0&&t.set(d,i),a.hoistedIds))l!==d&&n.add(l)}return{renderPairsById:e,renderHandoffsById:t,suppressedIds:n}},[L,W,F,q]),[K,Q]=r.useState(null),[X,V]=r.useState(null),[Z,$]=r.useState({}),ee=(0,r.useCallback)((e,t)=>{eG.debug("handleMenuOpen called with messageId: ".concat(t)),Q(e.currentTarget),V(t)},[]),et=(0,r.useCallback)((e,t)=>{$(n=>({...n,[e]:t}))},[]),en=()=>{Q(null),V(null)},el=()=>{X&&(null==m||m(X),en())},er=(0,r.useMemo)(()=>{let e=new Map;for(let t of a)e.set(t.id,t.label);return e},[a]),eo=(0,r.useMemo)(()=>X&&t.find(e=>e.id===X)||null,[X,t]);return(0,l.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:[M>0&&(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center"},children:(0,l.jsxs)(h.A,{size:"small",variant:"outlined",onClick:()=>D(e=>e+200),children:["Show earlier messages (",M," more)"]})}),P.map((e,t)=>eQ(e)||"tool"===e.role&&"string"==typeof e.tool_call_id&&U.has(e.tool_call_id)||"tool"===e.role&&"string"==typeof e.tool_call_id&&_.has(e.tool_call_id)||G.has(e.id)?null:(0,l.jsx)(eZ,{message:e,nodeLabel:e.processNodeId?er.get(e.processNodeId):void 0,availableNodes:a,showRaw:!!Z[e.id],toolCallPairs:B.get(e.id),onAppMessage:S,onOpenInCanvas:C,canvasKeys:I,hoistedHandoffs:J.get(e.id),isBeingEdited:!!d&&e.id===d,onMenuOpen:ee,onToggleRaw:et},e.id||"msg-".concat(M+t))),k.map(e=>(0,l.jsx)(s.default,{"data-testid":"queued-bubble",sx:{display:"flex",justifyContent:"flex-end",opacity:.6},children:(0,l.jsxs)(s.default,{sx:{maxWidth:"70%",bgcolor:"primary.light",color:"primary.contrastText",borderRadius:2,px:2,py:1,display:"flex",flexDirection:"column",gap:.5},children:[(0,l.jsx)(p.default,{variant:"body2",sx:{whiteSpace:"pre-wrap",wordBreak:"break-word"},children:e.content||(e.attachments.length>0?"".concat(e.attachments.length," attachment(s)"):"")}),(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5,justifyContent:"flex-end"},children:[!E&&(0,l.jsx)(ep.default,{size:10,color:"inherit"}),(0,l.jsx)(p.default,{variant:"caption",sx:{opacity:.85},children:null!=E?E:"Queued"})]})]})},e.id)),(0,l.jsxs)(eC.A,{anchorEl:K,open:!!K,onClose:en,children:[eo&&(()=>{eG.debug("Entering menu item rendering logic",{activeMessageId:X}),eG.debug("Active message object for menu:",eo),eG.debug("Active message role for menu:",null==eo?void 0:eo.role);try{if("user"===eo.role&&"string"==typeof eo.content&&m)return(0,l.jsxs)(H.A,{onClick:el,children:[(0,l.jsx)(eI.A,{children:(0,l.jsx)(z.A,{fontSize:"small"})}),(0,l.jsx)(O.A,{children:"Edit Message"})]});return null}catch(e){return eG.error("Error rendering Edit Message menu item",{error:e}),null}})(),(0,l.jsxs)(H.A,{onClick:()=>{X&&(c(X),en())},children:[(0,l.jsx)(eI.A,{children:(0,l.jsx)(eN.A,{fontSize:"small"})}),(0,l.jsx)(O.A,{children:(null==eo?void 0:eo.disabled)?"Enable Message":"Disable Message"})]}),(0,l.jsxs)(H.A,{onClick:()=>{X&&(x(X),en())},children:[(0,l.jsx)(eI.A,{children:(0,l.jsx)(eT.A,{fontSize:"small"})}),(0,l.jsx)(O.A,{children:"Split Conversation Here"})]})]}),o&&(0,l.jsx)(e$,{elicitation:o,onSubmit:b,onCancel:y}),j&&(0,l.jsx)(e1,{question:j,onAnswer:w,onDecline:A}),n&&n.length>0&&(0,l.jsxs)(ex.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"warning.light",border:"1px solid",borderColor:"warning.main",borderRadius:2},children:[(0,l.jsxs)(p.default,{variant:"h6",sx:{mb:1,display:"flex",alignItems:"center"},children:[(0,l.jsx)(eM.A,{sx:{mr:1}})," Tool Approval Required"]}),(0,l.jsx)(p.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)=>{var n;let r=(0,eH.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,l.jsxs)(em.A,{defaultExpanded:!0,sx:{mb:1,"&:before":{display:"none"},boxShadow:1},children:[(0,l.jsx)(eg.A,{expandIcon:(0,l.jsx)(Y.A,{}),children:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",width:"100%"},children:[(0,l.jsx)(eM.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),(0,l.jsx)(p.default,{variant:"subtitle2",sx:{fontWeight:"bold",flexGrow:1},children:r}),(0,l.jsx)(f.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,l.jsxs)(ev.A,{sx:{pt:0},children:[(0,l.jsx)(s.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,l.jsx)(u.A,{label:"Rejection reason (optional)",placeholder:"e.g. write to dist/ instead",value:null!=(n=N[e.id])?n:"",onChange:t=>T(n=>({...n,[e.id]:t.target.value})),multiline:!0,minRows:1,maxRows:4,fullWidth:!0,size:"small",sx:{mt:1,mb:1}}),(0,l.jsxs)(s.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:1,flexWrap:"wrap"},children:[(0,l.jsx)(h.A,{variant:"outlined",color:"error",size:"small",startIcon:(0,l.jsx)(eF.A,{}),onClick:()=>{var t;return v&&v(e.id,!1,(null==(t=N[e.id])?void 0:t.trim())||void 0)},disabled:!v,children:"Reject"}),(0,l.jsx)(h.A,{variant:"outlined",color:"error",size:"small",onClick:()=>v&&v(e.id,!0),disabled:!v,title:"Always deny this tool — saves a rule so future calls are auto-denied",children:"Always Deny"}),(0,l.jsx)(h.A,{variant:"outlined",color:"success",size:"small",startIcon:(0,l.jsx)(eW.A,{}),onClick:()=>g&&g(e.id,!0),disabled:!g,title:"Always allow this tool — saves a rule so future calls are auto-approved",children:"Always Allow"}),(0,l.jsx)(h.A,{variant:"contained",color:"success",size:"small",startIcon:(0,l.jsx)(eW.A,{}),onClick:()=>g&&g(e.id),disabled:!g,children:"Approve"})]})]})]},e.id||"ptc-".concat(t))})]})]})};var e5=n(84869);let e6=(0,eJ.h)("frontend/services/transcription");async function e4(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{onProgress:n,onStatusChange:l,language:r}=t;try{if(e6.debug("Starting transcription service"),l&&l("Initializing transcription..."),!(0,e5.G)().supported)throw Error("Web Speech API is not supported in this browser");l&&l("Using browser speech recognition...");let t=await (0,e5.S)(e,{language:r,onInterimResult:e=>{l&&l("Transcribing: ".concat(e)),n&&n(50)}});return l&&l("Transcription completed"),e6.debug("Web Speech API transcription completed successfully",{textLength:t.length}),{text:t,success:!0,engine:"webspeech"}}catch(e){return e6.error("Transcription failed",{error:e}),l&&l("Transcription failed"),{text:"Transcription failed. Please check if your browser supports speech recognition.",success:!1,error:e instanceof Error?e.message:String(e)}}}var e8=n(9164),e3=n(35205),e7=n(77073),e9=n(9693),te=n(4823),tt=n(76122),tn=n(22539),tl=n(33567),tr=n(77758);let to=new Set(["start","process","subflow"]),ta=e=>{var t,n;return null!=(n=e.type)?n:null==(t=e.data)?void 0:t.type},ts=e=>{let{flow:t,selectedNodeId:n,onSelect:o,onClose:a}=e,s=(0,tl.A)(),i=(0,r.useMemo)(()=>((null==t?void 0:t.nodes)||[]).map(e=>{let t=to.has(ta(e)||""),l=e.id===n;return{...e,draggable:!1,selectable:!1,style:{...e.style||{},opacity:t?1:.35,cursor:t?"pointer":"default",borderRadius:8,boxShadow:l?"0 0 0 3px ".concat(s.palette.primary.main):void 0,transition:"box-shadow 120ms ease"}}}),[null==t?void 0:t.nodes,n,s.palette.primary.main]),d=(0,r.useMemo)(()=>((null==t?void 0:t.edges)||[]).filter(e=>e.source&&e.target&&e.sourceHandle&&e.targetHandle),[null==t?void 0:t.edges]),c=(0,r.useMemo)(()=>({type:"custom",animated:!1,style:{stroke:s.palette.text.secondary,strokeWidth:2},markerEnd:{type:tt.TG.ArrowClosed,width:20,height:20,color:s.palette.text.secondary}}),[s.palette.text.secondary]);return(0,l.jsx)(tn.Gc,{nodes:i,edges:d,nodeTypes:tr.c_,edgeTypes:tr.nd,defaultEdgeOptions:c,connectionLineType:tt.Do.SmoothStep,fitView:!0,minZoom:.1,maxZoom:2,onNodeClick:(e,t)=>{to.has(ta(t)||"")&&(o(t.id),a())},nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,deleteKeyCode:null,proOptions:{hideAttribution:!0},children:(0,l.jsx)(tn.VS,{})})},ti=e=>{var t,n;let{open:r,flow:o,selectedNodeId:a,allowAutomatic:i,onSelect:d,onClose:c}=e,u=!!(o&&(null!=(n=null==(t=o.nodes)?void 0:t.length)?n:0)>0);return(0,l.jsxs)(g.A,{open:r,onClose:c,maxWidth:"lg",fullWidth:!0,children:[(0,l.jsx)(v.A,{children:"Pick a node to run on"}),(0,l.jsxs)(b.A,{dividers:!0,sx:{p:0},children:[(0,l.jsx)(s.default,{sx:{px:2,pt:1.5},children:(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",children:["Click a ",(0,l.jsx)("strong",{children:"Start"}),", ",(0,l.jsx)("strong",{children:"Process"}),", or"," ",(0,l.jsx)("strong",{children:"Subflow"})," node. Other nodes and edges can't be picked."]})}),(0,l.jsx)(s.default,{sx:{height:"62vh",width:"100%"},children:u?(0,l.jsx)(tn.Ln,{children:(0,l.jsx)(ts,{flow:o,selectedNodeId:a,onSelect:d,onClose:c})}):(0,l.jsx)(s.default,{sx:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,l.jsx)(p.default,{variant:"body2",color:"text.secondary",children:"No flow to display."})})})]}),(0,l.jsxs)(j.A,{children:[i&&(0,l.jsx)(h.A,{startIcon:(0,l.jsx)(te.A,{}),onClick:()=>{d(null),c()},children:"Automatic"}),(0,l.jsx)(s.default,{sx:{flex:1}}),(0,l.jsx)(h.A,{onClick:c,children:"Cancel"})]})]})};var td=n(74879);let tc=(0,eJ.h)("frontend/components/Chat/ChatInput"),tu=e=>{var t,n;let{onSendMessage:o,disabled:a=!1,requireApproval:c=!1,onRequireApprovalChange:x,executeInDebugger:m=!1,onExecuteInDebuggerChange:y,availableNodes:w=[],flow:A=null,currentNodeId:S=null,nodeOverrideActive:C=!1,onSelectNode:I,editing:k=null,onEditingContentChange:E,onEditingNodeChange:T,onSaveEdit:R,onCancelEdit:D}=e,{settings:M}=(0,e8.useStorage)(),[P,O]=(0,r.useState)(""),[W,F]=(0,r.useState)([]),[_,L]=(0,r.useState)(!1),[H,U]=(0,r.useState)(0),[q,B]=(0,r.useState)(null),J=(0,r.useRef)(null),G=(0,r.useRef)(null),K=(0,r.useRef)([]),[Q,Y]=(0,r.useState)(!1),X=!!k,V=X?null!=(t=null==k?void 0:k.nodeId)?t:null:S,Z=(e=>{var t;return(null==(t=w.find(t=>t.id===e))?void 0:t.label)||(e?"".concat(e.substring(0,6),"..."):"Start")})(V),[$,ee]=(0,r.useState)(!1),[et,en]=(0,r.useState)(""),[el,er]=(0,r.useState)(""),[eo,ea]=(0,r.useState)("document"),[es,ei]=(0,r.useState)(!1),[ed,ec]=(0,r.useState)(0),[eu,eh]=(0,r.useState)(""),em=()=>{k&&k.content.trim()&&(null==R||R())},eg=()=>{(P.trim()||W.length>0)&&(tc.debug("Sending message",{messageLength:P.length,attachmentsCount:W.length}),o(P,W),O(""),F([]))},ev=async e=>{let t=e.target.files;if(!t||0===t.length)return;let n=t[0];tc.debug("File selected",{fileName:n.name,fileSize:n.size,fileType:n.type}),er("Processing ".concat(n.name)),ea("document"),en(""),ei(!0),ee(!0);try{let e=await ey(n);tc.debug("File read successfully",{contentLength:e.length}),en(e),ei(!1)}catch(e){tc.error("Error reading file:",e),en("Error reading file. Please try again with a text file."),ei(!1)}J.current&&(J.current.value="")},ey=e=>new Promise((t,n)=>{let l=new FileReader;l.onload=e=>{var l;(null==(l=e.target)?void 0:l.result)?t(e.target.result):n(Error("Failed to read file"))},l.onerror=()=>{n(Error("Error reading file"))},l.readAsText(e)}),ej=async()=>{tc.debug("Starting audio recording");try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});tc.debug("Audio stream obtained successfully"),K.current=[];let t=new MediaRecorder(e);G.current=t,t.ondataavailable=e=>{e.data.size>0&&K.current.push(e.data)},t.onstop=async()=>{let t=new Blob(K.current,{type:"audio/wav"});er("Audio Recording"),ea("audio"),en(""),ei(!0),ee(!0);try{if(((null==M?void 0:M.speech)||{enabled:!0,modelSize:"base",autoDownload:!1}).enabled){eh("Initializing transcription..."),ec(0);let e=await e4(t,{onProgress:ec,onStatusChange:eh,language:navigator.language});if(e.success){let t=e.text;en(t),tc.debug("Transcription successful",{textLength:e.text.length,engine:e.engine})}else en("Error transcribing audio: ".concat(e.error,".")),tc.error("Transcription failed",{error:e.error})}else en("Speech recognition is disabled in settings. Enable it to get automatic transcriptions.")}catch(e){tc.error("Error handling audio recording",{error:e}),en("Failed to process audio: ".concat(e))}finally{ei(!1),e.getTracks().forEach(e=>e.stop())}},t.start(),L(!0);let n=setInterval(()=>{U(e=>e+1)},1e3);B(n)}catch(e){tc.error("Error starting recording:",e),alert("Could not access microphone. Please check permissions.")}};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(ex.A,{elevation:3,sx:{p:2,display:"flex",flexDirection:"column",borderRadius:2},children:[W.length>0&&(0,l.jsx)(s.default,{sx:{mb:2,display:"flex",flexWrap:"wrap",gap:1},children:W.map(e=>(0,l.jsxs)(ex.A,{variant:"outlined",sx:{p:1,display:"flex",alignItems:"center",borderRadius:1,bgcolor:"background.default"},children:["image"===e.type?(0,l.jsx)(s.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,l.jsx)(eR.A,{fontSize:"small",sx:{mr:1}}):(0,l.jsx)(eD.A,{fontSize:"small",sx:{mr:1}}),(0,l.jsx)(p.default,{variant:"body2",noWrap:!0,sx:{maxWidth:150},children:e.originalName||"".concat(e.type," attachment")}),(0,l.jsx)(d.A,{size:"small",onClick:()=>(e=>{tc.debug("Removing attachment",{id:e}),F(W.filter(t=>t.id!==e))})(e.id),sx:{ml:1},children:(0,l.jsx)(e7.A,{fontSize:"small"})})]},e.id))}),X&&(0,l.jsxs)(s.default,{sx:{mb:1,display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(f.A,{icon:(0,l.jsx)(z.A,{}),label:"Editing message",size:"small",color:"warning",variant:"outlined"}),(0,l.jsx)(p.default,{variant:"caption",color:"text.secondary",children:"Enter to save \xb7 Esc to cancel"})]}),(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"flex-end"},children:[(0,l.jsx)(u.A,{fullWidth:!0,multiline:!0,maxRows:X?12:4,"data-tour":"chat-input",placeholder:X?"Edit message...":"Type a message...",value:X?null!=(n=null==k?void 0:k.content)?n:"":P,onChange:e=>{X?null==E||E(e.target.value):O(e.target.value)},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey?"Escape"===e.key&&X&&(e.preventDefault(),null==D||D()):(e.preventDefault(),X?em():(tc.debug("Enter key pressed, sending message"),eg()))},onPaste:e=>{var t;let n=null==(t=e.clipboardData)?void 0:t.items;if(!n)return;let l=[];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&&l.push(e)}}0!==l.length&&(e.preventDefault(),tc.debug("Pasting image attachment(s)",{count:l.length}),l.forEach(e=>{let t=new FileReader;t.onload=t=>{var n;let l=null==(n=t.target)?void 0:n.result;if("string"!=typeof l)return;let r=(e.type.split("/")[1]||"png").split("+")[0];F(t=>[...t,{id:(0,td.A)(),type:"image",content:l,originalName:e.name&&!/^image\.\w+$/i.test(e.name)?e.name:"Pasted image.".concat(r)}])},t.onerror=()=>tc.error("Failed to read pasted image"),t.readAsDataURL(e)}))},disabled:!X&&a,variant:"outlined",autoFocus:X,sx:{mr:1},InputProps:{sx:{borderRadius:2}}}),!X&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.A,{title:"Attach document",children:(0,l.jsx)(d.A,{color:"primary",onClick:()=>{var e;tc.debug("File selection triggered"),null==(e=J.current)||e.click()},disabled:a||_,children:(0,l.jsx)(eR.A,{})})}),(0,l.jsx)("input",{type:"file",ref:J,onChange:ev,style:{display:"none"},accept:".txt,.md,.json,.csv,.html,.xml,.js,.ts,.jsx,.tsx,.css,.scss"}),(0,l.jsx)(i.A,{title:_?"Stop recording":"Record audio",children:(0,l.jsxs)(d.A,{color:_?"error":"primary",onClick:_?()=>{tc.debug("Stopping audio recording"),G.current&&"inactive"!==G.current.state&&(G.current.stop(),L(!1),q&&(clearInterval(q),B(null)),U(0))}:ej,disabled:a,children:[(0,l.jsx)(eD.A,{}),_&&(0,l.jsx)(p.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"))})(H)})]})})]}),X?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.A,{title:"Save edit",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{color:"primary",onClick:em,disabled:!(null==k?void 0:k.content.trim()),children:(0,l.jsx)(e9.A,{})})})}),(0,l.jsx)(i.A,{title:"Cancel edit",children:(0,l.jsx)(d.A,{color:"default",onClick:()=>null==D?void 0:D(),children:(0,l.jsx)(e7.A,{})})})]}):(0,l.jsx)(i.A,{title:"Send message",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{color:"primary",onClick:eg,disabled:a||!P.trim()&&0===W.length,children:(0,l.jsx)(e3.A,{})})})})]})," ",(x||(I||X)&&w.length>0)&&(0,l.jsxs)(s.default,{sx:{mt:1,display:"flex",justifyContent:"flex-start",alignItems:"center",flexWrap:"wrap",gap:1},children:[(I||X)&&w.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.A,{title:X?"Node this message runs on — click to pick from the flow":C?"Next message will run on this manually picked node — click to change":"Node the next message will run on — click to pick from the flow",children:(0,l.jsx)(f.A,{icon:(0,l.jsx)(N.A,{}),label:Z,size:"small",color:X||C?"primary":"default",variant:X||C?"filled":"outlined",onClick:()=>Y(!0),disabled:!X&&a})}),(0,l.jsx)(ti,{open:Q,flow:A,selectedNodeId:V,allowAutomatic:!X,onSelect:e=>{X?null==T||T(e):null==I||I(e)},onClose:()=>Y(!1)})]}),x&&(0,l.jsx)(ef.A,{control:(0,l.jsx)(eb.A,{checked:c,onChange:e=>x(e.target.checked),size:"small",disabled:a}),label:(0,l.jsx)(p.default,{variant:"caption",children:"Require Tool Approvals"}),sx:{mr:"auto"}}),y&&(0,l.jsx)(ef.A,{control:(0,l.jsx)(eb.A,{checked:m,onChange:e=>y(e.target.checked),size:"small",disabled:a}),label:(0,l.jsx)(p.default,{variant:"caption",children:"Execute in Debugger"}),sx:{ml:2}})]})," "]})," ",(0,l.jsxs)(g.A,{open:$,onClose:()=>!es&&ee(!1),maxWidth:"md",fullWidth:!0,children:[(0,l.jsxs)(v.A,{children:[el,!es&&(0,l.jsx)(d.A,{"aria-label":"close",onClick:()=>ee(!1),sx:{position:"absolute",right:8,top:8},children:(0,l.jsx)(e7.A,{})})]}),(0,l.jsx)(b.A,{dividers:!0,children:es?(0,l.jsxs)(s.default,{sx:{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",p:4},children:[(0,l.jsx)(ep.default,{value:"audio"===eo&&ed?ed:void 0,variant:"audio"===eo&&ed>0?"determinate":"indeterminate"}),"audio"===eo&&(0,l.jsxs)(s.default,{sx:{mt:2,textAlign:"center"},children:[(0,l.jsx)(p.default,{variant:"body2",children:eu||"Processing audio..."}),ed>0&&(0,l.jsxs)(p.default,{variant:"body2",color:"text.secondary",sx:{mt:1},children:[Math.round(ed),"%"]})]})]}):(0,l.jsx)(u.A,{multiline:!0,fullWidth:!0,minRows:10,maxRows:20,value:et,onChange:e=>en(e.target.value),variant:"outlined",placeholder:"document"===eo?"Document content":"Audio transcription"})}),(0,l.jsxs)(j.A,{children:[(0,l.jsx)(h.A,{onClick:()=>ee(!1),disabled:es,children:"Cancel"}),(0,l.jsx)(h.A,{onClick:()=>{tc.debug("Adding attachment",{type:eo,titleLength:el.length}),F([...W,{id:(0,td.A)(),type:eo,content:et,originalName:el}]),ee(!1)},variant:"contained",disabled:es||!et.trim(),children:"Add to Message"})]})]})]})};var tp=n(66177),tf=n(39486),th=n(82446),tx=n(37596);let tm=e=>{let{entries:t,activeKey:n,onSelectTab:o,onCloseTab:a,onAppMessage:c}=e,u=(0,tl.A)(),[f,h]=(0,r.useState)(!1),[x,m]=(0,r.useState)(!1),[g,v]=(0,r.useState)([]),b=(0,r.useMemo)(()=>new Set(t.map(e=>e.key)),[t]),y=(0,r.useMemo)(()=>g.filter(e=>b.has(e)),[g,b]),j=(0,r.useMemo)(()=>y.length>0?y:n?[n]:[],[y,n]),w=(0,r.useMemo)(()=>new Set(j),[j]),A=Math.max(1,Math.ceil(Math.sqrt(j.length)));return 0===t.length?null:(0,l.jsxs)(s.default,{"data-testid":"dev-canvas-dock",sx:{borderTop:1,borderColor:"divider",bgcolor:"background.paper",display:"flex",flexDirection:"column",minHeight:0,...x?{position:"fixed",inset:16,zIndex:1300,borderRadius:1,boxShadow:6,border:1}:{maxHeight:"45vh"}},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5,px:1,py:.5,bgcolor:"action.hover"},children:[(0,l.jsx)(eL.A,{fontSize:"small",color:"primary"}),(0,l.jsx)(p.default,{variant:"caption",sx:{fontWeight:600,mr:1},children:"Canvas"}),(0,l.jsx)(s.default,{sx:{display:"flex",gap:.5,overflowX:"auto",flex:1,minWidth:0},children:t.map(e=>{let t=e.key===n,r=y.includes(e.key);return(0,l.jsxs)(s.default,{onClick:()=>o(e.key),sx:{display:"flex",alignItems:"center",gap:.5,px:1,py:.25,borderRadius:1,cursor:"pointer",whiteSpace:"nowrap",border:1,borderColor:t?"primary.main":"divider",bgcolor:t?"action.selected":"transparent"},title:"".concat(e.serverName," — ").concat(e.uri),children:[(0,l.jsx)(tp.A,{color:"primary",variant:"dot",invisible:!e.unread,children:(0,l.jsx)(p.default,{variant:"caption",sx:{fontWeight:t?600:400},children:function(e){return e.replace(/\/+$/,"").split("/").pop()||e}(e.uri)})}),(0,l.jsx)(p.default,{variant:"caption",color:"text.secondary",sx:{fontSize:"0.65rem"},children:e.serverName}),(0,l.jsx)(i.A,{title:r?"Remove from split":"Add to split view",children:(0,l.jsx)(d.A,{size:"small",sx:{p:.25},color:r?"primary":"default",onClick:t=>{t.stopPropagation(),(e=>{v(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])})(e.key)},"aria-label":"Toggle split view",children:(0,l.jsx)(tx.A,{sx:{fontSize:14}})})}),(0,l.jsx)(i.A,{title:"Close",children:(0,l.jsx)(d.A,{size:"small",sx:{p:.25},onClick:t=>{t.stopPropagation(),a(e.key)},"aria-label":"Close canvas tab",children:(0,l.jsx)(e7.A,{sx:{fontSize:14}})})})]},e.key)})}),(0,l.jsx)(i.A,{title:x?"Exit fullscreen":"Fullscreen",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>m(e=>!e),"aria-label":"Toggle canvas fullscreen",children:x?(0,l.jsx)(th.A,{fontSize:"small"}):(0,l.jsx)(tf.A,{fontSize:"small"})})}),(0,l.jsx)(i.A,{title:f?"Expand canvas":"Collapse canvas",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>h(e=>!e),"aria-label":"Toggle canvas collapse",children:f?(0,l.jsx)(X.A,{fontSize:"small"}):(0,l.jsx)(Y.A,{fontSize:"small"})})})]}),(0,l.jsx)(s.default,{sx:{display:f?"none":"grid",gridTemplateColumns:"repeat(".concat(A,", minmax(0, 1fr))"),gap:1,p:1,flex:1,minHeight:0,overflow:"hidden"},children:t.map(e=>{let t=!f&&w.has(e.key);return(0,l.jsx)(s.default,{sx:{display:t?"flex":"none",flexDirection:"column",minHeight:0,border:1,borderColor:"divider",borderRadius:1,overflow:"hidden",bgcolor:"dark"===u.palette.mode?"#111":"#fff"},children:(0,l.jsx)(eB.A,{docked:!0,visible:t,serverName:e.serverName,uri:e.uri,toolName:e.toolName,toolArgs:e.latestToolArgs,toolResultContent:e.latestResultContent,onAppMessage:c})},e.key)})})]})},tg={entries:{},order:[],activeKey:null};function tv(e,t){return"".concat(e,"::").concat(t)}function tb(e,t){var n;return null!=(n=e[t])?n:[]}function ty(e,t){if(!(t in e))return e;let n={...e};return delete n[t],n}function tj(e,t,n){let l=tb(e,t),r=l.filter(e=>e.id!==n);if(r.length===l.length)return e;let o={...e};return r.length>0?o[t]=r:delete o[t],o}var tw=n(25731),tA=n(62617),tS=n(12857),tC=n(16186);let tI={byIndex:{}};function tk(e,t,n){for(let l=0;l<t;l++)e[l]||(e[l]={laneIndex:l,laneCount:t,label:"Lane ".concat(l+1,"/").concat(t),status:"pending",lastEventAt:n})}let tE=e=>{let{lane:t,onOpenLane:n}=e,r=!!t.laneConversationId&&!!n,o="pending"===t.status;return(0,l.jsxs)(s.default,{onClick:r?()=>n(t.laneConversationId):void 0,sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.25,borderRadius:1,...r&&{cursor:"pointer","&:hover":{bgcolor:"action.hover",textDecoration:"underline"}}},children:["running"===t.status&&(0,l.jsx)(ep.default,{size:14,sx:{flexShrink:0}}),"completed"===t.status&&(0,l.jsx)(C.A,{sx:{fontSize:16,flexShrink:0},color:"success"}),"error"===t.status&&(0,l.jsx)(tS.A,{sx:{fontSize:16,flexShrink:0},color:"error"}),o&&(0,l.jsx)(tC.A,{sx:{fontSize:16,flexShrink:0},color:"disabled"}),(0,l.jsxs)(p.default,{variant:"caption",color:o?"text.disabled":"textSecondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[t.label,o&&" — queued","running"===t.status&&t.activity&&(0,l.jsxs)(p.default,{component:"span",variant:"caption",color:"text.disabled",children:[" \xb7 ",t.activity]})]})]})},tz=e=>{var t;let{liveStats:n,onStop:o,stopDisabled:a,awaitingApproval:i,lanes:d,onOpenLane:c,onAttachDebugger:u}=e,[f,x]=(0,r.useState)(()=>Date.now()),[m,g]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=setInterval(()=>x(Date.now()),1e3);return()=>clearInterval(e)},[]);let v=n?Math.max(0,Math.round((f-n.startedAt)/1e3)):0,b=n?Math.round((f-n.lastEventAt)/1e3):0,y=!i&&!!n&&b>=60,j=d?Object.values(d.byIndex).sort((e,t)=>e.laneIndex-t.laneIndex):[],w=j.length>0?(e=>{let t=e.filter(e=>"running"===e.status).length,n=e.filter(e=>"pending"===e.status).length,l=e.filter(e=>"completed"===e.status).length,r=e.filter(e=>"error"===e.status).length;if(0===t&&0===n&&r>0)return{text:"".concat(r,"/").concat(e.length," lanes failed — partial results"),warning:!0};let o=[t>0?"".concat(t," running"):"",n>0?"".concat(n," queued"):"",l>0?"".concat(l," done"):"",r>0?"".concat(r," failed"):""].filter(Boolean);return{text:"".concat(e.length," lanes — ").concat(o.join(", ")),warning:r>0}})(j):null;return(0,l.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",my:2,gap:.5},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:2},children:[i?(0,l.jsx)(tw.A,{fontSize:"small",color:"warning"}):(0,l.jsx)(ep.default,{size:20,color:y?"warning":"primary"}),(0,l.jsx)(p.default,{variant:"body2",color:"textSecondary",children:i?"Waiting for tool approval":(null==n?void 0:n.activeNode)?"Running: ".concat(n.activeNode):"Working…"}),u&&!i&&(0,l.jsx)(h.A,{variant:"outlined",color:"primary",size:"small",startIcon:(0,l.jsx)(tA.A,{fontSize:"small"}),onClick:()=>{g(!0),u()},disabled:m,children:m?"Attaching…":"Attach debugger"}),(0,l.jsx)(h.A,{variant:"outlined",color:"secondary",size:"small",onClick:o,disabled:a,children:"Stop"})]}),w&&(0,l.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",alignItems:"stretch",minWidth:280,maxWidth:520},children:[(0,l.jsx)(p.default,{variant:"caption",color:w.warning?"warning.main":"textSecondary",sx:{px:1,fontWeight:500},children:w.text}),j.map(e=>(0,l.jsx)(tE,{lane:e,onOpenLane:c},e.laneIndex))]}),!i&&(0,l.jsxs)(p.default,{variant:"caption",color:y?"warning.main":"textSecondary",children:[(null!=(t=null==n?void 0:n.totalTokens)?t:0).toLocaleString()," tokens \xb7 ",v,"s elapsed",y?" \xb7 no activity for ".concat(b,"s — may be stuck"):""]})]})};var tN=n(52005),tT=n(54121);let tR=e=>{let{todos:t}=e;if(!t||0===t.length)return null;let n=t.filter(e=>"done"===e.status).length,r=t.length>0?Math.round(n/t.length*100):0;return(0,l.jsxs)(ex.A,{variant:"outlined",sx:{mt:2,p:1.5,borderRadius:2},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:1},children:[(0,l.jsx)(p.default,{variant:"subtitle2",sx:{fontWeight:600},children:"Tasks"}),(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",children:[n," of ",t.length," done"]})]}),(0,l.jsx)(tN.A,{variant:"determinate",value:r,sx:{mb:1,borderRadius:1}}),(0,l.jsx)(s.default,{component:"ul",sx:{listStyle:"none",m:0,p:0},children:t.map(e=>(0,l.jsxs)(s.default,{component:"li",sx:{display:"flex",alignItems:"center",gap:1,py:.25},children:[function(e){switch(e){case"done":return(0,l.jsx)(C.A,{fontSize:"small",color:"success"});case"in_progress":return(0,l.jsx)(tT.A,{fontSize:"small",color:"info"});case"cancelled":return(0,l.jsx)(tS.A,{fontSize:"small",color:"disabled"});default:return(0,l.jsx)(tC.A,{fontSize:"small",color:"disabled"})}}(e.status),(0,l.jsx)(p.default,{variant:"body2",sx:{textDecoration:"done"===e.status||"cancelled"===e.status?"line-through":"none",color:"done"===e.status||"cancelled"===e.status?"text.secondary":"text.primary"},children:e.content})]},e.id))})]})};var tD=n(88538),tM=n(16963),tP=n(2456),tO=n(64792),tW=n(71356),tF=n(45202),t_=n(77998);let tL=e=>e>=1e3?"".concat((e/1e3).toFixed(e>=1e5?0:1),"k"):"".concat(e),tH=e=>{var t;let{usage:n,contextInfo:o,availableNodes:a}=e,[d,c]=(0,r.useState)(null);if(!n&&!o)return null;let u=(null==n?void 0:n.byNode)?Object.entries(n.byNode):[],h=null!=(t=null==n?void 0:n.cacheReadTokens)?t:0,x=n?Math.max(0,n.promptTokens-h):0,m=n?Math.max(0,n.totalTokens-h):0,g=(null==o?void 0:o.contextWindow)&&o.contextWindow>0?Math.min(100,Math.round(o.promptTokens/o.contextWindow*100)):void 0;return(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1.5,flexShrink:0},children:[n&&m>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.A,{title:"Tokens this conversation — ".concat(x.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,l.jsx)(f.A,{icon:(0,l.jsx)(t_.A,{}),label:"".concat(tL(m)," tokens"),size:"small",variant:"outlined",onClick:e=>c(e.currentTarget),sx:{cursor:"pointer"}})}),(0,l.jsx)(tD.Ay,{open:!!d,anchorEl:d,onClose:()=>c(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:(0,l.jsxs)(s.default,{sx:{p:2,maxWidth:420},children:[(0,l.jsx)(p.default,{variant:"subtitle2",sx:{mb:1},children:"Token usage by node"}),(0,l.jsxs)(tM.A,{size:"small",children:[(0,l.jsx)(tP.A,{children:(0,l.jsxs)(tO.A,{children:[(0,l.jsx)(tW.A,{children:"Node"}),(0,l.jsx)(tW.A,{align:"right",children:"Prompt"}),(0,l.jsx)(tW.A,{align:"right",children:"Completion"}),(0,l.jsx)(tW.A,{align:"right",children:"Total"})]})}),(0,l.jsxs)(tF.A,{children:[u.map(e=>{let[t,n]=e;return(0,l.jsxs)(tO.A,{children:[(0,l.jsx)(tW.A,{children:(0,l.jsx)(i.A,{title:t,children:(0,l.jsx)("span",{children:(e=>{var t;return(null==(t=a.find(t=>t.id===e))?void 0:t.label)||"".concat(e.substring(0,8),"…")})(t)})})}),(0,l.jsx)(tW.A,{align:"right",children:n.promptTokens.toLocaleString()}),(0,l.jsx)(tW.A,{align:"right",children:n.completionTokens.toLocaleString()}),(0,l.jsx)(tW.A,{align:"right",children:n.totalTokens.toLocaleString()})]},t)}),(0,l.jsxs)(tO.A,{children:[(0,l.jsx)(tW.A,{sx:{fontWeight:"bold"},children:"Total"}),(0,l.jsx)(tW.A,{align:"right",sx:{fontWeight:"bold"},children:n.promptTokens.toLocaleString()}),(0,l.jsx)(tW.A,{align:"right",sx:{fontWeight:"bold"},children:n.completionTokens.toLocaleString()}),(0,l.jsx)(tW.A,{align:"right",sx:{fontWeight:"bold"},children:n.totalTokens.toLocaleString()})]})]})]}),h>0&&(0,l.jsxs)(p.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 (",m.toLocaleString(),") with those cached reads excluded."]})]})})]}),o&&void 0!==g&&(0,l.jsx)(i.A,{title:"Context of the latest call".concat(o.modelDisplayName?" (".concat(o.modelDisplayName,")"):"",": ").concat(o.promptTokens.toLocaleString()," of ").concat(o.contextWindow.toLocaleString()," tokens"),children:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1,minWidth:140},children:[(0,l.jsx)(tN.A,{variant:"determinate",value:g,color:g>=90?"error":g>=70?"warning":"primary",sx:{flex:1,height:6,borderRadius:3}}),(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:[tL(o.promptTokens),"/",tL(o.contextWindow)," (",g,"%)"]})]})}),o&&void 0===g&&(0,l.jsx)(i.A,{title:"Prompt size of the latest call".concat(o.modelDisplayName?" (".concat(o.modelDisplayName,")"):"",". Set the model's Context Window in its settings to see a usage meter."),children:(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:["ctx ",tL(o.promptTokens)]})})]})};var tU=n(75870),tq=n(43076),tB=n(17897);let tJ=(0,eJ.h)("frontend/components/Chat/QuickChatDialog"),tG=e=>{let{open:t,onClose:n,onStart:o}=e,[a,i]=(0,r.useState)([]),[x,m]=(0,r.useState)([]),[y,w]=(0,r.useState)(!1),[A,S]=(0,r.useState)(null),[C,I]=(0,r.useState)(""),[k,E]=(0,r.useState)(""),[z,N]=(0,r.useState)({}),[T,R]=(0,r.useState)(!1),[D,M]=(0,r.useState)(null);(0,r.useEffect)(()=>{if(!t)return;let e=!1;return w(!0),S(null),(async()=>{try{let[t,n]=await Promise.all([tq.N.loadModels(),tB.S.loadServerConfigs()]);if(e)return;i(t);let l=Array.isArray(n)?n.filter(e=>!e.disabled).map(e=>e.name):[];m(l),I(e=>{var n;return e||(null==(n=t[0])?void 0:n.id)||""})}catch(t){e||(tJ.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,r.useEffect)(()=>{t||(E(""),N({}),M(null),R(!1))},[t]);let P=(0,r.useCallback)(e=>{N(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}}})},[]),O=(0,r.useCallback)(async e=>{N(t=>{var n;let l=null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!1};return{...t,[e]:{...l,expanded:!l.expanded}}});let t=z[e];if(!(null==t?void 0:t.available)&&!(null==t?void 0:t.loading)){N(t=>{var n;return{...t,[e]:{...null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!0},loading:!0}}});try{let{tools:t}=await tB.S.listServerTools(e),n=Array.isArray(t)?t.map(e=>e.name).filter(Boolean):[];N(t=>{var l;return{...t,[e]:{...null!=(l=t[e])?l:{selected:!1,tools:null,expanded:!0},available:n,loading:!1}}})}catch(t){tJ.warn("Failed to load tools for ".concat(e),t),N(t=>{var n;return{...t,[e]:{...null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!0},available:[],loading:!1}}})}}},[z]),F=(0,r.useCallback)((e,t,n)=>{N(l=>{var r,o;let a=null!=(r=l[e])?r:{selected:!0,tools:null,expanded:!0},s=new Set(null!=(o=a.tools)?o:new Set(n));return s.has(t)?s.delete(t):s.add(t),{...l,[e]:{...a,selected:!0,tools:s}}})},[]),U=!!C&&!T&&!y,B=async()=>{if(!C)return void M("Pick a model to chat with.");R(!0),M(null);let e=x.filter(e=>{var t;return null==(t=z[e])?void 0:t.selected}).map(e=>{let t=z[e];return!t.tools||t.available&&t.tools.size===t.available.length?{name:e}:{name:e,enabledTools:[...t.tools]}});try{await o({modelId:C,servers:e,systemPrompt:k.trim()||void 0})}catch(e){tJ.warn("Quick chat failed to start",e),M(e instanceof Error?e.message:"Could not start the quick chat."),R(!1)}};return(0,l.jsxs)(g.A,{open:t,onClose:T?void 0:n,maxWidth:"sm",fullWidth:!0,children:[(0,l.jsx)(v.A,{children:"Quick Chat"}),(0,l.jsxs)(b.A,{children:[(0,l.jsx)(p.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,l.jsx)(c.A,{severity:"error",sx:{mb:2},children:A}),(0,l.jsxs)(_.A,{fullWidth:!0,size:"small",sx:{mb:2},disabled:y,children:[(0,l.jsx)(ey.A,{id:"quick-chat-model-label",children:"Model"}),(0,l.jsxs)(L.A,{labelId:"quick-chat-model-label",label:"Model",value:C,onChange:e=>I(e.target.value),children:[0===a.length&&(0,l.jsx)(H.A,{value:"",disabled:!0,children:y?"Loading…":"No models configured"}),a.map(e=>(0,l.jsx)(H.A,{value:e.id,children:e.displayName||e.name},e.id))]})]}),(0,l.jsx)(u.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,l.jsx)(W.A,{sx:{mb:1}}),(0,l.jsx)(p.default,{variant:"subtitle2",gutterBottom:!0,children:"MCP servers (optional)"}),y?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(ep.default,{size:22})}):0===x.length?(0,l.jsx)(p.default,{variant:"body2",color:"text.secondary",children:"No connected MCP servers. You can still chat with the model alone."}):x.map(e=>{let t=z[e],n=!!(null==t?void 0:t.selected),r=null==t?void 0:t.available,o=null==t?void 0:t.tools;return(0,l.jsxs)(s.default,{sx:{mb:.5},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center"},children:[(0,l.jsx)(ef.A,{sx:{flexGrow:1,mr:0},control:(0,l.jsx)(eb.A,{size:"small",checked:n,onChange:()=>P(e)}),label:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(p.default,{variant:"body2",children:e}),n&&(0,l.jsx)(f.A,{size:"small",variant:"outlined",label:o?"".concat(o.size," tool").concat(1===o.size?"":"s"):"all tools"})]})}),(0,l.jsx)(d.A,{size:"small",onClick:()=>O(e),"aria-label":"customize ".concat(e," tools"),children:(null==t?void 0:t.expanded)?(0,l.jsx)(X.A,{fontSize:"small"}):(0,l.jsx)(Y.A,{fontSize:"small"})})]}),(0,l.jsx)(q.A,{in:!!(null==t?void 0:t.expanded),unmountOnExit:!0,children:(0,l.jsx)(s.default,{sx:{pl:4,pb:1},children:(null==t?void 0:t.loading)?(0,l.jsx)(ep.default,{size:16}):r&&r.length>0?r.map(t=>{let n=!o||o.has(t);return(0,l.jsx)(ef.A,{sx:{display:"flex"},control:(0,l.jsx)(eb.A,{size:"small",checked:n,onChange:()=>F(e,t,r)}),label:(0,l.jsx)(p.default,{variant:"caption",children:t})},t)}):(0,l.jsx)(p.default,{variant:"caption",color:"text.secondary",children:r?"No tools reported (server may be offline).":""})})})]},e)}),D&&(0,l.jsx)(c.A,{severity:"error",sx:{mt:2},children:D})]}),(0,l.jsxs)(j.A,{children:[(0,l.jsx)(h.A,{onClick:n,disabled:T,children:"Cancel"}),(0,l.jsx)(h.A,{variant:"contained",onClick:B,disabled:!U,startIcon:T?(0,l.jsx)(ep.default,{size:16,color:"inherit"}):void 0,children:T?"Starting…":"Start chat"})]})]})};var tK=n(49692),tQ=n(54178),tY=n(11305),tX=n(48116),tV=n(90057),tZ=n(33420),t$=n(53911);let t0={byNode:{},byResource:{},byResourceName:{},resourceVersion:0};function t1(e,t){return"".concat(e," ").concat(t)}var t2=n(59323),t5=n(72308),t6=n(6422),t4=n(48363);let t8=(0,eJ.h)("frontend/components/Chat/RunResourcesPanel"),t3=e=>{let{conversationId:t,refreshToken:n}=e,[o,a]=(0,r.useState)(null),[i,d]=(0,r.useState)(null);return((0,r.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||(a(Array.isArray(t.resources)?t.resources:[]),d(null))}).catch(t=>{e||(t8.warn("Failed to load run resources",t),d(t instanceof Error?t.message:String(t)))}),()=>{e=!0}},[t,n]),i)?(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",children:["Run data unavailable (",i,")"]}):null===o?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",p:1},children:(0,l.jsx)(ep.default,{size:16})}):0===o.length?(0,l.jsx)(p.default,{variant:"caption",color:"text.secondary",children:"No data artifacts captured in this run yet."}):(0,l.jsx)(U.A,{dense:!0,disablePadding:!0,children:[...o].sort((e,t)=>t.createdAt-e.createdAt).map(e=>{var t;return(0,l.jsxs)(M.Ay,{disableGutters:!0,sx:{alignItems:"flex-start"},children:[(0,l.jsx)(eI.A,{sx:{minWidth:30,mt:.5},children:function(e){switch(e){case"image":return(0,l.jsx)(t5.A,{fontSize:"small",sx:{color:"#009688"}});case"audio":return(0,l.jsx)(t6.A,{fontSize:"small",sx:{color:"#009688"}});case"link":return(0,l.jsx)(t4.A,{fontSize:"small",sx:{color:"#009688"}});default:return(0,l.jsx)(t2.A,{fontSize:"small",sx:{color:"#009688"}})}}(e.kind)}),(0,l.jsx)(O.A,{primary:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap"},children:[(0,l.jsx)(p.default,{variant:"body2",sx:{fontWeight:500},children:null!=(t=e.name)?t:"".concat(e.kind,"-").concat(e.id.slice(0,8))}),e.mimeType&&(0,l.jsx)(f.A,{label:e.mimeType,size:"small",variant:"outlined",sx:{height:18,fontSize:"0.65rem"}}),(0,l.jsx)(p.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,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",component:"span",sx:{wordBreak:"break-all"},children:["by ",function(e){var t,n,l,r,o,a,s;let i=e.producedBy;switch(i.source){case"tool-result":return"tool ".concat(null!=(t=i.server)?t:"?","/").concat(null!=(n=i.toolName)?n:"?");case"tool-args":return"tool args ".concat(null!=(l=i.server)?l:"?","/").concat(null!=(r=i.toolName)?r:"?");case"capture":return"step ".concat(null!=(a=null!=(o=i.nodeName)?o:i.nodeId)?a:"?");case"mcp-link":return"link from ".concat(null!=(s=i.server)?s:"?");default:return"run"}}(e),e.readBy.length>0?" \xb7 read ".concat(e.readBy.length,"\xd7"):""," \xb7 ",e.uri]})})]},e.id)})})};var t7=n(14913),t9=n(57883);let ne={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"}},nt={whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem",fontFamily:"inherit"},nn=e=>{let{role:t,content:n,toolCallNames:r,status:o,faded:a}=e;return(0,l.jsxs)(ex.A,{variant:"outlined",sx:{p:1,mb:.75,opacity:a?.55:1,borderStyle:a?"dashed":"solid"},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5,mb:.5,flexWrap:"wrap"},children:[(0,l.jsx)(f.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"}),r&&r.length>0&&(0,l.jsx)(f.A,{size:"small",variant:"outlined",label:"\uD83D\uDD27 ".concat(r.join(", ")),sx:{maxWidth:"100%"}}),o&&"sent"!==o&&"system"!==o&&(0,l.jsx)(f.A,{size:"small",color:ne[o].color,label:ne[o].label})]}),n.trim().length>0?(0,l.jsx)("pre",{style:nt,children:n}):(0,l.jsx)(p.default,{variant:"caption",color:"textSecondary",children:"(no text content)"})]})},nl=e=>{let{provenance:t}=e;return(0,l.jsxs)(s.default,{children:[(0,l.jsx)(p.default,{variant:"caption",color:"textSecondary",sx:{display:"block",mb:.5},children:"Full threaded history — greyed rows are not sent to the model."}),t.map((e,t)=>{var n,r;return(0,l.jsx)(nn,{role:e.role,content:null!=(n=e.preview)?n:"",toolCallNames:e.toolCallNames,status:e.status,faded:"sent"!==e.status&&"system"!==e.status},null!=(r=e.id)?r:"hist-".concat(t))}),t.some(e=>"sent"!==e.status&&"system"!==e.status)&&(0,l.jsx)(p.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)."})]})},nr=()=>{},no=e=>{let{modelInput:t,conversationId:n}=e,[o,a]=(0,r.useState)("wire"),{systemMessage:i,wireMessages:d,provenance:c,counts:u,inputMode:h}=t,x=(0,r.useMemo)(()=>(d||[]).filter(e=>"system"!==e.role),[d]);return(0,l.jsxs)(s.default,{sx:{height:"100%",display:"flex",flexDirection:"column",p:1},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap",mb:1},children:[(0,l.jsx)(p.default,{variant:"caption",color:"textSecondary",children:function(e){return"".concat(e.threaded," in history → ").concat(e.sent," sent")+(e.folded?" \xb7 ".concat(e.folded," folded"):"")+(e.scopedOut?" \xb7 ".concat(e.scopedOut," scoped out"):"")+(e.handoffStripped?" \xb7 ".concat(e.handoffStripped," handoff-stripped"):"")}(u)}),h&&"full-history"!==h&&(0,l.jsx)(f.A,{size:"small",variant:"outlined",label:"inputMode: ".concat(h)})]}),(0,l.jsxs)(em.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(eg.A,{expandIcon:(0,l.jsx)(Y.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(p.default,{variant:"caption",children:(0,l.jsx)("b",{children:"System message"})})}),(0,l.jsx)(ev.A,{sx:{p:0},children:i&&i.content.trim().length>0?(0,l.jsx)(ex.A,{variant:"outlined",sx:{p:1,maxHeight:220,overflowY:"auto"},children:(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem",fontFamily:"inherit"},children:i.content})}):(0,l.jsx)(p.default,{variant:"caption",color:"textSecondary",children:"(no system message)"})})]}),(0,l.jsxs)(t7.A,{size:"small",exclusive:!0,value:o,onChange:(e,t)=>{t&&a(t)},sx:{my:1},children:[(0,l.jsx)(t9.A,{value:"wire",children:"What the model sees"}),(0,l.jsx)(t9.A,{value:"annotated",children:"Full history (annotated)"})]}),(0,l.jsx)(s.default,{sx:{flexGrow:1,overflowY:"auto",minHeight:0},children:"wire"===o?0===x.length?(0,l.jsx)(p.default,{variant:"body2",color:"textSecondary",sx:{p:1},children:"No conversation messages — the model sees only the system message."}):(0,l.jsx)(e2,{messages:x,conversationId:n?"debug-".concat(n):void 0,onToggleDisabled:nr,onSplitConversation:nr}):(0,l.jsx)(nl,{provenance:c})})]})},na=(0,eJ.h)("frontend/components/Chat/DebuggerCanvas"),ns={start:tZ.vm,process:tZ.Uw,finish:tZ.IK,mcp:tZ.v2,subflow:tZ.lA,resource:tZ.z9},ni={custom:t$.jY,mcpEdge:t$.oY,resourceEdge:t$.sZ},nd=["conversation","tracker","detail"],nc={conversation:"Conversation",tracker:"Execution Tracker",detail:"Detail"},nu="flujo-debugger-section-order",np="flujo-debugger-section-visible",nf="flujo-debugger-conv-width",nh="flujo-debugger-detail-width";function nx(e,t){let n=Number(window.localStorage.getItem(e));return Number.isFinite(n)&&n>=240?n:t}let nm=(0,tX.Ay)(ex.A)(e=>{let{theme:t}=e;return{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden",padding:t.spacing(1)}}),ng=(0,tX.Ay)(s.default)(e=>{let{theme:t}=e;return{padding:t.spacing(1,2),borderBottom:"1px solid ".concat(t.palette.divider)}}),nv=(0,tX.Ay)(s.default)({flexGrow:1,display:"flex",overflow:"hidden",minHeight:0}),nb=(0,tX.Ay)(s.default)(e=>{let{theme:t}=e;return{width:"200px",flexShrink:0,borderRight:"1px solid ".concat(t.palette.divider),overflowY:"auto",padding:t.spacing(1)}}),ny=(0,tX.Ay)(s.default)({flexGrow:1,position:"relative",height:"100%"}),nj=(0,tX.Ay)(s.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"}}),nw=(0,tX.Ay)(s.default)(e=>{let{theme:t}=e;return{width:"6px",flexShrink:0,cursor:"col-resize",backgroundColor:t.palette.divider,transition:"background-color 120ms",touchAction:"none","&:hover":{backgroundColor:t.palette.primary.main}}}),nA=e=>{var t,n,o,a;let{debugState:u,conversationId:f,onStep:x,onStepOver:m,onContinue:g,onCancel:v,isLoading:b,breakpoints:y,onToggleBreakpoint:j,onClose:w,isExpanded:A,onToggleExpand:S,liveActivity:C}=e,I=(0,tl.A)(),[k,E]=(0,r.useState)(u.executionTrace&&u.executionTrace.length>0?u.executionTrace.length-1:-1),[z,N]=(0,r.useState)(()=>(function(){try{let e=JSON.parse(window.localStorage.getItem(nu)||"null");if(Array.isArray(e)){let t=e.filter(e=>nd.includes(e)),n=nd.filter(e=>!t.includes(e));if(t.length+n.length===nd.length)return[...t,...n]}}catch(e){}return[...nd]})()),[R,D]=(0,r.useState)(()=>(function(){let e={conversation:!0,tracker:!0,detail:!0};try{let t=JSON.parse(window.localStorage.getItem(np)||"null");if(t&&"object"==typeof t)for(let n of nd)"boolean"==typeof t[n]&&(e[n]=t[n])}catch(e){}return e})()),[W,F]=(0,r.useState)(()=>nx(nf,480)),[_,L]=(0,r.useState)(()=>nx(nh,320)),[H,q]=(0,r.useState)(null),[B,J]=(0,r.useState)(!0),[K,Q]=(0,r.useState)(null),[X,V,Z]=(0,tn.ck)([]),[$,ee,et]=(0,tn.fM)([]);(0,r.useEffect)(()=>{window.localStorage.setItem(nu,JSON.stringify(z))},[z]),(0,r.useEffect)(()=>{window.localStorage.setItem(np,JSON.stringify(R))},[R]),(0,r.useEffect)(()=>{window.localStorage.setItem(nf,String(Math.round(W)))},[W]),(0,r.useEffect)(()=>{window.localStorage.setItem(nh,String(Math.round(_)))},[_]),(0,r.useEffect)(()=>{var e;let t=(null==(e=u.executionTrace)?void 0:e.length)||0;t>0?(E(e=>Math.min(e,t-1)),k<t-1&&E(t-1)):E(-1)},[u.executionTrace]),(0,r.useEffect)(()=>{(async()=>{if(!u.flowId){Q("Flow ID is missing in debug state."),J(!1);return}J(!0),Q(null);try{na.debug("Loading flow definition for ID: ".concat(u.flowId));let e=await tV.g.getFlow(u.flowId);if(!e)throw Error("Flow with ID ".concat(u.flowId," not found."));q(e),na.info("Flow definition loaded: ".concat(e.name))}catch(e){na.error("Error loading flow definition:",e),Q(e instanceof Error?e.message:"Failed to load flow definition."),q(null)}finally{J(!1)}})()},[u.flowId]),(0,r.useEffect)(()=>{if(H){na.debug("Setting nodes and edges from flow definition");let e=H.nodes.map(e=>({...e,draggable:!1,selectable:!1,connectable:!1})),t=H.edges.map(e=>({...e,selectable:!1}));V(e),ee(t)}},[H,V,ee]);let en=(0,r.useCallback)(()=>{if(na.debug("Previous button clicked. Current index: ".concat(k)),k>0){let e=k-1;na.debug("Setting current step index to: ".concat(e)),E(e)}else na.debug("Already at the first step, cannot go previous.")},[k]),el=(0,r.useCallback)(()=>{var e;if(na.debug("Next button clicked. Current index: ".concat(k,", Trace length: ").concat(null==(e=u.executionTrace)?void 0:e.length)),u.executionTrace&&k<u.executionTrace.length-1){let e=k+1;na.debug("Navigating to next trace step: ".concat(e)),E(e)}else na.info("At end of trace, triggering API call for next step."),x()},[k,u.executionTrace,x]),er=(0,r.useMemo)(()=>{if(u.executionTrace&&k>=0&&k<u.executionTrace.length)return u.executionTrace[k]},[u.executionTrace,k]),eo=(0,r.useMemo)(()=>(null==er?void 0:er.modelInputs)&&er.modelInputs.length>0?er.modelInputs:(null==er?void 0:er.modelInput)?[er.modelInput]:void 0,[er]),[ea,es]=(0,r.useState)(0);(0,r.useEffect)(()=>{es(0)},[k]);let ei=eo?Math.min(ea,eo.length-1):0,ed=null==eo?void 0:eo[ei],[ec,eu]=(0,r.useState)(()=>Date.now());(0,r.useEffect)(()=>{if(!C)return;let e=()=>{let e=Date.now();return[...Object.values(C.byNode),...Object.values(C.byResource),...Object.values(C.byResourceName)].some(t=>e-t.ts<4e3)};if(!e())return;let t=setInterval(()=>{eu(Date.now()),e()||clearInterval(t)},350);return()=>clearInterval(t)},[C]);let ef=(0,r.useCallback)(e=>{var t,n;if(!C)return null;let l=C.byNode[e.id];if(l&&ec-l.ts<4e3)return l;let r=e.data;if((null!=(t=null==r?void 0:r.type)?t:e.type)!=="resource")return null;let o=null!=(n=null==r?void 0:r.properties)?n:{},a="run"===o.scope?"string"==typeof o.runName?C.byResourceName[o.runName]:void 0:"string"==typeof o.boundServer&&"string"==typeof o.uri?C.byResource[t1(o.boundServer,o.uri)]:void 0;return a&&ec-a.ts<4e3?{kind:"read"===a.kind?"resource-read":"resource-write",ts:a.ts}:null},[C,ec]),eh=(0,r.useMemo)(()=>{let e=null==er?void 0:er.nodeId;return X.map(t=>{var n;let l=t.id===e,r=null==y?void 0:y.includes(t.id),o=l?null:ef(t),a=o?Math.max(.25,1-(ec-o.ts)/4e3):0,s=(null==o?void 0:o.kind)==="active"?I.palette.primary.main:"#009688";return{...t,style:{...t.style,border:l?"2px solid ".concat(I.palette.warning.main):o?"2px solid ".concat(s):r?"2px dashed ".concat(I.palette.error.main):null==(n=t.style)?void 0:n.border,boxShadow:l?"0 0 10px ".concat(I.palette.warning.light):o?"0 0 ".concat("resource-write"===o.kind?14:10,"px ").concat(s).concat(Math.round(255*a).toString(16).padStart(2,"0")):void 0}}})},[X,er,y,I,ef,ec]),ex=(0,r.useMemo)(()=>z.filter(e=>R[e]),[z,R]),eb=(0,r.useCallback)(e=>{D(t=>({...t,[e]:!t[e]}))},[]),ey=(0,r.useCallback)((e,t)=>{N(n=>{let l=n.indexOf(e),r=l+t;if(l<0||r<0||r>=n.length)return n;let o=[...n];return[o[l],o[r]]=[o[r],o[l]],o})},[]),ej=(0,r.useCallback)((e,t,n)=>{n.preventDefault();let l=n.clientX,r="conversation"===e?W:_,o="conversation"===e?F:L,a=document.body.style.userSelect,s=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let i=e=>{o(Math.min(Math.max(r+t*(e.clientX-l),240),1100))},d=()=>{window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",d),document.body.style.userSelect=a,document.body.style.cursor=s};window.addEventListener("pointermove",i),window.addEventListener("pointerup",d)},[W,_]),ew=(0,l.jsx)(s.default,{sx:{flexGrow:1,overflow:"hidden",minHeight:0,display:"flex",flexDirection:"column"},children:er?ed&&eo?(0,l.jsxs)(s.default,{sx:{flexGrow:1,minHeight:0,display:"flex",flexDirection:"column"},children:[eo.length>1&&(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"center",gap:.5,px:1,py:.5,borderBottom:"1px solid ".concat(I.palette.divider)},children:[(0,l.jsx)(i.A,{title:"Previous model call",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>es(e=>Math.max(0,Math.min(e,eo.length-1)-1)),disabled:ei<=0,"aria-label":"Previous model call",children:(0,l.jsx)(G.A,{fontSize:"small"})})})}),(0,l.jsxs)(p.default,{variant:"caption",color:"textSecondary",children:["Model call ",ei+1," / ",eo.length]}),(0,l.jsx)(i.A,{title:"Next model call",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>es(e=>Math.min(eo.length-1,Math.min(e,eo.length-1)+1)),disabled:ei>=eo.length-1,"aria-label":"Next model call",children:(0,l.jsx)(tK.A,{fontSize:"small"})})})})]}),(0,l.jsx)(s.default,{sx:{flexGrow:1,minHeight:0,overflow:"hidden",display:"flex",flexDirection:"column"},children:(0,l.jsx)(no,{modelInput:ed,conversationId:f})})]}):(0,l.jsx)(p.default,{variant:"body2",color:"textSecondary",sx:{p:2},children:"No model call for this step."}):(0,l.jsx)(p.default,{variant:"body2",color:"textSecondary",sx:{p:2},children:"Select a step from the execution tracker."})}),eA={conversation:ew,tracker:(0,l.jsxs)(s.default,{sx:{flexGrow:1,display:"flex",overflow:"hidden",minHeight:0},children:[(0,l.jsxs)(nb,{children:[(0,l.jsx)(p.default,{variant:"caption",color:"textSecondary",gutterBottom:!0,sx:{display:"block"},children:"Execution Trace"}),(0,l.jsxs)(U.A,{dense:!0,disablePadding:!0,children:[null==(t=u.executionTrace)?void 0:t.map((e,t)=>(0,l.jsx)(M.Ay,{disablePadding:!0,children:(0,l.jsx)(P.A,{selected:t===k,onClick:()=>(e=>{u.executionTrace&&e>=0&&e<u.executionTrace.length?(na.debug("Trace step selected: ".concat(e)),E(e)):na.warn("Invalid step index selected: ".concat(e))})(t),children:(0,l.jsx)(O.A,{primary:"".concat(e.stepIndex,": ").concat(e.nodeName||e.nodeId),secondary:e.nodeType})})},e.stepIndex)),b&&(0,l.jsx)(M.Ay,{children:(0,l.jsx)(ep.default,{size:20,sx:{margin:"auto"}})})]})]}),(0,l.jsx)(ny,{children:B?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,l.jsx)(ep.default,{})}):K?(0,l.jsx)(c.A,{severity:"error",sx:{margin:2},children:K}):(0,l.jsxs)(tn.Ln,{children:[" ",(0,l.jsx)(tn.Gc,{nodes:eh,edges:$,onNodesChange:Z,onEdgesChange:et,nodeTypes:ns,edgeTypes:ni,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:" "})]})})]}),detail:(0,l.jsxs)(s.default,{sx:{flexGrow:1,overflowY:"auto",minHeight:0,p:2},children:[er?(0,l.jsxs)(s.default,{children:[(0,l.jsxs)(p.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Node:"})," ",er.nodeName," (",er.nodeId,")"]}),(0,l.jsxs)(p.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Type:"})," ",er.nodeType]}),(0,l.jsxs)(p.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Timestamp:"})," ",new Date(er.timestamp).toLocaleString()]}),(0,l.jsxs)(p.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Action Taken:"})," ",er.actionTaken]}),(0,l.jsxs)(em.A,{sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(eg.A,{expandIcon:(0,l.jsx)(Y.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(p.default,{variant:"caption",children:"Prep Result"})}),(0,l.jsx)(ev.A,{sx:{p:0},children:(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(er.prepResultSnapshot,null,2)})})]}),(0,l.jsxs)(em.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(eg.A,{expandIcon:(0,l.jsx)(Y.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsxs)(p.default,{variant:"caption",color:(null==(n=er.execResultSnapshot)?void 0:n.success)===!1?"error":"inherit",children:["Exec Result ",(null==(o=er.execResultSnapshot)?void 0:o.success)===!1?"(Error)":""]})}),(0,l.jsx)(ev.A,{sx:{p:0},children:(null==(a=er.execResultSnapshot)?void 0:a.success)===!1?(0,l.jsxs)(s.default,{sx:{p:1,background:I.palette.error.light,borderRadius:1},children:[(0,l.jsxs)(p.default,{variant:"body2",color:"error",gutterBottom:!0,children:[(0,l.jsx)("b",{children:"Error:"})," ",er.execResultSnapshot.error||"Unknown error"]}),er.execResultSnapshot.errorDetails&&(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"150px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"4px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(er.execResultSnapshot.errorDetails,null,2)})]}):(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(er.execResultSnapshot,null,2)})})]}),(0,l.jsxs)(em.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(eg.A,{expandIcon:(0,l.jsx)(Y.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(p.default,{variant:"caption",children:"State Before"})}),(0,l.jsx)(ev.A,{sx:{p:0},children:(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(er.stateBefore,null,2)})})]}),(0,l.jsxs)(em.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(eg.A,{expandIcon:(0,l.jsx)(Y.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(p.default,{variant:"caption",children:"State After"})}),(0,l.jsx)(ev.A,{sx:{p:0},children:(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(er.stateAfter,null,2)})})]})]}):(0,l.jsx)(p.default,{variant:"body2",color:"textSecondary",children:"Select a step from the execution tracker."}),(0,l.jsxs)(em.A,{defaultExpanded:!0,sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(eg.A,{expandIcon:(0,l.jsx)(Y.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(p.default,{variant:"caption",children:"Run Data"})}),(0,l.jsx)(ev.A,{sx:{p:0},children:(0,l.jsx)(t3,{conversationId:f,refreshToken:null==C?void 0:C.resourceVersion})})]})]})};return(0,l.jsxs)(nm,{elevation:2,children:[(0,l.jsxs)(ng,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-between"},children:[(0,l.jsxs)(s.default,{children:[(0,l.jsx)(p.default,{variant:"h6",children:"Flow Debugger"}),(0,l.jsxs)(p.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,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,l.jsx)(i.A,{title:R.conversation?"Hide Conversation":"Show Conversation",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>eb("conversation"),color:R.conversation?"primary":"default","aria-label":R.conversation?"Hide Conversation":"Show Conversation",children:(0,l.jsx)(tQ.A,{fontSize:"small"})})}),(0,l.jsx)(i.A,{title:R.tracker?"Hide Execution Tracker":"Show Execution Tracker",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>eb("tracker"),color:R.tracker?"primary":"default","aria-label":R.tracker?"Hide Execution Tracker":"Show Execution Tracker",children:(0,l.jsx)(T.A,{fontSize:"small"})})}),(0,l.jsx)(i.A,{title:R.detail?"Hide Detail":"Show Detail",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>eb("detail"),color:R.detail?"primary":"default","aria-label":R.detail?"Hide Detail":"Show Detail",children:(0,l.jsx)(tY.A,{fontSize:"small"})})}),S&&(0,l.jsx)(i.A,{title:A?"Exit full screen":"Expand to full screen",children:(0,l.jsx)(d.A,{size:"small",onClick:S,"aria-label":A?"Exit full screen":"Expand to full screen",children:A?(0,l.jsx)(th.A,{fontSize:"small"}):(0,l.jsx)(tf.A,{fontSize:"small"})})}),w&&(0,l.jsx)(i.A,{title:"Close debugger",children:(0,l.jsx)(d.A,{size:"small",onClick:w,"aria-label":"Close debugger",children:(0,l.jsx)(e7.A,{fontSize:"small"})})})]})]}),(0,l.jsx)(nv,{children:0===ex.length?(0,l.jsx)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",p:3},children:(0,l.jsx)(p.default,{variant:"body2",color:"textSecondary",children:"All sections are hidden — use the toolbar toggles above to show a section."})}):ex.map((e,t)=>(0,l.jsxs)(r.Fragment,{children:[(e=>{let t="tracker"!==e,n="conversation"===e?W:"detail"===e?_:void 0;return(0,l.jsxs)(s.default,{sx:{...t?{width:n,flexShrink:0}:{flexGrow:1,minWidth:300},display:"flex",flexDirection:"column",overflow:"hidden",minHeight:0},children:[(e=>{let t=ex.indexOf(e);return(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",px:1,py:.5,borderBottom:"1px solid ".concat(I.palette.divider)},children:[(0,l.jsx)(p.default,{variant:"subtitle2",noWrap:!0,children:nc[e]}),(0,l.jsxs)(s.default,{sx:{display:"flex"},children:[(0,l.jsx)(i.A,{title:"Move left",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>ey(e,-1),disabled:t<=0,"aria-label":"Move ".concat(nc[e]," left"),children:(0,l.jsx)(G.A,{fontSize:"small"})})})}),(0,l.jsx)(i.A,{title:"Move right",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>ey(e,1),disabled:t<0||t>=ex.length-1,"aria-label":"Move ".concat(nc[e]," right"),children:(0,l.jsx)(tK.A,{fontSize:"small"})})})}),(0,l.jsx)(i.A,{title:"Hide section",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>eb(e),"aria-label":"Hide ".concat(nc[e]),children:(0,l.jsx)(e7.A,{fontSize:"small"})})})]})]})})(e),eA[e]]},e)})(e),t<ex.length-1&&((e,t)=>{let n="tracker"!==e?e:"tracker"!==t?t:null;if(!n)return null;let r="tracker"!==e?1:-1;return(0,l.jsx)(nw,{onPointerDown:e=>ej(n,r,e),"aria-label":"Resize ".concat(nc[n]," section")},"resizer-".concat(e,"-").concat(t))})(e,ex[t+1])]},e))}),(0,l.jsxs)(nj,{children:[(0,l.jsx)(h.A,{variant:"outlined",size:"small",onClick:en,disabled:b||k<=0,children:"Previous"}),(0,l.jsx)(h.A,{variant:"contained",size:"small",onClick:el,disabled:b||-1===k,children:u.executionTrace&&k<u.executionTrace.length-1?"Next Trace Step":"Step Next"}),m&&(0,l.jsx)(h.A,{variant:"outlined",size:"small",onClick:m,disabled:b,children:"Step Over"}),(0,l.jsx)(h.A,{variant:"contained",color:"secondary",size:"small",onClick:g,disabled:b,children:"Continue"}),(0,l.jsx)(h.A,{variant:"outlined",color:"error",size:"small",onClick:v,disabled:b,children:"Stop"})]})]})},nS=(0,eJ.h)("frontend/components/Chat/ExecutedFlowPanel"),nC={start:tZ.vm,process:tZ.Uw,finish:tZ.IK,mcp:tZ.v2,subflow:tZ.lA,resource:tZ.z9,signal:tZ.z3},nI={custom:t$.jY,mcpEdge:t$.oY,resourceEdge:t$.sZ},nk=e=>{let{flowId:t,flowSnapshot:n,executedNodeIds:o,liveActivity:a,onClose:u}=e,f=(0,tl.A)(),[h,x]=(0,r.useState)(null),[m,g]=(0,r.useState)(!0),[v,b]=(0,r.useState)(null),[y,j,w]=(0,tn.ck)([]),[A,S,C]=(0,tn.fM)([]);(0,r.useEffect)(()=>{let e=!1;return(async()=>{g(!0),b(null);try{if(n&&Array.isArray(n.nodes)){e||x(n);return}if(!t)throw Error("No flow is associated with this conversation yet.");nS.debug("Loading flow definition for ID: ".concat(t));let l=await tV.g.getFlow(t);if(!l)throw Error("Flow with ID ".concat(t," not found."));e||x(l)}catch(t){nS.error("Error loading flow definition:",t),e||(b(t instanceof Error?t.message:"Failed to load flow definition."),x(null))}finally{e||g(!1)}})(),()=>{e=!0}},[t,n]),(0,r.useEffect)(()=>{h&&(j(h.nodes.map(e=>({...e,draggable:!1,selectable:!1,connectable:!1}))),S(h.edges.map(e=>({...e,selectable:!1}))))},[h,j,S]);let I=(0,r.useMemo)(()=>new Set(o),[o]),[k,E]=(0,r.useState)(()=>Date.now());(0,r.useEffect)(()=>{if(!a)return;let e=()=>Object.values(a.byNode).some(e=>Date.now()-e.ts<4e3);if(!e())return;let t=setInterval(()=>{E(Date.now()),e()||clearInterval(t)},350);return()=>clearInterval(t)},[a]);let z=(0,r.useMemo)(()=>y.map(e=>{let t=I.has(e.id),n=null==a?void 0:a.byNode[e.id],l=!!n&&k-n.ts<4e3;return{...e,style:{...e.style,opacity:t||l?1:.4,border:l?"2px solid ".concat(f.palette.primary.main):t?"2px solid ".concat(f.palette.success.main):"1px solid ".concat(f.palette.divider),boxShadow:l?"0 0 10px ".concat(f.palette.primary.light):t?"0 0 8px ".concat(f.palette.success.light):void 0}}}),[y,I,a,k,f]);return(0,l.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",height:"100%",borderLeft:1,borderColor:"divider",minWidth:0},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1,px:1.5,py:1,borderBottom:1,borderColor:"divider",flexShrink:0},children:[(0,l.jsx)(T.A,{fontSize:"small",color:"action"}),(0,l.jsx)(p.default,{variant:"subtitle2",sx:{flex:1,minWidth:0},noWrap:!0,children:"Executed Steps"}),(0,l.jsx)(i.A,{title:"Hide panel",children:(0,l.jsx)(d.A,{size:"small",onClick:u,"aria-label":"Hide executed steps panel",children:(0,l.jsx)(e7.A,{fontSize:"small"})})})]}),(0,l.jsx)(s.default,{sx:{flex:1,minHeight:0,position:"relative"},children:m?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,l.jsx)(ep.default,{})}):v?(0,l.jsx)(c.A,{severity:"info",sx:{m:2},children:v}):(0,l.jsx)(tn.Ln,{children:(0,l.jsx)(tn.Gc,{nodes:z,edges:A,onNodesChange:w,onEdgesChange:C,nodeTypes:nC,edgeTypes:nI,fitView:!0,attributionPosition:"bottom-right",nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!1})})})]})};function nE(e){var t;return null==e||null==(t=e.nodes)?void 0:t.find(e=>{var t,n;return(null!=(n=null==e?void 0:e.type)?n:null==e||null==(t=e.data)?void 0:t.type)==="start"})}var nz=n(94929),nN=n(29155),nT=n(63650);let nR=(0,eJ.h)("frontend/services/chat/index");class nD extends Error{constructor(e,t,n){super(e),this.name="ChatApiError",this.status=t,this.body=n}}let nM="/v1/chat/conversations";async function nP(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 nD(t&&"object"==typeof t&&(t.error||t.message)||"Request failed with status ".concat(e.status),e.status,t);return t}class nO{async listConversations(){return nR.debug("listConversations: Entering method"),nP(await fetch(nM))}async getConversation(e){return nR.debug("getConversation: Entering method",{conversationId:e}),nP(await fetch("".concat(nM,"/").concat(encodeURIComponent(e))))}async createConversation(e){return nR.debug("createConversation: Entering method",{conversationId:e.id}),nP(await fetch(nM,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}))}async updateConversationFlow(e,t){return nR.debug("updateConversationFlow: Entering method",{conversationId:e,flowId:t}),nP(await fetch("".concat(nM,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({flowId:t})}))}async updateConversationTitle(e,t){return nR.debug("updateConversationTitle: Entering method",{conversationId:e}),nP(await fetch("".concat(nM,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:t})}))}async updateConversationApproval(e,t){return nR.debug("updateConversationApproval: Entering method",{conversationId:e,requireApproval:t}),nP(await fetch("".concat(nM,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApproval:t})}))}async deleteConversation(e){nR.debug("deleteConversation: Entering method",{conversationId:e});let t=await fetch("".concat(nM,"/").concat(encodeURIComponent(e)),{method:"DELETE"});await nP(t)}async deleteConversations(e){return nR.debug("deleteConversations: Entering method",{count:e.length}),nP(await fetch(nM,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:e})}))}async respondToToolCall(e,t,n,l,r){return nR.debug("respondToToolCall: Entering method",{conversationId:e,action:t,toolCallId:n,always:l}),nP(await fetch("".concat(nM,"/").concat(encodeURIComponent(e),"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:t,toolCallId:n,...l?{always:!0}:{},...r?{feedback:r}:{}})}))}async debugStep(e){return nR.debug("debugStep: Entering method",{conversationId:e}),nP(await fetch("".concat(nM,"/").concat(encodeURIComponent(e),"/debug/step"),{method:"POST"}))}async debugContinue(e){return nR.debug("debugContinue: Entering method",{conversationId:e}),nP(await fetch("".concat(nM,"/").concat(encodeURIComponent(e),"/debug/continue"),{method:"POST"}))}async setBreakpoints(e,t){nR.debug("setBreakpoints: Entering method",{conversationId:e,count:t.length});let n=await fetch("".concat(nM,"/").concat(encodeURIComponent(e),"/breakpoints"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({breakpoints:t})});await nP(n)}async synthesizeQuickChat(e){return nR.debug("synthesizeQuickChat: Entering method",{conversationId:e.conversationId}),nP(await fetch("/api/flow/quick-chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}))}async cancel(e){nR.debug("cancel: Entering method",{conversationId:e});let t=await fetch("".concat(nM,"/").concat(encodeURIComponent(e),"/cancel"),{method:"POST"});await nP(t)}async injectMessage(e,t,n){nR.debug("injectMessage: Entering method",{conversationId:e,messageId:n});try{let l=await fetch("".concat(nM,"/").concat(encodeURIComponent(e),"/inject"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:t,id:n})});if(l.ok)return{delivered:!0};if(409===l.status)return nR.debug("injectMessage: run is not live; caller should send normally",{conversationId:e}),{delivered:!1};return nR.warn("injectMessage: unexpected response; falling back to a normal send",{conversationId:e,status:l.status}),{delivered:!1}}catch(t){return nR.warn("injectMessage: request failed; falling back to a normal send",{conversationId:e,err:t}),{delivered:!1}}}subscribeToEvents(e,t,n){let l=new EventSource(void 0!==n?"".concat(nM,"/").concat(encodeURIComponent(e),"/events?fromSeq=").concat(n):"".concat(nM,"/").concat(encodeURIComponent(e),"/events"));return l.onopen=()=>{var n;nR.debug("Execution event stream open",{conversationId:e}),null==(n=t.onOpen)||n.call(t)},l.onmessage=e=>{try{t.onEvent(JSON.parse(e.data))}catch(e){nR.warn("Failed to parse SSE event",{err:e})}},l.onerror=e=>{var n;nR.debug("SSE stream error (browser will retry if still open)"),null==(n=t.onError)||n.call(t,e)},l}}let nW=new nO,nF=(0,eJ.h)("frontend/components/Chat/index");function n_(e){var t;if(Array.isArray(e.content))return e.content;let n="string"==typeof e.content?e.content:"",l=null!=(t=e.attachments)?t:[],r=l.filter(e=>"image"!==e.type),o=l.filter(e=>"image"===e.type);if(r.length>0&&(n+="\n\n"+r.map(e=>"[".concat(e.type.toUpperCase(),"]: ").concat(e.content)).join("\n\n")),0===o.length)return n;let a=[];for(let e of(n.trim()&&a.push({type:"text",text:n}),o))a.push({type:"image_url",image_url:{url:e.content}});return a}let nL=/cancelled by user|execution cancelled/i,nH=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&&nL.test(e))},nU=()=>{var e,t,n;let o=(0,a.useRouter)(),[M,P]=(0,r.useState)([]),[O,W]=(0,r.useState)(!0),[F,_]=(0,r.useState)(null),[L,H]=(0,r.useState)(null),[U,q]=(0,r.useState)(!1),[B,J]=(0,r.useState)(null),[G,K]=(0,D.Mj)(D.Zg.CURRENT_CONVERSATION_ID,null),[Q,Y]=(0,D.Mj)(D.Zg.LAST_PICKED_FLOW_ID,null),[X,V]=(0,r.useState)(!1),[Z,ee]=(0,r.useState)(new Set),et=(0,r.useCallback)((e,t)=>{e&&ee(n=>{if(t===n.has(e))return n;let l=new Set(n);return t?l.add(e):l.delete(e),l})},[]),[en,el]=(0,r.useState)({}),er=(0,r.useRef)(!1),[eo,ea]=(0,r.useState)(null),[es,ei]=(0,r.useState)([]),[ed,ec]=(0,r.useState)(!1),[ep,ef]=(0,r.useState)(!1),[eh,ex]=(0,r.useState)(""),[em,eg]=(0,r.useState)(!1),[ev,eb]=(0,r.useState)(null),[ey,ej]=(0,r.useState)(null),[ew,eA]=(0,r.useState)(null),[eS,eC]=(0,r.useState)(null),[eI,ek]=(0,r.useState)(null),[eE,ez]=(0,r.useState)(null),[eN,eT]=(0,r.useState)(!1),[eR,eD]=(0,r.useState)(null),[eM,eP]=(0,r.useState)(!1),[eO,eW]=(0,r.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-debugger-width"));return Number.isFinite(e)&&e>0?e:0}),[eF,e_]=(0,r.useState)(()=>"1"===window.localStorage.getItem("flujo-debugger-expanded"));(0,r.useEffect)(()=>{window.localStorage.setItem("flujo-debugger-expanded",eF?"1":"0")},[eF]);let[eL,eH]=(0,r.useState)(()=>"1"===window.localStorage.getItem("flujo-workflow-panel-visible"));(0,r.useEffect)(()=>{window.localStorage.setItem("flujo-workflow-panel-visible",eL?"1":"0")},[eL]);let[eU,eq]=(0,r.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-workflow-panel-width"));return Number.isFinite(e)&&e>0?e:320}),eB=(0,r.useCallback)(e=>{e.preventDefault();let t=e.clientX,n=0;eq(e=>(n=e,e));let l=document.body.style.userSelect,r=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let o=e=>{eq(Math.min(Math.max(n+(t-e.clientX),240),Math.round(.7*window.innerWidth)))},a=()=>{window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",a),document.body.style.userSelect=l,document.body.style.cursor=r,eq(e=>(e>0&&window.localStorage.setItem("flujo-workflow-panel-width",String(Math.round(e))),e))};window.addEventListener("pointermove",o),window.addEventListener("pointerup",a)},[]),eJ=(0,r.useCallback)(e=>{e.preventDefault();let t=document.body.style.userSelect,n=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let l=e=>{eW(Math.min(Math.max(window.innerWidth-e.clientX,360),Math.round(.85*window.innerWidth)))},r=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",r),document.body.style.userSelect=t,document.body.style.cursor=n,eW(e=>(e>0&&window.localStorage.setItem("flujo-debugger-width",String(Math.round(e))),e))};window.addEventListener("pointermove",l),window.addEventListener("pointerup",r)},[]),[eG,eK]=(0,r.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-chat-sidebar-width"));return Number.isFinite(e)&&e>0?e:300}),[eQ,eY]=(0,r.useState)(()=>"1"===window.localStorage.getItem("flujo-chat-sidebar-collapsed")),eX=(0,r.useCallback)(()=>{eY(e=>{let t=!e;return window.localStorage.setItem("flujo-chat-sidebar-collapsed",t?"1":"0"),t})},[]),eV=(0,r.useCallback)(e=>{e.preventDefault();let t=document.body.style.userSelect,n=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let l=e=>{eK(Math.min(Math.max(e.clientX,220),560))},r=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",r),document.body.style.userSelect=t,document.body.style.cursor=n,eK(e=>(e>0&&window.localStorage.setItem("flujo-chat-sidebar-width",String(Math.round(e))),e))};window.addEventListener("pointermove",l),window.addEventListener("pointerup",r)},[]),[eZ,e$]=(0,r.useState)(null),[e0,e1]=(0,r.useState)(t0),[e5,e6]=(0,r.useState)(tI),[e4,e8]=(0,r.useState)([]),[e3,e7]=(0,r.useState)(new Set),[e9,te]=(0,r.useState)([]),[tt,tn]=(0,r.useState)(null),tl=(0,r.useRef)(null),tr=(0,r.useRef)(null),to=(0,r.useRef)(null),ta=(0,r.useRef)(-1),ts=(0,r.useRef)(G);(0,r.useEffect)(()=>{ts.current=G},[G]);let ti=(0,r.useRef)(new Set),tc=(0,r.useRef)(new Set),tp=(0,r.useRef)(new Set),[tf,th]=(0,r.useState)(new Set),tx=(0,r.useCallback)((e,t)=>{e&&(t?tp.current.add(e):tp.current.delete(e),th(new Set(tp.current)))},[]),tw=(0,r.useRef)(null),tA=(0,r.useRef)(!0),[tS,tC]=(0,r.useState)(!1),tE=(0,r.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"auto",t=tw.current;t&&t.scrollTo({top:t.scrollHeight,behavior:e})},[]),tN=(0,r.useCallback)(()=>{let e=tw.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight<80;tA.current=t,tC(!t)},[]),tT=(0,r.useCallback)(()=>{tA.current=!0,tC(!1),tE("smooth")},[tE]);(0,r.useEffect)(()=>{tA.current=!0,tC(!1)},[G]),(0,r.useEffect)(()=>{tA.current&&tE("auto")},[null==L?void 0:L.messages,tE]);let tD=(0,r.useRef)(null);(0,r.useEffect)(()=>{tD.current=tt},[tt]),(0,r.useEffect)(()=>{let e=window.location.origin+"/v1";tl.current=new nN.Ay({baseURL:e,apiKey:"FLUJO",dangerouslyAllowBrowser:!0,maxRetries:0,timeout:18e6})},[]),(0,r.useEffect)(()=>{(async()=>{nF.debug("Loading flows");try{let e=await tV.g.loadFlows();ei(e)}catch(e){nF.error("Error loading flows:",e)}})()},[]);let tM=(0,r.useCallback)(async(e,t)=>{var n;let l=null!=(n=null==t?void 0:t.silent)&&n;nF.debug("Fetching conversation list from backend",{silent:l}),l||(W(!0),_(null));let r=[],o=!1;try{for(let e of r=(await nW.listConversations()).filter(e=>!tc.current.has(e.id)).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))ti.current.delete(e.id);P(e=>{let t=e.filter(e=>ti.current.has(e.id)),n=t.length>0?[...t,...r].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}):r;return((e,t)=>e.length===t.length&&e.every((e,n)=>{let l=t[n];return e.id===l.id&&e.title===l.title&&e.flowId===l.flowId&&e.status===l.status&&e.plannedExecutionId===l.plannedExecutionId&&e.parentConversationId===l.parentConversationId&&e.rootConversationId===l.rootConversationId&&e.createdAt===l.createdAt&&e.updatedAt===l.updatedAt}))(e,n)?e:n}),nF.info("Fetched ".concat(r.length," conversations for the list"))}catch(e){o=!0,nF.error("Error fetching conversation list:",e),l||(_("Failed to load conversation history."),P([]))}finally{if(l||W(!1),l||o)return;let t=void 0!==e?e:ts.current,n=ts.current;if(t&&(e=>r.some(t=>t.id===e)||ti.current.has(e))(t))t!==n&&(nF.debug("Setting currentConversationId to ".concat(t," after fetch/operation.")),K(t));else if(r.length>0){let e=r[0].id;e!==n&&(nF.debug("Selecting most recent conversation ".concat(e," after fetch/operation.")),K(e))}else null===n||ti.current.has(n)||(nF.debug("No conversations available after fetch/operation, clearing selection."),K(null))}},[K]);(0,r.useEffect)(()=>{tM()},[]),(0,r.useEffect)(()=>{let e=()=>{("undefined"==typeof document||"visible"===document.visibilityState)&&tM(void 0,{silent:!0})},t=setInterval(e,5e3);return document.addEventListener("visibilitychange",e),()=>{clearInterval(t),document.removeEventListener("visibilitychange",e)}},[tM]);let tP=(0,r.useCallback)(async e=>{if(ti.current.has(e))return void nF.debug("Skipping detail fetch for client-only conversation",{conversationId:e});if(ts.current!==e){nF.debug("Detail fetch requested for non-viewed conversation; refreshing list instead",{conversationId:e}),tM(void 0,{silent:!0});return}nF.debug("Fetching detailed conversation",{conversationId:e}),q(!0),J(null);try{let t=await nW.getConversation(e);if(ts.current!==e)return void nF.debug("Discarding stale detailed conversation response",{fetchedId:e,currentId:ts.current});H(t),P(n=>n.map(n=>{var l;return n.id===e?{...n,title:t.title,flowId:t.flowId,updatedAt:t.updatedAt,status:null!=(l=t.status)?l:n.status}:n}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),nF.info("Fetched detailed conversation successfully",{conversationId:e})}catch(t){if(nF.error("Error fetching detailed conversation:",{conversationId:e,err:t}),ts.current!==e)return;t instanceof nD&&404===t.status?(J("Conversation ".concat(e," not found.")),K(null),tM()):J("Failed to load details for conversation ".concat(e,".")),H(null)}finally{ts.current===e&&q(!1)}},[tM,K]);(0,r.useEffect)(()=>{eb(null),ek(null),G?tP(G):(H(null),q(!1),J(null))},[G,tP]),(0,r.useEffect)(()=>{if(L){var e;ec(null!=(e=L.requireApproval)&&e)}},[null==L?void 0:L.id]);let tO=(0,r.useCallback)(async e=>{if(ec(e),G)try{await nW.updateConversationApproval(G,e)}catch(e){nF.warn("Failed to persist requireApproval setting",{conversationId:G,err:e})}},[G]),tW=M.find(e=>e.id===G)||null,tF=(0,r.useMemo)(()=>{let e={};for(let t of es)t.id&&(e[t.id]=t.name);return e},[es]),t_=(0,r.useMemo)(()=>es.find(e=>e.id===(null==L?void 0:L.flowId))||null,[es,null==L?void 0:L.flowId]),tL=(0,r.useMemo)(()=>{var e;return(null==t_||null==(e=t_.nodes)?void 0:e.map(e=>({id:e.id,label:e.data.label||e.id})))||[]},[t_]),tq=(0,r.useMemo)(()=>{var e;return function(e){var t,n,l,r;let o=new Set;return null==(t=e.messages)||t.forEach(e=>{(null==e?void 0:e.processNodeId)&&o.add(e.processNodeId)}),null==(n=e.nodeExecutionTracker)||n.forEach(e=>{(null==e?void 0:e.nodeId)&&o.add(e.nodeId)}),null==(l=e.executionTrace)||l.forEach(e=>{(null==e?void 0:e.nodeId)&&o.add(e.nodeId)}),null==(r=e.sseVisitedIds)||r.forEach(e=>{e&&o.add(e)}),Array.from(o)}({messages:null==L?void 0:L.messages,nodeExecutionTracker:null==eR||null==(e=eR.trackingInfo)?void 0:e.nodeExecutionTracker,executionTrace:null==eR?void 0:eR.executionTrace,sseVisitedIds:e3})},[null==L?void 0:L.messages,eR,e3]);(0,r.useEffect)(()=>{e7(new Set)},[null==L?void 0:L.id]);let tB=(0,r.useMemo)(()=>{var e,t,n;let l=e=>!!e&&tL.some(t=>t.id===e);if(l(eI))return eI;if(l(null==L?void 0:L.currentNodeId))return L.currentNodeId;let r=null!=(t=null==L?void 0:L.messages)?t:[];for(let e=r.length-1;e>=0;e--){let t=r[e];if("assistant"===t.role&&l(t.processNodeId))return t.processNodeId}return null!=(n=null==(e=tL[0])?void 0:e.id)?n:null},[eI,L,tL]),tJ=async e=>{var t,n,l,r;nF.debug("Attempting to create new conversation"),ea(null);let o="string"!=typeof e||$(e)?void 0:es.find(t=>t.id===e),a=Q&&!$(Q)?es.find(e=>e.id===Q):void 0,s=(null==(t=null!=(l=null!=(n=null!=o?o:a)?n:es.find(e=>e.favorite))?l:es[0])?void 0:t.id)||null;if(!s){nF.error("Cannot create conversation: No flows available or first flow has no ID."),ea("Cannot create a new conversation: No flows available.");return}let i=(0,td.A)(),d=Date.now(),c={id:i,title:"New Conversation",flowId:s,createdAt:d,updatedAt:d};try{nF.info("Sending request to create conversation on backend",{payload:JSON.stringify(c)});let e=await nW.createConversation(c);nF.info("Successfully created conversation on backend",{conversationId:e.id}),P(t=>[e,...t].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),K(e.id),H({id:e.id,title:e.title,flowId:e.flowId,createdAt:e.createdAt,updatedAt:e.updatedAt,messages:[]}),q(!1),J(null)}catch(t){nF.error("Error creating conversation on backend:",t);let e="Failed to create conversation on the server.";t instanceof nD?e+=" Error: ".concat((null==(r=t.body)?void 0:r.error)||t.message):t instanceof Error&&(e+=" Error: ".concat(t.message)),ea(e)}},tK=(0,r.useRef)(!1);(0,r.useEffect)(()=>{if(tK.current||0===es.length)return;let e=new URLSearchParams(window.location.search).get("flow");if(!e){tK.current=!0;return}tK.current=!0,es.some(t=>t.id===e)&&!$(e)&&tJ(e),o.replace("/chat")},[es]);let[tQ,tY]=(0,r.useState)(!1),tX=async e=>{ea(null);let t=(0,td.A)(),{flow:n}=await nW.synthesizeQuickChat({conversationId:t,modelId:e.modelId,servers:e.servers,systemPrompt:e.systemPrompt}),l=Date.now(),r=await nW.createConversation({id:t,title:"Quick Chat",flowId:n.id,flowSnapshot:n,createdAt:l,updatedAt:l});P(e=>[r,...e].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),K(r.id),H({id:r.id,title:r.title,flowId:r.flowId,createdAt:r.createdAt,updatedAt:r.updatedAt,messages:[]}),q(!1),J(null),tY(!1)},tZ=(0,r.useCallback)(e=>{nF.debug("Updating detailed conversation state locally",{conversationId:e.id});let t={...e,updatedAt:Date.now()};H(t),P(e=>e.map(e=>e.id===t.id?{...e,title:t.title,updatedAt:t.updatedAt}:e).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))},[]),t$=(0,r.useCallback)(()=>{to.current&&(nF.debug("Closing execution event stream"),to.current.close(),to.current=null)},[]),t2=(0,r.useCallback)((e,t)=>{P(n=>{let l=n.findIndex(t=>t.id===e);if(-1===l||n[l].status===t)return n;let r=[...n];return r[l]={...r[l],status:t},r})},[]),t5=(0,r.useCallback)(e=>{var t,n,l,r,o;if("number"==typeof e.seq){if(e.seq<=ta.current)return;ta.current=e.seq}let a=e=>e$(t=>{var n,l,r,o;return{totalTokens:null!=(l=null!=(n=e.totalTokens)?n:null==t?void 0:t.totalTokens)?l:0,activeNode:void 0!==e.activeNode?e.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()}}),s=e=>e1(t=>{let n=Date.now(),l={byNode:{...t.byNode},byResource:{...t.byResource},byResourceName:{...t.byResourceName},resourceVersion:t.resourceVersion};return e(l),function(e,t){let n=e=>{let n={};for(let[l,r]of Object.entries(e))t-r.ts<4e3&&(n[l]=r);return n};return{byNode:n(e.byNode),byResource:n(e.byResource),byResourceName:n(e.byResourceName),resourceVersion:e.resourceVersion}}(l,n)});if(null!=e.laneIndex)switch(e6(t=>(function(e,t){var n,l,r,o,a,s;let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),d=t.laneIndex,c=t.laneCount;if(null==d||null==c)return e;let u=("subflow:start"===t.type||"subflow:done"===t.type)&&1===t.depth;if(u&&"subflow:start"===t.type){let o=null==(n=t.node)?void 0:n.nodeId,a=e.ownerNodeId&&o&&e.ownerNodeId!==o?{}:{...e.byIndex};return tk(a,c,i),a[d]={laneIndex:d,laneCount:c,label:t.laneTitle||function(e,t,n){let l=e.subflowName||e.subflowId;return l?"".concat(l," ").concat(t+1,"/").concat(n):"Lane ".concat(t+1,"/").concat(n)}(t,d,c),laneConversationId:null!=(r=t.laneConversationId)?r:null==(l=a[d])?void 0:l.laneConversationId,status:"running",lastEventAt:i},{ownerNodeId:null!=o?o:e.ownerNodeId,byIndex:a}}if(u&&"subflow:done"===t.type){let n={...e.byIndex};tk(n,c,i);let l=n[d];return n[d]={...l,label:l.label&&"pending"!==l.status?l.label:t.laneTitle||l.label,laneConversationId:null!=(a=l.laneConversationId)?a:t.laneConversationId,status:"capped"===t.status?"completed":t.status,activity:void 0,lastEventAt:i},{ownerNodeId:null!=(s=e.ownerNodeId)?s:null==(o=t.node)?void 0:o.nodeId,byIndex:n}}let p=function(e){switch(e.type){case"node:enter":var t,n;return(null==(t=e.node)?void 0:t.nodeName)||(null==(n=e.node)?void 0:n.nodeId)||void 0;case"tool:call":return e.name;case"tool:progress":return e.message?"".concat(e.name," — ").concat(e.message):e.name;case"subflow:start":return"↳ ".concat(e.subflowName||e.subflowId);case"handoff":return"→ ".concat(e.toNodeId);default:return}}(t);if(void 0===p)return e;let f=e.byIndex[d];if(f&&f.activity===p&&"pending"!==f.status||f&&("completed"===f.status||"error"===f.status))return e;let h={...e.byIndex};tk(h,c,i);let x=h[d];return h[d]={...x,status:"pending"===x.status?"running":x.status,activity:p,lastEventAt:i},{ownerNodeId:e.ownerNodeId,byIndex:h}})(t,e)),e.type){case"node:enter":if(null==(t=e.node)?void 0:t.nodeId){let t=e.node.nodeId;s(e=>{e.byNode[t]={kind:"active",ts:Date.now()}}),e7(e=>e.has(t)?e:new Set(e).add(t))}a({});return;case"tool:call":case"tool:progress":case"subflow:start":case"handoff":a({});return}switch(e.type){case"run:start":e$({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),e1(t0),e6(tI),e8([]),e.conversationId&&(t2(e.conversationId,"running"),tx(e.conversationId,!1));break;case"message":{let t=e.message;a({}),H(n=>{let l;if(!n||n.id!==e.conversationId)return n;let r=n.messages.findIndex(e=>e.id===t.id);return r>=0?(l=[...n.messages])[r]={...l[r],...t}:l=[...n.messages,t],{...n,messages:l}});break}case"usage":e$(t=>{var n,l,r;return{totalTokens:(null!=(n=null==t?void 0:t.totalTokens)?n:0)+(e.totalTokens||0),activeNode:null!=(l=null==t?void 0:t.activeNode)?l:null,startedAt:null!=(r=null==t?void 0:t.startedAt)?r:Date.now(),lastEventAt:Date.now()}});break;case"node:enter":if(a({activeNode:(null==(n=e.node)?void 0:n.nodeName)||(null==(l=e.node)?void 0:l.nodeId)||null}),null==(r=e.node)?void 0:r.nodeId){let t=e.node.nodeId;s(e=>{e.byNode[t]={kind:"active",ts:Date.now()}}),e7(e=>e.has(t)?e:new Set(e).add(t))}break;case"resource:read":case"resource:write":{let t="resource:read"===e.type?"read":"write";s(n=>{var l;let r=Date.now();(null==(l=e.node)?void 0:l.nodeId)&&(n.byNode[e.node.nodeId]={kind:"read"===t?"resource-read":"resource-write",ts:r}),e.server&&e.uri&&(n.byResource[t1(e.server,e.uri)]={kind:t,ts:r}),e.name&&(n.byResourceName[e.name]={kind:t,ts:r}),"write"===t&&(n.resourceVersion=n.resourceVersion+1)}),a({});break}case"todo:update":e8(null!=(o=e.todos)?o:[]),a({});break;case"tool:call":a({activeNode:e.name});break;case"tool:progress":a({activeNode:e.message?"".concat(e.name," — ").concat(e.message):e.name});break;case"subflow:start":a({activeNode:"↳ ".concat(e.subflowName||e.subflowId)});break;case"handoff":a({activeNode:"→ ".concat(e.toNodeId)});break;case"run:awaiting_approval":e.conversationId&&e.conversationId===ts.current&&eb(e.pendingToolCalls||[]),e.conversationId&&t2(e.conversationId,"awaiting_tool_approval");break;case"run:awaiting_elicitation":e.conversationId&&e.conversationId===ts.current&&ej({elicitationId:e.elicitationId,message:e.message,requestedSchema:e.requestedSchema});break;case"run:awaiting_question":e.conversationId&&e.conversationId===ts.current&&eA({questionId:e.questionId,questions:e.questions});break;case"breakpoint:hit":case"run:paused":V(!1),e.conversationId&&(et(e.conversationId,!1),t2(e.conversationId,"paused_debug")),eT(!0);break;case"run:done":if(e.conversationId&&(et(e.conversationId,!1),t2(e.conversationId,e.status)),e.conversationId===ts.current&&(ej(null),eA(null)),e.conversationId&&tD.current&&e.conversationId!==tD.current)break;e$(null),e1(t0),e6(tI),V(!1),tn(null),t$(),e.conversationId&&e.conversationId===ts.current?tP(e.conversationId):tM(void 0,{silent:!0});break;case"error":ea(e.message||"Execution error");break;default:a({})}},[t$,tP,tM,et,t2,tx]),t6=(0,r.useCallback)((e,t)=>(t$(),ta.current=void 0!==t?t-1:-1,e6(tI),new Promise(n=>{let l=!1,r=()=>{l||(l=!0,n())};try{to.current=nW.subscribeToEvents(e,{onEvent:t5,onOpen:r},t),setTimeout(r,1500)}catch(t){nF.error("Failed to open execution event stream",{conversationId:e,err:t}),r()}})),[t5,t$]);(0,r.useEffect)(()=>{if(G&&(null==tW?void 0:tW.status)==="running"&&tD.current!==G){if(tp.current.has(G))return void nF.debug("Skipping re-attach to a conversation the user just stopped",{conversationId:G});nF.info("Re-attaching to in-progress run",{conversationId:G}),tD.current=G,V(!0),tn(G),et(G,!0),e$(e=>null!=e?e:{totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),t6(G,0)}},[G,null==tW?void 0:tW.status,t6]);let t4=async e=>{nF.debug("Attempting to delete conversation",{conversationId:e}),ea(null),tc.current.add(e);let t=ti.current.delete(e);tD.current===e&&(t$(),V(!1),tn(null),e$(null),e6(tI)),et(e,!1),el(t=>ty(t,e));let n=M.filter(t=>t.id!==e);P(n);let l=G;G===e&&(n.length>0?(l=n[0].id,nF.debug("Deleted current conversation, selecting next most recent",{nextSelectionId:l})):(l=null,nF.debug("Deleted last conversation, clearing selection")),K(l));try{await nW.deleteConversation(e),nF.info("Successfully deleted conversation on backend",{conversationId:e})}catch(n){nF.error("Error deleting conversation:",{conversationId:e,err:n}),ea("Failed to delete conversation ".concat(e,". Please try again.")),tc.current.delete(e),t&&ti.current.add(e),P(M),K(G)}},t8=async e=>{if(!e.length)return;ea(null);let t=new Set(e);e.forEach(e=>tc.current.add(e));let n=ts.current;n&&t.has(n)&&tD.current===n&&(t$(),V(!1),tn(null),e$(null),e6(tI)),e.forEach(e=>{et(e,!1),el(t=>ty(t,e))}),P(e=>e.filter(e=>!t.has(e.id))),n&&t.has(n)&&K(null);try{let t=await nW.deleteConversations(e);nF.info("Bulk delete succeeded",{requested:e.length,...t})}catch(t){nF.error("Bulk delete failed",{err:t}),ea("Failed to delete conversations. Please try again."),e.forEach(e=>tc.current.delete(e)),P(M),K(G)}},t3=async e=>{if(nF.debug("Flow selected, attempting to update",{flowId:e,currentConversationId:G}),ea(null),!G){nF.warn("Cannot update flow: No conversation selected."),ea("Please select a conversation first.");return}L&&L.id===G&&H({...L,flowId:e,updatedAt:Date.now()}),P(t=>t.map(t=>t.id===G?{...t,flowId:e,updatedAt:Date.now()}:t).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}));try{let t=await nW.updateConversationFlow(G,e);nF.info("Successfully updated flowId on backend",{conversationId:G,flowId:e}),H(e=>e&&e.id===G?(nF.debug("Confirming detailedConversation update from server response",{conversationId:G,flowId:t.flowId}),{...e,flowId:t.flowId,updatedAt:t.updatedAt}):(nF.debug("Skipping detailedConversation update, ID mismatch or null state",{currentDetailedId:null==e?void 0:e.id,targetId:G}),e)),P(e=>e.map(e=>e.id===G?t:e).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))}catch(l){nF.error("Error updating flowId on backend:",{conversationId:G,flowId:e,err:l});let n="Failed to update the selected flow.";if(l instanceof nD){var t;n+=" Error: ".concat((null==(t=l.body)?void 0:t.error)||l.message)}else l instanceof Error&&(n+=" Error: ".concat(l.message));ea(n),H(L),P(M)}},t7=()=>{var e,t;ex(null!=(t=null!=(e=null==L?void 0:L.title)?e:null==tW?void 0:tW.title)?t:""),ef(!0)},t9=async()=>{var e,t;if(ef(!1),!G)return;let n=null!=(t=null!=(e=null==L?void 0:L.title)?e:null==tW?void 0:tW.title)?t:"",l=eh.trim().slice(0,200);if(l&&l!==n){H(e=>e&&e.id===G?{...e,title:l}:e),P(e=>e.map(e=>e.id===G?{...e,title:l}:e));try{let e=await nW.updateConversationTitle(G,l);H(t=>t&&t.id===G?{...t,title:e.title}:t),P(t=>t.map(t=>t.id===G?{...t,title:e.title}:t))}catch(e){nF.warn("Failed to rename conversation",{conversationId:G,err:e}),H(e=>e&&e.id===G?{...e,title:n}:e),P(e=>e.map(e=>e.id===G?{...e,title:n}:e)),ea("Failed to rename the conversation.")}}},ne=async function(e){var t;let n,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;if(!e.trim()&&0===l.length)return;if(!L){nF.error("Cannot send message, detailed conversation not loaded."),ea("Cannot send message: conversation details not loaded.");return}if(!(null==r?void 0:r.fromQueue)&&Z.has(L.id)){let t=L.id;if(0!==l.length||eI){let n={id:(0,td.A)(),content:e,attachments:l,nodeOverride:null!=eI?eI:null,timestamp:Date.now()};el(e=>({...e,[t]:[...tb(e,t),n]})),ek(null),nF.debug("Run in progress — queued message (not steerable)",{conversationId:t,queuedId:n.id,reason:l.length>0?"attachments":"node-override"});return}{let n=(0,td.A)(),{delivered:l}=await nW.injectMessage(t,e,n);if(l){let l={id:n,role:"user",content:e,timestamp:Date.now()};tZ({...L,messages:[...L.messages,l]}),nF.debug("Run in progress — injected steering message into the live run",{conversationId:t,messageId:n});return}nF.debug("Steering rejected (run no longer live) — sending as a normal turn",{conversationId:t})}}nF.debug("Sending message",{conversationId:L.id,contentLength:e.length,attachmentsCount:l.length});let o=L.messages,a=!o.some(e=>"user"===e.role),s=L.flowId,i=(null==r?void 0:r.fromQueue)?null!=(t=r.nodeOverride)?t:null:eI;if(i)n=i,(null==r?void 0:r.fromQueue)||ek(null),nF.debug("Assigning manually picked node ID to user message: ".concat(n));else if(a){let e=nE(es.find(e=>e.id===s));e?(n=e.id,nF.debug("Assigning start node ID to first user message: ".concat(n))):nF.warn("Could not find start node for flow ".concat(s,". User message will not have a processNodeId."))}else if((null==tW?void 0:tW.status)==="error"){let e=nE(es.find(e=>e.id===s));e?(n=e.id,nF.debug("Post-error message: re-driving turn from start node ID: ".concat(n))):nF.warn("Could not find start node for post-error message in flow ".concat(s,". User message will not have a processNodeId."))}else{for(let e=o.length-1;e>=0;e--){let t=o[e];if("assistant"===t.role&&t.processNodeId){n=t.processNodeId,nF.debug("Assigning last assistant node ID to user message: ".concat(n));break}}if(!n){let e=nE(es.find(e=>e.id===s));e?(n=e.id,nF.debug("No prior assistant node ID found, falling back to start node ID: ".concat(n))):nF.warn("Could not find start node for fallback in flow ".concat(s,". User message will not have a processNodeId."))}}let d={id:(0,td.A)(),role:"user",content:e,timestamp:Date.now(),attachments:l.length>0?l:void 0,processNodeId:n},c={...L,messages:[...L.messages,d]};tZ(c),c.flowId?await nl(c):(ea("Please select a flow for this conversation before sending messages"),H(L))},nt=(0,r.useCallback)((e,t)=>{nF.verbose("Handling API response data",JSON.stringify(e)),et(t,"running"===e.status);let n=tD.current===t,l=ts.current===t;if("paused_debug"===e.status&&e.debugState)return(nF.info("API Response: Paused for debugging",{conversationId:t}),l)?(eD(e.debugState),eT(!0),eP(!0),V(!1),tn(null),t$(),nn(),H(n=>(null==n?void 0:n.id)===t&&e.debugState.messages&&JSON.stringify(n.messages)!==JSON.stringify(e.debugState.messages)?(nF.debug("Updating detailed conversation messages from debug state"),{...n,messages:e.debugState.messages,updatedAt:e.debugState.updatedAt}):n),P(n=>n.map(n=>{var l,r;return n.id===t?{...n,title:null!=(l=e.debugState.title)?l:n.title,flowId:null!=(r=e.debugState.flowId)?r:n.flowId,status:"paused_debug",updatedAt:e.debugState.updatedAt}:n}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))):(t2(t,"paused_debug"),n&&(V(!1),tn(null),t$(),nn())),!0;if(("completed"===e.status||"error"===e.status)&&l?(nF.info("API Response: Execution completed or errored (Status: ".concat(e.status,"). Hiding debugger panel."),{conversationId:t}),eT(!1),eD(null),eP(!1)):nF.debug("API Response: Status is '".concat(e.status,"'. Debugger panel visibility unchanged (currently ").concat(eN?"visible":"hidden",")."),{conversationId:t}),e.messages&&e.conversation_id===t){let n=e.messages.map((e,n)=>"number"!=typeof e.timestamp||isNaN(e.timestamp)?(nF.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);H(l=>{var r,o;let a=l;return(null==l?void 0:l.id)===t&&JSON.stringify(l.messages)!==JSON.stringify(n)&&(nF.info("API Response/Polling: Updating detailed conversation messages",{conversationId:t,newMessageCount:n.length}),a={...l,messages:n,updatedAt:e.updatedAt||l.updatedAt}),nF.debug("Polling: setDetailedConversation callback executed.",{conversationId:t,messagesChanged:a!==l,newMessageCount:null!=(o=null==a||null==(r=a.messages)?void 0:r.length)?o:"N/A"}),a})}if("awaiting_tool_approval"===e.status)nF.info("API Response/Polling: Pausing for tool approval",{conversationId:t}),l&&eb(e.pendingToolCalls||[]),n&&(V(!1),tn(null),t$(),nn());else if("completed"===e.status||"error"===e.status){if(nF.info("API Response/Polling: Stopping due to final status",{conversationId:t,status:e.status}),n&&(nn(),V(!1),tn(null),t$()),"error"===e.status){var r,o;let a=(null==(r=e.error)?void 0:r.message)||(null==(o=e.lastResponse)?void 0:o.error)||"Unknown error during execution";nL.test(a)||tp.current.has(t)?(tx(t,!0),(n||l)&&ea(null),nF.info("API Response/Polling: Execution cancelled by user",{conversationId:t})):(ea(a),nF.error("API Response/Polling: Execution resulted in error",{conversationId:t,error:e.error||e.lastResponse}))}tP(t)}else"running"!==e.status||eN?l&&eb(null):(l&&eb(null),n&&!tr.current&&V(!0));return e.conversation_id===t&&P(n=>n.map(n=>{var l,r,o;return n.id===t?{...n,title:null!=(l=e.title)?l:n.title,flowId:null!=(r=e.flowId)?r:n.flowId,status:null!=(o=e.status)?o:n.status,updatedAt:e.updatedAt||n.updatedAt}:n}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),!1},[H,eb,V,ea,eT,eD,P,tP,t$,et,t2,tx]),nn=()=>{tr.current&&(nF.debug("Stopping polling interval"),clearInterval(tr.current),tr.current=null)};(0,r.useEffect)(()=>()=>{t$()},[t$]);let nl=async e=>{if(!(null==e?void 0:e.id)||!e.flowId||!tl.current)return nF.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}),ea("Cannot send message: Missing conversation ID or flow ID."),!1;eb(null),ea(null),V(!0),tn(e.id),et(e.id,!0),tx(e.id,!1);let t=ti.current.delete(e.id);e$({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await t6(e.id);let n=!1;try{let t;if($(e.flowId))t="flow-Quick Chat",nF.debug("Sending quick chat to completions",{flowId:e.flowId,conversationId:e.id});else{let n=await tV.g.getFlow(e.flowId);if(!n)throw Error("Flow with ID ".concat(e.flowId," not found"));t="flow-".concat(n.name),nF.debug("Sending to chat completions",{flowId:e.flowId,flowName:n.name,conversationId:e.id})}let l=e.messages.filter(e=>{var t;return!e.disabled&&!((null!=(t=e.depth)?t:0)>0)}).map(e=>{let t=n_(e),n=e.processNodeId,l={id:e.id,timestamp:e.timestamp};return"user"===e.role?{role:"user",content:t,...l,processNodeId:n}:"assistant"===e.role?{role:"assistant",content:t,tool_calls:e.tool_calls,...l,processNodeId:n}:"system"===e.role?{role:"system",content:t,...l,processNodeId:n}:"tool"===e.role?e.tool_call_id?{role:"tool",content:t,tool_call_id:e.tool_call_id,...l,processNodeId:n}:{role:"user",content:"string"==typeof t?"Tool result: ".concat(t):t,...l,processNodeId:n}:{role:"user",content:t,...l,processNodeId:n}}),r=await tl.current.chat.completions.create({model:t,messages:l,stream:!1,metadata:(()=>{let t={flujo:"true",requireApproval:ed?"true":void 0,flujodebug:em?"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})()});nF.debug("Chat completion initial response received",{completionId:r.id}),n=!0;let o={...r,status:r.status||"completed",conversation_id:e.id,messages:r.messages||e.messages,pendingToolCalls:r.pendingToolCalls,debugState:r.debugState,error:r.error,lastResponse:r.lastResponse,updatedAt:r.updatedAt||Date.now()},a=nt(o,e.id);a||tr.current?a&&nF.debug("Debug state handled, polling remains stopped."):nF.debug("Starting polling after initial non-debug response.")}catch(o){if(nH(o)||tp.current.has(e.id))return nF.info("Chat completion cancelled by user",{conversationId:e.id}),n=!1,et(e.id,!1),tx(e.id,!0),tD.current===e.id&&(nn(),V(!1),tn(null),t$(),ea(null)),n;nF.error("Error calling chat completions API:",o),n=!1;let r="An error occurred while sending the message.";if(o instanceof nT.LG)r="API Error: ".concat(o.message," (Status: ").concat(o.status,")"),o.code&&(r+=" (Code: ".concat(o.code,")")),o.type&&(r+=" [Type: ".concat(o.type,"]")),nF.verbose("APIError details",JSON.stringify(o));else if(o instanceof nT.vc){r="OpenAI Error: ".concat(o.message);let e=o.error;e&&"object"==typeof e&&(e.code&&(r+=" (Code: ".concat(e.code,")")),e.type&&(r+=" [Type: ".concat(e.type,"]"))),nF.verbose("OpenAIError details",JSON.stringify(o))}else if(o instanceof nD){var l;r="Error: ".concat((null==(l=o.body)?void 0:l.error)||o.message),o.status&&(r+=" (Status: ".concat(o.status,")")),nF.verbose("ChatApiError details",JSON.stringify(o.body))}else o instanceof Error&&(r=o.message);ea(r),et(e.id,!1),tD.current===e.id&&(nn(),V(!1),tn(null),t$()),t&&ti.current.add(e.id)}finally{}return n},nr=(0,r.useRef)(ne);nr.current=ne;let no=(0,r.useCallback)(e=>{nr.current(e)},[]),[na,ns]=(0,r.useState)(tg),ni=(0,r.useMemo)(()=>new Set(na.order),[na.order]),nd=(0,r.useCallback)(e=>{ns(t=>{let{state:n,evicted:l}=function(e,t){var n,l,r;let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:16,s=tv(t.serverName,t.uri),i=e.entries[s],d={key:s,serverName:t.serverName,uri:t.uri,toolName:null!=(n=t.toolName)?n:null==i?void 0:i.toolName,latestToolArgs:null!=(l=t.toolArgs)?l:null==i?void 0:i.latestToolArgs,latestResultContent:null!=(r=t.resultContent)?r:null==i?void 0:i.latestResultContent,unread:!1,lastActiveAt:o,updatedAt:o,consent:null==i?void 0:i.consent},c={...e.entries,[s]:d};return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16,n=arguments.length>2?arguments[2]:void 0,l=Math.max(1,Math.floor(t));if(e.order.length<=l)return{state:e,evicted:[]};let r={...e.entries},o=[...e.order],a=[];for(;o.length>l;){let e=null,t=1/0;for(let l of o){var s,i;if(l===n)continue;let o=null!=(i=null==(s=r[l])?void 0:s.lastActiveAt)?i:0;o<t&&(t=o,e=l)}if(!e)break;delete r[e],o=o.filter(t=>t!==e),a.push(e)}let d=e.activeKey;return d&&!r[d]&&(d=o.length?o[o.length-1]:null),{state:{entries:r,order:o,activeKey:d},evicted:a}}({entries:c,order:i?e.order:[...e.order,s],activeKey:s},a,s)}(t,e);return l.length&&nF.info("Canvas tab cap reached — evicted (LRU): ".concat(l.join(", "))),n})},[]),nc=(0,r.useCallback)(e=>{ns(t=>(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),l=e.entries[t];if(!l)return e;let r={...l,unread:!1,lastActiveAt:n};return{...e,entries:{...e.entries,[t]:r},activeKey:t}})(t,e))},[]),nu=(0,r.useCallback)(e=>{ns(t=>(function(e,t){if(!e.entries[t])return e;let n={...e.entries};delete n[t];let l=e.order.filter(e=>e!==t),r=e.activeKey;if(r===t){r=null;let e=-1/0;for(let t of l){var o,a;let l=null!=(a=null==(o=n[t])?void 0:o.lastActiveAt)?a:0;l>=e&&(e=l,r=t)}}return{entries:n,order:l,activeKey:r}})(t,e))},[]);(0,r.useEffect)(()=>{ns(tg)},[G]);let np=na.order.join("|");(0,r.useEffect)(()=>{let e=null==L?void 0:L.messages;if(!e||0===na.order.length)return;let t=new Map;for(let n of e){let e=n.ui;"tool"===n.role&&(null==e?void 0:e.uri)&&(null==e?void 0:e.serverName)&&"string"==typeof n.content&&t.set("".concat(e.serverName,"::").concat(e.uri),n.content)}ns(e=>{let n=e;for(let l of e.order){let r=e.entries[l],o=t.get(l);r&&void 0!==o&&o!==r.latestResultContent&&(n=function(e,t){var n,l,r;let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),a=tv(t.serverName,t.uri),s=e.entries[a];if(!s)return e;let i=e.activeKey===a,d={...s,toolName:null!=(n=t.toolName)?n:s.toolName,latestToolArgs:null!=(l=t.toolArgs)?l:s.latestToolArgs,latestResultContent:null!=(r=t.resultContent)?r:s.latestResultContent,updatedAt:o,unread:!i,lastActiveAt:i?o:s.lastActiveAt};return{...e,entries:{...e.entries,[a]:d}}}(n,{serverName:r.serverName,uri:r.uri,resultContent:o}))}return n})},[null==L?void 0:L.messages,np]);let nf=async(e,t,n)=>{if(!L)return;nF.debug("Editing message",{messageId:e,contentLength:t.length,processNodeId:n});let l=L.messages.findIndex(t=>t.id===e);if(-1===l)return;let r={...L.messages[l],content:t,timestamp:Date.now(),processNodeId:n||void 0},o=[...L.messages.slice(0,l),r],a={...L,messages:o};if(tZ(a),a.flowId){let e={flujo:"true",requireApproval:ed?"true":void 0,flujodebug:em?"true":void 0,conversationId:a.id,processNodeId:n||void 0};if(!tl.current)return;ea(null),V(!0),tn(a.id),et(a.id,!0),tx(a.id,!1),e$({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await t6(a.id);try{let t=await tV.g.getFlow(a.flowId);if(!t)throw Error("Flow with ID ".concat(a.flowId," not found"));let n=a.messages.filter(e=>{var t;return!e.disabled&&!((null!=(t=e.depth)?t:0)>0)}).map(e=>{let t=n_(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}}),l=await tl.current.chat.completions.create({model:"flow-".concat(t.name),messages:n,stream:!1,metadata:(()=>{let t={};return e.flujo&&(t.flujo=e.flujo),e.requireApproval&&(t.requireApproval=e.requireApproval),e.flujodebug&&(t.flujodebug=e.flujodebug),e.conversationId&&(t.conversationId=e.conversationId),e.processNodeId&&(t.processNodeId=e.processNodeId),t})()}),r={...l,status:l.status||"completed",conversation_id:a.id,messages:l.messages||a.messages,pendingToolCalls:l.pendingToolCalls,debugState:l.debugState,error:l.error,updatedAt:l.updatedAt||Date.now()};nt(r,a.id)}catch(e){nH(e)||tp.current.has(a.id)?(nF.info("Edited-message run cancelled by user",{conversationId:a.id}),tx(a.id,!0)):(nF.error("Error sending edited message:",e),ea(e instanceof Error?e.message:"Failed to send edited message")),et(a.id,!1),tD.current===a.id&&(V(!1),tn(null),t$())}}},nh=(0,r.useCallback)(e=>{var t,n,l;let r=null==L?void 0:L.messages.find(t=>t.id===e);r&&"user"===r.role&&"string"==typeof r.content&&ez({messageId:e,content:r.content,nodeId:null!=(l=r.processNodeId)?l:null!=(n=null==(t=tL[0])?void 0:t.id)?n:null})},[L,tL]),nx=(0,r.useCallback)(e=>{ez(t=>t?{...t,content:e}:t)},[]),nm=(0,r.useCallback)(e=>{ez(t=>t?{...t,nodeId:e}:t)},[]),ng=(0,r.useCallback)(()=>ez(null),[]),nv=async(e,t,n,l)=>{if(G){nF.info("Handling tool response: ".concat(e),{conversationId:G,toolCallId:t,always:n}),eb(null),V(!0),tn(G),et(G,!0),ea(null),await t6(G);try{let r=await nW.respondToToolCall(G,e,t,n,l);nF.debug("Tool response successful",{conversationId:G,action:e,toolCallId:t}),nt(r,G)}catch(l){if(nH(l)||tp.current.has(G)){nF.info("Tool-response resume cancelled by user",{conversationId:G}),tx(G,!0),tD.current===G&&V(!1),et(G,!1);return}nF.error("Error sending tool response (".concat(e,")"),{conversationId:G,toolCallId:t,err:l});let n="Failed to ".concat(e," tool call.");if(l instanceof nD){var r;n+=" Error: ".concat((null==(r=l.body)?void 0:r.error)||l.message)}else l instanceof Error&&(n+=" Error: ".concat(l.message));ea(n),tD.current===G&&V(!1),et(G,!1)}}},nb=async(e,t)=>{if(G){nF.info("Submitting elicitation form",{conversationId:G,elicitationId:e}),ej(null);try{await fetch("/v1/chat/conversations/".concat(G,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"elicitation-submit",elicitationId:e,content:t})})}catch(t){nF.error("Failed to submit elicitation",{conversationId:G,elicitationId:e,err:t})}}},ny=async e=>{if(G){nF.info("Cancelling elicitation",{conversationId:G,elicitationId:e}),ej(null);try{await fetch("/v1/chat/conversations/".concat(G,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"elicitation-cancel",elicitationId:e})})}catch(t){nF.error("Failed to cancel elicitation",{conversationId:G,elicitationId:e,err:t})}}},nj=async(e,t)=>{if(G){nF.info("Answering question",{conversationId:G,questionId:e}),eA(null);try{await fetch("/v1/chat/conversations/".concat(G,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"question-answer",questionId:e,answers:t})})}catch(t){nF.error("Failed to answer question",{conversationId:G,questionId:e,err:t})}}},nw=async e=>{if(G){nF.info("Declining question",{conversationId:G,questionId:e}),eA(null);try{await fetch("/v1/chat/conversations/".concat(G,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"question-decline",questionId:e})})}catch(t){nF.error("Failed to decline question",{conversationId:G,questionId:e,err:t})}}},nS=async()=>{if(G&&eN){nF.info("Handling debug step request",{conversationId:G}),V(!0),tn(G),et(G,!0),ea(null),await t6(G);try{let e=await nW.debugStep(G);nt(e,G)}catch(e){nF.error("Error during debug step API call",{conversationId:G,err:e}),ea(e instanceof Error?e.message:"Failed to execute debug step."),V(!1),et(G,!1),eT(!1),eD(null)}finally{}}},nC=async()=>{if(G&&eN){nF.info("Handling debug continue request",{conversationId:G}),V(!0),tn(G),et(G,!0),ea(null),eT(!1),await t6(G);try{let e=await nW.debugContinue(G);nt(e,G)}catch(e){nF.error("Error during debug continue API call",{conversationId:G,err:e}),ea(e instanceof Error?e.message:"Failed to continue execution."),V(!1),et(G,!1)}finally{}}};(0,r.useEffect)(()=>{if(eR){var e;te(null!=(e=eR.breakpoints)?e:[])}},[eR]);let nI=(0,r.useCallback)(async e=>{if(!G)return;let t=e9.includes(e)?e9.filter(t=>t!==e):[...e9,e];te(t);try{await nW.setBreakpoints(G,t)}catch(e){nF.error("Failed to update breakpoints",{conversationId:G,err:e}),te(e9)}},[e9,G]),nR=(0,r.useCallback)(async()=>{if(G){nF.info("Attaching debugger to running conversation",{conversationId:G});try{await nW.setBreakpoints(G,["*"])}catch(e){nF.error("Failed to attach debugger",{conversationId:G,err:e}),ea(e instanceof Error?e.message:"Failed to attach debugger.")}}},[G]),nM=async()=>{if(!G||!eN)return;let e=null==eR?void 0:eR.currentNodeId;V(!0),tn(G),et(G,!0),ea(null),await t6(G);try{for(let r=0;r<50;r++){var t,n,l;let r=await nW.debugStep(G),o=null!=(l=null==r?void 0:r.status)?l:null==r||null==(t=r.debugState)?void 0:t.status,a=null==r||null==(n=r.debugState)?void 0:n.currentNodeId;if("paused_debug"!==o||a&&a!==e)return void nt(r,G)}nF.warn("Step Over hit iteration cap",{conversationId:G}),V(!1),et(G,!1)}catch(e){nF.error("Error during step over",{conversationId:G,err:e}),ea(e instanceof Error?e.message:"Failed to step over."),V(!1),et(G,!1)}},nP=async()=>{if(G){nF.info("Cancelling request",{conversationId:G}),nn(),V(!1),tn(null),et(G,!1),tx(G,!0),eP(!1),t$(),eb(null),ea(null);try{await nW.cancel(G),nF.debug("Cancel request sent successfully",{conversationId:G}),await tP(G)}catch(e){nF.error("Error sending cancel request",{conversationId:G,err:e}),ea("Failed to send cancel request to the server.")}}},nO=async e=>{if(e===G)return void await nP();nF.info("Stopping background conversation",{conversationId:e}),tx(e,!0);try{await nW.cancel(e),et(e,!1),await tM(void 0,{silent:!0})}catch(t){nF.error("Error stopping background conversation",{conversationId:e,err:t}),ea("Failed to send cancel request to the server.")}},nU=async()=>{nF.info("Closing debugger panel",{conversationId:G}),eT(!1),eD(null),eP(!1),await nP()};nF.debug("Rendering Chat component",{currentConversationId:G,isHandleEditMessageDefined:!0});let nq=(eM||eN)&&!!eR&&!!G,nB=(null==tW?void 0:tW.status)==="awaiting_tool_approval"||!!ev,nJ=!(nB||(null==tW?void 0:tW.status)==="paused_debug")&&(X&&tt===G||!!G&&Z.has(G)||(null==tW?void 0:tW.status)==="running"),nG=!nJ&&!!G&&tf.has(G);return(0,r.useEffect)(()=>{if(!G||er.current||!L||L.id!==G)return;let e=tb(en,G)[0];if(!e||!function(e){return!e.running&&!e.pendingApproval&&!e.debugPaused&&!e.hasError&&!e.stopped}({running:Z.has(G),pendingApproval:!!ev,debugPaused:eN,hasError:(null==tW?void 0:tW.status)==="error",stopped:nG}))return;er.current=!0;let t=setTimeout(async()=>{try{el(t=>tj(t,G,e.id)),await ne(e.content,e.attachments,{fromQueue:!0,nodeOverride:e.nodeOverride,queuedId:e.id})}catch(t){el(t=>(function(e,t,n){let l=tb(e,t).filter(e=>e.id!==n.id);return{...e,[t]:[n,...l]}})(t,G,e))}finally{er.current=!1}},0);return()=>clearTimeout(t)},[G,L,en,Z,ev,eN,null==tW?void 0:tW.status,nG]),(0,l.jsxs)(s.default,{sx:{display:"flex",height:"calc(100vh - 64px)"},children:[eQ&&(0,l.jsx)(s.default,{sx:{width:40,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",justifyContent:"center",pt:1},children:(0,l.jsx)(i.A,{title:"Show conversation sidebar",children:(0,l.jsx)(d.A,{size:"small",onClick:eX,"aria-label":"Show conversation sidebar",children:(0,l.jsx)(E.A,{fontSize:"small"})})})}),!eQ&&(0,l.jsx)(s.default,{sx:{width:eG,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",flexDirection:"column"},children:O?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",p:2},children:(0,l.jsx)(nz.default,{size:"medium",color:"primary"})}):F?(0,l.jsx)(c.A,{severity:"error",sx:{m:2},children:F}):(0,l.jsx)(eu,{conversations:M,flowNames:tF,currentConversationId:G,onSelectConversation:K,onDeleteConversation:t4,onBulkDelete:t8,onStopConversation:nO,onNewConversation:tJ,onQuickChat:()=>tY(!0),onCollapse:eX})}),!eQ&&(0,l.jsx)(s.default,{onPointerDown:eV,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,l.jsxs)(s.default,{sx:{flex:1,height:"100%",display:"flex",minWidth:0,minHeight:0},children:[(0,l.jsxs)(s.default,{sx:{flex:1,minWidth:0,display:"flex",flexDirection:"column",height:"100%"},children:[G&&(0,l.jsx)(s.default,{sx:{px:2,pt:2,pb:1,display:"flex",alignItems:"center",gap:1,minWidth:0},children:ep?(0,l.jsx)(u.A,{value:eh,onChange:e=>ex(e.target.value),onBlur:t9,onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),t9()):"Escape"===e.key&&ef(!1)},size:"small",autoFocus:!0,fullWidth:!0,inputProps:{maxLength:200,"aria-label":"Conversation title"}}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(p.default,{variant:"h6",noWrap:!0,onClick:t7,title:(null==L?void 0:L.title)||(null==tW?void 0:tW.title)||"",sx:{flex:1,minWidth:0,cursor:"text"},children:(null==L?void 0:L.title)||(null==tW?void 0:tW.title)||"Untitled Conversation"}),(0,l.jsx)(i.A,{title:"Rename conversation",children:(0,l.jsx)(d.A,{size:"small",onClick:t7,"aria-label":"Rename conversation",children:(0,l.jsx)(z.A,{fontSize:"small"})})}),(0,l.jsx)(i.A,{title:eL?"Hide executed steps":"Show executed steps",children:(0,l.jsx)(d.A,{size:"small",color:eL?"primary":"default",onClick:()=>eH(e=>!e),"aria-label":"Toggle executed steps panel",children:(0,l.jsx)(T.A,{fontSize:"small"})})})]})}),G&&(0,l.jsxs)(s.default,{sx:{p:2,borderBottom:1,borderColor:"divider",display:"flex",alignItems:"center",gap:2},children:[(0,l.jsx)(s.default,{sx:{flex:1,minWidth:0},children:$((null==tW?void 0:tW.flowId)||(null==L?void 0:L.flowId))?(0,l.jsx)(f.A,{color:"primary",variant:"outlined",icon:(0,l.jsx)(A.A,{}),label:"Quick Chat"}):(0,l.jsx)(tU.A,{selectedFlowId:(null==tW?void 0:tW.flowId)||(null==L?void 0:L.flowId)||null,onSelectFlow:e=>{var t,n,l,r;if(!G){nF.warn("Cannot update flow: No conversation selected."),ea("Please select a conversation first.");return}$(e)||Y(e);let o=null!=(l=null!=(n=null==L?void 0:L.flowId)?n:null==tW?void 0:tW.flowId)?l:null;if((null!=(r=null==L||null==(t=L.messages)?void 0:t.length)?r:0)>0&&o&&e!==o){nF.debug("Flow switch on executed conversation — asking for confirmation",{flowId:e,currentFlowId:o}),eC(e);return}t3(e)},disabled:eN})}),(()=>{let e=(null==tW?void 0:tW.flowId)||(null==L?void 0:L.flowId)||null;return!e||$(e)?null:(0,l.jsx)(i.A,{title:"Open this flow in the FlowBuilder",children:(0,l.jsx)(d.A,{color:"primary",onClick:()=>o.push("/flows?flow=".concat(encodeURIComponent(e))),children:(0,l.jsx)(N.A,{})})})})(),(0,l.jsx)(tH,{usage:null==L?void 0:L.usage,contextInfo:null==L?void 0:L.contextInfo,availableNodes:tL})]}),(0,l.jsxs)(s.default,{sx:{flex:1,minHeight:0,position:"relative",display:"flex",flexDirection:"column"},children:[(0,l.jsx)(s.default,{ref:tw,onScroll:tN,sx:{flex:1,overflow:"auto",p:2},children:U?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,l.jsx)(nz.default,{size:"medium",color:"primary"})}):B?(0,l.jsx)(c.A,{severity:"error",sx:{m:2},children:B}):L?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(e2,{messages:L.messages,pendingToolCalls:ev,pendingElicitation:ey,availableNodes:tL,conversationId:L.id,editingMessageId:null!=(t=null==eE?void 0:eE.messageId)?t:null,onToggleDisabled:e=>{if(!L)return;nF.debug("Toggling message disabled state",{messageId:e});let t=L.messages.map(t=>t.id===e?{...t,disabled:!t.disabled}:t);tZ({...L,messages:t})},onSplitConversation:e=>{if(!L)return;nF.debug("Splitting conversation at message",{messageId:e});let t=L.messages.findIndex(t=>t.id===e);if(-1===t)return;let n=L.messages.slice(0,t+1),l=(0,td.A)(),r={id:l,title:"Split from ".concat(L.title),messages:n,flowId:L.flowId,createdAt:Date.now(),updatedAt:Date.now()},o={id:l,title:r.title,flowId:r.flowId,createdAt:r.createdAt,updatedAt:r.updatedAt};ti.current.add(l),P(e=>[o,...e].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),K(l),H(r),q(!1),J(null)},onBeginEditMessage:nh,onApproveToolCall:(e,t)=>{nv("approve",e,t)},onRejectToolCall:(e,t,n)=>{nv("reject",e,t,n)},onSubmitElicitation:nb,onCancelElicitation:ny,pendingQuestion:ew,onAnswerQuestion:nj,onDeclineQuestion:nw,onAppMessage:no,onOpenInCanvas:nd,canvasKeys:ni,queuedMessages:tb(en,L.id),queueHoldReason:function(e){return e.stopped?"Held — you stopped this run. Send again to continue.":e.hasError?"Held — the last run failed. Retry or send again to continue.":e.pendingApproval?"Held — waiting for tool approval.":e.debugPaused?"Held — paused in the debugger.":null}({running:Z.has(L.id),pendingApproval:!!ev,debugPaused:eN,hasError:(null==tW?void 0:tW.status)==="error",stopped:nG})}),!X&&!eN&&L.messages.length>0&&(null==tW?void 0:tW.status)==="completed"&&(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(c.A,{icon:(0,l.jsx)(C.A,{fontSize:"inherit"}),severity:"success",variant:"filled",sx:{borderRadius:2,py:.5},children:"Conversation completed"})}),!X&&!eN&&nG&&(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(c.A,{icon:(0,l.jsx)(k.A,{fontSize:"inherit"}),severity:"info",variant:"outlined",sx:{borderRadius:2,py:.5,alignItems:"center"},action:(0,l.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,l.jsx)(S.A,{}),onClick:()=>nl(L),children:"Resume"}),children:"Conversation stopped"})}),!X&&!eN&&!eo&&!nG&&(null==tW?void 0:tW.status)==="error"&&(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(c.A,{icon:(0,l.jsx)(I.A,{fontSize:"inherit"}),severity:"error",variant:"filled",sx:{borderRadius:2,py:.5,alignItems:"center"},action:(0,l.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,l.jsx)(S.A,{}),onClick:()=>{nl(L)},children:"Retry"}),children:"Conversation ended with an error"})}),nJ&&e4.length>0&&(0,l.jsx)(tR,{todos:e4}),nJ&&!eN&&(0,l.jsx)(tz,{liveStats:eZ,lanes:e5,onOpenLane:K,onStop:nP,stopDisabled:!G,onAttachDebugger:X&&tt===G&&!eM?nR:void 0}),!nJ&&nB&&!eN&&(0,l.jsx)(tz,{liveStats:eZ,lanes:e5,onOpenLane:K,awaitingApproval:!0,onStop:nP,stopDisabled:!G}),eo&&(0,l.jsx)(c.A,{severity:"error",sx:{mt:2},action:(0,l.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,l.jsx)(S.A,{}),onClick:()=>{L&&nl(L)},children:"Retry"}),children:eo})]}):(0,l.jsx)(p.default,{variant:"body1",color:"textSecondary",align:"center",sx:{mt:4},children:M.length>0?"Select a conversation or create a new one.":"Create a new conversation to start chatting."})}),(0,l.jsx)(x.A,{in:tS,unmountOnExit:!0,children:(0,l.jsx)(m.A,{size:"small",color:"primary","aria-label":"Scroll to latest messages",onClick:tT,sx:{position:"absolute",bottom:16,right:24,zIndex:2},children:(0,l.jsx)(w.A,{})})})]}),(0,l.jsx)(tm,{entries:function(e){return e.order.map(t=>e.entries[t]).filter(e=>!!e)}(na),activeKey:na.activeKey,onSelectTab:nc,onCloseTab:nu,onAppMessage:no}),(0,l.jsxs)(s.default,{sx:{p:2,borderTop:1,borderColor:"divider"},children:[G&&tb(en,G).length>0&&(0,l.jsxs)(s.default,{"data-testid":"queued-messages",sx:{mb:1,display:"flex",flexWrap:"wrap",gap:1,alignItems:"center"},children:[(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,l.jsx)(R.A,{fontSize:"inherit"})," Queued:"]}),tb(en,G).map(e=>(0,l.jsx)(f.A,{size:"small",variant:"outlined",label:e.content.trim().slice(0,40)||(e.attachments.length?"".concat(e.attachments.length," attachment(s)"):"message"),onDelete:()=>el(t=>tj(t,G,e.id))},e.id))]}),(0,l.jsx)(tu,{onSendMessage:ne,disabled:U||!((null==L?void 0:L.flowId)||(null==tW?void 0:tW.flowId))||!!ev||eN,requireApproval:ed,onRequireApprovalChange:tO,executeInDebugger:em,onExecuteInDebuggerChange:eg,availableNodes:tL,flow:t_,currentNodeId:tB,nodeOverrideActive:!!eI,onSelectNode:ek,editing:eE,onEditingContentChange:nx,onEditingNodeChange:nm,onSaveEdit:()=>{eE&&eE.content.trim()&&(nf(eE.messageId,eE.content,eE.nodeId||""),ez(null))},onCancelEdit:ng})]})]})," ",eL&&G&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.default,{onPointerDown:eB,sx:{width:"6px",flexShrink:0,cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":"Resize executed steps panel"}),(0,l.jsx)(s.default,{sx:{width:"".concat(eU,"px"),minWidth:240,maxWidth:"70vw",flexShrink:0,display:"flex",flexDirection:"column",height:"100%"},children:(0,l.jsx)(nk,{flowId:(null==L?void 0:L.flowId)||(null==tW?void 0:tW.flowId)||null,flowSnapshot:null!=(n=null==eR?void 0:eR.flowSnapshot)?n:null,executedNodeIds:tq,liveActivity:e0,onClose:()=>eH(!1)})})]}),nq&&eR&&G&&!eF&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.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,l.jsx)(s.default,{sx:{width:eO?"".concat(eO,"px"):"50%",minWidth:360,maxWidth:"85vw",flexShrink:0,display:"flex",flexDirection:"column",height:"100%"},children:(0,l.jsx)(nA,{debugState:eR,conversationId:G,liveActivity:e0,onStep:nS,onStepOver:nM,onContinue:nC,onCancel:nP,isLoading:X,breakpoints:e9,onToggleBreakpoint:nI,onClose:nU,isExpanded:eF,onToggleExpand:()=>e_(e=>!e)})})]})]})," ",nq&&eR&&G&&eF&&(0,l.jsx)(g.A,{fullScreen:!0,open:!0,onClose:()=>e_(!1),children:(0,l.jsx)(s.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,l.jsx)(nA,{debugState:eR,conversationId:G,liveActivity:e0,onStep:nS,onStepOver:nM,onContinue:nC,onCancel:nP,isLoading:X,breakpoints:e9,onToggleBreakpoint:nI,onClose:nU,isExpanded:eF,onToggleExpand:()=>e_(e=>!e)})})}),(0,l.jsxs)(g.A,{open:!!eS,onClose:()=>eC(null),children:[(0,l.jsx)(v.A,{children:"Switch flow?"}),(0,l.jsx)(b.A,{children:(0,l.jsxs)(y.A,{children:["This conversation has already been processed with its current flow."," ","If you switch to"," ",(0,l.jsx)("strong",{children:(null==(e=es.find(e=>e.id===eS))?void 0:e.name)||"the selected flow"}),","," ","the conversation will continue processing from that flow's Start node again."]})}),(0,l.jsxs)(j.A,{children:[(0,l.jsx)(h.A,{onClick:()=>eC(null),children:"Cancel"}),(0,l.jsx)(h.A,{variant:"contained",onClick:()=>{eC(null),eS&&t3(eS)},children:"Switch Flow"})]})]}),(0,l.jsx)(tG,{open:tQ,onClose:()=>tY(!1),onStart:tX})]})},nq=(0,eJ.h)("frontend/components/ClientOnly");function nB(e){let{children:t}=e,[n,o]=(0,r.useState)(!1);return((0,r.useEffect)(()=>(nq.debug("ClientOnly component mounted"),o(!0),()=>{nq.debug("ClientOnly component unmounted")}),[]),n)?(nq.debug("ClientOnly component rendering children"),(0,l.jsx)(l.Fragment,{children:t})):(nq.debug("ClientOnly component rendering null (not yet mounted)"),null)}let nJ=(0,eJ.h)("app/chat/page");function nG(){return nJ.debug("Rendering ChatPage"),(0,l.jsx)(o.A,{maxWidth:!1,disableGutters:!0,children:(0,l.jsx)(nB,{children:(0,l.jsx)(nU,{})})})}}},e=>{e.O(0,[3862,2678,4754,9244,3392,1871,7111,2003,9562,488,3272,8470,3077,9581,3659,6404,8863,5418,8401,8054,2005,3958,1572,9164,812,8404,1988,8441,1255,7358],()=>e(e.s=97206)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1488],{55406:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var l=n(15485),r=n(95155);let a=(0,l.A)((0,r.jsx)("path",{d:"M8 5v14l11-7z"}),"PlayArrow")},57938:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>ef});var l=n(95155),r=n(94049),a=n(12115),i=n(25635),o=n(99944),s=n(9957),c=n(91871),d=n(22003),u=n(80422),h=n(2778),x=n(52363),g=n(65036),p=n(75912),f=n(86946),m=n(76530),v=n(78470),j=n(41983),w=n(93632),y=n(87021),b=n(2300),A=n(28548),k=n(4474),S=n(50430),C=n(55406),W=n(14915),E=n(4484),T=n(63186),I=n(62962);let P=(0,n(15485).A)((0,l.jsx)("path",{d:"M21 11V3h-8l3.29 3.29-10 10L3 13v8h8l-3.29-3.29 10-10z"}),"OpenInFull"),R=e=>String(e).padStart(2,"0"),N=e=>{switch(e){case"completed":return"success.main";case"error":return"error.main";case"skipped":return"warning.main";default:return"transparent"}},F=e=>e?new Date(e).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"",L=e=>{if(!e.finishedAt)return"";let t=new Date(e.finishedAt).getTime()-new Date(e.firedAt).getTime();return t<1e3?"<1s":t<6e4?"".concat(Math.round(t/1e3),"s"):"".concat(Math.round(t/6e4),"min")},z=e=>{var t;let{entry:n,paused:o,onEdit:d,onDelete:u,onToggleEnabled:f,onRanNow:m}=e,{execution:y,status:z,lastRun:D}=n,[U,O]=(0,a.useState)(!1),[M,B]=(0,a.useState)(null),[q,H]=(0,a.useState)(!1),[_,G]=(0,a.useState)(!1),[$,Q]=(0,a.useState)(null),[K,J]=(0,a.useState)(10),V=(0,a.useCallback)(async()=>{H(!0),B([...await w.P.loadRuns(y.id)].reverse()),J(10),H(!1)},[y.id]);(0,a.useEffect)(()=>{U&&V()},[U,V,null==D?void 0:D.runId]);let X=async()=>{G(!0),await w.P.runNow(y.id),G(!1),U&&V(),m()};return(0,l.jsxs)(b.A,{variant:"outlined",sx:{p:2},children:[(0,l.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1.5,flexWrap:"wrap"},children:[(0,l.jsxs)(r.default,{sx:{flexGrow:1,minWidth:220},children:[(0,l.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1,flexWrap:"wrap"},children:[(0,l.jsx)(i.default,{variant:"subtitle1",sx:{fontWeight:600},children:y.name}),(0,l.jsx)(A.A,{size:"small",label:function(e){var t,n,l;switch(e.type){case"schedule":{let n,l=(t=e.cron,(n=/^\*\/(\d+) \* \* \* \* \*$/.exec(t))?"Every ".concat(n[1],"s"):(n=/^\*\/(\d+) \* \* \* \*$/.exec(t))?"Every ".concat(n[1]," min"):(n=/^0 \*\/(\d+) \* \* \*$/.exec(t))?1===Number(n[1])?"Every hour":"Every ".concat(n[1]," hours"):(n=/^(\d+) (\d+) \* \* \*$/.exec(t))?"Daily at ".concat(R(Number(n[2])),":").concat(R(Number(n[1]))):(n=/^(\d+) (\d+) \* \* 1-5$/.exec(t))?"Weekdays at ".concat(R(Number(n[2])),":").concat(R(Number(n[1]))):null);return null!=l?l:"Schedule: ".concat(e.cron)}case"webhook":return"Webhook";case"file-watch":return"Watching ".concat(e.path);case"mcp-poll":return"Watching ".concat(e.serverName," › ").concat(e.toolName);case"url-watch":try{return"Watching ".concat(new URL(e.url).hostname)}catch(e){return"Watching a URL"}case"flow-event":{if(null==(n=e.source)?void 0:n.topic)return"On signal “".concat(e.source.topic,"”");let t=(null!=(l=e.on)?l:[]).join("/")||"terminal";return"When a flow is ".concat(t)}default:return"Trigger"}}(y.trigger)}),y.exclusive&&(0,l.jsx)(v.A,{title:"Only runs when the scheduler is idle; blocks other runs while active",children:(0,l.jsx)(A.A,{size:"small",color:"secondary",label:"Exclusive"})}),!y.enabled&&(0,l.jsx)(A.A,{size:"small",label:"Off",variant:"outlined"})]}),z.running?(0,l.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:.75,mt:.5},children:[(0,l.jsx)(k.default,{size:12,thickness:6}),(0,l.jsxs)(i.default,{variant:"body2",color:"text.secondary",children:["Running…",z.runningSince?" — started ".concat(F(z.runningSince)):""]})]}):z.blockedByExclusive?(0,l.jsxs)(i.default,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:["Blocked — an exclusive execution holds the scheduler",z.lastTriggerError?" — trigger error: ".concat(z.lastTriggerError):""]}):(0,l.jsxs)(i.default,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:[(e=>{let{execution:t,status:n}=e;if(!t.enabled)return"";if(n.nextRun)return"Next run: ".concat(F(n.nextRun));if("paused"===n.notArmedReason)return"Paused (global)";if(n.armed)switch(t.trigger.type){case"webhook":return"Listening for webhook";case"file-watch":return"Watching ".concat(t.trigger.path);case"mcp-poll":case"url-watch":return"Watching for changes";case"flow-event":return"Waiting for flow event";default:return"Armed"}return"Not armed"})(n),z.lastTriggerError?" — trigger error: ".concat(z.lastTriggerError):""]}),D&&(0,l.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:.75,mt:.5},children:[(0,l.jsx)(v.A,{title:D.status,children:(0,l.jsx)(r.default,{sx:{width:10,height:10,borderRadius:"50%",bgcolor:N(D.status),flexShrink:0}})}),(0,l.jsxs)(i.default,{variant:"body2",color:"text.secondary",children:["Last run ",F(D.firedAt),"error"===D.status&&D.error?" — ".concat(D.error):""]})]})]}),(0,l.jsx)(v.A,{title:"Run now",children:(0,l.jsx)("span",{children:(0,l.jsx)(j.A,{onClick:X,disabled:_,color:"primary",children:_?(0,l.jsx)(k.default,{size:20}):(0,l.jsx)(C.A,{})})})}),(0,l.jsx)(v.A,{title:o?"Scheduler is paused globally — switch it to Active (top right) to arm triggers":y.enabled?"Turn off":"Turn on",children:(0,l.jsx)(s.A,{checked:y.enabled,onChange:e=>f(e.target.checked)})}),(0,l.jsx)(v.A,{title:"Edit",children:(0,l.jsx)(j.A,{onClick:d,children:(0,l.jsx)(W.A,{})})}),(0,l.jsx)(v.A,{title:"Delete",children:(0,l.jsx)(j.A,{onClick:u,children:(0,l.jsx)(E.A,{})})}),(0,l.jsx)(v.A,{title:U?"Hide run history":"Show run history",children:(0,l.jsx)(j.A,{onClick:()=>O(e=>!e),children:U?(0,l.jsx)(I.A,{}):(0,l.jsx)(T.A,{})})})]}),(0,l.jsx)(S.A,{in:U,timeout:"auto",unmountOnExit:!0,children:(0,l.jsxs)(r.default,{sx:{mt:2,borderTop:1,borderColor:"divider",pt:1.5},children:[q&&!M&&(0,l.jsx)(i.default,{variant:"body2",color:"text.secondary",children:"Loading runs…"}),M&&0===M.length&&(0,l.jsx)(i.default,{variant:"body2",color:"text.secondary",children:"No runs yet. Use the play button to try it now."}),null==M?void 0:M.slice(0,K).map(e=>{var t;return(0,l.jsxs)(r.default,{sx:{display:"flex",gap:1,py:.75,alignItems:"flex-start","&:hover .run-detail-button":{opacity:1}},children:[(0,l.jsx)(r.default,{sx:{width:10,height:10,borderRadius:"50%",bgcolor:N(e.status),mt:"5px",flexShrink:0}}),(0,l.jsxs)(r.default,{sx:{minWidth:0,flexGrow:1},children:[(0,l.jsxs)(i.default,{variant:"body2",children:[F(e.firedAt),L(e)?" \xb7 ".concat(L(e)):""," \xb7 ",e.triggerSummary,(null==(t=e.usage)?void 0:t.totalTokens)?" \xb7 ".concat(e.usage.totalTokens.toLocaleString()," tokens"):""]}),e.error&&(0,l.jsx)(i.default,{variant:"body2",color:"error",children:e.error}),e.outputText&&(0,l.jsx)(i.default,{variant:"body2",color:"text.secondary",sx:{whiteSpace:"pre-wrap",display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden"},children:e.outputText})]}),(0,l.jsx)(v.A,{title:"Show full output",children:(0,l.jsx)(j.A,{className:"run-detail-button",size:"small",onClick:()=>Q(e),sx:{opacity:{xs:1,md:.35},transition:"opacity 120ms",flexShrink:0},children:(0,l.jsx)(P,{fontSize:"inherit"})})})]},e.runId)}),M&&M.length>K&&(0,l.jsxs)(c.A,{size:"small",onClick:()=>J(e=>e+10),sx:{mt:1},children:["Load more (",M.length-K," older)"]})]})}),(0,l.jsxs)(h.A,{open:null!==$,onClose:()=>Q(null),maxWidth:"md",fullWidth:!0,children:[(0,l.jsx)(x.A,{component:"div",children:(0,l.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(r.default,{sx:{width:10,height:10,borderRadius:"50%",bgcolor:$?N($.status):"transparent",flexShrink:0}}),(0,l.jsxs)(i.default,{variant:"h6",children:[y.name," — ",$?F($.firedAt):""]})]})}),(0,l.jsx)(g.A,{dividers:!0,children:$&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(i.default,{variant:"body2",color:"text.secondary",sx:{mb:1.5},children:[$.status,L($)?" \xb7 ".concat(L($)):""," \xb7 ",$.triggerSummary,(null==(t=$.usage)?void 0:t.totalTokens)?" \xb7 ".concat($.usage.totalTokens.toLocaleString()," tokens (").concat($.usage.promptTokens.toLocaleString()," in / ").concat($.usage.completionTokens.toLocaleString()," out)"):""]}),$.error&&(0,l.jsx)(i.default,{variant:"body2",color:"error",sx:{mb:1.5,whiteSpace:"pre-wrap"},children:$.error}),$.outputText?(0,l.jsx)(r.default,{sx:{whiteSpace:"pre-wrap",wordBreak:"break-word",bgcolor:"action.hover",borderRadius:1,p:2,fontSize:14,maxHeight:"55vh",overflow:"auto"},children:$.outputText}):!$.error&&(0,l.jsx)(i.default,{variant:"body2",color:"text.secondary",children:"This run produced no output text."})]})}),(0,l.jsx)(p.A,{children:(0,l.jsx)(c.A,{onClick:()=>Q(null),children:"Close"})})]})]})};var D=n(21067),U=n(9562),O=n(52641),M=n(95436),B=n(55606),q=n(86973),H=n(18369),_=n(77073),G=n(26922),$=n(40520),Q=n(79299),K=n(22590),J=n(53657),V=n(7107),X=n(90057),Y=n(23143),Z=n(84765),ee=n(43673),et=n(21997),en=n(80811),el=n(14368),er=n(23833),ea=n(75870);let ei=(0,y.h)("frontend/components/PlannedExecutions/ExecutionModal"),eo={type:"schedule",cron:"0 9 * * *"},es={type:"file-watch",path:"",events:["add","change"]},ec={type:"mcp-poll",serverName:"",toolName:"",args:{},cron:"*/5 * * * *",evaluate:{mode:"on-change"}},ed={type:"url-watch",url:"",cron:"*/15 * * * *"},eu={type:"flow-event",source:{flowId:""},on:["completed"]},eh=e=>{var t,n;let{open:u,execution:f,onClose:m,onSaved:v}=e,[y,b]=(0,a.useState)(""),[A,k]=(0,a.useState)(""),[S,C]=(0,a.useState)(""),[W,E]=(0,a.useState)(!1),[T,I]=(0,a.useState)("skip"),[P,R]=(0,a.useState)(!1),[N,F]=(0,a.useState)("queue"),[L,z]=(0,a.useState)(eo),[eh,ex]=(0,a.useState)(""),[eg,ep]=(0,a.useState)([]),[ef,em]=(0,a.useState)(!1),[ev,ej]=(0,a.useState)(!1),[ew,ey]=(0,a.useState)(null);(0,a.useEffect)(()=>{var e,t,n,l,r,a;u&&(ey(null),b(null!=(e=null==f?void 0:f.name)?e:""),k(null!=(t=null==f?void 0:f.flowId)?t:""),C(null!=(n=null==f?void 0:f.prompt)?n:""),E((null==f?void 0:f.saveConversations)===!0),I(null!=(l=null==f?void 0:f.overlapStrategy)?l:"skip"),R((null==f?void 0:f.exclusive)===!0),F(null!=(r=null==f?void 0:f.nonExclusiveBehavior)?r:"queue"),z(null!=(a=null==f?void 0:f.trigger)?a:eo),ex(f?"":crypto.randomUUID()))},[u,f]),(0,a.useEffect)(()=>{if(!u)return;let e=!1;return em(!0),X.g.loadFlows().then(t=>{e||ep(t||[])}).catch(t=>{ei.warn("Failed to load flows for execution picker",t),e||ep([])}).finally(()=>{e||em(!1)}),()=>{e=!0}},[u]);let eb=!!A&&!ef&&eg.length>0&&!eg.some(e=>e.id===A),eA=async()=>{var e;ej(!0),ey(null);let t={name:y,flowId:A,prompt:S,saveConversations:W,overlapStrategy:T,exclusive:P,nonExclusiveBehavior:N,trigger:L,enabled:null==(e=null==f?void 0:f.enabled)||e,...f?{}:{id:eh}},n=f?await w.P.update(f.id,t):await w.P.create(t);if(ej(!1),!n.success)return void ey(n.error||"Failed to save");v(),m()};return(0,l.jsxs)(h.A,{open:u,onClose:m,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"primary.main",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,l.jsx)(x.A,{component:"div",children:(0,l.jsxs)(r.default,{display:"flex",alignItems:"center",justifyContent:"space-between",children:[(0,l.jsx)(i.default,{variant:"h6",children:f?"Edit planned execution":"New planned execution"}),(0,l.jsx)(j.A,{edge:"end",color:"inherit",onClick:m,"aria-label":"close",children:(0,l.jsx)(_.A,{})})]})}),(0,l.jsx)(D.A,{}),(0,l.jsxs)(g.A,{sx:{p:3},children:[(0,l.jsx)(i.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"A planned execution runs one of your flows automatically — on a schedule or when something happens — without anyone sitting in the chat. Results show up in its run history on the Executions page."}),(0,l.jsx)(U.A,{fullWidth:!0,label:"Name",value:y,onChange:e=>b(e.target.value),margin:"normal",placeholder:"e.g. Morning news digest"}),(0,l.jsx)(i.default,{variant:"subtitle1",sx:{mt:3,mb:1,fontWeight:600},children:"1 \xb7 When should it run?"}),(0,l.jsxs)(r.default,{role:"radiogroup","aria-label":"Trigger type",sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,l.jsx)(Y.A,{selected:"schedule"===L.type,onClick:()=>{"schedule"!==L.type&&z((null==f?void 0:f.trigger.type)==="schedule"?f.trigger:eo)},icon:(0,l.jsx)(G.A,{}),title:"On a schedule",description:"Run at fixed times — every few minutes, daily, on weekdays, or a custom rhythm."}),(0,l.jsx)(Y.A,{selected:"webhook"===L.type,onClick:()=>{"webhook"!==L.type&&z((null==f?void 0:f.trigger.type)==="webhook"?f.trigger:{type:"webhook",token:crypto.randomUUID()})},icon:(0,l.jsx)($.A,{}),title:"When called (webhook)",description:"Other apps run this flow by calling a URL — GitHub, Stripe, Slack and most services can send webhooks."}),(0,l.jsx)(Y.A,{selected:"file-watch"===L.type,onClick:()=>{"file-watch"!==L.type&&z((null==f?void 0:f.trigger.type)==="file-watch"?f.trigger:es)},icon:(0,l.jsx)(Q.A,{}),title:"When files change",description:"Watch a folder on this computer and run when files appear, change, or disappear."}),(0,l.jsx)(Y.A,{selected:"mcp-poll"===L.type,onClick:()=>{"mcp-poll"!==L.type&&z((null==f?void 0:f.trigger.type)==="mcp-poll"?f.trigger:ec)},icon:(0,l.jsx)(K.A,{}),title:"Watch a tool",description:"Check one of your MCP tools regularly — run when its result changes, or let AI decide."}),(0,l.jsx)(Y.A,{selected:"url-watch"===L.type,onClick:()=>{"url-watch"!==L.type&&z((null==f?void 0:f.trigger.type)==="url-watch"?f.trigger:ed)},icon:(0,l.jsx)(J.A,{}),title:"When a website changes",description:"Check a URL regularly and run when its content is different from the last check."}),(0,l.jsx)(Y.A,{selected:"flow-event"===L.type,onClick:()=>{"flow-event"!==L.type&&z((null==f?void 0:f.trigger.type)==="flow-event"?f.trigger:eu)},icon:(0,l.jsx)(V.A,{}),title:"When another flow finishes",description:"React to another flow completing or erroring — chain flows together or run triage when something fails."})]}),"schedule"===L.type&&(0,l.jsx)(Z.A,{cron:L.cron,timezone:L.timezone,onChange:e=>{let{cron:t,timezone:n}=e;return z({...L,cron:t,timezone:n})},catchUp:!0===L.catchUp,onCatchUpChange:e=>z({...L,catchUp:e})}),"webhook"===L.type&&(0,l.jsx)(ee.A,{config:L,onChange:z,executionId:null!=(t=null==f?void 0:f.id)?t:eh,saved:null!==f}),"file-watch"===L.type&&(0,l.jsx)(et.A,{config:L,onChange:z}),"mcp-poll"===L.type&&(0,l.jsx)(en.A,{config:L,onChange:z}),"url-watch"===L.type&&(0,l.jsx)(el.A,{config:L,onChange:z}),"flow-event"===L.type&&(0,l.jsx)(er.A,{config:L,onChange:z,flows:eg,currentExecutionId:null!=(n=null==f?void 0:f.id)?n:eh}),(0,l.jsxs)(O.A,{fullWidth:!0,margin:"normal",children:[(0,l.jsx)(M.A,{id:"overlap-strategy-label",children:"If it's already running…"}),(0,l.jsxs)(B.A,{labelId:"overlap-strategy-label",label:"If it's already running…",value:T,onChange:e=>I(e.target.value),children:[(0,l.jsx)(q.A,{value:"skip",children:"Skip the new run (default)"}),(0,l.jsx)(q.A,{value:"queue",children:"Queue it — run after the current one finishes"}),(0,l.jsx)(q.A,{value:"parallel",children:"Run in parallel — allow concurrent runs"}),(0,l.jsx)(q.A,{value:"error",children:"Reject it — record an error (webhook gets 409)"})]}),(0,l.jsx)(H.A,{children:"parallel"===T&&("url-watch"===L.type||"mcp-poll"===L.type)?"Heads up: parallel runs of a change-watching trigger can race each other — skip or queue is usually safer here.":"queue"===T?"Queued fires run one at a time, in order. A burst is capped so it can’t grow without limit.":"What happens when this trigger fires while a previous run of it is still going."})]}),(0,l.jsx)(o.A,{sx:{mt:1},control:(0,l.jsx)(s.A,{checked:P,onChange:e=>R(e.target.checked)}),label:"Exclusive — only run when nothing else is running, and block other runs while it does"}),P&&(0,l.jsxs)(O.A,{fullWidth:!0,margin:"normal",children:[(0,l.jsx)(M.A,{id:"non-exclusive-behavior-label",children:"While this runs, other triggers…"}),(0,l.jsxs)(B.A,{labelId:"non-exclusive-behavior-label",label:"While this runs, other triggers…",value:N,onChange:e=>F(e.target.value),children:[(0,l.jsx)(q.A,{value:"queue",children:"Queue — run them after this finishes (default)"}),(0,l.jsx)(q.A,{value:"skip",children:"Skip — drop them"}),(0,l.jsx)(q.A,{value:"error",children:"Fail — reject them (webhook gets 423)"})]}),(0,l.jsx)(H.A,{children:"An exclusive run waits until the scheduler is idle, then holds a global lock so no other planned execution can start until it finishes."})]}),(0,l.jsx)(D.A,{sx:{mt:3}}),(0,l.jsx)(i.default,{variant:"subtitle1",sx:{mt:2,mb:0,fontWeight:600},children:"2 \xb7 What should it run?"}),(0,l.jsx)(r.default,{sx:{mt:2},children:(0,l.jsx)(ea.A,{selectedFlowId:A||null,onSelectFlow:k,disabled:ev,hideLabel:!0})}),eb&&(0,l.jsx)(d.A,{severity:"warning",sx:{mt:1},children:"The previously selected flow no longer exists. Please choose another."}),(0,l.jsx)(U.A,{fullWidth:!0,label:"What should the flow do?",value:S,onChange:e=>C(e.target.value),margin:"normal",multiline:!0,rows:3,helperText:"Sent to the flow as the user message each time this runs. Run details are attached automatically: current time, what triggered it, the previous run, the next planned run, and any trigger data."}),(0,l.jsx)(o.A,{sx:{mt:1},control:(0,l.jsx)(s.A,{checked:W,onChange:e=>E(e.target.checked)}),label:"Save full conversations (each run appears in the chat sidebar — useful for debugging)"}),ew&&(0,l.jsx)(d.A,{severity:"error",sx:{mt:2},children:ew})]}),(0,l.jsxs)(p.A,{children:[(0,l.jsx)(c.A,{onClick:m,children:"Cancel"}),(0,l.jsx)(c.A,{onClick:eA,variant:"contained",color:"primary",disabled:ev||!y.trim()||!A,children:ev?"Saving…":"Save"})]})]})},ex=(0,y.h)("frontend/components/PlannedExecutions"),eg=()=>{let[e,t]=(0,a.useState)([]),[n,y]=(0,a.useState)(!1),[b,A]=(0,a.useState)(!1),[k,S]=(0,a.useState)(!1),[C,W]=(0,a.useState)(null),[E,T]=(0,a.useState)(null),[I,P]=(0,a.useState)(null),R=(0,a.useCallback)(async()=>{let e=await w.P.list();t(e.executions),y(e.paused),A(!0)},[]);(0,a.useEffect)(()=>{R()},[R]);let N=e.some(e=>e.status.running);(0,a.useEffect)(()=>{let e=setInterval(()=>{document.hidden||R()},N?3e3:1e4);return()=>clearInterval(e)},[R,N]);let F=async e=>{y(e);let t=await w.P.setPaused(e);t.success||ex.warn("Failed to toggle pause",t.error),R()},L=async(e,t)=>{let n=await w.P.update(e.id,{enabled:t});if(!n.success){let e=n.error||"Failed to update the planned execution.";ex.warn("Failed to toggle enabled",e),P(e)}R()},D=async()=>{E&&(await w.P.delete(E.id),T(null),R())};return(0,l.jsxs)(r.default,{sx:{p:3,maxWidth:1100,mx:"auto",width:"100%"},children:[(0,l.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:2,mb:1},children:[(0,l.jsx)(i.default,{variant:"h5",children:"Planned Executions"}),(0,l.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,l.jsx)(v.A,{title:"Refresh",children:(0,l.jsx)(j.A,{onClick:()=>void R(),children:(0,l.jsx)(m.A,{})})}),(0,l.jsx)(o.A,{control:(0,l.jsx)(s.A,{checked:!n,onChange:e=>F(!e.target.checked)}),label:n?"Paused":"Active"}),(0,l.jsx)(c.A,{variant:"contained",startIcon:(0,l.jsx)(f.A,{}),onClick:()=>{W(null),S(!0)},"data-tour":"add-execution",children:"Add"})]})]}),(0,l.jsxs)(i.default,{variant:"body2",color:"text.secondary",sx:{mb:3},children:["Run your flows automatically — on a schedule or when something happens — without opening the chat. FLUJO must be running for triggers to fire. The Active/Paused switch above gates ",(0,l.jsx)("em",{children:"all"})," triggers globally."]}),n&&e.length>0&&(0,l.jsx)(d.A,{severity:"info",sx:{mb:3},children:"The scheduler is paused — no triggers will fire, so every execution below shows “Paused (global)”. Switch it to Active (top right) to arm them."}),b&&0===e.length&&(0,l.jsxs)(r.default,{sx:{border:1,borderColor:"divider",borderRadius:2,borderStyle:"dashed",p:6,textAlign:"center"},children:[(0,l.jsx)(i.default,{variant:"h6",sx:{mb:1},children:"Nothing planned yet"}),(0,l.jsx)(i.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Create your first planned execution to run a flow on a schedule."}),(0,l.jsx)(c.A,{variant:"contained",startIcon:(0,l.jsx)(f.A,{}),onClick:()=>{W(null),S(!0)},children:"New planned execution"})]}),(0,l.jsx)(r.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:e.map(e=>(0,l.jsx)(z,{entry:e,onEdit:()=>{W(e.execution),S(!0)},onDelete:()=>T(e.execution),onToggleEnabled:t=>L(e.execution,t),onRanNow:()=>void R(),paused:n},e.execution.id))}),(0,l.jsx)(eh,{open:k,execution:C,onClose:()=>S(!1),onSaved:()=>void R()}),(0,l.jsx)(u.A,{open:null!==I,autoHideDuration:6e3,onClose:()=>P(null),anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,l.jsx)(d.A,{severity:"error",onClose:()=>P(null),sx:{width:"100%"},children:I})}),(0,l.jsxs)(h.A,{open:null!==E,onClose:()=>T(null),children:[(0,l.jsxs)(x.A,{children:["Delete “",null==E?void 0:E.name,"”?"]}),(0,l.jsx)(g.A,{children:(0,l.jsx)(i.default,{variant:"body2",color:"text.secondary",children:"This removes the planned execution and its run history. The flow itself is not affected."})}),(0,l.jsxs)(p.A,{children:[(0,l.jsx)(c.A,{onClick:()=>T(null),children:"Cancel"}),(0,l.jsx)(c.A,{color:"error",variant:"contained",onClick:D,children:"Delete"})]})]})]})},ep=(0,y.h)("app/executions/page");function ef(){return ep.debug("Rendering ExecutionsPage"),(0,l.jsx)(r.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,l.jsx)(eg,{})})}},60187:(e,t,n)=>{Promise.resolve().then(n.bind(n,57938))},75870:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var l=n(95155),r=n(12115),a=n(94049),i=n(25635),o=n(4474),s=n(91871),c=n(56900),d=n(90057),u=n(96362),h=n(9226),x=n(68503);let g=e=>{let{selectedFlowId:t,onSelectFlow:n,disabled:g=!1,hideLabel:p=!1}=e,[f,m]=(0,r.useState)([]),[v,j]=(0,r.useState)(!0),[w,y]=(0,r.useState)(null),[b,A]=(0,r.useState)(!1);(0,r.useEffect)(()=>{(async()=>{j(!0),y(null);try{let e=await d.g.loadFlows();m(e)}catch(e){console.error("Error loading flows:",e),y("Failed to load flows")}finally{j(!1)}})()},[]);let k=e=>{n(e),A(!1)},S=async e=>{let t=f.find(t=>t.id===e);if(!t)return;let n=!t.favorite,l={...t,favorite:n||void 0};try{(await d.g.updateFlow(l)).success&&m(t=>t.map(t=>t.id===e?l:t))}catch(e){console.error("Error toggling flow favorite:",e)}},C=(0,x.E)("flows",f),W=e=>({key:e.id,content:(e=>(0,l.jsx)(h.A,{flow:e,selected:e.id===t,onSelect:k,onToggleFavorite:S,pickerMode:!0}))(e)}),E=C.items.map(W),T=C.groups?C.groups.map(e=>({...e,items:e.items.map(W)})):null,I=(()=>{if(!t)return"";let e=f.find(e=>e.id===t);return e?e.name:""})();return(0,l.jsxs)(a.default,{children:[!p&&(0,l.jsx)(i.default,{variant:"subtitle1",gutterBottom:!0,children:"Select Flow"}),v?(0,l.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(o.default,{size:20}),(0,l.jsx)(i.default,{variant:"body2",color:"text.secondary",children:"Loading flows..."})]}):w?(0,l.jsx)(i.default,{color:"error",variant:"body2",children:w}):0===f.length?(0,l.jsx)(i.default,{variant:"body2",color:"text.secondary",children:"No flows available. Create some flows in the Flow Builder first."}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.A,{variant:"outlined",startIcon:(0,l.jsx)(c.A,{}),onClick:()=>A(!0),disabled:g,sx:{textTransform:"none",maxWidth:"100%"},children:(0,l.jsx)(a.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t&&I||"Select a flow"})}),(0,l.jsx)(i.default,{variant:"caption",color:"text.secondary",display:"block",sx:{mt:.5},children:t?'Using "'.concat(I,'" flow for this conversation'):"Select a flow to use for this conversation"}),(0,l.jsx)(u.A,{open:b,onClose:()=>A(!1),title:"Select a flow",description:"Pick the flow this conversation will run.",skeleton:(0,l.jsx)(h.o,{}),emptyMessage:"No flows available. Create some flows in the Flow Builder first.",searchable:!0,searchPlaceholder:"Search flows…",searchTerm:C.searchTerm,onSearchChange:C.setSearchTerm,items:E,groups:T,collapsedKeys:C.collapsedKeys,onToggleGroup:C.toggleGroup})]})]})}}},e=>{e.O(0,[3862,2678,4754,9244,3392,1871,7111,2003,9562,488,3272,8470,3077,9581,3659,8598,6404,8863,5418,8054,289,5661,812,4740,8404,435,8441,1255,7358],()=>e(e.s=60187)),_N_E=e.O()}]);