flujo-ai 3.44.0 → 3.45.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 (386) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +7 -7
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/react-loadable-manifest.json +1 -1
  5. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/.next/server/app/_global-error.html +1 -1
  7. package/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/_not-found.html +1 -1
  16. package/.next/server/app/_not-found.rsc +2 -2
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  23. package/.next/server/app/api/approvals/[id]/route.js +1 -1
  24. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  25. package/.next/server/app/api/approvals/route.js +1 -1
  26. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  27. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  28. package/.next/server/app/api/bugs/enhance/route.js +1 -1
  29. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  30. package/.next/server/app/api/encryption/secure/route.js +1 -1
  31. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  32. package/.next/server/app/api/flow/[id]/convert-process-to-subflow/route.js.nft.json +1 -1
  33. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  34. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
  35. package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
  36. package/.next/server/app/api/flow/assist/route.js +1 -1
  37. package/.next/server/app/api/flow/assist/route.js.nft.json +1 -1
  38. package/.next/server/app/api/flow/compile/route.js +1 -1
  39. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  40. package/.next/server/app/api/flow/generate/route.js +1 -1
  41. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  42. package/.next/server/app/api/flow/generate/visual/route.js +2 -2
  43. package/.next/server/app/api/flow/generate/visual/route.js.nft.json +1 -1
  44. package/.next/server/app/api/flow/generator/route.js +1 -1
  45. package/.next/server/app/api/flow/generator/route.js.nft.json +1 -1
  46. package/.next/server/app/api/flow/improve/route.js +1 -1
  47. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  48. package/.next/server/app/api/flow/prompt-renderer/route.js +1 -1
  49. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  50. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  51. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  52. package/.next/server/app/api/flow/repair/route.js +1 -1
  53. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  54. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  55. package/.next/server/app/api/init/route.js +1 -1
  56. package/.next/server/app/api/init/route.js.nft.json +1 -1
  57. package/.next/server/app/api/mcp/app-consent/route.js +1 -1
  58. package/.next/server/app/api/mcp/app-consent/route.js.nft.json +1 -1
  59. package/.next/server/app/api/mcp/app-sandbox/route.js +2 -2
  60. package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -1
  61. package/.next/server/app/api/mcp/assistant/route.js +1 -1
  62. package/.next/server/app/api/mcp/assistant/route.js.nft.json +1 -1
  63. package/.next/server/app/api/mcp/cancel/route.js +1 -1
  64. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  65. package/.next/server/app/api/mcp/flujo/authoring/route.js +1 -1
  66. package/.next/server/app/api/mcp/flujo/authoring/route.js.nft.json +1 -1
  67. package/.next/server/app/api/mcp/flujo/automation/route.js +1 -1
  68. package/.next/server/app/api/mcp/flujo/automation/route.js.nft.json +1 -1
  69. package/.next/server/app/api/mcp/flujo/flows/route.js +1 -1
  70. package/.next/server/app/api/mcp/flujo/flows/route.js.nft.json +1 -1
  71. package/.next/server/app/api/mcp/flujo/resources/read/route.js +1 -1
  72. package/.next/server/app/api/mcp/flujo/resources/read/route.js.nft.json +1 -1
  73. package/.next/server/app/api/mcp/flujo/resources/route.js +1 -1
  74. package/.next/server/app/api/mcp/flujo/resources/route.js.nft.json +1 -1
  75. package/.next/server/app/api/mcp/flujo/servers/route.js +1 -1
  76. package/.next/server/app/api/mcp/flujo/servers/route.js.nft.json +1 -1
  77. package/.next/server/app/api/mcp/flujo/state/route.js +1 -1
  78. package/.next/server/app/api/mcp/flujo/state/route.js.nft.json +1 -1
  79. package/.next/server/app/api/mcp/flujo/tools/route.js +1 -1
  80. package/.next/server/app/api/mcp/flujo/tools/route.js.nft.json +1 -1
  81. package/.next/server/app/api/mcp/oauth-capability/route.js +1 -1
  82. package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
  83. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  84. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  85. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  86. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  87. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  88. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  89. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  90. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  91. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  92. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  93. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  94. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  95. package/.next/server/app/api/mcp/servers/[name]/stdio-oauth/confirm/route.js +1 -1
  96. package/.next/server/app/api/mcp/servers/[name]/stdio-oauth/confirm/route.js.nft.json +1 -1
  97. package/.next/server/app/api/mcp/servers/[name]/stdio-oauth/start/route.js +1 -1
  98. package/.next/server/app/api/mcp/servers/[name]/stdio-oauth/start/route.js.nft.json +1 -1
  99. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  100. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  101. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  102. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  103. package/.next/server/app/api/mcp/servers/route.js +1 -1
  104. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  105. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  106. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  107. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  108. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  109. package/.next/server/app/api/mcp-registry/route.js +1 -1
  110. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  111. package/.next/server/app/api/model/[id]/route.js +1 -1
  112. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  113. package/.next/server/app/api/model/provider/route.js +1 -1
  114. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  115. package/.next/server/app/api/model/route.js +1 -1
  116. package/.next/server/app/api/model/route.js.nft.json +1 -1
  117. package/.next/server/app/api/model/test/route.js +1 -1
  118. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  119. package/.next/server/app/api/oauth/reset/route.js +1 -1
  120. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  121. package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
  122. package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
  123. package/.next/server/app/api/packages/install/route.js +1 -1
  124. package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
  125. package/.next/server/app/api/packages/install/status/route.js +1 -1
  126. package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
  127. package/.next/server/app/api/packages/installed/route.js +1 -1
  128. package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
  129. package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
  130. package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -1
  131. package/.next/server/app/api/packages/uninstall/route.js +1 -1
  132. package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
  133. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  134. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  135. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  136. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  137. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  138. package/.next/server/app/api/planned-executions/route.js +1 -1
  139. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  140. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  141. package/.next/server/app/api/runs/active/route.js +1 -1
  142. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  143. package/.next/server/app/api/telemetry/daily-active/route.js +1 -1
  144. package/.next/server/app/api/waves/route.js +1 -1
  145. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  146. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  147. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  148. package/.next/server/app/automation/triggers/page_client-reference-manifest.js +1 -1
  149. package/.next/server/app/automation/triggers.html +1 -1
  150. package/.next/server/app/automation/triggers.rsc +3 -3
  151. package/.next/server/app/automation/triggers.segments/_full.segment.rsc +3 -3
  152. package/.next/server/app/automation/triggers.segments/_head.segment.rsc +1 -1
  153. package/.next/server/app/automation/triggers.segments/_index.segment.rsc +2 -2
  154. package/.next/server/app/automation/triggers.segments/_tree.segment.rsc +1 -1
  155. package/.next/server/app/automation/triggers.segments/automation/triggers/__PAGE__.segment.rsc +2 -2
  156. package/.next/server/app/automation/triggers.segments/automation/triggers.segment.rsc +1 -1
  157. package/.next/server/app/automation/triggers.segments/automation.segment.rsc +1 -1
  158. package/.next/server/app/automation/waves/page_client-reference-manifest.js +1 -1
  159. package/.next/server/app/automation/waves.html +1 -1
  160. package/.next/server/app/automation/waves.rsc +3 -3
  161. package/.next/server/app/automation/waves.segments/_full.segment.rsc +3 -3
  162. package/.next/server/app/automation/waves.segments/_head.segment.rsc +1 -1
  163. package/.next/server/app/automation/waves.segments/_index.segment.rsc +2 -2
  164. package/.next/server/app/automation/waves.segments/_tree.segment.rsc +1 -1
  165. package/.next/server/app/automation/waves.segments/automation/waves/__PAGE__.segment.rsc +2 -2
  166. package/.next/server/app/automation/waves.segments/automation/waves.segment.rsc +1 -1
  167. package/.next/server/app/automation/waves.segments/automation.segment.rsc +1 -1
  168. package/.next/server/app/chain-chat/page_client-reference-manifest.js +1 -1
  169. package/.next/server/app/chain-chat.html +1 -1
  170. package/.next/server/app/chain-chat.rsc +3 -3
  171. package/.next/server/app/chain-chat.segments/_full.segment.rsc +3 -3
  172. package/.next/server/app/chain-chat.segments/_head.segment.rsc +1 -1
  173. package/.next/server/app/chain-chat.segments/_index.segment.rsc +2 -2
  174. package/.next/server/app/chain-chat.segments/_tree.segment.rsc +1 -1
  175. package/.next/server/app/chain-chat.segments/chain-chat/__PAGE__.segment.rsc +2 -2
  176. package/.next/server/app/chain-chat.segments/chain-chat.segment.rsc +1 -1
  177. package/.next/server/app/chat/page.js +4 -4
  178. package/.next/server/app/chat/page.js.nft.json +1 -1
  179. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  180. package/.next/server/app/chat.html +1 -1
  181. package/.next/server/app/chat.rsc +3 -3
  182. package/.next/server/app/chat.segments/_full.segment.rsc +3 -3
  183. package/.next/server/app/chat.segments/_head.segment.rsc +1 -1
  184. package/.next/server/app/chat.segments/_index.segment.rsc +2 -2
  185. package/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
  186. package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +2 -2
  187. package/.next/server/app/chat.segments/chat.segment.rsc +1 -1
  188. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  189. package/.next/server/app/docs.html +1 -1
  190. package/.next/server/app/docs.rsc +3 -3
  191. package/.next/server/app/docs.segments/_full.segment.rsc +3 -3
  192. package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  193. package/.next/server/app/docs.segments/_index.segment.rsc +2 -2
  194. package/.next/server/app/docs.segments/_tree.segment.rsc +1 -1
  195. package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +2 -2
  196. package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  197. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  198. package/.next/server/app/executions.html +1 -1
  199. package/.next/server/app/executions.rsc +3 -3
  200. package/.next/server/app/executions.segments/_full.segment.rsc +3 -3
  201. package/.next/server/app/executions.segments/_head.segment.rsc +1 -1
  202. package/.next/server/app/executions.segments/_index.segment.rsc +2 -2
  203. package/.next/server/app/executions.segments/_tree.segment.rsc +1 -1
  204. package/.next/server/app/executions.segments/executions/__PAGE__.segment.rsc +2 -2
  205. package/.next/server/app/executions.segments/executions.segment.rsc +1 -1
  206. package/.next/server/app/flows/page.js +5 -5
  207. package/.next/server/app/flows/page.js.nft.json +1 -1
  208. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  209. package/.next/server/app/flows.html +1 -1
  210. package/.next/server/app/flows.rsc +3 -3
  211. package/.next/server/app/flows.segments/_full.segment.rsc +3 -3
  212. package/.next/server/app/flows.segments/_head.segment.rsc +1 -1
  213. package/.next/server/app/flows.segments/_index.segment.rsc +2 -2
  214. package/.next/server/app/flows.segments/_tree.segment.rsc +1 -1
  215. package/.next/server/app/flows.segments/flows/__PAGE__.segment.rsc +2 -2
  216. package/.next/server/app/flows.segments/flows.segment.rsc +1 -1
  217. package/.next/server/app/index.html +1 -1
  218. package/.next/server/app/index.rsc +3 -3
  219. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  220. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  221. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  222. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  223. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  224. package/.next/server/app/mcp/page.js +1 -1
  225. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  226. package/.next/server/app/mcp-flows/route.js +1 -1
  227. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  228. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  229. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  230. package/.next/server/app/mcp.html +1 -1
  231. package/.next/server/app/mcp.rsc +3 -3
  232. package/.next/server/app/mcp.segments/_full.segment.rsc +3 -3
  233. package/.next/server/app/mcp.segments/_head.segment.rsc +1 -1
  234. package/.next/server/app/mcp.segments/_index.segment.rsc +2 -2
  235. package/.next/server/app/mcp.segments/_tree.segment.rsc +1 -1
  236. package/.next/server/app/mcp.segments/mcp/__PAGE__.segment.rsc +2 -2
  237. package/.next/server/app/mcp.segments/mcp.segment.rsc +1 -1
  238. package/.next/server/app/meetings/page_client-reference-manifest.js +1 -1
  239. package/.next/server/app/meetings.html +1 -1
  240. package/.next/server/app/meetings.rsc +3 -3
  241. package/.next/server/app/meetings.segments/_full.segment.rsc +3 -3
  242. package/.next/server/app/meetings.segments/_head.segment.rsc +1 -1
  243. package/.next/server/app/meetings.segments/_index.segment.rsc +2 -2
  244. package/.next/server/app/meetings.segments/_tree.segment.rsc +1 -1
  245. package/.next/server/app/meetings.segments/meetings/__PAGE__.segment.rsc +2 -2
  246. package/.next/server/app/meetings.segments/meetings.segment.rsc +1 -1
  247. package/.next/server/app/models/page.js +3 -3
  248. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  249. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  250. package/.next/server/app/packages.html +1 -1
  251. package/.next/server/app/packages.rsc +3 -3
  252. package/.next/server/app/packages.segments/_full.segment.rsc +3 -3
  253. package/.next/server/app/packages.segments/_head.segment.rsc +1 -1
  254. package/.next/server/app/packages.segments/_index.segment.rsc +2 -2
  255. package/.next/server/app/packages.segments/_tree.segment.rsc +1 -1
  256. package/.next/server/app/packages.segments/packages/__PAGE__.segment.rsc +2 -2
  257. package/.next/server/app/packages.segments/packages.segment.rsc +1 -1
  258. package/.next/server/app/page_client-reference-manifest.js +1 -1
  259. package/.next/server/app/settings/page.js +2 -2
  260. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  261. package/.next/server/app/settings.html +1 -1
  262. package/.next/server/app/settings.rsc +3 -3
  263. package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  264. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  265. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  266. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  267. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  268. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  269. package/.next/server/app/statistics/page_client-reference-manifest.js +1 -1
  270. package/.next/server/app/statistics.html +1 -1
  271. package/.next/server/app/statistics.rsc +3 -3
  272. package/.next/server/app/statistics.segments/_full.segment.rsc +3 -3
  273. package/.next/server/app/statistics.segments/_head.segment.rsc +1 -1
  274. package/.next/server/app/statistics.segments/_index.segment.rsc +2 -2
  275. package/.next/server/app/statistics.segments/_tree.segment.rsc +1 -1
  276. package/.next/server/app/statistics.segments/statistics/__PAGE__.segment.rsc +2 -2
  277. package/.next/server/app/statistics.segments/statistics.segment.rsc +1 -1
  278. package/.next/server/app/v1/chat/completions/route.js +1 -1
  279. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  280. package/.next/server/app/v1/chat/conversation-chains/route.js +1 -1
  281. package/.next/server/app/v1/chat/conversation-chains/route.js.nft.json +1 -1
  282. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +1 -1
  283. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  284. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +1 -1
  285. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  286. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/attach/route.js +1 -1
  287. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/attach/route.js.nft.json +1 -1
  288. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  289. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  290. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/state/route.js +1 -1
  291. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/state/route.js.nft.json +1 -1
  292. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  293. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  294. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +1 -1
  295. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  296. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +1 -1
  297. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  298. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +1 -1
  299. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -1
  300. package/.next/server/app/v1/chat/conversations/[conversationId]/recovery/route.js +1 -1
  301. package/.next/server/app/v1/chat/conversations/[conversationId]/recovery/route.js.nft.json +1 -1
  302. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  303. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  304. package/.next/server/app/v1/chat/conversations/[conversationId]/revert/route.js +1 -1
  305. package/.next/server/app/v1/chat/conversations/[conversationId]/revert/route.js.nft.json +1 -1
  306. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +1 -1
  307. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  308. package/.next/server/app/v1/chat/conversations/route.js +1 -1
  309. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  310. package/.next/server/app/v1/chat/events/route.js +1 -1
  311. package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
  312. package/.next/server/app/v1/meetings/[meetingId]/cancel/route.js +1 -1
  313. package/.next/server/app/v1/meetings/[meetingId]/cancel/route.js.nft.json +1 -1
  314. package/.next/server/app/v1/meetings/[meetingId]/route.js +1 -1
  315. package/.next/server/app/v1/meetings/[meetingId]/route.js.nft.json +1 -1
  316. package/.next/server/app/v1/meetings/[meetingId]/start/route.js +1 -1
  317. package/.next/server/app/v1/meetings/[meetingId]/start/route.js.nft.json +1 -1
  318. package/.next/server/app/v1/meetings/route.js +1 -1
  319. package/.next/server/app/v1/meetings/route.js.nft.json +1 -1
  320. package/.next/server/app/v1/models/route.js +1 -1
  321. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  322. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  323. package/.next/server/app/waves.html +1 -1
  324. package/.next/server/app/waves.rsc +3 -3
  325. package/.next/server/app/waves.segments/_full.segment.rsc +3 -3
  326. package/.next/server/app/waves.segments/_head.segment.rsc +1 -1
  327. package/.next/server/app/waves.segments/_index.segment.rsc +2 -2
  328. package/.next/server/app/waves.segments/_tree.segment.rsc +1 -1
  329. package/.next/server/app/waves.segments/waves/__PAGE__.segment.rsc +2 -2
  330. package/.next/server/app/waves.segments/waves.segment.rsc +1 -1
  331. package/.next/server/app-paths-manifest.json +7 -7
  332. package/.next/server/chunks/1114.js +1 -1
  333. package/.next/server/chunks/{4271.js → 2126.js} +13 -13
  334. package/.next/server/chunks/2425.js +1 -1
  335. package/.next/server/chunks/244.js +1 -1
  336. package/.next/server/chunks/2728.js +1 -1
  337. package/.next/server/chunks/2970.js +1 -1
  338. package/.next/server/chunks/3133.js +2 -2
  339. package/.next/server/chunks/4558.js +1 -1
  340. package/.next/server/chunks/4779.js +1 -0
  341. package/.next/server/chunks/531.js +1 -1
  342. package/.next/server/chunks/5354.js +1 -1
  343. package/.next/server/chunks/5831.js +1 -1
  344. package/.next/server/chunks/609.js +1 -1
  345. package/.next/server/chunks/75.js +1 -1
  346. package/.next/server/chunks/7513.js +1 -1
  347. package/.next/server/chunks/7754.js +60 -60
  348. package/.next/server/chunks/811.js +1 -1
  349. package/.next/server/chunks/8542.js +1 -1
  350. package/.next/server/chunks/87.js +1 -1
  351. package/.next/server/chunks/8767.js +1 -1
  352. package/.next/server/middleware-build-manifest.js +1 -1
  353. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  354. package/.next/server/pages/404.html +1 -1
  355. package/.next/server/pages/500.html +1 -1
  356. package/.next/server/server-reference-manifest.js +1 -1
  357. package/.next/server/server-reference-manifest.json +1 -1
  358. package/.next/static/chunks/{8851-1ea4bbf9945c7b34.js → 2375-af6ebf80d9cb9975.js} +2 -2
  359. package/.next/static/chunks/{4742-e151939b0ae7ba74.js → 3841-0e4a10c621cac0e6.js} +1 -1
  360. package/.next/static/chunks/{5147-d239d0147237bb58.js → 5147-ec07dd70c20ec0b5.js} +1 -1
  361. package/.next/static/chunks/5212-898f308c44a32c22.js +2 -0
  362. package/.next/static/chunks/7401-cffc7c5fa1f5f06e.js +10 -0
  363. package/.next/static/chunks/app/chat/page-5b6d507b576cea9c.js +7 -0
  364. package/.next/static/chunks/app/flows/page-9b16d049d43ac817.js +9 -0
  365. package/.next/static/chunks/app/mcp/{page-70535f4bce57edbe.js → page-e4c284466c17fe32.js} +1 -1
  366. package/.next/static/chunks/app/models/page-2891efa80c126790.js +11 -0
  367. package/.next/static/chunks/{webpack-7efb2620f630c7d5.js → webpack-d9f1e56ee69d988f.js} +1 -1
  368. package/.next/trace +104 -104
  369. package/.next/trace-build +1 -1
  370. package/README.md +6 -3
  371. package/mcp-servers/bash/package.json +1 -1
  372. package/mcp-servers/browser/dist/resources.js +29 -3
  373. package/mcp-servers/browser/dist/resources.js.map +1 -1
  374. package/mcp-servers/browser/package.json +1 -1
  375. package/mcp-servers/filesystem/dist/resources.js +1 -1
  376. package/mcp-servers/filesystem/package.json +1 -1
  377. package/mcp-servers/flujo/package.json +1 -1
  378. package/package.json +5 -5
  379. package/.next/server/chunks/387.js +0 -1
  380. package/.next/static/chunks/5212-fa397222d5251b43.js +0 -2
  381. package/.next/static/chunks/7401-b0f0d4a7b2597302.js +0 -10
  382. package/.next/static/chunks/app/chat/page-3db891cc7ba29084.js +0 -7
  383. package/.next/static/chunks/app/flows/page-6b6748bc74604103.js +0 -9
  384. package/.next/static/chunks/app/models/page-e3430501cd05ff1f.js +0 -11
  385. /package/.next/static/{yjYCceqlIl4V9blcEb5AK → 4x_Vc1-WtJtqgqFZnCq3D}/_buildManifest.js +0 -0
  386. /package/.next/static/{yjYCceqlIl4V9blcEb5AK → 4x_Vc1-WtJtqgqFZnCq3D}/_ssgManifest.js +0 -0
@@ -1,10 +1,10 @@
1
- (()=>{var a={};a.id=3080,a.ids=[2642,3080],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1658:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e4});var d=c(48249),e=c(67484),f=c.n(e),g=c(19099),h=c(33480),i=c(29184),j=c(55784),k=c(77217),l=c(40006),m=c(53800),n=c(88458),o=c(13288),p=c(76108),q=c(54269),r=c(38592),s=c(4146),t=c(95816),u=c(20437),v=c(39266),w=c(32586);let x=(0,w.A)((0,d.jsx)("path",{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z"}),"ArrowBack");var y=c(36485);let z=(0,w.A)((0,d.jsx)("path",{d:"m19 9 1.25-2.75L23 5l-2.75-1.25L19 1l-1.25 2.75L15 5l2.75 1.25zm-7.5.5L9 4 6.5 9.5 1 12l5.5 2.5L9 20l2.5-5.5L17 12zM19 15l-1.25 2.75L15 19l2.75 1.25L19 23l1.25-2.75L23 19l-2.75-1.25z"}),"AutoAwesome");var A=c(45788),B=c(53089),C=c(72139),D=c(54882),E=c(17747),F=c(95747),G=c(52454),H=c(58247),I=c(44244),J=c(39179),K=c(74453),L=c(75296),M=c(6680),N=c(56024),O=c(74948),P=c(2642),Q=c(92646),R=c(41675),S=c(46899),T=c(12316);let U={start:{width:210,height:84},process:{width:210,height:104},finish:{width:210,height:84},mcp:{width:210,height:148},subflow:{width:210,height:104},resource:{width:210,height:120},signal:{width:210,height:92},trigger:{width:210,height:84},static:{width:210,height:104}},V={width:210,height:104};function W(a){let b=a.measured,c=U[a.type??""]??V;return{width:b?.width??a.width??c.width,height:b?.height??a.height??c.height}}function X(a,b){return a.x<b.x+b.w&&a.x+a.w>b.x&&a.y<b.y+b.h&&a.y+a.h>b.y}function Y(a){return a.data?.edgeType}function Z(a){return"mcp"===Y(a)}function $(a){return"resource"===Y(a)}function _(a,b,c){let d=new Set(a.map(a=>a.id)),e=new Map;for(let a of b){let b,f;if(!c(a))continue;let g=d.has(a.source),h=d.has(a.target);g&&!h?(b=a.source,f=a.target):h&&!g&&(b=a.target,f=a.source),b&&f&&!e.has(b)&&e.set(b,f)}return e}function aa(a){return 8*Math.round(a/8)}function ab(a,b,c={}){let{padding:d=24,maxPasses:e=60,maxStepPerPass:f=200,snapToGrid:g=!0,preserveCentroid:h=!0}=c;if(a.length<=1)return a;let i=a.filter(a=>"mcp"===a.type),j=a.filter(a=>"resource"===a.type),k=new Map([..._(i,b,Z),..._(j,b,$)]),l=a.filter(a=>!k.has(a.id)).map(a=>a.id),m=new Map;for(let[a,b]of k){let c=m.get(b);c?c.push(a):m.set(b,[a])}let n=new Map,o=new Map;for(let b of a)n.set(b.id,b.position.x),o.set(b.id,b.position.y);let p=new Map;for(let b of a)p.set(b.id,{x:b.position.x,y:b.position.y});let q=new Map;for(let b of a)q.set(b.id,W(b));let r=a=>{let b=p.get(a),{width:c,height:e}=q.get(a);return{x:b.x-d,y:b.y-d,w:c+2*d,h:e+2*d}};for(let[a,b]of m)!function(a,b,c,d,e){if(0===b.length)return;let f=[a,...b],g=a=>{let b=c.get(a),{width:f,height:g}=d.get(a);return{x:b.x-e,y:b.y-e,w:f+2*e,h:g+2*e}};if(!(()=>{for(let a=0;a<f.length;a++)for(let b=a+1;b<f.length;b++)if(X(g(f[a]),g(f[b])))return!0;return!1})())return;let h=c.get(a),i=d.get(a),j={left:[],right:[]};for(let a of b)(c.get(a).x-h.x<0?j.left:j.right).push(a);for(let a of["left","right"]){let b=j[a];if(0===b.length)continue;b.sort((a,b)=>{let d=c.get(a),e=c.get(b);return d.y-e.y||d.x-e.x||a.localeCompare(b)});let f="right"===a?1:-1,g=h.y;for(let a of b){let{width:b,height:j}=d.get(a),k=i.width/2+b/2+2*e+16;c.set(a,{x:h.x+f*k,y:g}),g+=j+2*e+16}}}(a,b,p,q,d);let s=new Map;for(let[a,b]of k){let c=p.get(b),d=p.get(a);s.set(a,{x:d.x-c.x,y:d.y-c.y})}let t=a=>{let b=r(a);for(let c of m.get(a)??[])b=function(a,b){let c=Math.min(a.x,b.x),d=Math.min(a.y,b.y);return{x:c,y:d,w:Math.max(a.x+a.w,b.x+b.w)-c,h:Math.max(a.y+a.h,b.y+b.h)-d}}(b,r(c));return b},u=new Set,v=(a,b,c)=>{if(0===b&&0===c)return;let d=p.get(a);for(let e of(p.set(a,{x:d.x+b,y:d.y+c}),u.add(a),m.get(a)??[])){let a=p.get(e);p.set(e,{x:a.x+b,y:a.y+c})}},w=[...l].sort((a,b)=>{let c=p.get(a),d=p.get(b);return c.y-d.y||c.x-d.x||a.localeCompare(b)});for(let a=0;a<e;a++){let a=!1;for(let b=0;b<w.length;b++)for(let c=b+1;c<w.length;c++){let d=w[b],e=w[c],g=function(a,b,c){if(!X(a,b))return null;let d=Math.min(a.x+a.w,b.x+b.w)-Math.max(a.x,b.x),e=Math.min(a.y+a.h,b.y+b.h)-Math.max(a.y,b.y),f=a.x+a.w/2,g=b.x+b.w/2,h=a.y+a.h/2,i=b.y+b.h/2,j=0,k=0;return d<=e?j=(f<=g?-1:1)*Math.min(d/2+1,c):k=(h<=i?-1:1)*Math.min(e/2+1,c),{dx:j,dy:k}}(t(d),t(e),f);g&&(v(d,g.dx,g.dy),v(e,-g.dx,-g.dy),a=!0)}if(!a)break}if(h){let b=0,c=0;for(let d of a){let a=p.get(d.id);b+=a.x-n.get(d.id),c+=a.y-o.get(d.id)}let d=b/a.length,e=c/a.length;if(0!==d||0!==e)for(let b of a){let a=p.get(b.id);p.set(b.id,{x:a.x-d,y:a.y-e})}}if(g)for(let a of u){if(k.has(a))continue;let b=p.get(a);p.set(a,{x:aa(b.x),y:aa(b.y)})}for(let[a,b]of k){let c=p.get(b),d=s.get(a);p.set(a,{x:c.x+d.x,y:c.y+d.y})}return a.map(a=>{let b=p.get(a.id);return b.x===a.position.x&&b.y===a.position.y?a:{...a,position:b}})}function ac(a,b,c={}){let{direction:d="TB",rankSep:e=120,nodeSep:f=80,mcpOffsetX:g=350,mcpStackY:h=120}=c,i=a.filter(a=>"mcp"===a.type),j=a.filter(a=>"resource"===a.type),k=a.filter(a=>"mcp"!==a.type&&"resource"!==a.type);if(k.length<=1)return a;let l=new Set(k.map(a=>a.id)),m=new Map;for(let a of(k.forEach(a=>m.set(a.id,new Set)),b))!(Z(a)||$(a))&&a.source!==a.target&&l.has(a.source)&&l.has(a.target)&&m.get(a.source).add(a.target);let n=new Map;k.forEach(a=>n.set(a.id,0));let o=k.length;for(let a=0;a<o;a++){let a=!1;for(let[b,c]of m){let d=n.get(b)+1;for(let b of c)n.get(b)<d&&(n.set(b,d),a=!0)}if(!a)break}let p=(a,c)=>{let d=_(a,b,c);for(let[a,b]of[...d])l.has(b)||d.delete(a);return d},q=p(i,Z),r=p(j,$),s=(a,b)=>{let c=new Map;for(let d of a){let a=b.get(d.id);if(!a)continue;let e=c.get(a);e?e.push(d):c.set(a,[d])}return c},t=s(i,q),u=s(j,r),v=a=>{let b=t.get(a.id)??[],c=u.get(a.id)??[],d=a=>0===a.length?0:a.reduce((a,b)=>a+W(b).height,0)+(a.length-1)*h;return{rightReach:0===b.length?0:g+(0===b.length?0:Math.max(...b.map(a=>W(a).width))),leftReach:0===c.length?0:g,stackHeight:Math.max(d(b),d(c))}},w=new Map;for(let a of k){let b=n.get(a.id),c=w.get(b);c?c.push(a):w.set(b,[a])}let x=[...w.keys()].sort((a,b)=>a-b),y=new Map,z=0;for(let a of x){let b=[...w.get(a)].sort((a,b)=>a.position.x-b.position.x||a.position.y-b.position.y||a.id.localeCompare(b.id)),c=0,g=0;for(let a of b){let{width:b,height:e}=W(a),h=v(a);"TB"===d?(c+=h.leftReach,y.set(a.id,{x:c,y:z}),c+=Math.max(b,h.rightReach)+f,g=Math.max(g,e,h.stackHeight)):(c+=h.leftReach,y.set(a.id,{x:z,y:c}),c+=Math.max(e,h.rightReach)+f,g=Math.max(g,b,h.stackHeight))}z+=g+e}let A=(a,b)=>{for(let[c,d]of a){let a=y.get(c);if(!a)continue;let e=a.y;for(let c of d)y.set(c.id,{x:a.x+b*g,y:e}),e+=W(c).height+h}};A(t,1),A(u,-1);let B=[...y.values()].map(a=>a.x),C=B.length?Math.max(...B)+g:0,D=0,E=a=>{for(let b of a)y.has(b.id)||(y.set(b.id,{x:C,y:D}),D+=W(b).height+f)};return E(i),E(j),ab(a.map(a=>{let b=y.get(a.id);return b?{...a,position:b}:a}),b,{preserveCentroid:!1,snapToGrid:!1})}var ad=c(5853),ae=c(3362);function af(a){return{id:a.id,label:a.data.label,type:a.type||a.data.type}}var ag=c(88248);c(7062);var ah=c(85152),ai=c(64287),aj=c(91309),ak=c(48653),al=c(19433),am=c(25912),an=c(75864),ao=c(34123),ap=c(87526),aq=c(30942),ar=c(96239),as=c(92101),at=c(66319),au=c(32166);let av=a=>[{type:"process",label:a("flows.palette.process"),shortLabel:a("flows.palette.processShort"),description:a("flows.palette.processHelp")},{type:"finish",label:a("flows.palette.finish"),shortLabel:a("flows.palette.finishShort"),description:a("flows.palette.finishHelp")},{type:"mcp",label:a("flows.palette.mcp"),shortLabel:a("flows.palette.mcpShort"),description:a("flows.palette.mcpHelp")},{type:"subflow",label:a("flows.palette.subflow"),shortLabel:a("flows.palette.subflowShort"),description:a("flows.palette.subflowHelp")},{type:"resource",label:a("flows.palette.resource"),shortLabel:a("flows.palette.resourceShort"),description:a("flows.palette.resourceHelp")},{type:"signal",label:a("flows.palette.signal"),shortLabel:a("flows.palette.signalShort"),description:a("flows.palette.signalHelp")},{type:"static",label:a("flows.palette.static"),shortLabel:a("flows.palette.staticShort"),description:a("flows.palette.staticHelp")},{type:"trigger",label:a("flows.palette.trigger"),shortLabel:a("flows.palette.triggerShort"),description:a("flows.palette.triggerHelp")}],aw=(0,M.h)("components/flow/FlowBuilder/NodePalette.tsx"),ax="NodePalette",ay=(0,C.Ay)(D.A)(({theme:a})=>({padding:a.spacing(1.4),width:"218px",height:"100%",minHeight:0,flexShrink:0,display:"flex",flexDirection:"column",gap:a.spacing(1.2),overflowY:"auto",border:`1px solid ${a.palette.divider}`,borderRadius:16,backgroundColor:"dark"===a.palette.mode?"rgba(17, 22, 41, 0.86)":"rgba(255, 255, 255, 0.9)",boxShadow:"dark"===a.palette.mode?"0 16px 45px rgba(0,0,0,.22)":"0 16px 45px rgba(49,45,99,.09)",backdropFilter:"blur(18px)",[a.breakpoints.down("md")]:{width:"100%",height:"68px",padding:a.spacing(.65),gap:a.spacing(.6),alignItems:"flex-start",overflowX:"auto",overflowY:"hidden"}})),az=(0,C.Ay)(D.A,{shouldForwardProp:a=>"nodeType"!==a})(({theme:a,nodeType:b})=>({padding:a.spacing(1.25),width:"100%",minWidth:0,borderRadius:"12px",backgroundColor:(0,ah.X4)(a.palette.background.paper,.72),border:`1px solid ${a.palette.divider}`,borderLeft:`3px solid ${"process"===b?a.palette.primary.main:"finish"===b?a.palette.success.main:"subflow"===b?a.palette.warning.main:"resource"===b?at.nH:"signal"===b?at.vp:"trigger"===b?at.$Q:"static"===b?at.H0:a.palette.info.main}`,boxShadow:"none",transition:"transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease",cursor:"grab","&:hover":{transform:"translateY(-2px)",borderColor:(0,ah.X4)("process"===b?a.palette.primary.main:"finish"===b?a.palette.success.main:"subflow"===b?a.palette.warning.main:"resource"===b?at.nH:"signal"===b?at.vp:"trigger"===b?at.$Q:"static"===b?at.H0:a.palette.info.main,.55),boxShadow:`0 0 0 1px ${"process"===b?a.palette.primary.main:"finish"===b?a.palette.success.main:"subflow"===b?a.palette.warning.main:"resource"===b?at.nH:"signal"===b?at.vp:"trigger"===b?at.$Q:"static"===b?at.H0:a.palette.info.main}, 0 14px 30px rgba(0,0,0,0.12)`},"&:active":{cursor:"grabbing"},[a.breakpoints.down("md")]:{width:64,minWidth:64,minHeight:54,padding:a.spacing(.55),flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",borderLeftWidth:2}})),aA=(0,C.Ay)(i.default,{shouldForwardProp:a=>"nodeType"!==a})(({theme:a,nodeType:b})=>({display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:`1px solid ${"process"===b?a.palette.primary.light:"finish"===b?a.palette.success.light:"subflow"===b?a.palette.warning.light:"resource"===b?"#4DB6AC":"signal"===b?"#B39DDB":"trigger"===b?at.C2:"static"===b?at.IP:a.palette.info.light}`,marginBottom:a.spacing(1),paddingBottom:a.spacing(.5),[a.breakpoints.down("md")]:{width:"100%",marginBottom:0,paddingBottom:0,borderBottom:0,justifyContent:"center"}})),aB=(0,C.Ay)(i.default)(({theme:a})=>({display:"flex",alignItems:"center",gap:"8px",[a.breakpoints.down("md")]:{flexDirection:"column",justifyContent:"center",gap:2}})),aC=({authoringMode:a="guided",onAddNode:b})=>{aw.debug(`${ax}: Entering component`);let{t:c}=(0,au.s9)(),f=(0,e.useMemo)(()=>av(c),[c]),[g,h]=(0,e.useState)(""),k=(0,e.useRef)(null);(0,e.useEffect)(()=>{let a=()=>{k.current?.focus(),k.current?.select()};return document.addEventListener("openFlowQuickAdd",a),()=>document.removeEventListener("openFlowQuickAdd",a)},[]);let l=(0,e.useCallback)(a=>{aw.debug(`${ax}.addNodeFromPalette: Adding ${a} node`),b?.(a),aw.info(`${ax}.addNodeFromPalette: Requested ${a} node`)},[b]),m=(0,e.useMemo)(()=>{let b=g.trim().toLowerCase();return f.filter(b=>"advanced"===a||"process"===b.type).filter(a=>!b||`${a.label} ${a.description} ${a.shortLabel}`.toLowerCase().includes(b))},[a,f,g]);return aw.debug(`${ax}: Rendering component`),(0,d.jsxs)(ay,{elevation:2,children:[(0,d.jsxs)(i.default,{sx:{display:{xs:"none",md:"flex"},alignItems:"baseline",justifyContent:"space-between"},children:[(0,d.jsx)(j.A,{className:"node-palette-title",variant:"subtitle1",fontWeight:800,children:c("flows.palette.title")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:"A"})]}),(0,d.jsx)(u.A,{inputRef:k,value:g,onChange:a=>h(a.target.value),size:"small",placeholder:c("flows.palette.search"),inputProps:{"aria-label":c("flows.palette.searchAria")},sx:{display:{xs:"none",md:"flex"}},InputProps:{startAdornment:(0,d.jsx)(ai.A,{position:"start",children:(0,d.jsx)(ar.A,{fontSize:"small"})})}}),(0,d.jsxs)(i.default,{display:"flex",flexDirection:{xs:"row",md:"column"},gap:{xs:.75,md:1},width:{xs:"max-content",md:"100%"},children:[m.map(a=>(0,d.jsxs)(az,{nodeType:a.type,elevation:1,draggable:!0,role:"button",tabIndex:0,"aria-label":`${a.label}: ${a.description}`,title:`${a.label} \xe2€” ${a.description}`,onDragStart:b=>((a,b)=>{aw.debug(`${ax}.onDragStart: Entering method with nodeType=${b}`),a.dataTransfer.setData("application/reactflow",b),a.dataTransfer.effectAllowed="move";let d=document.createElement("div"),e=f.find(a=>a.type===b);d.textContent=e?.label??c("flows.palette.step"),Object.assign(d.style,{padding:"10px",background:"white",border:"1px solid #ccc",borderRadius:"8px"}),document.body.appendChild(d),aw.debug(`${ax}.onDragStart: Created drag preview element`);try{a.dataTransfer.setDragImage(d,75,25),aw.debug(`${ax}.onDragStart: Set drag image with offset (75, 25)`)}catch(a){aw.error(`${ax}.onDragStart: Error setting drag image:`,a)}setTimeout(()=>{document.body.removeChild(d),aw.debug(`${ax}.onDragStart: Removed drag preview element`)},0),aw.debug(`${ax}.onDragStart: Drag operation initialized`)})(b,a.type),onDragEnd:b=>{var c;return c=a.type,void aw.debug(`${ax}.onDragEnd: Drag operation ended for nodeType=${c}`)},onClick:()=>l(a.type),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),l(a.type))},children:[(0,d.jsx)(aA,{nodeType:a.type,children:(0,d.jsxs)(aB,{children:[(a=>{switch(a){case"process":return(0,d.jsx)(aq.default,{color:"primary"});case"finish":return(0,d.jsx)(ak.A,{color:"success"});case"mcp":return(0,d.jsx)(ap.A,{color:"info"});case"subflow":return(0,d.jsx)(al.A,{color:"warning"});case"resource":return(0,d.jsx)(am.A,{sx:{color:at.nH}});case"signal":return(0,d.jsx)(an.A,{sx:{color:at.vp}});case"trigger":return(0,d.jsx)(ao.A,{sx:{color:at.$Q}});case"static":return(0,d.jsx)(as.A,{sx:{color:at.H0}});default:return(0,d.jsx)(aj.A,{color:"primary"})}})(a.type),(0,d.jsx)(j.A,{variant:"caption",fontWeight:"bold",sx:{display:{xs:"-webkit-box",md:"none"},maxWidth:"100%",overflow:"hidden",WebkitBoxOrient:"vertical",WebkitLineClamp:2,overflowWrap:"anywhere",textAlign:"center",fontSize:"0.6rem",lineHeight:1},children:a.shortLabel}),(0,d.jsx)(j.A,{variant:"subtitle2",fontWeight:"bold",sx:{display:{xs:"none",md:"block"}},children:a.label})]})}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{display:{xs:"none",md:"block"}},children:a.description})]},a.type)),0===m.length&&(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{px:.5,py:1},children:c("flows.palette.noMatches")})]})]})};var aD=c(62971),aE=c(70743),aF=c(20158),aG=c(30630),aH=c(47786),aI=c(30960),aJ=c(52711);let aK=(0,w.A)((0,d.jsx)("path",{fillRule:"evenodd",d:"M20 3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2M10 17H5v-2h5zm0-4H5v-2h5zm0-4H5V7h5zm4.82 6L12 12.16l1.41-1.41 1.41 1.42L17.99 9l1.42 1.42z"}),"FactCheck");var aL=c(8800),aM=c(33335),aN=c(138),aO=c(1408);let aP=/\$\{var:([^}]+)\}/g,aQ=/^[A-Za-z_][\w-]*$/;function aR(a){return"string"==typeof a&&aQ.test(a)}let aS=/\$\{kv:([^}]+)\}/g,aT=["global","flow","folder"];function aU(a){let b=(a??"").trim(),c=b.indexOf("/");if(c>0){let a=b.slice(0,c);if(aT.includes(a))return{scope:a,key:b.slice(c+1).trim()}}return{scope:"folder",key:b}}function aV(a,b){let c=(b??"").trim();return c?"folder"===a?c:`${a}/${c}`:""}let aW=/^[A-Za-z_][\w-]*$/;function aX(a){return"string"==typeof a&&aW.test(a)}function aY(a){return a.data?.type??a.type??"unknown"}function aZ(a){return a.data?.label||a.id}function a$(a){return a.data?.edgeType==="mcp"}function a_(a){return a.data?.edgeType==="resource"}function a0(a){return a$(a)||a_(a)}function a1(a,b,c){let d=new Map(b.map(a=>[a.id,a])),e=new Set;for(let b of c){if(!a$(b))continue;let c=null;if(b.source===a?c=b.target:b.target===a&&(c=b.source),!c)continue;let f=d.get(c);if(!f||"mcp"!==aY(f))continue;let g=f.data?.properties?.boundServer;"string"==typeof g&&g&&e.add(g)}return e}function a2(a,b,c){let d=new Map(b.map(a=>[a.id,a])),e=[],f=new Set;for(let b of c){if(a0(b))continue;let c=null;b.source===a?c=b.target:b.target===a&&b.data?.bidirectional&&(c=b.source),!c||f.has(c)||(f.add(c),e.push(c))}let g=e.map(a=>d.get(a)).filter(a=>!!a).map(a=>({id:a.id,label:a.data?.label,type:aY(a)}));return new Set((0,ad.E9)(g).values())}function a3(a){let b=new Map,c=(a,c)=>{b.has(a)||b.set(a,[]),b.get(a).push(c)};for(let b of a)!a0(b)&&(c(b.source,b.target),b.data?.bidirectional&&c(b.target,b.source));return b}let a4=/\$\{(?:var|res):[^}]*\}/;function a5(a){let b=a.replace(/\S*\$\{[^}]*\}\S*/g," ");return/(?:^|[\s("'`])file:\/\/(?:\/|[^/\s]+\/)[^\s<>"'`]+/i.test(b)||/(?:^|[\s("'`])(?:[A-Za-z]:[\\/][^\s<>"'`]*|\\\\[^\\\s<>"'`]+\\[^\\\s<>"'`]+(?:\\[^\s<>"'`]*)?)/.test(b)||/(?:^|[\s("'`])\/(?!\/)[^\s<>"'`]+/.test(b)}function a6(a){if("string"!=typeof a)return!1;let b=a.trim();if(!b)return!1;if(/^\$\{global:[^{}]+\}$/.test(b))return!0;if(b.includes("${"))return!1;if(/^file:/i.test(b))try{let a=new URL(b);if("file:"!==a.protocol)return!1;let c=""!==a.pathname.replace(/\/+$/,"");return!!a.hostname||c}catch{return!1}return!b.includes("\0")}function a7(a,b={}){let c=[],d=Array.isArray(a?.nodes)?a.nodes:[],e=Array.isArray(a?.edges)?a.edges:[],f=(a,b,d,e)=>c.push({severity:a,code:b,message:d,nodeId:e?.id,nodeLabel:e?aZ(e):void 0}),g=new Map((b.models??[]).map(a=>[a.id,a])),h=new Map((b.servers??[]).map(a=>[a.name,a])),i=!!b.models,j=!!b.servers,k=d.filter(a=>"start"===aY(a)),l=d.filter(a=>"finish"===aY(a)),m=d.filter(a=>"process"===aY(a)),n=d.filter(a=>"mcp"===aY(a));if(0===k.length)f("error","no-start-node","The flow has no Start node, so it has no entry point.");else if(k.length>1)for(let a of k.slice(1))f("error","multiple-start-nodes","The flow has more than one Start node; only one is allowed.",a);for(let a of(0===l.length&&f("warning","no-finish-node","The flow has no Finish node; it will run but never reaches a defined end."),m)){let b=a.data?.properties??{},c=b.boundModel;if(c){if(i&&!g.has(c)){let c="string"==typeof b.modelName&&b.modelName?` (was "${b.modelName}")`:"";f("error","process-model-missing",`Process node "${aZ(a)}" is bound to a model that no longer exists${c}.`,a)}}else f("error","process-missing-model",`Process node "${aZ(a)}" has no model bound.`,a)}for(let a of n){let b=(a.data?.properties??{}).boundServer;if(b){if(j&&!h.has(b))f("warning","mcp-server-missing",`MCP node "${aZ(a)}" is bound to server "${b}", which isn't in your current MCP server list. It may be offline (e.g. not connected), renamed, or removed — if it was renamed or removed, rebind this node.`,a);else if(j){let c=h.get(b);if(c.status&&"connected"!==c.status){let d="disabled"===c.status?"disabled":`not connected (${c.status})`;f("warning","mcp-server-disconnected",`MCP node "${aZ(a)}" is bound to server "${b}", which is currently ${d}. It will provide tools again once it reconnects.`,a)}}}else f("warning","mcp-missing-server",`MCP node "${aZ(a)}" is not bound to a server.`,a);e.some(b=>a$(b)&&(b.source===a.id||b.target===a.id))||f("warning","mcp-node-unconnected",`MCP node "${aZ(a)}" is not connected to any Process node.`,a)}if(b.fileAccessMcp){let a=b.fileAccessMcp,c=Object.entries(a).filter(([,a])=>a.configured&&!a.disabled&&"usable"===a.usability).map(([a])=>a),d=Object.values(a).some(a=>a.configured&&!a.disabled&&"unknown"===a.usability);for(let b of m)if((function(a){let b=a.data?.properties??{},c=[];return"string"==typeof b.promptTemplate&&b.promptTemplate&&c.push(b.promptTemplate),"isolated"===b.inputMode&&"string"==typeof b.isolatedPrompt&&b.isolatedPrompt&&c.push(b.isolatedPrompt),c})(b).some(a5)){if(0===c.length){d||f("warning","process-filepath-mcp-unavailable",`Process node "${aZ(b)}" contains a literal filepath, but no configured file-access MCP server is currently available. Enable or reconnect one so this flow can access the path.`,b);continue}!d&&c.every(b=>!function(a,b,c){return!![...Array.isArray(b.roots)?b.roots:[],...c.filter(b=>b.data?.properties?.boundServer===a).flatMap(a=>{let b=a.data?.properties?.roots;return Array.isArray(b)?b:[]})].some(a6)||a6(b.rootPath)}(b,a[b],n))&&f("warning","process-filepath-mcp-roots-missing",`Process node "${aZ(b)}" contains a literal filepath, but the available file-access MCP servers have no effective roots configured. Add roots globally or on the corresponding MCP node in this flow.`,b)}}for(let a of d.filter(a=>"resource"===aY(a))){let b=a.data?.properties??{},c="run"===b.scope?"run":"mcp",d="string"==typeof b.boundServer?b.boundServer:"",g="string"==typeof b.uri?b.uri:"",i="string"==typeof b.runName?b.runName.trim():"";"mcp"!==c||d&&g||f("warning","resource-missing-binding",`Resource node "${aZ(a)}" has no ${!d?"server":"resource URI"} bound; connected steps will receive nothing.`,a),"run"!==c||i||f("warning","resource-missing-binding",`Resource node "${aZ(a)}" is a run artifact with no name; give it a name so steps can produce/consume it.`,a),"run"===c&&i&&!aR(i)&&f("warning","resource-run-name",`Resource node "${aZ(a)}" is named "${i}", which is not a valid artifact name (letters, digits, _ and - only, not starting with a digit); it will be awkward to reference with \${res:...}.`,a),"mcp"===c&&d&&j&&!h.has(d)&&f("warning","resource-server-missing",`Resource node "${aZ(a)}" is bound to server "${d}", which isn't in your current MCP server list.`,a);let k=e.filter(b=>a_(b)&&(b.source===a.id||b.target===a.id));0===k.length&&f("warning","resource-node-unconnected",`Resource node "${aZ(a)}" is not connected to any Process node.`,a);let l=k.filter(b=>b.target===a.id);"mcp"===c&&l.length>0&&f("error","resource-produce-static",`Resource node "${aZ(a)}" is a static MCP resource, but a step writes INTO it. Only run artifacts (scope "run") can be produced by a step — flip the edge or make this a run artifact.`,a),"run"===c&&l.length>1&&f("warning","resource-multiple-producers",`Resource node "${aZ(a)}" is produced by ${l.length} steps; the last writer wins. Consider one producer per artifact.`,a),"run"===c&&0===l.length&&k.length>0&&f("warning","resource-consumed-never-produced",`Resource node "${aZ(a)}" is consumed but no step in this flow produces it; it resolves to nothing unless an earlier run captured it.`,a)}for(let a of d.filter(a=>"signal"===aY(a))){let b=a.data?.properties??{};("string"==typeof b.topic?b.topic.trim():"")||f("warning","signal-missing-topic",`Signal node "${aZ(a)}" has no topic; it emits nothing. Give it a topic that a flow-event trigger can listen for.`,a)}let o=d.filter(a=>"static"===aY(a)),p=null;for(let a of o){let b=a.data?.properties??{},c=Array.isArray(b.entries)?b.entries:[];if(!0===b.injectOnce&&(p=p??a3(e),!function(a,b){let c=new Set,d=[...b.get(a)??[]];for(;d.length;){let e=d.shift();if(e===a)return!0;c.has(e)||(c.add(e),d.push(...b.get(e)??[]))}return!1}(a.id,p)&&f("warning","static-injectonce-without-loop",`Static node "${aZ(a)}" has "inject once" enabled but is never re-entered (it is not on a loop), so the setting has no effect.`,a)),0===c.length){f("warning","static-no-entries",`Static node "${aZ(a)}" has no entries; it injects nothing into the conversation.`,a);continue}c.forEach((b,c)=>{if(!b||"toolCall"!==b.kind)return;("string"==typeof b.toolName?b.toolName.trim():"")||f("error","static-toolcall-missing-name",`Static node "${aZ(a)}": tool-call entry #${c+1} has no tool name.`,a);let d="string"==typeof b.argumentsJson?b.argumentsJson.trim():"";if(d&&a4.test(d))f("warning","static-toolcall-unverifiable-json",`Static node "${aZ(a)}": tool-call entry #${c+1} contains runtime placeholders, so its JSON arguments can only be validated when the flow runs.`,a);else if(d)try{JSON.parse(d)}catch{f("error","static-toolcall-invalid-json",`Static node "${aZ(a)}": tool-call entry #${c+1} has invalid JSON arguments.`,a)}})}if(k.length>0){let a=a3(e);for(let b of k)a.get(b.id)?.length||f("error","start-no-outgoing","The Start node is not connected to anything; the flow cannot run.",b);let b=function(a,b){let c=new Set(a),d=[...a];for(;d.length;){let a=d.shift();for(let e of b.get(a)??[])c.has(e)||(c.add(e),d.push(e))}return c}(k.map(a=>a.id),a);for(let a of[...m,...l])b.has(a.id)||f("warning","unreachable-node",`${"finish"===aY(a)?"Finish":"Process"} node "${aZ(a)}" is not reachable from the Start node.`,a)}for(let a of d.filter(a=>"subflow"===aY(a))){let b=e.filter(b=>!a0(b)&&(b.source===a.id||b.target===a.id&&!!b.data?.bidirectional));b.length>1&&f("error","subflow-multiple-outgoing",`Subflow node "${aZ(a)}" has ${b.length} outgoing connections; a subflow can only have one (either A > B > C or a bidirectional A <> B).`,a);let c=a.data?.properties??{},g="string"==typeof c.subflowId&&c.subflowId?c.subflowId:void 0,h=Array.isArray(c.parallelSubflowIds)?c.parallelSubflowIds.filter(a=>"string"==typeof a&&!!a):[];g&&h.length>0&&f("error","subflow-both-targets",`Subflow node "${aZ(a)}" sets both a single "subflowId" and "parallelSubflowIds"; use one or the other.`,a);let i=!0===c.mapOverList;i&&h.length>0&&f("error","subflow-map-and-parallel",`Subflow node "${aZ(a)}" combines "mapOverList" with "parallelSubflowIds"; map-over-list runs a single child once per item and cannot be combined with parallel fan-out.`,a),i&&!g&&0===h.length&&f("error","subflow-map-no-child",`Subflow node "${aZ(a)}" has "mapOverList" but no child flow ("subflowId"); select a flow to run once per item.`,a);let j=Array.isArray(c.spawnBriefs)?c.spawnBriefs.filter(a=>"string"==typeof a&&""!==a.trim()):[];j.length>0&&!g&&f("error","subflow-spawn-no-child",`Subflow node "${aZ(a)}" has spawn briefs but no sub-agent flow ("subflowId"); select the flow to spawn once per brief.`,a),j.length>0&&h.length>0&&f("error","subflow-spawn-and-parallel",`Subflow node "${aZ(a)}" combines "spawnBriefs" with "parallelSubflowIds"; spawn briefs run one sub-agent per brief and cannot be combined with a multi-flow fan-out list.`,a),j.length>0&&i&&f("error","subflow-spawn-and-map",`Subflow node "${aZ(a)}" combines "spawnBriefs" with "mapOverList"; use one lane source or the other.`,a);let k="string"==typeof c.parallelSubflowIdsVar?c.parallelSubflowIdsVar.trim():"";k&&(aR(k)||f("warning","subflow-parallel-var-name",`Subflow node "${aZ(a)}" reads dynamic fan-out targets from "${k}", which is not a valid variable name (letters, digits, _ and - only, not starting with a digit); it will be awkward to capture with \${var:...}.`,a),i&&f("error","subflow-map-and-parallel-var",`Subflow node "${aZ(a)}" combines "mapOverList" with dynamic fan-out ("parallelSubflowIdsVar"); map-over-list runs a single child once per item and cannot be combined with fan-out.`,a),d.some(a=>{let b=a.data?.properties?.captureVariable;return"string"==typeof b&&b.trim()===k})||f("warning","subflow-parallel-var-uncaptured",`Subflow node "${aZ(a)}" reads dynamic fan-out targets from variable "${k}", but no node captures it (captureVariable). It may be seeded by the caller; otherwise it resolves to no targets and the node falls back to its static parallel list.`,a)),!0===c.allowCallerFanout&&i&&f("error","subflow-map-and-caller-fanout",`Subflow node "${aZ(a)}" combines "mapOverList" with agentic fan-out ("allowCallerFanout"); map-over-list runs a single child once per item and cannot be combined with fan-out.`,a);let l=c.concurrencyLimit;"number"==typeof l&&l<1&&f("warning","subflow-concurrency-limit",`Subflow node "${aZ(a)}" has a concurrencyLimit of ${l}; it must be at least 1 (the runtime default will be used).`,a)}{let a=new Map(d.map(a=>[a.id,a])),b=new Set;for(let c of e){if(a0(c))continue;let d=c.data?.condition;if(!d||"object"!=typeof d)continue;let e=a.get(c.source),g=e?aY(e):"unknown";if("process"!==g){f("error","edge-condition-non-process",`An edge leaving ${"unknown"===g?"an unknown":`the ${g}`} node "${e?aZ(e):c.source}" has a routing condition, but only process nodes can route on a condition.`,e??void 0);continue}b.add(c.source),(0,aO.C)(d.kind)?"always"===d.kind||("string"!=typeof d.value||0===d.value.length?f("warning","edge-condition-value",`Process node "${aZ(e)}" has an outgoing edge condition with no "value"; it will never match.`,e):"regex"!==d.kind||(0,aO.wM)(d.value)||f("warning","edge-condition-regex",`Process node "${aZ(e)}" has an outgoing edge with a regex condition that does not compile; it will never match.`,e)):f("warning","edge-condition-kind",`Process node "${aZ(e)}" has an outgoing edge whose condition kind "${String(d.kind)}" is unknown; it will never match.`,e)}for(let c of b){let b=a.get(c);b&&(e.some(a=>!a0(a)&&(a.source===c?!a.data?.condition||"always"===a.data.condition.kind&&!a.data.condition.negate:!!(a.target===c&&a.data?.bidirectional)))||f("warning","edge-condition-no-fallback",`Process node "${aZ(b)}" has conditioned outgoing edges but no bare fallback edge; if no condition matches, the flow ends here.`,b))}}{let a=new Set;for(let b of d){let c=b.data?.properties?.captureVariable;if("string"==typeof c&&c.trim()){let d=c.trim();a.add(d),aR(d)||f("warning","capture-var-name",`${"subflow"===aY(b)?"Subflow":"Process"} node "${aZ(b)}" captures into "${d}", which is not a valid variable name (letters, digits, _ and - only, not starting with a digit); it will be awkward to reference with \${var:...}.`,b)}}let b=["promptTemplate","isolatedPrompt"],c=new Set;for(let e of d){let d=e.data?.properties??{};for(let g of b){let b=d[g];if("string"==typeof b&&b)for(let d of function(a){let b;if("string"!=typeof a||0===a.length)return[];let c=new Set;for(aP.lastIndex=0;null!==(b=aP.exec(a));){let a=b[1].trim();a&&c.add(a)}return[...c]}(b)){if(a.has(d))continue;let b=`${e.id}:${d}`;c.has(b)||(c.add(b),f("warning","var-ref-uncaptured",`${aZ(e)} references \${var:${d}} but no step in this flow captures "${d}" (via captureVariable). It resolves to empty unless supplied as a run input — check for a typo or a step ordered after this one.`,e))}}}}{for(let a of d){let b=a.data?.properties?.captureKv;if("string"==typeof b&&b.trim()){let{key:c}=aU(b.trim());aX(c)||f("warning","capture-kv-name",`${"subflow"===aY(a)?"Subflow":"Process"} node "${aZ(a)}" captures into kv "${b.trim()}", whose key is not a valid name (letters, digits, _ and - only, not starting with a digit); it will be awkward to reference with \${kv:...}.`,a)}}let a=["promptTemplate","isolatedPrompt"],b=new Set;for(let c of d){let d=c.data?.properties??{};for(let e of a){let a=d[e];if("string"==typeof a&&a)for(let d of function(a){let b;if("string"!=typeof a||0===a.length)return[];let c=new Set;for(aS.lastIndex=0;null!==(b=aS.exec(a));){let a=b[1].trim();a&&c.add(a)}return[...c]}(a)){let{key:a}=aU(d);if(aX(a))continue;let e=`${c.id}:${d}`;b.has(e)||(b.add(e),f("warning","kv-ref-name",`${aZ(c)} references \${kv:${d}}, whose key is not a valid name (letters, digits, _ and - only, not starting with a digit); it resolves to empty.`,c))}}}}for(let a of m){let c=a.data?.properties?.promptTemplate;if("string"!=typeof c||!c)continue;let g=a1(a.id,d,e),h=null,i=new Set,j=new Set;for(let k of(0,ae.A$)(c)){if("handoff"===k.server){let b=`handoff:${k.name}`;if(j.has(b))continue;j.add(b),i.add(k.name),h||(h=a2(a.id,d,e)),h.has(k.name)||f("warning","handoff-pill-obsolete",`Process node "${aZ(a)}" references handoff tool "${k.name}", which no longer exists (the target node was removed, or renamed so the tool name changed). Update or remove the pill.`,a);continue}let c=`${k.kind}:${k.server}:${k.name}`;!j.has(c)&&(j.add(c),g.has(k.server)?"tool"===k.kind&&b.serverTools&&b.serverTools[k.server]&&!b.serverTools[k.server].includes(k.name)&&f("warning","tool-unavailable",`Process node "${aZ(a)}" references tool "${k.name}" which server "${k.server}" does not currently expose.`,a):f("error","tool-pill-disconnected",`Process node "${aZ(a)}" references ${k.kind} "${k.name}" from server "${k.server}", but it is not connected to that server (the MCP node was removed or the server was renamed).`,a))}if(i.size>0)for(let b of h??a2(a.id,d,e))i.has(b)||f("warning","handoff-target-unreferenced",`Process node "${aZ(a)}" can hand off to "${b}" but its prompt never references \${tool:handoff__${b}}, so the model may never route there.`,a)}if(b.serverTools)for(let a of m){let c=a1(a.id,d,e),g=new Set;for(let d of c){let c=b.serverTools[d];if(Array.isArray(c)&&0===c.length&&f("warning","mcp-server-no-tools",`Process node "${aZ(a)}" is connected to MCP server "${d}", which currently exposes 0 tools. The connection has no effect until the server provides tools.`,a),Array.isArray(c))for(let b of Array.isArray(a.data?.properties?.enabledTools)?a.data.properties.enabledTools:[]){let e=`enabledTool:${d}:${b}`;!g.has(e)&&(c.includes(b)||(g.add(e),f("warning","tool-unavailable",`Process node "${aZ(a)}" has enabledTool "${b}" which server "${d}" does not currently expose.`,a)))}}}let q=c.filter(a=>"error"===a.severity).length,r=c.length-q;return{issues:c,errorCount:q,warningCount:r,isRunnable:0===q}}var a8=c(90366);let a9=(0,M.h)("components/flow/FlowBuilder/FlowValidationButton"),ba=({nodes:a,edges:b})=>{let{t:c,tp:f}=(0,au.s9)(),[g,h]=(0,e.useState)(!1),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(!1),[p,q]=(0,e.useState)(null),[r,s]=(0,e.useState)(null),t=(0,e.useRef)(null),u=(0,e.useRef)(null),v=(0,e.useId)(),w=(0,e.useId)(),x=(0,e.useId)();(0,e.useEffect)(()=>{if(!g)return;let a=window.requestAnimationFrame(()=>{u.current?.focus()});return()=>window.cancelAnimationFrame(a)},[g]);let y=(0,e.useCallback)(()=>{h(!1),window.requestAnimationFrame(()=>{t.current?.focus()})},[]),z=(0,e.useCallback)(()=>{let a=u.current?.contains(document.activeElement);h(!1),a&&window.requestAnimationFrame(()=>{t.current?.focus()})},[]),A=(0,e.useCallback)(async()=>{o(!0),s(null);try{let c=await R.N.tryLoadModels()??void 0,d=await Q.S.loadServerConfigs(),e=Array.isArray(d)?d:void 0,f=e?.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})),g={},h=new Map,i=e?.filter(a=>!!a.hostPathAccess)??[],j=new Set(i.map(a=>a.name));if(e){let b=new Map(e.map(a=>[a.name,!!a.disabled])),c=new Set;for(let b of a){let a=b?.data?.type??b?.type,d=b?.data?.properties?.boundServer;"mcp"===a&&"string"==typeof d&&d&&c.add(d)}for(let{name:a,disabled:b}of i)b||c.add(a);await Promise.all([...c].map(async a=>{if(!b.get(a))try{let b=await Q.S.listServerTools(a);!b.error&&Array.isArray(b.tools)?(g[a]=b.tools.map(a=>a?.name).filter(a=>"string"==typeof a),h.set(a,"usable")):j.has(a)&&h.set(a,"unknown")}catch(b){j.has(a)&&h.set(a,"unknown"),a9.debug(`Could not gather MCP tool list for "${a}" during the flow check`,b)}}))}let k=e?Object.fromEntries(i.map(a=>[a.name,function(a,b,c){let d=b.find(b=>b.name===a);if(!d)return{configured:!1,disabled:!1,usability:"unavailable"};let e=!!d.disabled;return{configured:!0,disabled:e,usability:e?"unavailable":c.get(a)??"unknown",roots:d.roots,rootPath:d.rootPath}}(a.name,e,h)])):void 0,l=a7({nodes:a,edges:b},{models:c,servers:f,serverTools:g,fileAccessMcp:k});q(l.issues)}catch(a){a9.warn("Flow validation failed to run",a),q(null),s(c("flows.validation.failed"))}finally{o(!1)}},[a,b,c]),B=(0,e.useCallback)(a=>{m(a.currentTarget),h(!0),q(null),s(null),A()},[A]),C=(0,e.useCallback)(a=>{a&&(y(),document.dispatchEvent(new CustomEvent("selectNode",{detail:{nodeId:a}})))},[y]),E=p?.filter(a=>"error"===a.severity).length??0,H=(p?.length??0)-E;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(k.A,{ref:t,id:v,variant:"outlined",color:"primary",onClick:B,startIcon:(0,d.jsx)(aK,{}),"aria-haspopup":"dialog","aria-expanded":g,"aria-controls":w,sx:{textTransform:"none"},children:[c("flows.validation.check"),p&&p.length>0&&(0,d.jsx)(F.A,{size:"small",color:E>0?"error":"warning",label:p.length,sx:{ml:1,height:20}})]}),(0,d.jsx)(aD.A,{open:g,anchorEl:l,placement:"bottom-end",sx:{zIndex:a=>a.zIndex.modal+1},modifiers:[{name:"offset",options:{offset:[0,10]}}],children:(0,d.jsx)(aE.x,{onClickAway:z,children:(0,d.jsxs)(D.A,{ref:u,id:w,role:"dialog","aria-modal":"false","aria-labelledby":x,"aria-busy":n,tabIndex:-1,onKeyDown:a=>{"Escape"===a.key&&(a.preventDefault(),a.stopPropagation(),y())},elevation:18,sx:{width:"min(92vw, 440px)",maxHeight:"min(68dvh, 560px)",overflow:"hidden",border:1,borderColor:"divider",borderRadius:3},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,px:2,py:1.5},children:[(0,d.jsx)(j.A,{id:x,variant:"subtitle1",fontWeight:800,children:c("flows.validation.title")}),p&&(0,d.jsxs)(i.default,{sx:{display:"flex",gap:.75,ml:.5},children:[E>0&&(0,d.jsx)(F.A,{size:"small",color:"error",label:f("flows.validation.error",E)}),H>0&&(0,d.jsx)(F.A,{size:"small",color:"warning",label:f("flows.validation.warning",H)})]})]}),(0,d.jsx)(L.A,{}),(0,d.jsx)(i.default,{sx:{maxHeight:"min(52dvh, 420px)",overflowY:"auto",p:1},children:n?(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:2,py:3,justifyContent:"center"},children:[(0,d.jsx)(G.default,{size:22}),(0,d.jsx)(j.A,{color:"text.secondary",children:c("flows.validation.checking")})]}):r?(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"flex-start",gap:1.5,py:2,px:1},children:[(0,d.jsx)(aL.A,{color:"error"}),(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{fontWeight:700,children:c("flows.validation.unavailable")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:r})]})]}):p&&0===p.length?(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1.5,py:3,px:1,justifyContent:"center"},children:[(0,d.jsx)(aN.A,{color:"success"}),(0,d.jsx)(j.A,{children:c("flows.validation.healthy")})]}):(0,d.jsx)(aF.A,{dense:!0,disablePadding:!0,children:(p??[]).map((a,b)=>{let e=!!a.nodeId,f=(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(aG.A,{sx:{minWidth:36},children:"error"===a.severity?(0,d.jsx)(aL.A,{color:"error",fontSize:"small"}):(0,d.jsx)(aM.A,{color:"warning",fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:(0,a8.z)(a,c),secondary:e?c("flows.validation.revealNode",{node:a.nodeLabel??a.nodeId??""}):void 0})]});return e?(0,d.jsx)(aI.A,{onClick:()=>C(a.nodeId),alignItems:"flex-start",children:f},b):(0,d.jsx)(aJ.Ay,{alignItems:"flex-start",children:f},b)})})}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(i.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,p:1},children:[(0,d.jsx)(k.A,{onClick:A,disabled:n,children:c("flows.validation.recheck")}),(0,d.jsx)(k.A,{onClick:y,variant:"contained",children:c("flows.validation.done")})]})]})})})]})};var bb=c(79705),bc=c(49037),bd=c(28902),be=c(5285),bf=c(40596),bg=c(61990),bh=c(91195),bi=c(46571),bj=c(82391),bk=c(8332),bl=c(47904),bm=c(10400),bn=c(60928),bo=c(71436);let bp=(0,w.A)((0,d.jsx)("path",{d:"m6.14 11.86-2.78 2.79c-.19.2-.19.51 0 .71l2.78 2.79c.31.32.85.09.85-.35V16H13c.55 0 1-.45 1-1s-.45-1-1-1H6.99v-1.79c0-.45-.54-.67-.85-.35m14.51-3.21-2.78-2.79c-.31-.32-.85-.09-.85.35V8H11c-.55 0-1 .45-1 1s.45 1 1 1h6.01v1.79c0 .45.54.67.85.35l2.78-2.79c.2-.19.2-.51.01-.7"}),"SwapHorizRounded");var bq=c(78465),br=c(11790),bs=c(59988);let bt=({processNodeId:a,connections:b,beginnerMode:c=!1,heading:f,actionLabel:g,emptyMessage:h,pickerAriaLabel:k,singleSelection:l=!1,onConnect:o,onRemove:p,loadServers:q})=>{let{t:r}=(0,au.s9)(),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)([]),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(null),A=(0,e.useMemo)(()=>new Set(b.map(a=>a.serverName)),[b]),B=(0,e.useMemo)(()=>u.filter(a=>!A.has(a.name)),[u,A]),C=(0,bs.E)("mcp",B),D=async()=>{t(!0),x(!0),z(null);try{v(await q())}catch(a){z(a instanceof Error?a.message:r("flows.inspector.mcpLoadError"))}finally{x(!1)}},E=async b=>{t(!1),await o(a,b)},F=a=>{var b,e;return{key:a.name,content:c?(0,d.jsxs)(bl.A,{onClick:()=>{E(a.name)},sx:a=>({width:"100%",minHeight:74,px:1.5,py:1.25,justifyContent:"flex-start",textAlign:"left",border:`1px solid ${a.palette.divider}`,borderRadius:2.5,transition:a.transitions.create(["border-color","background-color"]),"&:hover":{borderColor:"primary.main",backgroundColor:"action.hover"}}),children:[(0,d.jsx)(bo.A,{color:"primary",sx:{mr:1.25}}),(0,d.jsxs)(i.default,{sx:{minWidth:0},children:[(0,d.jsx)(j.A,{variant:"body2",fontWeight:800,noWrap:!0,children:a.name}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:r("flows.inspector.allAppToolsIncluded")})]})]}):(0,d.jsx)(br.A,{name:a.name,status:"connected"===(b=a.status)||"disconnected"===b||"error"===b||"connecting"===b||"initialization"===b||"requires_authentication"===b?b:"starting"===b?"connecting":"disconnected",path:a.rootPath||a.serverUrl||a.websocketUrl||"",enabled:!a.disabled,transport:"websocket"===(e=a.transport)||"sse"===e||"streamable"===e?e:"stdio",pickerMode:!0,onClick:()=>{E(a.name)}})}},G=C.items.map(F),H=C.groups?C.groups.map(a=>({...a,items:a.items.map(F)})):null,I=f??(c?r("flows.inspector.stepApps"):r("flows.inspector.connectedMcpServers")),J=g??(c?r("flows.inspector.addApp"):r("flows.inspector.addMcpServer")),K=h??(c?r("flows.inspector.noApps"):r("flows.inspector.noMcpServers"));return(0,d.jsxs)(i.default,{sx:a=>({border:`1px solid ${a.palette.divider}`,borderRadius:2.5,overflow:"hidden"}),children:[(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{px:1.25,py:.75},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,children:I}),(0,d.jsx)(n.A,{title:J,children:(0,d.jsx)(m.A,{size:"small","aria-label":J,onClick:()=>{D()},children:l?(0,d.jsx)(bp,{fontSize:"small"}):(0,d.jsx)(bm.A,{fontSize:"small"})})})]}),0===b.length?(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",display:"block",sx:{px:1.25,pb:1.25},children:K}):(0,d.jsx)(bb.A,{sx:{borderTop:1,borderColor:"divider"},children:b.map((b,e)=>(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",gap:.75,sx:{minHeight:42,px:1,borderTop:+(0!==e),borderColor:"divider"},children:[(0,d.jsx)(bo.A,{color:"primary",sx:{fontSize:17}}),(0,d.jsx)(j.A,{variant:"body2",noWrap:!0,sx:{flex:1,minWidth:0},children:b.serverName}),!l&&p&&(0,d.jsx)(n.A,{title:r(c?"flows.inspector.removeApp":"flows.inspector.removeMcpServer",{server:b.serverName}),children:(0,d.jsx)(m.A,{size:"small",color:"error","aria-label":r(c?"flows.inspector.removeApp":"flows.inspector.removeMcpServer",{server:b.serverName}),onClick:()=>p(a,b.nodeId),children:(0,d.jsx)(bn.A,{fontSize:"small"})})})]},b.nodeId))}),(0,d.jsx)(bq.A,{open:s,onClose:()=>t(!1),ariaLabel:k??(c?r("flows.inspector.chooseApp"):r("flows.serverTools.connectTitle")),isLoading:w,error:y,emptyMessage:c?r("flows.inspector.noAppsToAdd"):r("flows.serverTools.noneToConnect"),searchable:!0,searchPlaceholder:c?r("flows.inspector.searchApps"):r("flows.serverTools.searchServers"),searchTerm:C.searchTerm,onSearchChange:C.setSearchTerm,columns:{xs:12,sm:6},items:G,groups:H,collapsedKeys:C.collapsedKeys,onToggleGroup:C.toggleGroup})]})};var bu=c(67062),bv=c(34945);let bw=({models:a,selectedModelId:b,beginnerMode:c=!1,onSelect:f,onRemove:g})=>{let{t:h}=(0,au.s9)(),[k,l]=(0,e.useState)(!1),o=(0,bs.E)("models",a),p=(0,e.useMemo)(()=>a.find(a=>a.id===b),[a,b]),q=p?.displayName||p?.name||b,r=a=>{f(a),l(!1)},s=a=>({key:a.id,content:c?(0,d.jsxs)(bl.A,{onClick:()=>r(a.id),sx:a=>({width:"100%",minHeight:74,px:1.5,py:1.25,justifyContent:"flex-start",textAlign:"left",border:`1px solid ${a.palette.divider}`,borderRadius:2.5,transition:a.transitions.create(["border-color","background-color"]),"&:hover":{borderColor:"primary.main",backgroundColor:"action.hover"}}),children:[(0,d.jsx)(bu.A,{color:"primary",sx:{mr:1.25}}),(0,d.jsxs)(i.default,{sx:{minWidth:0},children:[(0,d.jsx)(j.A,{variant:"body2",fontWeight:800,noWrap:!0,children:a.displayName||a.name}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:h("flows.inspector.simpleModelHelp")})]})]}):(0,d.jsx)(bv.A,{model:a,selectable:!0,selected:b===a.id,onSelect:r})}),t=o.items.map(s),u=o.groups?o.groups.map(a=>({...a,items:a.items.map(s)})):null,v=c?h("flows.inspector.stepAi"):h("flows.inspector.boundModel"),w=c?h("flows.inspector.chooseAi"):h("flows.inspector.chooseModel");return(0,d.jsxs)(i.default,{sx:a=>({border:`1px solid ${b?a.palette.divider:a.palette.error.main}`,borderRadius:2.5,overflow:"hidden",backgroundColor:b?"transparent":(0,ah.X4)(a.palette.error.main,.07)}),children:[(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{px:1.25,py:.75},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,children:v}),(0,d.jsx)(n.A,{title:w,children:(0,d.jsx)(m.A,{size:"small","aria-label":w,color:b?"default":"error",onClick:()=>l(!0),children:(0,d.jsx)(bp,{fontSize:"small"})})})]}),b?(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",gap:.75,sx:{minHeight:42,px:1,borderTop:1,borderColor:"divider"},children:[(0,d.jsx)(bu.A,{color:"primary",sx:{fontSize:17}}),(0,d.jsx)(j.A,{variant:"body2",noWrap:!0,sx:{flex:1,minWidth:0},children:q}),(0,d.jsx)(n.A,{title:h("flows.inspector.removeModel",{model:q??b}),children:(0,d.jsx)(m.A,{size:"small",color:"error","aria-label":h("flows.inspector.removeModel",{model:q??b}),onClick:g,children:(0,d.jsx)(bn.A,{fontSize:"small"})})})]}):(0,d.jsx)(j.A,{variant:"caption",color:"error.main",fontWeight:700,display:"block",sx:{px:1.25,pb:1.25},children:c?h("flows.inspector.noStepAi"):h("flows.inspector.noBoundModel")}),(0,d.jsx)(bq.A,{open:k,onClose:()=>l(!1),ariaLabel:c?h("flows.inspector.aiPickerAria"):h("flows.inspector.modelPickerAria"),isLoading:!1,emptyMessage:h("flows.process.noModels"),searchable:!0,searchPlaceholder:h("flows.process.searchModels"),searchTerm:o.searchTerm,onSearchChange:o.setSearchTerm,columns:{xs:12,sm:6},items:t,groups:u,collapsedKeys:o.collapsedKeys,onToggleGroup:o.toggleGroup})]})};var bx=c(78930);let by=({processNodeId:a,currentFlowId:b,flows:c,connections:f,onConnect:g,onRemove:h})=>{let{t:k}=(0,au.s9)(),[l,o]=(0,e.useState)(!1),p=(0,e.useMemo)(()=>new Set(f.map(a=>a.flowId)),[f]),q=(0,e.useMemo)(()=>c.filter(a=>a.id!==b&&!p.has(a.id)),[p,b,c]),r=(0,bs.E)("flows",q),s=b=>{o(!1),g(a,b)},t=a=>({key:a.id,content:(0,d.jsx)(bx.A,{flow:a,selected:!1,onSelect:s,pickerMode:!0})});return(0,d.jsxs)(i.default,{sx:a=>({border:`1px solid ${a.palette.divider}`,borderRadius:2.5,overflow:"hidden"}),children:[(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{px:1.25,py:.75},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,children:k("flows.guided.talksToAgents")}),(0,d.jsx)(n.A,{title:k("flows.guided.addAgent"),children:(0,d.jsx)(m.A,{size:"small","aria-label":k("flows.guided.addAgent"),onClick:()=>o(!0),children:(0,d.jsx)(bm.A,{fontSize:"small"})})})]}),0===f.length?(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",display:"block",sx:{px:1.25,pb:1.25},children:k("flows.guided.noAgents")}):(0,d.jsx)(bb.A,{sx:{borderTop:1,borderColor:"divider"},children:f.map((b,c)=>(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",gap:.75,sx:{minHeight:42,px:1,borderTop:+(0!==c),borderColor:"divider"},children:[(0,d.jsx)(bj.A,{color:"primary",sx:{fontSize:17}}),(0,d.jsxs)(i.default,{sx:{flex:1,minWidth:0},children:[(0,d.jsx)(j.A,{variant:"body2",noWrap:!0,children:b.flowName}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",noWrap:!0,display:"block",children:k("flows.guided.agentIo")})]}),(0,d.jsx)(n.A,{title:k("flows.guided.removeAgent",{agent:b.flowName}),children:(0,d.jsx)(m.A,{size:"small",color:"error","aria-label":k("flows.guided.removeAgent",{agent:b.flowName}),onClick:()=>h(a,b.nodeId),children:(0,d.jsx)(bn.A,{fontSize:"small"})})})]},b.nodeId))}),(0,d.jsx)(bq.A,{open:l,onClose:()=>o(!1),ariaLabel:k("flows.guided.chooseAgent"),emptyMessage:k("flows.guided.noAgentsToAdd"),searchable:!0,searchPlaceholder:k("flows.guided.searchAgents"),searchTerm:r.searchTerm,onSearchChange:r.setSearchTerm,items:r.items.map(t),groups:r.groups?r.groups.map(a=>({...a,items:a.items.map(t)})):null,collapsedKeys:r.collapsedKeys,onToggleGroup:r.toggleGroup})]})},bz=(0,C.Ay)(D.A)(({theme:a})=>({width:320,minWidth:320,height:"100%",minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden",border:`1px solid ${a.palette.divider}`,borderRadius:16,backgroundColor:"dark"===a.palette.mode?"rgba(17, 22, 41, 0.9)":"rgba(255, 255, 255, 0.92)",boxShadow:"dark"===a.palette.mode?"0 18px 55px rgba(0,0,0,.24)":"0 18px 55px rgba(49,45,99,.1)",backdropFilter:"blur(20px) saturate(140%)",[a.breakpoints.down("lg")]:{width:286,minWidth:286},[a.breakpoints.down("md")]:{width:"100%",minWidth:0,height:"auto",maxHeight:"none"}})),bA=({selectedNode:a,onClearSelection:b,onCommitNode:c,onOpenAdvanced:f,onOpenTechnicalDetails:g,flowName:h,flowNameError:l,onFlowNameChange:o,flowDescription:p,onFlowDescriptionChange:q,authoringMode:r,onAuthoringModeChange:s,permissionRuleCount:t,onOpenPermissionRules:v,beginnerMode:w=!1,onSuggestTools:x,onSuggestAgents:y,onImprovePrompt:z,onCheckPlausibility:A,connectedMcpServers:C=[],onConnectMcpServer:D,onRemoveMcpServer:E,loadMcpServers:J,onSelectMcpNodeServer:K,currentFlowId:M,availableAgents:N=[],connectedAgents:O=[],onConnectAgent:P,onRemoveAgent:Q,models:R=[],onNavigateToFlow:S})=>{let T,{t:U,tp:V}=(0,au.s9)(),[W,X]=(0,e.useState)(a?"node":"flow"),[Y,Z]=(0,e.useState)(a?.data.label??""),[$,_]=(0,e.useState)(String(a?.data.properties?.promptTemplate??"")),[aa,ab]=(0,e.useState)(!1),[ac,ad]=(0,e.useState)(null);(0,e.useEffect)(()=>{a?X("node"):X("flow")},[a?.id]),(0,e.useEffect)(()=>{Z(a?.data.label??""),_(String(a?.data.properties?.promptTemplate??"")),ad(null)},[a?.id,a?.data]);let ae=(0,e.useMemo)(()=>{if(!a)return[];let b=a.data.properties??{},c=[],d="mcp"===a.data.type&&!!J&&!!K;return"string"==typeof b.boundServer&&b.boundServer&&!d&&c.push({label:w?U("flows.inspector.summary.app"):U("flows.inspector.summary.server"),value:b.boundServer}),"string"==typeof b.signalName&&b.signalName&&c.push({label:w?U("flows.inspector.summary.notification"):U("flows.inspector.summary.signal"),value:b.signalName}),c},[a,w,U,J,K]),af=(0,e.useMemo)(()=>{if(!a)return null;let b=a.data.properties?.subflowId;if("string"!=typeof b||!b)return null;let c=N.find(a=>a.id===b);return{id:b,name:c?.name||b}},[a,N]),ag=()=>{if(!a)return null;let b={...a.data.properties??{}};("process"===a.data.type||"start"===a.data.type)&&(b.promptTemplate=$);let d={...a.data,label:Y.trim()||a.data.label,properties:b};return JSON.stringify(d)!==JSON.stringify(a.data)&&c(a.id,d),{...a,data:d}},ai=async(a,b)=>{if(!K)return;let c=ag();c&&await K(c,b)},aj=async()=>{if(!z)return;let a=ag();if(a){ab(!0),ad(null);try{let b=await z(a);_(b),c(a.id,{...a.data,properties:{...a.data.properties??{},promptTemplate:b}})}catch(a){ad(a instanceof Error?a.message:U("flows.inspector.improvePromptFailed"))}finally{ab(!1)}}};return(0,d.jsxs)(bz,{elevation:0,"aria-label":w&&a?U("flows.inspector.stepSettings"):w?U("flows.inspector.agentSettings"):U("flows.inspector.flowInspector"),children:[(0,d.jsxs)(i.default,{sx:{px:1.5,pt:1.25},children:[(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",justifyContent:"space-between",gap:1,children:[(0,d.jsxs)(i.default,{sx:{minWidth:0},children:[(0,d.jsx)(j.A,{variant:"overline",color:"text.secondary",sx:{letterSpacing:".12em"},children:w?a?U("flows.inspector.editStep"):U("flows.inspector.agentSettings"):U("flows.inspector.inspector")}),(0,d.jsx)(j.A,{variant:"subtitle1",fontWeight:800,noWrap:!0,children:a?a.data.label:h})]}),a&&(0,d.jsx)(n.A,{title:w?U("flows.inspector.closeStep"):U("flows.inspector.clearSelection"),children:(0,d.jsx)(m.A,{size:"small","aria-label":w?U("flows.inspector.closeStep"):U("flows.inspector.closeNode"),onClick:b,children:(0,d.jsx)(be.A,{fontSize:"small"})})})]}),!w&&(0,d.jsxs)(bc.A,{value:W,onChange:(a,b)=>X(b),variant:"fullWidth",sx:{mt:.5,minHeight:38,"& .MuiTab-root":{minHeight:38}},children:[(0,d.jsx)(bd.A,{value:"node",label:U("flows.inspector.node"),disabled:!a}),(0,d.jsx)(bd.A,{value:"flow",label:U("flows.inspector.flow")})]})]}),(0,d.jsx)(L.A,{}),(0,d.jsx)(i.default,{sx:{p:1.5,overflowY:"auto",flex:1},children:"node"===W&&a?(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",gap:1,sx:{minWidth:0},children:[(0,d.jsx)(F.A,{size:"small",sx:{flexShrink:0},label:(T=String(a.data.type||a.type||"node"),w?({start:U("flows.inspector.type.start"),process:U("flows.inspector.type.process"),finish:U("flows.inspector.type.finish"),mcp:U("flows.inspector.type.mcp"),subflow:U("flows.inspector.type.subflow"),resource:U("flows.inspector.type.resource"),signal:U("flows.inspector.type.signal"),trigger:U("flows.inspector.type.trigger")})[T]??U("flows.inspector.type.step"):"mcp"===T?"MCP":`${T.charAt(0).toUpperCase()}${T.slice(1)}`),color:"finish"===a.data.type?"success":"primary",variant:"outlined"}),af&&(0,d.jsx)(n.A,{title:S?`${U("flows.subflow.openTarget")}: ${af.name}`:af.name,children:(0,d.jsx)(F.A,{size:"small",variant:"outlined",icon:(0,d.jsx)(bj.A,{}),label:af.name,clickable:!!S,onClick:S?()=>{ag(),S(af.id)}:void 0,sx:{minWidth:0,flexShrink:1,maxWidth:"100%"}})})]}),(0,d.jsx)(k.A,{variant:w?"outlined":"contained",startIcon:(0,d.jsx)(B.A,{}),endIcon:(0,d.jsx)(bf.A,{}),onClick:()=>{let a=ag();a&&f(a)},children:w?U("flows.inspector.moreOptions"):U("flows.inspector.fullSettings")}),(0,d.jsx)(u.A,{label:w?U("flows.inspector.stepName"):U("flows.inspector.nodeName"),size:"small",fullWidth:!0,value:Y,onChange:a=>Z(a.target.value),onBlur:ag,onKeyDown:a=>{"Enter"===a.key&&a.currentTarget.blur()}}),("process"===a.data.type||"start"===a.data.type)&&(0,d.jsxs)(bb.A,{spacing:.75,children:[(0,d.jsx)(u.A,{label:w?"start"===a.data.type?U("flows.inspector.helpfulBackground"):U("flows.inspector.aiTask"):"start"===a.data.type?U("flows.inspector.startingContext"):U("flows.inspector.taskPrompt"),size:"small",fullWidth:!0,multiline:!0,minRows:5,maxRows:12,value:$,onChange:a=>_(a.target.value),onBlur:ag,onKeyDown:a=>{(a.ctrlKey||a.metaKey)&&"Enter"===a.key&&(a.preventDefault(),ag())},placeholder:"start"===a.data.type?w?U("flows.inspector.startBeginnerPlaceholder"):U("flows.inspector.startPlaceholder"):w?U("flows.inspector.taskBeginnerPlaceholder"):U("flows.inspector.taskPlaceholder"),helperText:w?U("flows.inspector.blurHelp"):U("flows.inspector.keyboardHelp")}),"process"===a.data.type&&z&&(0,d.jsx)(k.A,{variant:"outlined",size:"small",startIcon:aa?(0,d.jsx)(G.default,{size:16}):(0,d.jsx)(bi.A,{}),disabled:aa,onClick:()=>{aj()},children:aa?U("flows.inspector.improvingPrompt"):U("flows.inspector.improvePrompt")}),ac&&(0,d.jsx)(j.A,{variant:"caption",color:"error",children:ac})]}),!w&&ae.length>0&&(0,d.jsx)(i.default,{sx:a=>({p:1.25,borderRadius:2.5,border:`1px solid ${a.palette.divider}`,bgcolor:(0,ah.X4)(a.palette.primary.main,.05)}),children:ae.map(a=>(0,d.jsxs)(bb.A,{direction:"row",justifyContent:"space-between",gap:1,mb:.5,children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:a.label}),(0,d.jsx)(j.A,{variant:"caption",fontWeight:700,noWrap:!0,children:a.value})]},a.label))}),"mcp"===a.data.type&&J&&K&&(0,d.jsx)(bt,{processNodeId:a.id,connections:"string"==typeof a.data.properties?.boundServer&&a.data.properties.boundServer?[{nodeId:a.id,serverName:a.data.properties.boundServer}]:[],heading:U("flows.inspector.summary.server"),actionLabel:U("flows.inspector.chooseMcpServer"),emptyMessage:U("flows.mcpNode.select"),pickerAriaLabel:U("flows.inspector.chooseMcpServer"),singleSelection:!0,onConnect:ai,loadServers:J}),"process"===a.data.type&&(0,d.jsx)(bw,{models:R,selectedModelId:"string"==typeof a.data.properties?.boundModel?a.data.properties.boundModel:void 0,beginnerMode:w,onSelect:a=>{let b=ag();if(!b)return;let d=R.find(b=>b.id===a);c(b.id,{...b.data,properties:{...b.data.properties??{},boundModel:a,...d?{modelName:d.name}:{}}})},onRemove:()=>{let a=ag();if(!a)return;let{boundModel:b,modelName:d,...e}=a.data.properties??{};c(a.id,{...a.data,properties:e})}}),"process"===a.data.type&&D&&E&&J&&(0,d.jsx)(bt,{processNodeId:a.id,connections:C,beginnerMode:w,onConnect:D,onRemove:E,loadServers:J}),"process"===a.data.type&&M&&P&&Q&&(0,d.jsx)(by,{processNodeId:a.id,currentFlowId:M,flows:N,connections:O,onConnect:P,onRemove:Q}),"process"===a.data.type&&x&&(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bh.A,{}),onClick:()=>{let a=ag();a&&x(a)},children:U("flows.inspector.suggestTools")}),"process"===a.data.type&&y&&(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bh.A,{}),onClick:()=>{let a=ag();a&&y(a)},children:U("flows.inspector.suggestAgents")}),(0,d.jsx)(k.A,{variant:"text",size:"small",startIcon:(0,d.jsx)(bk.A,{}),onClick:()=>{let a=ag();a&&g?.(a)},children:U("flows.inspector.technicalDetails")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:w?U("flows.inspector.beginnerTip"):U("flows.inspector.expertTip")})]}):(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsxs)(bb.A,{direction:"row",gap:1,alignItems:"center",children:[(0,d.jsx)(bg.A,{color:"primary",fontSize:"small"}),(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"subtitle2",fontWeight:800,children:w?U("flows.inspector.aboutAgent"):U("flows.inspector.flowDetails")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:w?U("flows.inspector.aboutHelp"):U("flows.inspector.flowHelp")})]})]}),(0,d.jsx)(u.A,{size:"small",label:w?U("flows.inspector.agentName"):U("flows.inspector.flowName"),value:h,onChange:a=>o(a.target.value),error:!!l,helperText:l??(w?U("flows.inspector.agentNameHelp"):U("flows.inspector.renameHelp")),fullWidth:!0}),A&&(0,d.jsx)(k.A,{variant:"outlined",startIcon:(0,d.jsx)(bh.A,{}),onClick:A,children:U("flows.inspector.checkAgent")}),(0,d.jsx)(u.A,{size:"small",label:w?U("flows.inspector.helpQuestion"):U("flows.inspector.description"),value:p,onChange:a=>q(a.target.value),multiline:!0,minRows:3,maxRows:7,fullWidth:!0,placeholder:w?U("flows.inspector.agentDescriptionPlaceholder"):U("flows.inspector.flowDescriptionPlaceholder")}),!w&&(0,d.jsxs)(i.default,{sx:a=>({p:1.25,borderRadius:2.5,border:`1px solid ${a.palette.divider}`,bgcolor:(0,ah.X4)(a.palette.primary.main,.04)}),children:[(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{size:"small",checked:"advanced"===r,onChange:a=>s(a.target.checked?"advanced":"guided")}),label:"advanced"===r?U("flows.inspector.advanced"):U("flows.inspector.guided")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",display:"block",children:"advanced"===r?U("flows.inspector.advancedHelp"):U("flows.inspector.guidedHelp")})]}),"advanced"===r&&(0,d.jsx)(k.A,{variant:"outlined",onClick:v,startIcon:(0,d.jsx)(bg.A,{}),children:t?V("flows.inspector.permissionRules",t):U("flows.inspector.permissionRules")}),!w&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(L.A,{}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:U("flows.inspector.shortcuts")})]})]})})]})};var bB=c(28298),bC=c(94400),bD=c(72539);let bE=(0,w.A)((0,d.jsx)("path",{d:"M11 5v11.17l-4.88-4.88c-.39-.39-1.03-.39-1.42 0s-.39 1.02 0 1.41l6.59 6.59c.39.39 1.02.39 1.41 0l6.59-6.59c.39-.39.39-1.02 0-1.41a.996.996 0 0 0-1.41 0L13 16.17V5c0-.55-.45-1-1-1s-1 .45-1 1"}),"ArrowDownwardRounded");var bF=c(36425),bG=c(8004);let bH=new Set(["Process Node","Subflow Node","Signal Node"]),bI=({children:a,complete:b=!1})=>(0,d.jsx)(i.default,{"aria-hidden":"true",sx:{display:"grid",width:34,height:34,flexShrink:0,placeItems:"center",borderRadius:"50%",color:b?"success.contrastText":"primary.contrastText",bgcolor:b?"success.main":"primary.main",fontWeight:850,boxShadow:a=>`0 8px 24px ${(0,ah.X4)(b?a.palette.success.main:a.palette.primary.main,.28)}`},children:b?(0,d.jsx)(bF.A,{fontSize:"small"}):a}),bJ=({nodes:a,orderedStepIds:b=[],subagentNodeIds:c,selectedNodeId:g,flowName:h,flowNameError:l,onFlowNameChange:m,onSelectNode:n,onAddTask:o,onTry:q,isSaving:r=!1,hasAdvancedFeatures:s=!1,readyToTry:t=!0,needsAIConnection:v=!1,onSwitchAdvanced:w,models:x=[],modelsLoading:y=!1,aiAssistance:z="manual",selectedModelId:A,onChooseAssistance:C,onModelChange:E,onCheckPlausibility:G,currentFlowId:H,availableAgents:I=[],mcpConnectionsByNode:J,agentConnectionsByNode:L,onConnectMcpServer:M,onRemoveMcpServer:N,loadMcpServers:O,onConnectAgent:P,onRemoveAgent:Q})=>{let{t:R}=(0,au.s9)(),[S,T]=(0,e.useState)(""),U=(0,e.useMemo)(()=>{let d=new Map(b.map((a,b)=>[a,b]));return a.filter(a=>["process","subflow","signal"].includes(a.data.type)&&!c?.has(a.id)).sort((a,b)=>(d.get(a.id)??Number.MAX_SAFE_INTEGER)-(d.get(b.id)??Number.MAX_SAFE_INTEGER)||(a.position?.y??0)-(b.position?.y??0))},[a,b,c]),V=/^(?:NewFlow\d*|Untitled (?:assistant|agent)(?: \d+)?)$/i.test(h.trim())||h.trim().toLocaleLowerCase()===R("flows.page.untitled").trim().toLocaleLowerCase(),W=!!h.trim()&&!V&&!l,X=!!S.trim()&&!s&&"unasked"!==z&&("assisted"!==z||!!A),Y=W&&U.length>0&&t&&!r,Z="unasked"!==z||!y&&0===x.length||!C,$=()=>{let a=S.trim();a&&(o(a),T(""))};return(0,d.jsx)(i.default,{"aria-label":R("flows.guided.aria"),sx:{flex:1,minHeight:0,overflowY:"auto",px:{xs:.5,sm:1.5,lg:3},py:{xs:1,sm:1.5,lg:2.5}},children:(0,d.jsxs)(i.default,{sx:{width:"100%",maxWidth:780,mx:"auto"},children:[(0,d.jsxs)(bb.A,{spacing:.8,sx:{mb:2.5},children:[(0,d.jsx)(F.A,{icon:(0,d.jsx)(bh.A,{}),label:R("flows.guided.simple"),color:"primary",variant:"outlined",sx:{alignSelf:"flex-start"}}),(0,d.jsx)(j.A,{variant:"h4",children:R("flows.guided.recipe")}),(0,d.jsx)(j.A,{color:"text.secondary",children:R("flows.guided.intro")})]}),(0,d.jsxs)(bb.A,{spacing:1.5,children:[x.length>0&&C&&(0,d.jsx)(D.A,{elevation:0,sx:{p:{xs:2,sm:2.5},border:1,borderColor:"unasked"===z?"primary.main":"divider",borderRadius:4},children:(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"h6",children:R("flows.guided.aiQuestion")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:R("flows.guided.aiHelp")})]}),"unasked"===z?(0,d.jsxs)(bb.A,{direction:{xs:"column",sm:"row"},spacing:1,children:[(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bh.A,{}),onClick:()=>C("assisted"),children:R("flows.guided.yesHelp")}),(0,d.jsx)(k.A,{variant:"outlined",onClick:()=>C("manual"),children:R("flows.guided.manual")})]}):(0,d.jsxs)(bb.A,{direction:{xs:"column",sm:"row"},spacing:1.5,alignItems:{sm:"center"},children:[(0,d.jsx)(F.A,{color:"assisted"===z?"primary":"default",label:"assisted"===z?R("flows.guided.aiOn"):R("flows.guided.manualSetup")}),"assisted"===z&&E&&(0,d.jsxs)(bB.A,{size:"small",sx:{minWidth:260},children:[(0,d.jsx)(bC.A,{id:"guided-helper-model-label",children:R("flows.guided.aiHelper")}),(0,d.jsx)(bD.A,{labelId:"guided-helper-model-label",label:R("flows.guided.aiHelper"),value:A??"",onChange:a=>E(String(a.target.value)),children:x.map(a=>(0,d.jsx)(K.A,{value:a.id,children:a.displayName||a.name},a.id))})]}),(0,d.jsx)(k.A,{size:"small",onClick:()=>C("assisted"===z?"manual":"assisted"),children:"assisted"===z?R("flows.guided.turnOff"):R("flows.guided.turnOn")})]})]})}),Z&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(D.A,{elevation:0,sx:{p:{xs:2,sm:2.5},border:1,borderColor:U.length>0?"success.main":"divider",borderRadius:4,bgcolor:"background.paper"},children:(0,d.jsxs)(bb.A,{direction:"row",spacing:1.5,alignItems:"flex-start",children:[(0,d.jsx)(bI,{complete:U.length>0,children:"1"}),(0,d.jsxs)(i.default,{sx:{flex:1,minWidth:0},children:[(0,d.jsx)(j.A,{variant:"h6",children:U.length?R("flows.guided.addAnother"):R("flows.guided.goalQuestion")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:U.length?R("flows.guided.nextHelp"):R("flows.guided.goalHelp")}),s&&(0,d.jsx)(p.A,{severity:"info",action:(0,d.jsx)(k.A,{color:"inherit",size:"small",onClick:w,children:R("flows.guided.openExpert")}),sx:{mt:1.5},children:R("flows.guided.advancedWarning")}),(0,d.jsxs)(bb.A,{spacing:1,sx:{mt:2},children:[(0,d.jsxs)(i.default,{sx:{px:1.5,py:1,borderRadius:3,color:"text.secondary",bgcolor:a=>(0,ah.X4)(a.palette.primary.main,.055),border:1,borderColor:"divider"},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,color:"primary.main",children:R("flows.guided.when").toLocaleUpperCase()}),(0,d.jsx)(j.A,{variant:"body2",fontWeight:700,children:R("flows.guided.someoneAsks")})]}),U.map((a,b)=>{var c,e,h;let k,l;return(0,d.jsxs)(f().Fragment,{children:[(0,d.jsx)(bE,{"aria-hidden":"true",sx:{alignSelf:"center",color:"text.disabled",fontSize:20}}),(0,d.jsxs)(D.A,{elevation:0,sx:{width:"100%",border:1,borderColor:g===a.id?"primary.main":"divider",borderRadius:3,overflow:"hidden",bgcolor:g===a.id?a=>(0,ah.X4)(a.palette.primary.main,.1):"background.default",boxShadow:g===a.id?a=>`0 0 0 3px ${(0,ah.X4)(a.palette.primary.main,.12)}`:"none"},children:[(0,d.jsx)(bl.A,{onClick:()=>n(a.id),sx:{display:"block",width:"100%",p:1.5,textAlign:"left"},children:(0,d.jsxs)(bb.A,{direction:"row",spacing:1.25,alignItems:"flex-start",children:[(0,d.jsx)(i.default,{sx:{display:"grid",width:30,height:30,flexShrink:0,placeItems:"center",borderRadius:2,color:"primary.contrastText",bgcolor:"primary.main",fontWeight:850},children:b+1}),(0,d.jsxs)(i.default,{sx:{minWidth:0,flex:1},children:[(0,d.jsx)(j.A,{variant:"overline",color:"primary.main",children:(c=a.data.type,"subflow"===c?R("flows.guided.type.subflow"):"signal"===c?R("flows.guided.type.signal"):R("flows.guided.type.process"))}),(0,d.jsx)(j.A,{variant:"subtitle1",fontWeight:800,children:(e=a,h=R,!(l=e.data.label?.trim())||bH.has(l)?h("process"===e.data.type?"flows.guided.default.process":"subflow"===e.data.type?"flows.guided.default.subflow":"signal"===e.data.type?"flows.guided.default.signal":"flows.guided.default.step"):l)}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.35,display:"-webkit-box",overflow:"hidden",WebkitBoxOrient:"vertical",WebkitLineClamp:2},children:(k=String(a.data.properties?.promptTemplate??"").trim())||(a.data.description?.trim()?a.data.description.trim():"subflow"===a.data.type?R("flows.guided.summary.subflow"):"signal"===a.data.type?R("flows.guided.summary.signal"):R("flows.guided.summary.process"))})]}),(0,d.jsx)(B.A,{color:"action",fontSize:"small"})]})}),"process"===a.data.type&&(0,d.jsxs)(bb.A,{spacing:1,sx:{px:1.5,pb:1.5},children:[M&&N&&O&&(0,d.jsx)(bt,{processNodeId:a.id,connections:J?.get(a.id)??[],beginnerMode:!0,heading:R("flows.guided.usesApps"),onConnect:M,onRemove:N,loadServers:O}),H&&P&&Q&&(0,d.jsx)(by,{processNodeId:a.id,currentFlowId:H,flows:I,connections:L?.get(a.id)??[],onConnect:P,onRemove:Q})]})]})]},a.id)}),(0,d.jsxs)(bb.A,{direction:{xs:"column",sm:"row"},spacing:1,alignItems:"stretch",children:[(0,d.jsx)(u.A,{fullWidth:!0,multiline:!0,minRows:2,maxRows:5,label:U.length?R("flows.guided.nextLabel"):R("flows.guided.goalLabel"),placeholder:R("flows.guided.goalPlaceholder"),value:S,disabled:s,onChange:a=>T(a.target.value),onKeyDown:a=>{(a.ctrlKey||a.metaKey)&&"Enter"===a.key&&X&&(a.preventDefault(),$())}}),(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bm.A,{}),disabled:!X,onClick:$,sx:{minWidth:{sm:150}},children:U.length?R("flows.guided.addStep"):R("flows.guided.createGoal")})]}),(0,d.jsx)(bE,{"aria-hidden":"true",sx:{alignSelf:"center",color:"text.disabled",fontSize:20}}),(0,d.jsxs)(i.default,{sx:{px:1.5,py:1,borderRadius:3,color:"text.secondary",bgcolor:a=>(0,ah.X4)(a.palette.success.main,.055),border:1,borderColor:"divider"},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,color:"success.main",children:R("flows.guided.then").toLocaleUpperCase()}),(0,d.jsx)(j.A,{variant:"body2",fontWeight:700,children:R("flows.guided.sendAnswer")})]})]})]})]})}),(0,d.jsx)(D.A,{elevation:0,sx:{p:{xs:2,sm:2.5},border:1,borderColor:W?"success.main":"divider",borderRadius:4,bgcolor:"background.paper"},children:(0,d.jsxs)(bb.A,{direction:"row",spacing:1.5,alignItems:"flex-start",children:[(0,d.jsx)(bI,{complete:W,children:"2"}),(0,d.jsxs)(i.default,{sx:{flex:1,minWidth:0},children:[(0,d.jsx)(j.A,{variant:"h6",children:R("flows.guided.nameTitle")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:1.5},children:R("flows.guided.nameHelp")}),(0,d.jsx)(u.A,{fullWidth:!0,size:"small",label:R("flows.guided.name"),value:h,error:!!l,helperText:l??(W?R("flows.guided.looksGood"):R("flows.guided.nameHint")),onChange:a=>m(a.target.value),onFocus:a=>{V&&a.currentTarget.select()}})]})]})})]}),U.length>0&&(0,d.jsx)(D.A,{elevation:0,sx:{p:{xs:2,sm:2.5},border:1,borderColor:Y?"primary.main":"divider",borderRadius:4,bgcolor:a=>(0,ah.X4)(a.palette.primary.main,Y?.075:.025)},children:(0,d.jsxs)(bb.A,{direction:{xs:"column",sm:"row"},spacing:1.5,alignItems:{sm:"center"},children:[(0,d.jsx)(bI,{children:"3"}),(0,d.jsxs)(i.default,{sx:{flex:1},children:[(0,d.jsx)(j.A,{variant:"h6",children:R("flows.guided.tryTitle")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:R("flows.guided.tryHelp")}),v&&U.some(a=>"process"===a.data.type)&&(0,d.jsx)(p.A,{severity:"warning",sx:{mt:1},children:R("flows.guided.needsAi")})]}),q&&(0,d.jsxs)(bb.A,{spacing:1,children:[G&&"assisted"===z&&(0,d.jsx)(k.A,{variant:"outlined",startIcon:(0,d.jsx)(bh.A,{}),disabled:0===U.length,onClick:G,children:R("flows.guided.checkAi")}),(0,d.jsx)(k.A,{size:"large",variant:"contained",startIcon:(0,d.jsx)(bG.A,{}),disabled:!Y,onClick:q,children:r?R("flows.guided.saving"):R("flows.guided.tryAgent")})]})]})})]})]})})};var bK=c(32787),bL=c(47189),bM=c(31975);let bN=(0,w.A)((0,d.jsx)("path",{fillRule:"evenodd",d:"M20 3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2M9 17H6c-.55 0-1-.45-1-1s.45-1 1-1h3c.55 0 1 .45 1 1s-.45 1-1 1m0-4H6c-.55 0-1-.45-1-1s.45-1 1-1h3c.55 0 1 .45 1 1s-.45 1-1 1m0-4H6c-.55 0-1-.45-1-1s.45-1 1-1h3c.55 0 1 .45 1 1s-.45 1-1 1m9.7 2.12-3.17 3.17c-.39.39-1.03.39-1.42 0l-1.41-1.42a.996.996 0 0 1 0-1.41c.39-.39 1.02-.39 1.41 0l.71.71 2.47-2.47c.39-.39 1.02-.39 1.41 0l.01.01c.38.39.38 1.03-.01 1.41"}),"FactCheckRounded");var bO=c(76458),bP=c(85552);function bQ(a){return JSON.parse(JSON.stringify(a))}function bR({open:a,flow:b,relatedFlows:c=[],nodeId:f,initialFocus:g="apps",modelId:h,models:l=[],onApply:m,onApplyRelatedFlows:n,onClose:o}){let{t,tp:w}=(0,au.s9)(),[x,y]=(0,e.useState)("suggesting"),[z,A]=(0,e.useState)(null),[B,C]=(0,e.useState)(new Set),[E,I]=(0,e.useState)(null),[J,L]=(0,e.useState)(new Set),[M,N]=(0,e.useState)(null),[O,Q]=(0,e.useState)(new Set),[R,S]=(0,e.useState)(null),[T,U]=(0,e.useState)(b),[V,W]=(0,e.useState)(h??""),[X,Y]=(0,e.useState)(!1),[Z,$]=(0,e.useState)(""),[_,aa]=(0,e.useState)([]),[ab,ac]=(0,e.useState)(null),ad=async a=>{y("checking"),ac(null);try{let b=await P.g.checkPlausibility({flow:a,relatedFlows:c,modelId:V||h||void 0,intendedContext:"chat"});S(b),Q(new Set),y("plausibility")}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.checkFailed")),y("plausibility")}},ae=async(a,b)=>{if(!f)return;let c=b||V||h||"";if(!c)return void y("agents");y("suggesting-agents"),ac(null);try{let b=await P.g.suggestAgentsForStep({flow:a,nodeId:f,modelId:c,goal:a.description});I(b),L(new Set(b.suggestions.map(a=>a.flowId))),y("agents")}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.agentSuggestFailed")),y("agents")}},af=(0,e.useMemo)(()=>z?.suggestions.filter(a=>B.has(`${a.server}\u0000${a.tool}`))??[],[B,z]),ag=(0,e.useMemo)(()=>E?.suggestions.filter(a=>J.has(a.flowId))??[],[E,J]),ah=(0,e.useMemo)(()=>{if(!R)return 0;let a=new Set([b.id,...c.map(a=>a.id)]);return R.patches.filter(b=>a.has(b.flowId)).length},[b.id,R,c]),ai=(0,e.useMemo)(()=>{if(!R)return[];let a=new Set([b.id,...c.map(a=>a.id)]),d=!!(V||h||l.length>0);return R.issues.map((c,e)=>{var f;let g=c.flowId??b.id,h=(f={...c,flowId:g},R.patches.filter(a=>a.flowId===f.flowId&&a.nodeId===f.nodeId&&a.reason===f.message));return{key:`issue-${e}`,issue:c,flowId:g,patches:h,selectable:a.has(g)&&(h.length>0||d)}})},[V,b.id,h,l.length,R,c]),aj=(0,e.useMemo)(()=>ai.filter(a=>a.selectable),[ai]),ak=(0,e.useMemo)(()=>ai.filter(a=>O.has(a.key)),[ai,O]),al=ak.some(a=>0===a.patches.length),am=V||h||"",an=aj.length>0&&aj.every(a=>O.has(a.key)),ao=async()=>{if(f&&V){y("suggesting"),ac(null);try{let a=await P.g.suggestToolsForStep({flow:T,relatedFlows:c,nodeId:f,modelId:V,goal:T.description});A(a),C(new Set(a.suggestions.map(a=>`${a.server}\u0000${a.tool}`))),y("tools")}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.suggestFailed")),y("tools")}}},ap=async()=>{f&&V&&await ae(T,V)},aq=async()=>{let a=Z.trim(),b=V||h||"";if(!f||!z||!b||!a)return;let d=[..._.map(a=>a.message),a];y("suggesting"),ac(null);try{let e=await P.g.suggestToolsForStep({flow:T,relatedFlows:c,nodeId:f,modelId:b,goal:T.description,feedback:d,previousSuggestion:z});A(e),C(new Set(e.suggestions.map(a=>`${a.server}\u0000${a.tool}`))),aa(b=>[...b,{message:a,response:e.assistantMessage}]),$(""),y("tools")}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.suggestFailed")),y("tools")}},ar=async()=>{if(f&&z){y("suggesting"),ac(null);try{let a=await P.g.applyToolsToStep({flow:T,nodeId:f,selections:af});U(a),N(z.proposedPrompt),m(a),await ae(a)}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.connectFailed")),y("tools")}}},as=async a=>{if(!f)return;let b=V||h||"";if(!b){ac(t("flows.assistance.needModel")),y("agents");return}y("improving"),ac(null);try{let d=await P.g.improvePromptForStep({flow:a,relatedFlows:c,nodeId:f,modelId:b,...M?{draftPrompt:M}:{}}),e={...a,nodes:a.nodes.map(a=>a.id===f?{...a,data:{...a.data,properties:{...a.data.properties??{},promptTemplate:d.prompt}}}:a)};U(e),m(e),await ad(e)}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.improvePromptFailed")),y("agents")}},at=async()=>{if(f&&E){y("suggesting-agents"),ac(null);try{let a=await P.g.applyAgentsToStep({flow:T,nodeId:f,selections:ag});U(a),m(a),await as(a)}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.connectAgentsFailed")),y("agents")}}},av=async()=>{if(R&&0!==ak.length){y("fixing"),ac(null);try{let a=ak.flatMap(a=>a.patches),b=function(a,b){let c=a.map(bQ),d=new Map(c.map(a=>[a.id,a]));for(let a of b){let b=d.get(a.flowId)?.nodes.find(b=>b.id===a.nodeId);if(!b)continue;let c={...b.data.properties??{}};for(let[b,d]of Object.entries(a.set))c[b]=d;for(let b of a.remove)delete c[b];b.data={...b.data,properties:c}}return c}([T,...c],a),d=new Map;for(let a of ak){if(a.patches.length>0)continue;let b=d.get(a.flowId)??[];b.push(a),d.set(a.flowId,b)}if(d.size>0){if(!am)throw Error(t("flows.assistance.needFixModel"));let a=await Promise.all([...d].map(async([a,c])=>{let d=b.find(b=>b.id===a);if(!d)throw Error(t("flows.assistance.fixFailed"));let e=await P.g.improveFlow(d,"Fix only the selected plausibility findings below. Preserve all other behavior, prompts, and graph structure unless a selected finding requires a change. Do not add capabilities or install tools.\n\nSELECTED FINDINGS:\n"+c.map(({issue:a})=>`- [${a.severity}/${a.code}] ${a.message}${a.nodeId?` (node: ${a.nodeId})`:""}`).join("\n"),am,{allowInstall:!1,relatedFlows:b.filter(b=>b.id!==a)});if(!e.success)throw Error(e.error);return e.flow})),c=new Map(a.map(a=>[a.id,a]));b=b.map(a=>c.get(a.id)??a)}let e=b.find(a=>a.id===T.id);if(!e)throw Error(t("flows.assistance.fixFailed"));U(e),m(e),n?.(c.map(a=>b.find(b=>b.id===a.id)??a)),o()}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.fixFailed")),y("plausibility")}}},aw="suggesting"===x||"suggesting-agents"===x||"improving"===x||"checking"===x||"fixing"===x;return(0,d.jsxs)(q.A,{open:a,onClose:aw?void 0:o,fullWidth:!0,maxWidth:"md",children:[(0,d.jsxs)(r.A,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(bh.A,{color:"primary"}),(0,d.jsx)(i.default,{sx:{flex:1,minWidth:0},children:"plausibility"===x||"checking"===x||"fixing"===x?t("flows.assistance.plausibilityTitle"):"agents"===x||"suggesting-agents"===x?t("flows.assistance.agentsTitle"):"improving"===x?t("flows.assistance.improvePromptTitle"):t("flows.assistance.toolsTitle")}),(0,d.jsxs)(i.default,{display:"flex",alignItems:"center",gap:.5,flexShrink:0,children:[(0,d.jsx)(bO.A,{}),(0,d.jsx)(bP.A,{variant:"icon"})]})]}),(0,d.jsxs)(s.A,{dividers:!0,children:[aw&&(0,d.jsxs)(bb.A,{alignItems:"center",spacing:1.5,sx:{py:5},children:[(0,d.jsx)(G.default,{}),(0,d.jsx)(j.A,{color:"text.secondary",children:"suggesting"===x?t("flows.assistance.finding"):"suggesting-agents"===x?t("flows.assistance.findingAgents"):"improving"===x?t("flows.assistance.improvingPrompt"):"fixing"===x?t("flows.assistance.fixing"):t("flows.assistance.checking")})]}),ab&&!aw&&(0,d.jsx)(p.A,{severity:"error",sx:{mb:2},children:ab}),("tools"===x&&!z||"agents"===x&&!E)&&(0,d.jsx)(bb.A,{spacing:2,children:0===l.length?(0,d.jsx)(p.A,{severity:"warning",children:t("flows.assistance.needModel")}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(p.A,{severity:"info",children:t("flows.assistance.chooseModel")}),(0,d.jsxs)(bB.A,{fullWidth:!0,size:"small",children:[(0,d.jsx)(bC.A,{id:"assistance-model-label",children:t("flows.assistance.aiHelper")}),(0,d.jsx)(bD.A,{labelId:"assistance-model-label",label:t("flows.assistance.aiHelper"),value:V,onChange:a=>W(String(a.target.value)),children:l.map(a=>(0,d.jsx)(K.A,{value:a.id,children:a.displayName||a.name},a.id))})]})]})}),"tools"===x&&z&&(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsx)(p.A,{severity:"info",children:t("flows.assistance.approvalHelp")}),0===z.suggestions.length?(0,d.jsx)(p.A,{severity:"success",children:t("flows.assistance.noTool")}):z.suggestions.map(a=>{let b=`${a.server}\u0000${a.tool}`;return(0,d.jsx)(D.A,{variant:"outlined",sx:{p:1.25},children:(0,d.jsx)(H.A,{control:(0,d.jsx)(bK.A,{checked:B.has(b),onChange:a=>{C(c=>{let d=new Set(c);return a.target.checked?d.add(b):d.delete(b),d})}}),label:(0,d.jsxs)(i.default,{children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,d.jsx)(F.A,{size:"small",label:a.server}),(0,d.jsx)(j.A,{fontWeight:800,children:a.tool})]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:a.reason})]})})},b)}),(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"subtitle2",children:t("flows.assistance.promptPreview")}),(0,d.jsx)(D.A,{variant:"outlined",sx:{p:1.25,mt:.5,whiteSpace:"pre-wrap",maxHeight:220,overflow:"auto"},children:(0,d.jsx)(j.A,{variant:"body2",component:"pre",sx:{m:0,fontFamily:"inherit",whiteSpace:"pre-wrap"},children:z.proposedPrompt})})]}),X&&(0,d.jsx)(D.A,{variant:"outlined",sx:{p:1.5},children:(0,d.jsxs)(bb.A,{spacing:1.25,children:[(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"subtitle2",children:t("flows.assistance.talkTitle")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:t("flows.assistance.talkHelp")})]}),_.map((a,b)=>(0,d.jsxs)(bb.A,{spacing:.75,children:[(0,d.jsxs)(i.default,{sx:{alignSelf:"flex-end",maxWidth:"85%",px:1.25,py:.75,bgcolor:"action.selected",borderRadius:2},children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:t("flows.assistance.you")}),(0,d.jsx)(j.A,{variant:"body2",children:a.message})]}),a.response&&(0,d.jsxs)(i.default,{sx:{alignSelf:"flex-start",maxWidth:"85%",px:1.25,py:.75,bgcolor:"action.hover",borderRadius:2},children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:t("flows.assistance.aiHelper")}),(0,d.jsx)(j.A,{variant:"body2",children:a.response})]})]},`${b}-${a.message}`)),(0,d.jsx)(u.A,{autoFocus:!0,fullWidth:!0,multiline:!0,minRows:2,label:t("flows.assistance.talkLabel"),placeholder:t("flows.assistance.talkPlaceholder"),value:Z,slotProps:{htmlInput:{maxLength:2e3}},onChange:a=>$(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.ctrlKey||a.metaKey)&&(a.preventDefault(),aq())}}),(0,d.jsx)(bb.A,{direction:"row",justifyContent:"flex-end",children:(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bh.A,{}),disabled:!Z.trim(),onClick:()=>void aq(),children:t("flows.assistance.reconsider")})})]})})]}),"agents"===x&&E&&(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsx)(p.A,{severity:"info",children:t("flows.assistance.agentApprovalHelp")}),0===E.suggestions.length?(0,d.jsx)(p.A,{severity:"success",children:t("flows.assistance.noAgent")}):E.suggestions.map(a=>(0,d.jsx)(D.A,{variant:"outlined",sx:{p:1.25},children:(0,d.jsx)(H.A,{control:(0,d.jsx)(bK.A,{checked:J.has(a.flowId),onChange:b=>{L(c=>{let d=new Set(c);return b.target.checked?d.add(a.flowId):d.delete(a.flowId),d})}}),label:(0,d.jsxs)(i.default,{children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,d.jsx)(bj.A,{color:"primary",fontSize:"small"}),(0,d.jsx)(j.A,{fontWeight:800,children:a.flowName})]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:a.reason})]})})},a.flowId))]}),"plausibility"===x&&R&&(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsx)(bb.A,{direction:"row",gap:1,flexWrap:"wrap",children:R.contexts.map(a=>(0,d.jsx)(F.A,{label:a.label},`${a.kind}-${a.sourceId??""}`))}),0===R.issues.length?(0,d.jsx)(p.A,{severity:"success",children:t("flows.assistance.plausible")}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:t("flows.assistance.selectionHelp")}),aj.length>1&&(0,d.jsx)(H.A,{sx:{alignSelf:"flex-start",ml:0},control:(0,d.jsx)(bK.A,{checked:an,indeterminate:O.size>0&&!an,onChange:a=>{Q(a.target.checked?new Set(aj.map(a=>a.key)):new Set)}}),label:t("flows.assistance.selectAll")}),ai.map(a=>{let{issue:c}=a,e=R.repairedFlows.find(b=>b.id===a.flowId),f=`${e&&e.id!==b.id?`${e.name}: `:""}${(0,a8.z)(c,t)}`;return(0,d.jsx)(p.A,{severity:c.severity,action:(0,d.jsx)(bK.A,{size:"small",checked:O.has(a.key),disabled:!a.selectable,title:a.selectable?void 0:t("flows.assistance.cannotFix"),inputProps:{"aria-label":t("flows.assistance.selectIssue",{issue:f})},onChange:b=>{Q(c=>{let d=new Set(c);return b.target.checked?d.add(a.key):d.delete(a.key),d})}}),sx:{"& .MuiAlert-action":{alignItems:"center",py:0}},children:f},a.key)})]}),al&&!am&&(0===l.length?(0,d.jsx)(p.A,{severity:"warning",children:t("flows.assistance.needFixModel")}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(p.A,{severity:"info",children:t("flows.assistance.chooseFixModel")}),(0,d.jsxs)(bB.A,{fullWidth:!0,size:"small",children:[(0,d.jsx)(bC.A,{id:"assistance-fix-model-label",children:t("flows.assistance.aiHelper")}),(0,d.jsx)(bD.A,{labelId:"assistance-fix-model-label",label:t("flows.assistance.aiHelper"),value:V,onChange:a=>W(String(a.target.value)),children:l.map(a=>(0,d.jsx)(K.A,{value:a.id,children:a.displayName||a.name},a.id))})]})]})),ah>0&&(0,d.jsx)(p.A,{severity:"info",children:w("flows.assistance.patch",ah)}),R.patches.length>ah&&(0,d.jsx)(p.A,{severity:"warning",children:w("flows.assistance.savedPatch",R.patches.length-ah)})]})]}),(0,d.jsxs)(v.A,{sx:{flexWrap:"wrap"},children:[(0,d.jsx)(k.A,{onClick:o,disabled:aw,children:t("flows.assistance.close")}),"improving"===x&&(0,d.jsx)(k.A,{variant:"contained",disabled:!0,startIcon:(0,d.jsx)(G.default,{size:16,color:"inherit"}),children:t("flows.inspector.improvingPrompt")}),"tools"===x&&!z&&l.length>0&&(0,d.jsx)(k.A,{variant:"contained",disabled:!V,onClick:()=>void ao(),children:t("flows.assistance.suggest")}),"agents"===x&&!E&&l.length>0&&(0,d.jsx)(k.A,{variant:"contained",disabled:!V,onClick:()=>void ap(),children:t("flows.assistance.suggestAgents")}),"tools"===x&&z&&0===z.suggestions.length&&(0,d.jsx)(k.A,{startIcon:(0,d.jsx)(bj.A,{}),onClick:()=>void ae(T),children:t("flows.assistance.continueAgents")}),"tools"===x&&z&&(0,d.jsx)(k.A,{startIcon:(0,d.jsx)(bM.A,{}),"aria-expanded":X,onClick:()=>Y(a=>!a),children:t("flows.assistance.talk")}),"tools"===x&&z&&z.suggestions.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.A,{onClick:()=>void ae(T),children:t("flows.assistance.skip")}),(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bL.A,{}),disabled:0===af.length,onClick:()=>void ar(),children:w("flows.assistance.connect",af.length)})]}),"agents"===x&&E&&0===E.suggestions.length&&(0,d.jsx)(k.A,{startIcon:(0,d.jsx)(bN,{}),onClick:()=>void as(T),children:t("flows.assistance.improveAndCheck")}),"agents"===x&&E&&E.suggestions.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.A,{onClick:()=>void as(T),children:t("flows.assistance.skipAgents")}),(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bj.A,{}),disabled:0===ag.length,onClick:()=>void at(),children:w("flows.assistance.connectAgents",ag.length)})]}),"plausibility"===x&&R&&aj.length>0?(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bi.A,{}),disabled:0===ak.length||al&&!am,onClick:()=>void av(),children:w("flows.assistance.fix",ak.length)}):null]})]})}var bS=c(18085),bT=c(49843);function bU({currentLabel:a,nameIsCustom:b,defaultLabel:c,previousAutoLabel:d,nextAutoLabel:e}){return!0===b?a&&a.length>0?a:e:!a||0===a.length||a===c||void 0!==d&&d.length>0&&a===d?e:a}let bV=(0,M.h)("components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/hooks/useModelManagement.ts");var bW=c(5485);let bX=(0,M.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/hooks/useServerConnection");function bY(a,b){let c=a.replace(/\s+/g," ").trim();if(c.length<=b)return c;let d=c.slice(0,b),e=d.lastIndexOf(" ");return`${(e>.6*b?d.slice(0,e):d).trimEnd()}…`}let bZ=(0,M.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/hooks/useHandoffTools"),b$=({nodeData:a,setNodeData:b})=>{let{t:c}=(0,au.s9)();return a?(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%",pr:2},children:[(0,d.jsx)(j.A,{variant:"h6",gutterBottom:!0,children:c("flows.process.configTitle")}),(0,d.jsx)(u.A,{fullWidth:!0,label:c("flows.mcpNode.label"),value:a.label||"",onChange:a=>b(b=>({...b,label:a.target.value,properties:{...b?.properties,nameIsCustom:!0}})),margin:"normal"}),(0,d.jsx)(u.A,{fullWidth:!0,label:c("flows.process.description"),value:a.description||"",onChange:c=>b({...a,description:c.target.value}),margin:"normal",multiline:!0,rows:2,helperText:c("flows.process.descriptionHelp")})]}):null};var b_=c(5101),b0=c(77078),b1=c(50873);let b2=({isLoadingModels:a,loadError:b,models:c,selectedModelId:e,handleModelSelect:f,isModelBound:g,handleUnbindModel:h})=>{let{t:l}=(0,au.s9)(),m=(0,bs.E)("models",c),n=a=>({key:a.id,content:(0,d.jsx)(bv.A,{model:a,selectable:!0,selected:e===a.id,onSelect:f})}),o=m.items.map(n),p=m.groups?m.groups.map(a=>({...a,items:a.items.map(n)})):null;return(0,d.jsxs)(i.default,{sx:{mt:4},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,children:l("flows.process.bindModel")}),(0,d.jsx)(i.default,{role:"radiogroup","aria-label":l("flows.process.bindModelAria"),children:(0,d.jsx)(b1.A,{isLoading:a,error:b,loadingMessage:l("flows.process.loadingModels"),emptyMessage:l("flows.process.noModels"),searchable:!0,searchPlaceholder:l("flows.process.searchModels"),searchTerm:m.searchTerm,onSearchChange:m.setSearchTerm,columns:{xs:12,sm:6},items:o,groups:p,collapsedKeys:m.collapsedKeys,onToggleGroup:m.toggleGroup})}),!a&&!b&&c.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(b_.A,{children:l(e?"flows.process.modelSelected":"flows.process.modelSelect")}),g&&(0,d.jsx)(i.default,{sx:{mt:2,display:"flex",justifyContent:"flex-end"},children:(0,d.jsx)(k.A,{startIcon:(0,d.jsx)(b0.A,{}),onClick:h,color:"primary",variant:"outlined",size:"small",children:l("flows.process.unbindModel")})})]})]})};var b3=c(50025),b4=c(4784),b5=c(56686),b6=c(77493),b7=c(62282),b8=c(98908),b9=c(16473),ca=c(52317),cb=c(78717);let cc=(0,M.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/ServerTools"),cd=({isLoadingServers:a,connectedMcpNodes:b,availableServers:c,onConnectMcpServer:f,serverToolsMap:g,serverStatuses:h,isLoadingTools:l,handleSelectToolServer:o,handleInsertToolBinding:p,selectedToolServerNodeId:q,selectedNodeId:r,isLoadingSelectedServerTools:s,promptBuilderRef:t,handleRetryServer:v,handleRestartServer:w})=>{let{t:x,tp:z}=(0,au.s9)(),A=q??b[0]?.nodeId??null,[B,C]=(0,e.useState)({}),[E,F]=(0,e.useState)(!1),H=(c??[]).filter(a=>!b.some(b=>b.serverName===a.name)),I=!!f&&H.length>0,J=(0,bs.E)("mcp",H),K=a=>({key:a.name,content:(0,d.jsx)(br.A,{name:a.name,status:a.status||"disconnected",path:a.rootPath||"",enabled:!a.disabled,transport:a.transport||"stdio",pickerMode:!0,onClick:()=>{var b;return b=a.name,void(F(!1),f?.(b))}})}),L=J.items.map(K),M=J.groups?J.groups.map(a=>({...a,items:a.items.map(K)})):null,N=(0,d.jsx)(bq.A,{open:E,onClose:()=>F(!1),title:x("flows.serverTools.connectTitle"),description:x("flows.serverTools.connectDescription"),emptyMessage:x("flows.serverTools.noneToConnect"),searchable:!0,searchPlaceholder:x("flows.serverTools.searchServers"),searchTerm:J.searchTerm,onSearchChange:J.setSearchTerm,columns:{xs:12,sm:6},items:L,groups:M,collapsedKeys:J.collapsedKeys,onToggleGroup:J.toggleGroup}),[O,P]=(0,e.useState)(""),[Q,R]=(0,e.useState)({}),S=(a,b,c)=>{if(a!==A){cc.debug("Node tab not selected, selecting node first",{selectedNodeId:a,serverName:b,toolName:c}),V(a);return}b&&c?(cc.debug("Inserting tool binding",{serverName:b,toolName:c}),p(b,c)):cc.warn("Cannot insert tool binding, server or tool name is undefined",{serverName:b,toolName:c})},T=a=>{try{let c=b.find(b=>b.nodeId===a);if(!c)return cc.warn(`Could not find connected MCP node with ID ${a}`),[];let d=c.enabledTools||[];return cc.debug(`Enabled tools for node ${a}: ${JSON.stringify(d)}`),Array.isArray(d)?d:[]}catch(b){return cc.error(`Error getting enabled tools for node ${a}:`,b),[]}},U=(a,b,c)=>{try{if(!c||!Array.isArray(c))return cc.warn(`Tools array is not available or not an array for server ${b}`),[];let d=T(a),e=c;if(d.length>0?e=c.filter(a=>a&&a.name&&d.includes(a.name)):(cc.debug(`No tools explicitly enabled for node ${a}, showing none.`),e=[]),O.trim()){let a=O.toLowerCase().trim();e=e.filter(b=>b.name&&b.name.toLowerCase().includes(a)||b.description&&b.description.toLowerCase().includes(a)||b.inputSchema&&JSON.stringify(b.inputSchema).toLowerCase().includes(a))}return e}catch(d){return cc.error(`Error filtering tools for node ${a} (server ${b}):`,d),c||[]}},V=a=>{o(a)},W=async(a,b)=>{b.stopPropagation(),cc.debug(`Retry button clicked for server: ${a}`),C(b=>({...b,[a]:!0}));try{v&&await v(a)}finally{setTimeout(()=>{C(b=>({...b,[a]:!1}))},500)}},X=async(a,b)=>{b.stopPropagation(),cc.debug(`Restart button clicked for server: ${a}`),C(b=>({...b,[a]:!0}));try{w&&await w(a)}finally{setTimeout(()=>{C(b=>({...b,[a]:!1}))},500)}};(0,e.useEffect)(()=>{b.length>0&&!q&&o(b[0].nodeId)},[b,q,o]);let Y=b.find(a=>a.nodeId===A),Z=Y?.serverName;return(0,d.jsxs)(i.default,{sx:{mt:4,display:"flex",flexDirection:"column",height:"100%"},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,children:x("flows.serverTools.title")}),a?(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(G.default,{size:20}),(0,d.jsx)(j.A,{color:"text.secondary",children:x("flows.serverTools.loadingNodes")})]}):0===b.length?(0,d.jsxs)(i.default,{sx:{p:2,border:"1px dashed rgba(0, 0, 0, 0.12)",borderRadius:1},children:[(0,d.jsx)(j.A,{color:"text.secondary",align:"center",children:x("flows.serverTools.noneConnected")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",align:"center",display:"block",sx:{mt:1},children:I?x("flows.serverTools.pickHelp"):x("flows.serverTools.connectHelp")}),I&&(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",mt:2},children:(0,d.jsx)(k.A,{variant:"contained",size:"small",startIcon:(0,d.jsx)(y.A,{}),onClick:()=>F(!0),children:x("flows.serverTools.connect")})}),N]}):(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",flexGrow:1,height:"calc(100% - 40px)"},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",mb:2,borderBottom:1,borderColor:"divider"},children:[(0,d.jsx)(bc.A,{value:A||b[0]?.nodeId||"",onChange:(a,b)=>V(b),variant:"scrollable",scrollButtons:"auto",sx:{flexGrow:1},children:b.map(a=>{if(!a||!a.nodeId||!a.serverName)return cc.warn("Skipping invalid MCP node in tabs:",a),null;let b=a.serverName,c=a.nodeId,e=a.status;B[b],l[b];let f=g[b]||[],h=T(c);return U(c,b,f).length,(0,d.jsx)(bd.A,{value:c,label:(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(j.A,{variant:"body2",sx:{color:"connected"===e?"success.main":"error"===e?"error.main":"text.secondary"},children:b}),h.length>0&&(0,d.jsx)(b3.A,{badgeContent:h.length,color:"primary",sx:{ml:1}})]}),sx:{textTransform:"none",minHeight:"48px",opacity:"connected"!==e?.7:1}},c)})}),I&&(0,d.jsx)(n.A,{title:x("flows.serverTools.connectAnother"),children:(0,d.jsx)(m.A,{size:"small",onClick:()=>F(!0),sx:{ml:1},children:(0,d.jsx)(y.A,{fontSize:"small"})})}),N]}),Y&&Z&&(0,d.jsxs)(i.default,{sx:{display:"flex",justifyContent:"flex-end",mb:2},children:[(0,d.jsx)(n.A,{title:x("flows.serverTools.retry",{server:Z}),children:(0,d.jsx)("span",{children:(0,d.jsx)(m.A,{size:"small",onClick:a=>W(Z,a),disabled:B[Z]||l[Z],children:B[Z]?(0,d.jsx)(G.default,{size:16}):(0,d.jsx)(b6.A,{fontSize:"small"})})})}),"connected"===Y.status&&w&&(0,d.jsx)(n.A,{title:x("flows.serverTools.restart",{server:Z}),children:(0,d.jsx)("span",{children:(0,d.jsx)(m.A,{size:"small",onClick:a=>X(Z,a),disabled:B[Z],sx:{ml:1},children:(0,d.jsx)(b7.A,{fontSize:"small"})})})})]}),(0,d.jsx)(u.A,{placeholder:x("flows.serverTools.searchTools"),variant:"outlined",size:"small",fullWidth:!0,value:O,onChange:a=>P(a.target.value),sx:{mb:2},InputProps:{startAdornment:(0,d.jsx)(ai.A,{position:"start",children:(0,d.jsx)(b8.A,{fontSize:"small"})})}}),(0,d.jsx)(D.A,{variant:"outlined",sx:{flexGrow:1,overflow:"auto",p:0,height:"calc(100% - 140px)"},children:Y&&Z&&(()=>{let a=Y.nodeId,b=Y.serverName;if("connected"!==Y.status)return(0,d.jsx)(i.default,{sx:{p:2,textAlign:"center"},children:(0,d.jsx)(j.A,{color:"text.secondary",children:x("flows.serverTools.notConnectedTools",{server:b})})},a);if(l[b])return(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",p:2},children:(0,d.jsx)(G.default,{size:24})},a);let c=g[b]||[],e=U(a,b,c);if(0===e.length){let b=T(a).length;return(0,d.jsx)(i.default,{sx:{p:2,textAlign:"center"},children:(0,d.jsx)(j.A,{color:"text.secondary",children:O.trim()?x("flows.serverTools.noMatch",{search:O}):0===b?x("flows.serverTools.noneEnabled"):x("flows.serverTools.noneAvailable")})},a)}return(0,d.jsx)(aF.A,{disablePadding:!0,children:e.map(c=>{var e;let f,g=(f=c.name,`${a}::${f}`),h=!!Q[g],k=c.description||x("flows.agentTools.noDescription"),l=(a=>{let b=Object.keys(a?.properties??{}).length;if(0===b)return x("flows.serverTools.parameter.none");let c=Array.isArray(a?.required)?a.required.length:0,d=c>0?z("flows.serverTools.required",c):"";return z("flows.serverTools.parameter",b,{required:d})})(c.inputSchema);return(0,d.jsx)(b4.A,{variant:"outlined",role:"button",tabIndex:0,"aria-label":x("flows.serverTools.addTool",{tool:c.name,server:b}),onClick:()=>S(a,b,c.name),onKeyDown:d=>{d.target===d.currentTarget&&("Enter"===d.key||" "===d.key)&&(d.preventDefault(),S(a,b,c.name))},sx:{mb:1,mx:1,mt:1,cursor:"pointer","&:hover":{boxShadow:1,bgcolor:"action.hover"},"&:focus-visible":{outline:"2px solid",outlineColor:"primary.main",outlineOffset:1}},children:(0,d.jsxs)(b5.A,{sx:{p:1.25,"&:last-child":{pb:1.25}},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"flex-start",gap:1},children:[(0,d.jsxs)(i.default,{sx:{flexGrow:1,minWidth:0},children:[(0,d.jsxs)(j.A,{variant:"subtitle2",component:"div",sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(b9.A,{fontSize:"small",sx:{mr:1,color:"primary.main",flexShrink:0}}),(0,d.jsx)(i.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:c.name})]}),(0,d.jsx)(n.A,{title:k,describeChild:!0,placement:"top-start",children:(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",tabIndex:0,sx:{mt:.5,display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:2,overflow:"hidden"},children:k})}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:.5},children:l})]}),(0,d.jsx)(n.A,{title:x(h?"flows.serverTools.collapse":"flows.serverTools.expand",{tool:c.name}),children:(0,d.jsx)(m.A,{size:"small","aria-label":x(h?"flows.serverTools.collapse":"flows.serverTools.expand",{tool:c.name}),"aria-expanded":h,"aria-controls":`${g}-details`,onClick:a=>{a.stopPropagation(),R(a=>({...a,[g]:!a[g]}))},children:h?(0,d.jsx)(cb.A,{}):(0,d.jsx)(ca.A,{})})})]}),h&&(0,d.jsxs)(i.default,{id:`${g}-details`,sx:{mt:1,pt:1,borderTop:1,borderColor:"divider"},onClick:a=>a.stopPropagation(),children:[(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{whiteSpace:"pre-wrap"},children:k}),c.inputSchema&&((e=c.inputSchema)&&e.properties?(0,d.jsxs)(i.default,{sx:{mt:1},children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{fontWeight:"medium"},children:x("flows.agentTools.parameters")}),(0,d.jsx)(i.default,{sx:{pl:1,mt:.5},children:Object.entries(e.properties).map(([a,b])=>(0,d.jsxs)(i.default,{sx:{mb:.5},children:[(0,d.jsxs)(j.A,{variant:"caption",component:"span",sx:{fontWeight:"medium"},children:[a,e.required?.includes(a)&&(0,d.jsx)(j.A,{variant:"caption",component:"span",color:"error.main",children:" *"}),": "]}),(0,d.jsx)(j.A,{variant:"caption",component:"span",color:"text.secondary",children:b.description||b.type||x("flows.agentTools.noDescription")})]},a))})]}):null)]})]})},c.name)})},a)})()})]})]})},ce=(0,M.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/ServerResources"),cf=({primary:a,secondary:b,chip:c,tooltip:e,onClick:f})=>(0,d.jsx)(b4.A,{variant:"outlined",onClick:f,title:e,sx:{mb:1,mx:1,mt:1,cursor:"pointer","&:hover":{boxShadow:1,bgcolor:"action.hover"}},children:(0,d.jsx)(b5.A,{sx:{p:2,"&:last-child":{pb:2}},children:(0,d.jsxs)(i.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[(0,d.jsxs)(i.default,{sx:{width:"100%"},children:[(0,d.jsxs)(j.A,{variant:"subtitle2",component:"div",sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(am.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),a]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5,wordBreak:"break-all"},children:b})]}),c&&(0,d.jsx)(F.A,{size:"small",label:c,sx:{ml:1,flexShrink:0}})]})})}),cg=({connectedMcpNodes:a,handleInsertResourceBinding:b,promptBuilderRef:c})=>{let{t:f}=(0,au.s9)(),[g,h]=(0,e.useState)(null),[k,l]=(0,e.useState)([]),[m,n]=(0,e.useState)([]),[o,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(),[t,v]=(0,e.useState)(""),w=a.find(a=>a.nodeId===g),x=w?.serverName;(0,e.useEffect)(()=>{a.length>0&&!g&&h(a[0].nodeId)},[a,g]);let y=(0,e.useCallback)(async a=>{q(!0),s(void 0);try{let b=await Q.S.listServerResources(a);l(b.resources||[]),n(b.resourceTemplates||[]),s(b.error)}catch(b){ce.warn(`Failed to load resources for ${a}`,b),s(b instanceof Error?b.message:f("flows.serverResources.loadFailed"))}finally{q(!1)}},[f]);(0,e.useEffect)(()=>{x?y(x):(l([]),n([]))},[x,y]);let z=a=>a.toLowerCase().includes(t.toLowerCase().trim()),A=t.trim()?k.filter(a=>z(a.name||"")||z(a.uri)||z(a.description||"")):k,B=t.trim()?m.filter(a=>z(a.name||"")||z(a.uriTemplate)||z(a.description||"")):m,C=a=>{x&&a&&b(x,a)};return(0,d.jsxs)(i.default,{sx:{mt:4,display:"flex",flexDirection:"column",height:"100%"},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,children:f("flows.serverResources.title")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{mb:1},children:f("flows.serverResources.help")}),0===a.length?(0,d.jsxs)(i.default,{sx:{p:2,border:"1px dashed rgba(0, 0, 0, 0.12)",borderRadius:1},children:[(0,d.jsx)(j.A,{color:"text.secondary",align:"center",children:f("flows.serverTools.noneConnected")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",align:"center",display:"block",sx:{mt:1},children:f("flows.serverResources.connectHelp")})]}):(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",flexGrow:1,height:"calc(100% - 40px)"},children:[(0,d.jsx)(bc.A,{value:g||a[0]?.nodeId||"",onChange:(a,b)=>h(b),variant:"scrollable",scrollButtons:"auto",sx:{mb:2,borderBottom:1,borderColor:"divider"},children:a.map(a=>(0,d.jsx)(bd.A,{value:a.nodeId,label:(0,d.jsx)(j.A,{variant:"body2",sx:{color:"connected"===a.status?"success.main":"error"===a.status?"error.main":"text.secondary"},children:a.serverName}),sx:{textTransform:"none",minHeight:48,opacity:"connected"!==a.status?.7:1}},a.nodeId))}),(0,d.jsx)(u.A,{placeholder:f("flows.serverResources.search"),variant:"outlined",size:"small",fullWidth:!0,value:t,onChange:a=>v(a.target.value),sx:{mb:2},InputProps:{startAdornment:(0,d.jsx)(ai.A,{position:"start",children:(0,d.jsx)(b8.A,{fontSize:"small"})})}}),r&&(0,d.jsx)(p.A,{severity:"warning",sx:{mb:2},children:r}),(0,d.jsx)(D.A,{variant:"outlined",sx:{flexGrow:1,overflow:"auto",p:0,height:"calc(100% - 140px)"},children:w&&"connected"!==w.status?(0,d.jsx)(i.default,{sx:{p:2,textAlign:"center"},children:(0,d.jsx)(j.A,{color:"text.secondary",children:f("flows.serverResources.notConnected",{server:x||""})})}):o?(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",p:2},children:(0,d.jsx)(G.default,{size:24})}):0===A.length&&0===B.length?(0,d.jsx)(i.default,{sx:{p:2,textAlign:"center"},children:(0,d.jsx)(j.A,{color:"text.secondary",children:t.trim()?f("flows.serverResources.noMatch",{search:t}):f("flows.serverResources.none")})}):(0,d.jsxs)(aF.A,{disablePadding:!0,children:[A.map(a=>(0,d.jsx)(cf,{primary:a.name||a.uri,secondary:a.description||a.uri,chip:a.mimeType,tooltip:f("flows.serverResources.add",{resource:a.name||a.uri}),onClick:()=>C(a.uri)},a.uri)),B.map(a=>(0,d.jsx)(cf,{primary:a.name||a.uriTemplate,secondary:a.description||a.uriTemplate,chip:"template",tooltip:f("flows.serverResources.addTemplate",{template:a.uriTemplate}),onClick:()=>C(a.uriTemplate)},a.uriTemplate))]})})]})]})},ch=(0,w.A)((0,d.jsx)("path",{d:"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7zm-6 .67 2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z"}),"SaveAlt"),ci=({wiredResources:a,promptBuilderRef:b})=>{let{t:c}=(0,au.s9)();return 0===a.length?null:(0,d.jsxs)(i.default,{sx:{mb:3},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,children:c("flows.wired.title")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{mb:1,display:"block"},children:c("flows.wired.help")}),(0,d.jsx)(aF.A,{disablePadding:!0,children:a.map(a=>(0,d.jsx)(b4.A,{variant:"outlined",sx:{mb:1,mt:1},children:(0,d.jsx)(b5.A,{sx:{p:2,"&:last-child":{pb:2}},children:(0,d.jsxs)(i.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[(0,d.jsxs)(i.default,{sx:{width:"100%"},children:[(0,d.jsxs)(j.A,{variant:"subtitle2",component:"div",sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(am.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),a.label]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5,wordBreak:"break-all"},children:"run"===a.scope?a.runName?c("flows.wired.temporaryNamed",{name:a.runName}):c("flows.wired.temporaryUnnamed"):c("flows.wired.mcp",{uri:a.uri?` ${a.uri}`:"",server:a.boundServer?c("flows.wired.onServer",{server:a.boundServer}):""})})]}),(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",flexShrink:0,ml:1,gap:.5},children:["run"===a.scope&&a.runName&&(0,d.jsx)(n.A,{title:c("flows.wired.insert",{reference:`\${res:${a.runName}}`}),children:(0,d.jsx)(F.A,{size:"small",icon:(0,d.jsx)(ch,{}),label:`\${res:${a.runName}}`,onClick:()=>{var c;(c=a.runName)&&b.current&&b.current.insertText(`\${res:${c}}`)},clickable:!0,sx:{maxWidth:220}})}),(0,d.jsx)(F.A,{size:"small",color:"produce"===a.role?"secondary":"default",label:"produce"===a.role?c("flows.wired.produce"):c("flows.wired.consume")})]})]})})},`${a.role}-${a.id}`))})]})},cj=(0,M.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/ServerTools/AgentTools"),ck=({handoffTools:a,isLoadingHandoffTools:b,handleInsertToolBinding:c,promptBuilderRef:f})=>{let{t:g,formatList:h}=(0,au.s9)(),[k,l]=(0,e.useState)(""),m=a.filter(a=>{if(!k.trim())return!0;let b=k.toLowerCase().trim();return a.name&&a.name.toLowerCase().includes(b)||a.description&&a.description.toLowerCase().includes(b)});return(0,d.jsxs)(i.default,{sx:{mt:4,display:"flex",flexDirection:"column",height:"100%"},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,children:g("flows.agentTools.title")}),b?(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(G.default,{size:20}),(0,d.jsx)(j.A,{color:"text.secondary",children:g("flows.agentTools.loading")})]}):0===a.length?(0,d.jsxs)(i.default,{sx:{p:2,border:"1px dashed rgba(0, 0, 0, 0.12)",borderRadius:1},children:[(0,d.jsx)(j.A,{color:"text.secondary",align:"center",children:g("flows.agentTools.none")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",align:"center",display:"block",sx:{mt:1},children:g("flows.agentTools.connectHelp")})]}):(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",flexGrow:1,height:"calc(100% - 40px)"},children:[(0,d.jsx)(u.A,{placeholder:g("flows.agentTools.search"),variant:"outlined",size:"small",fullWidth:!0,value:k,onChange:a=>l(a.target.value),sx:{mb:2},InputProps:{startAdornment:(0,d.jsx)(ai.A,{position:"start",children:(0,d.jsx)(b8.A,{fontSize:"small"})})}}),(0,d.jsx)(D.A,{variant:"outlined",sx:{flexGrow:1,overflow:"auto",p:0,height:"calc(100% - 56px)"},children:0===m.length?(0,d.jsx)(i.default,{sx:{p:2,textAlign:"center"},children:(0,d.jsx)(j.A,{color:"text.secondary",children:k.trim()?g("flows.agentTools.noMatch",{search:k}):g("flows.agentTools.none")})}):(0,d.jsx)(aF.A,{disablePadding:!0,children:m.map(a=>{var b;return(0,d.jsxs)(b4.A,{variant:"outlined",onClick:()=>{a.name?(cj.debug("Inserting handoff tool binding",{toolType:"handoff",toolName:a.name}),c("handoff",a.name)):cj.warn("Cannot insert handoff tool binding, tool name is undefined",{toolName:a.name})},sx:{mb:1,mx:1,mt:1,cursor:"pointer",position:"relative",bgcolor:"rgba(0, 0, 0, 0.04)","&:hover":{boxShadow:1,bgcolor:"rgba(0, 0, 0, 0.08)"}},children:[(0,d.jsx)(b5.A,{sx:{p:2,"&:last-child":{pb:2}},children:(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:(0,d.jsxs)(i.default,{sx:{width:"100%"},children:[(0,d.jsxs)(j.A,{variant:"subtitle2",component:"div",sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(b9.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),a.name]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:a.description||g("flows.agentTools.noDescription")}),a.inputSchema&&((b=a.inputSchema)&&b.properties&&0!==Object.keys(b.properties).length?(0,d.jsxs)(i.default,{sx:{mt:1},children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{fontWeight:"medium"},children:g("flows.agentTools.parameters")}),(0,d.jsx)(i.default,{sx:{pl:1,mt:.5},children:Object.entries(b.properties).map(([a,c])=>(0,d.jsxs)(i.default,{sx:{mb:.5},children:[(0,d.jsxs)(j.A,{variant:"caption",component:"span",sx:{fontWeight:"medium"},children:[a,b.required?.includes(a)&&(0,d.jsx)(j.A,{variant:"caption",component:"span",color:"error.main",children:" *"}),": "]}),(0,d.jsx)(j.A,{variant:"caption",component:"span",color:"text.secondary",children:c.description||c.type||g("flows.agentTools.noDescription")}),c.enum&&(0,d.jsx)(i.default,{sx:{pl:2,mt:.5},children:(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:g("flows.agentTools.options",{options:h(c.enum)})})})]},a))})]}):(0,d.jsx)(i.default,{sx:{mt:1},children:(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{fontStyle:"italic"},children:g("flows.agentTools.noParameters")})}))]})})}),(0,d.jsx)(n.A,{title:g("flows.agentTools.insert",{tool:a.name}),children:(0,d.jsx)(i.default,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0}})})]},a.name)})})})]})]})};var cl=c(85352);let cm=(0,M.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/ProcessNodePropertiesModal/PromptTemplateEditor"),cn=(0,e.forwardRef)((a,b)=>{let{t:c}=(0,au.s9)(),{promptTemplate:f,handlePromptChange:g,excludeModelPrompt:h,excludeStartNodePrompt:l,excludeSystemPrompt:m,nodeData:n,flowId:o,suggestions:q}=a,[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),x=(0,e.useRef)(null);(0,e.useImperativeHandle)(b,()=>({insertText:a=>{x.current&&x.current.insertText(a)},getMode:()=>x.current?x.current.getMode():"raw"}));let y=async()=>{if(cm.debug("fetchRenderedPrompt called with:",{flowId:o,nodeId:n?.id}),!o||!n||!n.id)return void w(c("flows.promptPreview.missingIds"));u(!0),w(null);try{let a=await fetch("/api/flow/prompt-renderer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({flowId:o,nodeId:n.id,options:{renderMode:"rendered",includeConversationHistory:!1,excludeModelPrompt:h,excludeStartNodePrompt:l,excludeSystemPrompt:m}})}),b=await a.json();if(!a.ok)throw Error(b.error||c("flows.promptPreview.failed"));cm.debug("Rendered prompt received",{promptLength:b.prompt?.length}),s(`${b.prompt}
1
+ (()=>{var a={};a.id=3080,a.ids=[2642,3080],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1708:a=>{"use strict";a.exports=require("node:process")},2642:(a,b,c)=>{"use strict";c.d(b,{g:()=>g});var d=c(74948);let e=(0,c(6680).h)("frontend/services/flow/index");class f{async loadFlows(){e.debug("loadFlows: Entering method");try{if(this.flowsCache)return e.debug("loadFlows: Using cached flows",{count:this.flowsCache.length}),this.flowsCache;let a=await fetch("/api/flow");if(!a.ok){let b=await a.json();throw Error(b.error||"Failed to load flows")}let b=await a.json();return e.debug("loadFlows: Loaded flows from API",{count:b.length}),this.flowsCache=b,b}catch(a){return e.warn("loadFlows: Failed to load flows:",a),[]}}async suggestToolsForStep(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"suggest-tools",...a})}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error||"Could not suggest connected tools.");return c}async generateNameForFlow(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"generate-name",...a})}),c=await b.json().catch(()=>null);if(!b.ok||"string"!=typeof c?.name)throw Error(c?.error||"Could not generate a workflow name.");return{name:c.name}}async applyToolsToStep(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"apply-tools",...a})}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error||"Could not connect the approved tools.");return c.flow}async suggestAgentsForStep(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"suggest-agents",...a})}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error||"Could not suggest connected agents.");return c}async applyAgentsToStep(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"apply-agents",...a})}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error||"Could not connect the approved agents.");return c.flow}async improvePromptForStep(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"improve-prompt",...a})}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error||"Could not improve this prompt.");return c}async checkPlausibility(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check-plausibility",...a})}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error||"Could not check flow plausibility.");return c}async getFlow(a){e.debug("getFlow: Entering method",{flowId:a});try{if(this.flowsCache){let b=this.flowsCache.find(b=>b.id===a);if(b)return e.debug("getFlow: Using cached flow",{flowId:a}),b}let b=await fetch(`/api/flow/${encodeURIComponent(a)}`);if(!b.ok){if(404===b.status)return e.debug(`getFlow: Flow ${a} not found`),null;let c=await b.json();throw Error(c.error||`Failed to get flow: ${a}`)}let c=await b.json();return e.debug("getFlow: Retrieved flow from API",{flowId:a}),c}catch(b){return e.warn(`getFlow: Failed to get flow ${a}:`,b),null}}async addFlow(a){e.debug("addFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch("/api/flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to add flow"}}let c=await b.json();return this.flowsCache&&this.flowsCache.push(c),e.debug("addFlow: Flow added successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("addFlow: Failed to add flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to add flow"}}}async generateFlow(a,b,c){e.debug("generateFlow: Entering method",{modelId:b,allowInstall:c?.allowInstall,allowSubflows:c?.allowSubflows,maxDepth:c?.maxDepth});try{let d=await fetch("/api/flow/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:a,modelId:b,allowInstall:c?.allowInstall===!0,allowSubflows:c?.allowSubflows!==!1,..."number"==typeof c?.maxDepth?{maxDepth:c.maxDepth}:{}})}),f=await d.json().catch(()=>null);if(!d.ok)return{success:!1,error:f?.error||"Failed to generate flow"};let g=Array.isArray(f.flows)&&f.flows.length>0?f.flows:[{flow:f.flow,validation:f.validation}];return e.debug("generateFlow: Draft generated",{flowId:f.flow?.id,flowCount:g.length,attempts:f.attempts,errorCount:f.validation?.errorCount,installedServers:f.installedServers?.length??0}),{success:!0,flow:f.flow,validation:f.validation,flows:g,rootFlowId:f.rootFlowId??f.flow?.id,attempts:f.attempts,installedServers:f.installedServers??[]}}catch(a){return e.warn("generateFlow: Failed to generate flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to generate flow"}}}async improveFlow(a,b,c,d){e.debug("improveFlow: Entering method",{flowId:a?.id,modelId:c,allowInstall:d?.allowInstall});try{let f=await fetch("/api/flow/improve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({flow:a,relatedFlows:d?.relatedFlows,description:b,modelId:c,allowInstall:d?.allowInstall===!0})}),g=await f.json().catch(()=>null);if(!f.ok)return{success:!1,error:g?.error||"Failed to improve flow"};return e.debug("improveFlow: Draft revised",{flowId:g.flow?.id,attempts:g.attempts,errorCount:g.validation?.errorCount,installedServers:g.installedServers?.length??0}),{success:!0,flow:g.flow,validation:g.validation,flows:Array.isArray(g.flows)&&g.flows.length>0?g.flows:[{flow:g.flow,validation:g.validation}],rootFlowId:g.rootFlowId??g.flow?.id,attempts:g.attempts,installedServers:g.installedServers??[]}}catch(a){return e.warn("improveFlow: Failed to improve flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to improve flow"}}}async convertProcessToSubflow(a,b,c,d){try{let e=await fetch(`/api/flow/${encodeURIComponent(a.id)}/convert-process-to-subflow`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({parentFlow:a,childFlow:b,processNodeId:c,expectedUpdatedAt:d})}),f=await e.json().catch(()=>null);if(!e.ok)return{success:!1,error:f?.error||"Failed to convert Process to Subflow."};let g=f.parentFlow,h=f.childFlow;if(this.flowsCache){let a=this.flowsCache.findIndex(a=>a.id===g.id);a>=0?this.flowsCache[a]=g:this.flowsCache.push(g),this.flowsCache.some(a=>a.id===h.id)||this.flowsCache.push(h)}return{success:!0,parentFlow:g,childFlow:h}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to convert Process to Subflow."}}}async updateFlow(a){e.debug("updateFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch(`/api/flow/${encodeURIComponent(a.id)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to update flow"}}let c=await b.json();if(this.flowsCache){let b=this.flowsCache.findIndex(b=>b.id===a.id);b>=0?this.flowsCache[b]=c:this.flowsCache.push(c)}return e.debug("updateFlow: Flow updated successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("updateFlow: Failed to update flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to update flow"}}}async deleteFlow(a){e.debug("deleteFlow: Entering method",{flowId:a});try{let b=await fetch(`/api/flow/${encodeURIComponent(a)}`,{method:"DELETE"});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to delete flow"}}return this.flowsCache&&(this.flowsCache=this.flowsCache.filter(b=>b.id!==a)),e.debug("deleteFlow: Flow deleted successfully",{flowId:a}),{success:!0}}catch(a){return e.warn("deleteFlow: Failed to delete flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to delete flow"}}}async listFlowVersions(a){e.debug("listFlowVersions: Entering method",{flowId:a});try{let b=await fetch(`/api/flow/${encodeURIComponent(a)}/versions`);if(!b.ok){let a=await b.json().catch(()=>null);throw Error(a?.error||"Failed to list flow versions")}let c=await b.json();return Array.isArray(c.versions)?c.versions:[]}catch(b){return e.warn(`listFlowVersions: Failed for flow ${a}:`,b),[]}}async getFlowVersion(a,b){e.debug("getFlowVersion: Entering method",{flowId:a,versionId:b});try{let c=await fetch(`/api/flow/${encodeURIComponent(a)}/versions/${encodeURIComponent(b)}`);if(!c.ok){if(404===c.status)return null;let a=await c.json().catch(()=>null);throw Error(a?.error||"Failed to get flow version")}return await c.json()}catch(c){return e.warn(`getFlowVersion: Failed for ${a}/${b}:`,c),null}}createNode(a,b){return e.debug("createNode: Entering method",{type:a,position:b}),{id:(0,d.A)(),type:a,position:b,data:{label:`${"mcp"===a?"MCP":a.charAt(0).toUpperCase()+a.slice(1)} Node`,type:a,properties:"process"===a?{inputMode:"full-history"}:"static"===a?{entries:[]}:"subflow"===a?{resultPresentation:"separate"}:{}}}}createStartNode(){return{id:(0,d.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}}}createNewFlow(a="NewFlow"){e.debug("createNewFlow: Entering method",{name:a});let b=Date.now();return{id:(0,d.A)(),name:a,createdAt:b,updatedAt:b,nodes:[this.createStartNode()],edges:[]}}createHistoryEntry(a,b){return e.debug("createHistoryEntry: Entering method"),{nodes:[...a],edges:[...b]}}generateSampleFlow(a="Sample Flow"){return e.debug("generateSampleFlow: Entering method",{name:a}),{id:(0,d.A)(),name:a,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]}}constructor(){this.flowsCache=null}}let g=new f},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},5485:(a,b,c)=>{"use strict";c.d(b,{v:()=>h});var d=c(67484),e=c(92646);let f=(0,c(6680).h)("frontend/hooks/useServerStatus");function g(a){return"stdio"===a.transport?a.args&&a.args.length>0?a.args[0]:"Unknown path":"websocket"===a.transport?a.websocketUrl||"Unknown URL":a.serverUrl||"Unknown URL"}function h(){let[a,b]=(0,d.useState)([]),[c,h]=(0,d.useState)(!0),[i,j]=(0,d.useState)(null),[k,l]=(0,d.useState)(new Set),m=(0,d.useCallback)(async()=>{f.debug("Loading servers"),h(!0),j(null);try{let a=await e.S.loadServerConfigs();if(!a||"error"in a){f.warn("Failed to load server configurations:",a?.error),j(a?.error||"Failed to load server configurations"),h(!1);return}let c=await Promise.all(a.map(async a=>{f.debug(`Getting status for server: ${a.name}`);let b=await e.S.getServerStatus(a.name),c="string"==typeof b?b:b.status,d="object"==typeof b&&b.message?b.message:void 0,h="object"==typeof b&&b.stderrOutput?b.stderrOutput:void 0,i="object"==typeof b?b.stdioOAuth:void 0,j=g(a);return{...a,path:j,status:c,error:d,stderrOutput:h,stdioOAuth:i}}));f.debug("Final server states:",c),b(c),h(!1)}catch(a){f.warn("Failed to load servers:",a),j("Failed to load servers"),h(!1)}},[]),n=(0,d.useCallback)(async(c,d)=>{f.debug(`Toggling server ${c} to ${d?"enabled":"disabled"}`);try{let g=a.find(a=>a.name===c);if(!g)return f.warn(`Server not found: ${c}`),!1;f.debug(`Found server ${c}, current disabled state: ${g.disabled}`);let h=await e.S.updateServerConfig(c,{disabled:!d});if(h.error)return f.warn("Failed to update server config:",[h.error,c]),!1;f.debug(`Updating server ${c} state in UI, new disabled state: ${!d}`),b(a=>a.map(a=>a.name===c?{...a,disabled:!d}:a)),f.info(`Successfully toggled server ${c} to ${d?"enabled":"disabled"}`);try{let a=await e.S.getServerStatus(c),d="string"==typeof a?a:a.status,f="object"==typeof a&&a.message?a.message:void 0,g="object"==typeof a&&a.stderrOutput?a.stderrOutput:void 0,h="object"==typeof a?a.stdioOAuth:void 0;b(a=>a.map(a=>a.name===c?{...a,status:d,error:f,stderrOutput:g,stdioOAuth:h}:a))}catch(a){f.warn(`Failed to get status for server ${c} after toggle:`,a)}return!0}catch(a){return f.warn("Failed to toggle server:",a),!1}},[a]),o=(0,d.useCallback)(async c=>{f.debug(`Deleting server: ${c}`);try{if(!a.find(a=>a.name===c))return f.warn("Server not found:",c),!1;let d=await e.S.deleteServerConfig(c);if(d.error)return f.warn("Failed to delete server config:",d.error),!1;return b(a=>a.filter(a=>a.name!==c)),!0}catch(a){return f.warn("Failed to delete server:",a),!1}},[a]),p=(0,d.useCallback)(async a=>{f.debug("Adding server:",a);try{let c=g(a),d={...a,path:c,status:"connecting",tools:[],env:a.env||{}};b(a=>[...a,d]),l(b=>new Set(b).add(a.name));let h=await e.S.updateServerConfig(a.name,a);if(h.error)return f.warn("Failed to update server config:",h.error),b(b=>b.map(b=>b.name===a.name?{...b,status:"error",error:h.error}:b)),l(b=>{let c=new Set(b);return c.delete(a.name),c}),!1;f.info(`Successfully added server ${a.name}`);try{let c=await e.S.getServerStatus(a.name),d="string"==typeof c?c:c.status,f="object"==typeof c&&c.message?c.message:void 0,g="object"==typeof c&&c.stderrOutput?c.stderrOutput:void 0,h="object"==typeof c?c.stdioOAuth:void 0;b(b=>b.map(b=>b.name===a.name?{...b,status:d,error:f,stderrOutput:g,stdioOAuth:h}:b))}catch(b){f.warn(`Failed to get status for server ${a.name} after adding:`,b)}return l(b=>{let c=new Set(b);return c.delete(a.name),c}),!0}catch(c){return f.warn("Failed to add server:",c),b(b=>b.map(b=>b.name===a.name?{...b,status:"error",error:c instanceof Error?c.message:"Unknown error during server addition"}:b)),l(b=>{let c=new Set(b);return c.delete(a.name),c}),!1}},[]),q=(0,d.useCallback)(async(a,c)=>{let d=c??a.name,h=d!==a.name;f.debug("Updating server:",a);try{b(b=>b.map(b=>b.name===d?{...a,path:g(a),status:b.status,error:b.error,stderrOutput:b.stderrOutput}:b));let c=await e.S.updateServerConfig(d,a);if(c.error){if(f.warn("Failed to update server config:",c.error),h)return await m(),!1;return b(b=>b.map(b=>b.name===a.name?{...b,status:"error",error:c.error}:b)),!1}f.info(`Successfully updated config for server ${a.name}`);try{let c=await e.S.getServerStatus(a.name),d="string"==typeof c?c:c.status,f="object"==typeof c&&c.message?c.message:void 0,g="object"==typeof c&&c.stderrOutput?c.stderrOutput:void 0,h="object"==typeof c?c.stdioOAuth:void 0;b(b=>b.map(b=>b.name===a.name?{...b,status:d,error:f,stderrOutput:g,stdioOAuth:h}:b))}catch(b){f.warn(`Failed to get status for server ${a.name} after config update:`,b)}return!0}catch(d){if(f.warn("Failed to update server:",d),h)return await m(),!1;let c=d instanceof Error?d.message:"Unknown error during update";return b(b=>b.map(b=>b.name===a.name?{...b,status:"error",error:c}:b)),!1}},[m]),r=(0,d.useCallback)(async(a,c)=>{let d=c&&c.trim()?c.trim():"";f.debug(`Setting folder for server ${a} to ${d||"(none)"}`);try{let c=await e.S.updateServerConfig(a,{folder:d});if("error"in c&&c.error)return f.warn("Failed to update server folder:",c.error),!1;return b(b=>b.map(b=>b.name===a?{...b,folder:d||void 0}:b)),!0}catch(a){return f.warn("Failed to set server folder:",a),!1}},[]),s=(0,d.useCallback)(async(a,c)=>{f.debug(`Setting favorite for server ${a} to ${c}`);try{let d=await e.S.updateServerConfig(a,{favorite:c});if("error"in d&&d.error)return f.warn("Failed to update server favorite:",d.error),!1;return b(b=>b.map(b=>b.name===a?{...b,favorite:c}:b)),!0}catch(a){return f.warn("Failed to set server favorite:",a),!1}},[]),t=(0,d.useCallback)(async(c,d)=>{f.debug(`Saving environment variables for server: ${c}`,d);try{if(!a.find(a=>a.name===c))return f.warn(`Server not found: ${c}`),!1;let g=await e.S.updateServerConfig(c,{env:d});if(g.error)return f.warn("Failed to update server config:",g.error),!1;return f.debug(`Updating environment variables in UI for server: ${c}`),b(a=>a.map(a=>a.name===c?{...a,env:d}:a)),f.info(`Successfully saved environment variables for server: ${c}`),!0}catch(a){return f.warn("Failed to save environment variables:",a),!1}},[a]);return{servers:a,isLoading:c,loadError:i,connectingServers:k,loadServers:m,toggleServer:n,retryServer:(0,d.useCallback)(async a=>{f.debug(`Retrying server status for: ${a}`);try{let c=await e.S.getServerStatus(a),d="string"==typeof c?c:c.status,f="object"==typeof c&&c.message?c.message:void 0,g="object"==typeof c&&c.stderrOutput?c.stderrOutput:void 0,h="object"==typeof c?c.stdioOAuth:void 0;return b(b=>b.map(b=>b.name===a?{...b,status:d,error:f,stderrOutput:g,stdioOAuth:h}:b)),!0}catch(a){return f.warn("Failed to retry server status:",a),!1}},[]),deleteServer:o,addServer:p,updateServer:q,setServerFolder:r,setServerFavorite:s,saveEnv:t}}},8332:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"M8.7 15.9 4.8 12l3.9-3.9c.39-.39.39-1.01 0-1.4a.984.984 0 0 0-1.4 0l-4.59 4.59c-.39.39-.39 1.02 0 1.41l4.59 4.6c.39.39 1.01.39 1.4 0s.39-1.01 0-1.4m6.6 0 3.9-3.9-3.9-3.9a.984.984 0 0 1 0-1.4c.39-.39 1.01-.39 1.4 0l4.59 4.59c.39.39.39 1.02 0 1.41l-4.59 4.6c-.39.39-1.01.39-1.4 0a.984.984 0 0 1 0-1.4"}),"CodeRounded")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},16084:(a,b,c)=>{Promise.resolve().then(c.bind(c,75540))},16300:(a,b,c)=>{"use strict";c.d(b,{O:()=>g});var d=c(67484),e=c(92646);let f=(0,c(6680).h)("frontend/hooks/useServerTools");function g(a){let[b,c]=(0,d.useState)([]),[g,h]=(0,d.useState)(!1),[i,j]=(0,d.useState)(null),[k,l]=(0,d.useState)(null),[m,n]=(0,d.useState)(null),[o,p]=(0,d.useState)(null),[q,r]=(0,d.useState)(0),[s,t]=(0,d.useState)(!1),u=(0,d.useRef)(null),v=(0,d.useCallback)(async(d=!1)=>{if(!a){c([]),p(null),j(null);return}if(n(a),!d&&k&&new Date().getTime()-k.getTime()<200&&b.length>0&&a===m)return void f.debug(`Rate limiting tool refresh for server: ${a}`);f.debug(`Loading tools for server: ${a}`),h(!0),c([]),p(null),j(null);try{let b=await e.S.listServerTools(a);if(a!==m)return void f.debug(`Server changed during tool loading from ${a} to ${m}`);if(b.error)f.warn(`Error loading tools for ${a}:`,b.error),j(b.error),c([]);else{let d=(b.tools||[]).map(a=>({...a,description:a.description||""}));f.debug(`Loaded ${d.length} tools for ${a}`),c(d),p(a),l(new Date),r(0)}}catch(b){if(a!==m)return void f.debug(`Server changed during tool loading from ${a} to ${m}`);f.warn(`Failed to load tools for server ${a}:`,b),j(`Failed to load tools: ${b instanceof Error?b.message:"Unknown error"}`),c([]),p(null)}finally{a===m&&h(!1)}},[a,k,b.length,m]),w=(0,d.useCallback)(()=>{if(!a)return;u.current&&(clearTimeout(u.current),u.current=null),t(!0);let b=Math.min(1e3*Math.pow(2,q),1e4);return f.debug(`Retrying tool load for ${a} in ${b}ms (attempt ${q+1})`),u.current=setTimeout(()=>{r(a=>a+1),v(!0),t(!1)},b),()=>{u.current&&clearTimeout(u.current)}},[a,q,v]);return{tools:b,toolsServerName:o,isLoading:g||s,error:i,loadTools:v,retryLoadTools:w,isRetrying:s,retryCount:q,testTool:(0,d.useCallback)(async(b,c,d)=>{if(!a)return{success:!1,output:"",error:"No server selected"};f.debug(`Testing tool ${b} on server ${a} with params:`,c);try{let g=await e.S.callTool(a,b,c,d);if(g.error)return f.warn(`Error calling tool ${b}:`,g.error),{success:!1,output:"",error:g.error};return f.debug(`Tool ${b} executed successfully:`,g),{success:!0,output:JSON.stringify(g,null,2)}}catch(a){return f.error(`Exception calling tool ${b}:`,a),{success:!1,output:"",error:a instanceof Error?a.message:"Unknown error occurred"}}},[a])}}},17891:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/get-segment-param")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19572:(a,b,c)=>{"use strict";c.d(b,{A:()=>t});var d=c(48249),e=c(67484),f=c(29184),g=c(55784),h=c(79705),i=c(20437),j=c(88458),k=c(53800),l=c(77217),m=c(36485),n=c(86471),o=c(86136),p=c(17852),q=c(9695),r=c(32166),s=c(30211);let t=({roots:a,onChange:b})=>{let{t:c}=(0,r.s9)(),t=Array.isArray(a)?a:[],[u,v]=(0,e.useState)(null),w=(a,c)=>{b(t.map((b,d)=>d===a?c:b))};return(0,d.jsxs)(f.default,{children:[(0,d.jsxs)(f.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,d.jsx)(o.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,d.jsx)(g.A,{variant:"subtitle1",children:c("mcp.local.roots.title")})]}),(0,d.jsx)(g.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:(0,d.jsx)(s.A,{message:"mcp.local.roots.help",values:{binding:(0,d.jsx)("code",{children:"${global:VAR}"})}})}),(0,d.jsx)(h.A,{spacing:1,children:t.map((a,e)=>(0,d.jsxs)(f.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(i.A,{size:"small",fullWidth:!0,placeholder:"/path/to/folder or file:///path",value:a,onChange:a=>w(e,a.target.value)}),(0,d.jsx)(j.A,{title:c("mcp.local.roots.browse"),children:(0,d.jsx)(k.A,{size:"small",onClick:()=>v(e),"aria-label":c("mcp.local.roots.browse"),children:(0,d.jsx)(p.A,{fontSize:"small"})})}),(0,d.jsx)(j.A,{title:c("mcp.local.roots.remove"),children:(0,d.jsx)(k.A,{size:"small",onClick:()=>b(t.filter((a,b)=>b!==e)),"aria-label":c("mcp.local.roots.remove"),children:(0,d.jsx)(n.A,{fontSize:"small"})})})]},e))}),(0,d.jsx)(l.A,{size:"small",startIcon:(0,d.jsx)(m.A,{}),onClick:()=>b([...t,""]),sx:{mt:1},children:c("mcp.local.roots.add")}),(0,d.jsx)(q.A,{open:null!==u,title:c("mcp.local.roots.choose"),initialPath:null!==u&&t[u]||void 0,onClose:()=>v(null),onSelect:a=>{null!==u&&w(u,a)}})]})}},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33439:(a,b,c)=>{"use strict";c.d(b,{d:()=>e});var d=c(1115);async function e(a,b){if(!a.body||"function"!=typeof a.body.getReader)throw Error("Response has no readable body to stream");let c=a.body.getReader(),e=new TextDecoder,f=(0,d.c)();try{for(;;){let{value:a,done:d}=await c.read();if(d)break;for(let c of f.push(e.decode(a,{stream:!0})))await b(c)}let a=e.decode();if(a)for(let c of f.push(a))await b(c);for(let a of f.flush())await b(a)}finally{try{c.releaseLock()}catch{}}}},33873:a=>{"use strict";a.exports=require("path")},37741:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>O,handler:()=>Q,routeModule:()=>P});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(14965),o=c(63747),p=c(24235),q=c(23938),r=c(261),s=c(66758),t=c(77243),u=c(26713),v=c(37527),w=c(22820),x=c(88216),y=c(47929),z=c(79551),A=c(71797),B=c(89125),C=c(86439),D=c(77068),E=c(27269),F=c(37525),G=c(61287),H=c(81494),I=c(70722),J=c(70753),K=c(43954),L=c(17891),M={};for(let a in G)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(M[a]=()=>G[a]);c.d(b,M);let N={children:["",{children:["flows",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,80236)),"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\flows\\page.tsx"]}]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,76537)),"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"]},[]]}.children,O={require:c,loadChunk:()=>Promise.resolve()},P=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/flows/page",pathname:"/flows",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:N},distDir:".next",relativeProjectDir:""});async function Q(a,b,d){var M,R,S,T,U;d.requestMeta&&(0,h.setRequestMeta)(a,d.requestMeta),P.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let V=!!(0,h.getRequestMeta)(a,"minimalMode"),W="/flows/page";"/index"===W&&(W="/");let X=await P.prepare(a,b,{srcPage:W,multiZoneDraftMode:!1});if(!X)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Y,query:Z,params:$,pageIsDynamic:_,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,serverActionsManifest:ad,clientReferenceManifest:ae,subresourceIntegrityManifest:af,prerenderManifest:ag,isDraftMode:ah,resolvedPathname:ai,revalidateOnlyGenerated:aj,routerServerContext:ak,nextConfig:al,parsedUrl:am,interceptionRoutePatterns:an,deploymentId:ao,clientAssetToken:ap}=X,aq=(0,r.normalizeAppPath)(W),{isOnDemandRevalidate:ar}=X,as=al.experimental.ppr&&!al.cacheComponents&&(0,K.isInterceptionRouteAppPath)(ai)?null:P.match(ai,ag),at=(null==as?void 0:as.route)??null,au=!!ag.routes[ai],av=a.headers["user-agent"]||"",aw=(0,u.getBotType)(av),ax=(0,q.isHtmlBotRequest)(a),ay=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],az=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[t.RSC_HEADER]),aA=(0,s.getIsPossibleServerAction)(a),aB=(0,m.checkIsAppPPREnabled)(al.experimental.ppr),aC=a.headers[y.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,h.getRequestMeta)(a,"postponed")&&V&&aB&&aA&&aC&&"string"==typeof aC){let e=parseInt(aC,10),{maxPostponedStateSize:f,maxPostponedStateSizeBytes:g}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize);if(!isNaN(e)&&e>0){if(e>g)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(f)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let i="1 MB",j=(null==(U=al.experimental.serverActions)?void 0:U.bodySizeLimit)??i,k=e+(j!==i?c(95726).parse(j):1048576),l=await (0,E.readBodyWithSizeLimit)(a,k);if(null===l)return b.statusCode=413,b.end("Request body exceeded limit. To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;if(l.length>=e){let b=l.subarray(0,e).toString("utf8");(0,h.addRequestMeta)(a,"postponed",b);let c=l.subarray(e);(0,h.addRequestMeta)(a,"actionBody",c)}else throw Object.defineProperty(Error(`invariant: expected ${e} bytes of postponed state but only received ${l.length} bytes`),"__NEXT_ERROR_CODE",{value:"E979",enumerable:!1,configurable:!0})}}if(!(0,h.getRequestMeta)(a,"postponed")&&aB&&"1"===a.headers[y.NEXT_RESUME_HEADER]&&"POST"===a.method){let{maxPostponedStateSize:c,maxPostponedStateSizeBytes:e}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize),f=await (0,E.readBodyWithSizeLimit)(a,e);if(null===f)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(c)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let g=f.toString("utf8");(0,h.addRequestMeta)(a,"postponed",g)}let aD=!0===P.isDev||!0===al.experimental.exposeTestingApiInProductionBuild,aE=aD&&("1"===a.headers[t.NEXT_INSTANT_PREFETCH_HEADER]||!(0,n.f)(a.headers[t.RSC_HEADER])&&"string"==typeof a.headers.cookie&&a.headers.cookie.includes(t.NEXT_INSTANT_TEST_COOKIE+"=")),aF=(aB||aE)&&((null==(M=ag.routes[aq]??ag.dynamicRoutes[aq])?void 0:M.renderingMode)==="PARTIALLY_STATIC"||aE&&(aD||(null==ak?void 0:ak.experimentalTestProxy)===!0)),aG=aE&&aF,aH=aG&&!0===P.isDev,aI=!1,aJ=aF?(0,h.getRequestMeta)(a,"postponed"):void 0,aK=null==(R=ag.routes[ai])?void 0:R.prefetchDataRoute,aL=aF&&az&&!ay&&!aK;V&&(aL=aL&&!!aJ);let aM=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),aN=(!aw||!aF)&&(!av||(0,q.shouldServeStreamingMetadata)(av,al.htmlLimitedBots)),aO=!!((at||au||ag.routes[aq])&&!(aw&&aF)),aP=aF&&!0===al.cacheComponents,aQ=!0===P.isDev||!aO||"string"==typeof aJ||(aP&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aL&&!V:aL),aR=!!aw&&aF,aS=(null==at?void 0:at.remainingPrerenderableParams)??[],aT=(null==at?void 0:at.fallback)===null&&((null==(S=at.fallbackRootParams)?void 0:S.length)??0)>0,aU=null;if(!ah&&aO&&!aQ&&!aA&&!aJ&&!aL){let a=as?"string"==typeof(null==at?void 0:at.fallback)?at.fallback:as.source:null;if(!0===al.experimental.partialFallbacks&&a&&(null==at?void 0:at.fallbackRouteParams)&&!aT){if(aS.length>0){let b,c=(b=new Map(aS.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,L.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==$?void 0:$[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace((0,o.buildDynamicSegmentPlaceholder)(d),f)}).join("/")||"/");aU=c!==a?c:null}}else aU=ai}let aV=aU;!aV&&(P.isDev||aO&&_&&(null==at?void 0:at.fallbackRouteParams)&&!aA)&&(aV=ai),P.isDev||ah||!aO||!az||aL||(0,k.d)(a.headers);let aW={...G,tree:N,handler:Q,routeModule:P,__next_app__:O};ad&&ae&&(0,p.setManifestsSingleton)({page:W,clientReferenceManifest:ae,serverActionsManifest:ad});let aX=a.method||"GET",aY=(0,g.getTracer)(),aZ=aY.getActiveScopeSpan(),a$=!!(null==ak?void 0:ak.isWrappedByNextServer),a_=!0===al.experimental.partialFallbacks&&aS.length>0?(null==at||null==(T=at.fallbackRouteParams)?void 0:T.filter(a=>!aS.some(b=>b.paramName===a.paramName)))??[]:[],a0=async()=>((null==ak?void 0:ak.render404)?await ak.render404(a,b,am,!1):b.end("This page could not be found"),null);try{let k,m=P.getVaryHeader(ai,an);b.setHeader("Vary",m);let n=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return P.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aY.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aX} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a),k&&k!==c&&(k.setAttribute("http.route",d),k.updateName(a))}else c.updateName(`${aX} ${W}`)})},p=(0,h.getRequestMeta)(a,"incrementalCache")||await P.getIncrementalCache(a,al,ag,V);null==p||p.resetRequestCache(),globalThis.__incrementalCache=p;let q=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let k={query:Z,params:$,page:aq,sharedContext:{buildId:Y,deploymentId:ao,clientAssetToken:ap},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aW,Component:(0,j.T)(aW),params:$,routeModule:P,page:W,postponed:f,shouldWaitOnAllReady:aR,serveStreamingMetadata:aN,supportsDynamicResponse:"string"==typeof f||aQ,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,subresourceIntegrityManifest:af,setCacheStatus:null==ak?void 0:ak.setCacheStatus,setIsrStatus:null==ak?void 0:ak.setIsrStatus,setReactDebugChannel:null==ak?void 0:ak.setReactDebugChannel,sendErrorsToBrowser:null==ak?void 0:ak.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),P.relativeProjectDir),isDraftMode:ah,botType:aw,isOnDemandRevalidate:ar,isPossibleServerAction:aA,assetPrefix:al.assetPrefix,nextConfigOutput:al.output,crossOrigin:al.crossOrigin,trailingSlash:al.trailingSlash,images:al.images,previewProps:ag.preview,enableTainting:al.experimental.taint,htmlLimitedBots:al.htmlLimitedBots,reactMaxHeadersLength:al.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:p,cacheLifeProfiles:al.cacheLife,basePath:al.basePath,serverActions:al.experimental.serverActions,logServerFunctions:"object"==typeof al.logging&&!!al.logging.serverFunctions,...aG||aH||aI?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aH}:{},cacheComponents:!!al.cacheComponents,experimental:{isRoutePPREnabled:aF,expireTime:al.expireTime,staleTimes:al.experimental.staleTimes,dynamicOnHover:!!al.experimental.dynamicOnHover,optimisticRouting:!!al.experimental.optimisticRouting,inlineCss:!!al.experimental.inlineCss,prefetchInlining:al.experimental.prefetchInlining??!1,authInterrupts:!!al.experimental.authInterrupts,cachedNavigations:!!al.experimental.cachedNavigations,clientTraceMetadata:al.experimental.clientTraceMetadata||[],clientParamParsingOrigins:al.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,D.parseMaxPostponedStateSize)(al.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>P.onRequestError(a,b,d,e,ak),err:(0,h.getRequestMeta)(a,"invokeError")}};i&&(k.renderOpts.supportsDynamicResponse=!1);let l=await n(e,k),{metadata:m}=l,{cacheControl:o,headers:q={},fetchTags:r,fetchMetrics:s}=m;if(r&&(q[y.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,aO&&(null==o?void 0:o.revalidate)===0&&!P.isDev&&!aF){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ai}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
+ see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:v.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:o}},r=async({hasResolved:c,previousCacheEntry:g,isRevalidating:i,span:j,forceStaticRender:k=!1})=>{let l=!1===P.isDev,m=c||b.writableEnded;try{var n;let f;if(ar&&aj&&!g&&!V)return(null==ak?void 0:ak.render404)?await ak.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(at&&(f=(0,w.parseFallbackField)(at.fallback)),!0===al.experimental.partialFallbacks&&(null==at?void 0:at.fallback)===null&&!aT&&aS.length>0&&(f=w.FallbackMode.PRERENDER),f===w.FallbackMode.PRERENDER&&(0,u.isBot)(av)&&(!aF||ax)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),(null==g?void 0:g.isStale)===-1&&(ar=!0),ar&&(f!==w.FallbackMode.NOT_FOUND||g)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),!V&&f!==w.FallbackMode.BLOCKING_STATIC_RENDER&&aV&&!m&&!ah&&_&&(l||!au)){if((l||at)&&f===w.FallbackMode.NOT_FOUND){if(al.adapterPath)return await a0();throw new C.NoFallbackError}if(aF&&(al.cacheComponents?!aL:!az)){let b=l&&"string"==typeof(null==at?void 0:at.fallback)?at.fallback:aq,f=(l||aG)&&(null==at?void 0:at.fallbackRouteParams)?(0,o.createOpaqueFallbackRouteParams)(at.fallbackRouteParams):aI?(0,o.getFallbackRouteParams)(aq,P):null;aG&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await P.handleResponse({cacheKey:b,req:a,nextConfig:al,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ag,isRoutePPREnabled:aF,responseGenerator:async()=>q({span:j,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:V});if(null===g)return null;if(g)return V||!aF||!(aS.length>0)||!0!==al.experimental.partialFallbacks||!aU||!p||ar||aI||aD||aE||ay||(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(aU,p,aF,!1,a=>q({span:a.span,postponed:void 0,fallbackRouteParams:a_.length>0?(0,o.createOpaqueFallbackRouteParams)(a_):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let s=ar||i||!aJ?void 0:aJ;if(aP&&!V&&p&&(aL||aA)&&!k){let b=await p.get(ai,{kind:v.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===v.CachedRouteKind.APP_PAGE&&(s=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(ai,p,aF,!1,a=>r({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aG||aH)&&void 0!==s)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:v.CachedRouteKind.PAGES,html:x.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let t=!P.isDev&&_&&(null==at?void 0:at.fallbackRouteParams)?(0,o.getPlaceholderFallbackRouteParams)($,at.fallbackRouteParams):null,y=t&&t.length>0?t:null==at?void 0:at.fallbackRouteParams,z=null!=t&&t.length>0,A=null;if(al.cacheComponents&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,h.getRequestMeta)(a,"resolvedRouteParamKeys");b&&b.size>0&&(A=at.fallbackRouteParams.filter(a=>!b.has(a.paramName)))}let B=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||z||aG&&!au)&&y?(0,o.createOpaqueFallbackRouteParams)(y):A&&A.length>0&&A.length<((null==at||null==(n=at.fallbackRouteParams)?void 0:n.length)??0)?(0,o.createOpaqueFallbackRouteParams)(A):aI?(0,o.getFallbackRouteParams)(aq,P):null;if((l||aG)&&al.cacheComponents&&!au&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,o.createOpaqueFallbackRouteParams)(y??at.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return q({span:j,postponed:s,fallbackRouteParams:B,forceStaticRender:k})}catch(b){throw(null==g?void 0:g.isStale)&&await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}},s=async c=>{var f,g,i,j,k,l;let m,n=await P.handleResponse({cacheKey:aU,responseGenerator:a=>r({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ar,isRoutePPREnabled:aF,req:a,nextConfig:al,prerenderManifest:ag,waitUntil:d.waitUntil,isMinimalMode:V});if(ah&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),P.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!n){if(aU)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let o="string"==typeof n.value.postponed;az&&!aA&&ao&&b.setHeader(y.NEXT_NAV_DEPLOYMENT_ID_HEADER,ao),aO&&!aL&&(!o||ay)&&(V||b.setHeader("x-nextjs-cache",ar?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(t.NEXT_IS_PRERENDER_HEADER,"1"));let{value:p}=n;if(aJ)m={revalidate:0,expire:void 0};else if(aL)m={revalidate:0,expire:void 0};else if(!P.isDev)if(ah)m={revalidate:0,expire:void 0};else if(aO){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});m={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??al.expireTime}}else m={revalidate:y.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(m={revalidate:0,expire:void 0});if(n.cacheControl=m,"string"==typeof aM&&(null==p?void 0:p.kind)===v.CachedRouteKind.APP_PAGE&&p.segmentData){b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=p.headers)?void 0:k[y.NEXT_CACHE_TAGS_HEADER];V&&aO&&c&&"string"==typeof c&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,c);let d=p.segmentData.get(aM);return void 0!==d?(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(d,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl}))}let s=aP?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(s){let b=(0,h.getRequestMeta)(a,"initURL")??a.url,c=b?(null==(l=(0,F.parseUrl)(b))?void 0:l.pathname)??b:void 0;if(await s(n,{url:c}))return null}if(p.headers){let a={...p.headers};for(let[c,d]of(V&&aO||delete a[y.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let u=null==(g=p.headers)?void 0:g[y.NEXT_CACHE_TAGS_HEADER];if(V&&aO&&u&&"string"==typeof u&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,u),!p.status||az&&aF||(b.statusCode=p.status),!V&&p.status&&H.RedirectStatusCode[p.status]&&az&&(b.statusCode=200),o&&!aL&&b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"1"),az&&!ah){if(void 0===p.rscData){if(p.html.contentType!==t.RSC_CONTENT_TYPE_HEADER)if(al.cacheComponents)return b.statusCode=404,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl});else throw Object.defineProperty(new I.InvariantError(`Expected RSC response, got ${p.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:p.html,cacheControl:n.cacheControl})}return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(p.rscData,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let w=p.html;if(aE&&aG){let c=!0===P.isDev?crypto.randomUUID():null;return w.pipeThrough(await (0,A.createInstantTestScriptInsertionTransformStream)(c)),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})}if(!o||V||az)return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:n.cacheControl});if(aG||aH)return w.push(new ReadableStream({start(a){a.enqueue(z.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}});let C=new TransformStream;return w.push(C.readable),q({span:c,postponed:p.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(C.writable)}).catch(a=>{C.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})};if(!a$||!aZ)return k=aY.getActiveScopeSpan(),await aY.withPropagatedContext(a.headers,()=>aY.trace(i.BaseServerSpan.handleRequest,{spanName:`${aX} ${W}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aX,"http.target":a.url}},s),void 0,!a$);await s(aZ)}catch(b){throw b instanceof C.NoFallbackError||await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}}},40052:(a,b,c)=>{Promise.resolve().then(c.bind(c,80236))},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},46571:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"m20.45 6 .49-1.06L22 4.45c.39-.18.39-.73 0-.91l-1.06-.49L20.45 2c-.18-.39-.73-.39-.91 0l-.49 1.06-1.05.49c-.39.18-.39.73 0 .91l1.06.49.49 1.05c.17.39.73.39.9 0M8.95 6l.49-1.06 1.06-.49c.39-.18.39-.73 0-.91l-1.06-.48L8.95 2c-.17-.39-.73-.39-.9 0l-.49 1.06-1.06.49c-.39.18-.39.73 0 .91l1.06.49L8.05 6c.17.39.73.39.9 0m10.6 7.5-.49 1.06-1.06.49c-.39.18-.39.73 0 .91l1.06.49.49 1.06c.18.39.73.39.91 0l.49-1.06 1.05-.5c.39-.18.39-.73 0-.91l-1.06-.49-.49-1.06c-.17-.38-.73-.38-.9.01m-1.84-4.38-2.83-2.83a.996.996 0 0 0-1.41 0L2.29 17.46c-.39.39-.39 1.02 0 1.41l2.83 2.83c.39.39 1.02.39 1.41 0L17.7 10.53c.4-.38.4-1.02.01-1.41m-3.5 2.09L12.8 9.8l1.38-1.38 1.41 1.41z"}),"AutoFixHighRounded")},58065:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3m-2 10H6V7h12zm-9-6c-.83 0-1.5-.67-1.5-1.5S8.17 10 9 10s1.5.67 1.5 1.5S9.83 13 9 13m7.5-1.5c0 .83-.67 1.5-1.5 1.5s-1.5-.67-1.5-1.5.67-1.5 1.5-1.5 1.5.67 1.5 1.5M8 15h8v2H8z"}),"SmartToyOutlined")},60389:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5-1-1h-5l-1 1H5v2h14V4z"}),"DeleteOutline")},60928:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2zM9 9h6c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1H9c-.55 0-1-.45-1-1v-8c0-.55.45-1 1-1m6.5-5-.71-.71c-.18-.18-.44-.29-.7-.29H9.91c-.26 0-.52.11-.7.29L8.5 4H6c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1z"}),"DeleteOutlineRounded")},61990:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"m18.04 7.99-.63-1.4-1.4-.63c-.39-.18-.39-.73 0-.91l1.4-.63.63-1.4c.18-.39.73-.39.91 0l.63 1.4 1.4.63c.39.18.39.73 0 .91l-1.4.63-.63 1.4c-.17.39-.73.39-.91 0m3.24 4.73-.32-.72c-.18-.39-.73-.39-.91 0l-.32.72-.73.32c-.39.18-.39.73 0 .91l.72.32.32.73c.18.39.73.39.91 0l.32-.72.73-.32c.39-.18.39-.73 0-.91zm-5.04 1.65 1.23.93c.4.3.51.86.26 1.3l-1.62 2.8c-.25.44-.79.62-1.25.42l-1.43-.6c-.2.13-.42.26-.64.37l-.19 1.54c-.06.5-.49.88-.99.88H8.38c-.5 0-.93-.38-.99-.88l-.19-1.54c-.22-.11-.43-.23-.64-.37l-1.43.6c-.46.2-1 .02-1.25-.42l-1.62-2.8c-.25-.44-.14-.99.26-1.3l1.23-.93V14c0-.12 0-.25.01-.37l-1.23-.93c-.4-.3-.51-.86-.26-1.3l1.62-2.8c.25-.44.79-.62 1.25-.42l1.43.6c.2-.13.42-.26.64-.37l.19-1.54c.05-.49.48-.87.98-.87h3.23c.5 0 .93.38.99.88l.19 1.54c.22.11.43.23.64.37l1.43-.6c.46-.2 1-.02 1.25.42l1.62 2.8c.25.44.14.99-.26 1.3l-1.23.93c.01.12.01.24.01.37s0 .24-.01.36M13 14c0-1.66-1.34-3-3-3s-3 1.34-3 3 1.34 3 3 3 3-1.34 3-3"}),"SettingsSuggestRounded")},62282:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 5V2L8 6l4 4V7c3.31 0 6 2.69 6 6 0 2.97-2.17 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93 0-4.42-3.58-8-8-8m-6 8c0-1.65.67-3.15 1.76-4.24L6.34 7.34C4.9 8.79 4 10.79 4 13c0 4.08 3.05 7.44 7 7.93v-2.02c-2.83-.48-5-2.94-5-5.91"}),"RestartAlt")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},73136:a=>{"use strict";a.exports=require("node:url")},75540:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e4});var d=c(48249),e=c(67484),f=c.n(e),g=c(19099),h=c(33480),i=c(29184),j=c(55784),k=c(77217),l=c(40006),m=c(53800),n=c(88458),o=c(13288),p=c(76108),q=c(54269),r=c(38592),s=c(4146),t=c(95816),u=c(20437),v=c(39266),w=c(32586);let x=(0,w.A)((0,d.jsx)("path",{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z"}),"ArrowBack");var y=c(36485);let z=(0,w.A)((0,d.jsx)("path",{d:"m19 9 1.25-2.75L23 5l-2.75-1.25L19 1l-1.25 2.75L15 5l2.75 1.25zm-7.5.5L9 4 6.5 9.5 1 12l5.5 2.5L9 20l2.5-5.5L17 12zM19 15l-1.25 2.75L15 19l2.75 1.25L19 23l1.25-2.75L23 19l-2.75-1.25z"}),"AutoAwesome");var A=c(45788),B=c(53089),C=c(72139),D=c(54882),E=c(17747),F=c(95747),G=c(52454),H=c(58247),I=c(44244),J=c(39179),K=c(74453),L=c(75296),M=c(6680),N=c(56024),O=c(74948),P=c(2642),Q=c(92646),R=c(41675),S=c(46899),T=c(12316);let U={start:{width:210,height:84},process:{width:210,height:104},finish:{width:210,height:84},mcp:{width:210,height:148},subflow:{width:210,height:104},resource:{width:210,height:120},signal:{width:210,height:92},trigger:{width:210,height:84},static:{width:210,height:104}},V={width:210,height:104};function W(a){let b=a.measured,c=U[a.type??""]??V;return{width:b?.width??a.width??c.width,height:b?.height??a.height??c.height}}function X(a,b){return a.x<b.x+b.w&&a.x+a.w>b.x&&a.y<b.y+b.h&&a.y+a.h>b.y}function Y(a){return a.data?.edgeType}function Z(a){return"mcp"===Y(a)}function $(a){return"resource"===Y(a)}function _(a,b,c){let d=new Set(a.map(a=>a.id)),e=new Map;for(let a of b){let b,f;if(!c(a))continue;let g=d.has(a.source),h=d.has(a.target);g&&!h?(b=a.source,f=a.target):h&&!g&&(b=a.target,f=a.source),b&&f&&!e.has(b)&&e.set(b,f)}return e}function aa(a){return 8*Math.round(a/8)}function ab(a,b,c={}){let{padding:d=24,maxPasses:e=60,maxStepPerPass:f=200,snapToGrid:g=!0,preserveCentroid:h=!0}=c;if(a.length<=1)return a;let i=a.filter(a=>"mcp"===a.type),j=a.filter(a=>"resource"===a.type),k=new Map([..._(i,b,Z),..._(j,b,$)]),l=a.filter(a=>!k.has(a.id)).map(a=>a.id),m=new Map;for(let[a,b]of k){let c=m.get(b);c?c.push(a):m.set(b,[a])}let n=new Map,o=new Map;for(let b of a)n.set(b.id,b.position.x),o.set(b.id,b.position.y);let p=new Map;for(let b of a)p.set(b.id,{x:b.position.x,y:b.position.y});let q=new Map;for(let b of a)q.set(b.id,W(b));let r=a=>{let b=p.get(a),{width:c,height:e}=q.get(a);return{x:b.x-d,y:b.y-d,w:c+2*d,h:e+2*d}};for(let[a,b]of m)!function(a,b,c,d,e){if(0===b.length)return;let f=[a,...b],g=a=>{let b=c.get(a),{width:f,height:g}=d.get(a);return{x:b.x-e,y:b.y-e,w:f+2*e,h:g+2*e}};if(!(()=>{for(let a=0;a<f.length;a++)for(let b=a+1;b<f.length;b++)if(X(g(f[a]),g(f[b])))return!0;return!1})())return;let h=c.get(a),i=d.get(a),j={left:[],right:[]};for(let a of b)(c.get(a).x-h.x<0?j.left:j.right).push(a);for(let a of["left","right"]){let b=j[a];if(0===b.length)continue;b.sort((a,b)=>{let d=c.get(a),e=c.get(b);return d.y-e.y||d.x-e.x||a.localeCompare(b)});let f="right"===a?1:-1,g=h.y;for(let a of b){let{width:b,height:j}=d.get(a),k=i.width/2+b/2+2*e+16;c.set(a,{x:h.x+f*k,y:g}),g+=j+2*e+16}}}(a,b,p,q,d);let s=new Map;for(let[a,b]of k){let c=p.get(b),d=p.get(a);s.set(a,{x:d.x-c.x,y:d.y-c.y})}let t=a=>{let b=r(a);for(let c of m.get(a)??[])b=function(a,b){let c=Math.min(a.x,b.x),d=Math.min(a.y,b.y);return{x:c,y:d,w:Math.max(a.x+a.w,b.x+b.w)-c,h:Math.max(a.y+a.h,b.y+b.h)-d}}(b,r(c));return b},u=new Set,v=(a,b,c)=>{if(0===b&&0===c)return;let d=p.get(a);for(let e of(p.set(a,{x:d.x+b,y:d.y+c}),u.add(a),m.get(a)??[])){let a=p.get(e);p.set(e,{x:a.x+b,y:a.y+c})}},w=[...l].sort((a,b)=>{let c=p.get(a),d=p.get(b);return c.y-d.y||c.x-d.x||a.localeCompare(b)});for(let a=0;a<e;a++){let a=!1;for(let b=0;b<w.length;b++)for(let c=b+1;c<w.length;c++){let d=w[b],e=w[c],g=function(a,b,c){if(!X(a,b))return null;let d=Math.min(a.x+a.w,b.x+b.w)-Math.max(a.x,b.x),e=Math.min(a.y+a.h,b.y+b.h)-Math.max(a.y,b.y),f=a.x+a.w/2,g=b.x+b.w/2,h=a.y+a.h/2,i=b.y+b.h/2,j=0,k=0;return d<=e?j=(f<=g?-1:1)*Math.min(d/2+1,c):k=(h<=i?-1:1)*Math.min(e/2+1,c),{dx:j,dy:k}}(t(d),t(e),f);g&&(v(d,g.dx,g.dy),v(e,-g.dx,-g.dy),a=!0)}if(!a)break}if(h){let b=0,c=0;for(let d of a){let a=p.get(d.id);b+=a.x-n.get(d.id),c+=a.y-o.get(d.id)}let d=b/a.length,e=c/a.length;if(0!==d||0!==e)for(let b of a){let a=p.get(b.id);p.set(b.id,{x:a.x-d,y:a.y-e})}}if(g)for(let a of u){if(k.has(a))continue;let b=p.get(a);p.set(a,{x:aa(b.x),y:aa(b.y)})}for(let[a,b]of k){let c=p.get(b),d=s.get(a);p.set(a,{x:c.x+d.x,y:c.y+d.y})}return a.map(a=>{let b=p.get(a.id);return b.x===a.position.x&&b.y===a.position.y?a:{...a,position:b}})}function ac(a,b,c={}){let{direction:d="TB",rankSep:e=120,nodeSep:f=80,mcpOffsetX:g=350,mcpStackY:h=120}=c,i=a.filter(a=>"mcp"===a.type),j=a.filter(a=>"resource"===a.type),k=a.filter(a=>"mcp"!==a.type&&"resource"!==a.type);if(k.length<=1)return a;let l=new Set(k.map(a=>a.id)),m=new Map;for(let a of(k.forEach(a=>m.set(a.id,new Set)),b))!(Z(a)||$(a))&&a.source!==a.target&&l.has(a.source)&&l.has(a.target)&&m.get(a.source).add(a.target);let n=new Map;k.forEach(a=>n.set(a.id,0));let o=k.length;for(let a=0;a<o;a++){let a=!1;for(let[b,c]of m){let d=n.get(b)+1;for(let b of c)n.get(b)<d&&(n.set(b,d),a=!0)}if(!a)break}let p=(a,c)=>{let d=_(a,b,c);for(let[a,b]of[...d])l.has(b)||d.delete(a);return d},q=p(i,Z),r=p(j,$),s=(a,b)=>{let c=new Map;for(let d of a){let a=b.get(d.id);if(!a)continue;let e=c.get(a);e?e.push(d):c.set(a,[d])}return c},t=s(i,q),u=s(j,r),v=a=>{let b=t.get(a.id)??[],c=u.get(a.id)??[],d=a=>0===a.length?0:a.reduce((a,b)=>a+W(b).height,0)+(a.length-1)*h;return{rightReach:0===b.length?0:g+(0===b.length?0:Math.max(...b.map(a=>W(a).width))),leftReach:0===c.length?0:g,stackHeight:Math.max(d(b),d(c))}},w=new Map;for(let a of k){let b=n.get(a.id),c=w.get(b);c?c.push(a):w.set(b,[a])}let x=[...w.keys()].sort((a,b)=>a-b),y=new Map,z=0;for(let a of x){let b=[...w.get(a)].sort((a,b)=>a.position.x-b.position.x||a.position.y-b.position.y||a.id.localeCompare(b.id)),c=0,g=0;for(let a of b){let{width:b,height:e}=W(a),h=v(a);"TB"===d?(c+=h.leftReach,y.set(a.id,{x:c,y:z}),c+=Math.max(b,h.rightReach)+f,g=Math.max(g,e,h.stackHeight)):(c+=h.leftReach,y.set(a.id,{x:z,y:c}),c+=Math.max(e,h.rightReach)+f,g=Math.max(g,b,h.stackHeight))}z+=g+e}let A=(a,b)=>{for(let[c,d]of a){let a=y.get(c);if(!a)continue;let e=a.y;for(let c of d)y.set(c.id,{x:a.x+b*g,y:e}),e+=W(c).height+h}};A(t,1),A(u,-1);let B=[...y.values()].map(a=>a.x),C=B.length?Math.max(...B)+g:0,D=0,E=a=>{for(let b of a)y.has(b.id)||(y.set(b.id,{x:C,y:D}),D+=W(b).height+f)};return E(i),E(j),ab(a.map(a=>{let b=y.get(a.id);return b?{...a,position:b}:a}),b,{preserveCentroid:!1,snapToGrid:!1})}var ad=c(5853),ae=c(3362);function af(a){return{id:a.id,label:a.data.label,type:a.type||a.data.type}}var ag=c(88248);c(7062);var ah=c(85152),ai=c(64287),aj=c(91309),ak=c(48653),al=c(19433),am=c(25912),an=c(75864),ao=c(34123),ap=c(87526),aq=c(30942),ar=c(96239),as=c(92101),at=c(66319),au=c(32166);let av=a=>[{type:"process",label:a("flows.palette.process"),shortLabel:a("flows.palette.processShort"),description:a("flows.palette.processHelp")},{type:"finish",label:a("flows.palette.finish"),shortLabel:a("flows.palette.finishShort"),description:a("flows.palette.finishHelp")},{type:"mcp",label:a("flows.palette.mcp"),shortLabel:a("flows.palette.mcpShort"),description:a("flows.palette.mcpHelp")},{type:"subflow",label:a("flows.palette.subflow"),shortLabel:a("flows.palette.subflowShort"),description:a("flows.palette.subflowHelp")},{type:"resource",label:a("flows.palette.resource"),shortLabel:a("flows.palette.resourceShort"),description:a("flows.palette.resourceHelp")},{type:"signal",label:a("flows.palette.signal"),shortLabel:a("flows.palette.signalShort"),description:a("flows.palette.signalHelp")},{type:"static",label:a("flows.palette.static"),shortLabel:a("flows.palette.staticShort"),description:a("flows.palette.staticHelp")},{type:"trigger",label:a("flows.palette.trigger"),shortLabel:a("flows.palette.triggerShort"),description:a("flows.palette.triggerHelp")}],aw=(0,M.h)("components/flow/FlowBuilder/NodePalette.tsx"),ax="NodePalette",ay=(0,C.Ay)(D.A)(({theme:a})=>({padding:a.spacing(1.4),width:"218px",height:"100%",minHeight:0,flexShrink:0,display:"flex",flexDirection:"column",gap:a.spacing(1.2),overflowY:"auto",border:`1px solid ${a.palette.divider}`,borderRadius:16,backgroundColor:"dark"===a.palette.mode?"rgba(17, 22, 41, 0.86)":"rgba(255, 255, 255, 0.9)",boxShadow:"dark"===a.palette.mode?"0 16px 45px rgba(0,0,0,.22)":"0 16px 45px rgba(49,45,99,.09)",backdropFilter:"blur(18px)",[a.breakpoints.down("md")]:{width:"100%",height:"68px",padding:a.spacing(.65),gap:a.spacing(.6),alignItems:"flex-start",overflowX:"auto",overflowY:"hidden"}})),az=(0,C.Ay)(D.A,{shouldForwardProp:a=>"nodeType"!==a})(({theme:a,nodeType:b})=>({padding:a.spacing(1.25),width:"100%",minWidth:0,borderRadius:"12px",backgroundColor:(0,ah.X4)(a.palette.background.paper,.72),border:`1px solid ${a.palette.divider}`,borderLeft:`3px solid ${"process"===b?a.palette.primary.main:"finish"===b?a.palette.success.main:"subflow"===b?a.palette.warning.main:"resource"===b?at.nH:"signal"===b?at.vp:"trigger"===b?at.$Q:"static"===b?at.H0:a.palette.info.main}`,boxShadow:"none",transition:"transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease",cursor:"grab","&:hover":{transform:"translateY(-2px)",borderColor:(0,ah.X4)("process"===b?a.palette.primary.main:"finish"===b?a.palette.success.main:"subflow"===b?a.palette.warning.main:"resource"===b?at.nH:"signal"===b?at.vp:"trigger"===b?at.$Q:"static"===b?at.H0:a.palette.info.main,.55),boxShadow:`0 0 0 1px ${"process"===b?a.palette.primary.main:"finish"===b?a.palette.success.main:"subflow"===b?a.palette.warning.main:"resource"===b?at.nH:"signal"===b?at.vp:"trigger"===b?at.$Q:"static"===b?at.H0:a.palette.info.main}, 0 14px 30px rgba(0,0,0,0.12)`},"&:active":{cursor:"grabbing"},[a.breakpoints.down("md")]:{width:64,minWidth:64,minHeight:54,padding:a.spacing(.55),flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",borderLeftWidth:2}})),aA=(0,C.Ay)(i.default,{shouldForwardProp:a=>"nodeType"!==a})(({theme:a,nodeType:b})=>({display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:`1px solid ${"process"===b?a.palette.primary.light:"finish"===b?a.palette.success.light:"subflow"===b?a.palette.warning.light:"resource"===b?"#4DB6AC":"signal"===b?"#B39DDB":"trigger"===b?at.C2:"static"===b?at.IP:a.palette.info.light}`,marginBottom:a.spacing(1),paddingBottom:a.spacing(.5),[a.breakpoints.down("md")]:{width:"100%",marginBottom:0,paddingBottom:0,borderBottom:0,justifyContent:"center"}})),aB=(0,C.Ay)(i.default)(({theme:a})=>({display:"flex",alignItems:"center",gap:"8px",[a.breakpoints.down("md")]:{flexDirection:"column",justifyContent:"center",gap:2}})),aC=({authoringMode:a="guided",onAddNode:b})=>{aw.debug(`${ax}: Entering component`);let{t:c}=(0,au.s9)(),f=(0,e.useMemo)(()=>av(c),[c]),[g,h]=(0,e.useState)(""),k=(0,e.useRef)(null);(0,e.useEffect)(()=>{let a=()=>{k.current?.focus(),k.current?.select()};return document.addEventListener("openFlowQuickAdd",a),()=>document.removeEventListener("openFlowQuickAdd",a)},[]);let l=(0,e.useCallback)(a=>{aw.debug(`${ax}.addNodeFromPalette: Adding ${a} node`),b?.(a),aw.info(`${ax}.addNodeFromPalette: Requested ${a} node`)},[b]),m=(0,e.useMemo)(()=>{let b=g.trim().toLowerCase();return f.filter(b=>"advanced"===a||"process"===b.type).filter(a=>!b||`${a.label} ${a.description} ${a.shortLabel}`.toLowerCase().includes(b))},[a,f,g]);return aw.debug(`${ax}: Rendering component`),(0,d.jsxs)(ay,{elevation:2,children:[(0,d.jsxs)(i.default,{sx:{display:{xs:"none",md:"flex"},alignItems:"baseline",justifyContent:"space-between"},children:[(0,d.jsx)(j.A,{className:"node-palette-title",variant:"subtitle1",fontWeight:800,children:c("flows.palette.title")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:"A"})]}),(0,d.jsx)(u.A,{inputRef:k,value:g,onChange:a=>h(a.target.value),size:"small",placeholder:c("flows.palette.search"),inputProps:{"aria-label":c("flows.palette.searchAria")},sx:{display:{xs:"none",md:"flex"}},InputProps:{startAdornment:(0,d.jsx)(ai.A,{position:"start",children:(0,d.jsx)(ar.A,{fontSize:"small"})})}}),(0,d.jsxs)(i.default,{display:"flex",flexDirection:{xs:"row",md:"column"},gap:{xs:.75,md:1},width:{xs:"max-content",md:"100%"},children:[m.map(a=>(0,d.jsxs)(az,{nodeType:a.type,elevation:1,draggable:!0,role:"button",tabIndex:0,"aria-label":`${a.label}: ${a.description}`,title:`${a.label} \xe2€” ${a.description}`,onDragStart:b=>((a,b)=>{aw.debug(`${ax}.onDragStart: Entering method with nodeType=${b}`),a.dataTransfer.setData("application/reactflow",b),a.dataTransfer.effectAllowed="move";let d=document.createElement("div"),e=f.find(a=>a.type===b);d.textContent=e?.label??c("flows.palette.step"),Object.assign(d.style,{padding:"10px",background:"white",border:"1px solid #ccc",borderRadius:"8px"}),document.body.appendChild(d),aw.debug(`${ax}.onDragStart: Created drag preview element`);try{a.dataTransfer.setDragImage(d,75,25),aw.debug(`${ax}.onDragStart: Set drag image with offset (75, 25)`)}catch(a){aw.error(`${ax}.onDragStart: Error setting drag image:`,a)}setTimeout(()=>{document.body.removeChild(d),aw.debug(`${ax}.onDragStart: Removed drag preview element`)},0),aw.debug(`${ax}.onDragStart: Drag operation initialized`)})(b,a.type),onDragEnd:b=>{var c;return c=a.type,void aw.debug(`${ax}.onDragEnd: Drag operation ended for nodeType=${c}`)},onClick:()=>l(a.type),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),l(a.type))},children:[(0,d.jsx)(aA,{nodeType:a.type,children:(0,d.jsxs)(aB,{children:[(a=>{switch(a){case"process":return(0,d.jsx)(aq.default,{color:"primary"});case"finish":return(0,d.jsx)(ak.A,{color:"success"});case"mcp":return(0,d.jsx)(ap.A,{color:"info"});case"subflow":return(0,d.jsx)(al.A,{color:"warning"});case"resource":return(0,d.jsx)(am.A,{sx:{color:at.nH}});case"signal":return(0,d.jsx)(an.A,{sx:{color:at.vp}});case"trigger":return(0,d.jsx)(ao.A,{sx:{color:at.$Q}});case"static":return(0,d.jsx)(as.A,{sx:{color:at.H0}});default:return(0,d.jsx)(aj.A,{color:"primary"})}})(a.type),(0,d.jsx)(j.A,{variant:"caption",fontWeight:"bold",sx:{display:{xs:"-webkit-box",md:"none"},maxWidth:"100%",overflow:"hidden",WebkitBoxOrient:"vertical",WebkitLineClamp:2,overflowWrap:"anywhere",textAlign:"center",fontSize:"0.6rem",lineHeight:1},children:a.shortLabel}),(0,d.jsx)(j.A,{variant:"subtitle2",fontWeight:"bold",sx:{display:{xs:"none",md:"block"}},children:a.label})]})}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{display:{xs:"none",md:"block"}},children:a.description})]},a.type)),0===m.length&&(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{px:.5,py:1},children:c("flows.palette.noMatches")})]})]})};var aD=c(62971),aE=c(70743),aF=c(20158),aG=c(30630),aH=c(47786),aI=c(30960),aJ=c(52711);let aK=(0,w.A)((0,d.jsx)("path",{fillRule:"evenodd",d:"M20 3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2M10 17H5v-2h5zm0-4H5v-2h5zm0-4H5V7h5zm4.82 6L12 12.16l1.41-1.41 1.41 1.42L17.99 9l1.42 1.42z"}),"FactCheck");var aL=c(8800),aM=c(33335),aN=c(138),aO=c(1408);let aP=/\$\{var:([^}]+)\}/g,aQ=/^[A-Za-z_][\w-]*$/;function aR(a){return"string"==typeof a&&aQ.test(a)}let aS=/\$\{kv:([^}]+)\}/g,aT=["global","flow","folder"];function aU(a){let b=(a??"").trim(),c=b.indexOf("/");if(c>0){let a=b.slice(0,c);if(aT.includes(a))return{scope:a,key:b.slice(c+1).trim()}}return{scope:"folder",key:b}}function aV(a,b){let c=(b??"").trim();return c?"folder"===a?c:`${a}/${c}`:""}let aW=/^[A-Za-z_][\w-]*$/;function aX(a){return"string"==typeof a&&aW.test(a)}function aY(a){return a.data?.type??a.type??"unknown"}function aZ(a){return a.data?.label||a.id}function a$(a){return a.data?.edgeType==="mcp"}function a_(a){return a.data?.edgeType==="resource"}function a0(a){return a$(a)||a_(a)}function a1(a,b,c){let d=new Map(b.map(a=>[a.id,a])),e=new Set;for(let b of c){if(!a$(b))continue;let c=null;if(b.source===a?c=b.target:b.target===a&&(c=b.source),!c)continue;let f=d.get(c);if(!f||"mcp"!==aY(f))continue;let g=f.data?.properties?.boundServer;"string"==typeof g&&g&&e.add(g)}return e}function a2(a,b,c){let d=new Map(b.map(a=>[a.id,a])),e=[],f=new Set;for(let b of c){if(a0(b))continue;let c=null;b.source===a?c=b.target:b.target===a&&b.data?.bidirectional&&(c=b.source),!c||f.has(c)||(f.add(c),e.push(c))}let g=e.map(a=>d.get(a)).filter(a=>!!a).map(a=>({id:a.id,label:a.data?.label,type:aY(a)}));return new Set((0,ad.E9)(g).values())}function a3(a){let b=new Map,c=(a,c)=>{b.has(a)||b.set(a,[]),b.get(a).push(c)};for(let b of a)!a0(b)&&(c(b.source,b.target),b.data?.bidirectional&&c(b.target,b.source));return b}let a4=/\$\{(?:var|res):[^}]*\}/;function a5(a){let b=a.replace(/\S*\$\{[^}]*\}\S*/g," ");return/(?:^|[\s("'`])file:\/\/(?:\/|[^/\s]+\/)[^\s<>"'`]+/i.test(b)||/(?:^|[\s("'`])(?:[A-Za-z]:[\\/][^\s<>"'`]*|\\\\[^\\\s<>"'`]+\\[^\\\s<>"'`]+(?:\\[^\s<>"'`]*)?)/.test(b)||/(?:^|[\s("'`])\/(?!\/)[^\s<>"'`]+/.test(b)}function a6(a){if("string"!=typeof a)return!1;let b=a.trim();if(!b)return!1;if(/^\$\{global:[^{}]+\}$/.test(b))return!0;if(b.includes("${"))return!1;if(/^file:/i.test(b))try{let a=new URL(b);if("file:"!==a.protocol)return!1;let c=""!==a.pathname.replace(/\/+$/,"");return!!a.hostname||c}catch{return!1}return!b.includes("\0")}function a7(a,b={}){let c=[],d=Array.isArray(a?.nodes)?a.nodes:[],e=Array.isArray(a?.edges)?a.edges:[],f=(a,b,d,e)=>c.push({severity:a,code:b,message:d,nodeId:e?.id,nodeLabel:e?aZ(e):void 0}),g=new Map((b.models??[]).map(a=>[a.id,a])),h=new Map((b.servers??[]).map(a=>[a.name,a])),i=!!b.models,j=!!b.servers,k=d.filter(a=>"start"===aY(a)),l=d.filter(a=>"finish"===aY(a)),m=d.filter(a=>"process"===aY(a)),n=d.filter(a=>"mcp"===aY(a));if(0===k.length)f("error","no-start-node","The flow has no Start node, so it has no entry point.");else if(k.length>1)for(let a of k.slice(1))f("error","multiple-start-nodes","The flow has more than one Start node; only one is allowed.",a);for(let a of(0===l.length&&f("warning","no-finish-node","The flow has no Finish node; it will run but never reaches a defined end."),m)){let b=a.data?.properties??{},c=b.boundModel;if(c){if(i&&!g.has(c)){let c="string"==typeof b.modelName&&b.modelName?` (was "${b.modelName}")`:"";f("error","process-model-missing",`Process node "${aZ(a)}" is bound to a model that no longer exists${c}.`,a)}}else f("error","process-missing-model",`Process node "${aZ(a)}" has no model bound.`,a)}for(let a of n){let b=(a.data?.properties??{}).boundServer;if(b){if(j&&!h.has(b))f("warning","mcp-server-missing",`MCP node "${aZ(a)}" is bound to server "${b}", which isn't in your current MCP server list. It may be offline (e.g. not connected), renamed, or removed — if it was renamed or removed, rebind this node.`,a);else if(j){let c=h.get(b);if(c.status&&"connected"!==c.status){let d="disabled"===c.status?"disabled":`not connected (${c.status})`;f("warning","mcp-server-disconnected",`MCP node "${aZ(a)}" is bound to server "${b}", which is currently ${d}. It will provide tools again once it reconnects.`,a)}}}else f("warning","mcp-missing-server",`MCP node "${aZ(a)}" is not bound to a server.`,a);e.some(b=>a$(b)&&(b.source===a.id||b.target===a.id))||f("warning","mcp-node-unconnected",`MCP node "${aZ(a)}" is not connected to any Process node.`,a)}if(b.fileAccessMcp){let a=b.fileAccessMcp,c=Object.entries(a).filter(([,a])=>a.configured&&!a.disabled&&"usable"===a.usability).map(([a])=>a),d=Object.values(a).some(a=>a.configured&&!a.disabled&&"unknown"===a.usability);for(let b of m)if((function(a){let b=a.data?.properties??{},c=[];return"string"==typeof b.promptTemplate&&b.promptTemplate&&c.push(b.promptTemplate),"isolated"===b.inputMode&&"string"==typeof b.isolatedPrompt&&b.isolatedPrompt&&c.push(b.isolatedPrompt),c})(b).some(a5)){if(0===c.length){d||f("warning","process-filepath-mcp-unavailable",`Process node "${aZ(b)}" contains a literal filepath, but no configured file-access MCP server is currently available. Enable or reconnect one so this flow can access the path.`,b);continue}!d&&c.every(b=>!function(a,b,c){return!![...Array.isArray(b.roots)?b.roots:[],...c.filter(b=>b.data?.properties?.boundServer===a).flatMap(a=>{let b=a.data?.properties?.roots;return Array.isArray(b)?b:[]})].some(a6)||a6(b.rootPath)}(b,a[b],n))&&f("warning","process-filepath-mcp-roots-missing",`Process node "${aZ(b)}" contains a literal filepath, but the available file-access MCP servers have no effective roots configured. Add roots globally or on the corresponding MCP node in this flow.`,b)}}for(let a of d.filter(a=>"resource"===aY(a))){let b=a.data?.properties??{},c="run"===b.scope?"run":"mcp",d="string"==typeof b.boundServer?b.boundServer:"",g="string"==typeof b.uri?b.uri:"",i="string"==typeof b.runName?b.runName.trim():"";"mcp"!==c||d&&g||f("warning","resource-missing-binding",`Resource node "${aZ(a)}" has no ${!d?"server":"resource URI"} bound; connected steps will receive nothing.`,a),"run"!==c||i||f("warning","resource-missing-binding",`Resource node "${aZ(a)}" is a run artifact with no name; give it a name so steps can produce/consume it.`,a),"run"===c&&i&&!aR(i)&&f("warning","resource-run-name",`Resource node "${aZ(a)}" is named "${i}", which is not a valid artifact name (letters, digits, _ and - only, not starting with a digit); it will be awkward to reference with \${res:...}.`,a),"mcp"===c&&d&&j&&!h.has(d)&&f("warning","resource-server-missing",`Resource node "${aZ(a)}" is bound to server "${d}", which isn't in your current MCP server list.`,a);let k=e.filter(b=>a_(b)&&(b.source===a.id||b.target===a.id));0===k.length&&f("warning","resource-node-unconnected",`Resource node "${aZ(a)}" is not connected to any Process node.`,a);let l=k.filter(b=>b.target===a.id);"mcp"===c&&l.length>0&&f("error","resource-produce-static",`Resource node "${aZ(a)}" is a static MCP resource, but a step writes INTO it. Only run artifacts (scope "run") can be produced by a step — flip the edge or make this a run artifact.`,a),"run"===c&&l.length>1&&f("warning","resource-multiple-producers",`Resource node "${aZ(a)}" is produced by ${l.length} steps; the last writer wins. Consider one producer per artifact.`,a),"run"===c&&0===l.length&&k.length>0&&f("warning","resource-consumed-never-produced",`Resource node "${aZ(a)}" is consumed but no step in this flow produces it; it resolves to nothing unless an earlier run captured it.`,a)}for(let a of d.filter(a=>"signal"===aY(a))){let b=a.data?.properties??{};("string"==typeof b.topic?b.topic.trim():"")||f("warning","signal-missing-topic",`Signal node "${aZ(a)}" has no topic; it emits nothing. Give it a topic that a flow-event trigger can listen for.`,a)}let o=d.filter(a=>"static"===aY(a)),p=null;for(let a of o){let b=a.data?.properties??{},c=Array.isArray(b.entries)?b.entries:[];if(!0===b.injectOnce&&(p=p??a3(e),!function(a,b){let c=new Set,d=[...b.get(a)??[]];for(;d.length;){let e=d.shift();if(e===a)return!0;c.has(e)||(c.add(e),d.push(...b.get(e)??[]))}return!1}(a.id,p)&&f("warning","static-injectonce-without-loop",`Static node "${aZ(a)}" has "inject once" enabled but is never re-entered (it is not on a loop), so the setting has no effect.`,a)),0===c.length){f("warning","static-no-entries",`Static node "${aZ(a)}" has no entries; it injects nothing into the conversation.`,a);continue}c.forEach((b,c)=>{if(!b||"toolCall"!==b.kind)return;("string"==typeof b.toolName?b.toolName.trim():"")||f("error","static-toolcall-missing-name",`Static node "${aZ(a)}": tool-call entry #${c+1} has no tool name.`,a);let d="string"==typeof b.argumentsJson?b.argumentsJson.trim():"";if(d&&a4.test(d))f("warning","static-toolcall-unverifiable-json",`Static node "${aZ(a)}": tool-call entry #${c+1} contains runtime placeholders, so its JSON arguments can only be validated when the flow runs.`,a);else if(d)try{JSON.parse(d)}catch{f("error","static-toolcall-invalid-json",`Static node "${aZ(a)}": tool-call entry #${c+1} has invalid JSON arguments.`,a)}})}if(k.length>0){let a=a3(e);for(let b of k)a.get(b.id)?.length||f("error","start-no-outgoing","The Start node is not connected to anything; the flow cannot run.",b);let b=function(a,b){let c=new Set(a),d=[...a];for(;d.length;){let a=d.shift();for(let e of b.get(a)??[])c.has(e)||(c.add(e),d.push(e))}return c}(k.map(a=>a.id),a);for(let a of[...m,...l])b.has(a.id)||f("warning","unreachable-node",`${"finish"===aY(a)?"Finish":"Process"} node "${aZ(a)}" is not reachable from the Start node.`,a)}for(let a of d.filter(a=>"subflow"===aY(a))){let b=e.filter(b=>!a0(b)&&(b.source===a.id||b.target===a.id&&!!b.data?.bidirectional));b.length>1&&f("error","subflow-multiple-outgoing",`Subflow node "${aZ(a)}" has ${b.length} outgoing connections; a subflow can only have one (either A > B > C or a bidirectional A <> B).`,a);let c=a.data?.properties??{},g="string"==typeof c.subflowId&&c.subflowId?c.subflowId:void 0,h=Array.isArray(c.parallelSubflowIds)?c.parallelSubflowIds.filter(a=>"string"==typeof a&&!!a):[];g&&h.length>0&&f("error","subflow-both-targets",`Subflow node "${aZ(a)}" sets both a single "subflowId" and "parallelSubflowIds"; use one or the other.`,a);let i=!0===c.mapOverList;i&&h.length>0&&f("error","subflow-map-and-parallel",`Subflow node "${aZ(a)}" combines "mapOverList" with "parallelSubflowIds"; map-over-list runs a single child once per item and cannot be combined with parallel fan-out.`,a),i&&!g&&0===h.length&&f("error","subflow-map-no-child",`Subflow node "${aZ(a)}" has "mapOverList" but no child flow ("subflowId"); select a flow to run once per item.`,a);let j=Array.isArray(c.spawnBriefs)?c.spawnBriefs.filter(a=>"string"==typeof a&&""!==a.trim()):[];j.length>0&&!g&&f("error","subflow-spawn-no-child",`Subflow node "${aZ(a)}" has spawn briefs but no sub-agent flow ("subflowId"); select the flow to spawn once per brief.`,a),j.length>0&&h.length>0&&f("error","subflow-spawn-and-parallel",`Subflow node "${aZ(a)}" combines "spawnBriefs" with "parallelSubflowIds"; spawn briefs run one sub-agent per brief and cannot be combined with a multi-flow fan-out list.`,a),j.length>0&&i&&f("error","subflow-spawn-and-map",`Subflow node "${aZ(a)}" combines "spawnBriefs" with "mapOverList"; use one lane source or the other.`,a);let k="string"==typeof c.parallelSubflowIdsVar?c.parallelSubflowIdsVar.trim():"";k&&(aR(k)||f("warning","subflow-parallel-var-name",`Subflow node "${aZ(a)}" reads dynamic fan-out targets from "${k}", which is not a valid variable name (letters, digits, _ and - only, not starting with a digit); it will be awkward to capture with \${var:...}.`,a),i&&f("error","subflow-map-and-parallel-var",`Subflow node "${aZ(a)}" combines "mapOverList" with dynamic fan-out ("parallelSubflowIdsVar"); map-over-list runs a single child once per item and cannot be combined with fan-out.`,a),d.some(a=>{let b=a.data?.properties?.captureVariable;return"string"==typeof b&&b.trim()===k})||f("warning","subflow-parallel-var-uncaptured",`Subflow node "${aZ(a)}" reads dynamic fan-out targets from variable "${k}", but no node captures it (captureVariable). It may be seeded by the caller; otherwise it resolves to no targets and the node falls back to its static parallel list.`,a)),!0===c.allowCallerFanout&&i&&f("error","subflow-map-and-caller-fanout",`Subflow node "${aZ(a)}" combines "mapOverList" with agentic fan-out ("allowCallerFanout"); map-over-list runs a single child once per item and cannot be combined with fan-out.`,a);let l=c.concurrencyLimit;"number"==typeof l&&l<1&&f("warning","subflow-concurrency-limit",`Subflow node "${aZ(a)}" has a concurrencyLimit of ${l}; it must be at least 1 (the runtime default will be used).`,a)}{let a=new Map(d.map(a=>[a.id,a])),b=new Set;for(let c of e){if(a0(c))continue;let d=c.data?.condition;if(!d||"object"!=typeof d)continue;let e=a.get(c.source),g=e?aY(e):"unknown";if("process"!==g){f("error","edge-condition-non-process",`An edge leaving ${"unknown"===g?"an unknown":`the ${g}`} node "${e?aZ(e):c.source}" has a routing condition, but only process nodes can route on a condition.`,e??void 0);continue}b.add(c.source),(0,aO.C)(d.kind)?"always"===d.kind||("string"!=typeof d.value||0===d.value.length?f("warning","edge-condition-value",`Process node "${aZ(e)}" has an outgoing edge condition with no "value"; it will never match.`,e):"regex"!==d.kind||(0,aO.wM)(d.value)||f("warning","edge-condition-regex",`Process node "${aZ(e)}" has an outgoing edge with a regex condition that does not compile; it will never match.`,e)):f("warning","edge-condition-kind",`Process node "${aZ(e)}" has an outgoing edge whose condition kind "${String(d.kind)}" is unknown; it will never match.`,e)}for(let c of b){let b=a.get(c);b&&(e.some(a=>!a0(a)&&(a.source===c?!a.data?.condition||"always"===a.data.condition.kind&&!a.data.condition.negate:!!(a.target===c&&a.data?.bidirectional)))||f("warning","edge-condition-no-fallback",`Process node "${aZ(b)}" has conditioned outgoing edges but no bare fallback edge; if no condition matches, the flow ends here.`,b))}}{let a=new Set;for(let b of d){let c=b.data?.properties?.captureVariable;if("string"==typeof c&&c.trim()){let d=c.trim();a.add(d),aR(d)||f("warning","capture-var-name",`${"subflow"===aY(b)?"Subflow":"Process"} node "${aZ(b)}" captures into "${d}", which is not a valid variable name (letters, digits, _ and - only, not starting with a digit); it will be awkward to reference with \${var:...}.`,b)}}let b=["promptTemplate","isolatedPrompt"],c=new Set;for(let e of d){let d=e.data?.properties??{};for(let g of b){let b=d[g];if("string"==typeof b&&b)for(let d of function(a){let b;if("string"!=typeof a||0===a.length)return[];let c=new Set;for(aP.lastIndex=0;null!==(b=aP.exec(a));){let a=b[1].trim();a&&c.add(a)}return[...c]}(b)){if(a.has(d))continue;let b=`${e.id}:${d}`;c.has(b)||(c.add(b),f("warning","var-ref-uncaptured",`${aZ(e)} references \${var:${d}} but no step in this flow captures "${d}" (via captureVariable). It resolves to empty unless supplied as a run input — check for a typo or a step ordered after this one.`,e))}}}}{for(let a of d){let b=a.data?.properties?.captureKv;if("string"==typeof b&&b.trim()){let{key:c}=aU(b.trim());aX(c)||f("warning","capture-kv-name",`${"subflow"===aY(a)?"Subflow":"Process"} node "${aZ(a)}" captures into kv "${b.trim()}", whose key is not a valid name (letters, digits, _ and - only, not starting with a digit); it will be awkward to reference with \${kv:...}.`,a)}}let a=["promptTemplate","isolatedPrompt"],b=new Set;for(let c of d){let d=c.data?.properties??{};for(let e of a){let a=d[e];if("string"==typeof a&&a)for(let d of function(a){let b;if("string"!=typeof a||0===a.length)return[];let c=new Set;for(aS.lastIndex=0;null!==(b=aS.exec(a));){let a=b[1].trim();a&&c.add(a)}return[...c]}(a)){let{key:a}=aU(d);if(aX(a))continue;let e=`${c.id}:${d}`;b.has(e)||(b.add(e),f("warning","kv-ref-name",`${aZ(c)} references \${kv:${d}}, whose key is not a valid name (letters, digits, _ and - only, not starting with a digit); it resolves to empty.`,c))}}}}for(let a of m){let c=a.data?.properties?.promptTemplate;if("string"!=typeof c||!c)continue;let g=a1(a.id,d,e),h=null,i=new Set,j=new Set;for(let k of(0,ae.A$)(c)){if("handoff"===k.server){let b=`handoff:${k.name}`;if(j.has(b))continue;j.add(b),i.add(k.name),h||(h=a2(a.id,d,e)),h.has(k.name)||f("warning","handoff-pill-obsolete",`Process node "${aZ(a)}" references handoff tool "${k.name}", which no longer exists (the target node was removed, or renamed so the tool name changed). Update or remove the pill.`,a);continue}let c=`${k.kind}:${k.server}:${k.name}`;!j.has(c)&&(j.add(c),g.has(k.server)?"tool"===k.kind&&b.serverTools&&b.serverTools[k.server]&&!b.serverTools[k.server].includes(k.name)&&f("warning","tool-unavailable",`Process node "${aZ(a)}" references tool "${k.name}" which server "${k.server}" does not currently expose.`,a):f("error","tool-pill-disconnected",`Process node "${aZ(a)}" references ${k.kind} "${k.name}" from server "${k.server}", but it is not connected to that server (the MCP node was removed or the server was renamed).`,a))}if(i.size>0)for(let b of h??a2(a.id,d,e))i.has(b)||f("warning","handoff-target-unreferenced",`Process node "${aZ(a)}" can hand off to "${b}" but its prompt never references \${tool:handoff__${b}}, so the model may never route there.`,a)}if(b.serverTools)for(let a of m){let c=a1(a.id,d,e),g=new Set;for(let d of c){let c=b.serverTools[d];if(Array.isArray(c)&&0===c.length&&f("warning","mcp-server-no-tools",`Process node "${aZ(a)}" is connected to MCP server "${d}", which currently exposes 0 tools. The connection has no effect until the server provides tools.`,a),Array.isArray(c))for(let b of Array.isArray(a.data?.properties?.enabledTools)?a.data.properties.enabledTools:[]){let e=`enabledTool:${d}:${b}`;!g.has(e)&&(c.includes(b)||(g.add(e),f("warning","tool-unavailable",`Process node "${aZ(a)}" has enabledTool "${b}" which server "${d}" does not currently expose.`,a)))}}}let q=c.filter(a=>"error"===a.severity).length,r=c.length-q;return{issues:c,errorCount:q,warningCount:r,isRunnable:0===q}}var a8=c(90366);let a9=(0,M.h)("components/flow/FlowBuilder/FlowValidationButton"),ba=({nodes:a,edges:b})=>{let{t:c,tp:f}=(0,au.s9)(),[g,h]=(0,e.useState)(!1),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(!1),[p,q]=(0,e.useState)(null),[r,s]=(0,e.useState)(null),t=(0,e.useRef)(null),u=(0,e.useRef)(null),v=(0,e.useId)(),w=(0,e.useId)(),x=(0,e.useId)();(0,e.useEffect)(()=>{if(!g)return;let a=window.requestAnimationFrame(()=>{u.current?.focus()});return()=>window.cancelAnimationFrame(a)},[g]);let y=(0,e.useCallback)(()=>{h(!1),window.requestAnimationFrame(()=>{t.current?.focus()})},[]),z=(0,e.useCallback)(()=>{let a=u.current?.contains(document.activeElement);h(!1),a&&window.requestAnimationFrame(()=>{t.current?.focus()})},[]),A=(0,e.useCallback)(async()=>{o(!0),s(null);try{let c=await R.N.tryLoadModels()??void 0,d=await Q.S.loadServerConfigs(),e=Array.isArray(d)?d:void 0,f=e?.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})),g={},h=new Map,i=e?.filter(a=>!!a.hostPathAccess)??[],j=new Set(i.map(a=>a.name));if(e){let b=new Map(e.map(a=>[a.name,!!a.disabled])),c=new Set;for(let b of a){let a=b?.data?.type??b?.type,d=b?.data?.properties?.boundServer;"mcp"===a&&"string"==typeof d&&d&&c.add(d)}for(let{name:a,disabled:b}of i)b||c.add(a);await Promise.all([...c].map(async a=>{if(!b.get(a))try{let b=await Q.S.listServerTools(a);!b.error&&Array.isArray(b.tools)?(g[a]=b.tools.map(a=>a?.name).filter(a=>"string"==typeof a),h.set(a,"usable")):j.has(a)&&h.set(a,"unknown")}catch(b){j.has(a)&&h.set(a,"unknown"),a9.debug(`Could not gather MCP tool list for "${a}" during the flow check`,b)}}))}let k=e?Object.fromEntries(i.map(a=>[a.name,function(a,b,c){let d=b.find(b=>b.name===a);if(!d)return{configured:!1,disabled:!1,usability:"unavailable"};let e=!!d.disabled;return{configured:!0,disabled:e,usability:e?"unavailable":c.get(a)??"unknown",roots:d.roots,rootPath:d.rootPath}}(a.name,e,h)])):void 0,l=a7({nodes:a,edges:b},{models:c,servers:f,serverTools:g,fileAccessMcp:k});q(l.issues)}catch(a){a9.warn("Flow validation failed to run",a),q(null),s(c("flows.validation.failed"))}finally{o(!1)}},[a,b,c]),B=(0,e.useCallback)(a=>{m(a.currentTarget),h(!0),q(null),s(null),A()},[A]),C=(0,e.useCallback)(a=>{a&&(y(),document.dispatchEvent(new CustomEvent("selectNode",{detail:{nodeId:a}})))},[y]),E=p?.filter(a=>"error"===a.severity).length??0,H=(p?.length??0)-E;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(k.A,{ref:t,id:v,variant:"outlined",color:"primary",onClick:B,startIcon:(0,d.jsx)(aK,{}),"aria-haspopup":"dialog","aria-expanded":g,"aria-controls":w,sx:{textTransform:"none"},children:[c("flows.validation.check"),p&&p.length>0&&(0,d.jsx)(F.A,{size:"small",color:E>0?"error":"warning",label:p.length,sx:{ml:1,height:20}})]}),(0,d.jsx)(aD.A,{open:g,anchorEl:l,placement:"bottom-end",sx:{zIndex:a=>a.zIndex.modal+1},modifiers:[{name:"offset",options:{offset:[0,10]}}],children:(0,d.jsx)(aE.x,{onClickAway:z,children:(0,d.jsxs)(D.A,{ref:u,id:w,role:"dialog","aria-modal":"false","aria-labelledby":x,"aria-busy":n,tabIndex:-1,onKeyDown:a=>{"Escape"===a.key&&(a.preventDefault(),a.stopPropagation(),y())},elevation:18,sx:{width:"min(92vw, 440px)",maxHeight:"min(68dvh, 560px)",overflow:"hidden",border:1,borderColor:"divider",borderRadius:3},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,px:2,py:1.5},children:[(0,d.jsx)(j.A,{id:x,variant:"subtitle1",fontWeight:800,children:c("flows.validation.title")}),p&&(0,d.jsxs)(i.default,{sx:{display:"flex",gap:.75,ml:.5},children:[E>0&&(0,d.jsx)(F.A,{size:"small",color:"error",label:f("flows.validation.error",E)}),H>0&&(0,d.jsx)(F.A,{size:"small",color:"warning",label:f("flows.validation.warning",H)})]})]}),(0,d.jsx)(L.A,{}),(0,d.jsx)(i.default,{sx:{maxHeight:"min(52dvh, 420px)",overflowY:"auto",p:1},children:n?(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:2,py:3,justifyContent:"center"},children:[(0,d.jsx)(G.default,{size:22}),(0,d.jsx)(j.A,{color:"text.secondary",children:c("flows.validation.checking")})]}):r?(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"flex-start",gap:1.5,py:2,px:1},children:[(0,d.jsx)(aL.A,{color:"error"}),(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{fontWeight:700,children:c("flows.validation.unavailable")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:r})]})]}):p&&0===p.length?(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1.5,py:3,px:1,justifyContent:"center"},children:[(0,d.jsx)(aN.A,{color:"success"}),(0,d.jsx)(j.A,{children:c("flows.validation.healthy")})]}):(0,d.jsx)(aF.A,{dense:!0,disablePadding:!0,children:(p??[]).map((a,b)=>{let e=!!a.nodeId,f=(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(aG.A,{sx:{minWidth:36},children:"error"===a.severity?(0,d.jsx)(aL.A,{color:"error",fontSize:"small"}):(0,d.jsx)(aM.A,{color:"warning",fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:(0,a8.z)(a,c),secondary:e?c("flows.validation.revealNode",{node:a.nodeLabel??a.nodeId??""}):void 0})]});return e?(0,d.jsx)(aI.A,{onClick:()=>C(a.nodeId),alignItems:"flex-start",children:f},b):(0,d.jsx)(aJ.Ay,{alignItems:"flex-start",children:f},b)})})}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(i.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,p:1},children:[(0,d.jsx)(k.A,{onClick:A,disabled:n,children:c("flows.validation.recheck")}),(0,d.jsx)(k.A,{onClick:y,variant:"contained",children:c("flows.validation.done")})]})]})})})]})};var bb=c(79705),bc=c(49037),bd=c(28902),be=c(5285),bf=c(40596),bg=c(61990),bh=c(91195),bi=c(46571),bj=c(82391),bk=c(8332),bl=c(47904),bm=c(10400),bn=c(60928),bo=c(71436);let bp=(0,w.A)((0,d.jsx)("path",{d:"m6.14 11.86-2.78 2.79c-.19.2-.19.51 0 .71l2.78 2.79c.31.32.85.09.85-.35V16H13c.55 0 1-.45 1-1s-.45-1-1-1H6.99v-1.79c0-.45-.54-.67-.85-.35m14.51-3.21-2.78-2.79c-.31-.32-.85-.09-.85.35V8H11c-.55 0-1 .45-1 1s.45 1 1 1h6.01v1.79c0 .45.54.67.85.35l2.78-2.79c.2-.19.2-.51.01-.7"}),"SwapHorizRounded");var bq=c(78465),br=c(11790),bs=c(59988);let bt=({processNodeId:a,connections:b,beginnerMode:c=!1,heading:f,actionLabel:g,emptyMessage:h,pickerAriaLabel:k,singleSelection:l=!1,onConnect:o,onRemove:p,loadServers:q})=>{let{t:r}=(0,au.s9)(),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)([]),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(null),A=(0,e.useMemo)(()=>new Set(b.map(a=>a.serverName)),[b]),B=(0,e.useMemo)(()=>u.filter(a=>!A.has(a.name)),[u,A]),C=(0,bs.E)("mcp",B),D=async()=>{t(!0),x(!0),z(null);try{v(await q())}catch(a){z(a instanceof Error?a.message:r("flows.inspector.mcpLoadError"))}finally{x(!1)}},E=async b=>{t(!1),await o(a,b)},F=a=>{var b,e;return{key:a.name,content:c?(0,d.jsxs)(bl.A,{onClick:()=>{E(a.name)},sx:a=>({width:"100%",minHeight:74,px:1.5,py:1.25,justifyContent:"flex-start",textAlign:"left",border:`1px solid ${a.palette.divider}`,borderRadius:2.5,transition:a.transitions.create(["border-color","background-color"]),"&:hover":{borderColor:"primary.main",backgroundColor:"action.hover"}}),children:[(0,d.jsx)(bo.A,{color:"primary",sx:{mr:1.25}}),(0,d.jsxs)(i.default,{sx:{minWidth:0},children:[(0,d.jsx)(j.A,{variant:"body2",fontWeight:800,noWrap:!0,children:a.name}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:r("flows.inspector.allAppToolsIncluded")})]})]}):(0,d.jsx)(br.A,{name:a.name,status:"connected"===(b=a.status)||"disconnected"===b||"error"===b||"connecting"===b||"initialization"===b||"requires_authentication"===b?b:"starting"===b?"connecting":"disconnected",path:a.rootPath||a.serverUrl||a.websocketUrl||"",enabled:!a.disabled,transport:"websocket"===(e=a.transport)||"sse"===e||"streamable"===e?e:"stdio",pickerMode:!0,onClick:()=>{E(a.name)}})}},G=C.items.map(F),H=C.groups?C.groups.map(a=>({...a,items:a.items.map(F)})):null,I=f??(c?r("flows.inspector.stepApps"):r("flows.inspector.connectedMcpServers")),J=g??(c?r("flows.inspector.addApp"):r("flows.inspector.addMcpServer")),K=h??(c?r("flows.inspector.noApps"):r("flows.inspector.noMcpServers"));return(0,d.jsxs)(i.default,{sx:a=>({border:`1px solid ${a.palette.divider}`,borderRadius:2.5,overflow:"hidden"}),children:[(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{px:1.25,py:.75},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,children:I}),(0,d.jsx)(n.A,{title:J,children:(0,d.jsx)(m.A,{size:"small","aria-label":J,onClick:()=>{D()},children:l?(0,d.jsx)(bp,{fontSize:"small"}):(0,d.jsx)(bm.A,{fontSize:"small"})})})]}),0===b.length?(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",display:"block",sx:{px:1.25,pb:1.25},children:K}):(0,d.jsx)(bb.A,{sx:{borderTop:1,borderColor:"divider"},children:b.map((b,e)=>(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",gap:.75,sx:{minHeight:42,px:1,borderTop:+(0!==e),borderColor:"divider"},children:[(0,d.jsx)(bo.A,{color:"primary",sx:{fontSize:17}}),(0,d.jsx)(j.A,{variant:"body2",noWrap:!0,sx:{flex:1,minWidth:0},children:b.serverName}),!l&&p&&(0,d.jsx)(n.A,{title:r(c?"flows.inspector.removeApp":"flows.inspector.removeMcpServer",{server:b.serverName}),children:(0,d.jsx)(m.A,{size:"small",color:"error","aria-label":r(c?"flows.inspector.removeApp":"flows.inspector.removeMcpServer",{server:b.serverName}),onClick:()=>p(a,b.nodeId),children:(0,d.jsx)(bn.A,{fontSize:"small"})})})]},b.nodeId))}),(0,d.jsx)(bq.A,{open:s,onClose:()=>t(!1),ariaLabel:k??(c?r("flows.inspector.chooseApp"):r("flows.serverTools.connectTitle")),isLoading:w,error:y,emptyMessage:c?r("flows.inspector.noAppsToAdd"):r("flows.serverTools.noneToConnect"),searchable:!0,searchPlaceholder:c?r("flows.inspector.searchApps"):r("flows.serverTools.searchServers"),searchTerm:C.searchTerm,onSearchChange:C.setSearchTerm,columns:{xs:12,sm:6},items:G,groups:H,collapsedKeys:C.collapsedKeys,onToggleGroup:C.toggleGroup})]})};var bu=c(67062),bv=c(34945);let bw=({models:a,selectedModelId:b,beginnerMode:c=!1,onSelect:f,onRemove:g})=>{let{t:h}=(0,au.s9)(),[k,l]=(0,e.useState)(!1),o=(0,bs.E)("models",a),p=(0,e.useMemo)(()=>a.find(a=>a.id===b),[a,b]),q=p?.displayName||p?.name||b,r=a=>{f(a),l(!1)},s=a=>({key:a.id,content:c?(0,d.jsxs)(bl.A,{onClick:()=>r(a.id),sx:a=>({width:"100%",minHeight:74,px:1.5,py:1.25,justifyContent:"flex-start",textAlign:"left",border:`1px solid ${a.palette.divider}`,borderRadius:2.5,transition:a.transitions.create(["border-color","background-color"]),"&:hover":{borderColor:"primary.main",backgroundColor:"action.hover"}}),children:[(0,d.jsx)(bu.A,{color:"primary",sx:{mr:1.25}}),(0,d.jsxs)(i.default,{sx:{minWidth:0},children:[(0,d.jsx)(j.A,{variant:"body2",fontWeight:800,noWrap:!0,children:a.displayName||a.name}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:h("flows.inspector.simpleModelHelp")})]})]}):(0,d.jsx)(bv.A,{model:a,selectable:!0,selected:b===a.id,onSelect:r})}),t=o.items.map(s),u=o.groups?o.groups.map(a=>({...a,items:a.items.map(s)})):null,v=c?h("flows.inspector.stepAi"):h("flows.inspector.boundModel"),w=c?h("flows.inspector.chooseAi"):h("flows.inspector.chooseModel");return(0,d.jsxs)(i.default,{sx:a=>({border:`1px solid ${b?a.palette.divider:a.palette.error.main}`,borderRadius:2.5,overflow:"hidden",backgroundColor:b?"transparent":(0,ah.X4)(a.palette.error.main,.07)}),children:[(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{px:1.25,py:.75},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,children:v}),(0,d.jsx)(n.A,{title:w,children:(0,d.jsx)(m.A,{size:"small","aria-label":w,color:b?"default":"error",onClick:()=>l(!0),children:(0,d.jsx)(bp,{fontSize:"small"})})})]}),b?(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",gap:.75,sx:{minHeight:42,px:1,borderTop:1,borderColor:"divider"},children:[(0,d.jsx)(bu.A,{color:"primary",sx:{fontSize:17}}),(0,d.jsx)(j.A,{variant:"body2",noWrap:!0,sx:{flex:1,minWidth:0},children:q}),(0,d.jsx)(n.A,{title:h("flows.inspector.removeModel",{model:q??b}),children:(0,d.jsx)(m.A,{size:"small",color:"error","aria-label":h("flows.inspector.removeModel",{model:q??b}),onClick:g,children:(0,d.jsx)(bn.A,{fontSize:"small"})})})]}):(0,d.jsx)(j.A,{variant:"caption",color:"error.main",fontWeight:700,display:"block",sx:{px:1.25,pb:1.25},children:c?h("flows.inspector.noStepAi"):h("flows.inspector.noBoundModel")}),(0,d.jsx)(bq.A,{open:k,onClose:()=>l(!1),ariaLabel:c?h("flows.inspector.aiPickerAria"):h("flows.inspector.modelPickerAria"),isLoading:!1,emptyMessage:h("flows.process.noModels"),searchable:!0,searchPlaceholder:h("flows.process.searchModels"),searchTerm:o.searchTerm,onSearchChange:o.setSearchTerm,columns:{xs:12,sm:6},items:t,groups:u,collapsedKeys:o.collapsedKeys,onToggleGroup:o.toggleGroup})]})};var bx=c(78930);let by=({processNodeId:a,currentFlowId:b,flows:c,connections:f,onConnect:g,onRemove:h})=>{let{t:k}=(0,au.s9)(),[l,o]=(0,e.useState)(!1),p=(0,e.useMemo)(()=>new Set(f.map(a=>a.flowId)),[f]),q=(0,e.useMemo)(()=>c.filter(a=>a.id!==b&&!p.has(a.id)),[p,b,c]),r=(0,bs.E)("flows",q),s=b=>{o(!1),g(a,b)},t=a=>({key:a.id,content:(0,d.jsx)(bx.A,{flow:a,selected:!1,onSelect:s,pickerMode:!0})});return(0,d.jsxs)(i.default,{sx:a=>({border:`1px solid ${a.palette.divider}`,borderRadius:2.5,overflow:"hidden"}),children:[(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{px:1.25,py:.75},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,children:k("flows.guided.talksToAgents")}),(0,d.jsx)(n.A,{title:k("flows.guided.addAgent"),children:(0,d.jsx)(m.A,{size:"small","aria-label":k("flows.guided.addAgent"),onClick:()=>o(!0),children:(0,d.jsx)(bm.A,{fontSize:"small"})})})]}),0===f.length?(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",display:"block",sx:{px:1.25,pb:1.25},children:k("flows.guided.noAgents")}):(0,d.jsx)(bb.A,{sx:{borderTop:1,borderColor:"divider"},children:f.map((b,c)=>(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",gap:.75,sx:{minHeight:42,px:1,borderTop:+(0!==c),borderColor:"divider"},children:[(0,d.jsx)(bj.A,{color:"primary",sx:{fontSize:17}}),(0,d.jsxs)(i.default,{sx:{flex:1,minWidth:0},children:[(0,d.jsx)(j.A,{variant:"body2",noWrap:!0,children:b.flowName}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",noWrap:!0,display:"block",children:k("flows.guided.agentIo")})]}),(0,d.jsx)(n.A,{title:k("flows.guided.removeAgent",{agent:b.flowName}),children:(0,d.jsx)(m.A,{size:"small",color:"error","aria-label":k("flows.guided.removeAgent",{agent:b.flowName}),onClick:()=>h(a,b.nodeId),children:(0,d.jsx)(bn.A,{fontSize:"small"})})})]},b.nodeId))}),(0,d.jsx)(bq.A,{open:l,onClose:()=>o(!1),ariaLabel:k("flows.guided.chooseAgent"),emptyMessage:k("flows.guided.noAgentsToAdd"),searchable:!0,searchPlaceholder:k("flows.guided.searchAgents"),searchTerm:r.searchTerm,onSearchChange:r.setSearchTerm,items:r.items.map(t),groups:r.groups?r.groups.map(a=>({...a,items:a.items.map(t)})):null,collapsedKeys:r.collapsedKeys,onToggleGroup:r.toggleGroup})]})},bz=(0,C.Ay)(D.A)(({theme:a})=>({width:320,minWidth:320,height:"100%",minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden",border:`1px solid ${a.palette.divider}`,borderRadius:16,backgroundColor:"dark"===a.palette.mode?"rgba(17, 22, 41, 0.9)":"rgba(255, 255, 255, 0.92)",boxShadow:"dark"===a.palette.mode?"0 18px 55px rgba(0,0,0,.24)":"0 18px 55px rgba(49,45,99,.1)",backdropFilter:"blur(20px) saturate(140%)",[a.breakpoints.down("lg")]:{width:286,minWidth:286},[a.breakpoints.down("md")]:{width:"100%",minWidth:0,height:"auto",maxHeight:"none"}})),bA=({selectedNode:a,onClearSelection:b,onCommitNode:c,onOpenAdvanced:f,onOpenTechnicalDetails:g,flowName:h,flowNameError:l,onFlowNameChange:o,flowDescription:p,onFlowDescriptionChange:q,authoringMode:r,onAuthoringModeChange:s,permissionRuleCount:t,onOpenPermissionRules:v,beginnerMode:w=!1,onSuggestTools:x,onSuggestAgents:y,onImprovePrompt:z,onCheckPlausibility:A,connectedMcpServers:C=[],onConnectMcpServer:D,onRemoveMcpServer:E,loadMcpServers:J,onSelectMcpNodeServer:K,currentFlowId:M,availableAgents:N=[],connectedAgents:O=[],onConnectAgent:P,onRemoveAgent:Q,models:R=[],onNavigateToFlow:S})=>{let T,{t:U,tp:V}=(0,au.s9)(),[W,X]=(0,e.useState)(a?"node":"flow"),[Y,Z]=(0,e.useState)(a?.data.label??""),[$,_]=(0,e.useState)(String(a?.data.properties?.promptTemplate??"")),[aa,ab]=(0,e.useState)(!1),[ac,ad]=(0,e.useState)(null);(0,e.useEffect)(()=>{a?X("node"):X("flow")},[a?.id]),(0,e.useEffect)(()=>{Z(a?.data.label??""),_(String(a?.data.properties?.promptTemplate??"")),ad(null)},[a?.id,a?.data]);let ae=(0,e.useMemo)(()=>{if(!a)return[];let b=a.data.properties??{},c=[],d="mcp"===a.data.type&&!!J&&!!K;return"string"==typeof b.boundServer&&b.boundServer&&!d&&c.push({label:w?U("flows.inspector.summary.app"):U("flows.inspector.summary.server"),value:b.boundServer}),"string"==typeof b.signalName&&b.signalName&&c.push({label:w?U("flows.inspector.summary.notification"):U("flows.inspector.summary.signal"),value:b.signalName}),c},[a,w,U,J,K]),af=(0,e.useMemo)(()=>{if(!a)return null;let b=a.data.properties?.subflowId;if("string"!=typeof b||!b)return null;let c=N.find(a=>a.id===b);return{id:b,name:c?.name||b}},[a,N]),ag=()=>{if(!a)return null;let b={...a.data.properties??{}};("process"===a.data.type||"start"===a.data.type)&&(b.promptTemplate=$);let d={...a.data,label:Y.trim()||a.data.label,properties:b};return JSON.stringify(d)!==JSON.stringify(a.data)&&c(a.id,d),{...a,data:d}},ai=async(a,b)=>{if(!K)return;let c=ag();c&&await K(c,b)},aj=async()=>{if(!z)return;let a=ag();if(a){ab(!0),ad(null);try{let b=await z(a);_(b),c(a.id,{...a.data,properties:{...a.data.properties??{},promptTemplate:b}})}catch(a){ad(a instanceof Error?a.message:U("flows.inspector.improvePromptFailed"))}finally{ab(!1)}}};return(0,d.jsxs)(bz,{elevation:0,"aria-label":w&&a?U("flows.inspector.stepSettings"):w?U("flows.inspector.agentSettings"):U("flows.inspector.flowInspector"),children:[(0,d.jsxs)(i.default,{sx:{px:1.5,pt:1.25},children:[(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",justifyContent:"space-between",gap:1,children:[(0,d.jsxs)(i.default,{sx:{minWidth:0},children:[(0,d.jsx)(j.A,{variant:"overline",color:"text.secondary",sx:{letterSpacing:".12em"},children:w?a?U("flows.inspector.editStep"):U("flows.inspector.agentSettings"):U("flows.inspector.inspector")}),(0,d.jsx)(j.A,{variant:"subtitle1",fontWeight:800,noWrap:!0,children:a?a.data.label:h})]}),a&&(0,d.jsx)(n.A,{title:w?U("flows.inspector.closeStep"):U("flows.inspector.clearSelection"),children:(0,d.jsx)(m.A,{size:"small","aria-label":w?U("flows.inspector.closeStep"):U("flows.inspector.closeNode"),onClick:b,children:(0,d.jsx)(be.A,{fontSize:"small"})})})]}),!w&&(0,d.jsxs)(bc.A,{value:W,onChange:(a,b)=>X(b),variant:"fullWidth",sx:{mt:.5,minHeight:38,"& .MuiTab-root":{minHeight:38}},children:[(0,d.jsx)(bd.A,{value:"node",label:U("flows.inspector.node"),disabled:!a}),(0,d.jsx)(bd.A,{value:"flow",label:U("flows.inspector.flow")})]})]}),(0,d.jsx)(L.A,{}),(0,d.jsx)(i.default,{sx:{p:1.5,overflowY:"auto",flex:1},children:"node"===W&&a?(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsxs)(bb.A,{direction:"row",alignItems:"center",gap:1,sx:{minWidth:0},children:[(0,d.jsx)(F.A,{size:"small",sx:{flexShrink:0},label:(T=String(a.data.type||a.type||"node"),w?({start:U("flows.inspector.type.start"),process:U("flows.inspector.type.process"),finish:U("flows.inspector.type.finish"),mcp:U("flows.inspector.type.mcp"),subflow:U("flows.inspector.type.subflow"),resource:U("flows.inspector.type.resource"),signal:U("flows.inspector.type.signal"),trigger:U("flows.inspector.type.trigger")})[T]??U("flows.inspector.type.step"):"mcp"===T?"MCP":`${T.charAt(0).toUpperCase()}${T.slice(1)}`),color:"finish"===a.data.type?"success":"primary",variant:"outlined"}),af&&(0,d.jsx)(n.A,{title:S?`${U("flows.subflow.openTarget")}: ${af.name}`:af.name,children:(0,d.jsx)(F.A,{size:"small",variant:"outlined",icon:(0,d.jsx)(bj.A,{}),label:af.name,clickable:!!S,onClick:S?()=>{ag(),S(af.id)}:void 0,sx:{minWidth:0,flexShrink:1,maxWidth:"100%"}})})]}),(0,d.jsx)(k.A,{variant:w?"outlined":"contained",startIcon:(0,d.jsx)(B.A,{}),endIcon:(0,d.jsx)(bf.A,{}),onClick:()=>{let a=ag();a&&f(a)},children:w?U("flows.inspector.moreOptions"):U("flows.inspector.fullSettings")}),(0,d.jsx)(u.A,{label:w?U("flows.inspector.stepName"):U("flows.inspector.nodeName"),size:"small",fullWidth:!0,value:Y,onChange:a=>Z(a.target.value),onBlur:ag,onKeyDown:a=>{"Enter"===a.key&&a.currentTarget.blur()}}),("process"===a.data.type||"start"===a.data.type)&&(0,d.jsxs)(bb.A,{spacing:.75,children:[(0,d.jsx)(u.A,{label:w?"start"===a.data.type?U("flows.inspector.helpfulBackground"):U("flows.inspector.aiTask"):"start"===a.data.type?U("flows.inspector.startingContext"):U("flows.inspector.taskPrompt"),size:"small",fullWidth:!0,multiline:!0,minRows:5,maxRows:12,value:$,onChange:a=>_(a.target.value),onBlur:ag,onKeyDown:a=>{(a.ctrlKey||a.metaKey)&&"Enter"===a.key&&(a.preventDefault(),ag())},placeholder:"start"===a.data.type?w?U("flows.inspector.startBeginnerPlaceholder"):U("flows.inspector.startPlaceholder"):w?U("flows.inspector.taskBeginnerPlaceholder"):U("flows.inspector.taskPlaceholder"),helperText:w?U("flows.inspector.blurHelp"):U("flows.inspector.keyboardHelp")}),"process"===a.data.type&&z&&(0,d.jsx)(k.A,{variant:"outlined",size:"small",startIcon:aa?(0,d.jsx)(G.default,{size:16}):(0,d.jsx)(bi.A,{}),disabled:aa,onClick:()=>{aj()},children:aa?U("flows.inspector.improvingPrompt"):U("flows.inspector.improvePrompt")}),ac&&(0,d.jsx)(j.A,{variant:"caption",color:"error",children:ac})]}),!w&&ae.length>0&&(0,d.jsx)(i.default,{sx:a=>({p:1.25,borderRadius:2.5,border:`1px solid ${a.palette.divider}`,bgcolor:(0,ah.X4)(a.palette.primary.main,.05)}),children:ae.map(a=>(0,d.jsxs)(bb.A,{direction:"row",justifyContent:"space-between",gap:1,mb:.5,children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:a.label}),(0,d.jsx)(j.A,{variant:"caption",fontWeight:700,noWrap:!0,children:a.value})]},a.label))}),"mcp"===a.data.type&&J&&K&&(0,d.jsx)(bt,{processNodeId:a.id,connections:"string"==typeof a.data.properties?.boundServer&&a.data.properties.boundServer?[{nodeId:a.id,serverName:a.data.properties.boundServer}]:[],heading:U("flows.inspector.summary.server"),actionLabel:U("flows.inspector.chooseMcpServer"),emptyMessage:U("flows.mcpNode.select"),pickerAriaLabel:U("flows.inspector.chooseMcpServer"),singleSelection:!0,onConnect:ai,loadServers:J}),"process"===a.data.type&&(0,d.jsx)(bw,{models:R,selectedModelId:"string"==typeof a.data.properties?.boundModel?a.data.properties.boundModel:void 0,beginnerMode:w,onSelect:a=>{let b=ag();if(!b)return;let d=R.find(b=>b.id===a);c(b.id,{...b.data,properties:{...b.data.properties??{},boundModel:a,...d?{modelName:d.name}:{}}})},onRemove:()=>{let a=ag();if(!a)return;let{boundModel:b,modelName:d,...e}=a.data.properties??{};c(a.id,{...a.data,properties:e})}}),"process"===a.data.type&&D&&E&&J&&(0,d.jsx)(bt,{processNodeId:a.id,connections:C,beginnerMode:w,onConnect:D,onRemove:E,loadServers:J}),"process"===a.data.type&&M&&P&&Q&&(0,d.jsx)(by,{processNodeId:a.id,currentFlowId:M,flows:N,connections:O,onConnect:P,onRemove:Q}),"process"===a.data.type&&x&&(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bh.A,{}),onClick:()=>{let a=ag();a&&x(a)},children:U("flows.inspector.suggestTools")}),"process"===a.data.type&&y&&(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bh.A,{}),onClick:()=>{let a=ag();a&&y(a)},children:U("flows.inspector.suggestAgents")}),(0,d.jsx)(k.A,{variant:"text",size:"small",startIcon:(0,d.jsx)(bk.A,{}),onClick:()=>{let a=ag();a&&g?.(a)},children:U("flows.inspector.technicalDetails")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:w?U("flows.inspector.beginnerTip"):U("flows.inspector.expertTip")})]}):(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsxs)(bb.A,{direction:"row",gap:1,alignItems:"center",children:[(0,d.jsx)(bg.A,{color:"primary",fontSize:"small"}),(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"subtitle2",fontWeight:800,children:w?U("flows.inspector.aboutAgent"):U("flows.inspector.flowDetails")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:w?U("flows.inspector.aboutHelp"):U("flows.inspector.flowHelp")})]})]}),(0,d.jsx)(u.A,{size:"small",label:w?U("flows.inspector.agentName"):U("flows.inspector.flowName"),value:h,onChange:a=>o(a.target.value),error:!!l,helperText:l??(w?U("flows.inspector.agentNameHelp"):U("flows.inspector.renameHelp")),fullWidth:!0}),A&&(0,d.jsx)(k.A,{variant:"outlined",startIcon:(0,d.jsx)(bh.A,{}),onClick:A,children:U("flows.inspector.checkAgent")}),(0,d.jsx)(u.A,{size:"small",label:w?U("flows.inspector.helpQuestion"):U("flows.inspector.description"),value:p,onChange:a=>q(a.target.value),multiline:!0,minRows:3,maxRows:7,fullWidth:!0,placeholder:w?U("flows.inspector.agentDescriptionPlaceholder"):U("flows.inspector.flowDescriptionPlaceholder")}),!w&&(0,d.jsxs)(i.default,{sx:a=>({p:1.25,borderRadius:2.5,border:`1px solid ${a.palette.divider}`,bgcolor:(0,ah.X4)(a.palette.primary.main,.04)}),children:[(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{size:"small",checked:"advanced"===r,onChange:a=>s(a.target.checked?"advanced":"guided")}),label:"advanced"===r?U("flows.inspector.advanced"):U("flows.inspector.guided")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",display:"block",children:"advanced"===r?U("flows.inspector.advancedHelp"):U("flows.inspector.guidedHelp")})]}),"advanced"===r&&(0,d.jsx)(k.A,{variant:"outlined",onClick:v,startIcon:(0,d.jsx)(bg.A,{}),children:t?V("flows.inspector.permissionRules",t):U("flows.inspector.permissionRules")}),!w&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(L.A,{}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:U("flows.inspector.shortcuts")})]})]})})]})};var bB=c(28298),bC=c(94400),bD=c(72539);let bE=(0,w.A)((0,d.jsx)("path",{d:"M11 5v11.17l-4.88-4.88c-.39-.39-1.03-.39-1.42 0s-.39 1.02 0 1.41l6.59 6.59c.39.39 1.02.39 1.41 0l6.59-6.59c.39-.39.39-1.02 0-1.41a.996.996 0 0 0-1.41 0L13 16.17V5c0-.55-.45-1-1-1s-1 .45-1 1"}),"ArrowDownwardRounded");var bF=c(36425),bG=c(8004);let bH=new Set(["Process Node","Subflow Node","Signal Node"]),bI=({children:a,complete:b=!1})=>(0,d.jsx)(i.default,{"aria-hidden":"true",sx:{display:"grid",width:34,height:34,flexShrink:0,placeItems:"center",borderRadius:"50%",color:b?"success.contrastText":"primary.contrastText",bgcolor:b?"success.main":"primary.main",fontWeight:850,boxShadow:a=>`0 8px 24px ${(0,ah.X4)(b?a.palette.success.main:a.palette.primary.main,.28)}`},children:b?(0,d.jsx)(bF.A,{fontSize:"small"}):a}),bJ=({nodes:a,orderedStepIds:b=[],subagentNodeIds:c,selectedNodeId:g,flowName:h,flowNameError:l,onFlowNameChange:m,onSelectNode:n,onAddTask:o,onTry:q,isSaving:r=!1,hasAdvancedFeatures:s=!1,readyToTry:t=!0,needsAIConnection:v=!1,onSwitchAdvanced:w,models:x=[],modelsLoading:y=!1,aiAssistance:z="manual",selectedModelId:A,onChooseAssistance:C,onModelChange:E,onCheckPlausibility:G,currentFlowId:H,availableAgents:I=[],mcpConnectionsByNode:J,agentConnectionsByNode:L,onConnectMcpServer:M,onRemoveMcpServer:N,loadMcpServers:O,onConnectAgent:P,onRemoveAgent:Q})=>{let{t:R}=(0,au.s9)(),[S,T]=(0,e.useState)(""),U=(0,e.useMemo)(()=>{let d=new Map(b.map((a,b)=>[a,b]));return a.filter(a=>["process","subflow","signal"].includes(a.data.type)&&!c?.has(a.id)).sort((a,b)=>(d.get(a.id)??Number.MAX_SAFE_INTEGER)-(d.get(b.id)??Number.MAX_SAFE_INTEGER)||(a.position?.y??0)-(b.position?.y??0))},[a,b,c]),V=/^(?:NewFlow\d*|Untitled (?:assistant|agent)(?: \d+)?)$/i.test(h.trim())||h.trim().toLocaleLowerCase()===R("flows.page.untitled").trim().toLocaleLowerCase(),W=!!h.trim()&&!V&&!l,X=!!S.trim()&&!s&&"unasked"!==z&&("assisted"!==z||!!A),Y=W&&U.length>0&&t&&!r,Z="unasked"!==z||!y&&0===x.length||!C,$=()=>{let a=S.trim();a&&(o(a),T(""))};return(0,d.jsx)(i.default,{"aria-label":R("flows.guided.aria"),sx:{flex:1,minHeight:0,overflowY:"auto",px:{xs:.5,sm:1.5,lg:3},py:{xs:1,sm:1.5,lg:2.5}},children:(0,d.jsxs)(i.default,{sx:{width:"100%",maxWidth:780,mx:"auto"},children:[(0,d.jsxs)(bb.A,{spacing:.8,sx:{mb:2.5},children:[(0,d.jsx)(F.A,{icon:(0,d.jsx)(bh.A,{}),label:R("flows.guided.simple"),color:"primary",variant:"outlined",sx:{alignSelf:"flex-start"}}),(0,d.jsx)(j.A,{variant:"h4",children:R("flows.guided.recipe")}),(0,d.jsx)(j.A,{color:"text.secondary",children:R("flows.guided.intro")})]}),(0,d.jsxs)(bb.A,{spacing:1.5,children:[x.length>0&&C&&(0,d.jsx)(D.A,{elevation:0,sx:{p:{xs:2,sm:2.5},border:1,borderColor:"unasked"===z?"primary.main":"divider",borderRadius:4},children:(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"h6",children:R("flows.guided.aiQuestion")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:R("flows.guided.aiHelp")})]}),"unasked"===z?(0,d.jsxs)(bb.A,{direction:{xs:"column",sm:"row"},spacing:1,children:[(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bh.A,{}),onClick:()=>C("assisted"),children:R("flows.guided.yesHelp")}),(0,d.jsx)(k.A,{variant:"outlined",onClick:()=>C("manual"),children:R("flows.guided.manual")})]}):(0,d.jsxs)(bb.A,{direction:{xs:"column",sm:"row"},spacing:1.5,alignItems:{sm:"center"},children:[(0,d.jsx)(F.A,{color:"assisted"===z?"primary":"default",label:"assisted"===z?R("flows.guided.aiOn"):R("flows.guided.manualSetup")}),"assisted"===z&&E&&(0,d.jsxs)(bB.A,{size:"small",sx:{minWidth:260},children:[(0,d.jsx)(bC.A,{id:"guided-helper-model-label",children:R("flows.guided.aiHelper")}),(0,d.jsx)(bD.A,{labelId:"guided-helper-model-label",label:R("flows.guided.aiHelper"),value:A??"",onChange:a=>E(String(a.target.value)),children:x.map(a=>(0,d.jsx)(K.A,{value:a.id,children:a.displayName||a.name},a.id))})]}),(0,d.jsx)(k.A,{size:"small",onClick:()=>C("assisted"===z?"manual":"assisted"),children:"assisted"===z?R("flows.guided.turnOff"):R("flows.guided.turnOn")})]})]})}),Z&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(D.A,{elevation:0,sx:{p:{xs:2,sm:2.5},border:1,borderColor:U.length>0?"success.main":"divider",borderRadius:4,bgcolor:"background.paper"},children:(0,d.jsxs)(bb.A,{direction:"row",spacing:1.5,alignItems:"flex-start",children:[(0,d.jsx)(bI,{complete:U.length>0,children:"1"}),(0,d.jsxs)(i.default,{sx:{flex:1,minWidth:0},children:[(0,d.jsx)(j.A,{variant:"h6",children:U.length?R("flows.guided.addAnother"):R("flows.guided.goalQuestion")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:U.length?R("flows.guided.nextHelp"):R("flows.guided.goalHelp")}),s&&(0,d.jsx)(p.A,{severity:"info",action:(0,d.jsx)(k.A,{color:"inherit",size:"small",onClick:w,children:R("flows.guided.openExpert")}),sx:{mt:1.5},children:R("flows.guided.advancedWarning")}),(0,d.jsxs)(bb.A,{spacing:1,sx:{mt:2},children:[(0,d.jsxs)(i.default,{sx:{px:1.5,py:1,borderRadius:3,color:"text.secondary",bgcolor:a=>(0,ah.X4)(a.palette.primary.main,.055),border:1,borderColor:"divider"},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,color:"primary.main",children:R("flows.guided.when").toLocaleUpperCase()}),(0,d.jsx)(j.A,{variant:"body2",fontWeight:700,children:R("flows.guided.someoneAsks")})]}),U.map((a,b)=>{var c,e,h;let k,l;return(0,d.jsxs)(f().Fragment,{children:[(0,d.jsx)(bE,{"aria-hidden":"true",sx:{alignSelf:"center",color:"text.disabled",fontSize:20}}),(0,d.jsxs)(D.A,{elevation:0,sx:{width:"100%",border:1,borderColor:g===a.id?"primary.main":"divider",borderRadius:3,overflow:"hidden",bgcolor:g===a.id?a=>(0,ah.X4)(a.palette.primary.main,.1):"background.default",boxShadow:g===a.id?a=>`0 0 0 3px ${(0,ah.X4)(a.palette.primary.main,.12)}`:"none"},children:[(0,d.jsx)(bl.A,{onClick:()=>n(a.id),sx:{display:"block",width:"100%",p:1.5,textAlign:"left"},children:(0,d.jsxs)(bb.A,{direction:"row",spacing:1.25,alignItems:"flex-start",children:[(0,d.jsx)(i.default,{sx:{display:"grid",width:30,height:30,flexShrink:0,placeItems:"center",borderRadius:2,color:"primary.contrastText",bgcolor:"primary.main",fontWeight:850},children:b+1}),(0,d.jsxs)(i.default,{sx:{minWidth:0,flex:1},children:[(0,d.jsx)(j.A,{variant:"overline",color:"primary.main",children:(c=a.data.type,"subflow"===c?R("flows.guided.type.subflow"):"signal"===c?R("flows.guided.type.signal"):R("flows.guided.type.process"))}),(0,d.jsx)(j.A,{variant:"subtitle1",fontWeight:800,children:(e=a,h=R,!(l=e.data.label?.trim())||bH.has(l)?h("process"===e.data.type?"flows.guided.default.process":"subflow"===e.data.type?"flows.guided.default.subflow":"signal"===e.data.type?"flows.guided.default.signal":"flows.guided.default.step"):l)}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.35,display:"-webkit-box",overflow:"hidden",WebkitBoxOrient:"vertical",WebkitLineClamp:2},children:(k=String(a.data.properties?.promptTemplate??"").trim())||(a.data.description?.trim()?a.data.description.trim():"subflow"===a.data.type?R("flows.guided.summary.subflow"):"signal"===a.data.type?R("flows.guided.summary.signal"):R("flows.guided.summary.process"))})]}),(0,d.jsx)(B.A,{color:"action",fontSize:"small"})]})}),"process"===a.data.type&&(0,d.jsxs)(bb.A,{spacing:1,sx:{px:1.5,pb:1.5},children:[M&&N&&O&&(0,d.jsx)(bt,{processNodeId:a.id,connections:J?.get(a.id)??[],beginnerMode:!0,heading:R("flows.guided.usesApps"),onConnect:M,onRemove:N,loadServers:O}),H&&P&&Q&&(0,d.jsx)(by,{processNodeId:a.id,currentFlowId:H,flows:I,connections:L?.get(a.id)??[],onConnect:P,onRemove:Q})]})]})]},a.id)}),(0,d.jsxs)(bb.A,{direction:{xs:"column",sm:"row"},spacing:1,alignItems:"stretch",children:[(0,d.jsx)(u.A,{fullWidth:!0,multiline:!0,minRows:2,maxRows:5,label:U.length?R("flows.guided.nextLabel"):R("flows.guided.goalLabel"),placeholder:R("flows.guided.goalPlaceholder"),value:S,disabled:s,onChange:a=>T(a.target.value),onKeyDown:a=>{(a.ctrlKey||a.metaKey)&&"Enter"===a.key&&X&&(a.preventDefault(),$())}}),(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bm.A,{}),disabled:!X,onClick:$,sx:{minWidth:{sm:150}},children:U.length?R("flows.guided.addStep"):R("flows.guided.createGoal")})]}),(0,d.jsx)(bE,{"aria-hidden":"true",sx:{alignSelf:"center",color:"text.disabled",fontSize:20}}),(0,d.jsxs)(i.default,{sx:{px:1.5,py:1,borderRadius:3,color:"text.secondary",bgcolor:a=>(0,ah.X4)(a.palette.success.main,.055),border:1,borderColor:"divider"},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,color:"success.main",children:R("flows.guided.then").toLocaleUpperCase()}),(0,d.jsx)(j.A,{variant:"body2",fontWeight:700,children:R("flows.guided.sendAnswer")})]})]})]})]})}),(0,d.jsx)(D.A,{elevation:0,sx:{p:{xs:2,sm:2.5},border:1,borderColor:W?"success.main":"divider",borderRadius:4,bgcolor:"background.paper"},children:(0,d.jsxs)(bb.A,{direction:"row",spacing:1.5,alignItems:"flex-start",children:[(0,d.jsx)(bI,{complete:W,children:"2"}),(0,d.jsxs)(i.default,{sx:{flex:1,minWidth:0},children:[(0,d.jsx)(j.A,{variant:"h6",children:R("flows.guided.nameTitle")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:1.5},children:R("flows.guided.nameHelp")}),(0,d.jsx)(u.A,{fullWidth:!0,size:"small",label:R("flows.guided.name"),value:h,error:!!l,helperText:l??(W?R("flows.guided.looksGood"):R("flows.guided.nameHint")),onChange:a=>m(a.target.value),onFocus:a=>{V&&a.currentTarget.select()}})]})]})})]}),U.length>0&&(0,d.jsx)(D.A,{elevation:0,sx:{p:{xs:2,sm:2.5},border:1,borderColor:Y?"primary.main":"divider",borderRadius:4,bgcolor:a=>(0,ah.X4)(a.palette.primary.main,Y?.075:.025)},children:(0,d.jsxs)(bb.A,{direction:{xs:"column",sm:"row"},spacing:1.5,alignItems:{sm:"center"},children:[(0,d.jsx)(bI,{children:"3"}),(0,d.jsxs)(i.default,{sx:{flex:1},children:[(0,d.jsx)(j.A,{variant:"h6",children:R("flows.guided.tryTitle")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:R("flows.guided.tryHelp")}),v&&U.some(a=>"process"===a.data.type)&&(0,d.jsx)(p.A,{severity:"warning",sx:{mt:1},children:R("flows.guided.needsAi")})]}),q&&(0,d.jsxs)(bb.A,{spacing:1,children:[G&&"assisted"===z&&(0,d.jsx)(k.A,{variant:"outlined",startIcon:(0,d.jsx)(bh.A,{}),disabled:0===U.length,onClick:G,children:R("flows.guided.checkAi")}),(0,d.jsx)(k.A,{size:"large",variant:"contained",startIcon:(0,d.jsx)(bG.A,{}),disabled:!Y,onClick:q,children:r?R("flows.guided.saving"):R("flows.guided.tryAgent")})]})]})})]})]})})};var bK=c(32787),bL=c(47189),bM=c(31975);let bN=(0,w.A)((0,d.jsx)("path",{fillRule:"evenodd",d:"M20 3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2M9 17H6c-.55 0-1-.45-1-1s.45-1 1-1h3c.55 0 1 .45 1 1s-.45 1-1 1m0-4H6c-.55 0-1-.45-1-1s.45-1 1-1h3c.55 0 1 .45 1 1s-.45 1-1 1m0-4H6c-.55 0-1-.45-1-1s.45-1 1-1h3c.55 0 1 .45 1 1s-.45 1-1 1m9.7 2.12-3.17 3.17c-.39.39-1.03.39-1.42 0l-1.41-1.42a.996.996 0 0 1 0-1.41c.39-.39 1.02-.39 1.41 0l.71.71 2.47-2.47c.39-.39 1.02-.39 1.41 0l.01.01c.38.39.38 1.03-.01 1.41"}),"FactCheckRounded");var bO=c(76458),bP=c(85552);function bQ(a){return JSON.parse(JSON.stringify(a))}function bR({open:a,flow:b,relatedFlows:c=[],nodeId:f,initialFocus:g="apps",modelId:h,models:l=[],onApply:m,onApplyRelatedFlows:n,onClose:o}){let{t,tp:w}=(0,au.s9)(),[x,y]=(0,e.useState)("suggesting"),[z,A]=(0,e.useState)(null),[B,C]=(0,e.useState)(new Set),[E,I]=(0,e.useState)(null),[J,L]=(0,e.useState)(new Set),[M,N]=(0,e.useState)(null),[O,Q]=(0,e.useState)(new Set),[R,S]=(0,e.useState)(null),[T,U]=(0,e.useState)(b),[V,W]=(0,e.useState)(h??""),[X,Y]=(0,e.useState)(!1),[Z,$]=(0,e.useState)(""),[_,aa]=(0,e.useState)([]),[ab,ac]=(0,e.useState)(null),ad=async a=>{y("checking"),ac(null);try{let b=await P.g.checkPlausibility({flow:a,relatedFlows:c,modelId:V||h||void 0,intendedContext:"chat"});S(b),Q(new Set),y("plausibility")}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.checkFailed")),y("plausibility")}},ae=async(a,b)=>{if(!f)return;let c=b||V||h||"";if(!c)return void y("agents");y("suggesting-agents"),ac(null);try{let b=await P.g.suggestAgentsForStep({flow:a,nodeId:f,modelId:c,goal:a.description});I(b),L(new Set(b.suggestions.map(a=>a.flowId))),y("agents")}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.agentSuggestFailed")),y("agents")}},af=(0,e.useMemo)(()=>z?.suggestions.filter(a=>B.has(`${a.server}\u0000${a.tool}`))??[],[B,z]),ag=(0,e.useMemo)(()=>E?.suggestions.filter(a=>J.has(a.flowId))??[],[E,J]),ah=(0,e.useMemo)(()=>{if(!R)return 0;let a=new Set([b.id,...c.map(a=>a.id)]);return R.patches.filter(b=>a.has(b.flowId)).length},[b.id,R,c]),ai=(0,e.useMemo)(()=>{if(!R)return[];let a=new Set([b.id,...c.map(a=>a.id)]),d=!!(V||h||l.length>0);return R.issues.map((c,e)=>{var f;let g=c.flowId??b.id,h=(f={...c,flowId:g},R.patches.filter(a=>a.flowId===f.flowId&&a.nodeId===f.nodeId&&a.reason===f.message));return{key:`issue-${e}`,issue:c,flowId:g,patches:h,selectable:a.has(g)&&(h.length>0||d)}})},[V,b.id,h,l.length,R,c]),aj=(0,e.useMemo)(()=>ai.filter(a=>a.selectable),[ai]),ak=(0,e.useMemo)(()=>ai.filter(a=>O.has(a.key)),[ai,O]),al=ak.some(a=>0===a.patches.length),am=V||h||"",an=aj.length>0&&aj.every(a=>O.has(a.key)),ao=async()=>{if(f&&V){y("suggesting"),ac(null);try{let a=await P.g.suggestToolsForStep({flow:T,relatedFlows:c,nodeId:f,modelId:V,goal:T.description});A(a),C(new Set(a.suggestions.map(a=>`${a.server}\u0000${a.tool}`))),y("tools")}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.suggestFailed")),y("tools")}}},ap=async()=>{f&&V&&await ae(T,V)},aq=async()=>{let a=Z.trim(),b=V||h||"";if(!f||!z||!b||!a)return;let d=[..._.map(a=>a.message),a];y("suggesting"),ac(null);try{let e=await P.g.suggestToolsForStep({flow:T,relatedFlows:c,nodeId:f,modelId:b,goal:T.description,feedback:d,previousSuggestion:z});A(e),C(new Set(e.suggestions.map(a=>`${a.server}\u0000${a.tool}`))),aa(b=>[...b,{message:a,response:e.assistantMessage}]),$(""),y("tools")}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.suggestFailed")),y("tools")}},ar=async()=>{if(f&&z){y("suggesting"),ac(null);try{let a=await P.g.applyToolsToStep({flow:T,nodeId:f,selections:af});U(a),N(z.proposedPrompt),m(a),await ae(a)}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.connectFailed")),y("tools")}}},as=async a=>{if(!f)return;let b=V||h||"";if(!b){ac(t("flows.assistance.needModel")),y("agents");return}y("improving"),ac(null);try{let d=await P.g.improvePromptForStep({flow:a,relatedFlows:c,nodeId:f,modelId:b,...M?{draftPrompt:M}:{}}),e={...a,nodes:a.nodes.map(a=>a.id===f?{...a,data:{...a.data,properties:{...a.data.properties??{},promptTemplate:d.prompt}}}:a)};U(e),m(e),await ad(e)}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.improvePromptFailed")),y("agents")}},at=async()=>{if(f&&E){y("suggesting-agents"),ac(null);try{let a=await P.g.applyAgentsToStep({flow:T,nodeId:f,selections:ag});U(a),m(a),await as(a)}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.connectAgentsFailed")),y("agents")}}},av=async()=>{if(R&&0!==ak.length){y("fixing"),ac(null);try{let a=ak.flatMap(a=>a.patches),b=function(a,b){let c=a.map(bQ),d=new Map(c.map(a=>[a.id,a]));for(let a of b){let b=d.get(a.flowId)?.nodes.find(b=>b.id===a.nodeId);if(!b)continue;let c={...b.data.properties??{}};for(let[b,d]of Object.entries(a.set))c[b]=d;for(let b of a.remove)delete c[b];b.data={...b.data,properties:c}}return c}([T,...c],a),d=new Map;for(let a of ak){if(a.patches.length>0)continue;let b=d.get(a.flowId)??[];b.push(a),d.set(a.flowId,b)}if(d.size>0){if(!am)throw Error(t("flows.assistance.needFixModel"));let a=await Promise.all([...d].map(async([a,c])=>{let d=b.find(b=>b.id===a);if(!d)throw Error(t("flows.assistance.fixFailed"));let e=await P.g.improveFlow(d,"Fix only the selected plausibility findings below. Preserve all other behavior, prompts, and graph structure unless a selected finding requires a change. Do not add capabilities or install tools.\n\nSELECTED FINDINGS:\n"+c.map(({issue:a})=>`- [${a.severity}/${a.code}] ${a.message}${a.nodeId?` (node: ${a.nodeId})`:""}`).join("\n"),am,{allowInstall:!1,relatedFlows:b.filter(b=>b.id!==a)});if(!e.success)throw Error(e.error);return e.flow})),c=new Map(a.map(a=>[a.id,a]));b=b.map(a=>c.get(a.id)??a)}let e=b.find(a=>a.id===T.id);if(!e)throw Error(t("flows.assistance.fixFailed"));U(e),m(e),n?.(c.map(a=>b.find(b=>b.id===a.id)??a)),o()}catch(a){ac(a instanceof Error?a.message:t("flows.assistance.fixFailed")),y("plausibility")}}},aw="suggesting"===x||"suggesting-agents"===x||"improving"===x||"checking"===x||"fixing"===x;return(0,d.jsxs)(q.A,{open:a,onClose:aw?void 0:o,fullWidth:!0,maxWidth:"md",children:[(0,d.jsxs)(r.A,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(bh.A,{color:"primary"}),(0,d.jsx)(i.default,{sx:{flex:1,minWidth:0},children:"plausibility"===x||"checking"===x||"fixing"===x?t("flows.assistance.plausibilityTitle"):"agents"===x||"suggesting-agents"===x?t("flows.assistance.agentsTitle"):"improving"===x?t("flows.assistance.improvePromptTitle"):t("flows.assistance.toolsTitle")}),(0,d.jsxs)(i.default,{display:"flex",alignItems:"center",gap:.5,flexShrink:0,children:[(0,d.jsx)(bO.A,{}),(0,d.jsx)(bP.A,{variant:"icon"})]})]}),(0,d.jsxs)(s.A,{dividers:!0,children:[aw&&(0,d.jsxs)(bb.A,{alignItems:"center",spacing:1.5,sx:{py:5},children:[(0,d.jsx)(G.default,{}),(0,d.jsx)(j.A,{color:"text.secondary",children:"suggesting"===x?t("flows.assistance.finding"):"suggesting-agents"===x?t("flows.assistance.findingAgents"):"improving"===x?t("flows.assistance.improvingPrompt"):"fixing"===x?t("flows.assistance.fixing"):t("flows.assistance.checking")})]}),ab&&!aw&&(0,d.jsx)(p.A,{severity:"error",sx:{mb:2},children:ab}),("tools"===x&&!z||"agents"===x&&!E)&&(0,d.jsx)(bb.A,{spacing:2,children:0===l.length?(0,d.jsx)(p.A,{severity:"warning",children:t("flows.assistance.needModel")}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(p.A,{severity:"info",children:t("flows.assistance.chooseModel")}),(0,d.jsxs)(bB.A,{fullWidth:!0,size:"small",children:[(0,d.jsx)(bC.A,{id:"assistance-model-label",children:t("flows.assistance.aiHelper")}),(0,d.jsx)(bD.A,{labelId:"assistance-model-label",label:t("flows.assistance.aiHelper"),value:V,onChange:a=>W(String(a.target.value)),children:l.map(a=>(0,d.jsx)(K.A,{value:a.id,children:a.displayName||a.name},a.id))})]})]})}),"tools"===x&&z&&(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsx)(p.A,{severity:"info",children:t("flows.assistance.approvalHelp")}),0===z.suggestions.length?(0,d.jsx)(p.A,{severity:"success",children:t("flows.assistance.noTool")}):z.suggestions.map(a=>{let b=`${a.server}\u0000${a.tool}`;return(0,d.jsx)(D.A,{variant:"outlined",sx:{p:1.25},children:(0,d.jsx)(H.A,{control:(0,d.jsx)(bK.A,{checked:B.has(b),onChange:a=>{C(c=>{let d=new Set(c);return a.target.checked?d.add(b):d.delete(b),d})}}),label:(0,d.jsxs)(i.default,{children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,d.jsx)(F.A,{size:"small",label:a.server}),(0,d.jsx)(j.A,{fontWeight:800,children:a.tool})]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:a.reason})]})})},b)}),(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"subtitle2",children:t("flows.assistance.promptPreview")}),(0,d.jsx)(D.A,{variant:"outlined",sx:{p:1.25,mt:.5,whiteSpace:"pre-wrap",maxHeight:220,overflow:"auto"},children:(0,d.jsx)(j.A,{variant:"body2",component:"pre",sx:{m:0,fontFamily:"inherit",whiteSpace:"pre-wrap"},children:z.proposedPrompt})})]}),X&&(0,d.jsx)(D.A,{variant:"outlined",sx:{p:1.5},children:(0,d.jsxs)(bb.A,{spacing:1.25,children:[(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"subtitle2",children:t("flows.assistance.talkTitle")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:t("flows.assistance.talkHelp")})]}),_.map((a,b)=>(0,d.jsxs)(bb.A,{spacing:.75,children:[(0,d.jsxs)(i.default,{sx:{alignSelf:"flex-end",maxWidth:"85%",px:1.25,py:.75,bgcolor:"action.selected",borderRadius:2},children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:t("flows.assistance.you")}),(0,d.jsx)(j.A,{variant:"body2",children:a.message})]}),a.response&&(0,d.jsxs)(i.default,{sx:{alignSelf:"flex-start",maxWidth:"85%",px:1.25,py:.75,bgcolor:"action.hover",borderRadius:2},children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:t("flows.assistance.aiHelper")}),(0,d.jsx)(j.A,{variant:"body2",children:a.response})]})]},`${b}-${a.message}`)),(0,d.jsx)(u.A,{autoFocus:!0,fullWidth:!0,multiline:!0,minRows:2,label:t("flows.assistance.talkLabel"),placeholder:t("flows.assistance.talkPlaceholder"),value:Z,slotProps:{htmlInput:{maxLength:2e3}},onChange:a=>$(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.ctrlKey||a.metaKey)&&(a.preventDefault(),aq())}}),(0,d.jsx)(bb.A,{direction:"row",justifyContent:"flex-end",children:(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bh.A,{}),disabled:!Z.trim(),onClick:()=>void aq(),children:t("flows.assistance.reconsider")})})]})})]}),"agents"===x&&E&&(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsx)(p.A,{severity:"info",children:t("flows.assistance.agentApprovalHelp")}),0===E.suggestions.length?(0,d.jsx)(p.A,{severity:"success",children:t("flows.assistance.noAgent")}):E.suggestions.map(a=>(0,d.jsx)(D.A,{variant:"outlined",sx:{p:1.25},children:(0,d.jsx)(H.A,{control:(0,d.jsx)(bK.A,{checked:J.has(a.flowId),onChange:b=>{L(c=>{let d=new Set(c);return b.target.checked?d.add(a.flowId):d.delete(a.flowId),d})}}),label:(0,d.jsxs)(i.default,{children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,d.jsx)(bj.A,{color:"primary",fontSize:"small"}),(0,d.jsx)(j.A,{fontWeight:800,children:a.flowName})]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:a.reason})]})})},a.flowId))]}),"plausibility"===x&&R&&(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsx)(bb.A,{direction:"row",gap:1,flexWrap:"wrap",children:R.contexts.map(a=>(0,d.jsx)(F.A,{label:a.label},`${a.kind}-${a.sourceId??""}`))}),0===R.issues.length?(0,d.jsx)(p.A,{severity:"success",children:t("flows.assistance.plausible")}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:t("flows.assistance.selectionHelp")}),aj.length>1&&(0,d.jsx)(H.A,{sx:{alignSelf:"flex-start",ml:0},control:(0,d.jsx)(bK.A,{checked:an,indeterminate:O.size>0&&!an,onChange:a=>{Q(a.target.checked?new Set(aj.map(a=>a.key)):new Set)}}),label:t("flows.assistance.selectAll")}),ai.map(a=>{let{issue:c}=a,e=R.repairedFlows.find(b=>b.id===a.flowId),f=`${e&&e.id!==b.id?`${e.name}: `:""}${(0,a8.z)(c,t)}`;return(0,d.jsx)(p.A,{severity:c.severity,action:(0,d.jsx)(bK.A,{size:"small",checked:O.has(a.key),disabled:!a.selectable,title:a.selectable?void 0:t("flows.assistance.cannotFix"),inputProps:{"aria-label":t("flows.assistance.selectIssue",{issue:f})},onChange:b=>{Q(c=>{let d=new Set(c);return b.target.checked?d.add(a.key):d.delete(a.key),d})}}),sx:{"& .MuiAlert-action":{alignItems:"center",py:0}},children:f},a.key)})]}),al&&!am&&(0===l.length?(0,d.jsx)(p.A,{severity:"warning",children:t("flows.assistance.needFixModel")}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(p.A,{severity:"info",children:t("flows.assistance.chooseFixModel")}),(0,d.jsxs)(bB.A,{fullWidth:!0,size:"small",children:[(0,d.jsx)(bC.A,{id:"assistance-fix-model-label",children:t("flows.assistance.aiHelper")}),(0,d.jsx)(bD.A,{labelId:"assistance-fix-model-label",label:t("flows.assistance.aiHelper"),value:V,onChange:a=>W(String(a.target.value)),children:l.map(a=>(0,d.jsx)(K.A,{value:a.id,children:a.displayName||a.name},a.id))})]})]})),ah>0&&(0,d.jsx)(p.A,{severity:"info",children:w("flows.assistance.patch",ah)}),R.patches.length>ah&&(0,d.jsx)(p.A,{severity:"warning",children:w("flows.assistance.savedPatch",R.patches.length-ah)})]})]}),(0,d.jsxs)(v.A,{sx:{flexWrap:"wrap"},children:[(0,d.jsx)(k.A,{onClick:o,disabled:aw,children:t("flows.assistance.close")}),"improving"===x&&(0,d.jsx)(k.A,{variant:"contained",disabled:!0,startIcon:(0,d.jsx)(G.default,{size:16,color:"inherit"}),children:t("flows.inspector.improvingPrompt")}),"tools"===x&&!z&&l.length>0&&(0,d.jsx)(k.A,{variant:"contained",disabled:!V,onClick:()=>void ao(),children:t("flows.assistance.suggest")}),"agents"===x&&!E&&l.length>0&&(0,d.jsx)(k.A,{variant:"contained",disabled:!V,onClick:()=>void ap(),children:t("flows.assistance.suggestAgents")}),"tools"===x&&z&&0===z.suggestions.length&&(0,d.jsx)(k.A,{startIcon:(0,d.jsx)(bj.A,{}),onClick:()=>void ae(T),children:t("flows.assistance.continueAgents")}),"tools"===x&&z&&(0,d.jsx)(k.A,{startIcon:(0,d.jsx)(bM.A,{}),"aria-expanded":X,onClick:()=>Y(a=>!a),children:t("flows.assistance.talk")}),"tools"===x&&z&&z.suggestions.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.A,{onClick:()=>void ae(T),children:t("flows.assistance.skip")}),(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bL.A,{}),disabled:0===af.length,onClick:()=>void ar(),children:w("flows.assistance.connect",af.length)})]}),"agents"===x&&E&&0===E.suggestions.length&&(0,d.jsx)(k.A,{startIcon:(0,d.jsx)(bN,{}),onClick:()=>void as(T),children:t("flows.assistance.improveAndCheck")}),"agents"===x&&E&&E.suggestions.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.A,{onClick:()=>void as(T),children:t("flows.assistance.skipAgents")}),(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bj.A,{}),disabled:0===ag.length,onClick:()=>void at(),children:w("flows.assistance.connectAgents",ag.length)})]}),"plausibility"===x&&R&&aj.length>0?(0,d.jsx)(k.A,{variant:"contained",startIcon:(0,d.jsx)(bi.A,{}),disabled:0===ak.length||al&&!am,onClick:()=>void av(),children:w("flows.assistance.fix",ak.length)}):null]})]})}var bS=c(18085),bT=c(49843);function bU({currentLabel:a,nameIsCustom:b,defaultLabel:c,previousAutoLabel:d,nextAutoLabel:e}){return!0===b?a&&a.length>0?a:e:!a||0===a.length||a===c||void 0!==d&&d.length>0&&a===d?e:a}let bV=(0,M.h)("components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/hooks/useModelManagement.ts");var bW=c(5485);let bX=(0,M.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/hooks/useServerConnection");function bY(a,b){let c=a.replace(/\s+/g," ").trim();if(c.length<=b)return c;let d=c.slice(0,b),e=d.lastIndexOf(" ");return`${(e>.6*b?d.slice(0,e):d).trimEnd()}…`}let bZ=(0,M.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/hooks/useHandoffTools"),b$=({nodeData:a,setNodeData:b})=>{let{t:c}=(0,au.s9)();return a?(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%",pr:2},children:[(0,d.jsx)(j.A,{variant:"h6",gutterBottom:!0,children:c("flows.process.configTitle")}),(0,d.jsx)(u.A,{fullWidth:!0,label:c("flows.mcpNode.label"),value:a.label||"",onChange:a=>b(b=>({...b,label:a.target.value,properties:{...b?.properties,nameIsCustom:!0}})),margin:"normal"}),(0,d.jsx)(u.A,{fullWidth:!0,label:c("flows.process.description"),value:a.description||"",onChange:c=>b({...a,description:c.target.value}),margin:"normal",multiline:!0,rows:2,helperText:c("flows.process.descriptionHelp")})]}):null};var b_=c(5101),b0=c(77078),b1=c(50873);let b2=({isLoadingModels:a,loadError:b,models:c,selectedModelId:e,handleModelSelect:f,isModelBound:g,handleUnbindModel:h})=>{let{t:l}=(0,au.s9)(),m=(0,bs.E)("models",c),n=a=>({key:a.id,content:(0,d.jsx)(bv.A,{model:a,selectable:!0,selected:e===a.id,onSelect:f})}),o=m.items.map(n),p=m.groups?m.groups.map(a=>({...a,items:a.items.map(n)})):null;return(0,d.jsxs)(i.default,{sx:{mt:4},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,children:l("flows.process.bindModel")}),(0,d.jsx)(i.default,{role:"radiogroup","aria-label":l("flows.process.bindModelAria"),children:(0,d.jsx)(b1.A,{isLoading:a,error:b,loadingMessage:l("flows.process.loadingModels"),emptyMessage:l("flows.process.noModels"),searchable:!0,searchPlaceholder:l("flows.process.searchModels"),searchTerm:m.searchTerm,onSearchChange:m.setSearchTerm,columns:{xs:12,sm:6},items:o,groups:p,collapsedKeys:m.collapsedKeys,onToggleGroup:m.toggleGroup})}),!a&&!b&&c.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(b_.A,{children:l(e?"flows.process.modelSelected":"flows.process.modelSelect")}),g&&(0,d.jsx)(i.default,{sx:{mt:2,display:"flex",justifyContent:"flex-end"},children:(0,d.jsx)(k.A,{startIcon:(0,d.jsx)(b0.A,{}),onClick:h,color:"primary",variant:"outlined",size:"small",children:l("flows.process.unbindModel")})})]})]})};var b3=c(50025),b4=c(4784),b5=c(56686),b6=c(77493),b7=c(62282),b8=c(98908),b9=c(16473),ca=c(52317),cb=c(78717);let cc=(0,M.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/ServerTools"),cd=({isLoadingServers:a,connectedMcpNodes:b,availableServers:c,onConnectMcpServer:f,serverToolsMap:g,serverStatuses:h,isLoadingTools:l,handleSelectToolServer:o,handleInsertToolBinding:p,selectedToolServerNodeId:q,selectedNodeId:r,isLoadingSelectedServerTools:s,promptBuilderRef:t,handleRetryServer:v,handleRestartServer:w})=>{let{t:x,tp:z}=(0,au.s9)(),A=q??b[0]?.nodeId??null,[B,C]=(0,e.useState)({}),[E,F]=(0,e.useState)(!1),H=(c??[]).filter(a=>!b.some(b=>b.serverName===a.name)),I=!!f&&H.length>0,J=(0,bs.E)("mcp",H),K=a=>({key:a.name,content:(0,d.jsx)(br.A,{name:a.name,status:a.status||"disconnected",path:a.rootPath||"",enabled:!a.disabled,transport:a.transport||"stdio",pickerMode:!0,onClick:()=>{var b;return b=a.name,void(F(!1),f?.(b))}})}),L=J.items.map(K),M=J.groups?J.groups.map(a=>({...a,items:a.items.map(K)})):null,N=(0,d.jsx)(bq.A,{open:E,onClose:()=>F(!1),title:x("flows.serverTools.connectTitle"),description:x("flows.serverTools.connectDescription"),emptyMessage:x("flows.serverTools.noneToConnect"),searchable:!0,searchPlaceholder:x("flows.serverTools.searchServers"),searchTerm:J.searchTerm,onSearchChange:J.setSearchTerm,columns:{xs:12,sm:6},items:L,groups:M,collapsedKeys:J.collapsedKeys,onToggleGroup:J.toggleGroup}),[O,P]=(0,e.useState)(""),[Q,R]=(0,e.useState)({}),S=(a,b,c)=>{if(a!==A){cc.debug("Node tab not selected, selecting node first",{selectedNodeId:a,serverName:b,toolName:c}),V(a);return}b&&c?(cc.debug("Inserting tool binding",{serverName:b,toolName:c}),p(b,c)):cc.warn("Cannot insert tool binding, server or tool name is undefined",{serverName:b,toolName:c})},T=a=>{try{let c=b.find(b=>b.nodeId===a);if(!c)return cc.warn(`Could not find connected MCP node with ID ${a}`),[];let d=c.enabledTools||[];return cc.debug(`Enabled tools for node ${a}: ${JSON.stringify(d)}`),Array.isArray(d)?d:[]}catch(b){return cc.error(`Error getting enabled tools for node ${a}:`,b),[]}},U=(a,b,c)=>{try{if(!c||!Array.isArray(c))return cc.warn(`Tools array is not available or not an array for server ${b}`),[];let d=T(a),e=c;if(d.length>0?e=c.filter(a=>a&&a.name&&d.includes(a.name)):(cc.debug(`No tools explicitly enabled for node ${a}, showing none.`),e=[]),O.trim()){let a=O.toLowerCase().trim();e=e.filter(b=>b.name&&b.name.toLowerCase().includes(a)||b.description&&b.description.toLowerCase().includes(a)||b.inputSchema&&JSON.stringify(b.inputSchema).toLowerCase().includes(a))}return e}catch(d){return cc.error(`Error filtering tools for node ${a} (server ${b}):`,d),c||[]}},V=a=>{o(a)},W=async(a,b)=>{b.stopPropagation(),cc.debug(`Retry button clicked for server: ${a}`),C(b=>({...b,[a]:!0}));try{v&&await v(a)}finally{setTimeout(()=>{C(b=>({...b,[a]:!1}))},500)}},X=async(a,b)=>{b.stopPropagation(),cc.debug(`Restart button clicked for server: ${a}`),C(b=>({...b,[a]:!0}));try{w&&await w(a)}finally{setTimeout(()=>{C(b=>({...b,[a]:!1}))},500)}};(0,e.useEffect)(()=>{b.length>0&&!q&&o(b[0].nodeId)},[b,q,o]);let Y=b.find(a=>a.nodeId===A),Z=Y?.serverName;return(0,d.jsxs)(i.default,{sx:{mt:4,display:"flex",flexDirection:"column",height:"100%"},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,children:x("flows.serverTools.title")}),a?(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(G.default,{size:20}),(0,d.jsx)(j.A,{color:"text.secondary",children:x("flows.serverTools.loadingNodes")})]}):0===b.length?(0,d.jsxs)(i.default,{sx:{p:2,border:"1px dashed rgba(0, 0, 0, 0.12)",borderRadius:1},children:[(0,d.jsx)(j.A,{color:"text.secondary",align:"center",children:x("flows.serverTools.noneConnected")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",align:"center",display:"block",sx:{mt:1},children:I?x("flows.serverTools.pickHelp"):x("flows.serverTools.connectHelp")}),I&&(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",mt:2},children:(0,d.jsx)(k.A,{variant:"contained",size:"small",startIcon:(0,d.jsx)(y.A,{}),onClick:()=>F(!0),children:x("flows.serverTools.connect")})}),N]}):(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",flexGrow:1,height:"calc(100% - 40px)"},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",mb:2,borderBottom:1,borderColor:"divider"},children:[(0,d.jsx)(bc.A,{value:A||b[0]?.nodeId||"",onChange:(a,b)=>V(b),variant:"scrollable",scrollButtons:"auto",sx:{flexGrow:1},children:b.map(a=>{if(!a||!a.nodeId||!a.serverName)return cc.warn("Skipping invalid MCP node in tabs:",a),null;let b=a.serverName,c=a.nodeId,e=a.status;B[b],l[b];let f=g[b]||[],h=T(c);return U(c,b,f).length,(0,d.jsx)(bd.A,{value:c,label:(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(j.A,{variant:"body2",sx:{color:"connected"===e?"success.main":"error"===e?"error.main":"text.secondary"},children:b}),h.length>0&&(0,d.jsx)(b3.A,{badgeContent:h.length,color:"primary",sx:{ml:1}})]}),sx:{textTransform:"none",minHeight:"48px",opacity:"connected"!==e?.7:1}},c)})}),I&&(0,d.jsx)(n.A,{title:x("flows.serverTools.connectAnother"),children:(0,d.jsx)(m.A,{size:"small",onClick:()=>F(!0),sx:{ml:1},children:(0,d.jsx)(y.A,{fontSize:"small"})})}),N]}),Y&&Z&&(0,d.jsxs)(i.default,{sx:{display:"flex",justifyContent:"flex-end",mb:2},children:[(0,d.jsx)(n.A,{title:x("flows.serverTools.retry",{server:Z}),children:(0,d.jsx)("span",{children:(0,d.jsx)(m.A,{size:"small",onClick:a=>W(Z,a),disabled:B[Z]||l[Z],children:B[Z]?(0,d.jsx)(G.default,{size:16}):(0,d.jsx)(b6.A,{fontSize:"small"})})})}),"connected"===Y.status&&w&&(0,d.jsx)(n.A,{title:x("flows.serverTools.restart",{server:Z}),children:(0,d.jsx)("span",{children:(0,d.jsx)(m.A,{size:"small",onClick:a=>X(Z,a),disabled:B[Z],sx:{ml:1},children:(0,d.jsx)(b7.A,{fontSize:"small"})})})})]}),(0,d.jsx)(u.A,{placeholder:x("flows.serverTools.searchTools"),variant:"outlined",size:"small",fullWidth:!0,value:O,onChange:a=>P(a.target.value),sx:{mb:2},InputProps:{startAdornment:(0,d.jsx)(ai.A,{position:"start",children:(0,d.jsx)(b8.A,{fontSize:"small"})})}}),(0,d.jsx)(D.A,{variant:"outlined",sx:{flexGrow:1,overflow:"auto",p:0,height:"calc(100% - 140px)"},children:Y&&Z&&(()=>{let a=Y.nodeId,b=Y.serverName;if("connected"!==Y.status)return(0,d.jsx)(i.default,{sx:{p:2,textAlign:"center"},children:(0,d.jsx)(j.A,{color:"text.secondary",children:x("flows.serverTools.notConnectedTools",{server:b})})},a);if(l[b])return(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",p:2},children:(0,d.jsx)(G.default,{size:24})},a);let c=g[b]||[],e=U(a,b,c);if(0===e.length){let b=T(a).length;return(0,d.jsx)(i.default,{sx:{p:2,textAlign:"center"},children:(0,d.jsx)(j.A,{color:"text.secondary",children:O.trim()?x("flows.serverTools.noMatch",{search:O}):0===b?x("flows.serverTools.noneEnabled"):x("flows.serverTools.noneAvailable")})},a)}return(0,d.jsx)(aF.A,{disablePadding:!0,children:e.map(c=>{var e;let f,g=(f=c.name,`${a}::${f}`),h=!!Q[g],k=c.description||x("flows.agentTools.noDescription"),l=(a=>{let b=Object.keys(a?.properties??{}).length;if(0===b)return x("flows.serverTools.parameter.none");let c=Array.isArray(a?.required)?a.required.length:0,d=c>0?z("flows.serverTools.required",c):"";return z("flows.serverTools.parameter",b,{required:d})})(c.inputSchema);return(0,d.jsx)(b4.A,{variant:"outlined",role:"button",tabIndex:0,"aria-label":x("flows.serverTools.addTool",{tool:c.name,server:b}),onClick:()=>S(a,b,c.name),onKeyDown:d=>{d.target===d.currentTarget&&("Enter"===d.key||" "===d.key)&&(d.preventDefault(),S(a,b,c.name))},sx:{mb:1,mx:1,mt:1,cursor:"pointer","&:hover":{boxShadow:1,bgcolor:"action.hover"},"&:focus-visible":{outline:"2px solid",outlineColor:"primary.main",outlineOffset:1}},children:(0,d.jsxs)(b5.A,{sx:{p:1.25,"&:last-child":{pb:1.25}},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"flex-start",gap:1},children:[(0,d.jsxs)(i.default,{sx:{flexGrow:1,minWidth:0},children:[(0,d.jsxs)(j.A,{variant:"subtitle2",component:"div",sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(b9.A,{fontSize:"small",sx:{mr:1,color:"primary.main",flexShrink:0}}),(0,d.jsx)(i.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:c.name})]}),(0,d.jsx)(n.A,{title:k,describeChild:!0,placement:"top-start",children:(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",tabIndex:0,sx:{mt:.5,display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:2,overflow:"hidden"},children:k})}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:.5},children:l})]}),(0,d.jsx)(n.A,{title:x(h?"flows.serverTools.collapse":"flows.serverTools.expand",{tool:c.name}),children:(0,d.jsx)(m.A,{size:"small","aria-label":x(h?"flows.serverTools.collapse":"flows.serverTools.expand",{tool:c.name}),"aria-expanded":h,"aria-controls":`${g}-details`,onClick:a=>{a.stopPropagation(),R(a=>({...a,[g]:!a[g]}))},children:h?(0,d.jsx)(cb.A,{}):(0,d.jsx)(ca.A,{})})})]}),h&&(0,d.jsxs)(i.default,{id:`${g}-details`,sx:{mt:1,pt:1,borderTop:1,borderColor:"divider"},onClick:a=>a.stopPropagation(),children:[(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{whiteSpace:"pre-wrap"},children:k}),c.inputSchema&&((e=c.inputSchema)&&e.properties?(0,d.jsxs)(i.default,{sx:{mt:1},children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{fontWeight:"medium"},children:x("flows.agentTools.parameters")}),(0,d.jsx)(i.default,{sx:{pl:1,mt:.5},children:Object.entries(e.properties).map(([a,b])=>(0,d.jsxs)(i.default,{sx:{mb:.5},children:[(0,d.jsxs)(j.A,{variant:"caption",component:"span",sx:{fontWeight:"medium"},children:[a,e.required?.includes(a)&&(0,d.jsx)(j.A,{variant:"caption",component:"span",color:"error.main",children:" *"}),": "]}),(0,d.jsx)(j.A,{variant:"caption",component:"span",color:"text.secondary",children:b.description||b.type||x("flows.agentTools.noDescription")})]},a))})]}):null)]})]})},c.name)})},a)})()})]})]})},ce=(0,M.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/ServerResources"),cf=({primary:a,secondary:b,chip:c,tooltip:e,onClick:f})=>(0,d.jsx)(b4.A,{variant:"outlined",onClick:f,title:e,sx:{mb:1,mx:1,mt:1,cursor:"pointer","&:hover":{boxShadow:1,bgcolor:"action.hover"}},children:(0,d.jsx)(b5.A,{sx:{p:2,"&:last-child":{pb:2}},children:(0,d.jsxs)(i.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[(0,d.jsxs)(i.default,{sx:{width:"100%"},children:[(0,d.jsxs)(j.A,{variant:"subtitle2",component:"div",sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(am.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),a]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5,wordBreak:"break-all"},children:b})]}),c&&(0,d.jsx)(F.A,{size:"small",label:c,sx:{ml:1,flexShrink:0}})]})})}),cg=({connectedMcpNodes:a,handleInsertResourceBinding:b,promptBuilderRef:c})=>{let{t:f}=(0,au.s9)(),[g,h]=(0,e.useState)(null),[k,l]=(0,e.useState)([]),[m,n]=(0,e.useState)([]),[o,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(),[t,v]=(0,e.useState)(""),w=a.find(a=>a.nodeId===g),x=w?.serverName;(0,e.useEffect)(()=>{a.length>0&&!g&&h(a[0].nodeId)},[a,g]);let y=(0,e.useCallback)(async a=>{q(!0),s(void 0);try{let b=await Q.S.listServerResources(a);l(b.resources||[]),n(b.resourceTemplates||[]),s(b.error)}catch(b){ce.warn(`Failed to load resources for ${a}`,b),s(b instanceof Error?b.message:f("flows.serverResources.loadFailed"))}finally{q(!1)}},[f]);(0,e.useEffect)(()=>{x?y(x):(l([]),n([]))},[x,y]);let z=a=>a.toLowerCase().includes(t.toLowerCase().trim()),A=t.trim()?k.filter(a=>z(a.name||"")||z(a.uri)||z(a.description||"")):k,B=t.trim()?m.filter(a=>z(a.name||"")||z(a.uriTemplate)||z(a.description||"")):m,C=a=>{x&&a&&b(x,a)};return(0,d.jsxs)(i.default,{sx:{mt:4,display:"flex",flexDirection:"column",height:"100%"},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,children:f("flows.serverResources.title")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{mb:1},children:f("flows.serverResources.help")}),0===a.length?(0,d.jsxs)(i.default,{sx:{p:2,border:"1px dashed rgba(0, 0, 0, 0.12)",borderRadius:1},children:[(0,d.jsx)(j.A,{color:"text.secondary",align:"center",children:f("flows.serverTools.noneConnected")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",align:"center",display:"block",sx:{mt:1},children:f("flows.serverResources.connectHelp")})]}):(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",flexGrow:1,height:"calc(100% - 40px)"},children:[(0,d.jsx)(bc.A,{value:g||a[0]?.nodeId||"",onChange:(a,b)=>h(b),variant:"scrollable",scrollButtons:"auto",sx:{mb:2,borderBottom:1,borderColor:"divider"},children:a.map(a=>(0,d.jsx)(bd.A,{value:a.nodeId,label:(0,d.jsx)(j.A,{variant:"body2",sx:{color:"connected"===a.status?"success.main":"error"===a.status?"error.main":"text.secondary"},children:a.serverName}),sx:{textTransform:"none",minHeight:48,opacity:"connected"!==a.status?.7:1}},a.nodeId))}),(0,d.jsx)(u.A,{placeholder:f("flows.serverResources.search"),variant:"outlined",size:"small",fullWidth:!0,value:t,onChange:a=>v(a.target.value),sx:{mb:2},InputProps:{startAdornment:(0,d.jsx)(ai.A,{position:"start",children:(0,d.jsx)(b8.A,{fontSize:"small"})})}}),r&&(0,d.jsx)(p.A,{severity:"warning",sx:{mb:2},children:r}),(0,d.jsx)(D.A,{variant:"outlined",sx:{flexGrow:1,overflow:"auto",p:0,height:"calc(100% - 140px)"},children:w&&"connected"!==w.status?(0,d.jsx)(i.default,{sx:{p:2,textAlign:"center"},children:(0,d.jsx)(j.A,{color:"text.secondary",children:f("flows.serverResources.notConnected",{server:x||""})})}):o?(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",p:2},children:(0,d.jsx)(G.default,{size:24})}):0===A.length&&0===B.length?(0,d.jsx)(i.default,{sx:{p:2,textAlign:"center"},children:(0,d.jsx)(j.A,{color:"text.secondary",children:t.trim()?f("flows.serverResources.noMatch",{search:t}):f("flows.serverResources.none")})}):(0,d.jsxs)(aF.A,{disablePadding:!0,children:[A.map(a=>(0,d.jsx)(cf,{primary:a.name||a.uri,secondary:a.description||a.uri,chip:a.mimeType,tooltip:f("flows.serverResources.add",{resource:a.name||a.uri}),onClick:()=>C(a.uri)},a.uri)),B.map(a=>(0,d.jsx)(cf,{primary:a.name||a.uriTemplate,secondary:a.description||a.uriTemplate,chip:"template",tooltip:f("flows.serverResources.addTemplate",{template:a.uriTemplate}),onClick:()=>C(a.uriTemplate)},a.uriTemplate))]})})]})]})},ch=(0,w.A)((0,d.jsx)("path",{d:"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7zm-6 .67 2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z"}),"SaveAlt"),ci=({wiredResources:a,promptBuilderRef:b})=>{let{t:c}=(0,au.s9)();return 0===a.length?null:(0,d.jsxs)(i.default,{sx:{mb:3},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,children:c("flows.wired.title")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{mb:1,display:"block"},children:c("flows.wired.help")}),(0,d.jsx)(aF.A,{disablePadding:!0,children:a.map(a=>(0,d.jsx)(b4.A,{variant:"outlined",sx:{mb:1,mt:1},children:(0,d.jsx)(b5.A,{sx:{p:2,"&:last-child":{pb:2}},children:(0,d.jsxs)(i.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[(0,d.jsxs)(i.default,{sx:{width:"100%"},children:[(0,d.jsxs)(j.A,{variant:"subtitle2",component:"div",sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(am.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),a.label]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5,wordBreak:"break-all"},children:"run"===a.scope?a.runName?c("flows.wired.temporaryNamed",{name:a.runName}):c("flows.wired.temporaryUnnamed"):c("flows.wired.mcp",{uri:a.uri?` ${a.uri}`:"",server:a.boundServer?c("flows.wired.onServer",{server:a.boundServer}):""})})]}),(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",flexShrink:0,ml:1,gap:.5},children:["run"===a.scope&&a.runName&&(0,d.jsx)(n.A,{title:c("flows.wired.insert",{reference:`\${res:${a.runName}}`}),children:(0,d.jsx)(F.A,{size:"small",icon:(0,d.jsx)(ch,{}),label:`\${res:${a.runName}}`,onClick:()=>{var c;(c=a.runName)&&b.current&&b.current.insertText(`\${res:${c}}`)},clickable:!0,sx:{maxWidth:220}})}),(0,d.jsx)(F.A,{size:"small",color:"produce"===a.role?"secondary":"default",label:"produce"===a.role?c("flows.wired.produce"):c("flows.wired.consume")})]})]})})},`${a.role}-${a.id}`))})]})},cj=(0,M.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/ServerTools/AgentTools"),ck=({handoffTools:a,isLoadingHandoffTools:b,handleInsertToolBinding:c,promptBuilderRef:f})=>{let{t:g,formatList:h}=(0,au.s9)(),[k,l]=(0,e.useState)(""),m=a.filter(a=>{if(!k.trim())return!0;let b=k.toLowerCase().trim();return a.name&&a.name.toLowerCase().includes(b)||a.description&&a.description.toLowerCase().includes(b)});return(0,d.jsxs)(i.default,{sx:{mt:4,display:"flex",flexDirection:"column",height:"100%"},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,children:g("flows.agentTools.title")}),b?(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(G.default,{size:20}),(0,d.jsx)(j.A,{color:"text.secondary",children:g("flows.agentTools.loading")})]}):0===a.length?(0,d.jsxs)(i.default,{sx:{p:2,border:"1px dashed rgba(0, 0, 0, 0.12)",borderRadius:1},children:[(0,d.jsx)(j.A,{color:"text.secondary",align:"center",children:g("flows.agentTools.none")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",align:"center",display:"block",sx:{mt:1},children:g("flows.agentTools.connectHelp")})]}):(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",flexGrow:1,height:"calc(100% - 40px)"},children:[(0,d.jsx)(u.A,{placeholder:g("flows.agentTools.search"),variant:"outlined",size:"small",fullWidth:!0,value:k,onChange:a=>l(a.target.value),sx:{mb:2},InputProps:{startAdornment:(0,d.jsx)(ai.A,{position:"start",children:(0,d.jsx)(b8.A,{fontSize:"small"})})}}),(0,d.jsx)(D.A,{variant:"outlined",sx:{flexGrow:1,overflow:"auto",p:0,height:"calc(100% - 56px)"},children:0===m.length?(0,d.jsx)(i.default,{sx:{p:2,textAlign:"center"},children:(0,d.jsx)(j.A,{color:"text.secondary",children:k.trim()?g("flows.agentTools.noMatch",{search:k}):g("flows.agentTools.none")})}):(0,d.jsx)(aF.A,{disablePadding:!0,children:m.map(a=>{var b;return(0,d.jsxs)(b4.A,{variant:"outlined",onClick:()=>{a.name?(cj.debug("Inserting handoff tool binding",{toolType:"handoff",toolName:a.name}),c("handoff",a.name)):cj.warn("Cannot insert handoff tool binding, tool name is undefined",{toolName:a.name})},sx:{mb:1,mx:1,mt:1,cursor:"pointer",position:"relative",bgcolor:"rgba(0, 0, 0, 0.04)","&:hover":{boxShadow:1,bgcolor:"rgba(0, 0, 0, 0.08)"}},children:[(0,d.jsx)(b5.A,{sx:{p:2,"&:last-child":{pb:2}},children:(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:(0,d.jsxs)(i.default,{sx:{width:"100%"},children:[(0,d.jsxs)(j.A,{variant:"subtitle2",component:"div",sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(b9.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),a.name]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:a.description||g("flows.agentTools.noDescription")}),a.inputSchema&&((b=a.inputSchema)&&b.properties&&0!==Object.keys(b.properties).length?(0,d.jsxs)(i.default,{sx:{mt:1},children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{fontWeight:"medium"},children:g("flows.agentTools.parameters")}),(0,d.jsx)(i.default,{sx:{pl:1,mt:.5},children:Object.entries(b.properties).map(([a,c])=>(0,d.jsxs)(i.default,{sx:{mb:.5},children:[(0,d.jsxs)(j.A,{variant:"caption",component:"span",sx:{fontWeight:"medium"},children:[a,b.required?.includes(a)&&(0,d.jsx)(j.A,{variant:"caption",component:"span",color:"error.main",children:" *"}),": "]}),(0,d.jsx)(j.A,{variant:"caption",component:"span",color:"text.secondary",children:c.description||c.type||g("flows.agentTools.noDescription")}),c.enum&&(0,d.jsx)(i.default,{sx:{pl:2,mt:.5},children:(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:g("flows.agentTools.options",{options:h(c.enum)})})})]},a))})]}):(0,d.jsx)(i.default,{sx:{mt:1},children:(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{fontStyle:"italic"},children:g("flows.agentTools.noParameters")})}))]})})}),(0,d.jsx)(n.A,{title:g("flows.agentTools.insert",{tool:a.name}),children:(0,d.jsx)(i.default,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0}})})]},a.name)})})})]})]})};var cl=c(85352);let cm=(0,M.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/ProcessNodePropertiesModal/PromptTemplateEditor"),cn=(0,e.forwardRef)((a,b)=>{let{t:c}=(0,au.s9)(),{promptTemplate:f,handlePromptChange:g,excludeModelPrompt:h,excludeStartNodePrompt:l,excludeSystemPrompt:m,nodeData:n,flowId:o,suggestions:q}=a,[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),x=(0,e.useRef)(null);(0,e.useImperativeHandle)(b,()=>({insertText:a=>{x.current&&x.current.insertText(a)},getMode:()=>x.current?x.current.getMode():"raw"}));let y=async()=>{if(cm.debug("fetchRenderedPrompt called with:",{flowId:o,nodeId:n?.id}),!o||!n||!n.id)return void w(c("flows.promptPreview.missingIds"));u(!0),w(null);try{let a=await fetch("/api/flow/prompt-renderer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({flowId:o,nodeId:n.id,options:{renderMode:"rendered",includeConversationHistory:!1,excludeModelPrompt:h,excludeStartNodePrompt:l,excludeSystemPrompt:m}})}),b=await a.json();if(!a.ok)throw Error(b.error||c("flows.promptPreview.failed"));cm.debug("Rendered prompt received",{promptLength:b.prompt?.length}),s(`${b.prompt}
2
3
 
3
- [${c("flows.promptPreview.userMessages")}]`)}catch(a){cm.error("Error fetching rendered prompt",a),w(a instanceof Error?a.message:c("flows.promptPreview.unknownError"))}finally{u(!1)}};return(0,e.useEffect)(()=>{x.current&&"preview"===x.current.getMode()&&y()},[f,h,l,m,o,n?.id]),(0,d.jsx)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%"},children:(0,d.jsx)(cl.A,{ref:x,value:f,onChange:g,label:"",height:"100%",onModeChange:a=>{"preview"===a&&y()},customPreviewRenderer:()=>t?(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,d.jsx)(G.default,{size:40})}):v?(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",p:2},children:[(0,d.jsx)(p.A,{severity:"error",sx:{mb:2},action:(0,d.jsx)(k.A,{color:"inherit",size:"small",onClick:y,children:c("flows.promptPreview.retry")}),children:v}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:2,textAlign:"center"},children:o?c("flows.promptPreview.checkIds"):c("flows.promptPreview.unsaved")})]}):(0,d.jsxs)(i.default,{sx:{p:2},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,sx:{fontWeight:"medium"},children:c("flows.promptPreview.title")}),(0,d.jsx)(D.A,{elevation:0,sx:{p:2,overflow:"auto",bgcolor:"rgba(0, 0, 0, 0.02)",border:"1px solid rgba(0, 0, 0, 0.1)",borderRadius:1},children:(0,d.jsx)(i.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"monospace",fontSize:"0.875rem",m:0},children:r||c("flows.promptPreview.empty")})})]}),suggestions:q})})});cn.displayName="PromptTemplateEditor";let co=(0,w.A)((0,d.jsx)("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9m-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8z"}),"History"),cp=(0,w.A)((0,d.jsx)("path",{d:"M4 9h16v2H4zm0 4h10v2H4z"}),"ShortText"),cq=(0,w.A)((0,d.jsx)("path",{d:"M3 10h11v2H3zm0-2h11V6H3zm0 8h7v-2H3zm15.01-3.13.71-.71c.39-.39 1.02-.39 1.41 0l.71.71c.39.39.39 1.02 0 1.41l-.71.71zm-.71.71-5.3 5.3V21h2.12l5.3-5.3z"}),"EditNote");var cr=c(57257);let cs=(0,w.A)((0,d.jsx)("path",{d:"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m0 14H6l-2 2V4h16z"}),"ChatBubbleOutline"),ct=({selected:a,icon:b,title:c,description:e,onClick:f})=>(0,d.jsxs)(i.default,{role:"radio","aria-checked":a,tabIndex:0,onClick:f,onKeyDown:a=>{("Enter"===a.key||" "===a.key)&&(a.preventDefault(),f())},sx:{flex:1,minWidth:180,position:"relative",p:2,borderRadius:2,border:2,borderColor:a?"primary.main":"divider",bgcolor:a?"action.selected":"background.paper",cursor:"pointer",transition:"border-color 120ms, background-color 120ms","&:hover":{borderColor:a?"primary.main":"text.disabled"},outline:"none","&:focus-visible":{boxShadow:a=>`0 0 0 3px ${a.palette.primary.light}`}},children:[a&&(0,d.jsx)(aN.A,{color:"primary",fontSize:"small",sx:{position:"absolute",top:8,right:8}}),(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5,color:a?"primary.main":"text.secondary"},children:[b,(0,d.jsx)(j.A,{variant:"subtitle1",sx:{fontWeight:600,color:"text.primary"},children:c})]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:e})]}),cu=({excludeModelPrompt:a,setExcludeModelPrompt:b,excludeStartNodePrompt:c,setExcludeStartNodePrompt:e,excludeSystemPrompt:f,setExcludeSystemPrompt:g,inputMode:h,setInputMode:k,isolatedPrompt:l,setIsolatedPrompt:m,allowCallerPrompt:n,setAllowCallerPrompt:o,outputMode:p,setOutputMode:q,isModelBound:r,models:s,nodeData:t})=>{let{t:v}=(0,au.s9)();return(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column"},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",mb:2},children:[(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:a,onChange:a=>b(a.target.checked),color:"primary",size:"small"}),label:v("flows.process.excludeModel")}),(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:c,onChange:a=>e(a.target.checked),color:"primary",size:"small"}),label:v("flows.process.excludeStart")}),(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:f,onChange:a=>g(a.target.checked),color:"primary",size:"small"}),label:v("flows.process.excludeSystem")})]}),(0,d.jsxs)(i.default,{sx:{mb:2,p:2,bgcolor:"rgba(0, 0, 0, 0.03)",borderRadius:1,fontSize:"0.85rem"},children:[(0,d.jsx)(j.A,{variant:"caption",sx:{display:"block",mb:1,fontWeight:"bold"},children:v("flows.process.renderOrder")}),(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",gap:.5},children:[!c&&(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsxs)(j.A,{variant:"caption",sx:{color:"primary.main",fontWeight:"medium"},children:["1. ",v("flows.process.startPrompt")]}),(0,d.jsx)(j.A,{variant:"caption",sx:{ml:1,color:"text.secondary"},children:v("flows.process.fromStart")})]}),!a&&r&&(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsxs)(j.A,{variant:"caption",sx:{color:"secondary.main",fontWeight:"medium"},children:[c?"1.":"2."," ",v("flows.process.modelPrompt")]}),(0,d.jsx)(j.A,{variant:"caption",sx:{ml:1,color:"text.secondary"},children:v("flows.process.fromModel",{model:(()=>{let a=t.properties?.boundModel;if(!a)return v("flows.process.none");let b=s.find(b=>b.id===a);return b?b.displayName||b.name:t.properties?.modelName||v("flows.process.none")})()})})]}),(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsxs)(j.A,{variant:"caption",sx:{fontWeight:"medium"},children:[c||a||!r?c&&(a||!r)?"1.":"2.":"3."," ",v("flows.process.nodePrompt")]}),(0,d.jsx)(j.A,{variant:"caption",sx:{ml:1,color:"text.secondary"},children:v("flows.process.fromTask")})]}),(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsxs)(j.A,{variant:"caption",sx:{fontWeight:"medium"},children:[c||a||!r?c&&(a||!r)?"2.":"3.":"4."," ","isolated"===h?v("flows.subflow.isolatedPrompt"):"latest-message"===h?v("flows.subflow.latest"):v("flows.process.history")]}),(0,d.jsx)(j.A,{variant:"caption",sx:{ml:1,color:"text.secondary"},children:"isolated"===h?v("flows.process.isolatedDetail"):"latest-message"===h?v("flows.process.latestDetail"):v("flows.process.historyDetail")})]})]})]}),(0,d.jsxs)(i.default,{sx:{mb:2},children:[(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mb:1},children:v("flows.process.receiveTitle")}),(0,d.jsxs)(i.default,{role:"radiogroup","aria-label":v("flows.process.inputAria"),sx:{display:"flex",gap:1.5,flexWrap:"wrap"},children:[(0,d.jsx)(ct,{selected:"full-history"===h,onClick:()=>k("full-history"),icon:(0,d.jsx)(co,{fontSize:"small"}),title:v("flows.subflow.fullHistory"),description:v("flows.process.fullInputHelp")}),(0,d.jsx)(ct,{selected:"latest-message"===h,onClick:()=>k("latest-message"),icon:(0,d.jsx)(cp,{fontSize:"small"}),title:v("flows.subflow.latest"),description:v("flows.process.latestInputHelp")}),(0,d.jsx)(ct,{selected:"isolated"===h,onClick:()=>k("isolated"),icon:(0,d.jsx)(cq,{fontSize:"small"}),title:v("flows.subflow.isolated"),description:v("flows.process.isolatedInputHelp")})]}),"isolated"===h&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(H.A,{sx:{mt:1,display:"block"},control:(0,d.jsx)(bK.A,{checked:n,onChange:a=>o(a.target.checked)}),label:v("flows.subflow.allowCallerPrompt")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{ml:4,mt:-.5},children:v("flows.process.callerPromptHelp")}),(0,d.jsx)(u.A,{fullWidth:!0,label:n?v("flows.subflow.defaultPrompt"):v("flows.subflow.isolatedPrompt"),value:l,onChange:a=>m(a.target.value),margin:"normal",multiline:!0,rows:2,helperText:n?v("flows.process.defaultUserHelp"):v("flows.process.isolatedUserHelp")})]})]}),(0,d.jsxs)(i.default,{sx:{mb:1},children:[(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mb:1},children:v("flows.process.outputTitle")}),(0,d.jsxs)(i.default,{role:"radiogroup","aria-label":v("flows.process.outputAria"),sx:{display:"flex",gap:1.5,flexWrap:"wrap"},children:[(0,d.jsx)(ct,{selected:"full-conversation"===p,onClick:()=>q("full-conversation"),icon:(0,d.jsx)(cr.A,{fontSize:"small"}),title:v("flows.subflow.fullHistory"),description:v("flows.process.fullOutputHelp")}),(0,d.jsx)(ct,{selected:"latest-message"===p,onClick:()=>q("latest-message"),icon:(0,d.jsx)(cs,{fontSize:"small"}),title:v("flows.subflow.latest"),description:v("flows.process.latestOutputHelp")})]})]})]})},cv=({nodeData:a,handlePropertyChange:b,properties:c})=>{let{t:e}=(0,au.s9)();return(0,d.jsx)(d.Fragment,{children:c.length>0&&(0,d.jsxs)(i.default,{sx:{mt:3},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,children:e("flows.nodeProperties.title")}),c.map(c=>(c=>{if(!a)return null;let e=a.properties?.[c.key]??"";switch(c.type){case"text":return(0,d.jsx)(u.A,{fullWidth:!0,label:c.label,multiline:c.multiline,rows:c.multiline?4:1,value:e,onChange:a=>b(c.key,a.target.value),margin:"normal",helperText:c.helperText},c.key);case"number":return(0,d.jsx)(u.A,{fullWidth:!0,type:"number",label:c.label,value:e,inputProps:{min:c.min,max:c.max,step:c.step},onChange:a=>{let d=a.target.value;b(c.key,""===d?void 0:Number(d))},margin:"normal",helperText:c.helperText},c.key);case"select":return(0,d.jsxs)(bB.A,{fullWidth:!0,margin:"normal",children:[(0,d.jsx)(bC.A,{children:c.label}),(0,d.jsx)(bD.A,{value:e||"",label:c.label,onChange:a=>b(c.key,a.target.value),children:c.options?.map(a=>(0,d.jsx)(K.A,{value:a,children:a},a))})]},c.key);case"boolean":return(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:e||!1,onChange:a=>b(c.key,a.target.checked)}),label:c.label,sx:{my:1}},c.key);default:return null}})(c))]})})},cw=({value:a,onChange:b,onInsertRef:c})=>{let{t:e}=(0,au.s9)(),f=a.captureVariable.trim(),g=a.captureKvKey.trim(),h=a.captureResource.trim(),l=""===f||aR(f),m=""===g||aX(g);return(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mb:.5},children:e("flows.capture.title")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:e("flows.capture.help")}),(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"flex-start",sx:{mb:2},children:[(0,d.jsx)(u.A,{fullWidth:!0,size:"small",label:e("flows.capture.variable"),value:a.captureVariable,onChange:a=>b({captureVariable:a.target.value}),error:!l,helperText:l?e("flows.capture.variableHelp"):e("flows.capture.invalidName")}),c&&(0,d.jsx)(k.A,{variant:"outlined",size:"small",sx:{mt:.5,whiteSpace:"nowrap",textTransform:"none"},disabled:!f||!l,onClick:()=>c(`\${var:${f}}`),children:e("flows.capture.insert",{token:"${var:NAME}"})})]}),(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"flex-start",sx:{mb:2},children:[(0,d.jsx)(u.A,{fullWidth:!0,size:"small",label:e("flows.capture.resource"),value:a.captureResource,onChange:a=>b({captureResource:a.target.value}),helperText:e("flows.capture.resourceHelp")}),c&&(0,d.jsx)(k.A,{variant:"outlined",size:"small",sx:{mt:.5,whiteSpace:"nowrap",textTransform:"none"},disabled:!h,onClick:()=>c(`\${res:${h}}`),children:e("flows.capture.insert",{token:"${res:NAME}"})})]}),(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"flex-start",children:[(0,d.jsx)(u.A,{select:!0,size:"small",label:e("flows.capture.scope"),sx:{width:130,flexShrink:0},value:a.captureKvScope,onChange:a=>b({captureKvScope:a.target.value}),children:aT.map(a=>(0,d.jsx)(K.A,{value:a,children:"folder"===a?e("flows.capture.scope.folder"):"flow"===a?e("flows.capture.scope.flow"):e("flows.capture.scope.global")},a))}),(0,d.jsx)(u.A,{fullWidth:!0,size:"small",label:e("flows.capture.kv"),value:a.captureKvKey,onChange:a=>b({captureKvKey:a.target.value}),error:!m,helperText:m?e("flows.capture.kvHelp"):e("flows.capture.invalidName")}),c&&(0,d.jsx)(k.A,{variant:"outlined",size:"small",sx:{mt:.5,whiteSpace:"nowrap",textTransform:"none"},disabled:!g||!m,onClick:()=>c(`\${kv:${g}}`),children:e("flows.capture.insert",{token:"${kv:NAME}"})})]})]})},cx=(0,M.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/ProcessNodePropertiesModal"),cy=["basic","model","io","task","advanced"],cz=(a,b=0)=>Math.min(Math.max(a,260),Math.min(640,b>0?Math.max(260,b-360-12):640)),cA=()=>340,cB=({open:a,node:b,onClose:c,onSave:g,flowEdges:l=[],flowNodes:m=[],flowId:n,onConnectMcpServer:o,authoringMode:p="advanced",mode:r="edit"})=>{cx.debug("ProcessNodePropertiesModal rendered with:",{node:b,flowId:n});let{t}=(0,au.s9)(),u=(0,h.A)(),w=(0,E.A)(u.breakpoints.down("md"),{noSsr:!0}),x={basic:t("flows.process.basic"),model:t("flows.process.model"),io:t("flows.process.io"),task:t("flows.process.task"),advanced:t("flows.process.advanced")},{nodeData:y,setNodeData:z,handlePropertyChange:A}=(a=>{let[b,c]=(0,e.useState)(null);(0,e.useEffect)(()=>{a&&c({id:a.id,...a.data,properties:{...a.data.properties}})},[a]);let d=(0,e.useCallback)((a,b)=>{c(c=>c?{...c,properties:{...c.properties,[a]:b}}:null)},[]);return{nodeData:b,setNodeData:c,handlePropertyChange:d}})(b),[B,C]=(0,e.useState)(""),[D,F]=(0,e.useState)(!1),[G,J]=(0,e.useState)(!1),[K,M]=(0,e.useState)(!1),[N,O]=(0,e.useState)(!1),[P,S]=(0,e.useState)("full-history"),[T,U]=(0,e.useState)(""),[V,W]=(0,e.useState)(!0),[X,Y]=(0,e.useState)("full-conversation"),[Z,$]=(0,e.useState)(!1),[_,aa]=(0,e.useState)(""),[ab,ac]=(0,e.useState)(""),[af,ag]=(0,e.useState)("folder"),[ah,ai]=(0,e.useState)(""),[aj,ak]=(0,e.useState)("server"),[al,am]=(0,e.useState)("basic"),[an,ao]=(0,e.useState)(cA),[ap,aq]=(0,e.useState)(!1),ar="advanced"===p?cy:cy.filter(a=>["basic","model","task"].includes(a)),as=(0,e.useRef)(null),at=(0,e.useRef)(null),av=(0,e.useRef)(null),aw=(0,e.useRef)(null),ax=(0,e.useRef)(null),ay=(0,e.useRef)(null),az=(0,e.useRef)(null),aA=(0,e.useRef)(an),aB=(0,e.useRef)({pointerX:0,width:an}),aC={basic:at,model:av,io:aw,task:ax,advanced:ay},aD=(0,e.useRef)(!1);(0,e.useEffect)(()=>{"guided"===p&&("io"===al||"advanced"===al)&&am("basic"),"guided"===p&&"server"!==aj&&ak("server")},[al,aj,p]),(0,e.useEffect)(()=>{aA.current=an;try{window.localStorage.setItem("flujo.processNode.taskToolsPaneWidth",String(an))}catch{}},[an]),(0,e.useEffect)(()=>{let a=()=>{let a=az.current?.getBoundingClientRect().width??0;a>=632&&ao(b=>cz(b,a))};return a(),window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[a]),(0,e.useEffect)(()=>{if(!ap)return;let a=a=>{if(!Number.isFinite(a.clientX))return;let b=az.current?.getBoundingClientRect().width??0;ao(cz(aB.current.width+a.clientX-aB.current.pointerX,b))},b=()=>aq(!1);return window.addEventListener("pointermove",a),window.addEventListener("pointerup",b),window.addEventListener("pointercancel",b),document.body.style.cursor="col-resize",document.body.style.userSelect="none",()=>{window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",b),window.removeEventListener("pointercancel",b),document.body.style.cursor="",document.body.style.userSelect=""}},[ap]);let{models:aE,isLoadingModels:aF,loadError:aG,handleModelSelect:aH,handleUnbindModel:aI}=((a,b,c,d,f)=>{let{t:g}=(0,au.s9)();bV.debug("useModelManagement: Entering hook");let[h,i]=(0,e.useState)([]),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(null);(0,e.useEffect)(()=>{bV.debug("useModelManagement useEffect: Checking if modal is open",{open:a}),a&&n()},[a]),(0,e.useEffect)(()=>{if(0===h.length)return;let a=b?.properties?.boundModel;if(!a)return;let d=h.find(b=>b.id===a);d&&d.name&&b?.properties?.modelName!==d.name&&c(a=>a&&a.properties?.modelName!==d.name?{...a,properties:{...a.properties,modelName:d.name}}:a)},[h,b?.properties?.boundModel,b?.properties?.modelName,c]);let n=async()=>{bV.debug("loadModels: Entering method"),k(!0),m(null);try{let a=await R.N.loadModels();i(a)}catch(a){bV.warn("loadModels: Failed to load models:",a),m(g("flows.process.loadModelsFailed"))}k(!1)},o=(0,e.useCallback)(a=>{bV.debug("handleModelSelect: Entering method",{modelId:a});let b=h.find(b=>b.id===a);b&&(c(c=>{if(!c)return null;let d=h.find(a=>a.id===c.properties?.boundModel),e=bU({currentLabel:c.label,nameIsCustom:c.properties?.nameIsCustom,defaultLabel:"Process Node",previousAutoLabel:d?d.displayName||d.name:void 0,nextAutoLabel:b.displayName||b.name});return{...c,label:e,properties:{...c.properties,boundModel:a,modelName:b.name}}}),f(!0))},[h,c,d,f]);return{models:h,isLoadingModels:j,loadError:l,handleModelSelect:o,handleUnbindModel:(0,e.useCallback)(()=>{bV.debug("handleUnbindModel: Entering method"),c(a=>{if(!a)return null;let{boundModel:b,modelName:c,...d}=a.properties;return{...a,properties:{...d,promptTemplate:d.promptTemplate||""}}}),f(!1)},[c,f])}})(a,y,z,C,F),{connectedMcpNodes:aJ,allServers:aK,isLoadingServers:aL,selectedToolServerNodeId:aM,serverToolsMap:aN,serverStatuses:aO,isLoadingTools:aP,handleSelectToolServer:aQ,isLoadingSelectedServerTools:aR,handleRetryServer:aS,handleRestartServer:aT}=((a,b,c,d)=>{let f=(0,bW.v)(),g=f.servers||[],h=f.isLoading||!1,[i,j]=(0,e.useState)({}),[k,l]=(0,e.useState)({}),[m,n]=(0,e.useState)({}),[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(!1),s=(0,e.useMemo)(()=>{let a;return b?(a=b.id,[...new Set(c.filter(b=>b.source===a&&b.data?.edgeType==="mcp"||b.target===a&&b.data?.edgeType==="mcp").map(b=>b.source===a?b.target:b.source))]):[]},[b,c]),t=(0,e.useMemo)(()=>{if(!b||0===s.length)return[];if(!d||!Array.isArray(d))return bX.warn("flowNodes is not available or not an array when filtering connected servers"),[];try{let a=[],b=new Set;return s.forEach(c=>{if(b.has(c))return;let e=d.find(a=>a&&a.id===c);if(!e||!e.data||!e.data.properties)return void bX.warn(`Could not find valid MCP node data for ID ${c}`);let f=e.data.properties.boundServer;if(!f)return void bX.warn(`MCP node ${c} is not bound to any server.`);let h=g.find(a=>a.name===f),i=h?.status||"unknown",j=e.data.properties.enabledTools||[],k=e.data.properties.enabledResources;a.push({nodeId:c,serverName:f,status:i,enabledTools:Array.isArray(j)?j:[],enabledResources:k}),b.add(c)}),bX.debug("Generated connectedMcpNodes:",JSON.stringify(a)),a}catch(a){return bX.error("Error preparing connected MCP nodes:",a),[]}},[b,s,g,d]);(0,e.useEffect)(()=>{if(t&&t.length>0){let a={};t.forEach(b=>{let c=g.find(a=>a.name===b.serverName);a[b.serverName]=c?.status||b.status||"unknown"}),j(a)}},[t,g]),(0,e.useEffect)(()=>{if(a&&t.length>0){let a=Array.from(new Set(t.map(a=>a.serverName)));(async()=>{let b={},c={...k},d=a.filter(a=>{let b=g.find(b=>b.name===a);return b?.status==="connected"&&!k[a]&&!m[a]});0!==d.length&&(d.forEach(a=>{b[a]=!0}),n(a=>({...a,...b})),await Promise.all(d.map(async a=>{try{bX.debug(`Loading tools for server: ${a}`);let b=await Q.S.listServerTools(a);if(b.error)bX.warn(`Error loading tools for ${a}:`,b.error),c[a]=[];else{let d=b.tools||[];bX.debug(`Loaded ${d.length} tools for ${a}`),c[a]=d}}catch(b){bX.warn(`Failed to load tools for server ${a}:`,b),c[a]=[]}finally{n(b=>({...b,[a]:!1}))}})),l(c))})()}},[a,t,g]);let u=(0,e.useRef)(k);(0,e.useEffect)(()=>{u.current=k},[k]);let v=(0,e.useCallback)(a=>{bX.debug(`Selected MCP Node ID: ${a}`),p(a);let b=t.find(b=>b.nodeId===a),c=b?.serverName;!c||u.current[c]||m[c]?r(m[c||""]||!1):(bX.debug(`Tools not loaded for server ${c}, loading now.`),r(!0),n(a=>({...a,[c]:!0})),Q.S.listServerTools(c).then(a=>{let b=a.tools||[];a.error?bX.warn(`Error loading tools for ${c}:`,a.error):bX.debug(`Loaded ${b.length} tools for ${c}`),l(a=>({...a,[c]:b}))}).catch(a=>{bX.warn(`Failed to load tools for server ${c}:`,a),l(a=>({...a,[c]:[]}))}).finally(()=>{r(!1),n(a=>({...a,[c]:!1}))}))},[t,m]),w=(0,e.useRef)(f);return(0,e.useEffect)(()=>{w.current=f},[f]),{connectedMcpNodes:t,allServers:g,isLoadingServers:h,selectedToolServerNodeId:o,serverToolsMap:k,serverStatuses:i,isLoadingTools:m,handleSelectToolServer:v,isLoadingSelectedServerTools:q,handleRetryServer:(0,e.useCallback)(async a=>{bX.debug(`Retrying server: ${a}`),n(b=>({...b,[a]:!0}));try{await w.current.retryServer(a);let b=await Q.S.listServerTools(a);if(b.error)return bX.warn(`Error loading tools for ${a} after retry:`,b.error),!1;{let c=b.tools||[];return bX.debug(`Loaded ${c.length} tools for ${a} after retry`),l(b=>({...b,[a]:c})),!0}}catch(b){return bX.warn(`Failed to retry or load tools for server ${a}:`,b),!1}finally{n(b=>({...b,[a]:!1}))}},[]),handleRestartServer:(0,e.useCallback)(async a=>{bX.debug(`Restarting server: ${a}`),n(b=>({...b,[a]:!0}));try{await Q.S.restartServer(a),await new Promise(a=>setTimeout(a,1e3));let b=await Q.S.listServerTools(a);if(b.error)return bX.warn(`Error loading tools for ${a} after restart:`,b.error),!1;{let c=b.tools||[];return bX.debug(`Loaded ${c.length} tools for ${a} after restart`),l(b=>({...b,[a]:c})),!0}}catch(b){return bX.warn(`Failed to restart or load tools for server ${a}:`,b),!1}finally{n(b=>({...b,[a]:!1}))}},[])}})(a,b,l,m),[aW,aX]=(0,e.useState)([]);(0,e.useEffect)(()=>{let b=!1,c=[...new Set(aJ.filter(a=>"connected"===a.status).map(a=>a.serverName))];return a&&0!==c.length?(Promise.all(c.map(async a=>{try{let b=await Q.S.listServerResources(a),c=aJ.filter(b=>b.serverName===a),d=a=>c.some(b=>{let c=b.enabledResources;return void 0===c||"all"===c||c.includes(a)});return[...(b.resources??[]).filter(a=>d(a.uri)).map(b=>(0,bT.Ub)({kind:"resource",server:a,name:b.uri},b.name||b.uri,b.description||`${a} \xb7 ${b.uri}`)),...(b.resourceTemplates??[]).filter(a=>d(a.uriTemplate)).map(b=>(0,bT.Ub)({kind:"resource",server:a,name:b.uriTemplate},b.name||b.uriTemplate,b.description||`${a} \xb7 ${b.uriTemplate}`))]}catch(b){return cx.warn(`Failed to load @ resource suggestions for ${a}`,b),[]}})).then(a=>{b||aX(a.flat())}),()=>{b=!0}):(aX([]),()=>{b=!0})},[a,aJ]);let aY=f().useMemo(()=>[...aJ.flatMap(a=>{let b=new Set(a.enabledTools??[]);return(aN[a.serverName]??[]).filter(a=>a?.name&&b.has(a.name)).map(b=>(0,bT.Ub)({kind:"tool",server:a.serverName,name:b.name},b.name,b.description||a.serverName))}),...aW],[aJ,aW,aN]),aZ=f().useMemo(()=>{if(!b)return[];let a=[];for(let c of l){let d,e;if(c.data?.edgeType!=="resource"||(c.target===b.id?(d=c.source,e="consume"):c.source===b.id&&(d=c.target,e="produce"),!d||!e))continue;let f=m.find(a=>a.id===d);if(!f||"resource"!==f.type)continue;let g=f.data?.properties??{};a.push({id:d,role:e,label:g.name||g.runName||g.uri||d,scope:g.scope,runName:g.runName,uri:g.uri,boundServer:g.boundServer})}return a},[b,l,m]),a$=((a,b,c,d)=>{let[f,g]=(0,e.useState)([]),[h,i]=(0,e.useState)(!1),j=(0,e.useMemo)(()=>b?function(a,b){let c=[];for(let d of b)!("string"==typeof d.data?.edgeType&&(d.data.edgeType.includes("mcp")||"resource"===d.data.edgeType))&&(d.source===a?c.push(d.target):d.target===a&&d.data?.bidirectional&&c.push(d.source));return[...new Set(c)]}(b.id,c):[],[b,c]);return(0,e.useEffect)(()=>{if(a&&b){i(!0);try{let a=j.map(a=>d.find(b=>b.id===a)).filter(a=>!!a),b=(0,ad.E9)(a.map(a=>({id:a.id,label:a.data.label,type:a.type||a.data.type}))),c=a.map(a=>({name:b.get(a.id)||`handoff_to_${a.id}`,description:function(a){if(a.userDescription&&a.userDescription.trim())return bY(a.userDescription,1500);let b=`Hand off execution to ${a.label} (${a.type}).`,c=[];!function a(b,c,d){let e=" ".repeat(c);if(b.userDescription&&b.userDescription.trim())return void d.push(`${e}${bY(b.userDescription,200)}`);if("subflow"===b.type){if(b.subflowMissing)return void d.push(`${e}Runs a subflow (referenced flow not found).`);if(b.subflowDetailsUnavailable){let a=b.subflowName?` "${b.subflowName}"`:"";d.push(`${e}Runs a subflow${a} (contents summarised when the flow runs).`);return}if(d.push(`${e}Runs the subflow "${b.subflowName??"unknown"}", which contains:`),b.depthCapReached)return void d.push(`${e} (nested subflows omitted — recursion depth limit reached)`);let f=b.children??[];if(0===f.length)return void d.push(`${e} (no process or subflow steps)`);for(let b of f.slice(0,10))d.push(`${e} - ${b.label}:`),a(b,c+2,d);return void(f.length>10&&d.push(`${e} - …and ${f.length-10} more step(s)`))}if(b.modelName&&d.push(`${e}Model: ${b.modelName}`),b.promptSummary&&d.push(`${e}Role: ${bY(b.promptSummary,200)}`),b.servers&&b.servers.length>0)for(let a of b.servers)if(a.connected&&a.tools&&a.tools.length>0){let b=a.tools.slice(0,10),c=a.tools.length-b.length,f=c>0?`, +${c} more`:"";d.push(`${e}Tools (${a.name}): ${b.join(", ")}${f}`)}else d.push(`${e}Tools (${a.name}): server not connected`)}(a,0,c);let d=c.join("\n").trim(),e=d?`${b}
4
+ [${c("flows.promptPreview.userMessages")}]`)}catch(a){cm.error("Error fetching rendered prompt",a),w(a instanceof Error?a.message:c("flows.promptPreview.unknownError"))}finally{u(!1)}};return(0,e.useEffect)(()=>{x.current&&"preview"===x.current.getMode()&&y()},[f,h,l,m,o,n?.id]),(0,d.jsx)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%"},children:(0,d.jsx)(cl.A,{ref:x,value:f,onChange:g,label:"",height:"100%",onModeChange:a=>{"preview"===a&&y()},customPreviewRenderer:()=>t?(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,d.jsx)(G.default,{size:40})}):v?(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",p:2},children:[(0,d.jsx)(p.A,{severity:"error",sx:{mb:2},action:(0,d.jsx)(k.A,{color:"inherit",size:"small",onClick:y,children:c("flows.promptPreview.retry")}),children:v}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:2,textAlign:"center"},children:o?c("flows.promptPreview.checkIds"):c("flows.promptPreview.unsaved")})]}):(0,d.jsxs)(i.default,{sx:{p:2},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,sx:{fontWeight:"medium"},children:c("flows.promptPreview.title")}),(0,d.jsx)(D.A,{elevation:0,sx:{p:2,overflow:"auto",bgcolor:"rgba(0, 0, 0, 0.02)",border:"1px solid rgba(0, 0, 0, 0.1)",borderRadius:1},children:(0,d.jsx)(i.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"monospace",fontSize:"0.875rem",m:0},children:r||c("flows.promptPreview.empty")})})]}),suggestions:q})})});cn.displayName="PromptTemplateEditor";let co=(0,w.A)((0,d.jsx)("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9m-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8z"}),"History"),cp=(0,w.A)((0,d.jsx)("path",{d:"M4 9h16v2H4zm0 4h10v2H4z"}),"ShortText"),cq=(0,w.A)((0,d.jsx)("path",{d:"M3 10h11v2H3zm0-2h11V6H3zm0 8h7v-2H3zm15.01-3.13.71-.71c.39-.39 1.02-.39 1.41 0l.71.71c.39.39.39 1.02 0 1.41l-.71.71zm-.71.71-5.3 5.3V21h2.12l5.3-5.3z"}),"EditNote"),cr=(0,w.A)((0,d.jsx)("path",{d:"M15 4v7H5.17L4 12.17V4zm1-2H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1m5 4h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1"}),"ForumOutlined"),cs=(0,w.A)((0,d.jsx)("path",{d:"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m0 14H6l-2 2V4h16z"}),"ChatBubbleOutline"),ct=({selected:a,icon:b,title:c,description:e,onClick:f})=>(0,d.jsxs)(i.default,{role:"radio","aria-checked":a,tabIndex:0,onClick:f,onKeyDown:a=>{("Enter"===a.key||" "===a.key)&&(a.preventDefault(),f())},sx:{flex:1,minWidth:180,position:"relative",p:2,borderRadius:2,border:2,borderColor:a?"primary.main":"divider",bgcolor:a?"action.selected":"background.paper",cursor:"pointer",transition:"border-color 120ms, background-color 120ms","&:hover":{borderColor:a?"primary.main":"text.disabled"},outline:"none","&:focus-visible":{boxShadow:a=>`0 0 0 3px ${a.palette.primary.light}`}},children:[a&&(0,d.jsx)(aN.A,{color:"primary",fontSize:"small",sx:{position:"absolute",top:8,right:8}}),(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5,color:a?"primary.main":"text.secondary"},children:[b,(0,d.jsx)(j.A,{variant:"subtitle1",sx:{fontWeight:600,color:"text.primary"},children:c})]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:e})]}),cu=({excludeModelPrompt:a,setExcludeModelPrompt:b,excludeStartNodePrompt:c,setExcludeStartNodePrompt:e,excludeSystemPrompt:f,setExcludeSystemPrompt:g,inputMode:h,setInputMode:k,isolatedPrompt:l,setIsolatedPrompt:m,allowCallerPrompt:n,setAllowCallerPrompt:o,outputMode:p,setOutputMode:q,isModelBound:r,models:s,nodeData:t})=>{let{t:v}=(0,au.s9)();return(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column"},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",mb:2},children:[(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:a,onChange:a=>b(a.target.checked),color:"primary",size:"small"}),label:v("flows.process.excludeModel")}),(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:c,onChange:a=>e(a.target.checked),color:"primary",size:"small"}),label:v("flows.process.excludeStart")}),(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:f,onChange:a=>g(a.target.checked),color:"primary",size:"small"}),label:v("flows.process.excludeSystem")})]}),(0,d.jsxs)(i.default,{sx:{mb:2,p:2,bgcolor:"rgba(0, 0, 0, 0.03)",borderRadius:1,fontSize:"0.85rem"},children:[(0,d.jsx)(j.A,{variant:"caption",sx:{display:"block",mb:1,fontWeight:"bold"},children:v("flows.process.renderOrder")}),(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",gap:.5},children:[!c&&(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsxs)(j.A,{variant:"caption",sx:{color:"primary.main",fontWeight:"medium"},children:["1. ",v("flows.process.startPrompt")]}),(0,d.jsx)(j.A,{variant:"caption",sx:{ml:1,color:"text.secondary"},children:v("flows.process.fromStart")})]}),!a&&r&&(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsxs)(j.A,{variant:"caption",sx:{color:"secondary.main",fontWeight:"medium"},children:[c?"1.":"2."," ",v("flows.process.modelPrompt")]}),(0,d.jsx)(j.A,{variant:"caption",sx:{ml:1,color:"text.secondary"},children:v("flows.process.fromModel",{model:(()=>{let a=t.properties?.boundModel;if(!a)return v("flows.process.none");let b=s.find(b=>b.id===a);return b?b.displayName||b.name:t.properties?.modelName||v("flows.process.none")})()})})]}),(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsxs)(j.A,{variant:"caption",sx:{fontWeight:"medium"},children:[c||a||!r?c&&(a||!r)?"1.":"2.":"3."," ",v("flows.process.nodePrompt")]}),(0,d.jsx)(j.A,{variant:"caption",sx:{ml:1,color:"text.secondary"},children:v("flows.process.fromTask")})]}),(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsxs)(j.A,{variant:"caption",sx:{fontWeight:"medium"},children:[c||a||!r?c&&(a||!r)?"2.":"3.":"4."," ","isolated"===h?v("flows.subflow.isolatedPrompt"):"latest-message"===h?v("flows.subflow.latest"):v("flows.process.history")]}),(0,d.jsx)(j.A,{variant:"caption",sx:{ml:1,color:"text.secondary"},children:"isolated"===h?v("flows.process.isolatedDetail"):"latest-message"===h?v("flows.process.latestDetail"):v("flows.process.historyDetail")})]})]})]}),(0,d.jsxs)(i.default,{sx:{mb:2},children:[(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mb:1},children:v("flows.process.receiveTitle")}),(0,d.jsxs)(i.default,{role:"radiogroup","aria-label":v("flows.process.inputAria"),sx:{display:"flex",gap:1.5,flexWrap:"wrap"},children:[(0,d.jsx)(ct,{selected:"full-history"===h,onClick:()=>k("full-history"),icon:(0,d.jsx)(co,{fontSize:"small"}),title:v("flows.subflow.fullHistory"),description:v("flows.process.fullInputHelp")}),(0,d.jsx)(ct,{selected:"latest-message"===h,onClick:()=>k("latest-message"),icon:(0,d.jsx)(cp,{fontSize:"small"}),title:v("flows.subflow.latest"),description:v("flows.process.latestInputHelp")}),(0,d.jsx)(ct,{selected:"isolated"===h,onClick:()=>k("isolated"),icon:(0,d.jsx)(cq,{fontSize:"small"}),title:v("flows.subflow.isolated"),description:v("flows.process.isolatedInputHelp")})]}),"isolated"===h&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(H.A,{sx:{mt:1,display:"block"},control:(0,d.jsx)(bK.A,{checked:n,onChange:a=>o(a.target.checked)}),label:v("flows.subflow.allowCallerPrompt")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{ml:4,mt:-.5},children:v("flows.process.callerPromptHelp")}),(0,d.jsx)(u.A,{fullWidth:!0,label:n?v("flows.subflow.defaultPrompt"):v("flows.subflow.isolatedPrompt"),value:l,onChange:a=>m(a.target.value),margin:"normal",multiline:!0,rows:2,helperText:n?v("flows.process.defaultUserHelp"):v("flows.process.isolatedUserHelp")})]})]}),(0,d.jsxs)(i.default,{sx:{mb:1},children:[(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mb:1},children:v("flows.process.outputTitle")}),(0,d.jsxs)(i.default,{role:"radiogroup","aria-label":v("flows.process.outputAria"),sx:{display:"flex",gap:1.5,flexWrap:"wrap"},children:[(0,d.jsx)(ct,{selected:"full-conversation"===p,onClick:()=>q("full-conversation"),icon:(0,d.jsx)(cr,{fontSize:"small"}),title:v("flows.subflow.fullHistory"),description:v("flows.process.fullOutputHelp")}),(0,d.jsx)(ct,{selected:"latest-message"===p,onClick:()=>q("latest-message"),icon:(0,d.jsx)(cs,{fontSize:"small"}),title:v("flows.subflow.latest"),description:v("flows.process.latestOutputHelp")})]})]})]})},cv=({nodeData:a,handlePropertyChange:b,properties:c})=>{let{t:e}=(0,au.s9)();return(0,d.jsx)(d.Fragment,{children:c.length>0&&(0,d.jsxs)(i.default,{sx:{mt:3},children:[(0,d.jsx)(j.A,{variant:"subtitle1",gutterBottom:!0,children:e("flows.nodeProperties.title")}),c.map(c=>(c=>{if(!a)return null;let e=a.properties?.[c.key]??"";switch(c.type){case"text":return(0,d.jsx)(u.A,{fullWidth:!0,label:c.label,multiline:c.multiline,rows:c.multiline?4:1,value:e,onChange:a=>b(c.key,a.target.value),margin:"normal",helperText:c.helperText},c.key);case"number":return(0,d.jsx)(u.A,{fullWidth:!0,type:"number",label:c.label,value:e,inputProps:{min:c.min,max:c.max,step:c.step},onChange:a=>{let d=a.target.value;b(c.key,""===d?void 0:Number(d))},margin:"normal",helperText:c.helperText},c.key);case"select":return(0,d.jsxs)(bB.A,{fullWidth:!0,margin:"normal",children:[(0,d.jsx)(bC.A,{children:c.label}),(0,d.jsx)(bD.A,{value:e||"",label:c.label,onChange:a=>b(c.key,a.target.value),children:c.options?.map(a=>(0,d.jsx)(K.A,{value:a,children:a},a))})]},c.key);case"boolean":return(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:e||!1,onChange:a=>b(c.key,a.target.checked)}),label:c.label,sx:{my:1}},c.key);default:return null}})(c))]})})},cw=({value:a,onChange:b,onInsertRef:c})=>{let{t:e}=(0,au.s9)(),f=a.captureVariable.trim(),g=a.captureKvKey.trim(),h=a.captureResource.trim(),l=""===f||aR(f),m=""===g||aX(g);return(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mb:.5},children:e("flows.capture.title")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:e("flows.capture.help")}),(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"flex-start",sx:{mb:2},children:[(0,d.jsx)(u.A,{fullWidth:!0,size:"small",label:e("flows.capture.variable"),value:a.captureVariable,onChange:a=>b({captureVariable:a.target.value}),error:!l,helperText:l?e("flows.capture.variableHelp"):e("flows.capture.invalidName")}),c&&(0,d.jsx)(k.A,{variant:"outlined",size:"small",sx:{mt:.5,whiteSpace:"nowrap",textTransform:"none"},disabled:!f||!l,onClick:()=>c(`\${var:${f}}`),children:e("flows.capture.insert",{token:"${var:NAME}"})})]}),(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"flex-start",sx:{mb:2},children:[(0,d.jsx)(u.A,{fullWidth:!0,size:"small",label:e("flows.capture.resource"),value:a.captureResource,onChange:a=>b({captureResource:a.target.value}),helperText:e("flows.capture.resourceHelp")}),c&&(0,d.jsx)(k.A,{variant:"outlined",size:"small",sx:{mt:.5,whiteSpace:"nowrap",textTransform:"none"},disabled:!h,onClick:()=>c(`\${res:${h}}`),children:e("flows.capture.insert",{token:"${res:NAME}"})})]}),(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"flex-start",children:[(0,d.jsx)(u.A,{select:!0,size:"small",label:e("flows.capture.scope"),sx:{width:130,flexShrink:0},value:a.captureKvScope,onChange:a=>b({captureKvScope:a.target.value}),children:aT.map(a=>(0,d.jsx)(K.A,{value:a,children:"folder"===a?e("flows.capture.scope.folder"):"flow"===a?e("flows.capture.scope.flow"):e("flows.capture.scope.global")},a))}),(0,d.jsx)(u.A,{fullWidth:!0,size:"small",label:e("flows.capture.kv"),value:a.captureKvKey,onChange:a=>b({captureKvKey:a.target.value}),error:!m,helperText:m?e("flows.capture.kvHelp"):e("flows.capture.invalidName")}),c&&(0,d.jsx)(k.A,{variant:"outlined",size:"small",sx:{mt:.5,whiteSpace:"nowrap",textTransform:"none"},disabled:!g||!m,onClick:()=>c(`\${kv:${g}}`),children:e("flows.capture.insert",{token:"${kv:NAME}"})})]})]})},cx=(0,M.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/ProcessNodePropertiesModal"),cy=["basic","model","io","task","advanced"],cz=(a,b=0)=>Math.min(Math.max(a,260),Math.min(640,b>0?Math.max(260,b-360-12):640)),cA=()=>340,cB=({open:a,node:b,onClose:c,onSave:g,flowEdges:l=[],flowNodes:m=[],flowId:n,onConnectMcpServer:o,authoringMode:p="advanced",mode:r="edit"})=>{cx.debug("ProcessNodePropertiesModal rendered with:",{node:b,flowId:n});let{t}=(0,au.s9)(),u=(0,h.A)(),w=(0,E.A)(u.breakpoints.down("md"),{noSsr:!0}),x={basic:t("flows.process.basic"),model:t("flows.process.model"),io:t("flows.process.io"),task:t("flows.process.task"),advanced:t("flows.process.advanced")},{nodeData:y,setNodeData:z,handlePropertyChange:A}=(a=>{let[b,c]=(0,e.useState)(null);(0,e.useEffect)(()=>{a&&c({id:a.id,...a.data,properties:{...a.data.properties}})},[a]);let d=(0,e.useCallback)((a,b)=>{c(c=>c?{...c,properties:{...c.properties,[a]:b}}:null)},[]);return{nodeData:b,setNodeData:c,handlePropertyChange:d}})(b),[B,C]=(0,e.useState)(""),[D,F]=(0,e.useState)(!1),[G,J]=(0,e.useState)(!1),[K,M]=(0,e.useState)(!1),[N,O]=(0,e.useState)(!1),[P,S]=(0,e.useState)("full-history"),[T,U]=(0,e.useState)(""),[V,W]=(0,e.useState)(!0),[X,Y]=(0,e.useState)("full-conversation"),[Z,$]=(0,e.useState)(!1),[_,aa]=(0,e.useState)(""),[ab,ac]=(0,e.useState)(""),[af,ag]=(0,e.useState)("folder"),[ah,ai]=(0,e.useState)(""),[aj,ak]=(0,e.useState)("server"),[al,am]=(0,e.useState)("basic"),[an,ao]=(0,e.useState)(cA),[ap,aq]=(0,e.useState)(!1),ar="advanced"===p?cy:cy.filter(a=>["basic","model","task"].includes(a)),as=(0,e.useRef)(null),at=(0,e.useRef)(null),av=(0,e.useRef)(null),aw=(0,e.useRef)(null),ax=(0,e.useRef)(null),ay=(0,e.useRef)(null),az=(0,e.useRef)(null),aA=(0,e.useRef)(an),aB=(0,e.useRef)({pointerX:0,width:an}),aC={basic:at,model:av,io:aw,task:ax,advanced:ay},aD=(0,e.useRef)(!1);(0,e.useEffect)(()=>{"guided"===p&&("io"===al||"advanced"===al)&&am("basic"),"guided"===p&&"server"!==aj&&ak("server")},[al,aj,p]),(0,e.useEffect)(()=>{aA.current=an;try{window.localStorage.setItem("flujo.processNode.taskToolsPaneWidth",String(an))}catch{}},[an]),(0,e.useEffect)(()=>{let a=()=>{let a=az.current?.getBoundingClientRect().width??0;a>=632&&ao(b=>cz(b,a))};return a(),window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[a]),(0,e.useEffect)(()=>{if(!ap)return;let a=a=>{if(!Number.isFinite(a.clientX))return;let b=az.current?.getBoundingClientRect().width??0;ao(cz(aB.current.width+a.clientX-aB.current.pointerX,b))},b=()=>aq(!1);return window.addEventListener("pointermove",a),window.addEventListener("pointerup",b),window.addEventListener("pointercancel",b),document.body.style.cursor="col-resize",document.body.style.userSelect="none",()=>{window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",b),window.removeEventListener("pointercancel",b),document.body.style.cursor="",document.body.style.userSelect=""}},[ap]);let{models:aE,isLoadingModels:aF,loadError:aG,handleModelSelect:aH,handleUnbindModel:aI}=((a,b,c,d,f)=>{let{t:g}=(0,au.s9)();bV.debug("useModelManagement: Entering hook");let[h,i]=(0,e.useState)([]),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(null);(0,e.useEffect)(()=>{bV.debug("useModelManagement useEffect: Checking if modal is open",{open:a}),a&&n()},[a]),(0,e.useEffect)(()=>{if(0===h.length)return;let a=b?.properties?.boundModel;if(!a)return;let d=h.find(b=>b.id===a);d&&d.name&&b?.properties?.modelName!==d.name&&c(a=>a&&a.properties?.modelName!==d.name?{...a,properties:{...a.properties,modelName:d.name}}:a)},[h,b?.properties?.boundModel,b?.properties?.modelName,c]);let n=async()=>{bV.debug("loadModels: Entering method"),k(!0),m(null);try{let a=await R.N.loadModels();i(a)}catch(a){bV.warn("loadModels: Failed to load models:",a),m(g("flows.process.loadModelsFailed"))}k(!1)},o=(0,e.useCallback)(a=>{bV.debug("handleModelSelect: Entering method",{modelId:a});let b=h.find(b=>b.id===a);b&&(c(c=>{if(!c)return null;let d=h.find(a=>a.id===c.properties?.boundModel),e=bU({currentLabel:c.label,nameIsCustom:c.properties?.nameIsCustom,defaultLabel:"Process Node",previousAutoLabel:d?d.displayName||d.name:void 0,nextAutoLabel:b.displayName||b.name});return{...c,label:e,properties:{...c.properties,boundModel:a,modelName:b.name}}}),f(!0))},[h,c,d,f]);return{models:h,isLoadingModels:j,loadError:l,handleModelSelect:o,handleUnbindModel:(0,e.useCallback)(()=>{bV.debug("handleUnbindModel: Entering method"),c(a=>{if(!a)return null;let{boundModel:b,modelName:c,...d}=a.properties;return{...a,properties:{...d,promptTemplate:d.promptTemplate||""}}}),f(!1)},[c,f])}})(a,y,z,C,F),{connectedMcpNodes:aJ,allServers:aK,isLoadingServers:aL,selectedToolServerNodeId:aM,serverToolsMap:aN,serverStatuses:aO,isLoadingTools:aP,handleSelectToolServer:aQ,isLoadingSelectedServerTools:aR,handleRetryServer:aS,handleRestartServer:aT}=((a,b,c,d)=>{let f=(0,bW.v)(),g=f.servers||[],h=f.isLoading||!1,[i,j]=(0,e.useState)({}),[k,l]=(0,e.useState)({}),[m,n]=(0,e.useState)({}),[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(!1),s=(0,e.useMemo)(()=>{let a;return b?(a=b.id,[...new Set(c.filter(b=>b.source===a&&b.data?.edgeType==="mcp"||b.target===a&&b.data?.edgeType==="mcp").map(b=>b.source===a?b.target:b.source))]):[]},[b,c]),t=(0,e.useMemo)(()=>{if(!b||0===s.length)return[];if(!d||!Array.isArray(d))return bX.warn("flowNodes is not available or not an array when filtering connected servers"),[];try{let a=[],b=new Set;return s.forEach(c=>{if(b.has(c))return;let e=d.find(a=>a&&a.id===c);if(!e||!e.data||!e.data.properties)return void bX.warn(`Could not find valid MCP node data for ID ${c}`);let f=e.data.properties.boundServer;if(!f)return void bX.warn(`MCP node ${c} is not bound to any server.`);let h=g.find(a=>a.name===f),i=h?.status||"unknown",j=e.data.properties.enabledTools||[],k=e.data.properties.enabledResources;a.push({nodeId:c,serverName:f,status:i,enabledTools:Array.isArray(j)?j:[],enabledResources:k}),b.add(c)}),bX.debug("Generated connectedMcpNodes:",JSON.stringify(a)),a}catch(a){return bX.error("Error preparing connected MCP nodes:",a),[]}},[b,s,g,d]);(0,e.useEffect)(()=>{if(t&&t.length>0){let a={};t.forEach(b=>{let c=g.find(a=>a.name===b.serverName);a[b.serverName]=c?.status||b.status||"unknown"}),j(a)}},[t,g]),(0,e.useEffect)(()=>{if(a&&t.length>0){let a=Array.from(new Set(t.map(a=>a.serverName)));(async()=>{let b={},c={...k},d=a.filter(a=>{let b=g.find(b=>b.name===a);return b?.status==="connected"&&!k[a]&&!m[a]});0!==d.length&&(d.forEach(a=>{b[a]=!0}),n(a=>({...a,...b})),await Promise.all(d.map(async a=>{try{bX.debug(`Loading tools for server: ${a}`);let b=await Q.S.listServerTools(a);if(b.error)bX.warn(`Error loading tools for ${a}:`,b.error),c[a]=[];else{let d=b.tools||[];bX.debug(`Loaded ${d.length} tools for ${a}`),c[a]=d}}catch(b){bX.warn(`Failed to load tools for server ${a}:`,b),c[a]=[]}finally{n(b=>({...b,[a]:!1}))}})),l(c))})()}},[a,t,g]);let u=(0,e.useRef)(k);(0,e.useEffect)(()=>{u.current=k},[k]);let v=(0,e.useCallback)(a=>{bX.debug(`Selected MCP Node ID: ${a}`),p(a);let b=t.find(b=>b.nodeId===a),c=b?.serverName;!c||u.current[c]||m[c]?r(m[c||""]||!1):(bX.debug(`Tools not loaded for server ${c}, loading now.`),r(!0),n(a=>({...a,[c]:!0})),Q.S.listServerTools(c).then(a=>{let b=a.tools||[];a.error?bX.warn(`Error loading tools for ${c}:`,a.error):bX.debug(`Loaded ${b.length} tools for ${c}`),l(a=>({...a,[c]:b}))}).catch(a=>{bX.warn(`Failed to load tools for server ${c}:`,a),l(a=>({...a,[c]:[]}))}).finally(()=>{r(!1),n(a=>({...a,[c]:!1}))}))},[t,m]),w=(0,e.useRef)(f);return(0,e.useEffect)(()=>{w.current=f},[f]),{connectedMcpNodes:t,allServers:g,isLoadingServers:h,selectedToolServerNodeId:o,serverToolsMap:k,serverStatuses:i,isLoadingTools:m,handleSelectToolServer:v,isLoadingSelectedServerTools:q,handleRetryServer:(0,e.useCallback)(async a=>{bX.debug(`Retrying server: ${a}`),n(b=>({...b,[a]:!0}));try{await w.current.retryServer(a);let b=await Q.S.listServerTools(a);if(b.error)return bX.warn(`Error loading tools for ${a} after retry:`,b.error),!1;{let c=b.tools||[];return bX.debug(`Loaded ${c.length} tools for ${a} after retry`),l(b=>({...b,[a]:c})),!0}}catch(b){return bX.warn(`Failed to retry or load tools for server ${a}:`,b),!1}finally{n(b=>({...b,[a]:!1}))}},[]),handleRestartServer:(0,e.useCallback)(async a=>{bX.debug(`Restarting server: ${a}`),n(b=>({...b,[a]:!0}));try{await Q.S.restartServer(a),await new Promise(a=>setTimeout(a,1e3));let b=await Q.S.listServerTools(a);if(b.error)return bX.warn(`Error loading tools for ${a} after restart:`,b.error),!1;{let c=b.tools||[];return bX.debug(`Loaded ${c.length} tools for ${a} after restart`),l(b=>({...b,[a]:c})),!0}}catch(b){return bX.warn(`Failed to restart or load tools for server ${a}:`,b),!1}finally{n(b=>({...b,[a]:!1}))}},[])}})(a,b,l,m),[aW,aX]=(0,e.useState)([]);(0,e.useEffect)(()=>{let b=!1,c=[...new Set(aJ.filter(a=>"connected"===a.status).map(a=>a.serverName))];return a&&0!==c.length?(Promise.all(c.map(async a=>{try{let b=await Q.S.listServerResources(a),c=aJ.filter(b=>b.serverName===a),d=a=>c.some(b=>{let c=b.enabledResources;return void 0===c||"all"===c||c.includes(a)});return[...(b.resources??[]).filter(a=>d(a.uri)).map(b=>(0,bT.Ub)({kind:"resource",server:a,name:b.uri},b.name||b.uri,b.description||`${a} \xb7 ${b.uri}`)),...(b.resourceTemplates??[]).filter(a=>d(a.uriTemplate)).map(b=>(0,bT.Ub)({kind:"resource",server:a,name:b.uriTemplate},b.name||b.uriTemplate,b.description||`${a} \xb7 ${b.uriTemplate}`))]}catch(b){return cx.warn(`Failed to load @ resource suggestions for ${a}`,b),[]}})).then(a=>{b||aX(a.flat())}),()=>{b=!0}):(aX([]),()=>{b=!0})},[a,aJ]);let aY=f().useMemo(()=>[...aJ.flatMap(a=>{let b=new Set(a.enabledTools??[]);return(aN[a.serverName]??[]).filter(a=>a?.name&&b.has(a.name)).map(b=>(0,bT.Ub)({kind:"tool",server:a.serverName,name:b.name},b.name,b.description||a.serverName))}),...aW],[aJ,aW,aN]),aZ=f().useMemo(()=>{if(!b)return[];let a=[];for(let c of l){let d,e;if(c.data?.edgeType!=="resource"||(c.target===b.id?(d=c.source,e="consume"):c.source===b.id&&(d=c.target,e="produce"),!d||!e))continue;let f=m.find(a=>a.id===d);if(!f||"resource"!==f.type)continue;let g=f.data?.properties??{};a.push({id:d,role:e,label:g.name||g.runName||g.uri||d,scope:g.scope,runName:g.runName,uri:g.uri,boundServer:g.boundServer})}return a},[b,l,m]),a$=((a,b,c,d)=>{let[f,g]=(0,e.useState)([]),[h,i]=(0,e.useState)(!1),j=(0,e.useMemo)(()=>b?function(a,b){let c=[];for(let d of b)!("string"==typeof d.data?.edgeType&&(d.data.edgeType.includes("mcp")||"resource"===d.data.edgeType))&&(d.source===a?c.push(d.target):d.target===a&&d.data?.bidirectional&&c.push(d.source));return[...new Set(c)]}(b.id,c):[],[b,c]);return(0,e.useEffect)(()=>{if(a&&b){i(!0);try{let a=j.map(a=>d.find(b=>b.id===a)).filter(a=>!!a),b=(0,ad.E9)(a.map(a=>({id:a.id,label:a.data.label,type:a.type||a.data.type}))),c=a.map(a=>({name:b.get(a.id)||`handoff_to_${a.id}`,description:function(a){if(a.userDescription&&a.userDescription.trim())return bY(a.userDescription,1500);let b=`Hand off execution to ${a.label} (${a.type}).`,c=[];!function a(b,c,d){let e=" ".repeat(c);if(b.userDescription&&b.userDescription.trim())return void d.push(`${e}${bY(b.userDescription,200)}`);if("subflow"===b.type){if(b.subflowMissing)return void d.push(`${e}Runs a subflow (referenced flow not found).`);if(b.subflowDetailsUnavailable){let a=b.subflowName?` "${b.subflowName}"`:"";d.push(`${e}Runs a subflow${a} (contents summarised when the flow runs).`);return}if(d.push(`${e}Runs the subflow "${b.subflowName??"unknown"}", which contains:`),b.depthCapReached)return void d.push(`${e} (nested subflows omitted — recursion depth limit reached)`);let f=b.children??[];if(0===f.length)return void d.push(`${e} (no process or subflow steps)`);for(let b of f.slice(0,10))d.push(`${e} - ${b.label}:`),a(b,c+2,d);return void(f.length>10&&d.push(`${e} - …and ${f.length-10} more step(s)`))}if(b.modelName&&d.push(`${e}Model: ${b.modelName}`),b.promptSummary&&d.push(`${e}Role: ${bY(b.promptSummary,200)}`),b.servers&&b.servers.length>0)for(let a of b.servers)if(a.connected&&a.tools&&a.tools.length>0){let b=a.tools.slice(0,10),c=a.tools.length-b.length,f=c>0?`, +${c} more`:"";d.push(`${e}Tools (${a.name}): ${b.join(", ")}${f}`)}else d.push(`${e}Tools (${a.name}): server not connected`)}(a,0,c);let d=c.join("\n").trim(),e=d?`${b}
4
5
  ${d}`:b;if(e.length<=1500)return e;let f=1500-b.length-2;return f<=0?b:`${b}
5
- ${bY(d,f)}`}(function(a){let b=a.type||a.data.type||"unknown",c=a.data.label||"Unknown Node",d=a.data.description,e=a.data.properties||{},f={label:c,type:b,userDescription:d};if(d&&d.trim())return f;if("subflow"===b)return f.subflowDetailsUnavailable=!0,f;"string"==typeof e.boundModel&&e.boundModel&&(f.modelName=e.boundModel),"string"==typeof e.promptTemplate&&e.promptTemplate.trim()&&(f.promptSummary=e.promptTemplate);let g=Array.isArray(e.mcpNodes)?e.mcpNodes:[],h=[],i=new Set;for(let a of g){let b=a?.properties?.boundServer;if(!b||i.has(b))continue;i.add(b);let c=Array.isArray(a?.properties?.enabledTools)?a.properties.enabledTools:[];h.push({name:b,connected:!0,tools:c})}return h.length>0&&(f.servers=h),f}(a)),inputSchema:{type:"object",properties:{},required:[]}}));g(c),bZ.debug("Generated handoff tools",{toolsCount:c.length})}catch(a){bZ.error("Error generating handoff tools",a),g([])}finally{i(!1)}}else g([])},[a,b,j,c,d]),{handoffTools:f,isLoadingHandoffTools:h}})(a,b,l,m),a_=a$?.handoffTools||[],a0=a$?.isLoadingHandoffTools||!1;(0,e.useEffect)(()=>{a&&b&&cx.debug("Handoff tools:",{count:a_.length,tools:a_.map(a=>a.name)})},[a,b,a_]),(0,e.useEffect)(()=>{var c;if(!a)return;if(b){C(b.data.properties?.promptTemplate||""),b.data.properties?.boundModel?F(!0):F(!1),J(b.data.properties?.excludeModelPrompt||!1),M(b.data.properties?.excludeStartNodePrompt||!1),O(b.data.properties?.excludeSystemPrompt||!1),S(b.data.properties?.inputMode||"full-history"),U(b.data.properties?.isolatedPrompt||""),W(b.data.properties?.allowCallerPrompt!==!1),Y(b.data.properties?.outputMode||"full-conversation"),$(b.data.properties?.enableTodoTool||!1),aa(b.data.properties?.captureVariable||""),ac(b.data.properties?.captureResource||"");let a=aU(b.data.properties?.captureKv||"");ag(a.scope),ai(a.key||"")}let d="create"===r?"basic":"guided"===p?(c=b?.data.properties?.promptTemplate,"guided"===p&&"string"==typeof c&&c.trim().length>0?"task":"basic"):"task";am(d),ak("server"),aD.current=!0;let e=window.requestAnimationFrame(()=>{let a=aC[d].current;a&&"function"==typeof a.scrollIntoView?a.scrollIntoView({behavior:"auto",block:"start"}):as.current&&(as.current.scrollTop=a?.offsetTop??0),aD.current=!1});return()=>{window.cancelAnimationFrame(e),aD.current=!1}},[b,a,r,p]),(0,e.useEffect)(()=>{if(!a)return;let b=as.current;if(!b)return;let c=new IntersectionObserver(a=>{if(aD.current)return;let b=a.filter(a=>a.isIntersecting).sort((a,b)=>b.intersectionRatio-a.intersectionRatio),c=b[0]?.target?.dataset.section;c&&am(c)},{root:b,threshold:[.15,.4,.75],rootMargin:"0px 0px -45% 0px"});return Object.values(aC).forEach(a=>{a.current&&c.observe(a.current)}),()=>c.disconnect()},[a,b]);let a1=(0,e.useRef)(null),a2=(a,b,c="server")=>{if(cx.debug("handleInsertToolBinding called with:",JSON.stringify({serverName:a,toolName:b})),!a||!b)return void cx.warn("Invalid parameters for handleInsertToolBinding:",{serverName:a,toolName:b});let d=(aN[a]||[]).find(a=>a.name===b);d?.description;let e="handoff"===c?(0,ae.X8)("tool","handoff",b):(0,ae.X8)("tool",a,b),f=(!(B.length>0)||B.endsWith(" ")||B.endsWith("\n")?"":" ")+e;a1.current?(cx.debug("Inserting text into PromptBuilder:",JSON.stringify({textToInsert:f})),a1.current.insertText(f),cx.debug("Tool binding inserted successfully")):cx.warn("promptBuilderRef.current is null, cannot insert text")};if(!b||!y)return null;let a3=[{key:"maxTurns",label:t?t("flows.nodeProperties.maxTurns"):"Maximum turns (override)",type:"number",min:1,helperText:t?t("flows.nodeProperties.maxTurnsHelp"):"Optional. Replaces the bound model's maximum turns for this node. Leave empty to inherit the model setting (default: 255)."},{key:"maxTokens",label:t?t("flows.nodeProperties.maxTokens"):"Maximum output tokens (override)",type:"number",min:1,helperText:t?t("flows.nodeProperties.maxTokensHelp"):"Optional. Replaces the bound model's maximum output tokens for this node. Leave empty to inherit the adapter default. The Claude subscription adapter does not enforce this value."}],a4=y.properties?.boundModel||"",a5={minHeight:"100%",minWidth:0,width:"100%",boxSizing:"border-box",scrollSnapAlign:"start",scrollSnapStop:"always",display:"flex",flexDirection:"column",pb:4},a6=(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%",minHeight:0},children:["advanced"===p&&(0,d.jsx)(i.default,{sx:{borderBottom:1,borderColor:"divider",flexShrink:0},children:(0,d.jsxs)(bc.A,{value:aj,onChange:(a,b)=>ak(b),variant:"scrollable",scrollButtons:"auto","aria-label":t("flows.process.toolsAria"),children:[(0,d.jsx)(bd.A,{id:"process-task-tab-server","aria-controls":"process-task-panel-server",label:t("flows.process.mcpTab"),value:"server"}),(0,d.jsx)(bd.A,{id:"process-task-tab-agent","aria-controls":"process-task-panel-agent",label:t("flows.process.nodesTab"),value:"agent"}),(0,d.jsx)(bd.A,{id:"process-task-tab-resources","aria-controls":"process-task-panel-resources",label:t("flows.process.resourcesTab"),value:"resources"})]})}),(0,d.jsxs)(i.default,{id:`process-task-panel-${aj}`,role:"tabpanel","aria-labelledby":`process-task-tab-${aj}`,"data-testid":"process-task-tools-scroll",sx:{flexGrow:1,minHeight:0,overflow:"auto",pr:.5},children:["server"===aj&&(0,d.jsx)(cd,{isLoadingServers:aL,connectedMcpNodes:aJ,availableServers:aK,onConnectMcpServer:o,serverStatuses:aO,serverToolsMap:aN,isLoadingTools:aP,handleInsertToolBinding:a2,selectedToolServerNodeId:aM,selectedNodeId:b?.id||null,handleSelectToolServer:aQ,isLoadingSelectedServerTools:aR,promptBuilderRef:a1,handleRetryServer:aS,handleRestartServer:aT}),"advanced"===p&&"resources"===aj&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(ci,{wiredResources:aZ,promptBuilderRef:a1}),(0,d.jsx)(cg,{connectedMcpNodes:aJ,handleInsertResourceBinding:(a,b)=>{if(!a||!b)return void cx.warn("Invalid parameters for handleInsertResourceBinding:",{serverName:a,uri:b});let c=(0,ae.X8)("resource",a,b),d=B.length>0&&!B.endsWith(" ")&&!B.endsWith("\n");a1.current?a1.current.insertText((d?" ":"")+c):cx.warn("promptBuilderRef.current is null, cannot insert resource binding")},promptBuilderRef:a1})]}),"advanced"===p&&"agent"===aj&&(0,d.jsx)(ck,{handoffTools:a_,isLoadingHandoffTools:a0,handleInsertToolBinding:(a,b)=>a2(a,b,"handoff"),promptBuilderRef:a1})]})]});return(0,d.jsxs)(q.A,{open:a,onClose:c,slotProps:{transition:{onEntered:()=>{"task"===al&&(aD.current=!0,ax.current?.scrollIntoView({block:"start"}),window.setTimeout(()=>{aD.current=!1},0))}}},maxWidth:"xl",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"secondary.main",m:{xs:1,sm:4},width:{xs:"calc(100% - 16px)",sm:"95vw"},height:{xs:"calc(100dvh - 16px)",sm:"90vh"},maxWidth:{xs:"calc(100% - 16px)",sm:"95vw"},maxHeight:{xs:"calc(100dvh - 16px)",sm:"90vh"}}},children:[(0,d.jsx)(bS.A,{title:t("flows.modal.properties",{name:y.label||t("flows.process.title")}),onClose:c,titleProps:{sx:{minWidth:0,overflowWrap:"anywhere"}}}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(s.A,{sx:{display:"flex",flexDirection:"column",p:0,overflow:"hidden",flexGrow:1,minHeight:0,minWidth:0},children:[(0,d.jsx)(i.default,{sx:{borderBottom:1,borderColor:"divider",px:{xs:0,sm:2},flexShrink:0,minWidth:0},children:(0,d.jsx)(bc.A,{value:al,onChange:(a,b)=>{let c;return am(b),aD.current=!0,void((c=aC[b].current)&&"function"==typeof c.scrollIntoView?c.scrollIntoView({behavior:"smooth",block:"start"}):as.current&&(as.current.scrollTop=c?.offsetTop??0),window.setTimeout(()=>{aD.current=!1},700))},variant:"scrollable",scrollButtons:"auto",children:ar.map(a=>(0,d.jsx)(bd.A,{label:x[a],value:a},a))})}),(0,d.jsxs)(i.default,{ref:as,sx:{flexGrow:1,minWidth:0,overflowY:"auto",overflowX:"hidden",p:{xs:2,sm:3},scrollSnapType:"y mandatory",scrollPaddingTop:{xs:"16px",sm:"24px"}},children:[(0,d.jsxs)(i.default,{ref:at,"data-section":"basic",sx:a5,children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:2},children:t("flows.process.basic")}),(0,d.jsx)(b$,{nodeData:y,setNodeData:z})]}),(0,d.jsxs)(i.default,{ref:av,"data-section":"model",sx:a5,children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:2},children:t("flows.process.model")}),(0,d.jsx)(b2,{isLoadingModels:aF,loadError:aG,models:aE,selectedModelId:a4,handleModelSelect:aH,isModelBound:D,handleUnbindModel:aI})]}),"advanced"===p&&(0,d.jsxs)(i.default,{ref:aw,"data-section":"io",sx:a5,children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:2},children:t("flows.process.io")}),(0,d.jsx)(cu,{excludeModelPrompt:G,setExcludeModelPrompt:J,excludeStartNodePrompt:K,setExcludeStartNodePrompt:M,excludeSystemPrompt:N,setExcludeSystemPrompt:O,inputMode:P,setInputMode:S,isolatedPrompt:T,setIsolatedPrompt:U,allowCallerPrompt:V,setAllowCallerPrompt:W,outputMode:X,setOutputMode:Y,isModelBound:D,models:aE,nodeData:y}),(0,d.jsx)(H.A,{sx:{mt:1},control:(0,d.jsx)(I.A,{checked:Z,onChange:a=>$(a.target.checked)}),label:t("flows.process.todo")})]}),(0,d.jsxs)(i.default,{ref:ax,"data-section":"task",sx:a5,children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:2},children:t("flows.process.task")}),(0,d.jsxs)(i.default,{ref:az,"data-testid":"process-task-split-container",sx:{display:"flex",flexDirection:w?"column":"row",flexGrow:1,minWidth:0,minHeight:480,height:w?"auto":"clamp(480px, 62vh, 680px)",overflow:w?"visible":"hidden"},children:[(0,d.jsx)(i.default,{"data-testid":"process-task-tools-pane",sx:{order:2*!!w,flex:w?"0 0 auto":`0 0 ${an}px`,width:w?"100%":`${an}px`,minWidth:0,minHeight:360*!!w,height:w?420:"auto",mt:2*!!w,display:"flex",flexDirection:"column",overflow:"hidden"},children:a6}),(0,d.jsx)(i.default,{role:"separator","aria-label":"Resize Task tools and prompt editor panes","aria-orientation":"vertical","aria-valuemin":260,"aria-valuemax":640,"aria-valuenow":Math.round(an),tabIndex:0,onPointerDown:a=>{Number.isFinite(a.clientX)&&(a.preventDefault(),aB.current={pointerX:a.clientX,width:aA.current},aq(!0))},onKeyDown:a=>{let b=az.current?.getBoundingClientRect().width??0,c=null;"ArrowLeft"===a.key&&(c=aA.current-24),"ArrowRight"===a.key&&(c=aA.current+24),"Home"===a.key&&(c=260),"End"===a.key&&(c=640),null!==c&&(a.preventDefault(),ao(cz(c,b)))},sx:{display:w?"none":"flex",flex:"0 0 12px",cursor:"col-resize",alignItems:"stretch",justifyContent:"center",touchAction:"none",bgcolor:ap?"action.selected":"transparent","&::after":{content:'""',width:2,borderRadius:1,bgcolor:"divider"},"&:hover, &:focus-visible":{bgcolor:"action.hover",outline:"none"}}}),(0,d.jsx)(i.default,{"data-testid":"process-task-editor-scroll",sx:{order:+!!w,flex:"1 1 auto",width:w?"100%":"auto",minWidth:0,minHeight:360*!!w,height:w?420:"auto",display:"flex",flexDirection:"column",overflow:"auto"},children:(0,d.jsx)(cn,{ref:a1,promptTemplate:B,handlePromptChange:a=>{C(a),z(b=>b?{...b,properties:{...b.properties,promptTemplate:a}}:null)},excludeModelPrompt:G,excludeStartNodePrompt:K,excludeSystemPrompt:N,nodeData:y,flowId:n,suggestions:aY})})]})]}),"advanced"===p&&(0,d.jsxs)(i.default,{ref:ay,"data-section":"advanced",sx:a5,children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:2},children:t("flows.process.advanced")}),(0,d.jsx)(i.default,{sx:{mb:3},children:(0,d.jsx)(cv,{nodeData:y,handlePropertyChange:A,properties:a3})}),(0,d.jsx)(i.default,{children:(0,d.jsx)(cw,{value:{captureVariable:_,captureResource:ab,captureKvScope:af,captureKvKey:ah},onChange:a=>{void 0!==a.captureVariable&&aa(a.captureVariable),void 0!==a.captureResource&&ac(a.captureResource),void 0!==a.captureKvScope&&ag(a.captureKvScope),void 0!==a.captureKvKey&&ai(a.captureKvKey)},onInsertRef:a=>{let b=B.length>0&&!B.endsWith(" ")&&!B.endsWith("\n");a1.current?a1.current.insertText((b?" ":"")+a):cx.warn("promptBuilderRef.current is null, cannot insert capture reference")}})})]})]})]}),(0,d.jsxs)(v.A,{sx:{px:{xs:1.5,sm:3},py:{xs:1,sm:1.5},flexShrink:0},children:[(0,d.jsx)(k.A,{onClick:c,children:t("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{if(b&&y){let a={...y.properties,promptTemplate:B};if("advanced"===p){Object.assign(a,{excludeModelPrompt:G,excludeStartNodePrompt:K,excludeSystemPrompt:N,inputMode:P,isolatedPrompt:T,allowCallerPrompt:V,outputMode:X}),Z?a.enableTodoTool=!0:delete a.enableTodoTool;let b=_.trim();b?a.captureVariable=b:delete a.captureVariable;let c=ab.trim();c?a.captureResource=c:delete a.captureResource;let d=aV(af,ah);d?a.captureKv=d:delete a.captureKv}g(b.id,{...y,properties:a}),c()}},variant:"contained",color:"primary",children:t("flows.modal.saveChanges")})]})]})},cC=(0,w.A)((0,d.jsx)("path",{d:"M19 15v4H5v-4zm1-2H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1M7 18.5c-.82 0-1.5-.67-1.5-1.5s.68-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5M19 5v4H5V5zm1-2H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1M7 8.5c-.82 0-1.5-.67-1.5-1.5S6.18 5.5 7 5.5s1.5.68 1.5 1.5S7.83 8.5 7 8.5"}),"DnsOutlined");var cD=c(19572),cE=c(16300),cF=c(94651);function cG(a){return a.title?.trim()||a.annotations?.title?.trim()||a.name}let cH={readOnly:"success",destructive:"error",otherChanges:"warning"},cI={readOnly:{title:"flows.mcpNode.readOnlyTools",help:"flows.mcpNode.readOnlyToolsHelp"},destructive:{title:"flows.mcpNode.destructiveTools",help:"flows.mcpNode.destructiveToolsHelp"},otherChanges:{title:"flows.mcpNode.otherChangeTools",help:"flows.mcpNode.otherChangeToolsHelp"}};function cJ(a){return a&&"object"==typeof a?JSON.stringify(a,null,2):"{}"}let cK=({tools:a,enabledTools:b,onToggle:c,onActivateAll:f,onDeactivateAll:g})=>{let{t:h}=(0,au.s9)(),[l,p]=(0,e.useState)(""),[q,r]=(0,e.useState)(null),s=(0,e.useMemo)(()=>new Set(b),[b]),t=(0,e.useMemo)(()=>a.reduce((a,b)=>a+ +!!s.has(b.name),0),[s,a]),v=(0,e.useMemo)(()=>{let b=l.trim().toLocaleLowerCase();return b?a.filter(a=>`${cG(a)} ${a.name} ${a.description||""}`.toLocaleLowerCase().includes(b)):a},[l,a]),w=(0,e.useMemo)(()=>(function(a){let b={readOnly:[],destructive:[],otherChanges:[]};for(let c of a)b[c.annotations?.readOnlyHint===!0?"readOnly":c.annotations?.destructiveHint===!1?"otherChanges":"destructive"].push(c);return["readOnly","destructive","otherChanges"].map(a=>({key:a,tools:b[a]})).filter(a=>a.tools.length>0)})(v),[v]);return(0,d.jsxs)(i.default,{children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:2,flexWrap:"wrap"},children:[(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"h6",children:h("flows.mcpNode.allowedTools")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:h("flows.mcpNode.toolsHelp")})]}),(0,d.jsxs)(bb.A,{direction:"row",spacing:1,sx:{flexWrap:"wrap",rowGap:1},children:[(0,d.jsx)(k.A,{size:"small",variant:"outlined",onClick:f,disabled:0===a.length||t===a.length,children:h("flows.mcpNode.activateAll")}),(0,d.jsx)(k.A,{size:"small",variant:"outlined",onClick:g,disabled:0===s.size,children:h("flows.mcpNode.deactivateAll")})]})]}),(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,mt:2,mb:1.5},children:[(0,d.jsx)(F.A,{size:"small",color:t>0?"primary":"default",label:h("flows.mcpNode.enabledCount",{enabled:t,total:a.length})}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:h("flows.mcpNode.annotationNotice")})]}),(0,d.jsx)(u.A,{fullWidth:!0,size:"small",value:l,onChange:a=>p(a.target.value),placeholder:h("flows.mcpNode.searchTools"),inputProps:{"aria-label":h("flows.mcpNode.searchTools")},InputProps:{startAdornment:(0,d.jsx)(ai.A,{position:"start",children:(0,d.jsx)(b8.A,{fontSize:"small"})})},sx:{mb:2}}),0===v.length?(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{py:3,textAlign:"center"},children:h("flows.mcpNode.noMatchingTools")}):(0,d.jsx)(bb.A,{spacing:3,children:w.map(a=>{let b=cI[a.key];return(0,d.jsxs)(i.default,{component:"section","aria-labelledby":`mcp-tools-${a.key}`,children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5},children:[(0,d.jsx)(j.A,{id:`mcp-tools-${a.key}`,variant:"subtitle1",fontWeight:700,children:h(b.title)}),(0,d.jsx)(F.A,{size:"small",color:cH[a.key],variant:"outlined",label:a.tools.length})]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:1},children:h(b.help)}),(0,d.jsx)(aF.A,{disablePadding:!0,sx:{display:"flex",flexDirection:"column",gap:1},children:a.tools.map(a=>{let b,e=cG(a),f=q===a.name,g=s.has(a.name),k=a.annotations?.readOnlyHint===!0,l=a.execution?.taskSupport,p=!!(0,cF.Gt)(a._meta);return(0,d.jsxs)(D.A,{component:"li",variant:"outlined",sx:{listStyle:"none",overflow:"hidden",borderColor:g?"primary.main":"divider"},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"flex-start",gap:1.25,p:1.5},children:[(0,d.jsx)(I.A,{size:"small",checked:g,onChange:()=>c(a.name),inputProps:{"aria-label":h("flows.mcpNode.toggleTool",{tool:e})},sx:{mt:-.25}}),(0,d.jsxs)(i.default,{sx:{flex:1,minWidth:0},children:[(0,d.jsx)(j.A,{variant:"subtitle2",sx:{overflowWrap:"anywhere"},children:e}),a.description&&(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.25},children:a.description}),(0,d.jsxs)(bb.A,{direction:"row",spacing:.75,sx:{flexWrap:"wrap",rowGap:.75,mt:1},children:[(b=a.annotations,(b?.readOnlyHint===void 0||!0!==b.readOnlyHint&&void 0===b.destructiveHint)&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",label:h("flows.mcpNode.cautiousDefaults")})),!k&&a.annotations?.idempotentHint===!0&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",color:"success",label:h("flows.mcpNode.safeToRepeat")}),a.annotations?.openWorldHint===!1&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",label:h("flows.mcpNode.closedWorld")}),a.annotations?.openWorldHint===!0&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",color:"warning",label:h("flows.mcpNode.externalAccess")}),l&&"forbidden"!==l&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",color:"info",label:"required"===l?h("flows.mcpNode.backgroundRequired"):h("flows.mcpNode.backgroundOptional")}),a.outputSchema&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",label:h("flows.mcpNode.structuredResult")}),p&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",color:"info",label:h("flows.mcpNode.interactiveView")})]})]}),(0,d.jsx)(n.A,{title:h("flows.inspector.technicalDetails"),children:(0,d.jsx)(m.A,{size:"small",onClick:()=>r(f?null:a.name),"aria-expanded":f,"aria-label":h(f?"flows.mcpNode.hideTechnicalDetails":"flows.mcpNode.showTechnicalDetails",{tool:e}),children:f?(0,d.jsx)(cb.A,{}):(0,d.jsx)(ca.A,{})})})]}),(0,d.jsxs)(o.A,{in:f,unmountOnExit:!0,children:[(0,d.jsx)(L.A,{}),(0,d.jsxs)(i.default,{sx:{p:1.5,bgcolor:"action.hover"},children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:h("flows.mcpNode.programmaticName")}),(0,d.jsx)(j.A,{component:"code",variant:"body2",sx:{display:"block",overflowWrap:"anywhere",mb:1.5},children:a.name}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:h("flows.mcpNode.inputSchema")}),(0,d.jsx)(i.default,{component:"pre",sx:{m:0,mt:.5,p:1,borderRadius:1,bgcolor:"background.paper",overflow:"auto",fontSize:12},children:cJ(a.inputSchema)}),a.outputSchema&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1.5},children:h("flows.mcpNode.outputSchema")}),(0,d.jsx)(i.default,{component:"pre",sx:{m:0,mt:.5,p:1,borderRadius:1,bgcolor:"background.paper",overflow:"auto",fontSize:12},children:cJ(a.outputSchema)})]}),(a.annotations||a.execution||a._meta)&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1.5},children:h("flows.mcpNode.protocolMetadata")}),(0,d.jsx)(i.default,{component:"pre",sx:{m:0,mt:.5,p:1,borderRadius:1,bgcolor:"background.paper",overflow:"auto",fontSize:12},children:JSON.stringify({...a.annotations?{annotations:a.annotations}:{},...a.execution?{execution:a.execution}:{},...a._meta?{_meta:a._meta}:{}},null,2)})]})]})]})]},a.name)})})]},a.key)})})]})},cL=(0,M.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/MCPNodePropertiesModal"),cM=({open:a,node:b,onClose:c,onSave:f,authoringMode:g="advanced"})=>{let{t:l}=(0,au.s9)(),o=(0,h.A)(),r=(0,E.A)(o.breakpoints.down("md"),{noSsr:!0}),t=(0,E.A)(o.breakpoints.down("sm"),{noSsr:!0}),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)({}),[A,B]=(0,e.useState)(!1),[C,D]=(0,e.useState)(!1),[J,K]=(0,e.useState)("server"),[M,N]=(0,e.useState)("tools"),[O,P]=(0,e.useState)(null),{servers:Q,isLoading:R,loadError:S,retryServer:T}=(0,bW.v)(),U=(0,bs.E)("mcp",Q),V=w?.properties?.boundServer||"",{tools:W,toolsServerName:X,isLoading:Y,error:Z,loadTools:$}=(0,cE.O)(V);(0,e.useEffect)(()=>{b&&(x({...b.data,properties:{...b.data.properties}}),K(b.data.properties?.boundServer?"tools":"server"),N("tools"),D(!1),P(null))},[b,a]),(0,e.useEffect)(()=>{!O||O!==V||X!==O||Y||Z||(x(a=>a?{...a,properties:{...a.properties,enabledTools:W.map(a=>a.name)}}:null),P(null))},[O,Y,W,V,Z,X]);let _=(a,b)=>{x(c=>c?{...c,properties:{...c.properties,[a]:b}}:null)},aa=async()=>{B(!0);try{await Promise.all(Q.map(a=>T(a.name)))}finally{B(!1)}},ab=async(a,b)=>{b?.stopPropagation(),cL.debug(`Retrying server: ${a}`),z(b=>({...b,[a]:!0}));try{return await T(a),a===V&&$(!0),!0}catch(b){return cL.warn(`Failed to retry server ${a}: ${b}`),!1}finally{z(b=>({...b,[a]:!1}))}},ac=a=>{_("enabledTools",a?W.map(a=>a.name):[])};if(!b||!w)return null;let ad=w.properties?.boundServer||"",ae=Array.isArray(w.properties?.enabledTools)?w.properties.enabledTools:[],af=Q.find(a=>a.name===ad),ag=w.properties?.toolTimeout,ah=-1===ag,ai=a=>({key:a.name,content:(0,d.jsx)(br.A,{name:a.name,status:a.status||"disconnected",path:a.path||a.rootPath||"",enabled:!a.disabled,transport:a.transport||"stdio",pickerMode:!0,selected:ad===a.name,onClick:()=>{var b;return b=a.name,void(cL.debug(`Server selected: ${b}`),D(!1),x(a=>{if(!a||a.properties?.boundServer===b)return a;let c=bU({currentLabel:a.label,nameIsCustom:a.properties?.nameIsCustom,defaultLabel:"MCP Node",previousAutoLabel:a.properties?.boundServer||void 0,nextAutoLabel:b});return{...a,label:c,properties:{...a.properties,boundServer:b,enabledTools:[]}}}),b!==V&&P(b),K("tools"))}})}),aj=U.items.map(ai),ak=U.groups?U.groups.map(a=>({...a,items:a.items.map(ai)})):null,al=(0,d.jsx)(b1.A,{isLoading:R,error:S,emptyMessage:l("flows.mcpNode.empty"),loadingMessage:l("flows.mcpNode.loadingServers"),searchable:!0,searchPlaceholder:l("flows.mcpNode.searchServers"),searchTerm:U.searchTerm,onSearchChange:U.setSearchTerm,columns:{xs:12},items:aj,groups:ak,collapsedKeys:U.collapsedKeys,onToggleGroup:U.toggleGroup,autoFocusSearch:!1}),am=(0,d.jsxs)(i.default,{"data-testid":"mcp-server-pane",sx:{height:"100%",minHeight:0,overflowY:"auto",p:3},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:1,mb:1.5},children:[(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"h6",children:l("flows.mcpNode.bind")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:l("flows.mcpNode.select")})]}),(0,d.jsx)(n.A,{title:l("flows.mcpNode.retryAll"),children:(0,d.jsx)("span",{children:(0,d.jsx)(m.A,{size:"small",onClick:aa,disabled:A||R,children:A?(0,d.jsx)(G.default,{size:18}):(0,d.jsx)(b6.A,{fontSize:"small"})})})})]}),al,(0,d.jsx)(b_.A,{sx:{mt:1},children:ad?l("flows.mcpNode.bound",{server:ad}):l("flows.mcpNode.select")})]}),an=(0,d.jsxs)(i.default,{"data-testid":"mcp-compact-server-picker",sx:{maxWidth:680,mx:"auto"},children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:.5},children:l("flows.mcpNode.bind")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:l("flows.mcpNode.select")}),(0,d.jsxs)(k.A,{fullWidth:!0,variant:"outlined",size:"large",startIcon:(0,d.jsx)(cC,{}),onClick:()=>D(!0),sx:{justifyContent:"flex-start",textTransform:"none",py:1.25},children:[(0,d.jsx)(i.default,{component:"span",sx:{flex:1,minWidth:0,textAlign:"left",overflow:"hidden",textOverflow:"ellipsis"},children:ad||l("flows.mcpNode.chooseServer")}),af&&(0,d.jsx)(F.A,{size:"small",label:af.status||"disconnected",color:"connected"===af.status?"success":"default",sx:{ml:1}})]}),(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"flex-end",mt:1},children:(0,d.jsx)(k.A,{size:"small",startIcon:A?(0,d.jsx)(G.default,{size:16}):(0,d.jsx)(b6.A,{}),onClick:aa,disabled:A||R,children:l("flows.mcpNode.retryAll")})}),(0,d.jsx)(b_.A,{children:ad?l("flows.mcpNode.bound",{server:ad}):l("flows.mcpNode.select")})]}),ao=(0,d.jsx)(i.default,{"data-testid":"mcp-tools-pane",children:ad?(0,d.jsxs)(d.Fragment,{children:[af?.status!=="connected"&&(0,d.jsx)(p.A,{severity:"warning",sx:{mb:2},action:(0,d.jsx)(k.A,{color:"inherit",size:"small",startIcon:y[ad]?(0,d.jsx)(G.default,{size:16}):(0,d.jsx)(b6.A,{}),onClick:()=>ab(ad),disabled:y[ad],children:l("flows.mcpNode.retry")}),children:l("flows.mcpNode.disconnected")}),Y?(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"center",gap:1,py:6},children:[(0,d.jsx)(G.default,{size:24}),(0,d.jsx)(j.A,{color:"text.secondary",children:l("flows.mcpNode.loadingTools")})]}):Z?(0,d.jsx)(p.A,{severity:"error",children:Z}):0===W.length?(0,d.jsx)(j.A,{color:"text.secondary",sx:{py:3},children:l(af?.status==="connected"?"flows.mcpNode.noTools":"flows.mcpNode.connectForTools")}):(0,d.jsx)(cK,{tools:W,enabledTools:ae,onToggle:a=>{x(b=>{if(!b)return null;let c=Array.isArray(b.properties.enabledTools)?b.properties.enabledTools:[],d=c.includes(a)?c.filter(b=>b!==a):[...c,a];return{...b,properties:{...b.properties,enabledTools:d}}})},onActivateAll:()=>ac(!0),onDeactivateAll:()=>ac(!1)})]}):(0,d.jsx)(p.A,{severity:"info",children:l("flows.mcpNode.connectForTools")})}),ap=(0,d.jsxs)(i.default,{"data-testid":"mcp-settings-pane",sx:{maxWidth:820},children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:2},children:l("common.settings")}),(0,d.jsx)(u.A,{fullWidth:!0,label:l("flows.mcpNode.label"),value:w.label||"",onChange:a=>{x(b=>b?{...b,label:a.target.value,properties:{...b.properties,nameIsCustom:!0}}:null)},helperText:l("flows.mcpNode.labelHelp"),sx:{mb:2}}),(0,d.jsx)(u.A,{fullWidth:!0,label:l("flows.mcpNode.description"),value:w.description||"",onChange:a=>x({...w,description:a.target.value}),multiline:!0,minRows:2,helperText:l("flows.mcpNode.descriptionHelp")}),ad&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(L.A,{sx:{my:3}}),(0,d.jsx)(j.A,{variant:"subtitle1",children:l("flows.mcpNode.timeoutTitle")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:1.5},children:l("flows.mcpNode.timeoutHelp")}),(0,d.jsxs)(bb.A,{direction:{xs:"column",sm:"row"},spacing:2,alignItems:{xs:"stretch",sm:"flex-start"},children:[(0,d.jsx)(u.A,{label:l("flows.mcpNode.timeoutSeconds"),type:"number",size:"small",sx:{width:{xs:"100%",sm:220}},value:ah?"":ag??"",placeholder:String(300),disabled:ah,inputProps:{min:1},onChange:a=>{let b=a.target.value;if(""===b)return void _("toolTimeout",void 0);let c=Number.parseInt(b,10);!Number.isNaN(c)&&c>0&&_("toolTimeout",c)},helperText:ah?l("flows.mcpNode.noTimeoutHelp"):l("flows.mcpNode.defaultTimeout",{seconds:300})}),(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:ah,onChange:a=>_("toolTimeout",a.target.checked?-1:void 0)}),label:l("flows.mcpNode.noTimeout")})]}),(0,d.jsx)(L.A,{sx:{my:3}}),(0,d.jsx)(cD.A,{roots:w.properties?.roots||[],onChange:a=>_("roots",a)}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1},children:l("flows.mcpNode.rootsHelp",{server:ad})})]})]});return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"xl",fullWidth:!0,"data-authoring-mode":g,PaperProps:{sx:{borderTop:5,borderColor:"info.main",m:{xs:1,sm:4},width:{xs:"calc(100% - 16px)",sm:"95vw"},height:{xs:"calc(100dvh - 16px)",sm:"90vh"},maxWidth:{xs:"calc(100% - 16px)",sm:"95vw"},maxHeight:{xs:"calc(100dvh - 16px)",sm:"90vh"}}},children:[(0,d.jsx)(bS.A,{title:l("flows.modal.properties",{name:w.label||l("flows.mcpNode.title")}),onClose:c,titleProps:{sx:{minWidth:0,overflowWrap:"anywhere"}}}),(0,d.jsx)(L.A,{}),(0,d.jsx)(s.A,{sx:{display:"flex",flexDirection:"column",p:0,overflow:"hidden",flexGrow:1,minHeight:0},children:r?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i.default,{sx:{borderBottom:1,borderColor:"divider",px:{xs:0,sm:2},flexShrink:0},children:(0,d.jsxs)(bc.A,{value:J,onChange:(a,b)=>K(b),variant:"scrollable",scrollButtons:"auto","aria-label":l("flows.mcpNode.title"),children:[(0,d.jsx)(bd.A,{label:l("flows.mcpNode.bind"),value:"server"}),(0,d.jsx)(bd.A,{label:l("flows.mcpNode.allowedTools"),value:"tools"}),(0,d.jsx)(bd.A,{label:l("common.settings"),value:"settings"})]})}),(0,d.jsxs)(i.default,{sx:{flexGrow:1,minHeight:0,overflowY:"auto",p:{xs:2,sm:3}},children:["server"===J&&an,"tools"===J&&ao,"settings"===J&&ap]})]}):(0,d.jsxs)(i.default,{"data-testid":"mcp-desktop-split",sx:{display:"grid",gridTemplateColumns:"minmax(320px, 38%) minmax(0, 1fr)",flexGrow:1,minHeight:0},children:[(0,d.jsx)(i.default,{sx:{minWidth:0,minHeight:0,borderRight:1,borderColor:"divider"},children:am}),(0,d.jsxs)(i.default,{sx:{minWidth:0,minHeight:0,display:"flex",flexDirection:"column"},children:[(0,d.jsx)(i.default,{sx:{borderBottom:1,borderColor:"divider",px:2,flexShrink:0},children:(0,d.jsxs)(bc.A,{value:M,onChange:(a,b)=>N(b),variant:"scrollable",scrollButtons:"auto","aria-label":l("flows.mcpNode.allowedTools"),children:[(0,d.jsx)(bd.A,{label:l("flows.mcpNode.allowedTools"),value:"tools"}),(0,d.jsx)(bd.A,{label:l("common.settings"),value:"settings"})]})}),(0,d.jsx)(i.default,{sx:{flexGrow:1,minHeight:0,overflowY:"auto",p:3},children:"tools"===M?ao:ap})]})]})}),(0,d.jsxs)(v.A,{sx:{px:{xs:1.5,sm:3},py:{xs:1,sm:1.5},flexShrink:0},children:[(0,d.jsx)(k.A,{onClick:c,children:l("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{b&&w&&(f(b.id,w),c())},variant:"contained",color:"primary",children:l("flows.modal.saveChanges")})]})]}),(0,d.jsx)(bq.A,{open:C,onClose:()=>D(!1),fullScreen:t,maxWidth:"md",title:l("flows.mcpNode.bind"),description:l("flows.mcpNode.select"),isLoading:R,error:S,emptyMessage:l("flows.mcpNode.empty"),loadingMessage:l("flows.mcpNode.loadingServers"),searchable:!0,searchPlaceholder:l("flows.mcpNode.searchServers"),searchTerm:U.searchTerm,onSearchChange:U.setSearchTerm,columns:{xs:12,sm:6},items:aj,groups:ak,collapsedKeys:U.collapsedKeys,onToggleGroup:U.toggleGroup})]})},cN=({open:a,node:b,onClose:c,onSave:f})=>{let{t:g}=(0,au.s9)(),[h,l]=(0,e.useState)(null),[m,n]=(0,e.useState)("");return((0,e.useEffect)(()=>{b&&(l({...b.data,properties:{...b.data.properties}}),n(b.data.properties?.promptTemplate||""))},[b,a]),b&&h)?(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"xl",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"primary.main",width:"95vw",height:"90vh",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,d.jsx)(bS.A,{title:g("flows.modal.properties",{name:h.label||g("flows.modal.startNode")}),onClose:c}),(0,d.jsx)(L.A,{}),(0,d.jsx)(s.A,{sx:{display:"flex",flexDirection:"column",p:3,overflow:"auto",height:"calc(90vh - 130px)"},children:(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%"},children:[(0,d.jsx)(j.A,{variant:"h6",gutterBottom:!0,children:g("flows.modal.promptTemplate")}),(0,d.jsx)(i.default,{sx:{flexGrow:1,display:"flex",flexDirection:"column",height:"calc(100% - 40px)"},children:(0,d.jsx)(cl.A,{value:m,onChange:a=>{n(a),l(b=>b?{...b,properties:{...b.properties,promptTemplate:a}}:null)},label:"",height:"100%"})})]})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:g("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{if(b&&h){let a={...h,properties:{...h.properties,promptTemplate:m}};f(b.id,a),c()}},variant:"contained",color:"primary",children:g("flows.modal.saveChanges")})]})]}):null},cO=({open:a,node:b,onClose:c,onSave:f})=>{let{t:g}=(0,au.s9)(),[h,l]=(0,e.useState)(null);return((0,e.useEffect)(()=>{b&&l({...b.data,properties:{...b.data.properties}})},[b,a]),b&&h)?(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"success.main",width:"600px",height:"400px",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,d.jsx)(bS.A,{title:g("flows.modal.properties",{name:h.label||g("flows.modal.finishNode")}),onClose:c}),(0,d.jsx)(L.A,{}),(0,d.jsx)(s.A,{sx:{display:"flex",flexDirection:"column",p:3,overflow:"auto"},children:(0,d.jsx)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%",justifyContent:"center",alignItems:"center",py:4},children:(0,d.jsxs)(D.A,{elevation:0,sx:{p:4,textAlign:"center",backgroundColor:"rgba(76, 175, 80, 0.08)",borderRadius:2,width:"100%"},children:[(0,d.jsx)(j.A,{variant:"h6",color:"success.main",gutterBottom:!0,children:g("flows.modal.finishNode")}),(0,d.jsx)(j.A,{variant:"body1",color:"text.secondary",children:g("flows.modal.finishHelp")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:2,fontStyle:"italic"},children:g("flows.modal.finishFuture")})]})})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:g("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{b&&h&&(f(b.id,h),c())},variant:"contained",color:"primary",children:g("flows.modal.save")})]})]}):null},cP=({open:a,edge:b,onClose:c,onSave:f})=>{let{t:g}=(0,au.s9)(),h={contains:g("flows.edgeModal.contains"),regex:g("flows.edgeModal.regex"),equals:g("flows.edgeModal.equals"),always:g("flows.edgeModal.always")},l={"last-assistant":g("flows.edgeModal.lastAgent"),"last-message":g("flows.edgeModal.lastMessage")},[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)("contains"),[r,t]=(0,e.useState)(""),[w,x]=(0,e.useState)("last-assistant"),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(!1);if((0,e.useEffect)(()=>{let a=b?.data?.condition;a?(n(!0),p(a.kind),t("string"==typeof a.value?a.value:""),x(a.target??"last-assistant"),z(!!a.ignoreCase),B(!!a.negate)):(n(!1),p("contains"),t(""),x("last-assistant"),z(!1),B(!1))},[b,a]),!b)return null;let C="always"!==o,D=m&&"regex"===o&&r.length>0&&!(0,aO.wM)(r),E=m&&C&&0===r.length;return(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"sm",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"primary.main",width:"520px",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,d.jsx)(bS.A,{title:g("flows.edgeModal.title"),onClose:c}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(s.A,{sx:{display:"flex",flexDirection:"column",gap:2,p:3},children:[(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:g("flows.edgeModal.help")}),(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:m,onChange:a=>n(a.target.checked)}),label:g("flows.edgeModal.conditional")}),m&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(bB.A,{fullWidth:!0,size:"small",children:[(0,d.jsx)(bC.A,{id:"edge-condition-kind-label",children:g("flows.edgeModal.kind")}),(0,d.jsx)(bD.A,{labelId:"edge-condition-kind-label",label:g("flows.edgeModal.kind"),value:o,onChange:a=>p(a.target.value),children:aO.w4.map(a=>(0,d.jsx)(K.A,{value:a,children:h[a]},a))})]}),C&&(0,d.jsx)(u.A,{fullWidth:!0,size:"small",label:g("regex"===o?"flows.edgeModal.pattern":"flows.edgeModal.value"),value:r,onChange:a=>t(a.target.value),error:D||E,helperText:D?g("flows.edgeModal.invalidRegex"):E?g("flows.edgeModal.valueRequired"):" "}),(0,d.jsxs)(bB.A,{fullWidth:!0,size:"small",children:[(0,d.jsx)(bC.A,{id:"edge-condition-target-label",children:g("flows.edgeModal.testAgainst")}),(0,d.jsx)(bD.A,{labelId:"edge-condition-target-label",label:g("flows.edgeModal.testAgainst"),value:w,onChange:a=>x(a.target.value),children:aO.L2.map(a=>(0,d.jsx)(K.A,{value:a,children:l[a]},a))})]}),(0,d.jsxs)(i.default,{display:"flex",gap:2,flexWrap:"wrap",children:[C&&(0,d.jsx)(H.A,{control:(0,d.jsx)(bK.A,{checked:y,onChange:a=>z(a.target.checked)}),label:g("flows.edgeModal.ignoreCase")}),(0,d.jsx)(H.A,{control:(0,d.jsx)(bK.A,{checked:A,onChange:a=>B(a.target.checked)}),label:g("flows.edgeModal.negate")})]}),(0,d.jsx)(b_.A,{children:g("flows.edgeModal.runtimeSafety")})]})]}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:g("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{if(!m){f(b.id,void 0),c();return}let a={kind:o};C&&(a.value=r,y&&(a.ignoreCase=!0)),"last-assistant"!==w&&(a.target=w),A&&(a.negate=!0),f(b.id,a),c()},variant:"contained",color:"primary",disabled:D,children:g("flows.modal.save")})]})]})};var cQ=c(3411);let cR=({information:a,id:b})=>{let{t:c}=(0,au.s9)(),e=a.technicalText;return e.trim()?(0,d.jsx)(i.default,{id:b,component:"pre",tabIndex:0,sx:{m:0,p:1.5,maxHeight:{xs:"50vh",sm:"60vh"},overflow:"auto",whiteSpace:"pre-wrap",overflowWrap:"anywhere",fontSize:"0.75rem",lineHeight:1.45,backgroundColor:"action.hover",borderRadius:1},children:e}):(0,d.jsx)(j.A,{id:b,variant:"body2",color:"text.secondary",children:c("flows.nodeInfo.technicalEmpty")})},cS="node-technical-details-title",cT=({open:a,node:b,flowNames:c,onClose:f})=>{let{t:g,tp:h,formatList:i}=(0,au.s9)(),j=(0,e.useMemo)(()=>{if(!b)return null;let a=b.data?.type??b.type??"process";return(0,cQ.b)(b.data,a,{t:g,tp:h,formatList:i},c)},[b,c,g,h,i]);return(0,d.jsxs)(q.A,{open:a&&!!j,onClose:f,maxWidth:"sm",fullWidth:!0,"aria-labelledby":cS,PaperProps:{sx:{m:{xs:1,sm:4},width:{xs:"calc(100% - 16px)",sm:"100%"},maxWidth:{xs:"calc(100% - 16px)",sm:600},maxHeight:{xs:"calc(100dvh - 16px)",sm:"85vh"}}},children:[(0,d.jsx)(bS.A,{title:g("flows.nodeInfo.technicalTitle",{name:j?.label??""}),onClose:f,titleProps:{id:cS,sx:{minWidth:0,overflowWrap:"anywhere"}}}),(0,d.jsx)(L.A,{}),(0,d.jsx)(s.A,{sx:{px:{xs:2,sm:3},py:2},children:j&&(0,d.jsx)(cR,{information:j})}),(0,d.jsx)(v.A,{children:(0,d.jsx)(k.A,{onClick:f,children:g("common.close")})})]})},cU=(0,w.A)((0,d.jsx)("path",{d:"m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"}),"ArrowForward"),cV=(0,w.A)((0,d.jsx)("path",{d:"M19 13H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2m0 6H5v-4h14zm0-16H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m0 6H5V5h14z"}),"ViewAgendaOutlined"),cW=(0,w.A)((0,d.jsx)("path",{d:"M17 20.41 18.41 19 15 15.59 13.59 17zM7.5 8H11v5.59L5.59 19 7 20.41l6-6V8h3.5L12 3.5z"}),"MergeType"),cX=(0,M.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/SubflowNodePropertiesModal"),cY=({open:a,node:b,onClose:c,onSave:f,onNavigateToFlow:g,flowId:h,authoringMode:l="advanced"})=>{let{t:m}=(0,au.s9)(),[n,o]=(0,e.useState)(null),[r,t]=(0,e.useState)([]),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(""),[C,D]=(0,e.useState)(""),[E,F]=(0,e.useState)("folder"),[G,J]=(0,e.useState)("");(0,e.useEffect)(()=>{if(b){let a=b.data.properties||{};o({...b.data,properties:{...a}}),B(a.captureVariable||""),D(a.captureResource||"");let c=aU(a.captureKv||"");F(c.scope),J(c.key||"")}},[b,a]),(0,e.useEffect)(()=>{if(!a)return;let b=!1;return x(!0),P.g.loadFlows().then(a=>{b||t(a||[])}).catch(a=>{cX.warn("Failed to load flows for subflow picker",a),b||t([])}).finally(()=>{b||x(!1)}),()=>{b=!0}},[a]);let K=(a,b)=>{o(c=>c?{...c,properties:{...c.properties,[a]:b}}:null)},M=r.filter(a=>a.id!==h),N=(0,bs.E)("flows",M);if(!b||!n)return null;let O=n.properties?.subflowId||"",Q=!!O&&!r.some(a=>a.id===O),R=Q?"":r.find(a=>a.id===O)?.name||"",S=Array.isArray(n.properties?.parallelSubflowIds)&&n.properties.parallelSubflowIds.length>0||!!n.properties?.parallelSubflowIdsVar||n.properties?.mapOverList===!0||Array.isArray(n.properties?.spawnBriefs)&&n.properties.spawnBriefs.length>0,T=n.properties?.promptTemplate||"",U=n.properties?.inputMode||(T.trim()?"isolated":"full-history");return(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"warning.main",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,d.jsx)(bS.A,{title:m("flows.modal.properties",{name:n.label||m("flows.subflow.title")}),onClose:c}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(s.A,{sx:{p:3},children:[(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:m("flows.subflow.intro")}),(0,d.jsx)(u.A,{fullWidth:!0,label:m("flows.subflow.nodeLabel"),value:n.label||"",onChange:a=>o({...n,label:a.target.value}),margin:"normal"}),(0,d.jsxs)(i.default,{sx:{mt:2},children:[(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mb:1},children:m("flows.subflow.flowToRun")}),(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,flexWrap:"wrap"},children:[(0,d.jsx)(k.A,{variant:"outlined",startIcon:(0,d.jsx)(bj.A,{}),onClick:()=>z(!0),sx:{textTransform:"none",maxWidth:"100%"},children:(0,d.jsx)(i.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:R||m("flows.subflow.choose")})}),O&&!Q&&g&&(0,d.jsx)(k.A,{size:"small",onClick:()=>g(O),startIcon:(0,d.jsx)(cU,{}),sx:{textTransform:"none"},children:m("flows.subflow.openTarget")})]})]}),Q&&(0,d.jsx)(p.A,{severity:"warning",sx:{mt:1},children:m("flows.subflow.missing")}),S&&(0,d.jsx)(p.A,{severity:"info",sx:{mt:1},children:m("flows.subflow.legacyExecution")}),(0,d.jsx)(bq.A,{open:y,onClose:()=>z(!1),title:m("flows.subflow.pickerTitle"),description:m("flows.subflow.pickerHelp"),isLoading:w,skeleton:(0,d.jsx)(bx.o,{}),emptyMessage:m("flows.subflow.pickerEmpty"),searchable:!0,searchPlaceholder:m("flows.subflow.search"),searchTerm:N.searchTerm,onSearchChange:N.setSearchTerm,items:N.items.map(a=>({key:a.id,content:(0,d.jsx)(bx.A,{flow:a,selected:a.id===O,onSelect:a=>{K("subflowId",a),z(!1)},pickerMode:!0})})),groups:N.groups?N.groups.map(a=>({...a,items:a.items.map(a=>({key:a.id,content:(0,d.jsx)(bx.A,{flow:a,selected:a.id===O,onSelect:a=>{K("subflowId",a),z(!1)},pickerMode:!0})}))})):null,collapsedKeys:N.collapsedKeys,onToggleGroup:N.toggleGroup}),"guided"===l&&(0,d.jsx)(u.A,{fullWidth:!0,label:m("flows.subflow.helperTask"),value:n.description||"",onChange:a=>o({...n,description:a.target.value}),margin:"normal",multiline:!0,minRows:2,helperText:m("flows.subflow.helperTaskHelp")}),"advanced"===l&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:m("flows.subflow.inputTitle")}),(0,d.jsxs)(i.default,{role:"radiogroup","aria-label":m("flows.subflow.inputAria"),sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,d.jsx)(ct,{selected:"full-history"===U,onClick:()=>K("inputMode","full-history"),icon:(0,d.jsx)(co,{}),title:m("flows.subflow.fullHistory"),description:m("flows.subflow.fullHistoryHelp")}),(0,d.jsx)(ct,{selected:"latest-message"===U,onClick:()=>K("inputMode","latest-message"),icon:(0,d.jsx)(cp,{}),title:m("flows.subflow.latest"),description:m("flows.subflow.latestHelp")}),(0,d.jsx)(ct,{selected:"isolated"===U,onClick:()=>K("inputMode","isolated"),icon:(0,d.jsx)(cq,{}),title:m("flows.subflow.isolated"),description:m("flows.subflow.isolatedHelp")})]}),"isolated"===U&&(0,d.jsx)(u.A,{fullWidth:!0,label:m("flows.subflow.defaultPrompt"),value:T,onChange:a=>K("promptTemplate",a.target.value),margin:"normal",multiline:!0,rows:3,helperText:m("flows.subflow.defaultPromptHelp")}),(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:m("flows.subflow.workersTitle")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:1},children:m("flows.subflow.queueHelp")}),(0,d.jsx)(u.A,{label:m("flows.subflow.maxCopies"),type:"number",size:"small",sx:{width:240},inputProps:{min:1},value:"number"==typeof n.properties?.concurrencyLimit?n.properties.concurrencyLimit:"",onChange:a=>{let b=a.target.value;if(""===b)o(a=>{if(!a)return null;let b={...a.properties};return delete b.concurrencyLimit,{...a,properties:b}});else{let a=Math.max(1,Math.floor(Number(b)));Number.isNaN(a)||K("concurrencyLimit",a)}},helperText:m("flows.subflow.defaultFour")}),(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:m("flows.subflow.outputTitle")}),(0,d.jsxs)(i.default,{role:"radiogroup","aria-label":m("flows.subflow.outputAria"),sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,d.jsx)(ct,{selected:"final-only"!==(n.properties?.outputMode||"steps"),onClick:()=>K("outputMode","steps"),icon:(0,d.jsx)(cr.A,{}),title:m("flows.subflow.fullOutput"),description:m("flows.subflow.fullOutputHelp")}),(0,d.jsx)(ct,{selected:n.properties?.outputMode==="final-only",onClick:()=>K("outputMode","final-only"),icon:(0,d.jsx)(cs,{}),title:m("flows.subflow.condensed"),description:m("flows.subflow.condensedHelp")})]}),(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:m("flows.subflow.resultPresentationTitle")}),(0,d.jsxs)(i.default,{role:"radiogroup","aria-label":m("flows.subflow.resultPresentationAria"),sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,d.jsx)(ct,{selected:(n.properties?.resultPresentation??"joined")==="separate",onClick:()=>K("resultPresentation","separate"),icon:(0,d.jsx)(cV,{}),title:m("flows.subflow.resultSeparate"),description:m("flows.subflow.resultSeparateHelp")}),(0,d.jsx)(ct,{selected:(n.properties?.resultPresentation??"joined")!=="separate",onClick:()=>K("resultPresentation","joined"),icon:(0,d.jsx)(cW,{}),title:m("flows.subflow.resultJoined"),description:m("flows.subflow.resultJoinedHelp")})]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:m("flows.subflow.resultPresentationHelp")}),(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:m("flows.subflow.debugging")}),(0,d.jsx)(H.A,{sx:{display:"block"},control:(0,d.jsx)(I.A,{checked:n.properties?.saveConversation!==!1,onChange:a=>K("saveConversation",a.target.checked)}),label:m("flows.subflow.saveConversation")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{ml:4,mt:-.5},children:m("flows.subflow.saveConversationHelp")}),(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:m("flows.subflow.invocationTitle")}),(0,d.jsx)(H.A,{sx:{display:"block"},control:(0,d.jsx)(I.A,{checked:n.properties?.invocationMode==="tool",onChange:a=>K("invocationMode",a.target.checked?"tool":"handoff")}),label:m("flows.subflow.invocationTool")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{ml:4,mt:-.5},children:m("flows.subflow.invocationToolHelp")}),(0,d.jsx)(L.A,{sx:{my:3}}),(0,d.jsx)(cw,{value:{captureVariable:A,captureResource:C,captureKvScope:E,captureKvKey:G},onChange:a=>{void 0!==a.captureVariable&&B(a.captureVariable),void 0!==a.captureResource&&D(a.captureResource),void 0!==a.captureKvScope&&F(a.captureKvScope),void 0!==a.captureKvKey&&J(a.captureKvKey)}})]})]}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:m("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{if(b&&n){if("guided"===l){f(b.id,n),c();return}let a={...n.properties},d=A.trim();d?a.captureVariable=d:delete a.captureVariable;let e=C.trim();e?a.captureResource=e:delete a.captureResource;let g=aV(E,G);g?a.captureKv=g:delete a.captureKv,f(b.id,{...n,properties:a}),c()}},variant:"contained",color:"primary",children:m("flows.modal.save")})]})]})};var cZ=c(40365),c$=c(95127),c_=c(84781),c0=c(83135);let c1=(0,M.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/ResourceNodePropertiesModal"),c2=({open:a,node:b,onClose:c,onSave:f,flowNodes:g})=>{let{t:h}=(0,au.s9)(),[l,m]=(0,e.useState)(null),{servers:n,isLoading:p}=(0,bW.v)(),[r,t]=(0,e.useState)([]),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(!1);(0,e.useEffect)(()=>{if(b){m({...b.data,properties:{scope:"run",...b.data.properties}});let a=!!b.data.label&&"Resource Node"!==b.data.label.trim(),c=!!b.data.description&&b.data.description.trim().length>0;B(a||c)}},[b,a]);let C=l?.properties?.scope==="mcp"?"mcp":"run",D=l?.properties?.boundServer||"",E=l?.properties?.uri||"",F=l?.properties?.runName||"",I=(0,e.useMemo)(()=>{let a=(g??[]).filter(a=>a.id!==b?.id).map(a=>{try{return JSON.stringify(a.data?.properties??{})}catch{return""}});return(0,bT.jX)(a)},[g,b?.id]),J=(0,e.useCallback)((a,b)=>{m(c=>c?{...c,properties:{...c.properties,[a]:b}}:c)},[]);(0,e.useEffect)(()=>{if(!a||"mcp"!==C||!D){t([]),z(null);return}let b=!1;return x(!0),z(null),Q.S.listServerResources(D).then(a=>{b||(a.error?(z(a.error),t([])):t([...(a.resources??[]).map(a=>({uri:a.uri,name:a.name,description:a.description,mimeType:a.mimeType})),...(a.resourceTemplates??[]).map(a=>({uri:a.uriTemplate,name:a.name?`${a.name} (${h("flows.resource.template")})`:`(${h("flows.resource.template")})`,description:a.description}))]))}).catch(a=>{b||(c1.warn(`Failed to browse resources of ${D}`,a),z(a instanceof Error?a.message:String(a)))}).finally(()=>{b||x(!1)}),()=>{b=!0}},[a,C,D,h]);let L="run"===C&&!!F.trim()&&!aR(F.trim());return l?(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"sm",fullWidth:!0,children:[(0,d.jsx)(bS.A,{title:h("flows.resource.title"),onClose:c}),(0,d.jsx)(s.A,{children:(0,d.jsxs)(i.default,{display:"flex",flexDirection:"column",gap:2,mt:1,children:[(0,d.jsxs)(bB.A,{children:[(0,d.jsxs)(cZ.A,{row:!0,value:C,onChange:a=>J("scope","mcp"===a.target.value?"mcp":"run"),children:[(0,d.jsx)(H.A,{value:"run",control:(0,d.jsx)(c$.A,{}),label:h("flows.resource.temporary")}),(0,d.jsx)(H.A,{value:"mcp",control:(0,d.jsx)(c$.A,{}),label:h("flows.resource.mcp")})]}),(0,d.jsx)(b_.A,{children:"mcp"===C?h("flows.resource.mcpHelp"):h("flows.resource.temporaryHelp")})]}),"mcp"===C?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(bB.A,{fullWidth:!0,children:[(0,d.jsx)(bC.A,{id:"resource-server-label",children:h("flows.resource.server")}),(0,d.jsxs)(bD.A,{labelId:"resource-server-label",label:h("flows.resource.server"),value:D,onChange:a=>{J("boundServer",a.target.value)},children:[p&&(0,d.jsx)(K.A,{value:"",disabled:!0,children:h("flows.resource.loadingServers")}),n.map(a=>(0,d.jsx)(K.A,{value:a.name,children:a.name},a.name))]})]}),(0,d.jsx)(u.A,{label:h("flows.resource.uri"),value:E,onChange:a=>J("uri",a.target.value),fullWidth:!0,placeholder:h("flows.resource.uriPlaceholder"),helperText:h("flows.resource.uriHelp")}),w&&(0,d.jsxs)(i.default,{display:"flex",alignItems:"center",gap:1,children:[(0,d.jsx)(G.default,{size:18}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:h("flows.resource.loading")})]}),y&&(0,d.jsx)(j.A,{variant:"body2",color:"warning.main",children:h("flows.resource.loadFailed",{error:y})}),!w&&!y&&D&&0===r.length&&(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:h("flows.resource.none")}),r.length>0&&(0,d.jsx)(aF.A,{dense:!0,sx:{maxHeight:240,overflow:"auto",border:1,borderColor:"divider",borderRadius:1},children:r.map(a=>(0,d.jsxs)(aI.A,{selected:a.uri===E,onClick:()=>J("uri",a.uri),children:[(0,d.jsx)(aG.A,{sx:{minWidth:34},children:(0,d.jsx)(am.A,{fontSize:"small",sx:{color:"#009688"}})}),(0,d.jsx)(aH.A,{primary:a.name||a.uri,secondary:a.name?a.uri:a.description,secondaryTypographyProps:{sx:{wordBreak:"break-all"}}})]},a.uri))})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(c_.A,{freeSolo:!0,options:I,inputValue:F,onInputChange:(a,b)=>J("runName",b),renderInput:a=>(0,d.jsx)(u.A,{...a,label:h("flows.resource.temporaryName"),fullWidth:!0,error:L,helperText:L?h("flows.resource.invalidName"):I.length>0?h("flows.resource.nameSuggestions"):h("flows.resource.nameHelp")})}),F.trim()&&!L&&(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:h("flows.resource.runtimeUri",{name:F.trim()})})]}),(0,d.jsx)(c0.A,{component:"button",type:"button",underline:"hover",onClick:()=>B(a=>!a),sx:{alignSelf:"flex-start"},children:A?h("flows.resource.hideAdvanced"):h("flows.resource.showAdvanced")}),(0,d.jsx)(o.A,{in:A,unmountOnExit:!0,children:(0,d.jsxs)(i.default,{display:"flex",flexDirection:"column",gap:2,children:[(0,d.jsx)(u.A,{label:h("flows.resource.label"),value:l.label,onChange:a=>m({...l,label:a.target.value}),fullWidth:!0,helperText:h("flows.resource.labelHelp")}),(0,d.jsx)(u.A,{label:h("flows.resource.description"),value:l.description??"",onChange:a=>m({...l,description:a.target.value}),fullWidth:!0,multiline:!0,minRows:2})]})})]})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:h("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{if(!b||!l)return;let a={...l.properties};"run"===C?(delete a.boundServer,delete a.uri,delete a.mimeType,a.scope="run",a.runName=F.trim()):(delete a.runName,a.scope="mcp");let c=(l.label??"").trim()||("run"===C?F.trim()||h("flows.resource.temporary"):h("flows.resource.mcp"));f(b.id,{...l,label:c,properties:a})},variant:"contained",children:h("flows.modal.save")})]})]}):null},c3=({open:a,node:b,onClose:c,onSave:f})=>{let{t:g}=(0,au.s9)(),[h,j]=(0,e.useState)(null),[l,m]=(0,e.useState)(!1);(0,e.useEffect)(()=>{b&&(j({...b.data,properties:{...b.data.properties}}),m(!!b.data.properties?.payloadTemplate))},[b,a]);let n=(a,b)=>{j(c=>c?{...c,properties:{...c.properties,[a]:b}}:c)};if(!h)return null;let r=h.properties?.topic??"",t=h.properties?.payloadTemplate??"";return(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"sm",fullWidth:!0,children:[(0,d.jsx)(bS.A,{title:g("flows.signal.title"),onClose:c}),(0,d.jsx)(s.A,{children:(0,d.jsxs)(i.default,{display:"flex",flexDirection:"column",gap:2,mt:1,children:[(0,d.jsx)(u.A,{label:g("flows.signal.name"),value:r,onChange:a=>n("topic",a.target.value),fullWidth:!0,required:!0,autoFocus:!0,error:!r.trim(),placeholder:g("flows.signal.placeholder"),helperText:r.trim()?g("flows.signal.nameHelp"):g("flows.signal.required")}),(0,d.jsx)(p.A,{severity:"info",children:g("flows.signal.behavior")}),(0,d.jsx)(c0.A,{component:"button",type:"button",underline:"hover",onClick:()=>m(a=>!a),sx:{alignSelf:"flex-start"},children:l?g("flows.signal.hideAdvanced"):g("flows.signal.showAdvanced")}),(0,d.jsx)(o.A,{in:l,unmountOnExit:!0,children:(0,d.jsx)(u.A,{label:g("flows.signal.payload"),value:t,onChange:a=>n("payloadTemplate",a.target.value),fullWidth:!0,multiline:!0,minRows:3,placeholder:g("flows.signal.payloadPlaceholder"),helperText:g("flows.signal.payloadHelp")})})]})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:g("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{if(!b||!h)return;let a={...h.properties},c="string"==typeof a.topic?a.topic.trim():"";a.topic=c;let d=c||g("flows.signal.defaultName");f(b.id,{...h,label:d,properties:a})},variant:"contained",children:g("flows.modal.save")})]})]})};var c4=c(86471),c5=c(75764);let c6=(0,w.A)((0,d.jsx)("path",{d:"m20 12-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8z"}),"ArrowDownward"),c7=({open:a,node:b,onClose:c,onSave:f})=>{let{t:g}=(0,au.s9)(),[h,l]=(0,e.useState)(null);(0,e.useEffect)(()=>{b&&l({...b.data,properties:{...b.data.properties,entries:Array.isArray(b.data.properties?.entries)?[...b.data.properties.entries]:[]}})},[b,a]);let n=h?.properties?.entries??[],o=a=>l(b=>b?{...b,properties:{...b.properties,entries:a}}:b),r=(a,b)=>o(n.map((c,d)=>d===a?{...c,...b}:c)),t=(a,b)=>{let c=a+b;if(c<0||c>=n.length)return;let d=[...n];[d[a],d[c]]=[d[c],d[a]],o(d)},w=n.reduce((a,b,c)=>{if("toolCall"!==b.kind)return a;let d=(b.argumentsJson??"").trim();if(!d||/\$\{(?:var|res):[^}]*\}/.test(d))return a;try{JSON.parse(d)}catch{a.push(c)}return a},[]);return h?(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"md",fullWidth:!0,children:[(0,d.jsx)(bS.A,{title:g("flows.static.title"),onClose:c}),(0,d.jsx)(s.A,{children:(0,d.jsxs)(i.default,{display:"flex",flexDirection:"column",gap:2,mt:1,children:[(0,d.jsxs)(p.A,{severity:"info",children:[g("flows.static.info")," ",g("flows.static.substitutionNote")," ",(0,d.jsx)("a",{href:"https://github.com/mario-andreschak/FLUJO/blob/main/docs/features/flows/static-node.md",target:"_blank",rel:"noreferrer",children:g("flows.static.docsLink")})]}),(0,d.jsx)(u.A,{label:g("flows.static.name"),value:h.properties?.name??h.label??"",onChange:a=>l(b=>b?{...b,label:a.target.value,properties:{...b.properties,name:a.target.value}}:b),fullWidth:!0}),(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:h.properties?.injectOnce===!0,onChange:a=>l(b=>b?{...b,properties:{...b.properties,injectOnce:a.target.checked}}:b)}),label:g("flows.static.injectOnce")}),(0,d.jsx)(b_.A,{sx:{mt:-2},children:g("flows.static.injectOnce.help")}),0===n.length&&(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:g("flows.static.empty")}),n.map((a,b)=>(0,d.jsxs)(D.A,{variant:"outlined",sx:{p:2},children:[(0,d.jsxs)(i.default,{display:"flex",alignItems:"center",justifyContent:"space-between",mb:1,children:[(0,d.jsxs)(j.A,{variant:"subtitle2",children:[b+1,"."," ","toolCall"===a.kind?g("flows.static.toolCallEntry"):g("flows.static.messageEntry")]}),(0,d.jsxs)(i.default,{children:[(0,d.jsx)(m.A,{size:"small","aria-label":g("flows.static.moveUp"),onClick:()=>t(b,-1),disabled:0===b,children:(0,d.jsx)(c5.A,{fontSize:"small"})}),(0,d.jsx)(m.A,{size:"small","aria-label":g("flows.static.moveDown"),onClick:()=>t(b,1),disabled:b===n.length-1,children:(0,d.jsx)(c6,{fontSize:"small"})}),(0,d.jsx)(m.A,{size:"small","aria-label":g("flows.static.remove"),onClick:()=>o(n.filter((a,c)=>c!==b)),children:(0,d.jsx)(c4.A,{fontSize:"small"})})]})]}),"message"===a.kind?(0,d.jsxs)(i.default,{display:"flex",flexDirection:"column",gap:2,children:[(0,d.jsxs)(u.A,{select:!0,label:g("flows.static.role"),value:a.role,onChange:a=>r(b,{role:a.target.value}),sx:{maxWidth:220},children:[(0,d.jsx)(K.A,{value:"system",children:"system"}),(0,d.jsx)(K.A,{value:"user",children:"user"}),(0,d.jsx)(K.A,{value:"assistant",children:"assistant"})]}),(0,d.jsx)(u.A,{label:g("flows.static.content"),value:a.content,onChange:a=>r(b,{content:a.target.value}),fullWidth:!0,multiline:!0,rows:3})]}):(0,d.jsxs)(i.default,{display:"flex",flexDirection:"column",gap:2,children:[(0,d.jsx)(u.A,{label:g("flows.static.toolName"),value:a.toolName,onChange:a=>r(b,{toolName:a.target.value}),fullWidth:!0,error:!a.toolName?.trim()}),(0,d.jsx)(u.A,{label:g("flows.static.arguments"),value:a.argumentsJson,onChange:a=>r(b,{argumentsJson:a.target.value}),fullWidth:!0,multiline:!0,rows:3,error:w.includes(b),helperText:w.includes(b)?g("flows.static.invalidJson"):g("flows.static.argumentsHelp")}),(0,d.jsx)(u.A,{label:g("flows.static.result"),value:a.result,onChange:a=>r(b,{result:a.target.value}),fullWidth:!0,multiline:!0,rows:3})]})]},b)),(0,d.jsxs)(i.default,{display:"flex",gap:1,children:[(0,d.jsx)(k.A,{onClick:()=>o([...n,{kind:"message",role:"user",content:""}]),variant:"outlined",children:g("flows.static.addMessage")}),(0,d.jsx)(k.A,{onClick:()=>o([...n,{kind:"toolCall",toolName:"",argumentsJson:"{}",result:""}]),variant:"outlined",children:g("flows.static.addToolCall")})]})]})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:g("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{b&&h&&f(b.id,{...h,properties:{...h.properties,entries:n}})},variant:"contained",disabled:w.length>0,children:g("flows.modal.save")})]})]}):null};var c8=c(20217),c9=c(35051),da=c(17852),db=c(18377),dc=c(21190),dd=c(98248),de=c(96315),df=c(14712),dg=c(53358),dh=c(89722),di=c(18974),dj=c(84271),dk=c(10079),dl=c(95946);let dm=(0,M.h)("frontend/components/FlowBuilder/Modals/TriggerNodePropertiesModal"),dn={type:"schedule",cron:"0 9 * * *"},dp={type:"file-watch",path:"",events:["add","change"]},dq={type:"mcp-poll",serverName:"",toolName:"",args:{},cron:"*/5 * * * *",evaluate:{mode:"on-change"}},dr={type:"url-watch",url:"",cron:"*/15 * * * *"},ds={type:"flow-event",source:{flowId:""},on:["completed"]},dt=({open:a,node:b,flowId:c,onClose:f,onSave:g})=>{let{t:h}=(0,au.s9)(),[l,m]=(0,e.useState)(h("flows.trigger.defaultName")),[n,o]=(0,e.useState)(!0),[r,t]=(0,e.useState)(dn),[w,x]=(0,e.useState)("skip"),[y,z]=(0,e.useState)(""),[A,B]=(0,e.useState)(!1),[C,D]=(0,e.useState)(null),[E,F]=(0,e.useState)([]),[J,M]=(0,e.useState)(()=>crypto.randomUUID()),[N,O]=(0,e.useState)(!1);(0,e.useEffect)(()=>{if(!a||!b)return;D(null);let c=b.data.properties||{};m("string"==typeof c.name?c.name:h("flows.trigger.defaultName")),o(!1!==c.enabled),t(c.trigger||dn),x(c.overlapStrategy||"skip"),z("string"==typeof c.prompt?c.prompt:""),"string"==typeof c.executionId&&c.executionId?(M(c.executionId),O(!0)):(M(crypto.randomUUID()),O(!1))},[a,b,h]),(0,e.useEffect)(()=>{if(!a)return;let b=!1;return P.g.loadFlows().then(a=>{b||F(a||[])}).catch(()=>{b||F([])}),()=>{b=!0}},[a]);let Q=(0,e.useCallback)(async()=>{if(!b)return;B(!0),D(null);let a={name:l.trim()||h("flows.trigger.defaultName"),flowId:c,prompt:y,overlapStrategy:w,trigger:r,enabled:n};try{let c;if(!(c=N?await de.P.update(J,a):await de.P.create({...a,id:J})).success){D(c.error||h("flows.trigger.saveFailed")),B(!1);return}O(!0);let d=l.trim()||h("flows.trigger.defaultNode");g(b.id,{...b.data,label:d,type:"trigger",properties:{executionId:J,name:l,enabled:n,trigger:r,overlapStrategy:w,prompt:y}})}catch(a){D(a instanceof Error?a.message:h("flows.trigger.saveFailed")),B(!1);return}B(!1),dm.info(`TriggerNodePropertiesModal: Saved trigger node for executionId=${J}`)},[b,J,l,n,r,w,y,c,N,g,h]);return b?(0,d.jsx)(d.Fragment,{children:(0,d.jsxs)(q.A,{open:a,onClose:f,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"#E91E63",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,d.jsx)(bS.A,{title:h("flows.trigger.title"),onClose:f}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(s.A,{sx:{p:3},children:[(0,d.jsxs)(p.A,{severity:"info",sx:{mb:2},children:[h("flows.trigger.info"),!N&&(0,d.jsxs)(d.Fragment,{children:[" ",h("flows.trigger.createdOnSave")]})]}),(0,d.jsx)(u.A,{fullWidth:!0,label:h("flows.trigger.name"),value:l,onChange:a=>m(a.target.value),margin:"normal",placeholder:h("flows.trigger.namePlaceholder")}),(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:n,onChange:a=>o(a.target.checked),color:"primary"}),label:h("flows.trigger.enabled"),sx:{mt:1,mb:1}}),(0,d.jsx)(j.A,{variant:"subtitle1",sx:{mt:2,mb:1,fontWeight:600},children:h("flows.trigger.when")}),(0,d.jsxs)(i.default,{role:"radiogroup","aria-label":h("flows.trigger.typeAria"),sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,d.jsx)(df.A,{selected:"schedule"===r.type,onClick:()=>{"schedule"!==r.type&&t(dn)},icon:(0,d.jsx)(c8.A,{}),title:h("flows.trigger.schedule"),description:h("flows.trigger.scheduleHelp")}),(0,d.jsx)(df.A,{selected:"webhook"===r.type,onClick:()=>{"webhook"!==r.type&&t({type:"webhook",token:crypto.randomUUID()})},icon:(0,d.jsx)(c9.A,{}),title:h("flows.trigger.webhook"),description:h("flows.trigger.webhookHelp")}),(0,d.jsx)(df.A,{selected:"file-watch"===r.type,onClick:()=>{"file-watch"!==r.type&&t(dp)},icon:(0,d.jsx)(da.A,{}),title:h("flows.trigger.files"),description:h("flows.trigger.filesHelp")}),(0,d.jsx)(df.A,{selected:"mcp-poll"===r.type,onClick:()=>{"mcp-poll"!==r.type&&t(dq)},icon:(0,d.jsx)(db.A,{}),title:h("flows.trigger.tool"),description:h("flows.trigger.toolHelp")}),(0,d.jsx)(df.A,{selected:"url-watch"===r.type,onClick:()=>{"url-watch"!==r.type&&t(dr)},icon:(0,d.jsx)(dc.A,{}),title:h("flows.trigger.url"),description:h("flows.trigger.urlHelp")}),(0,d.jsx)(df.A,{selected:"flow-event"===r.type,onClick:()=>{"flow-event"!==r.type&&t(ds)},icon:(0,d.jsx)(dd.A,{}),title:h("flows.trigger.flow"),description:h("flows.trigger.flowHelp")})]}),"schedule"===r.type&&(0,d.jsx)(dg.A,{cron:r.cron,timezone:r.timezone,onChange:({cron:a,timezone:b})=>t({...r,cron:a,timezone:b}),catchUp:!0===r.catchUp,onCatchUpChange:a=>t({...r,catchUp:a})}),"webhook"===r.type&&(0,d.jsx)(dh.A,{config:r,onChange:t,executionId:J,saved:N}),"file-watch"===r.type&&(0,d.jsx)(di.A,{config:r,onChange:t}),"mcp-poll"===r.type&&(0,d.jsx)(dj.A,{config:r,onChange:t}),"url-watch"===r.type&&(0,d.jsx)(dk.A,{config:r,onChange:t}),"flow-event"===r.type&&(0,d.jsx)(dl.A,{config:r,onChange:t,flows:E,currentExecutionId:J}),(0,d.jsxs)(bB.A,{fullWidth:!0,margin:"normal",children:[(0,d.jsx)(bC.A,{id:"overlap-strategy-label",children:h("flows.trigger.overlap")}),(0,d.jsxs)(bD.A,{labelId:"overlap-strategy-label",label:h("flows.trigger.overlap"),value:w,onChange:a=>x(a.target.value),children:[(0,d.jsx)(K.A,{value:"skip",children:h("flows.trigger.overlapSkip")}),(0,d.jsx)(K.A,{value:"queue",children:h("flows.trigger.overlapQueue")}),(0,d.jsx)(K.A,{value:"parallel",children:h("flows.trigger.overlapParallel")}),(0,d.jsx)(K.A,{value:"error",children:h("flows.trigger.overlapError")})]})]}),(0,d.jsx)(u.A,{fullWidth:!0,label:h("flows.trigger.prompt"),value:y,onChange:a=>z(a.target.value),margin:"normal",multiline:!0,minRows:2,placeholder:h("flows.trigger.promptPlaceholder"),helperText:h("flows.trigger.promptHelp")}),C&&(0,d.jsx)(p.A,{severity:"error",sx:{mt:2},children:C})]}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:f,disabled:A,children:h("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:Q,variant:"contained",disabled:A,startIcon:A?(0,d.jsx)(G.default,{size:16}):void 0,sx:{backgroundColor:"#E91E63","&:hover":{backgroundColor:"#C2185B"}},children:A?h("flows.builder.saving"):h("flows.modal.save")})]})]})}):null};var du=c(4372),dv=c(54633);let dw=({flow:a,autoLayout:b=!1,fitViewOnChange:c=!1})=>{let f=(0,h.A)(),g=(0,e.useRef)(null),i=(0,e.useMemo)(()=>(a.edges||[]).filter(a=>a.source&&a.target&&a.sourceHandle&&a.targetHandle),[a.edges]),j=(0,e.useMemo)(()=>b?ac(a.nodes||[],i):a.nodes||[],[b,i,a.nodes]);(0,e.useEffect)(()=>{if(!c||!g.current)return;let a=window.setTimeout(()=>{g.current?.fitView({padding:.18,duration:260})},40);return()=>window.clearTimeout(a)},[c,j]);let k=(0,e.useMemo)(()=>({type:"custom",animated:!1,style:{stroke:f.palette.text.secondary,strokeWidth:2},markerEnd:{type:dv.TG.ArrowClosed,width:20,height:20,color:f.palette.text.secondary}}),[f.palette.text.secondary]);return(0,d.jsx)(N.Gc,{nodes:j,edges:i,nodeTypes:ag.c_,edgeTypes:ag.nd,defaultEdgeOptions:k,connectionLineType:dv.Do.SmoothStep,onInit:a=>{g.current=a},fitView:!0,minZoom:.1,maxZoom:2,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,deleteKeyCode:null,proOptions:{hideAttribution:!0},children:(0,d.jsx)(N.VS,{})})},dx=a=>(0,d.jsx)(N.Ln,{children:(0,d.jsx)(dw,{...a})}),dy=(0,M.h)("components/flow/FlowBuilder/Modals/FlowVersionHistoryDialog"),dz=({open:a,flowId:b,onClose:c,onRestore:g})=>{let{t:h,tp:l,formatDate:m}=(0,au.s9)(),[n,o]=(0,e.useState)(!1),[p,r]=(0,e.useState)([]),[t,u]=(0,e.useState)(null),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(null);(0,e.useEffect)(()=>{if(!a||!b)return;let c=!1;return o(!0),r([]),u(null),z(null),P.g.listFlowVersions(b).then(a=>{c||r(a)}).finally(()=>{c||o(!1)}),()=>{c=!0}},[a,b]);let A=(0,e.useCallback)(a=>{b&&(u(a),x(!0),z(null),P.g.getFlowVersion(b,a).then(b=>{b?z(b.flow):dy.warn(`Version ${a} could not be loaded (pruned?)`)}).finally(()=>x(!1)))},[b]),B=(0,e.useCallback)(()=>{y&&g(y)},[y,g]);return(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"lg",fullWidth:!0,children:[(0,d.jsx)(bS.A,{title:h("flows.history.title"),onClose:c}),(0,d.jsx)(s.A,{dividers:!0,sx:{p:0},children:(0,d.jsxs)(i.default,{sx:{display:"flex",height:"65vh"},children:[(0,d.jsx)(i.default,{sx:{width:300,borderRight:1,borderColor:"divider",overflowY:"auto"},children:n?(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,d.jsx)(G.default,{size:28})}):0===p.length?(0,d.jsx)(i.default,{sx:{p:3},children:(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:h("flows.history.empty")})}):(0,d.jsx)(aF.A,{disablePadding:!0,children:p.map((a,b)=>(0,d.jsxs)(f().Fragment,{children:[(0,d.jsx)(aI.A,{selected:a.versionId===t,onClick:()=>A(a.versionId),children:(0,d.jsx)(aH.A,{primary:(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(j.A,{variant:"body2",children:m(a.savedAt,{dateStyle:"medium",timeStyle:"short"})}),0===b&&(0,d.jsx)(F.A,{label:h("flows.history.mostRecent"),size:"small"})]}),secondary:`${l("flows.history.node",a.nodeCount)} \xb7 ${l("flows.history.edge",a.edgeCount)}`})}),(0,d.jsx)(L.A,{component:"li"})]},a.versionId))})}),(0,d.jsx)(i.default,{sx:{flex:1,position:"relative",minWidth:0},children:w?(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,d.jsx)(G.default,{size:32})}):y?(0,d.jsx)(dx,{flow:y}):(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",p:4},children:(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",align:"center",children:0===p.length?h("flows.history.afterSave"):h("flows.history.select")})})})]})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:h("common.close")}),(0,d.jsx)(k.A,{variant:"contained",color:"primary",startIcon:(0,d.jsx)(du.A,{}),onClick:B,disabled:!y,children:h("flows.history.restore")})]})]})},dA=(a,b,c,d)=>a?a(b,d):c,dB=(a,b,c,d)=>a?a(b,c):d,dC=a=>a.data?.bidirectional===!0,dD=a=>!(0,T.BY)(a),dE=a=>String(a?.type??a?.data?.type??""),dF=a=>String(a?.data?.label??a?.id??"Unknown node");function dG(a,b,c,d,e,f){return f?{...f,id:a,source:b,target:c,sourceHandle:d,targetHandle:e,data:{...f.data??{},edgeType:"standard",bidirectional:!1},markerStart:void 0}:{id:a,source:b,target:c,sourceHandle:d,targetHandle:e,type:"custom",animated:!0,data:{edgeType:"standard"}}}function dH({open:a,processNodeId:b,parentFlow:c,existingFlowNames:f,onClose:g,onAccept:h}){let{t:l,tp:m,formatList:n}=(0,au.s9)(),[o,r]=(0,e.useState)(""),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(null),C=()=>{b&&(B(null),x(function({parentFlow:a,processNodeId:b,subflowName:c,existingFlowNames:d=[],createId:e=O.A,t:f,tp:g}){let h=[],i=[],j=a.nodes??[],k=a.edges??[],l=new Map(j.map(a=>[a.id,a])),m=l.get(b),n=c.trim();m&&"process"===dE(m)||h.push({code:"target-not-process",message:dA(f,"flows.convert.error.target","The selected node no longer exists or is not a Process node."),nodeId:b}),n?/^[\w-]+$/.test(n)?d.some(a=>a.toLowerCase()===n.toLowerCase())&&h.push({code:"duplicate-name",message:dA(f,"flows.convert.error.duplicateName",`A flow named "${n}" already exists.`,{name:n})}):h.push({code:"invalid-name",message:dA(f,"flows.convert.error.invalidName","The subflow name may contain only letters, numbers, underscores, and dashes.")}):h.push({code:"name-required",message:dA(f,"flows.convert.error.nameRequired","Enter a name for the new subflow.")});let o=new Set;m&&o.add(m.id);let p=m?[m.id]:[];for(;p.length>0;){let a=p.shift();for(let b of k){if(!dD(b))continue;let c=[];for(let d of(b.source===a&&c.push(b.target),dC(b)&&b.target===a&&c.push(b.source),c)){if(o.has(d))continue;let a=l.get(d);if(!a){h.push({code:"missing-edge-node",message:dA(f,"flows.convert.error.missingEdgeNode",`Edge "${b.id}" points to a missing node. Repair the flow before converting.`,{edge:b.id}),edgeId:b.id});continue}let c=dE(a);"signal"===c?(o.add(d),p.push(d)):("mcp"===c||"resource"===c)&&h.push({code:"attachment-on-control-edge",message:dA(f,"flows.convert.error.attachmentControl",`${dF(a)} is connected as control flow. Reconnect it with its ${c.toUpperCase()} attachment handles before converting.`,{node:dF(a),type:c.toUpperCase()}),nodeId:d,edgeId:b.id})}}}let q=!0;for(;q;)for(let a of(q=!1,k)){if(!(0,T.BY)(a))continue;let b=o.has(a.source);if(b===o.has(a.target))continue;let c=b?a.target:a.source,d=dE(l.get(c));"mcp"===d||"resource"===d?(o.add(c),q=!0):h.push({code:"unsupported-attachment",message:dA(f,"flows.convert.error.unsupportedAttachment",`Attachment edge "${a.id}" does not connect to an MCP or Resource node.`,{edge:a.id}),edgeId:a.id,nodeId:c})}let r=k.filter(a=>o.has(a.source)&&o.has(a.target)),s=[],t=[],u=new Set;for(let a of k){let b=o.has(a.source);if(b===o.has(a.target))continue;if((0,T.BY)(a)){h.push({code:"shared-attachment",message:dA(f,"flows.convert.error.sharedAttachment",`Attachment "${a.id}" is also used outside the converted region. Duplicate or disconnect that attachment first.`,{edge:a.id}),edgeId:a.id});continue}let c=b?a.source:a.target,d=b?a.target:a.source,e={edge:a,edgeId:a.id,insideNodeId:c,outsideNodeId:d,outsideLabel:dF(l.get(d))};u.add(d),b?t.push(e):s.push(e),dC(a)&&((b?s:t).push(e),h.push({code:"bidirectional-boundary",message:dA(f,"flows.convert.error.bidirectional",`Boundary edge "${a.id}" is bidirectional. Make it one-way before converting; internal bidirectional edges are preserved.`,{edge:a.id}),edgeId:a.id}))}let v=[...new Map(t.map(a=>[a.edgeId,a])).values()];v.length>1&&h.push({code:"multiple-outputs",message:dB(g,"flows.convert.error.outputs",v.length,`This region has ${v.length} distinct parent exits. A Subflow supports one outgoing control path; join the branches before converting.`)});let w=j.filter(a=>o.has(a.id)),x={includedNodes:w.map(a=>({id:a.id,label:dF(a),type:dE(a)})),attachmentCount:w.filter(a=>"mcp"===dE(a)||"resource"===dE(a)).length,signalCount:w.filter(a=>"signal"===dE(a)).length,internalEdgeCount:r.length,inputCount:new Set(s.map(a=>a.edgeId)).size,outputCount:v.length,excludedBoundaryNodes:[...u].map(a=>{let b=l.get(a);return{id:a,label:dF(b),type:dE(b)}}),rewires:[dB(g,"flows.convert.rewire.inputs",new Set(s.map(a=>a.edgeId)).size,`${new Set(s.map(a=>a.edgeId)).size} parent input edge(s) will target the new Subflow node.`),1===v.length?dA(f,"flows.convert.rewire.output",`The parent output to ${v[0].outsideLabel} will leave the new Subflow node.`,{node:v[0].outsideLabel}):dA(f,"flows.convert.rewire.noOutput","The new Subflow node will have no parent output."),dA(f,"flows.convert.rewire.childInput","The child Start node will provide an isolated input to the converted Process.")],warnings:i};0===v.length&&i.push(dA(f,"flows.convert.warning.noFollowup","No parent follow-up exists; the extracted fan-out will finish inside the child flow."));let y=s.map(({edge:a,...b})=>b),z=t.map(({edge:a,...b})=>b),A={valid:0===h.length,errors:h,selectedNodeIds:[...o],selectedEdgeIds:r.map(a=>a.id),boundaryInputs:y,boundaryOutputs:z,preview:x};if(h.length>0||!m)return A;let B=e(),C=e(),D=e(),E=()=>`conversion-${e()}`,F=w.filter(a=>{let b=dE(a);return"process"===b||"signal"===b}),G=Math.min(...w.map(a=>a.position.y),m.position.y),H=Math.max(...w.map(a=>a.position.y),m.position.y),I={id:C,type:"start",position:{x:m.position.x,y:G-180},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}},J={id:D,type:"finish",position:{x:m.position.x,y:H+180},data:{label:"Finish Node",type:"finish",properties:{}}},K=[...r.map(a=>({...a,data:a.data?{...a.data}:a.data})),dG(E(),C,m.id,"start-bottom","process-top")];if(1===v.length){let a=v[0];K.push(dG(E(),a.insideNodeId,D,"signal"===dE(l.get(a.insideNodeId))?"signal-bottom":"process-bottom","finish-top",a.edge))}else{let a=F.filter(a=>!k.some(b=>!!dD(b)&&(!!(b.source===a.id&&o.has(b.target))||dC(b)&&b.target===a.id&&o.has(b.source)))),b=a.length>0?a:[m];for(let a of(b.length>1&&i.push(dB(g,"flows.convert.warning.branches",b.length,`${b.length} internal branches will converge on the child Finish node.`)),b))K.push(dG(E(),a.id,D,"signal"===dE(a)?"signal-bottom":"process-bottom","finish-top"))}let L={id:B,name:n,description:`Converted from ${dF(m)} in ${a.name}`,nodes:[I,...w,J],edges:K},M={...m,type:"subflow",selected:!1,data:{label:n,type:"subflow",description:`Runs the ${n} subflow`,properties:{subflowId:B,inputMode:"isolated",outputMode:"final-only",allowCallerPrompt:!0}}},N=j.filter(a=>!o.has(a.id));N.push(M);let P=k.flatMap(a=>{let b=o.has(a.source),c=o.has(a.target);return b&&c?[]:b||c?(0,T.BY)(a)?[]:[{...a,source:b?M.id:a.source,target:c?M.id:a.target,sourceHandle:b?"subflow-bottom":a.sourceHandle,targetHandle:c?"subflow-top":a.targetHandle,data:a.data?{...a.data}:a.data}]:[a]}),Q={...a,nodes:N,edges:P};return{...A,valid:!0,childFlow:L,parentFlow:Q}}({parentFlow:c,processNodeId:b,subflowName:o,existingFlowNames:f,t:l,tp:m})))},D=async()=>{if(w?.valid&&w.childFlow&&w.parentFlow){z(!0),B(null);try{await h(w),g()}catch(a){B(a instanceof Error?a.message:l("flows.convert.saveFailed"))}finally{z(!1)}}};return(0,d.jsxs)(q.A,{open:a,onClose:y?void 0:g,fullWidth:!0,maxWidth:"md",children:[(0,d.jsx)(bS.A,{title:w?l("flows.convert.previewTitle"):l("flows.convert.title"),onClose:y?()=>{}:g}),(0,d.jsx)(s.A,{children:w?(0,d.jsxs)(bb.A,{spacing:2,children:[w.errors.length>0&&(0,d.jsxs)(p.A,{severity:"error",children:[(0,d.jsx)(j.A,{fontWeight:600,children:l("flows.convert.invalid")}),(0,d.jsx)(aF.A,{dense:!0,disablePadding:!0,children:w.errors.map((a,b)=>(0,d.jsx)(aJ.Ay,{disableGutters:!0,children:(0,d.jsx)(aH.A,{primary:a.message})},`${a.code}-${b}`))})]}),A&&(0,d.jsx)(p.A,{severity:"error",children:A}),w.preview.warnings.map((a,b)=>(0,d.jsx)(p.A,{severity:"warning",children:a},`${a}-${b}`)),(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"subtitle1",fontWeight:600,children:l("flows.convert.included",{name:o.trim()})}),(0,d.jsx)(bb.A,{direction:"row",gap:1,flexWrap:"wrap",sx:{mt:1},children:w.preview.includedNodes.map(a=>(0,d.jsx)(F.A,{label:`${a.label} \xb7 ${a.type}`,size:"small"},a.id))}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:1},children:l("flows.convert.summary",{attachments:m("flows.convert.attachment",w.preview.attachmentCount),signals:m("flows.convert.signal",w.preview.signalCount),edges:m("flows.convert.edge",w.preview.internalEdgeCount)})})]}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"subtitle1",fontWeight:600,children:l("flows.convert.boundary")}),(0,d.jsx)(aF.A,{dense:!0,children:w.preview.rewires.map(a=>(0,d.jsx)(aJ.Ay,{disableGutters:!0,children:(0,d.jsx)(aH.A,{primary:a})},a))}),w.preview.excludedBoundaryNodes.length>0&&(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:l("flows.convert.keptParent",{nodes:n(w.preview.excludedBoundaryNodes.map(a=>`${a.label} (${a.type})`))})})]}),(0,d.jsx)(p.A,{severity:"info",children:l("flows.convert.atomic")})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(t.A,{sx:{mb:2},children:l("flows.convert.help")}),(0,d.jsx)(u.A,{autoFocus:!0,fullWidth:!0,label:l("flows.convert.name"),value:o,onChange:a=>r(a.target.value),onKeyDown:a=>{"Enter"===a.key&&C()}})]})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:g,disabled:y,children:w?l("flows.convert.reject"):l("flows.modal.cancel")}),w?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.A,{onClick:()=>{x(null),B(null)},disabled:y,children:l("flows.convert.back")}),(0,d.jsx)(k.A,{variant:"contained",onClick:D,disabled:!w.valid||y,children:y?l("flows.convert.converting"):l("flows.convert.accept")})]}):(0,d.jsx)(k.A,{variant:"contained",onClick:C,children:l("flows.convert.preview")})]})]})}let dI=(0,w.A)((0,d.jsx)("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3m3-10H5V5h10z"}),"Save"),dJ=(0,w.A)((0,d.jsx)("path",{d:"M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8"}),"Undo"),dK=(0,w.A)((0,d.jsx)("path",{d:"M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7.22L3.9 16c1.05-3.19 4.05-5.5 7.6-5.5 1.95 0 3.73.72 5.12 1.88L13 16h9V7z"}),"Redo"),dL=(0,w.A)((0,d.jsx)("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"MoreHoriz");var dM=c(60389),dN=c(26272);let dO=(0,M.h)("frontend/components/Flow/FlowManager/ImproveFlowDialog"),dP=({open:a,onClose:b,currentFlow:c,onImproved:f,initialDescription:g})=>{let{t:h}=(0,au.s9)(),[j,l]=(0,e.useState)(""),[m,n]=(0,e.useState)([]),[o,r]=(0,e.useState)(""),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(null);(0,e.useEffect)(()=>{a&&l(g??"")},[a,g]),(0,e.useEffect)(()=>{if(!a)return;let b=!1;return R.N.loadModels().then(a=>{b||(n(a),r(b=>a.some(a=>a.id===b)?b:a[0]?.id??""))}).catch(a=>{dO.warn("Failed to load models for the improve dialog",a),b||B(h("flows.generator.modelsFailed"))}),()=>{b=!0}},[a,h]);let C=(0,e.useCallback)(()=>{y||(B(null),b())},[y,b]),D=(0,e.useCallback)(async()=>{B(null),z(!0);try{let a={...c,nodes:[...c.nodes],edges:[...c.edges]},b=await P.g.improveFlow(a,j.trim(),o,{allowInstall:w});if(!b.success)return void B(b.error);dO.info("Flow improved",{flowId:b.flow.id,attempts:b.attempts,errors:b.validation.errorCount,warnings:b.validation.warningCount,installedServers:b.installedServers.length}),l(""),f({flow:b.flow,errorCount:b.validation.errorCount,warningCount:b.validation.warningCount,attempts:b.attempts,installedServers:b.installedServers})}finally{z(!1)}},[c,j,o,w,f]),E=!y&&j.trim().length>0&&!!o;return(0,d.jsxs)(q.A,{open:a,onClose:C,maxWidth:"sm",fullWidth:!0,children:[(0,d.jsx)(bS.A,{title:h("flows.improve.title"),onClose:C}),(0,d.jsxs)(s.A,{children:[(0,d.jsx)(t.A,{sx:{mb:2},children:h("flows.improve.description")}),A&&(0,d.jsx)(p.A,{severity:"error",sx:{mb:2},onClose:()=>B(null),children:A}),(0,d.jsx)(u.A,{autoFocus:!0,fullWidth:!0,multiline:!0,minRows:4,label:h("flows.improve.change"),placeholder:h("flows.improve.placeholder"),value:j,onChange:a=>l(a.target.value),disabled:y,sx:{mb:2}}),(0,d.jsxs)(bB.A,{fullWidth:!0,disabled:y||0===m.length,children:[(0,d.jsx)(bC.A,{id:"improve-flow-model-label",children:h("flows.improve.model")}),(0,d.jsx)(bD.A,{labelId:"improve-flow-model-label",label:h("flows.improve.model"),value:o,onChange:a=>r(a.target.value),children:m.map(a=>(0,d.jsx)(K.A,{value:a.id,children:a.displayName?.trim()||a.name},a.id))})]}),(0,d.jsx)(H.A,{sx:{mt:2},control:(0,d.jsx)(bK.A,{checked:w,onChange:a=>x(a.target.checked),disabled:y}),label:h("flows.improve.allowInstall")}),w&&(0,d.jsx)(p.A,{severity:"warning",sx:{mt:1},children:h("flows.improve.installWarning")}),y&&(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1.5,mt:2},children:[(0,d.jsx)(G.default,{size:20}),(0,d.jsx)(t.A,{children:w?h("flows.improve.workingInstall"):h("flows.improve.working")})]})]}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:C,disabled:y,children:h("flows.improve.cancel")}),(0,d.jsx)(k.A,{onClick:D,variant:"contained",color:"primary",startIcon:(0,d.jsx)(dN.A,{}),disabled:!E,children:h("flows.improve.action")})]})]})};var dQ=c(78685);let dR=a=>({source:`${a}-bottom`,target:`${a}-top`});function dS(a){return a.data?.type??a.type??"unknown"}let dT=(0,w.A)((0,d.jsx)("path",{d:"M13 2H4c-1.1 0-2 .9-2 2v9c0 .55.45 1 1 1s1-.45 1-1V4h9c.55 0 1-.45 1-1s-.45-1-1-1m4 4H8c-1.1 0-2 .9-2 2v9c0 .55.45 1 1 1s1-.45 1-1V8h9c.55 0 1-.45 1-1s-.45-1-1-1m3 4h-8c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2"}),"AutoAwesomeMotionRounded");var dU=c(61749);let dV=(0,w.A)((0,d.jsx)("path",{d:"M24 15c0-2.64-2.05-4.78-4.65-4.96C18.67 6.59 15.64 4 12 4c-1.33 0-2.57.36-3.65.97l1.49 1.49C10.51 6.17 11.23 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3 0 .99-.48 1.85-1.21 2.4l1.41 1.41c1.09-.92 1.8-2.27 1.8-3.81M3.71 4.56c-.39.39-.39 1.02 0 1.41l2.06 2.06h-.42c-3.28.35-5.76 3.34-5.29 6.79C.46 17.84 3.19 20 6.22 20h11.51l1.29 1.29c.39.39 1.02.39 1.41 0s.39-1.02 0-1.41L5.12 4.56a.996.996 0 0 0-1.41 0M6 18c-2.21 0-4-1.79-4-4s1.79-4 4-4h1.73l8 8z"}),"CloudOffRounded");var dW=c(53027);function dX(a,b){let c=new Map(a.map(a=>[a.id,a])),d=[];for(let a of b){if(a.data?.bidirectional!==!0)continue;let b=c.get(a.source),e=c.get(a.target);b&&e&&("process"===b.data.type&&"subflow"===e.data.type?d.push({processNodeId:b.id,subflowNodeId:e.id}):"subflow"===b.data.type&&"process"===e.data.type&&d.push({processNodeId:e.id,subflowNodeId:b.id}))}return d}let dY=new Set(["maxTurns","excludeModelPrompt","excludeStartNodePrompt","excludeSystemPrompt","allowedTools","isolatedPrompt","allowCallerPrompt","enableTodoTool","captureVariable","captureResource","captureKv","resourceNodes"]),dZ=new Set(["parallelSubflowIds","parallelSubflowIdsVar","mapOverList","itemSplit","sequential","allowCallerFanout","spawnBriefs","concurrencyLimit","joinSeparator","errorStrategy","resultPresentation","allowCallerPrompt","saveConversation","captureVariable","captureResource","captureKv"]);function d$(a){if(void 0!==a.permissionRules)return!0;let b=new Map((a.nodes??[]).map(a=>[a.id,a])),c=new Set(dX(a.nodes??[],a.edges??[]).filter(a=>{let c,d=b.get(a.subflowNodeId);return!!d&&(c=d.data.properties??{},"subflow"===d.data.type&&"isolated"===c.inputMode&&"final-only"===c.outputMode)}).map(a=>`${a.processNodeId}\u0000${a.subflowNodeId}`)),d=new Set([...c].map(a=>a.split("\0")[1]));for(let b of a.nodes??[]){if(!["start","process","finish","subflow","mcp"].includes(b.type??""))return!0;let a=b.data?.properties??{},c=Object.keys(a);if("process"===b.type&&c.some(a=>dY.has(a))||"subflow"===b.type&&c.some(a=>dZ.has(a))||"process"===b.type&&(void 0!==a.inputMode&&"full-history"!==a.inputMode||void 0!==a.outputMode&&"latest-message"!==a.outputMode)||"subflow"===b.type&&(void 0!==a.inputMode&&a.inputMode!==(d.has(b.id)?"isolated":"full-history")||void 0!==a.outputMode&&"final-only"!==a.outputMode))return!0}return(a.edges??[]).some(a=>{let b=a.data;if(b?.bidirectional===!0){let b=`${a.source}\u0000${a.target}`,d=`${a.target}\u0000${a.source}`;if(!c.has(b)&&!c.has(d))return!0}return!!b?.condition||b?.edgeType==="resource"})}var d_=c(99434);let d0=/(?:\r?\n){2,}(?:#{1,6}\s*)?handoff conditions\s*:/i;function d1(a,b){let c=new Map(a.nodes.map(a=>[a.id,a])),d=[],e=new Set;for(let f of a.edges){let a,g;if(function(a){let b=a.data?.edgeType;return"mcpEdge"===a.type||"mcp"===b||"resource"===b||!!b?.includes("mcp")}(f))continue;let h=f.data;f.source===b?(a=f.target,g=h?.condition):f.target===b&&h?.bidirectional===!0&&(a=f.source),!(!a||e.has(a))&&c.has(a)&&(e.add(a),d.push({id:a,edgeCondition:g}))}let f=(0,ad.E9)(d.map(({id:a})=>{let b=c.get(a);return{id:a,label:b.data.label,type:b.type||b.data.type}}));return d.map(({id:a,edgeCondition:b})=>{let d=c.get(a);return{targetId:a,toolName:f.get(a)||`handoff_to_${a}`,targetLabel:d.data.label||d.data.type||"next step",targetType:d.data.type||d.type||"node",...b?{edgeCondition:b}:{}}})}function d2(a){var b;let c,d=d1(a.previous,a.nodeId),e=d1(a.next,a.nodeId),f=(b=a.prompt,(c=d0.exec(b))?{base:b.slice(0,c.index).trim(),section:b.slice(c.index+c[0].length).trim(),found:!0}:{base:b.trim(),section:"",found:!1}),g=function(a,b){let c=new Map(b.map(a=>[a.toolName,a.targetId])),d=new Map;for(let b of a.split(/\r?\n/)){let a=(0,ae.A$)(b).find(a=>"tool"===a.kind&&"handoff"===a.server);if(!a)continue;let e=c.get(a.name);if(!e)continue;let f=b.slice(0,a.index),g=/^\s*-\s*(.*?),\s*hand off to\s*$/i.exec(f);g?.[1]?.trim()&&d.set(e,g[1].trim())}return d}(f.section,d),h=new Map(d.map(a=>[a.targetId,a])),i=new Map(e.map(a=>[a.targetId,a])),j=d.filter(a=>!i.has(a.targetId)),k=e.filter(a=>!h.has(a.targetId)),l=1===j.length&&1===k.length?new Map([[k[0].targetId,j[0].targetId]]):new Map,m=new Map;for(let a of e){let b=h.get(a.targetId);b&&m.set(b.toolName,a.toolName)}1===j.length&&1===k.length&&m.set(j[0].toolName,k[0].toolName);let n=(function(a,b){let c=(0,ae.A$)(a).filter(a=>"tool"===a.kind&&"handoff"===a.server).sort((a,b)=>b.index-a.index),d=a;for(let a of c){let c=b.get(a.name);c&&c!==a.name&&(d=`${d.slice(0,a.index)}${(0,ae.X8)("tool","handoff",c)}${d.slice(a.index+a.fullMatch.length)}`)}return d})(f.base,m).trim();if(0===e.length)return n;let o=new Set((0,ae.A$)(n).filter(a=>"tool"===a.kind&&"handoff"===a.server).map(a=>a.name)),p=e.filter(a=>f.found||!o.has(a.toolName)).map(a=>{let b=l.get(a.targetId),c=g.get(a.targetId)??(b?g.get(b):void 0)??function(a){let b=a.edgeCondition;if(!b||"always"===b.kind)return"finish"===a.targetType?"When this step is complete":`When the workflow should continue to ${a.targetLabel}`;let c="string"==typeof b.value?b.value:"",d="last-message"===b.target?"latest message":"result";return"contains"===b.kind?b.negate?`If the ${d} does not contain "${c}"`:`If the ${d} contains "${c}"`:"equals"===b.kind?b.negate?`If the ${d} does not equal "${c}"`:`If the ${d} equals "${c}"`:b.negate?`If the ${d} does not match /${c}/`:`If the ${d} matches /${c}/`}(a);return`- ${c}, hand off to ${(0,ae.X8)("tool","handoff",a.toolName)}.`});return 0===p.length?n:`${n}${n?"\n\n":""}Handoff conditions:
6
+ ${bY(d,f)}`}(function(a){let b=a.type||a.data.type||"unknown",c=a.data.label||"Unknown Node",d=a.data.description,e=a.data.properties||{},f={label:c,type:b,userDescription:d};if(d&&d.trim())return f;if("subflow"===b)return f.subflowDetailsUnavailable=!0,f;"string"==typeof e.boundModel&&e.boundModel&&(f.modelName=e.boundModel),"string"==typeof e.promptTemplate&&e.promptTemplate.trim()&&(f.promptSummary=e.promptTemplate);let g=Array.isArray(e.mcpNodes)?e.mcpNodes:[],h=[],i=new Set;for(let a of g){let b=a?.properties?.boundServer;if(!b||i.has(b))continue;i.add(b);let c=Array.isArray(a?.properties?.enabledTools)?a.properties.enabledTools:[];h.push({name:b,connected:!0,tools:c})}return h.length>0&&(f.servers=h),f}(a)),inputSchema:{type:"object",properties:{},required:[]}}));g(c),bZ.debug("Generated handoff tools",{toolsCount:c.length})}catch(a){bZ.error("Error generating handoff tools",a),g([])}finally{i(!1)}}else g([])},[a,b,j,c,d]),{handoffTools:f,isLoadingHandoffTools:h}})(a,b,l,m),a_=a$?.handoffTools||[],a0=a$?.isLoadingHandoffTools||!1;(0,e.useEffect)(()=>{a&&b&&cx.debug("Handoff tools:",{count:a_.length,tools:a_.map(a=>a.name)})},[a,b,a_]),(0,e.useEffect)(()=>{var c;if(!a)return;if(b){C(b.data.properties?.promptTemplate||""),b.data.properties?.boundModel?F(!0):F(!1),J(b.data.properties?.excludeModelPrompt||!1),M(b.data.properties?.excludeStartNodePrompt||!1),O(b.data.properties?.excludeSystemPrompt||!1),S(b.data.properties?.inputMode||"full-history"),U(b.data.properties?.isolatedPrompt||""),W(b.data.properties?.allowCallerPrompt!==!1),Y(b.data.properties?.outputMode||"full-conversation"),$(b.data.properties?.enableTodoTool||!1),aa(b.data.properties?.captureVariable||""),ac(b.data.properties?.captureResource||"");let a=aU(b.data.properties?.captureKv||"");ag(a.scope),ai(a.key||"")}let d="create"===r?"basic":"guided"===p?(c=b?.data.properties?.promptTemplate,"guided"===p&&"string"==typeof c&&c.trim().length>0?"task":"basic"):"task";am(d),ak("server"),aD.current=!0;let e=window.requestAnimationFrame(()=>{let a=aC[d].current;a&&"function"==typeof a.scrollIntoView?a.scrollIntoView({behavior:"auto",block:"start"}):as.current&&(as.current.scrollTop=a?.offsetTop??0),aD.current=!1});return()=>{window.cancelAnimationFrame(e),aD.current=!1}},[b,a,r,p]),(0,e.useEffect)(()=>{if(!a)return;let b=as.current;if(!b)return;let c=new IntersectionObserver(a=>{if(aD.current)return;let b=a.filter(a=>a.isIntersecting).sort((a,b)=>b.intersectionRatio-a.intersectionRatio),c=b[0]?.target?.dataset.section;c&&am(c)},{root:b,threshold:[.15,.4,.75],rootMargin:"0px 0px -45% 0px"});return Object.values(aC).forEach(a=>{a.current&&c.observe(a.current)}),()=>c.disconnect()},[a,b]);let a1=(0,e.useRef)(null),a2=(a,b,c="server")=>{if(cx.debug("handleInsertToolBinding called with:",JSON.stringify({serverName:a,toolName:b})),!a||!b)return void cx.warn("Invalid parameters for handleInsertToolBinding:",{serverName:a,toolName:b});let d=(aN[a]||[]).find(a=>a.name===b);d?.description;let e="handoff"===c?(0,ae.X8)("tool","handoff",b):(0,ae.X8)("tool",a,b),f=(!(B.length>0)||B.endsWith(" ")||B.endsWith("\n")?"":" ")+e;a1.current?(cx.debug("Inserting text into PromptBuilder:",JSON.stringify({textToInsert:f})),a1.current.insertText(f),cx.debug("Tool binding inserted successfully")):cx.warn("promptBuilderRef.current is null, cannot insert text")};if(!b||!y)return null;let a3=[{key:"maxTurns",label:t?t("flows.nodeProperties.maxTurns"):"Maximum turns (override)",type:"number",min:1,helperText:t?t("flows.nodeProperties.maxTurnsHelp"):"Optional. Replaces the bound model's maximum turns for this node. Leave empty to inherit the model setting (default: 255)."},{key:"maxTokens",label:t?t("flows.nodeProperties.maxTokens"):"Maximum output tokens (override)",type:"number",min:1,helperText:t?t("flows.nodeProperties.maxTokensHelp"):"Optional. Replaces the bound model's maximum output tokens for this node. Leave empty to inherit the adapter default. The Claude subscription adapter does not enforce this value."}],a4=y.properties?.boundModel||"",a5={minHeight:"100%",minWidth:0,width:"100%",boxSizing:"border-box",scrollSnapAlign:"start",scrollSnapStop:"always",display:"flex",flexDirection:"column",pb:4},a6=(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%",minHeight:0},children:["advanced"===p&&(0,d.jsx)(i.default,{sx:{borderBottom:1,borderColor:"divider",flexShrink:0},children:(0,d.jsxs)(bc.A,{value:aj,onChange:(a,b)=>ak(b),variant:"scrollable",scrollButtons:"auto","aria-label":t("flows.process.toolsAria"),children:[(0,d.jsx)(bd.A,{id:"process-task-tab-server","aria-controls":"process-task-panel-server",label:t("flows.process.mcpTab"),value:"server"}),(0,d.jsx)(bd.A,{id:"process-task-tab-agent","aria-controls":"process-task-panel-agent",label:t("flows.process.nodesTab"),value:"agent"}),(0,d.jsx)(bd.A,{id:"process-task-tab-resources","aria-controls":"process-task-panel-resources",label:t("flows.process.resourcesTab"),value:"resources"})]})}),(0,d.jsxs)(i.default,{id:`process-task-panel-${aj}`,role:"tabpanel","aria-labelledby":`process-task-tab-${aj}`,"data-testid":"process-task-tools-scroll",sx:{flexGrow:1,minHeight:0,overflow:"auto",pr:.5},children:["server"===aj&&(0,d.jsx)(cd,{isLoadingServers:aL,connectedMcpNodes:aJ,availableServers:aK,onConnectMcpServer:o,serverStatuses:aO,serverToolsMap:aN,isLoadingTools:aP,handleInsertToolBinding:a2,selectedToolServerNodeId:aM,selectedNodeId:b?.id||null,handleSelectToolServer:aQ,isLoadingSelectedServerTools:aR,promptBuilderRef:a1,handleRetryServer:aS,handleRestartServer:aT}),"advanced"===p&&"resources"===aj&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(ci,{wiredResources:aZ,promptBuilderRef:a1}),(0,d.jsx)(cg,{connectedMcpNodes:aJ,handleInsertResourceBinding:(a,b)=>{if(!a||!b)return void cx.warn("Invalid parameters for handleInsertResourceBinding:",{serverName:a,uri:b});let c=(0,ae.X8)("resource",a,b),d=B.length>0&&!B.endsWith(" ")&&!B.endsWith("\n");a1.current?a1.current.insertText((d?" ":"")+c):cx.warn("promptBuilderRef.current is null, cannot insert resource binding")},promptBuilderRef:a1})]}),"advanced"===p&&"agent"===aj&&(0,d.jsx)(ck,{handoffTools:a_,isLoadingHandoffTools:a0,handleInsertToolBinding:(a,b)=>a2(a,b,"handoff"),promptBuilderRef:a1})]})]});return(0,d.jsxs)(q.A,{open:a,onClose:c,slotProps:{transition:{onEntered:()=>{"task"===al&&(aD.current=!0,ax.current?.scrollIntoView({block:"start"}),window.setTimeout(()=>{aD.current=!1},0))}}},maxWidth:"xl",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"secondary.main",m:{xs:1,sm:4},width:{xs:"calc(100% - 16px)",sm:"95vw"},height:{xs:"calc(100dvh - 16px)",sm:"90vh"},maxWidth:{xs:"calc(100% - 16px)",sm:"95vw"},maxHeight:{xs:"calc(100dvh - 16px)",sm:"90vh"}}},children:[(0,d.jsx)(bS.A,{title:t("flows.modal.properties",{name:y.label||t("flows.process.title")}),onClose:c,titleProps:{sx:{minWidth:0,overflowWrap:"anywhere"}}}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(s.A,{sx:{display:"flex",flexDirection:"column",p:0,overflow:"hidden",flexGrow:1,minHeight:0,minWidth:0},children:[(0,d.jsx)(i.default,{sx:{borderBottom:1,borderColor:"divider",px:{xs:0,sm:2},flexShrink:0,minWidth:0},children:(0,d.jsx)(bc.A,{value:al,onChange:(a,b)=>{let c;return am(b),aD.current=!0,void((c=aC[b].current)&&"function"==typeof c.scrollIntoView?c.scrollIntoView({behavior:"smooth",block:"start"}):as.current&&(as.current.scrollTop=c?.offsetTop??0),window.setTimeout(()=>{aD.current=!1},700))},variant:"scrollable",scrollButtons:"auto",children:ar.map(a=>(0,d.jsx)(bd.A,{label:x[a],value:a},a))})}),(0,d.jsxs)(i.default,{ref:as,sx:{flexGrow:1,minWidth:0,overflowY:"auto",overflowX:"hidden",p:{xs:2,sm:3},scrollSnapType:"y mandatory",scrollPaddingTop:{xs:"16px",sm:"24px"}},children:[(0,d.jsxs)(i.default,{ref:at,"data-section":"basic",sx:a5,children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:2},children:t("flows.process.basic")}),(0,d.jsx)(b$,{nodeData:y,setNodeData:z})]}),(0,d.jsxs)(i.default,{ref:av,"data-section":"model",sx:a5,children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:2},children:t("flows.process.model")}),(0,d.jsx)(b2,{isLoadingModels:aF,loadError:aG,models:aE,selectedModelId:a4,handleModelSelect:aH,isModelBound:D,handleUnbindModel:aI})]}),"advanced"===p&&(0,d.jsxs)(i.default,{ref:aw,"data-section":"io",sx:a5,children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:2},children:t("flows.process.io")}),(0,d.jsx)(cu,{excludeModelPrompt:G,setExcludeModelPrompt:J,excludeStartNodePrompt:K,setExcludeStartNodePrompt:M,excludeSystemPrompt:N,setExcludeSystemPrompt:O,inputMode:P,setInputMode:S,isolatedPrompt:T,setIsolatedPrompt:U,allowCallerPrompt:V,setAllowCallerPrompt:W,outputMode:X,setOutputMode:Y,isModelBound:D,models:aE,nodeData:y}),(0,d.jsx)(H.A,{sx:{mt:1},control:(0,d.jsx)(I.A,{checked:Z,onChange:a=>$(a.target.checked)}),label:t("flows.process.todo")})]}),(0,d.jsxs)(i.default,{ref:ax,"data-section":"task",sx:a5,children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:2},children:t("flows.process.task")}),(0,d.jsxs)(i.default,{ref:az,"data-testid":"process-task-split-container",sx:{display:"flex",flexDirection:w?"column":"row",flexGrow:1,minWidth:0,minHeight:480,height:w?"auto":"clamp(480px, 62vh, 680px)",overflow:w?"visible":"hidden"},children:[(0,d.jsx)(i.default,{"data-testid":"process-task-tools-pane",sx:{order:2*!!w,flex:w?"0 0 auto":`0 0 ${an}px`,width:w?"100%":`${an}px`,minWidth:0,minHeight:360*!!w,height:w?420:"auto",mt:2*!!w,display:"flex",flexDirection:"column",overflow:"hidden"},children:a6}),(0,d.jsx)(i.default,{role:"separator","aria-label":"Resize Task tools and prompt editor panes","aria-orientation":"vertical","aria-valuemin":260,"aria-valuemax":640,"aria-valuenow":Math.round(an),tabIndex:0,onPointerDown:a=>{Number.isFinite(a.clientX)&&(a.preventDefault(),aB.current={pointerX:a.clientX,width:aA.current},aq(!0))},onKeyDown:a=>{let b=az.current?.getBoundingClientRect().width??0,c=null;"ArrowLeft"===a.key&&(c=aA.current-24),"ArrowRight"===a.key&&(c=aA.current+24),"Home"===a.key&&(c=260),"End"===a.key&&(c=640),null!==c&&(a.preventDefault(),ao(cz(c,b)))},sx:{display:w?"none":"flex",flex:"0 0 12px",cursor:"col-resize",alignItems:"stretch",justifyContent:"center",touchAction:"none",bgcolor:ap?"action.selected":"transparent","&::after":{content:'""',width:2,borderRadius:1,bgcolor:"divider"},"&:hover, &:focus-visible":{bgcolor:"action.hover",outline:"none"}}}),(0,d.jsx)(i.default,{"data-testid":"process-task-editor-scroll",sx:{order:+!!w,flex:"1 1 auto",width:w?"100%":"auto",minWidth:0,minHeight:360*!!w,height:w?420:"auto",display:"flex",flexDirection:"column",overflow:"auto"},children:(0,d.jsx)(cn,{ref:a1,promptTemplate:B,handlePromptChange:a=>{C(a),z(b=>b?{...b,properties:{...b.properties,promptTemplate:a}}:null)},excludeModelPrompt:G,excludeStartNodePrompt:K,excludeSystemPrompt:N,nodeData:y,flowId:n,suggestions:aY})})]})]}),"advanced"===p&&(0,d.jsxs)(i.default,{ref:ay,"data-section":"advanced",sx:a5,children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:2},children:t("flows.process.advanced")}),(0,d.jsx)(i.default,{sx:{mb:3},children:(0,d.jsx)(cv,{nodeData:y,handlePropertyChange:A,properties:a3})}),(0,d.jsx)(i.default,{children:(0,d.jsx)(cw,{value:{captureVariable:_,captureResource:ab,captureKvScope:af,captureKvKey:ah},onChange:a=>{void 0!==a.captureVariable&&aa(a.captureVariable),void 0!==a.captureResource&&ac(a.captureResource),void 0!==a.captureKvScope&&ag(a.captureKvScope),void 0!==a.captureKvKey&&ai(a.captureKvKey)},onInsertRef:a=>{let b=B.length>0&&!B.endsWith(" ")&&!B.endsWith("\n");a1.current?a1.current.insertText((b?" ":"")+a):cx.warn("promptBuilderRef.current is null, cannot insert capture reference")}})})]})]})]}),(0,d.jsxs)(v.A,{sx:{px:{xs:1.5,sm:3},py:{xs:1,sm:1.5},flexShrink:0},children:[(0,d.jsx)(k.A,{onClick:c,children:t("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{if(b&&y){let a={...y.properties,promptTemplate:B};if("advanced"===p){Object.assign(a,{excludeModelPrompt:G,excludeStartNodePrompt:K,excludeSystemPrompt:N,inputMode:P,isolatedPrompt:T,allowCallerPrompt:V,outputMode:X}),Z?a.enableTodoTool=!0:delete a.enableTodoTool;let b=_.trim();b?a.captureVariable=b:delete a.captureVariable;let c=ab.trim();c?a.captureResource=c:delete a.captureResource;let d=aV(af,ah);d?a.captureKv=d:delete a.captureKv}g(b.id,{...y,properties:a}),c()}},variant:"contained",color:"primary",children:t("flows.modal.saveChanges")})]})]})},cC=(0,w.A)((0,d.jsx)("path",{d:"M19 15v4H5v-4zm1-2H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1M7 18.5c-.82 0-1.5-.67-1.5-1.5s.68-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5M19 5v4H5V5zm1-2H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1M7 8.5c-.82 0-1.5-.67-1.5-1.5S6.18 5.5 7 5.5s1.5.68 1.5 1.5S7.83 8.5 7 8.5"}),"DnsOutlined");var cD=c(19572),cE=c(16300),cF=c(94651);function cG(a){return a.title?.trim()||a.annotations?.title?.trim()||a.name}let cH={readOnly:"success",destructive:"error",otherChanges:"warning"},cI={readOnly:{title:"flows.mcpNode.readOnlyTools",help:"flows.mcpNode.readOnlyToolsHelp"},destructive:{title:"flows.mcpNode.destructiveTools",help:"flows.mcpNode.destructiveToolsHelp"},otherChanges:{title:"flows.mcpNode.otherChangeTools",help:"flows.mcpNode.otherChangeToolsHelp"}};function cJ(a){return a&&"object"==typeof a?JSON.stringify(a,null,2):"{}"}let cK=({tools:a,enabledTools:b,onToggle:c,onActivateAll:f,onDeactivateAll:g})=>{let{t:h}=(0,au.s9)(),[l,p]=(0,e.useState)(""),[q,r]=(0,e.useState)(null),s=(0,e.useMemo)(()=>new Set(b),[b]),t=(0,e.useMemo)(()=>a.reduce((a,b)=>a+ +!!s.has(b.name),0),[s,a]),v=(0,e.useMemo)(()=>{let b=l.trim().toLocaleLowerCase();return b?a.filter(a=>`${cG(a)} ${a.name} ${a.description||""}`.toLocaleLowerCase().includes(b)):a},[l,a]),w=(0,e.useMemo)(()=>(function(a){let b={readOnly:[],destructive:[],otherChanges:[]};for(let c of a)b[c.annotations?.readOnlyHint===!0?"readOnly":c.annotations?.destructiveHint===!1?"otherChanges":"destructive"].push(c);return["readOnly","destructive","otherChanges"].map(a=>({key:a,tools:b[a]})).filter(a=>a.tools.length>0)})(v),[v]);return(0,d.jsxs)(i.default,{children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:2,flexWrap:"wrap"},children:[(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"h6",children:h("flows.mcpNode.allowedTools")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:h("flows.mcpNode.toolsHelp")})]}),(0,d.jsxs)(bb.A,{direction:"row",spacing:1,sx:{flexWrap:"wrap",rowGap:1},children:[(0,d.jsx)(k.A,{size:"small",variant:"outlined",onClick:f,disabled:0===a.length||t===a.length,children:h("flows.mcpNode.activateAll")}),(0,d.jsx)(k.A,{size:"small",variant:"outlined",onClick:g,disabled:0===s.size,children:h("flows.mcpNode.deactivateAll")})]})]}),(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,mt:2,mb:1.5},children:[(0,d.jsx)(F.A,{size:"small",color:t>0?"primary":"default",label:h("flows.mcpNode.enabledCount",{enabled:t,total:a.length})}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:h("flows.mcpNode.annotationNotice")})]}),(0,d.jsx)(u.A,{fullWidth:!0,size:"small",value:l,onChange:a=>p(a.target.value),placeholder:h("flows.mcpNode.searchTools"),inputProps:{"aria-label":h("flows.mcpNode.searchTools")},InputProps:{startAdornment:(0,d.jsx)(ai.A,{position:"start",children:(0,d.jsx)(b8.A,{fontSize:"small"})})},sx:{mb:2}}),0===v.length?(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{py:3,textAlign:"center"},children:h("flows.mcpNode.noMatchingTools")}):(0,d.jsx)(bb.A,{spacing:3,children:w.map(a=>{let b=cI[a.key];return(0,d.jsxs)(i.default,{component:"section","aria-labelledby":`mcp-tools-${a.key}`,children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5},children:[(0,d.jsx)(j.A,{id:`mcp-tools-${a.key}`,variant:"subtitle1",fontWeight:700,children:h(b.title)}),(0,d.jsx)(F.A,{size:"small",color:cH[a.key],variant:"outlined",label:a.tools.length})]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:1},children:h(b.help)}),(0,d.jsx)(aF.A,{disablePadding:!0,sx:{display:"flex",flexDirection:"column",gap:1},children:a.tools.map(a=>{let b,e=cG(a),f=q===a.name,g=s.has(a.name),k=a.annotations?.readOnlyHint===!0,l=a.execution?.taskSupport,p=!!(0,cF.Gt)(a._meta);return(0,d.jsxs)(D.A,{component:"li",variant:"outlined",sx:{listStyle:"none",overflow:"hidden",borderColor:g?"primary.main":"divider"},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"flex-start",gap:1.25,p:1.5},children:[(0,d.jsx)(I.A,{size:"small",checked:g,onChange:()=>c(a.name),inputProps:{"aria-label":h("flows.mcpNode.toggleTool",{tool:e})},sx:{mt:-.25}}),(0,d.jsxs)(i.default,{sx:{flex:1,minWidth:0},children:[(0,d.jsx)(j.A,{variant:"subtitle2",sx:{overflowWrap:"anywhere"},children:e}),a.description&&(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.25},children:a.description}),(0,d.jsxs)(bb.A,{direction:"row",spacing:.75,sx:{flexWrap:"wrap",rowGap:.75,mt:1},children:[(b=a.annotations,(b?.readOnlyHint===void 0||!0!==b.readOnlyHint&&void 0===b.destructiveHint)&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",label:h("flows.mcpNode.cautiousDefaults")})),!k&&a.annotations?.idempotentHint===!0&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",color:"success",label:h("flows.mcpNode.safeToRepeat")}),a.annotations?.openWorldHint===!1&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",label:h("flows.mcpNode.closedWorld")}),a.annotations?.openWorldHint===!0&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",color:"warning",label:h("flows.mcpNode.externalAccess")}),l&&"forbidden"!==l&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",color:"info",label:"required"===l?h("flows.mcpNode.backgroundRequired"):h("flows.mcpNode.backgroundOptional")}),a.outputSchema&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",label:h("flows.mcpNode.structuredResult")}),p&&(0,d.jsx)(F.A,{size:"small",variant:"outlined",color:"info",label:h("flows.mcpNode.interactiveView")})]})]}),(0,d.jsx)(n.A,{title:h("flows.inspector.technicalDetails"),children:(0,d.jsx)(m.A,{size:"small",onClick:()=>r(f?null:a.name),"aria-expanded":f,"aria-label":h(f?"flows.mcpNode.hideTechnicalDetails":"flows.mcpNode.showTechnicalDetails",{tool:e}),children:f?(0,d.jsx)(cb.A,{}):(0,d.jsx)(ca.A,{})})})]}),(0,d.jsxs)(o.A,{in:f,unmountOnExit:!0,children:[(0,d.jsx)(L.A,{}),(0,d.jsxs)(i.default,{sx:{p:1.5,bgcolor:"action.hover"},children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:h("flows.mcpNode.programmaticName")}),(0,d.jsx)(j.A,{component:"code",variant:"body2",sx:{display:"block",overflowWrap:"anywhere",mb:1.5},children:a.name}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:h("flows.mcpNode.inputSchema")}),(0,d.jsx)(i.default,{component:"pre",sx:{m:0,mt:.5,p:1,borderRadius:1,bgcolor:"background.paper",overflow:"auto",fontSize:12},children:cJ(a.inputSchema)}),a.outputSchema&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1.5},children:h("flows.mcpNode.outputSchema")}),(0,d.jsx)(i.default,{component:"pre",sx:{m:0,mt:.5,p:1,borderRadius:1,bgcolor:"background.paper",overflow:"auto",fontSize:12},children:cJ(a.outputSchema)})]}),(a.annotations||a.execution||a._meta)&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1.5},children:h("flows.mcpNode.protocolMetadata")}),(0,d.jsx)(i.default,{component:"pre",sx:{m:0,mt:.5,p:1,borderRadius:1,bgcolor:"background.paper",overflow:"auto",fontSize:12},children:JSON.stringify({...a.annotations?{annotations:a.annotations}:{},...a.execution?{execution:a.execution}:{},...a._meta?{_meta:a._meta}:{}},null,2)})]})]})]})]},a.name)})})]},a.key)})})]})},cL=(0,M.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/MCPNodePropertiesModal"),cM=({open:a,node:b,onClose:c,onSave:f,authoringMode:g="advanced"})=>{let{t:l}=(0,au.s9)(),o=(0,h.A)(),r=(0,E.A)(o.breakpoints.down("md"),{noSsr:!0}),t=(0,E.A)(o.breakpoints.down("sm"),{noSsr:!0}),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)({}),[A,B]=(0,e.useState)(!1),[C,D]=(0,e.useState)(!1),[J,K]=(0,e.useState)("server"),[M,N]=(0,e.useState)("tools"),[O,P]=(0,e.useState)(null),{servers:Q,isLoading:R,loadError:S,retryServer:T}=(0,bW.v)(),U=(0,bs.E)("mcp",Q),V=w?.properties?.boundServer||"",{tools:W,toolsServerName:X,isLoading:Y,error:Z,loadTools:$}=(0,cE.O)(V);(0,e.useEffect)(()=>{b&&(x({...b.data,properties:{...b.data.properties}}),K(b.data.properties?.boundServer?"tools":"server"),N("tools"),D(!1),P(null))},[b,a]),(0,e.useEffect)(()=>{!O||O!==V||X!==O||Y||Z||(x(a=>a?{...a,properties:{...a.properties,enabledTools:W.map(a=>a.name)}}:null),P(null))},[O,Y,W,V,Z,X]);let _=(a,b)=>{x(c=>c?{...c,properties:{...c.properties,[a]:b}}:null)},aa=async()=>{B(!0);try{await Promise.all(Q.map(a=>T(a.name)))}finally{B(!1)}},ab=async(a,b)=>{b?.stopPropagation(),cL.debug(`Retrying server: ${a}`),z(b=>({...b,[a]:!0}));try{return await T(a),a===V&&$(!0),!0}catch(b){return cL.warn(`Failed to retry server ${a}: ${b}`),!1}finally{z(b=>({...b,[a]:!1}))}},ac=a=>{_("enabledTools",a?W.map(a=>a.name):[])};if(!b||!w)return null;let ad=w.properties?.boundServer||"",ae=Array.isArray(w.properties?.enabledTools)?w.properties.enabledTools:[],af=Q.find(a=>a.name===ad),ag=w.properties?.toolTimeout,ah=-1===ag,ai=a=>({key:a.name,content:(0,d.jsx)(br.A,{name:a.name,status:a.status||"disconnected",path:a.path||a.rootPath||"",enabled:!a.disabled,transport:a.transport||"stdio",pickerMode:!0,selected:ad===a.name,onClick:()=>{var b;return b=a.name,void(cL.debug(`Server selected: ${b}`),D(!1),x(a=>{if(!a||a.properties?.boundServer===b)return a;let c=bU({currentLabel:a.label,nameIsCustom:a.properties?.nameIsCustom,defaultLabel:"MCP Node",previousAutoLabel:a.properties?.boundServer||void 0,nextAutoLabel:b});return{...a,label:c,properties:{...a.properties,boundServer:b,enabledTools:[]}}}),b!==V&&P(b),K("tools"))}})}),aj=U.items.map(ai),ak=U.groups?U.groups.map(a=>({...a,items:a.items.map(ai)})):null,al=(0,d.jsx)(b1.A,{isLoading:R,error:S,emptyMessage:l("flows.mcpNode.empty"),loadingMessage:l("flows.mcpNode.loadingServers"),searchable:!0,searchPlaceholder:l("flows.mcpNode.searchServers"),searchTerm:U.searchTerm,onSearchChange:U.setSearchTerm,columns:{xs:12},items:aj,groups:ak,collapsedKeys:U.collapsedKeys,onToggleGroup:U.toggleGroup,autoFocusSearch:!1}),am=(0,d.jsxs)(i.default,{"data-testid":"mcp-server-pane",sx:{height:"100%",minHeight:0,overflowY:"auto",p:3},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:1,mb:1.5},children:[(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"h6",children:l("flows.mcpNode.bind")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:l("flows.mcpNode.select")})]}),(0,d.jsx)(n.A,{title:l("flows.mcpNode.retryAll"),children:(0,d.jsx)("span",{children:(0,d.jsx)(m.A,{size:"small",onClick:aa,disabled:A||R,children:A?(0,d.jsx)(G.default,{size:18}):(0,d.jsx)(b6.A,{fontSize:"small"})})})})]}),al,(0,d.jsx)(b_.A,{sx:{mt:1},children:ad?l("flows.mcpNode.bound",{server:ad}):l("flows.mcpNode.select")})]}),an=(0,d.jsxs)(i.default,{"data-testid":"mcp-compact-server-picker",sx:{maxWidth:680,mx:"auto"},children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:.5},children:l("flows.mcpNode.bind")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:l("flows.mcpNode.select")}),(0,d.jsxs)(k.A,{fullWidth:!0,variant:"outlined",size:"large",startIcon:(0,d.jsx)(cC,{}),onClick:()=>D(!0),sx:{justifyContent:"flex-start",textTransform:"none",py:1.25},children:[(0,d.jsx)(i.default,{component:"span",sx:{flex:1,minWidth:0,textAlign:"left",overflow:"hidden",textOverflow:"ellipsis"},children:ad||l("flows.mcpNode.chooseServer")}),af&&(0,d.jsx)(F.A,{size:"small",label:af.status||"disconnected",color:"connected"===af.status?"success":"default",sx:{ml:1}})]}),(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"flex-end",mt:1},children:(0,d.jsx)(k.A,{size:"small",startIcon:A?(0,d.jsx)(G.default,{size:16}):(0,d.jsx)(b6.A,{}),onClick:aa,disabled:A||R,children:l("flows.mcpNode.retryAll")})}),(0,d.jsx)(b_.A,{children:ad?l("flows.mcpNode.bound",{server:ad}):l("flows.mcpNode.select")})]}),ao=(0,d.jsx)(i.default,{"data-testid":"mcp-tools-pane",children:ad?(0,d.jsxs)(d.Fragment,{children:[af?.status!=="connected"&&(0,d.jsx)(p.A,{severity:"warning",sx:{mb:2},action:(0,d.jsx)(k.A,{color:"inherit",size:"small",startIcon:y[ad]?(0,d.jsx)(G.default,{size:16}):(0,d.jsx)(b6.A,{}),onClick:()=>ab(ad),disabled:y[ad],children:l("flows.mcpNode.retry")}),children:l("flows.mcpNode.disconnected")}),Y?(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"center",gap:1,py:6},children:[(0,d.jsx)(G.default,{size:24}),(0,d.jsx)(j.A,{color:"text.secondary",children:l("flows.mcpNode.loadingTools")})]}):Z?(0,d.jsx)(p.A,{severity:"error",children:Z}):0===W.length?(0,d.jsx)(j.A,{color:"text.secondary",sx:{py:3},children:l(af?.status==="connected"?"flows.mcpNode.noTools":"flows.mcpNode.connectForTools")}):(0,d.jsx)(cK,{tools:W,enabledTools:ae,onToggle:a=>{x(b=>{if(!b)return null;let c=Array.isArray(b.properties.enabledTools)?b.properties.enabledTools:[],d=c.includes(a)?c.filter(b=>b!==a):[...c,a];return{...b,properties:{...b.properties,enabledTools:d}}})},onActivateAll:()=>ac(!0),onDeactivateAll:()=>ac(!1)})]}):(0,d.jsx)(p.A,{severity:"info",children:l("flows.mcpNode.connectForTools")})}),ap=(0,d.jsxs)(i.default,{"data-testid":"mcp-settings-pane",sx:{maxWidth:820},children:[(0,d.jsx)(j.A,{variant:"h6",sx:{mb:2},children:l("common.settings")}),(0,d.jsx)(u.A,{fullWidth:!0,label:l("flows.mcpNode.label"),value:w.label||"",onChange:a=>{x(b=>b?{...b,label:a.target.value,properties:{...b.properties,nameIsCustom:!0}}:null)},helperText:l("flows.mcpNode.labelHelp"),sx:{mb:2}}),(0,d.jsx)(u.A,{fullWidth:!0,label:l("flows.mcpNode.description"),value:w.description||"",onChange:a=>x({...w,description:a.target.value}),multiline:!0,minRows:2,helperText:l("flows.mcpNode.descriptionHelp")}),ad&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(L.A,{sx:{my:3}}),(0,d.jsx)(j.A,{variant:"subtitle1",children:l("flows.mcpNode.timeoutTitle")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:1.5},children:l("flows.mcpNode.timeoutHelp")}),(0,d.jsxs)(bb.A,{direction:{xs:"column",sm:"row"},spacing:2,alignItems:{xs:"stretch",sm:"flex-start"},children:[(0,d.jsx)(u.A,{label:l("flows.mcpNode.timeoutSeconds"),type:"number",size:"small",sx:{width:{xs:"100%",sm:220}},value:ah?"":ag??"",placeholder:String(300),disabled:ah,inputProps:{min:1},onChange:a=>{let b=a.target.value;if(""===b)return void _("toolTimeout",void 0);let c=Number.parseInt(b,10);!Number.isNaN(c)&&c>0&&_("toolTimeout",c)},helperText:ah?l("flows.mcpNode.noTimeoutHelp"):l("flows.mcpNode.defaultTimeout",{seconds:300})}),(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:ah,onChange:a=>_("toolTimeout",a.target.checked?-1:void 0)}),label:l("flows.mcpNode.noTimeout")})]}),(0,d.jsx)(L.A,{sx:{my:3}}),(0,d.jsx)(cD.A,{roots:w.properties?.roots||[],onChange:a=>_("roots",a)}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1},children:l("flows.mcpNode.rootsHelp",{server:ad})})]})]});return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"xl",fullWidth:!0,"data-authoring-mode":g,PaperProps:{sx:{borderTop:5,borderColor:"info.main",m:{xs:1,sm:4},width:{xs:"calc(100% - 16px)",sm:"95vw"},height:{xs:"calc(100dvh - 16px)",sm:"90vh"},maxWidth:{xs:"calc(100% - 16px)",sm:"95vw"},maxHeight:{xs:"calc(100dvh - 16px)",sm:"90vh"}}},children:[(0,d.jsx)(bS.A,{title:l("flows.modal.properties",{name:w.label||l("flows.mcpNode.title")}),onClose:c,titleProps:{sx:{minWidth:0,overflowWrap:"anywhere"}}}),(0,d.jsx)(L.A,{}),(0,d.jsx)(s.A,{sx:{display:"flex",flexDirection:"column",p:0,overflow:"hidden",flexGrow:1,minHeight:0},children:r?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i.default,{sx:{borderBottom:1,borderColor:"divider",px:{xs:0,sm:2},flexShrink:0},children:(0,d.jsxs)(bc.A,{value:J,onChange:(a,b)=>K(b),variant:"scrollable",scrollButtons:"auto","aria-label":l("flows.mcpNode.title"),children:[(0,d.jsx)(bd.A,{label:l("flows.mcpNode.bind"),value:"server"}),(0,d.jsx)(bd.A,{label:l("flows.mcpNode.allowedTools"),value:"tools"}),(0,d.jsx)(bd.A,{label:l("common.settings"),value:"settings"})]})}),(0,d.jsxs)(i.default,{sx:{flexGrow:1,minHeight:0,overflowY:"auto",p:{xs:2,sm:3}},children:["server"===J&&an,"tools"===J&&ao,"settings"===J&&ap]})]}):(0,d.jsxs)(i.default,{"data-testid":"mcp-desktop-split",sx:{display:"grid",gridTemplateColumns:"minmax(320px, 38%) minmax(0, 1fr)",flexGrow:1,minHeight:0},children:[(0,d.jsx)(i.default,{sx:{minWidth:0,minHeight:0,borderRight:1,borderColor:"divider"},children:am}),(0,d.jsxs)(i.default,{sx:{minWidth:0,minHeight:0,display:"flex",flexDirection:"column"},children:[(0,d.jsx)(i.default,{sx:{borderBottom:1,borderColor:"divider",px:2,flexShrink:0},children:(0,d.jsxs)(bc.A,{value:M,onChange:(a,b)=>N(b),variant:"scrollable",scrollButtons:"auto","aria-label":l("flows.mcpNode.allowedTools"),children:[(0,d.jsx)(bd.A,{label:l("flows.mcpNode.allowedTools"),value:"tools"}),(0,d.jsx)(bd.A,{label:l("common.settings"),value:"settings"})]})}),(0,d.jsx)(i.default,{sx:{flexGrow:1,minHeight:0,overflowY:"auto",p:3},children:"tools"===M?ao:ap})]})]})}),(0,d.jsxs)(v.A,{sx:{px:{xs:1.5,sm:3},py:{xs:1,sm:1.5},flexShrink:0},children:[(0,d.jsx)(k.A,{onClick:c,children:l("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{b&&w&&(f(b.id,w),c())},variant:"contained",color:"primary",children:l("flows.modal.saveChanges")})]})]}),(0,d.jsx)(bq.A,{open:C,onClose:()=>D(!1),fullScreen:t,maxWidth:"md",title:l("flows.mcpNode.bind"),description:l("flows.mcpNode.select"),isLoading:R,error:S,emptyMessage:l("flows.mcpNode.empty"),loadingMessage:l("flows.mcpNode.loadingServers"),searchable:!0,searchPlaceholder:l("flows.mcpNode.searchServers"),searchTerm:U.searchTerm,onSearchChange:U.setSearchTerm,columns:{xs:12,sm:6},items:aj,groups:ak,collapsedKeys:U.collapsedKeys,onToggleGroup:U.toggleGroup})]})},cN=({open:a,node:b,onClose:c,onSave:f})=>{let{t:g}=(0,au.s9)(),[h,l]=(0,e.useState)(null),[m,n]=(0,e.useState)("");return((0,e.useEffect)(()=>{b&&(l({...b.data,properties:{...b.data.properties}}),n(b.data.properties?.promptTemplate||""))},[b,a]),b&&h)?(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"xl",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"primary.main",width:"95vw",height:"90vh",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,d.jsx)(bS.A,{title:g("flows.modal.properties",{name:h.label||g("flows.modal.startNode")}),onClose:c}),(0,d.jsx)(L.A,{}),(0,d.jsx)(s.A,{sx:{display:"flex",flexDirection:"column",p:3,overflow:"auto",height:"calc(90vh - 130px)"},children:(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%"},children:[(0,d.jsx)(j.A,{variant:"h6",gutterBottom:!0,children:g("flows.modal.promptTemplate")}),(0,d.jsx)(i.default,{sx:{flexGrow:1,display:"flex",flexDirection:"column",height:"calc(100% - 40px)"},children:(0,d.jsx)(cl.A,{value:m,onChange:a=>{n(a),l(b=>b?{...b,properties:{...b.properties,promptTemplate:a}}:null)},label:"",height:"100%"})})]})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:g("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{if(b&&h){let a={...h,properties:{...h.properties,promptTemplate:m}};f(b.id,a),c()}},variant:"contained",color:"primary",children:g("flows.modal.saveChanges")})]})]}):null},cO=({open:a,node:b,onClose:c,onSave:f})=>{let{t:g}=(0,au.s9)(),[h,l]=(0,e.useState)(null);return((0,e.useEffect)(()=>{b&&l({...b.data,properties:{...b.data.properties}})},[b,a]),b&&h)?(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"success.main",width:"600px",height:"400px",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,d.jsx)(bS.A,{title:g("flows.modal.properties",{name:h.label||g("flows.modal.finishNode")}),onClose:c}),(0,d.jsx)(L.A,{}),(0,d.jsx)(s.A,{sx:{display:"flex",flexDirection:"column",p:3,overflow:"auto"},children:(0,d.jsx)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%",justifyContent:"center",alignItems:"center",py:4},children:(0,d.jsxs)(D.A,{elevation:0,sx:{p:4,textAlign:"center",backgroundColor:"rgba(76, 175, 80, 0.08)",borderRadius:2,width:"100%"},children:[(0,d.jsx)(j.A,{variant:"h6",color:"success.main",gutterBottom:!0,children:g("flows.modal.finishNode")}),(0,d.jsx)(j.A,{variant:"body1",color:"text.secondary",children:g("flows.modal.finishHelp")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:2,fontStyle:"italic"},children:g("flows.modal.finishFuture")})]})})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:g("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{b&&h&&(f(b.id,h),c())},variant:"contained",color:"primary",children:g("flows.modal.save")})]})]}):null},cP=({open:a,edge:b,onClose:c,onSave:f})=>{let{t:g}=(0,au.s9)(),h={contains:g("flows.edgeModal.contains"),regex:g("flows.edgeModal.regex"),equals:g("flows.edgeModal.equals"),always:g("flows.edgeModal.always")},l={"last-assistant":g("flows.edgeModal.lastAgent"),"last-message":g("flows.edgeModal.lastMessage")},[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)("contains"),[r,t]=(0,e.useState)(""),[w,x]=(0,e.useState)("last-assistant"),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(!1);if((0,e.useEffect)(()=>{let a=b?.data?.condition;a?(n(!0),p(a.kind),t("string"==typeof a.value?a.value:""),x(a.target??"last-assistant"),z(!!a.ignoreCase),B(!!a.negate)):(n(!1),p("contains"),t(""),x("last-assistant"),z(!1),B(!1))},[b,a]),!b)return null;let C="always"!==o,D=m&&"regex"===o&&r.length>0&&!(0,aO.wM)(r),E=m&&C&&0===r.length;return(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"sm",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"primary.main",width:"520px",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,d.jsx)(bS.A,{title:g("flows.edgeModal.title"),onClose:c}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(s.A,{sx:{display:"flex",flexDirection:"column",gap:2,p:3},children:[(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:g("flows.edgeModal.help")}),(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:m,onChange:a=>n(a.target.checked)}),label:g("flows.edgeModal.conditional")}),m&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(bB.A,{fullWidth:!0,size:"small",children:[(0,d.jsx)(bC.A,{id:"edge-condition-kind-label",children:g("flows.edgeModal.kind")}),(0,d.jsx)(bD.A,{labelId:"edge-condition-kind-label",label:g("flows.edgeModal.kind"),value:o,onChange:a=>p(a.target.value),children:aO.w4.map(a=>(0,d.jsx)(K.A,{value:a,children:h[a]},a))})]}),C&&(0,d.jsx)(u.A,{fullWidth:!0,size:"small",label:g("regex"===o?"flows.edgeModal.pattern":"flows.edgeModal.value"),value:r,onChange:a=>t(a.target.value),error:D||E,helperText:D?g("flows.edgeModal.invalidRegex"):E?g("flows.edgeModal.valueRequired"):" "}),(0,d.jsxs)(bB.A,{fullWidth:!0,size:"small",children:[(0,d.jsx)(bC.A,{id:"edge-condition-target-label",children:g("flows.edgeModal.testAgainst")}),(0,d.jsx)(bD.A,{labelId:"edge-condition-target-label",label:g("flows.edgeModal.testAgainst"),value:w,onChange:a=>x(a.target.value),children:aO.L2.map(a=>(0,d.jsx)(K.A,{value:a,children:l[a]},a))})]}),(0,d.jsxs)(i.default,{display:"flex",gap:2,flexWrap:"wrap",children:[C&&(0,d.jsx)(H.A,{control:(0,d.jsx)(bK.A,{checked:y,onChange:a=>z(a.target.checked)}),label:g("flows.edgeModal.ignoreCase")}),(0,d.jsx)(H.A,{control:(0,d.jsx)(bK.A,{checked:A,onChange:a=>B(a.target.checked)}),label:g("flows.edgeModal.negate")})]}),(0,d.jsx)(b_.A,{children:g("flows.edgeModal.runtimeSafety")})]})]}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:g("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{if(!m){f(b.id,void 0),c();return}let a={kind:o};C&&(a.value=r,y&&(a.ignoreCase=!0)),"last-assistant"!==w&&(a.target=w),A&&(a.negate=!0),f(b.id,a),c()},variant:"contained",color:"primary",disabled:D,children:g("flows.modal.save")})]})]})};var cQ=c(3411);let cR=({information:a,id:b})=>{let{t:c}=(0,au.s9)(),e=a.technicalText;return e.trim()?(0,d.jsx)(i.default,{id:b,component:"pre",tabIndex:0,sx:{m:0,p:1.5,maxHeight:{xs:"50vh",sm:"60vh"},overflow:"auto",whiteSpace:"pre-wrap",overflowWrap:"anywhere",fontSize:"0.75rem",lineHeight:1.45,backgroundColor:"action.hover",borderRadius:1},children:e}):(0,d.jsx)(j.A,{id:b,variant:"body2",color:"text.secondary",children:c("flows.nodeInfo.technicalEmpty")})},cS="node-technical-details-title",cT=({open:a,node:b,flowNames:c,onClose:f})=>{let{t:g,tp:h,formatList:i}=(0,au.s9)(),j=(0,e.useMemo)(()=>{if(!b)return null;let a=b.data?.type??b.type??"process";return(0,cQ.b)(b.data,a,{t:g,tp:h,formatList:i},c)},[b,c,g,h,i]);return(0,d.jsxs)(q.A,{open:a&&!!j,onClose:f,maxWidth:"sm",fullWidth:!0,"aria-labelledby":cS,PaperProps:{sx:{m:{xs:1,sm:4},width:{xs:"calc(100% - 16px)",sm:"100%"},maxWidth:{xs:"calc(100% - 16px)",sm:600},maxHeight:{xs:"calc(100dvh - 16px)",sm:"85vh"}}},children:[(0,d.jsx)(bS.A,{title:g("flows.nodeInfo.technicalTitle",{name:j?.label??""}),onClose:f,titleProps:{id:cS,sx:{minWidth:0,overflowWrap:"anywhere"}}}),(0,d.jsx)(L.A,{}),(0,d.jsx)(s.A,{sx:{px:{xs:2,sm:3},py:2},children:j&&(0,d.jsx)(cR,{information:j})}),(0,d.jsx)(v.A,{children:(0,d.jsx)(k.A,{onClick:f,children:g("common.close")})})]})},cU=(0,w.A)((0,d.jsx)("path",{d:"m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"}),"ArrowForward"),cV=(0,w.A)((0,d.jsx)("path",{d:"M19 13H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2m0 6H5v-4h14zm0-16H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m0 6H5V5h14z"}),"ViewAgendaOutlined"),cW=(0,w.A)((0,d.jsx)("path",{d:"M17 20.41 18.41 19 15 15.59 13.59 17zM7.5 8H11v5.59L5.59 19 7 20.41l6-6V8h3.5L12 3.5z"}),"MergeType"),cX=(0,M.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/SubflowNodePropertiesModal"),cY=({open:a,node:b,onClose:c,onSave:f,onNavigateToFlow:g,flowId:h,authoringMode:l="advanced"})=>{let{t:m}=(0,au.s9)(),[n,o]=(0,e.useState)(null),[r,t]=(0,e.useState)([]),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(""),[C,D]=(0,e.useState)(""),[E,F]=(0,e.useState)("folder"),[G,J]=(0,e.useState)("");(0,e.useEffect)(()=>{if(b){let a=b.data.properties||{};o({...b.data,properties:{...a}}),B(a.captureVariable||""),D(a.captureResource||"");let c=aU(a.captureKv||"");F(c.scope),J(c.key||"")}},[b,a]),(0,e.useEffect)(()=>{if(!a)return;let b=!1;return x(!0),P.g.loadFlows().then(a=>{b||t(a||[])}).catch(a=>{cX.warn("Failed to load flows for subflow picker",a),b||t([])}).finally(()=>{b||x(!1)}),()=>{b=!0}},[a]);let K=(a,b)=>{o(c=>c?{...c,properties:{...c.properties,[a]:b}}:null)},M=r.filter(a=>a.id!==h),N=(0,bs.E)("flows",M);if(!b||!n)return null;let O=n.properties?.subflowId||"",Q=!!O&&!r.some(a=>a.id===O),R=Q?"":r.find(a=>a.id===O)?.name||"",S=Array.isArray(n.properties?.parallelSubflowIds)&&n.properties.parallelSubflowIds.length>0||!!n.properties?.parallelSubflowIdsVar||n.properties?.mapOverList===!0||Array.isArray(n.properties?.spawnBriefs)&&n.properties.spawnBriefs.length>0,T=n.properties?.promptTemplate||"",U=n.properties?.inputMode||(T.trim()?"isolated":"full-history");return(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"warning.main",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,d.jsx)(bS.A,{title:m("flows.modal.properties",{name:n.label||m("flows.subflow.title")}),onClose:c}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(s.A,{sx:{p:3},children:[(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:m("flows.subflow.intro")}),(0,d.jsx)(u.A,{fullWidth:!0,label:m("flows.subflow.nodeLabel"),value:n.label||"",onChange:a=>o({...n,label:a.target.value}),margin:"normal"}),(0,d.jsxs)(i.default,{sx:{mt:2},children:[(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mb:1},children:m("flows.subflow.flowToRun")}),(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,flexWrap:"wrap"},children:[(0,d.jsx)(k.A,{variant:"outlined",startIcon:(0,d.jsx)(bj.A,{}),onClick:()=>z(!0),sx:{textTransform:"none",maxWidth:"100%"},children:(0,d.jsx)(i.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:R||m("flows.subflow.choose")})}),O&&!Q&&g&&(0,d.jsx)(k.A,{size:"small",onClick:()=>g(O),startIcon:(0,d.jsx)(cU,{}),sx:{textTransform:"none"},children:m("flows.subflow.openTarget")})]})]}),Q&&(0,d.jsx)(p.A,{severity:"warning",sx:{mt:1},children:m("flows.subflow.missing")}),S&&(0,d.jsx)(p.A,{severity:"info",sx:{mt:1},children:m("flows.subflow.legacyExecution")}),(0,d.jsx)(bq.A,{open:y,onClose:()=>z(!1),title:m("flows.subflow.pickerTitle"),description:m("flows.subflow.pickerHelp"),isLoading:w,skeleton:(0,d.jsx)(bx.o,{}),emptyMessage:m("flows.subflow.pickerEmpty"),searchable:!0,searchPlaceholder:m("flows.subflow.search"),searchTerm:N.searchTerm,onSearchChange:N.setSearchTerm,items:N.items.map(a=>({key:a.id,content:(0,d.jsx)(bx.A,{flow:a,selected:a.id===O,onSelect:a=>{K("subflowId",a),z(!1)},pickerMode:!0})})),groups:N.groups?N.groups.map(a=>({...a,items:a.items.map(a=>({key:a.id,content:(0,d.jsx)(bx.A,{flow:a,selected:a.id===O,onSelect:a=>{K("subflowId",a),z(!1)},pickerMode:!0})}))})):null,collapsedKeys:N.collapsedKeys,onToggleGroup:N.toggleGroup}),"guided"===l&&(0,d.jsx)(u.A,{fullWidth:!0,label:m("flows.subflow.helperTask"),value:n.description||"",onChange:a=>o({...n,description:a.target.value}),margin:"normal",multiline:!0,minRows:2,helperText:m("flows.subflow.helperTaskHelp")}),"advanced"===l&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:m("flows.subflow.inputTitle")}),(0,d.jsxs)(i.default,{role:"radiogroup","aria-label":m("flows.subflow.inputAria"),sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,d.jsx)(ct,{selected:"full-history"===U,onClick:()=>K("inputMode","full-history"),icon:(0,d.jsx)(co,{}),title:m("flows.subflow.fullHistory"),description:m("flows.subflow.fullHistoryHelp")}),(0,d.jsx)(ct,{selected:"latest-message"===U,onClick:()=>K("inputMode","latest-message"),icon:(0,d.jsx)(cp,{}),title:m("flows.subflow.latest"),description:m("flows.subflow.latestHelp")}),(0,d.jsx)(ct,{selected:"isolated"===U,onClick:()=>K("inputMode","isolated"),icon:(0,d.jsx)(cq,{}),title:m("flows.subflow.isolated"),description:m("flows.subflow.isolatedHelp")})]}),"isolated"===U&&(0,d.jsx)(u.A,{fullWidth:!0,label:m("flows.subflow.defaultPrompt"),value:T,onChange:a=>K("promptTemplate",a.target.value),margin:"normal",multiline:!0,rows:3,helperText:m("flows.subflow.defaultPromptHelp")}),(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:m("flows.subflow.workersTitle")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mb:1},children:m("flows.subflow.queueHelp")}),(0,d.jsx)(u.A,{label:m("flows.subflow.maxCopies"),type:"number",size:"small",sx:{width:240},inputProps:{min:1},value:"number"==typeof n.properties?.concurrencyLimit?n.properties.concurrencyLimit:"",onChange:a=>{let b=a.target.value;if(""===b)o(a=>{if(!a)return null;let b={...a.properties};return delete b.concurrencyLimit,{...a,properties:b}});else{let a=Math.max(1,Math.floor(Number(b)));Number.isNaN(a)||K("concurrencyLimit",a)}},helperText:m("flows.subflow.defaultFour")}),(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:m("flows.subflow.outputTitle")}),(0,d.jsxs)(i.default,{role:"radiogroup","aria-label":m("flows.subflow.outputAria"),sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,d.jsx)(ct,{selected:"final-only"!==(n.properties?.outputMode||"steps"),onClick:()=>K("outputMode","steps"),icon:(0,d.jsx)(cr,{}),title:m("flows.subflow.fullOutput"),description:m("flows.subflow.fullOutputHelp")}),(0,d.jsx)(ct,{selected:n.properties?.outputMode==="final-only",onClick:()=>K("outputMode","final-only"),icon:(0,d.jsx)(cs,{}),title:m("flows.subflow.condensed"),description:m("flows.subflow.condensedHelp")})]}),(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:m("flows.subflow.resultPresentationTitle")}),(0,d.jsxs)(i.default,{role:"radiogroup","aria-label":m("flows.subflow.resultPresentationAria"),sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,d.jsx)(ct,{selected:(n.properties?.resultPresentation??"joined")==="separate",onClick:()=>K("resultPresentation","separate"),icon:(0,d.jsx)(cV,{}),title:m("flows.subflow.resultSeparate"),description:m("flows.subflow.resultSeparateHelp")}),(0,d.jsx)(ct,{selected:(n.properties?.resultPresentation??"joined")!=="separate",onClick:()=>K("resultPresentation","joined"),icon:(0,d.jsx)(cW,{}),title:m("flows.subflow.resultJoined"),description:m("flows.subflow.resultJoinedHelp")})]}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:m("flows.subflow.resultPresentationHelp")}),(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:m("flows.subflow.debugging")}),(0,d.jsx)(H.A,{sx:{display:"block"},control:(0,d.jsx)(I.A,{checked:n.properties?.saveConversation!==!1,onChange:a=>K("saveConversation",a.target.checked)}),label:m("flows.subflow.saveConversation")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{ml:4,mt:-.5},children:m("flows.subflow.saveConversationHelp")}),(0,d.jsx)(j.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:m("flows.subflow.invocationTitle")}),(0,d.jsx)(H.A,{sx:{display:"block"},control:(0,d.jsx)(I.A,{checked:n.properties?.invocationMode==="tool",onChange:a=>K("invocationMode",a.target.checked?"tool":"handoff")}),label:m("flows.subflow.invocationTool")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{ml:4,mt:-.5},children:m("flows.subflow.invocationToolHelp")}),(0,d.jsx)(L.A,{sx:{my:3}}),(0,d.jsx)(cw,{value:{captureVariable:A,captureResource:C,captureKvScope:E,captureKvKey:G},onChange:a=>{void 0!==a.captureVariable&&B(a.captureVariable),void 0!==a.captureResource&&D(a.captureResource),void 0!==a.captureKvScope&&F(a.captureKvScope),void 0!==a.captureKvKey&&J(a.captureKvKey)}})]})]}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:m("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{if(b&&n){if("guided"===l){f(b.id,n),c();return}let a={...n.properties},d=A.trim();d?a.captureVariable=d:delete a.captureVariable;let e=C.trim();e?a.captureResource=e:delete a.captureResource;let g=aV(E,G);g?a.captureKv=g:delete a.captureKv,f(b.id,{...n,properties:a}),c()}},variant:"contained",color:"primary",children:m("flows.modal.save")})]})]})};var cZ=c(40365),c$=c(95127),c_=c(84781),c0=c(83135);let c1=(0,M.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/ResourceNodePropertiesModal"),c2=({open:a,node:b,onClose:c,onSave:f,flowNodes:g})=>{let{t:h}=(0,au.s9)(),[l,m]=(0,e.useState)(null),{servers:n,isLoading:p}=(0,bW.v)(),[r,t]=(0,e.useState)([]),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(!1);(0,e.useEffect)(()=>{if(b){m({...b.data,properties:{scope:"run",...b.data.properties}});let a=!!b.data.label&&"Resource Node"!==b.data.label.trim(),c=!!b.data.description&&b.data.description.trim().length>0;B(a||c)}},[b,a]);let C=l?.properties?.scope==="mcp"?"mcp":"run",D=l?.properties?.boundServer||"",E=l?.properties?.uri||"",F=l?.properties?.runName||"",I=(0,e.useMemo)(()=>{let a=(g??[]).filter(a=>a.id!==b?.id).map(a=>{try{return JSON.stringify(a.data?.properties??{})}catch{return""}});return(0,bT.jX)(a)},[g,b?.id]),J=(0,e.useCallback)((a,b)=>{m(c=>c?{...c,properties:{...c.properties,[a]:b}}:c)},[]);(0,e.useEffect)(()=>{if(!a||"mcp"!==C||!D){t([]),z(null);return}let b=!1;return x(!0),z(null),Q.S.listServerResources(D).then(a=>{b||(a.error?(z(a.error),t([])):t([...(a.resources??[]).map(a=>({uri:a.uri,name:a.name,description:a.description,mimeType:a.mimeType})),...(a.resourceTemplates??[]).map(a=>({uri:a.uriTemplate,name:a.name?`${a.name} (${h("flows.resource.template")})`:`(${h("flows.resource.template")})`,description:a.description}))]))}).catch(a=>{b||(c1.warn(`Failed to browse resources of ${D}`,a),z(a instanceof Error?a.message:String(a)))}).finally(()=>{b||x(!1)}),()=>{b=!0}},[a,C,D,h]);let L="run"===C&&!!F.trim()&&!aR(F.trim());return l?(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"sm",fullWidth:!0,children:[(0,d.jsx)(bS.A,{title:h("flows.resource.title"),onClose:c}),(0,d.jsx)(s.A,{children:(0,d.jsxs)(i.default,{display:"flex",flexDirection:"column",gap:2,mt:1,children:[(0,d.jsxs)(bB.A,{children:[(0,d.jsxs)(cZ.A,{row:!0,value:C,onChange:a=>J("scope","mcp"===a.target.value?"mcp":"run"),children:[(0,d.jsx)(H.A,{value:"run",control:(0,d.jsx)(c$.A,{}),label:h("flows.resource.temporary")}),(0,d.jsx)(H.A,{value:"mcp",control:(0,d.jsx)(c$.A,{}),label:h("flows.resource.mcp")})]}),(0,d.jsx)(b_.A,{children:"mcp"===C?h("flows.resource.mcpHelp"):h("flows.resource.temporaryHelp")})]}),"mcp"===C?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(bB.A,{fullWidth:!0,children:[(0,d.jsx)(bC.A,{id:"resource-server-label",children:h("flows.resource.server")}),(0,d.jsxs)(bD.A,{labelId:"resource-server-label",label:h("flows.resource.server"),value:D,onChange:a=>{J("boundServer",a.target.value)},children:[p&&(0,d.jsx)(K.A,{value:"",disabled:!0,children:h("flows.resource.loadingServers")}),n.map(a=>(0,d.jsx)(K.A,{value:a.name,children:a.name},a.name))]})]}),(0,d.jsx)(u.A,{label:h("flows.resource.uri"),value:E,onChange:a=>J("uri",a.target.value),fullWidth:!0,placeholder:h("flows.resource.uriPlaceholder"),helperText:h("flows.resource.uriHelp")}),w&&(0,d.jsxs)(i.default,{display:"flex",alignItems:"center",gap:1,children:[(0,d.jsx)(G.default,{size:18}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:h("flows.resource.loading")})]}),y&&(0,d.jsx)(j.A,{variant:"body2",color:"warning.main",children:h("flows.resource.loadFailed",{error:y})}),!w&&!y&&D&&0===r.length&&(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:h("flows.resource.none")}),r.length>0&&(0,d.jsx)(aF.A,{dense:!0,sx:{maxHeight:240,overflow:"auto",border:1,borderColor:"divider",borderRadius:1},children:r.map(a=>(0,d.jsxs)(aI.A,{selected:a.uri===E,onClick:()=>J("uri",a.uri),children:[(0,d.jsx)(aG.A,{sx:{minWidth:34},children:(0,d.jsx)(am.A,{fontSize:"small",sx:{color:"#009688"}})}),(0,d.jsx)(aH.A,{primary:a.name||a.uri,secondary:a.name?a.uri:a.description,secondaryTypographyProps:{sx:{wordBreak:"break-all"}}})]},a.uri))})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(c_.A,{freeSolo:!0,options:I,inputValue:F,onInputChange:(a,b)=>J("runName",b),renderInput:a=>(0,d.jsx)(u.A,{...a,label:h("flows.resource.temporaryName"),fullWidth:!0,error:L,helperText:L?h("flows.resource.invalidName"):I.length>0?h("flows.resource.nameSuggestions"):h("flows.resource.nameHelp")})}),F.trim()&&!L&&(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:h("flows.resource.runtimeUri",{name:F.trim()})})]}),(0,d.jsx)(c0.A,{component:"button",type:"button",underline:"hover",onClick:()=>B(a=>!a),sx:{alignSelf:"flex-start"},children:A?h("flows.resource.hideAdvanced"):h("flows.resource.showAdvanced")}),(0,d.jsx)(o.A,{in:A,unmountOnExit:!0,children:(0,d.jsxs)(i.default,{display:"flex",flexDirection:"column",gap:2,children:[(0,d.jsx)(u.A,{label:h("flows.resource.label"),value:l.label,onChange:a=>m({...l,label:a.target.value}),fullWidth:!0,helperText:h("flows.resource.labelHelp")}),(0,d.jsx)(u.A,{label:h("flows.resource.description"),value:l.description??"",onChange:a=>m({...l,description:a.target.value}),fullWidth:!0,multiline:!0,minRows:2})]})})]})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:h("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{if(!b||!l)return;let a={...l.properties};"run"===C?(delete a.boundServer,delete a.uri,delete a.mimeType,a.scope="run",a.runName=F.trim()):(delete a.runName,a.scope="mcp");let c=(l.label??"").trim()||("run"===C?F.trim()||h("flows.resource.temporary"):h("flows.resource.mcp"));f(b.id,{...l,label:c,properties:a})},variant:"contained",children:h("flows.modal.save")})]})]}):null},c3=({open:a,node:b,onClose:c,onSave:f})=>{let{t:g}=(0,au.s9)(),[h,j]=(0,e.useState)(null),[l,m]=(0,e.useState)(!1);(0,e.useEffect)(()=>{b&&(j({...b.data,properties:{...b.data.properties}}),m(!!b.data.properties?.payloadTemplate))},[b,a]);let n=(a,b)=>{j(c=>c?{...c,properties:{...c.properties,[a]:b}}:c)};if(!h)return null;let r=h.properties?.topic??"",t=h.properties?.payloadTemplate??"";return(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"sm",fullWidth:!0,children:[(0,d.jsx)(bS.A,{title:g("flows.signal.title"),onClose:c}),(0,d.jsx)(s.A,{children:(0,d.jsxs)(i.default,{display:"flex",flexDirection:"column",gap:2,mt:1,children:[(0,d.jsx)(u.A,{label:g("flows.signal.name"),value:r,onChange:a=>n("topic",a.target.value),fullWidth:!0,required:!0,autoFocus:!0,error:!r.trim(),placeholder:g("flows.signal.placeholder"),helperText:r.trim()?g("flows.signal.nameHelp"):g("flows.signal.required")}),(0,d.jsx)(p.A,{severity:"info",children:g("flows.signal.behavior")}),(0,d.jsx)(c0.A,{component:"button",type:"button",underline:"hover",onClick:()=>m(a=>!a),sx:{alignSelf:"flex-start"},children:l?g("flows.signal.hideAdvanced"):g("flows.signal.showAdvanced")}),(0,d.jsx)(o.A,{in:l,unmountOnExit:!0,children:(0,d.jsx)(u.A,{label:g("flows.signal.payload"),value:t,onChange:a=>n("payloadTemplate",a.target.value),fullWidth:!0,multiline:!0,minRows:3,placeholder:g("flows.signal.payloadPlaceholder"),helperText:g("flows.signal.payloadHelp")})})]})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:g("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{if(!b||!h)return;let a={...h.properties},c="string"==typeof a.topic?a.topic.trim():"";a.topic=c;let d=c||g("flows.signal.defaultName");f(b.id,{...h,label:d,properties:a})},variant:"contained",children:g("flows.modal.save")})]})]})};var c4=c(86471),c5=c(75764);let c6=(0,w.A)((0,d.jsx)("path",{d:"m20 12-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8z"}),"ArrowDownward"),c7=({open:a,node:b,onClose:c,onSave:f})=>{let{t:g}=(0,au.s9)(),[h,l]=(0,e.useState)(null);(0,e.useEffect)(()=>{b&&l({...b.data,properties:{...b.data.properties,entries:Array.isArray(b.data.properties?.entries)?[...b.data.properties.entries]:[]}})},[b,a]);let n=h?.properties?.entries??[],o=a=>l(b=>b?{...b,properties:{...b.properties,entries:a}}:b),r=(a,b)=>o(n.map((c,d)=>d===a?{...c,...b}:c)),t=(a,b)=>{let c=a+b;if(c<0||c>=n.length)return;let d=[...n];[d[a],d[c]]=[d[c],d[a]],o(d)},w=n.reduce((a,b,c)=>{if("toolCall"!==b.kind)return a;let d=(b.argumentsJson??"").trim();if(!d||/\$\{(?:var|res):[^}]*\}/.test(d))return a;try{JSON.parse(d)}catch{a.push(c)}return a},[]);return h?(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"md",fullWidth:!0,children:[(0,d.jsx)(bS.A,{title:g("flows.static.title"),onClose:c}),(0,d.jsx)(s.A,{children:(0,d.jsxs)(i.default,{display:"flex",flexDirection:"column",gap:2,mt:1,children:[(0,d.jsxs)(p.A,{severity:"info",children:[g("flows.static.info")," ",g("flows.static.substitutionNote")," ",(0,d.jsx)("a",{href:"https://github.com/mario-andreschak/FLUJO/blob/main/docs/features/flows/static-node.md",target:"_blank",rel:"noreferrer",children:g("flows.static.docsLink")})]}),(0,d.jsx)(u.A,{label:g("flows.static.name"),value:h.properties?.name??h.label??"",onChange:a=>l(b=>b?{...b,label:a.target.value,properties:{...b.properties,name:a.target.value}}:b),fullWidth:!0}),(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:h.properties?.injectOnce===!0,onChange:a=>l(b=>b?{...b,properties:{...b.properties,injectOnce:a.target.checked}}:b)}),label:g("flows.static.injectOnce")}),(0,d.jsx)(b_.A,{sx:{mt:-2},children:g("flows.static.injectOnce.help")}),0===n.length&&(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:g("flows.static.empty")}),n.map((a,b)=>(0,d.jsxs)(D.A,{variant:"outlined",sx:{p:2},children:[(0,d.jsxs)(i.default,{display:"flex",alignItems:"center",justifyContent:"space-between",mb:1,children:[(0,d.jsxs)(j.A,{variant:"subtitle2",children:[b+1,"."," ","toolCall"===a.kind?g("flows.static.toolCallEntry"):g("flows.static.messageEntry")]}),(0,d.jsxs)(i.default,{children:[(0,d.jsx)(m.A,{size:"small","aria-label":g("flows.static.moveUp"),onClick:()=>t(b,-1),disabled:0===b,children:(0,d.jsx)(c5.A,{fontSize:"small"})}),(0,d.jsx)(m.A,{size:"small","aria-label":g("flows.static.moveDown"),onClick:()=>t(b,1),disabled:b===n.length-1,children:(0,d.jsx)(c6,{fontSize:"small"})}),(0,d.jsx)(m.A,{size:"small","aria-label":g("flows.static.remove"),onClick:()=>o(n.filter((a,c)=>c!==b)),children:(0,d.jsx)(c4.A,{fontSize:"small"})})]})]}),"message"===a.kind?(0,d.jsxs)(i.default,{display:"flex",flexDirection:"column",gap:2,children:[(0,d.jsxs)(u.A,{select:!0,label:g("flows.static.role"),value:a.role,onChange:a=>r(b,{role:a.target.value}),sx:{maxWidth:220},children:[(0,d.jsx)(K.A,{value:"system",children:"system"}),(0,d.jsx)(K.A,{value:"user",children:"user"}),(0,d.jsx)(K.A,{value:"assistant",children:"assistant"})]}),(0,d.jsx)(u.A,{label:g("flows.static.content"),value:a.content,onChange:a=>r(b,{content:a.target.value}),fullWidth:!0,multiline:!0,rows:3})]}):(0,d.jsxs)(i.default,{display:"flex",flexDirection:"column",gap:2,children:[(0,d.jsx)(u.A,{label:g("flows.static.toolName"),value:a.toolName,onChange:a=>r(b,{toolName:a.target.value}),fullWidth:!0,error:!a.toolName?.trim()}),(0,d.jsx)(u.A,{label:g("flows.static.arguments"),value:a.argumentsJson,onChange:a=>r(b,{argumentsJson:a.target.value}),fullWidth:!0,multiline:!0,rows:3,error:w.includes(b),helperText:w.includes(b)?g("flows.static.invalidJson"):g("flows.static.argumentsHelp")}),(0,d.jsx)(u.A,{label:g("flows.static.result"),value:a.result,onChange:a=>r(b,{result:a.target.value}),fullWidth:!0,multiline:!0,rows:3})]})]},b)),(0,d.jsxs)(i.default,{display:"flex",gap:1,children:[(0,d.jsx)(k.A,{onClick:()=>o([...n,{kind:"message",role:"user",content:""}]),variant:"outlined",children:g("flows.static.addMessage")}),(0,d.jsx)(k.A,{onClick:()=>o([...n,{kind:"toolCall",toolName:"",argumentsJson:"{}",result:""}]),variant:"outlined",children:g("flows.static.addToolCall")})]})]})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:g("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:()=>{b&&h&&f(b.id,{...h,properties:{...h.properties,entries:n}})},variant:"contained",disabled:w.length>0,children:g("flows.modal.save")})]})]}):null};var c8=c(20217),c9=c(35051),da=c(17852),db=c(18377),dc=c(21190),dd=c(98248),de=c(96315),df=c(14712),dg=c(53358),dh=c(89722),di=c(18974),dj=c(84271),dk=c(10079),dl=c(95946);let dm=(0,M.h)("frontend/components/FlowBuilder/Modals/TriggerNodePropertiesModal"),dn={type:"schedule",cron:"0 9 * * *"},dp={type:"file-watch",path:"",events:["add","change"]},dq={type:"mcp-poll",serverName:"",toolName:"",args:{},cron:"*/5 * * * *",evaluate:{mode:"on-change"}},dr={type:"url-watch",url:"",cron:"*/15 * * * *"},ds={type:"flow-event",source:{flowId:""},on:["completed"]},dt=({open:a,node:b,flowId:c,onClose:f,onSave:g})=>{let{t:h}=(0,au.s9)(),[l,m]=(0,e.useState)(h("flows.trigger.defaultName")),[n,o]=(0,e.useState)(!0),[r,t]=(0,e.useState)(dn),[w,x]=(0,e.useState)("skip"),[y,z]=(0,e.useState)(""),[A,B]=(0,e.useState)(!1),[C,D]=(0,e.useState)(null),[E,F]=(0,e.useState)([]),[J,M]=(0,e.useState)(()=>crypto.randomUUID()),[N,O]=(0,e.useState)(!1);(0,e.useEffect)(()=>{if(!a||!b)return;D(null);let c=b.data.properties||{};m("string"==typeof c.name?c.name:h("flows.trigger.defaultName")),o(!1!==c.enabled),t(c.trigger||dn),x(c.overlapStrategy||"skip"),z("string"==typeof c.prompt?c.prompt:""),"string"==typeof c.executionId&&c.executionId?(M(c.executionId),O(!0)):(M(crypto.randomUUID()),O(!1))},[a,b,h]),(0,e.useEffect)(()=>{if(!a)return;let b=!1;return P.g.loadFlows().then(a=>{b||F(a||[])}).catch(()=>{b||F([])}),()=>{b=!0}},[a]);let Q=(0,e.useCallback)(async()=>{if(!b)return;B(!0),D(null);let a={name:l.trim()||h("flows.trigger.defaultName"),flowId:c,prompt:y,overlapStrategy:w,trigger:r,enabled:n};try{let c;if(!(c=N?await de.P.update(J,a):await de.P.create({...a,id:J})).success){D(c.error||h("flows.trigger.saveFailed")),B(!1);return}O(!0);let d=l.trim()||h("flows.trigger.defaultNode");g(b.id,{...b.data,label:d,type:"trigger",properties:{executionId:J,name:l,enabled:n,trigger:r,overlapStrategy:w,prompt:y}})}catch(a){D(a instanceof Error?a.message:h("flows.trigger.saveFailed")),B(!1);return}B(!1),dm.info(`TriggerNodePropertiesModal: Saved trigger node for executionId=${J}`)},[b,J,l,n,r,w,y,c,N,g,h]);return b?(0,d.jsx)(d.Fragment,{children:(0,d.jsxs)(q.A,{open:a,onClose:f,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"#E91E63",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,d.jsx)(bS.A,{title:h("flows.trigger.title"),onClose:f}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(s.A,{sx:{p:3},children:[(0,d.jsxs)(p.A,{severity:"info",sx:{mb:2},children:[h("flows.trigger.info"),!N&&(0,d.jsxs)(d.Fragment,{children:[" ",h("flows.trigger.createdOnSave")]})]}),(0,d.jsx)(u.A,{fullWidth:!0,label:h("flows.trigger.name"),value:l,onChange:a=>m(a.target.value),margin:"normal",placeholder:h("flows.trigger.namePlaceholder")}),(0,d.jsx)(H.A,{control:(0,d.jsx)(I.A,{checked:n,onChange:a=>o(a.target.checked),color:"primary"}),label:h("flows.trigger.enabled"),sx:{mt:1,mb:1}}),(0,d.jsx)(j.A,{variant:"subtitle1",sx:{mt:2,mb:1,fontWeight:600},children:h("flows.trigger.when")}),(0,d.jsxs)(i.default,{role:"radiogroup","aria-label":h("flows.trigger.typeAria"),sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,d.jsx)(df.A,{selected:"schedule"===r.type,onClick:()=>{"schedule"!==r.type&&t(dn)},icon:(0,d.jsx)(c8.A,{}),title:h("flows.trigger.schedule"),description:h("flows.trigger.scheduleHelp")}),(0,d.jsx)(df.A,{selected:"webhook"===r.type,onClick:()=>{"webhook"!==r.type&&t({type:"webhook",token:crypto.randomUUID()})},icon:(0,d.jsx)(c9.A,{}),title:h("flows.trigger.webhook"),description:h("flows.trigger.webhookHelp")}),(0,d.jsx)(df.A,{selected:"file-watch"===r.type,onClick:()=>{"file-watch"!==r.type&&t(dp)},icon:(0,d.jsx)(da.A,{}),title:h("flows.trigger.files"),description:h("flows.trigger.filesHelp")}),(0,d.jsx)(df.A,{selected:"mcp-poll"===r.type,onClick:()=>{"mcp-poll"!==r.type&&t(dq)},icon:(0,d.jsx)(db.A,{}),title:h("flows.trigger.tool"),description:h("flows.trigger.toolHelp")}),(0,d.jsx)(df.A,{selected:"url-watch"===r.type,onClick:()=>{"url-watch"!==r.type&&t(dr)},icon:(0,d.jsx)(dc.A,{}),title:h("flows.trigger.url"),description:h("flows.trigger.urlHelp")}),(0,d.jsx)(df.A,{selected:"flow-event"===r.type,onClick:()=>{"flow-event"!==r.type&&t(ds)},icon:(0,d.jsx)(dd.A,{}),title:h("flows.trigger.flow"),description:h("flows.trigger.flowHelp")})]}),"schedule"===r.type&&(0,d.jsx)(dg.A,{cron:r.cron,timezone:r.timezone,onChange:({cron:a,timezone:b})=>t({...r,cron:a,timezone:b}),catchUp:!0===r.catchUp,onCatchUpChange:a=>t({...r,catchUp:a})}),"webhook"===r.type&&(0,d.jsx)(dh.A,{config:r,onChange:t,executionId:J,saved:N}),"file-watch"===r.type&&(0,d.jsx)(di.A,{config:r,onChange:t}),"mcp-poll"===r.type&&(0,d.jsx)(dj.A,{config:r,onChange:t}),"url-watch"===r.type&&(0,d.jsx)(dk.A,{config:r,onChange:t}),"flow-event"===r.type&&(0,d.jsx)(dl.A,{config:r,onChange:t,flows:E,currentExecutionId:J}),(0,d.jsxs)(bB.A,{fullWidth:!0,margin:"normal",children:[(0,d.jsx)(bC.A,{id:"overlap-strategy-label",children:h("flows.trigger.overlap")}),(0,d.jsxs)(bD.A,{labelId:"overlap-strategy-label",label:h("flows.trigger.overlap"),value:w,onChange:a=>x(a.target.value),children:[(0,d.jsx)(K.A,{value:"skip",children:h("flows.trigger.overlapSkip")}),(0,d.jsx)(K.A,{value:"queue",children:h("flows.trigger.overlapQueue")}),(0,d.jsx)(K.A,{value:"parallel",children:h("flows.trigger.overlapParallel")}),(0,d.jsx)(K.A,{value:"error",children:h("flows.trigger.overlapError")})]})]}),(0,d.jsx)(u.A,{fullWidth:!0,label:h("flows.trigger.prompt"),value:y,onChange:a=>z(a.target.value),margin:"normal",multiline:!0,minRows:2,placeholder:h("flows.trigger.promptPlaceholder"),helperText:h("flows.trigger.promptHelp")}),C&&(0,d.jsx)(p.A,{severity:"error",sx:{mt:2},children:C})]}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:f,disabled:A,children:h("flows.modal.cancel")}),(0,d.jsx)(k.A,{onClick:Q,variant:"contained",disabled:A,startIcon:A?(0,d.jsx)(G.default,{size:16}):void 0,sx:{backgroundColor:"#E91E63","&:hover":{backgroundColor:"#C2185B"}},children:A?h("flows.builder.saving"):h("flows.modal.save")})]})]})}):null};var du=c(4372),dv=c(54633);let dw=({flow:a,autoLayout:b=!1,fitViewOnChange:c=!1})=>{let f=(0,h.A)(),g=(0,e.useRef)(null),i=(0,e.useMemo)(()=>(a.edges||[]).filter(a=>a.source&&a.target&&a.sourceHandle&&a.targetHandle),[a.edges]),j=(0,e.useMemo)(()=>b?ac(a.nodes||[],i):a.nodes||[],[b,i,a.nodes]);(0,e.useEffect)(()=>{if(!c||!g.current)return;let a=window.setTimeout(()=>{g.current?.fitView({padding:.18,duration:260})},40);return()=>window.clearTimeout(a)},[c,j]);let k=(0,e.useMemo)(()=>({type:"custom",animated:!1,style:{stroke:f.palette.text.secondary,strokeWidth:2},markerEnd:{type:dv.TG.ArrowClosed,width:20,height:20,color:f.palette.text.secondary}}),[f.palette.text.secondary]);return(0,d.jsx)(N.Gc,{nodes:j,edges:i,nodeTypes:ag.c_,edgeTypes:ag.nd,defaultEdgeOptions:k,connectionLineType:dv.Do.SmoothStep,onInit:a=>{g.current=a},fitView:!0,minZoom:.1,maxZoom:2,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,deleteKeyCode:null,proOptions:{hideAttribution:!0},children:(0,d.jsx)(N.VS,{})})},dx=a=>(0,d.jsx)(N.Ln,{children:(0,d.jsx)(dw,{...a})}),dy=(0,M.h)("components/flow/FlowBuilder/Modals/FlowVersionHistoryDialog"),dz=({open:a,flowId:b,onClose:c,onRestore:g})=>{let{t:h,tp:l,formatDate:m}=(0,au.s9)(),[n,o]=(0,e.useState)(!1),[p,r]=(0,e.useState)([]),[t,u]=(0,e.useState)(null),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(null);(0,e.useEffect)(()=>{if(!a||!b)return;let c=!1;return o(!0),r([]),u(null),z(null),P.g.listFlowVersions(b).then(a=>{c||r(a)}).finally(()=>{c||o(!1)}),()=>{c=!0}},[a,b]);let A=(0,e.useCallback)(a=>{b&&(u(a),x(!0),z(null),P.g.getFlowVersion(b,a).then(b=>{b?z(b.flow):dy.warn(`Version ${a} could not be loaded (pruned?)`)}).finally(()=>x(!1)))},[b]),B=(0,e.useCallback)(()=>{y&&g(y)},[y,g]);return(0,d.jsxs)(q.A,{open:a,onClose:c,maxWidth:"lg",fullWidth:!0,children:[(0,d.jsx)(bS.A,{title:h("flows.history.title"),onClose:c}),(0,d.jsx)(s.A,{dividers:!0,sx:{p:0},children:(0,d.jsxs)(i.default,{sx:{display:"flex",height:"65vh"},children:[(0,d.jsx)(i.default,{sx:{width:300,borderRight:1,borderColor:"divider",overflowY:"auto"},children:n?(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,d.jsx)(G.default,{size:28})}):0===p.length?(0,d.jsx)(i.default,{sx:{p:3},children:(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:h("flows.history.empty")})}):(0,d.jsx)(aF.A,{disablePadding:!0,children:p.map((a,b)=>(0,d.jsxs)(f().Fragment,{children:[(0,d.jsx)(aI.A,{selected:a.versionId===t,onClick:()=>A(a.versionId),children:(0,d.jsx)(aH.A,{primary:(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(j.A,{variant:"body2",children:m(a.savedAt,{dateStyle:"medium",timeStyle:"short"})}),0===b&&(0,d.jsx)(F.A,{label:h("flows.history.mostRecent"),size:"small"})]}),secondary:`${l("flows.history.node",a.nodeCount)} \xb7 ${l("flows.history.edge",a.edgeCount)}`})}),(0,d.jsx)(L.A,{component:"li"})]},a.versionId))})}),(0,d.jsx)(i.default,{sx:{flex:1,position:"relative",minWidth:0},children:w?(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,d.jsx)(G.default,{size:32})}):y?(0,d.jsx)(dx,{flow:y}):(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",p:4},children:(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",align:"center",children:0===p.length?h("flows.history.afterSave"):h("flows.history.select")})})})]})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:c,children:h("common.close")}),(0,d.jsx)(k.A,{variant:"contained",color:"primary",startIcon:(0,d.jsx)(du.A,{}),onClick:B,disabled:!y,children:h("flows.history.restore")})]})]})},dA=(a,b,c,d)=>a?a(b,d):c,dB=(a,b,c,d)=>a?a(b,c):d,dC=a=>a.data?.bidirectional===!0,dD=a=>!(0,T.BY)(a),dE=a=>String(a?.type??a?.data?.type??""),dF=a=>String(a?.data?.label??a?.id??"Unknown node");function dG(a,b,c,d,e,f){return f?{...f,id:a,source:b,target:c,sourceHandle:d,targetHandle:e,data:{...f.data??{},edgeType:"standard",bidirectional:!1},markerStart:void 0}:{id:a,source:b,target:c,sourceHandle:d,targetHandle:e,type:"custom",animated:!0,data:{edgeType:"standard"}}}function dH({open:a,processNodeId:b,parentFlow:c,existingFlowNames:f,onClose:g,onAccept:h}){let{t:l,tp:m,formatList:n}=(0,au.s9)(),[o,r]=(0,e.useState)(""),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(null),C=()=>{b&&(B(null),x(function({parentFlow:a,processNodeId:b,subflowName:c,existingFlowNames:d=[],createId:e=O.A,t:f,tp:g}){let h=[],i=[],j=a.nodes??[],k=a.edges??[],l=new Map(j.map(a=>[a.id,a])),m=l.get(b),n=c.trim();m&&"process"===dE(m)||h.push({code:"target-not-process",message:dA(f,"flows.convert.error.target","The selected node no longer exists or is not a Process node."),nodeId:b}),n?/^[\w-]+$/.test(n)?d.some(a=>a.toLowerCase()===n.toLowerCase())&&h.push({code:"duplicate-name",message:dA(f,"flows.convert.error.duplicateName",`A flow named "${n}" already exists.`,{name:n})}):h.push({code:"invalid-name",message:dA(f,"flows.convert.error.invalidName","The subflow name may contain only letters, numbers, underscores, and dashes.")}):h.push({code:"name-required",message:dA(f,"flows.convert.error.nameRequired","Enter a name for the new subflow.")});let o=new Set;m&&o.add(m.id);let p=m?[m.id]:[];for(;p.length>0;){let a=p.shift();for(let b of k){if(!dD(b))continue;let c=[];for(let d of(b.source===a&&c.push(b.target),dC(b)&&b.target===a&&c.push(b.source),c)){if(o.has(d))continue;let a=l.get(d);if(!a){h.push({code:"missing-edge-node",message:dA(f,"flows.convert.error.missingEdgeNode",`Edge "${b.id}" points to a missing node. Repair the flow before converting.`,{edge:b.id}),edgeId:b.id});continue}let c=dE(a);"signal"===c?(o.add(d),p.push(d)):("mcp"===c||"resource"===c)&&h.push({code:"attachment-on-control-edge",message:dA(f,"flows.convert.error.attachmentControl",`${dF(a)} is connected as control flow. Reconnect it with its ${c.toUpperCase()} attachment handles before converting.`,{node:dF(a),type:c.toUpperCase()}),nodeId:d,edgeId:b.id})}}}let q=!0;for(;q;)for(let a of(q=!1,k)){if(!(0,T.BY)(a))continue;let b=o.has(a.source);if(b===o.has(a.target))continue;let c=b?a.target:a.source,d=dE(l.get(c));"mcp"===d||"resource"===d?(o.add(c),q=!0):h.push({code:"unsupported-attachment",message:dA(f,"flows.convert.error.unsupportedAttachment",`Attachment edge "${a.id}" does not connect to an MCP or Resource node.`,{edge:a.id}),edgeId:a.id,nodeId:c})}let r=k.filter(a=>o.has(a.source)&&o.has(a.target)),s=[],t=[],u=new Set;for(let a of k){let b=o.has(a.source);if(b===o.has(a.target))continue;if((0,T.BY)(a)){h.push({code:"shared-attachment",message:dA(f,"flows.convert.error.sharedAttachment",`Attachment "${a.id}" is also used outside the converted region. Duplicate or disconnect that attachment first.`,{edge:a.id}),edgeId:a.id});continue}let c=b?a.source:a.target,d=b?a.target:a.source,e={edge:a,edgeId:a.id,insideNodeId:c,outsideNodeId:d,outsideLabel:dF(l.get(d))};u.add(d),b?t.push(e):s.push(e),dC(a)&&((b?s:t).push(e),h.push({code:"bidirectional-boundary",message:dA(f,"flows.convert.error.bidirectional",`Boundary edge "${a.id}" is bidirectional. Make it one-way before converting; internal bidirectional edges are preserved.`,{edge:a.id}),edgeId:a.id}))}let v=[...new Map(t.map(a=>[a.edgeId,a])).values()];v.length>1&&h.push({code:"multiple-outputs",message:dB(g,"flows.convert.error.outputs",v.length,`This region has ${v.length} distinct parent exits. A Subflow supports one outgoing control path; join the branches before converting.`)});let w=j.filter(a=>o.has(a.id)),x={includedNodes:w.map(a=>({id:a.id,label:dF(a),type:dE(a)})),attachmentCount:w.filter(a=>"mcp"===dE(a)||"resource"===dE(a)).length,signalCount:w.filter(a=>"signal"===dE(a)).length,internalEdgeCount:r.length,inputCount:new Set(s.map(a=>a.edgeId)).size,outputCount:v.length,excludedBoundaryNodes:[...u].map(a=>{let b=l.get(a);return{id:a,label:dF(b),type:dE(b)}}),rewires:[dB(g,"flows.convert.rewire.inputs",new Set(s.map(a=>a.edgeId)).size,`${new Set(s.map(a=>a.edgeId)).size} parent input edge(s) will target the new Subflow node.`),1===v.length?dA(f,"flows.convert.rewire.output",`The parent output to ${v[0].outsideLabel} will leave the new Subflow node.`,{node:v[0].outsideLabel}):dA(f,"flows.convert.rewire.noOutput","The new Subflow node will have no parent output."),dA(f,"flows.convert.rewire.childInput","The child Start node will provide an isolated input to the converted Process.")],warnings:i};0===v.length&&i.push(dA(f,"flows.convert.warning.noFollowup","No parent follow-up exists; the extracted fan-out will finish inside the child flow."));let y=s.map(({edge:a,...b})=>b),z=t.map(({edge:a,...b})=>b),A={valid:0===h.length,errors:h,selectedNodeIds:[...o],selectedEdgeIds:r.map(a=>a.id),boundaryInputs:y,boundaryOutputs:z,preview:x};if(h.length>0||!m)return A;let B=e(),C=e(),D=e(),E=()=>`conversion-${e()}`,F=w.filter(a=>{let b=dE(a);return"process"===b||"signal"===b}),G=Math.min(...w.map(a=>a.position.y),m.position.y),H=Math.max(...w.map(a=>a.position.y),m.position.y),I={id:C,type:"start",position:{x:m.position.x,y:G-180},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}},J={id:D,type:"finish",position:{x:m.position.x,y:H+180},data:{label:"Finish Node",type:"finish",properties:{}}},K=[...r.map(a=>({...a,data:a.data?{...a.data}:a.data})),dG(E(),C,m.id,"start-bottom","process-top")];if(1===v.length){let a=v[0];K.push(dG(E(),a.insideNodeId,D,"signal"===dE(l.get(a.insideNodeId))?"signal-bottom":"process-bottom","finish-top",a.edge))}else{let a=F.filter(a=>!k.some(b=>!!dD(b)&&(!!(b.source===a.id&&o.has(b.target))||dC(b)&&b.target===a.id&&o.has(b.source)))),b=a.length>0?a:[m];for(let a of(b.length>1&&i.push(dB(g,"flows.convert.warning.branches",b.length,`${b.length} internal branches will converge on the child Finish node.`)),b))K.push(dG(E(),a.id,D,"signal"===dE(a)?"signal-bottom":"process-bottom","finish-top"))}let L={id:B,name:n,description:`Converted from ${dF(m)} in ${a.name}`,nodes:[I,...w,J],edges:K},M={...m,type:"subflow",selected:!1,data:{label:n,type:"subflow",description:`Runs the ${n} subflow`,properties:{subflowId:B,inputMode:"isolated",outputMode:"final-only",allowCallerPrompt:!0}}},N=j.filter(a=>!o.has(a.id));N.push(M);let P=k.flatMap(a=>{let b=o.has(a.source),c=o.has(a.target);return b&&c?[]:b||c?(0,T.BY)(a)?[]:[{...a,source:b?M.id:a.source,target:c?M.id:a.target,sourceHandle:b?"subflow-bottom":a.sourceHandle,targetHandle:c?"subflow-top":a.targetHandle,data:a.data?{...a.data}:a.data}]:[a]}),Q={...a,nodes:N,edges:P};return{...A,valid:!0,childFlow:L,parentFlow:Q}}({parentFlow:c,processNodeId:b,subflowName:o,existingFlowNames:f,t:l,tp:m})))},D=async()=>{if(w?.valid&&w.childFlow&&w.parentFlow){z(!0),B(null);try{await h(w),g()}catch(a){B(a instanceof Error?a.message:l("flows.convert.saveFailed"))}finally{z(!1)}}};return(0,d.jsxs)(q.A,{open:a,onClose:y?void 0:g,fullWidth:!0,maxWidth:"md",children:[(0,d.jsx)(bS.A,{title:w?l("flows.convert.previewTitle"):l("flows.convert.title"),onClose:y?()=>{}:g}),(0,d.jsx)(s.A,{children:w?(0,d.jsxs)(bb.A,{spacing:2,children:[w.errors.length>0&&(0,d.jsxs)(p.A,{severity:"error",children:[(0,d.jsx)(j.A,{fontWeight:600,children:l("flows.convert.invalid")}),(0,d.jsx)(aF.A,{dense:!0,disablePadding:!0,children:w.errors.map((a,b)=>(0,d.jsx)(aJ.Ay,{disableGutters:!0,children:(0,d.jsx)(aH.A,{primary:a.message})},`${a.code}-${b}`))})]}),A&&(0,d.jsx)(p.A,{severity:"error",children:A}),w.preview.warnings.map((a,b)=>(0,d.jsx)(p.A,{severity:"warning",children:a},`${a}-${b}`)),(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"subtitle1",fontWeight:600,children:l("flows.convert.included",{name:o.trim()})}),(0,d.jsx)(bb.A,{direction:"row",gap:1,flexWrap:"wrap",sx:{mt:1},children:w.preview.includedNodes.map(a=>(0,d.jsx)(F.A,{label:`${a.label} \xb7 ${a.type}`,size:"small"},a.id))}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{mt:1},children:l("flows.convert.summary",{attachments:m("flows.convert.attachment",w.preview.attachmentCount),signals:m("flows.convert.signal",w.preview.signalCount),edges:m("flows.convert.edge",w.preview.internalEdgeCount)})})]}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(i.default,{children:[(0,d.jsx)(j.A,{variant:"subtitle1",fontWeight:600,children:l("flows.convert.boundary")}),(0,d.jsx)(aF.A,{dense:!0,children:w.preview.rewires.map(a=>(0,d.jsx)(aJ.Ay,{disableGutters:!0,children:(0,d.jsx)(aH.A,{primary:a})},a))}),w.preview.excludedBoundaryNodes.length>0&&(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:l("flows.convert.keptParent",{nodes:n(w.preview.excludedBoundaryNodes.map(a=>`${a.label} (${a.type})`))})})]}),(0,d.jsx)(p.A,{severity:"info",children:l("flows.convert.atomic")})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(t.A,{sx:{mb:2},children:l("flows.convert.help")}),(0,d.jsx)(u.A,{autoFocus:!0,fullWidth:!0,label:l("flows.convert.name"),value:o,onChange:a=>r(a.target.value),onKeyDown:a=>{"Enter"===a.key&&C()}})]})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:g,disabled:y,children:w?l("flows.convert.reject"):l("flows.modal.cancel")}),w?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.A,{onClick:()=>{x(null),B(null)},disabled:y,children:l("flows.convert.back")}),(0,d.jsx)(k.A,{variant:"contained",onClick:D,disabled:!w.valid||y,children:y?l("flows.convert.converting"):l("flows.convert.accept")})]}):(0,d.jsx)(k.A,{variant:"contained",onClick:C,children:l("flows.convert.preview")})]})]})}let dI=(0,w.A)((0,d.jsx)("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3m3-10H5V5h10z"}),"Save"),dJ=(0,w.A)((0,d.jsx)("path",{d:"M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8"}),"Undo"),dK=(0,w.A)((0,d.jsx)("path",{d:"M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7.22L3.9 16c1.05-3.19 4.05-5.5 7.6-5.5 1.95 0 3.73.72 5.12 1.88L13 16h9V7z"}),"Redo"),dL=(0,w.A)((0,d.jsx)("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"MoreHoriz");var dM=c(60389),dN=c(26272);let dO=(0,M.h)("frontend/components/Flow/FlowManager/ImproveFlowDialog"),dP=({open:a,onClose:b,currentFlow:c,onImproved:f,initialDescription:g})=>{let{t:h}=(0,au.s9)(),[j,l]=(0,e.useState)(""),[m,n]=(0,e.useState)([]),[o,r]=(0,e.useState)(""),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(null);(0,e.useEffect)(()=>{a&&l(g??"")},[a,g]),(0,e.useEffect)(()=>{if(!a)return;let b=!1;return R.N.loadModels().then(a=>{b||(n(a),r(b=>a.some(a=>a.id===b)?b:a[0]?.id??""))}).catch(a=>{dO.warn("Failed to load models for the improve dialog",a),b||B(h("flows.generator.modelsFailed"))}),()=>{b=!0}},[a,h]);let C=(0,e.useCallback)(()=>{y||(B(null),b())},[y,b]),D=(0,e.useCallback)(async()=>{B(null),z(!0);try{let a={...c,nodes:[...c.nodes],edges:[...c.edges]},b=await P.g.improveFlow(a,j.trim(),o,{allowInstall:w});if(!b.success)return void B(b.error);dO.info("Flow improved",{flowId:b.flow.id,attempts:b.attempts,errors:b.validation.errorCount,warnings:b.validation.warningCount,installedServers:b.installedServers.length}),l(""),f({flow:b.flow,errorCount:b.validation.errorCount,warningCount:b.validation.warningCount,attempts:b.attempts,installedServers:b.installedServers})}finally{z(!1)}},[c,j,o,w,f]),E=!y&&j.trim().length>0&&!!o;return(0,d.jsxs)(q.A,{open:a,onClose:C,maxWidth:"sm",fullWidth:!0,children:[(0,d.jsx)(bS.A,{title:h("flows.improve.title"),onClose:C}),(0,d.jsxs)(s.A,{children:[(0,d.jsx)(t.A,{sx:{mb:2},children:h("flows.improve.description")}),A&&(0,d.jsx)(p.A,{severity:"error",sx:{mb:2},onClose:()=>B(null),children:A}),(0,d.jsx)(u.A,{autoFocus:!0,fullWidth:!0,multiline:!0,minRows:4,label:h("flows.improve.change"),placeholder:h("flows.improve.placeholder"),value:j,onChange:a=>l(a.target.value),disabled:y,sx:{mb:2}}),(0,d.jsxs)(bB.A,{fullWidth:!0,disabled:y||0===m.length,children:[(0,d.jsx)(bC.A,{id:"improve-flow-model-label",children:h("flows.improve.model")}),(0,d.jsx)(bD.A,{labelId:"improve-flow-model-label",label:h("flows.improve.model"),value:o,onChange:a=>r(a.target.value),children:m.map(a=>(0,d.jsx)(K.A,{value:a.id,children:a.displayName?.trim()||a.name},a.id))})]}),(0,d.jsx)(H.A,{sx:{mt:2},control:(0,d.jsx)(bK.A,{checked:w,onChange:a=>x(a.target.checked),disabled:y}),label:h("flows.improve.allowInstall")}),w&&(0,d.jsx)(p.A,{severity:"warning",sx:{mt:1},children:h("flows.improve.installWarning")}),y&&(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1.5,mt:2},children:[(0,d.jsx)(G.default,{size:20}),(0,d.jsx)(t.A,{children:w?h("flows.improve.workingInstall"):h("flows.improve.working")})]})]}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:C,disabled:y,children:h("flows.improve.cancel")}),(0,d.jsx)(k.A,{onClick:D,variant:"contained",color:"primary",startIcon:(0,d.jsx)(dN.A,{}),disabled:!E,children:h("flows.improve.action")})]})]})};var dQ=c(78685);let dR=a=>({source:`${a}-bottom`,target:`${a}-top`});function dS(a){return a.data?.type??a.type??"unknown"}let dT=(0,w.A)((0,d.jsx)("path",{d:"M13 2H4c-1.1 0-2 .9-2 2v9c0 .55.45 1 1 1s1-.45 1-1V4h9c.55 0 1-.45 1-1s-.45-1-1-1m4 4H8c-1.1 0-2 .9-2 2v9c0 .55.45 1 1 1s1-.45 1-1V8h9c.55 0 1-.45 1-1s-.45-1-1-1m3 4h-8c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2"}),"AutoAwesomeMotionRounded");var dU=c(61749);let dV=(0,w.A)((0,d.jsx)("path",{d:"M24 15c0-2.64-2.05-4.78-4.65-4.96C18.67 6.59 15.64 4 12 4c-1.33 0-2.57.36-3.65.97l1.49 1.49C10.51 6.17 11.23 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3 0 .99-.48 1.85-1.21 2.4l1.41 1.41c1.09-.92 1.8-2.27 1.8-3.81M3.71 4.56c-.39.39-.39 1.02 0 1.41l2.06 2.06h-.42c-3.28.35-5.76 3.34-5.29 6.79C.46 17.84 3.19 20 6.22 20h11.51l1.29 1.29c.39.39 1.02.39 1.41 0s.39-1.02 0-1.41L5.12 4.56a.996.996 0 0 0-1.41 0M6 18c-2.21 0-4-1.79-4-4s1.79-4 4-4h1.73l8 8z"}),"CloudOffRounded");var dW=c(53027);function dX(a,b){let c=new Map(a.map(a=>[a.id,a])),d=[];for(let a of b){if(a.data?.bidirectional!==!0)continue;let b=c.get(a.source),e=c.get(a.target);b&&e&&("process"===b.data.type&&"subflow"===e.data.type?d.push({processNodeId:b.id,subflowNodeId:e.id}):"subflow"===b.data.type&&"process"===e.data.type&&d.push({processNodeId:e.id,subflowNodeId:b.id}))}return d}let dY=new Set(["maxTurns","excludeModelPrompt","excludeStartNodePrompt","excludeSystemPrompt","allowedTools","isolatedPrompt","allowCallerPrompt","enableTodoTool","captureVariable","captureResource","captureKv","resourceNodes"]),dZ=new Set(["parallelSubflowIds","parallelSubflowIdsVar","mapOverList","itemSplit","sequential","allowCallerFanout","spawnBriefs","concurrencyLimit","joinSeparator","errorStrategy","resultPresentation","allowCallerPrompt","saveConversation","captureVariable","captureResource","captureKv"]);function d$(a){if(void 0!==a.permissionRules)return!0;let b=new Map((a.nodes??[]).map(a=>[a.id,a])),c=new Set(dX(a.nodes??[],a.edges??[]).filter(a=>{let c,d=b.get(a.subflowNodeId);return!!d&&(c=d.data.properties??{},"subflow"===d.data.type&&"isolated"===c.inputMode&&"final-only"===c.outputMode)}).map(a=>`${a.processNodeId}\u0000${a.subflowNodeId}`)),d=new Set([...c].map(a=>a.split("\0")[1]));for(let b of a.nodes??[]){if(!["start","process","finish","subflow","mcp"].includes(b.type??""))return!0;let a=b.data?.properties??{},c=Object.keys(a);if("process"===b.type&&c.some(a=>dY.has(a))||"subflow"===b.type&&c.some(a=>dZ.has(a))||"process"===b.type&&(void 0!==a.inputMode&&"full-history"!==a.inputMode||void 0!==a.outputMode&&"latest-message"!==a.outputMode)||"subflow"===b.type&&(void 0!==a.inputMode&&a.inputMode!==(d.has(b.id)?"isolated":"full-history")||void 0!==a.outputMode&&"final-only"!==a.outputMode))return!0}return(a.edges??[]).some(a=>{let b=a.data;if(b?.bidirectional===!0){let b=`${a.source}\u0000${a.target}`,d=`${a.target}\u0000${a.source}`;if(!c.has(b)&&!c.has(d))return!0}return!!b?.condition||b?.edgeType==="resource"})}var d_=c(99434);let d0=/(?:\r?\n){2,}(?:#{1,6}\s*)?handoff conditions\s*:/i;function d1(a,b){let c=new Map(a.nodes.map(a=>[a.id,a])),d=[],e=new Set;for(let f of a.edges){let a,g;if(function(a){let b=a.data?.edgeType;return"mcpEdge"===a.type||"mcp"===b||"resource"===b||!!b?.includes("mcp")}(f))continue;let h=f.data;f.source===b?(a=f.target,g=h?.condition):f.target===b&&h?.bidirectional===!0&&(a=f.source),!(!a||e.has(a))&&c.has(a)&&(e.add(a),d.push({id:a,edgeCondition:g}))}let f=(0,ad.E9)(d.map(({id:a})=>{let b=c.get(a);return{id:a,label:b.data.label,type:b.type||b.data.type}}));return d.map(({id:a,edgeCondition:b})=>{let d=c.get(a);return{targetId:a,toolName:f.get(a)||`handoff_to_${a}`,targetLabel:d.data.label||d.data.type||"next step",targetType:d.data.type||d.type||"node",...b?{edgeCondition:b}:{}}})}function d2(a){var b;let c,d=d1(a.previous,a.nodeId),e=d1(a.next,a.nodeId),f=(b=a.prompt,(c=d0.exec(b))?{base:b.slice(0,c.index).trim(),section:b.slice(c.index+c[0].length).trim(),found:!0}:{base:b.trim(),section:"",found:!1}),g=function(a,b){let c=new Map(b.map(a=>[a.toolName,a.targetId])),d=new Map;for(let b of a.split(/\r?\n/)){let a=(0,ae.A$)(b).find(a=>"tool"===a.kind&&"handoff"===a.server);if(!a)continue;let e=c.get(a.name);if(!e)continue;let f=b.slice(0,a.index),g=/^\s*-\s*(.*?),\s*hand off to\s*$/i.exec(f);g?.[1]?.trim()&&d.set(e,g[1].trim())}return d}(f.section,d),h=new Map(d.map(a=>[a.targetId,a])),i=new Map(e.map(a=>[a.targetId,a])),j=d.filter(a=>!i.has(a.targetId)),k=e.filter(a=>!h.has(a.targetId)),l=1===j.length&&1===k.length?new Map([[k[0].targetId,j[0].targetId]]):new Map,m=new Map;for(let a of e){let b=h.get(a.targetId);b&&m.set(b.toolName,a.toolName)}1===j.length&&1===k.length&&m.set(j[0].toolName,k[0].toolName);let n=(function(a,b){let c=(0,ae.A$)(a).filter(a=>"tool"===a.kind&&"handoff"===a.server).sort((a,b)=>b.index-a.index),d=a;for(let a of c){let c=b.get(a.name);c&&c!==a.name&&(d=`${d.slice(0,a.index)}${(0,ae.X8)("tool","handoff",c)}${d.slice(a.index+a.fullMatch.length)}`)}return d})(f.base,m).trim();if(0===e.length)return n;let o=new Set((0,ae.A$)(n).filter(a=>"tool"===a.kind&&"handoff"===a.server).map(a=>a.name)),p=e.filter(a=>f.found||!o.has(a.toolName)).map(a=>{let b=l.get(a.targetId),c=g.get(a.targetId)??(b?g.get(b):void 0)??function(a){let b=a.edgeCondition;if(!b||"always"===b.kind)return"finish"===a.targetType?"When this step is complete":`When the workflow should continue to ${a.targetLabel}`;let c="string"==typeof b.value?b.value:"",d="last-message"===b.target?"latest message":"result";return"contains"===b.kind?b.negate?`If the ${d} does not contain "${c}"`:`If the ${d} contains "${c}"`:"equals"===b.kind?b.negate?`If the ${d} does not equal "${c}"`:`If the ${d} equals "${c}"`:b.negate?`If the ${d} does not match /${c}/`:`If the ${d} matches /${c}/`}(a);return`- ${c}, hand off to ${(0,ae.X8)("tool","handoff",a.toolName)}.`});return 0===p.length?n:`${n}${n?"\n\n":""}Handoff conditions:
6
7
  ${p.join("\n")}`}var d3=c(77275),d4=c(31846);let d5=(0,M.h)("components/flow/FlowBuilder/index.tsx"),d6=(0,C.Ay)(i.default)(({theme:a})=>({display:"flex",height:"100%",minHeight:0,gap:"12px",padding:"12px",overflow:"hidden",backgroundColor:"transparent",[a.breakpoints.down("md")]:{flexDirection:"column",gap:"8px",padding:"8px",height:"auto",overflow:"visible"}})),d7=(0,C.Ay)(D.A)(({theme:a})=>({padding:a.spacing(1.1),display:"flex",flexWrap:"wrap",gap:a.spacing(1),border:`1px solid ${a.palette.divider}`,borderRadius:14,alignItems:"center",marginBottom:a.spacing(1),backgroundColor:"dark"===a.palette.mode?"rgba(17, 22, 41, 0.86)":"rgba(255, 255, 255, 0.9)",boxShadow:"dark"===a.palette.mode?"0 16px 45px rgba(0,0,0,.25)":"0 16px 45px rgba(49,45,99,.1)",backdropFilter:"blur(20px) saturate(140%)"})),d8=(0,C.Ay)(i.default)(({theme:a})=>({flex:1,display:"flex",flexDirection:"column",position:"relative",overflow:"hidden",minWidth:0,minHeight:0,[a.breakpoints.down("md")]:{flex:"0 0 640px",height:640,overflow:"hidden"},[a.breakpoints.down("sm")]:{flexBasis:"auto",height:"auto",minHeight:0,overflow:"visible"}})),d9=new Set(["start","process","finish","subflow","signal"]),ea=(a,b)=>{let c=a.trim();return/^(?:NewFlow\d*|Untitled (?:assistant|agent)(?: \d+)?)$/i.test(c)||!!b&&c.toLocaleLowerCase()===b.trim().toLocaleLowerCase()},eb=a=>(a.find(a=>a.favorite)??a[0])?.id??null,ec=(a,b)=>{let c=new Set(dX(a,b).map(a=>a.subflowNodeId)),d=a.filter(a=>d9.has(a.data.type)&&!c.has(a.id)),e=new Set(d.map(a=>a.id)),f=b.filter(a=>e.has(a.source)&&e.has(a.target)&&a.data?.edgeType!=="resource"),g=new Map,h=new Map;f.forEach(a=>{g.set(a.source,[...g.get(a.source)??[],a]),h.set(a.target,[...h.get(a.target)??[],a])});let i=d.filter(a=>"start"===a.data.type),j=d.filter(a=>"finish"===a.data.type),k=1!==i.length||j.length>1;d.forEach(a=>{let b=h.get(a.id)?.length??0,c=g.get(a.id)?.length??0;"start"===a.data.type?k||=0!==b||c>1:"finish"===a.data.type?k||=1!==b||0!==c:k||=1!==b||c>1});let l=[],m=new Set,n=i[0]?.id;for(;n&&!m.has(n);){m.add(n),l.push(n);let a=g.get(n)??[];if(1!==a.length)break;n=a[0].target}return{unsafe:k||=0===d.length||m.size!==d.length,orderedNodeIds:l,subagentNodeIds:c}},ed=f().forwardRef(({initialFlow:a,initialAuthoringMode:b,onSave:c,onDelete:g,onConversionCommitted:l,allFlows:w,relatedDraftFlows:x=[],onRelatedDraftFlowsChange:z,isDraft:A=!1,onTry:B,onNavigateToFlow:C},D)=>{d5.debug("FlowBuilder rendered with initialFlow:",a);let{t:M,tp:U,formatList:V}=(0,au.s9)(),W=(0,h.A)(),X=(0,E.A)(W.breakpoints.down("md"),{noSsr:!0}),[Y,Z]=(0,e.useState)(a?.nodes||[]),[$,_]=(0,e.useState)((a?.edges||[]).filter(a=>a.source&&a.target&&a.sourceHandle&&a.targetHandle)),[aa,ah]=(0,e.useState)(a?.name||M("flows.page.untitled")),ai=(0,e.useRef)(aa);ai.current=aa;let[aj,ak]=(0,e.useState)(null),[al,am]=(0,e.useState)(a?.description||""),an=(0,e.useMemo)(()=>new Map(w.map(a=>[a.id,a.name])),[w]),ao=!!a&&(d$({nodes:a.nodes||[],edges:a.edges||[],permissionRules:a.permissionRules})||ec(a.nodes||[],a.edges||[]).unsafe),[ap,aq]=(0,dW.Io)("flujo-ui:flow-builder:mode","guided"),[ar,as]=(0,e.useState)(()=>b??(ao?"advanced":ap)),at=(0,e.useCallback)(a=>{as(a),aq(a)},[aq]),aw=(0,e.useRef)(0),ax=(0,e.useCallback)(a=>({...a,id:`permission-rule-${++aw.current}`}),[]),[ay,az]=(0,e.useState)(()=>(a?.permissionRules||[]).map(ax)),[aA,aB]=(0,e.useState)(a?.permissionRules!==void 0),[aD,aE]=(0,e.useState)(!1),[aF,aG]=(0,e.useState)(null),aH=d$({nodes:Y,edges:$,permissionRules:a?.permissionRules}),aI=ec(Y,$),aJ=aH||aI.unsafe,[aK,aL]=(0,e.useState)(!1),[aM,aN]=(0,e.useState)("none"),[aO,aP]=(0,e.useState)(""),[aQ,aR]=(0,e.useState)(null),[aS,aT]=(0,e.useState)(!1),[aU,aV]=(0,e.useState)(!1),[aW,aX]=(0,e.useState)(!1),[aY,aZ]=(0,e.useState)(!1),[a$,a_]=(0,e.useState)(!1),[a0,a1]=(0,e.useState)(!1),[a2,a3]=(0,e.useState)(!1),[a4,a5]=(0,e.useState)(!1),[a6,a7]=(0,e.useState)(!1),[a8,a9]=(0,e.useState)(null),[bb,bc]=(0,e.useState)(null),[bd,be]=(0,e.useState)(null),[bf,bg]=(0,e.useState)("edit"),[bh,bi]=(0,e.useState)(null),[bj,bk]=(0,e.useState)(null),[bl,bm]=(0,e.useState)(!1),[bn,bo]=(0,e.useState)(null),[bp,bq]=(0,e.useState)(null),[br,bs]=(0,e.useState)(null),[bt,bu]=(0,e.useState)(""),[bv,bw]=(0,e.useState)(!1),[bx,by]=(0,e.useState)([]),[bz,bB]=(0,e.useState)(-1),[bC,bD]=(0,e.useState)(!1),[bE,bF]=(0,e.useState)(!1),[bH,bI]=(0,e.useState)(A?"unsaved":"saved"),[bK,bL]=(0,e.useState)([]),[bM,bN]=(0,e.useState)(!1),[bO,bP]=(0,e.useState)(null),[bQ,bS]=(0,e.useState)(()=>A&&!(a?.nodes??[]).some(a=>"process"===a.data.type)?"unasked":"manual"),[bT,bV]=(0,e.useState)(!1),[bW,bX]=(0,e.useState)(null),[bY,bZ]=(0,e.useState)("apps"),b$=(0,e.useRef)(a?.id??(0,O.A)()),b_=(0,e.useRef)(0),b0=(0,e.useRef)(null),b1=(0,e.useRef)(Y.some(a=>"trigger"===a.type));b1.current=Y.some(a=>"trigger"===a.type);let b2=(0,e.useRef)(null),b3=(0,e.useRef)(!1),b4=(0,e.useRef)(!0);(0,e.useEffect)(()=>{let a=!0;return R.N.loadModels().then(b=>{a&&(bL(b),bN(!0),bP(a=>a&&b.some(b=>b.id===a)?a:eb(b)),0===b.length&&bS(a=>"unasked"===a?"manual":a))}).catch(b=>{d5.warn("Could not load connected AIs for Guided mode",b),a&&(bL([]),bN(!0),bS(a=>"unasked"===a?"manual":a))}),()=>{a=!1}},[]);let b5=(0,e.useCallback)(a=>a.filter(a=>a.source&&a.target&&a.sourceHandle&&a.targetHandle).map(a=>a.data?.edgeType==="resource"&&"resourceEdge"!==a.type?{...a,type:"resourceEdge"}:a),[]);(0,e.useEffect)(()=>{if(b4.current=!0,b_.current=0,bF(!1),bI(A?"unsaved":"saved"),a){let c=a.nodes||[],d=b5(a.edges||[]),e=A?c.map(a=>({...a,selected:!1})):c;Z(e),d.length!==a.edges.length&&console.warn(`Filtered out ${a.edges.length-d.length} invalid edges`),_(d),ah(a.name),am(a.description||""),az((a.permissionRules||[]).map(ax)),aB(void 0!==a.permissionRules),aG(null);let f=d$({nodes:c,edges:d,permissionRules:a.permissionRules})||ec(c,d).unsafe;b?at(b):f&&at("advanced"),by([{nodes:e,edges:d}]),bB(0)}else{let a=P.g.createStartNode();Z([a]),_([]),ah(M("flows.page.untitled")),am(""),az([]),aB(!1),aG(null),by([{nodes:[a],edges:[]}]),bB(0)}},[a?.id,b,ax,at]);let b6=a=>JSON.stringify(a,(a,b)=>"selected"===a||"dragging"===a||"measured"===a||"width"===a||"height"===a||"positionAbsolute"===a||"resizing"===a?void 0:b);(0,e.useEffect)(()=>{if(bC)return void bD(!1);if(b4.current){b4.current=!1;return}if(b3.current)return;let a={nodes:[...Y],edges:[...$]},b=bx.slice(0,bz+1);(bz<0||b6(a)!==b6(b[bz]))&&(by([...b,a]),bB(bz+1),bF(!0),b_.current+=1,bI("unsaved"))},[Y,$]),(0,e.useEffect)(()=>{let a=a=>{if(bE)return a.preventDefault(),a.returnValue="",""};return window.addEventListener("beforeunload",a),()=>{window.removeEventListener("beforeunload",a)}},[bE]);let b7=b=>b.trim()?/^[\p{L}\p{N}_ -]+$/u.test(b.trim())?(!a||a&&a.name!==b)&&w.some(c=>c.id!==(a?.id||"")&&c.name.trim().toLowerCase()===b.trim().toLowerCase())?M("flows.page.nameDuplicate"):null:M("flows.page.nameCharacters"):M("flows.page.nameEmpty"),b8=(0,e.useCallback)(()=>{bF(!0),b_.current+=1,bI("unsaved")},[]),b9=(a,b)=>{az(c=>c.map(c=>c.id===a?{...c,...b}:c)),aB(!0),aG(null),b8()},ca=(a,b)=>{let c=a+b;c<0||c>=ay.length||(az(b=>{let d=[...b];return[d[a],d[c]]=[d[c],d[a]],d}),aB(!0),b8())},cb=(0,e.useCallback)(()=>aA?ay.map(({id:a,...b})=>b):void 0,[ay,aA]),cc=(0,e.useCallback)(()=>!ay.find(a=>!a.action.trim()||!a.resource.trim())||(aG(M("flows.builder.permissionInvalid")),aE(!0),!1),[ay,M]),cd=(0,e.useCallback)(()=>{if(b0.current)return b0.current;let b=(async()=>{d5.debug(`handleSave: Attempting to save flow "${aa}"`);let b=b7(aa);if(b)return d5.warn(`handleSave: Invalid flow name - ${b}`),ak(b),"invalid-name";if(!cc())return"invalid-name";let d=[...Y];0===d.length&&(d5.debug("handleSave: No nodes found, adding a default Start node"),Z(d=[P.g.createStartNode()]));let e={id:a?.id||(0,O.A)(),name:aa.trim(),description:al,nodes:d,edges:$,folder:a?.folder,favorite:a?.favorite,permissionRules:cb()};d5.info(`handleSave: Saving flow "${aa}" with ${d.length} nodes and ${$.length} edges`);let f=b_.current;bI("saving");try{let a=await c(e);if(!1===a)return bI("error"),"failed";return b_.current===f?(bF(!1),bI("saved")):(bF(!0),bI("unsaved")),"saved"}catch(a){return d5.error("handleSave: Persistence failed",a),bI("error"),bF(!0),"failed"}})();return b0.current=b,b.finally(()=>{b0.current===b&&(b0.current=null)}),b},[aa,al,Y,$,a,c,cb,cc]),ce=(0,e.useCallback)(async()=>{B&&((A||bE||"saved"!==bH)&&"saved"!==await cd()||B())},[B,A,bE,bH,cd]),cf=(0,e.useCallback)(a=>{bE?(b2.current=a,aN("unsaved"),aL(!0)):a()},[bE]);f().useImperativeHandle(D,()=>({requestNavigation:cf}),[cf]);let cg=(0,e.useCallback)(()=>{a?(d5.info(`handleDelete: Deleting flow "${a.name}" (ID: ${a.id})`),g(a.id)):d5.warn("handleDelete: Attempted to delete flow but no initialFlow is available")},[a,g]),ch=(0,e.useCallback)(a=>{d5.info("Applying AI-improved flow to the canvas",{flowId:a.flow.id,attempts:a.attempts,errors:a.errorCount,warnings:a.warningCount}),bm(!1),Z(a.flow.nodes||[]),_(b5(a.flow.edges||[])),ah(a.flow.name),am(a.flow.description||""),void 0!==a.flow.permissionRules&&(az(a.flow.permissionRules.map(ax)),aB(!0)),ak(b7(a.flow.name)),bF(!0);let b=a.installedServers.filter(a=>!a.alreadyExisted),c=b.length>0?M("flows.builder.installNote",{servers:V(b.map(a=>a.name))}):"";a.errorCount>0?bo({severity:"warning",message:M("flows.builder.revisedIssues",{errors:U("flows.validation.error",a.errorCount),warnings:U("flows.validation.warning",a.warningCount),installNote:c})}):a.warningCount>0?bo({severity:"info",message:M("flows.builder.revisedWarnings",{warnings:U("flows.validation.warning",a.warningCount),installNote:c})}):bo({severity:"success",message:M("flows.builder.revisedClean",{installNote:c})})},[b5,V,M,U]),ci=(0,e.useCallback)(a=>{d5.info("Restoring an archived flow version to the canvas",{flowId:a.id,nodes:a.nodes?.length??0,edges:a.edges?.length??0}),bw(!1),Z(a.nodes||[]),_(b5(a.edges||[])),ah(a.name),am(a.description||""),az((a.permissionRules||[]).map(ax)),aB(void 0!==a.permissionRules),ak(b7(a.name)),bF(!0),bo({severity:"info",message:M("flows.builder.restored")})},[b5,M]),cj=(0,e.useCallback)(()=>{bs(null);let{flow:b,changes:c}=function(a){var b,c;let d=(a?.nodes??[]).map(a=>({...a,position:{...a.position??{x:0,y:0}},data:{...a.data}})),e=[...a?.edges??[]],f={...a,nodes:d,edges:e},g=[],h=function(a,b){let c=a.filter(a=>"mcp"!==a.type&&"resource"!==a.type&&"string"==typeof a.id),d=new Map(c.map(a=>[a.id,a])),e=new Map,f=new Map,g=new Set;for(let a of c)e.set(a.id,0),f.set(a.id,0);let h=(a,b)=>{g.add(`${a}->${b}`),f.set(a,(f.get(a)??0)+1),e.set(b,(e.get(b)??0)+1)};for(let a of b)d.has(a.from)&&d.has(a.to)&&a.from!==a.to&&(h(a.from,a.to),a.bidirectional&&h(a.to,a.from));let i=[];for(let a of[...c].sort((a,b)=>a.y-b.y||a.x-b.x)){let b=i[i.length-1];b&&70>=Math.abs(a.y-b[0].y)?b.push(a):i.push([a])}let j=new Map;i.forEach((a,b)=>a.forEach(a=>j.set(a.id,b)));let k=new Map;for(let a=1;a<i.length;a++){let b=i[a],c=b.filter(a=>"subflow"===a.type);if(c.length>=2&&c.length===b.length){let b=i[a-1];if(1===b.length&&"process"===b[0].type)for(let a of c)k.set(a.id,b[0].id)}}let l=[],m=(a,b)=>{if(a===b||g.has(`${a}->${b}`))return!1;let c=d.get(a),e=d.get(b);return!(!c||!e||null!==(0,T.vC)(c.type,dR(c.type).source,e.type,dR(e.type).target)||"subflow"===c.type&&(f.get(a)??0)>=1)},n=(a,b,c,d)=>{l.push({from:a,to:b,bidirectional:c,reason:d}),h(a,b),c&&h(b,a)},o=a=>{let b=j.get(a.id)??0;for(let c=b-1;c>=0;c--){let b=i[c].filter(b=>b.id!==a.id&&"finish"!==b.type&&!k.has(b.id));if(0!==b.length){if(1===b.length)return b[0];return b.reduce((b,c)=>Math.abs(c.x-a.x)<Math.abs(b.x-a.x)?c:b)}}return null};for(let a of i)for(let b of a){if("start"===b.type||(e.get(b.id)??0)>0)continue;let a=k.get(b.id);if(a){m(a,b.id)&&n(a,b.id,!0,"auto-bidirectional-subflow");continue}let c=o(b);c&&m(c.id,b.id)&&n(c.id,b.id,!1,"auto-connected")}let p=c.filter(a=>"start"===a.type),q=()=>c.filter(a=>"start"!==a.type&&"finish"!==a.type&&!k.has(a.id)&&(e.get(a.id)??0)===0),r=null;if(0===p.length){let a=q();if(a.length>0)r={targets:a.map(a=>a.id)};else{let a=c.filter(a=>"finish"!==a.type).sort((a,b)=>a.y-b.y)[0];a&&(r={targets:[a.id]})}}else{let a=p[0];for(let b of q())m(a.id,b.id)&&n(a.id,b.id,!1,"auto-connected")}let s=c.filter(a=>"finish"===a.type),t=()=>c.filter(a=>"start"!==a.type&&"finish"!==a.type&&!k.has(a.id)&&(f.get(a.id)??0)===0),u=null;if(0===s.length){let a=t();a.length>0&&(u={sources:a.map(a=>a.id)})}else{let a=s[0];for(let b of t())m(b.id,a.id)&&n(b.id,a.id,!1,"auto-connected")}return{addEdges:l,addStart:r,addFinish:u}}(d.filter(a=>"mcp"!==dS(a)&&"resource"!==dS(a)).map(a=>({id:a.id,type:dS(a),x:a.position?.x??0,y:a.position?.y??0})),e.filter(a=>{let b;return"mcp"!==(b=a.data?.edgeType)&&"resource"!==b}).map(a=>({from:a.source,to:a.target,bidirectional:a.data?.bidirectional===!0}))),i=new Map(d.map(a=>[a.id,a])),j=(a,b,c)=>{let d=i.get(a),f=i.get(b);d&&f&&e.push((0,dQ.pX)(d,f,c))};for(let a of h.addEdges)j(a.from,a.to,a.bidirectional),g.push({code:a.reason,message:function(a){switch(a){case"auto-connected":return"Connected a disconnected step into the flow.";case"auto-bidirectional-subflow":return"Wired a parallel subflow with a two-way handoff to its orchestrator.";case"auto-added-start":return"Added a Start node.";case"auto-added-finish":return"Added a Finish node."}}(a.reason),nodeId:a.to});if(h.addStart){let a=h.addStart.targets.map(a=>i.get(a)).filter(Boolean).reduce((a,b)=>!a||b.position.y<a.position.y?b:a,null),c=(b={x:a?.position.x??250,y:(a?.position.y??150)-150},{id:(0,O.A)(),type:"start",position:b,data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}});for(let a of(d.unshift(c),i.set(c.id,c),h.addStart.targets))j(c.id,a,!1);g.push({code:"auto-added-start",message:`Added a Start node connected to ${h.addStart.targets.length} entry step(s).`,nodeId:c.id})}if(h.addFinish){let a=h.addFinish.sources.map(a=>i.get(a)).filter(Boolean).reduce((a,b)=>!a||b.position.y>a.position.y?b:a,null),b=(c={x:a?.position.x??250,y:(a?.position.y??0)+150},{id:(0,O.A)(),type:"finish",position:c,data:{label:"Finish Node",type:"finish",properties:{}}});for(let a of(d.push(b),i.set(b.id,b),h.addFinish.sources))j(a,b.id,!1);g.push({code:"auto-added-finish",message:`Added a Finish node connected from ${h.addFinish.sources.length} final step(s).`,nodeId:b.id})}return{flow:f,changes:g}}({id:a?.id||"",name:aa,description:al,nodes:Y,edges:$,folder:a?.folder,favorite:a?.favorite,permissionRules:cb()});if(0===c.length)return void bo({severity:"info",message:M("flows.builder.nothingRepair")});d5.info(`Applying static auto-repair to the canvas (${c.length} change(s))`),Z(b.nodes||[]),_(b5(b.edges||[])),bF(!0);let d=c.filter(a=>"auto-added-start"===a.code||"auto-added-finish"===a.code).length,e=c.length-d,f=[];c.some(a=>"auto-added-start"===a.code)&&f.push(M("flows.builder.repairAddedStart")),c.some(a=>"auto-added-finish"===a.code)&&f.push(M("flows.builder.repairAddedFinish")),e>0&&f.push(U("flows.builder.repairConnected",e)),bo({severity:"success",message:M("flows.builder.repaired",{changes:V(f)})})},[a,aa,al,Y,$,b5,cb,V,M,U]),ck=(0,e.useCallback)(()=>{bs(null),bu(M("flows.builder.aiRepairPrompt")),bm(!0)},[M]),cl=(0,e.useCallback)(async(a,b)=>{d5.debug(`handleCopyFlow: Copying flow "${a.name}" to "${b}"`);let d={id:(0,O.A)(),name:b,description:a.description,nodes:a.nodes,edges:a.edges,folder:a.folder,favorite:a.favorite,permissionRules:a.permissionRules};return d5.info(`handleCopyFlow: Created copy of flow "${a.name}" with new name "${b}" (${a.nodes.length} nodes, ${a.edges.length} edges)`),await c(d)!==!1},[c]),cm=()=>{let a=b2.current;b2.current=null,a&&a()},cn=()=>{b2.current=null,aL(!1),aN("none"),aP(""),aR(null)},co=async()=>{let b=b7(aO);if(b)return void aR(b);if("duplicate"===aM){if(a&&!await cl(a,aO))return}else if("rename"===aM){let b={id:a?.id||(0,O.A)(),name:aO,description:al,nodes:Y,edges:$,folder:a?.folder,favorite:a?.favorite,permissionRules:cb()};if(await c(b)===!1)return void bI("error");bF(!1),bI("saved"),cm()}cn()},cp=async()=>{let a=await cd();"saved"===a?(cm(),cn()):"invalid-name"===a&&cn()},cq=bz>0,cr=bz<bx.length-1,cs=(0,e.useCallback)(()=>{if(cq){d5.debug(`handleUndo: Performing undo operation, moving from history index ${bz} to ${bz-1}`),bD(!0);let a=bz-1,b=bx[a];Z(b.nodes),_(b.edges),bB(a),b8(),d5.info(`handleUndo: Restored flow state to previous version (${b.nodes.length} nodes, ${b.edges.length} edges)`)}},[bx,bz,cq,b8]),ct=(0,e.useCallback)(()=>{if(cr){d5.debug(`handleRedo: Performing redo operation, moving from history index ${bz} to ${bz+1}`),bD(!0);let a=bz+1,b=bx[a];Z(b.nodes),_(b.edges),bB(a),b8(),d5.info(`handleRedo: Restored flow state to next version (${b.nodes.length} nodes, ${b.edges.length} edges)`)}},[bx,bz,cr,b8]);(0,e.useEffect)(()=>{let a=a=>{let b=a.target,c=b?.tagName==="INPUT"||b?.tagName==="TEXTAREA"||b?.isContentEditable,d=a.ctrlKey||a.metaKey,e=a.key.toLowerCase();if(d&&"s"===e){a.preventDefault(),cd();return}if(!c&&d&&"z"===e){a.preventDefault(),a.shiftKey?ct():cs();return}if(!c&&d&&"y"===e){a.preventDefault(),ct();return}c||(!d||"k"!==e)&&(d||"a"!==e&&"/"!==a.key)||(a.preventDefault(),document.dispatchEvent(new CustomEvent("openFlowQuickAdd")))};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[cd,cs,ct]);let cu=(0,e.useCallback)(async b=>{if(!a||!bj||!b.parentFlow||!b.childFlow)throw Error("Save the parent flow before converting a Process node.");let c=await P.g.convertProcessToSubflow(b.parentFlow,b.childFlow,bj,a.updatedAt);if(!c.success)throw Error(c.error);let d={nodes:c.parentFlow.nodes,edges:c.parentFlow.edges},e=[...bx.slice(0,bz+1),d];bD(!0),by(e),bB(e.length-1),Z(c.parentFlow.nodes),_(c.parentFlow.edges),bF(!1),bI("saved"),bk(null),l?.(c.parentFlow,c.childFlow)},[a,bj,bx,bz,l]),cv=(0,e.useCallback)(a=>{for(let b of a)"position"===b.type&&(b3.current=!0===b.dragging);Z(b=>(0,N._0)(a,b))},[]),cw=(0,e.useCallback)((a,b)=>{_(c=>c.map(c=>{if(c.id!==a)return c;let d={...c.data??{}};return b?d.condition=b:delete d.condition,{...c,data:d}})),d5.info(`handleSaveEdgeCondition: ${b?"set":"cleared"} condition on edge ${a}`)},[]),cx=(0,e.useCallback)(a=>{d5.debug(`onEdgesChange: Processing ${a.length} edge changes`),a.forEach(a=>{"remove"===a.type?d5.info(`onEdgesChange: Edge ${a.id} removed`):"select"===a.type&&d5.debug(`onEdgesChange: Edge ${a.id} selection changed to ${a.selected}`)}),_(b=>(0,N.zW)(a,b))},[]),cy=(0,e.useRef)(null),[cz,cA]=(0,e.useState)(null),cC=(0,e.useCallback)(a=>{bc(a),setTimeout(()=>bc(b=>b===a?null:b),5e3)},[]),cD=(0,e.useCallback)((a,b,c)=>{if("trigger"===a&&b1.current)return cC(M("flows.builder.triggerExists")),null;"trigger"===a&&(b1.current=!0);let d=c??P.g.createNode(a,b);return Z(a=>[...a.map(a=>({...a,selected:!1})),{...d,selected:!0}]),d},[cC,M]),cE=(0,e.useCallback)(a=>{let b=Y.find(a=>a.selected)??(1===Y.length&&"start"===Y[0].data.type?Y[0]:void 0),c=cy.current?.getBoundingClientRect(),d=c&&cz?cz.screenToFlowPosition({x:c.left+c.width/2,y:c.top+c.height/2}):{x:250,y:180},e=b&&!["mcp","resource","trigger"].includes(a)?{x:b.position.x,y:b.position.y+180}:d;for(let a=0;a<12&&Y.some(a=>90>Math.abs(a.position.x-e.x)&&70>Math.abs(a.position.y-e.y));a+=1)e={x:e.x+36,y:e.y+36};let f=!!b&&["process","finish","subflow","signal"].includes(a),g=P.g.createNode(a,e);if(b&&f){let c={start:"start-bottom",process:"process-bottom",subflow:"subflow-bottom",signal:"signal-bottom"}[b.type];if(!c)return cC(M("flows.builder.selectedCannotLead",{node:b.data.label||M("flows.builder.selectedNode")})),null;let d={source:b.id,sourceHandle:c,target:g.id,targetHandle:(0,T.CW)(a,c)},f=[...Y,g];if(!(0,S.JL)(d,f,$))return cC(M("flows.builder.cannotAppend")),null;let h=cD(a,e,g);if(!h)return null;let i=(0,S.wn)(d,f);return _(a=>[...a,i]),h}return cD(a,e,g)},[Y,$,cz,cD,cC,M]),cF=(0,e.useCallback)(b=>{if(aJ)return void cC(M("flows.builder.customWiring"));let c=Y.find(a=>"start"===a.data.type),d=Y.find(a=>"finish"===a.data.type),e=[...aI.orderedNodeIds.map(a=>Y.find(b=>b.id===a)).filter(a=>!!a)].reverse().find(a=>["start","process","subflow","signal"].includes(a.data.type))??c;if(!e)return void cC(M("flows.builder.missingStart"));let f={start:"start-bottom",process:"process-bottom",subflow:"subflow-bottom",signal:"signal-bottom"}[e.data.type];if(!f)return void cC(M("flows.builder.addExpert"));let g=!Y.some(a=>"process"===a.data.type),h=P.g.createNode("process",{x:e.position.x,y:e.position.y+180});h.data={...h.data,label:M("flows.builder.aiTask"),properties:{...h.data.properties??{},promptTemplate:b,inputMode:"full-history",outputMode:"latest-message",..."assisted"===bQ&&bO?{boundModel:bO}:{}}};let i=d??P.g.createNode("finish",{x:e.position.x,y:e.position.y+360}),j=[...Y.filter(a=>a.id!==i.id).map(a=>({...a,selected:!1})),{...h,selected:!0},{...i,position:{x:e.position.x,y:e.position.y+360},selected:!1}],k=$.filter(a=>!(d&&a.source===e.id&&a.target===d.id)),l={source:e.id,sourceHandle:f,target:h.id,targetHandle:(0,T.CW)("process",f)},m={source:h.id,sourceHandle:"process-bottom",target:i.id,targetHandle:(0,T.CW)("finish","process-bottom")},n=[...k,(0,S.wn)(l,j),(0,S.wn)(m,j)],o="process"===e.data.type?j.map(a=>a.id===e.id?{...a,data:{...a.data,properties:{...a.data.properties??{},promptTemplate:d2({prompt:String(e.data.properties?.promptTemplate??""),nodeId:e.id,previous:{nodes:Y,edges:$},next:{nodes:j,edges:n}})}}}:a):j;if(Z(o),_(n),g&&!al.trim()&&am(b),"assisted"===bQ&&bO){if(g&&ea(aa,M("flows.page.untitled"))){let c={...a??{id:b$.current,name:aa,nodes:[],edges:[]},id:a?.id??b$.current,name:aa,description:b,nodes:o,edges:n};P.g.generateNameForFlow({flow:c,modelId:bO,existingNames:w.filter(a=>a.id!==c.id).map(a=>a.name)}).then(({name:a})=>{ai.current!==aa||!ea(ai.current,M("flows.page.untitled"))||b7(a)||(ai.current=a,ah(a),ak(null),b8())}).catch(a=>{d5.warn("Could not auto-generate a Guided flow name",a)})}bX(h.id),bZ("apps"),bV(!0)}else bO||cC(M("flows.builder.connectModel"))},[Y,$,bQ,bO,aI.orderedNodeIds,aJ,cC,al,aa,a,w,b8,M]),cG=Y.find(a=>a.selected)??null,cH=(0,e.useMemo)(()=>a8?Y.find(a=>a.id===a8)??null:null,[Y,a8]);(0,e.useEffect)(()=>{if(a8){if(!cG)return void a9(null);cG.id!==a8&&a9(cG.id)}},[cG,a8]);let cI=(0,e.useMemo)(()=>av(M),[M]),cJ=(0,e.useMemo)(()=>{let a=new Map,b=new Map(Y.map(a=>[a.id,a]));return $.forEach(c=>{if(c.data?.edgeType!=="mcp")return;let d=b.get(c.source),e=b.get(c.target),f=d?.data.type==="process"?d:e?.data.type==="process"?e:null,g=d?.data.type==="mcp"?d:e?.data.type==="mcp"?e:null,h=g?.data.properties?.boundServer;f&&g&&"string"==typeof h&&h&&a.set(f.id,[...a.get(f.id)??[],{nodeId:g.id,serverName:h}])}),a},[$,Y]),cK=cG?.data.type==="process"?cJ.get(cG.id)??[]:[],cL=(0,e.useMemo)(()=>{let a=new Map,b=new Map(Y.map(a=>[a.id,a])),c=new Map(w.map(a=>[a.id,a.name]));return dX(Y,$).forEach(d=>{let e=b.get(d.subflowNodeId),f=e?.data.properties?.subflowId;"string"==typeof f&&f&&a.set(d.processNodeId,[...a.get(d.processNodeId)??[],{nodeId:d.subflowNodeId,flowId:f,flowName:c.get(f)??e?.data.label??f}])}),a},[w,$,Y]),cQ=Y.some(a=>["process","subflow"].includes(a.data.type)),cR=Y.filter(a=>"process"===a.data.type).every(a=>"string"==typeof a.data.properties?.boundModel&&!!a.data.properties.boundModel),cS=!!aa.trim()&&!/^(?:NewFlow\d*|Untitled (?:assistant|agent)(?: \d+)?)$/i.test(aa.trim())&&!aj,cU=cQ&&cR&&cS&&!aJ&&"saving"!==bH,cV=(0,e.useCallback)(a=>{Z(b=>b.map(b=>({...b,selected:b.id===a})))},[]),cW=(0,e.useMemo)(()=>({...a??{id:b$.current,name:aa,nodes:[],edges:[]},id:a?.id??b$.current,name:aa,...al.trim()?{description:al}:{},nodes:Y,edges:$,permissionRules:aA?ay.map(({id:a,...b})=>b):void 0}),[$,al,aa,a,Y,ay,aA]),cX=(0,e.useCallback)(a=>{let b=Y.find(b=>b.id===a);return!!b&&(Z(b=>b.map(b=>({...b,selected:b.id===a}))),cz?.setCenter(b.position.x,b.position.y,{zoom:1.2,duration:450}),window.requestAnimationFrame(()=>{let b=[...document.querySelectorAll(".react-flow__node")].find(b=>b.getAttribute("data-id")===a)??null;(0,d4.g_)(b)}),!0)},[Y,cz]),cZ=(0,e.useCallback)(a=>{if("flow-node"===a.target.kind&&a.target.id&&"highlight"===a.type){let b=cX(a.target.id);return{success:b,message:b?"Highlighted the matching flow step.":"That flow step is no longer on screen."}}if("flow-field"===a.target.kind&&a.target.field){let b=a.target.field;if("name"!==b&&"description"!==b)return{success:!1,message:`The flow field "${b}" is not editable here.`};if("highlight"===a.type){let a=document.querySelector(`[data-ask-flujo-flow-field="${b}"]`),c=(0,d4.g_)(a);return{success:c,message:c?`Highlighted flow ${b}.`:`Could not find flow ${b}.`}}return"string"!=typeof a.value?{success:!1,message:`Flow ${b} must be text.`}:("name"===b?(ai.current=a.value,ah(a.value),ak(b7(a.value))):am(a.value),b8(),{success:!0,message:`Updated flow ${b} in the unsaved editor.`})}if("flow-node-field"===a.target.kind&&a.target.id){let b,c=a.target.id;if("highlight"===a.type){let a=cX(c);return{success:a,message:a?"Highlighted the matching flow step.":"That flow step is no longer on screen."}}let d=a.target.path;if(!d||!d.startsWith("data.")&&!d.startsWith("/data/"))return{success:!1,message:"Only advertised node data fields are editable."};let e=Y.find(a=>a.id===c);if(!e)return{success:!1,message:"That flow step is no longer on screen."};try{b=(0,d4.Pz)(e,d,a.value)}catch(a){return{success:!1,message:a instanceof Error?a.message:"The node field could not be changed."}}return Z(a=>a.map(a=>a.id===c?b:a)),b8(),window.requestAnimationFrame(()=>cX(c)),{success:!0,message:"Updated the step in the unsaved flow. Review it, then Save."}}return{success:!1,message:"That flow UI target is not supported."}},[cX,b8,Y,b7]);(0,d3.qz)({scopeId:`flow:${cW.id}`,pageType:"flow",route:"/flows",title:cW.name,identifiers:{flowId:cW.id},data:{flow:cW,selectedNodeId:cG?.id??null,authoringMode:ar,isDraft:A,hasUnsavedChanges:bE},capabilities:{highlightTargets:cW.nodes.map(a=>({kind:"flow-node",id:a.id,label:a.data.label,nodeType:a.data.type})),editableTargets:[{kind:"flow-field",field:"name"},{kind:"flow-field",field:"description"},...cW.nodes.flatMap(a=>["data.label",...Object.keys(a.data.properties??{}).map(a=>`data.properties.${a}`)].map(b=>({kind:"flow-node-field",id:a.id,path:b})))],notes:["This is the live Flow Builder state, including unsaved edits and full node prompts/configuration.","Screen changes remain unsaved until the user presses the normal Save button."]}},cZ,100);let c$=(0,e.useMemo)(()=>{if(bW){let a=Y.find(a=>a.id===bW),b=a?.data.properties?.boundModel;if("string"==typeof b&&b)return b}if(bO)return bO;let a=Y.find(a=>"process"===a.data.type&&"string"==typeof a.data.properties?.boundModel&&!!a.data.properties.boundModel)?.data.properties?.boundModel;return"string"==typeof a?a:null},[bW,bO,Y]),c_=(0,e.useCallback)(a=>{Z(a.nodes),_(a.edges),void 0!==a.description&&am(a.description),b8()},[b8]),c0=(0,e.useCallback)(()=>{let a=Y.filter(a=>a.selected).map(a=>({type:"select",id:a.id,selected:!1}));a.length>0&&cv(a)},[Y,cv]),c1=(0,e.useCallback)(()=>{d5.debug("handleTidyLayout: resolving node overlaps in place"),Z(a=>ab(a,$))},[$]),c4=(0,e.useCallback)(()=>{d5.debug("handleRelayout: re-arranging flow nodes top-to-bottom"),Z(a=>ac(a,$)),requestAnimationFrame(()=>cz?.fitView({padding:.2}))},[$,cz]),c8=(0,e.useCallback)((a,b)=>{d5.debug(`handleNodeUpdate: Updating node ${a} properties`),Z(c=>{let d=c.map(c=>c.id===a?(d5.info(`handleNodeUpdate: Node ${a} properties updated`),{...c,data:b}):c),e=new Map(c.map(a=>[a.id,a])),f=new Map(d.map(a=>[a.id,a])),g=!1;for(let[a,b]of f){let c=e.get(a);if(c&&c.data.label!==b.data.label){g=!0;break}}return g?d.map(a=>{let b=a.data.properties?.promptTemplate;if("string"!=typeof b||!b)return a;let c=function(a,b){let c=[];for(let d of b)!("string"==typeof d.data?.edgeType&&(d.data.edgeType.includes("mcp")||"resource"===d.data.edgeType))&&(d.source===a?c.push(d.target):d.target===a&&d.data?.bidirectional&&c.push(d.source));return[...new Set(c)]}(a.id,$);if(0===c.length)return a;let d=[],g=[];for(let a of c){let b=f.get(a);if(!b)continue;let c=e.get(a)||b;d.push(af(c)),g.push(af(b))}if(0===g.length)return a;let h=(0,ad.E9)(d),i=(0,ad.E9)(g),j=new Map;for(let a of c){let b=h.get(a),c=i.get(a);b&&c&&b!==c&&j.set(b,c)}if(0===j.size)return a;let k=function(a,b){if(!a||0===b.size)return a;let c=(0,ae.A$)(a);if(0===c.length)return a;let d="",e=0,f=!1;for(let g of c){d+=a.slice(e,g.index);let c="tool"===g.kind&&"handoff"===g.server?b.get(g.name):void 0;c?(d+=(0,ae.X8)("tool","handoff",c),f=!0):d+=g.fullMatch,e=g.index+g.fullMatch.length}return d+=a.slice(e),f?d:a}(b,j);return k===b?a:{...a,data:{...a.data,properties:{...a.data.properties,promptTemplate:k}}}}):d})},[$]),c9=(0,e.useCallback)((a,b)=>{c8(a,b),aT(!1),bg("edit"),aV(!1),aX(!1),aZ(!1),a_(!1),a1(!1),a3(!1),a5(!1),a7(!1),be(null),d5.debug("handleNodeUpdate: Closed property modals")},[c8]),da=(0,e.useCallback)(async(a,b)=>{let c=Y.find(b=>b.id===a);if(!c)return void d5.warn(`handleConnectMcpServer: process node ${a} not found`);let d=[];try{let a=await Q.S.listServerTools(b);!a.error&&Array.isArray(a.tools)&&(d=a.tools.map(a=>a.name))}catch(a){d5.warn(`handleConnectMcpServer: could not load tools for ${b}`,a)}let e=$.filter(b=>b.data?.edgeType==="mcp"&&(b.source===a||b.target===a)).length,f=P.g.createNode("mcp",{x:c.position.x+350,y:c.position.y+120*e});f.data.label=b,f.data.properties={...f.data.properties??{},boundServer:b,enabledTools:d};let g=(0,S.wn)({source:a,sourceHandle:"process-right-mcp",target:f.id,targetHandle:"mcp-left"},[...Y,f]);Z(a=>[...a,f]),_(a=>[...a,g]),d5.info(`Connected MCP server "${b}" to process node ${a}`)},[Y,$]),db=(0,e.useCallback)(async(a,b)=>{if("mcp"!==a.data.type)return;let c=[];try{let a=await Q.S.listServerTools(b);!a.error&&Array.isArray(a.tools)&&(c=a.tools.map(a=>a.name))}catch(a){d5.warn(`handleSelectMcpNodeServer: could not load tools for ${b}`,a)}let d=a.data.properties??{},{enabledResources:e,...f}=d;c8(a.id,{...a.data,label:bU({currentLabel:a.data.label,nameIsCustom:!0===d.nameIsCustom,defaultLabel:"MCP Node",previousAutoLabel:"string"==typeof d.boundServer?d.boundServer:void 0,nextAutoLabel:b}),properties:{...f,boundServer:b,enabledTools:c}})},[c8]),dc=(0,e.useCallback)((a,b)=>{let c=c=>c.data?.edgeType==="mcp"&&(c.source===a&&c.target===b||c.source===b&&c.target===a);if(!$.some(c))return;let d=$.filter(a=>!c(a)),e=d.some(a=>a.source===b||a.target===b);_(d),e||Z(a=>a.filter(a=>a.id!==b)),d5.info(`Removed MCP node ${b} from process node ${a}`)},[$]),dd=(0,e.useCallback)((b,c)=>{var d,e;let f=Y.find(a=>a.id===b&&"process"===a.data.type),g=w.find(a=>a.id===c),h=a?.id??b$.current;if(!f||!g||g.id===h)return;let i=new Map(Y.map(a=>[a.id,a])),j=dX(Y,$);if(j.some(a=>a.processNodeId===b&&i.get(a.subflowNodeId)?.data.properties?.subflowId===c))return;let k=j.filter(a=>a.processNodeId===b).length,l=(d=P.g.createNode("subflow",{x:f.position.x-350,y:f.position.y+150*k}),{...d,type:"subflow",data:{...d.data,type:"subflow",label:g.name,...g.description?{description:g.description}:{},properties:{...d.data.properties??{},subflowId:g.id,inputMode:"isolated",outputMode:"final-only"}}}),m={source:b,sourceHandle:"process-bottom",target:l.id,targetHandle:(0,T.CW)("subflow","process-bottom")};if(!(0,S.JL)(m,[...Y,l],$))return;let n={...e=(0,S.wn)(m,[...Y,l]),data:{...e.data??{},edgeType:"standard",bidirectional:!0}},o=[...Y,l],p=[...$,n],q=d2({prompt:String(f.data.properties?.promptTemplate??""),nodeId:b,previous:{nodes:Y,edges:$},next:{nodes:o,edges:p}});Z(o.map(a=>a.id===b?{...a,data:{...a.data,properties:{...a.data.properties??{},promptTemplate:q}}}:a)),_(p),d5.info(`Connected agent "${g.name}" to process node ${b}`)},[w,$,a?.id,Y]),de=(0,e.useCallback)((a,b)=>{let c=c=>c.data?.bidirectional===!0&&(c.source===a&&c.target===b||c.source===b&&c.target===a);if(!$.some(c))return;let d=$.filter(a=>!c(a)),e=d.some(a=>a.source===b||a.target===b)?Y:Y.filter(a=>a.id!==b),f=Y.find(b=>b.id===a&&"process"===b.data.type),g=f?d2({prompt:String(f.data.properties?.promptTemplate??""),nodeId:a,previous:{nodes:Y,edges:$},next:{nodes:e,edges:d}}):null;_(d),Z(e.map(b=>b.id===a&&null!==g?{...b,data:{...b.data,properties:{...b.data.properties??{},promptTemplate:g}}}:b)),d5.info(`Removed agent node ${b} from process node ${a}`)},[$,Y]),df=(0,e.useCallback)(async()=>{let a=await Q.S.loadServerConfigs();if(!Array.isArray(a))throw Error(a?.error||M("flows.inspector.mcpLoadError"));return Promise.all(a.map(async a=>{let b=await Q.S.getServerStatus(a.name),c="string"==typeof b?b:b.status;return{...a,status:c}}))},[M]),dg=(0,e.useCallback)((a,b="edit")=>{d5.debug("Opening properties for node:",a),be(a),"process"===a.data.type&&bg(b),"mcp"===a.data.type?aV(!0):"start"===a.data.type?aX(!0):"finish"===a.data.type?aZ(!0):"subflow"===a.data.type?a_(!0):"resource"===a.data.type?a1(!0):"signal"===a.data.type?a3(!0):"static"===a.data.type?a5(!0):"trigger"===a.data.type?a7(!0):aT(!0)},[]),dh=(0,e.useCallback)(a=>{d5.debug("onDrop: Node dropped on canvas"),a.preventDefault();let b=a.dataTransfer.getData("application/reactflow");if(d5.debug(`onDrop: Node type from data transfer: ${b}`),!b||!cz)return void d5.debug(`onDrop: Missing required data - type: ${!!b}, reactFlowInstance: ${!!cz}`);let c=cz.screenToFlowPosition({x:a.clientX,y:a.clientY});d5.debug(`onDrop: Calculated position: (${c.x}, ${c.y})`);let d=cD(b,c);d&&(d5.info(`onDrop: Created new ${b} node with ID: ${d.id}`),d5.debug(`onDrop: Selected new node ${d.id} in the inspector`))},[cz,cD]),di=(0,e.useCallback)(a=>{a.preventDefault(),a.dataTransfer.dropEffect="move"},[]),dj=(0,e.useCallback)(a=>{d5.debug("onInit: ReactFlow instance initialized"),cA(a)},[]);return(0,d.jsxs)(d6,{children:["advanced"===ar&&!X&&(0,d.jsx)(i.default,{sx:{flex:"0 0 auto",height:"100%",minHeight:0},children:(0,d.jsx)(aC,{authoringMode:ar,onAddNode:cE})}),(0,d.jsx)(d_.G.Provider,{value:an,children:(0,d.jsx)(N.Ln,{children:(0,d.jsxs)(d8,{children:[(0,d.jsxs)(d7,{elevation:1,children:[(0,d.jsxs)(i.default,{sx:{minWidth:0,flex:"1 1 180px",display:{xs:"none",md:"block"}},children:[(0,d.jsx)(j.A,{"data-ask-flujo-flow-field":"name",variant:"subtitle2",fontWeight:850,noWrap:!0,children:aa}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:"guided"===ar?U("flows.builder.step",Y.filter(a=>["process","subflow","signal"].includes(a.data.type)).length):`${U("flows.builder.node",Y.length)} \xb7 ${U("flows.builder.connection",$.length)}`})]}),(0,d.jsx)(F.A,{size:"small",variant:"outlined",color:"error"===bH?"error":"saved"===bH?"success":"default",icon:"saving"===bH?(0,d.jsx)(G.default,{size:14}):"error"===bH?(0,d.jsx)(dV,{}):"saved"===bH?(0,d.jsx)(dU.A,{}):void 0,label:"saving"===bH?M("flows.builder.saving"):"error"===bH?M("flows.builder.saveFailed"):"unsaved"===bH?A&&!bE?M("flows.builder.draft"):M("flows.builder.unsaved"):M("flows.builder.saved"),"aria-label":M("flows.builder.saveStatus",{status:"saving"===bH?M("flows.builder.saving"):"error"===bH?M("flows.builder.saveFailed"):bE?M("flows.builder.unsaved"):M("flows.builder.saved")})}),(0,d.jsx)(H.A,{sx:{m:0,whiteSpace:"nowrap"},control:(0,d.jsx)(I.A,{size:"small",checked:"advanced"===ar,onChange:a=>at(a.target.checked?"advanced":"guided"),inputProps:{"aria-label":M("flows.builder.expertView")}}),label:"advanced"===ar?M("flows.builder.expert"):M("flows.builder.easy")}),"advanced"===ar&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.A,{variant:"outlined",size:"small",startIcon:(0,d.jsx)(y.A,{}),onClick:a=>bq(a.currentTarget),"aria-label":M("flows.builder.addNode"),"aria-controls":bp?"add-node-menu":void 0,"aria-haspopup":"menu","aria-expanded":bp?"true":void 0,title:M("flows.builder.addNodeHelp"),children:M("flows.builder.addNode")}),(0,d.jsx)(J.A,{id:"add-node-menu",anchorEl:bp,open:!!bp,onClose:()=>bq(null),MenuListProps:{"aria-label":M("flows.builder.addNode")},children:cI.map(a=>(0,d.jsx)(K.A,{onClick:()=>{bq(null),cE(a.type)},children:(0,d.jsxs)(i.default,{sx:{minWidth:0},children:[(0,d.jsx)(j.A,{variant:"subtitle2",fontWeight:750,children:a.label}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:a.description})]})},a.type))}),(0,d.jsx)(ba,{nodes:Y,edges:$}),(0,d.jsx)(n.A,{title:M("flows.builder.autoAlign"),children:(0,d.jsx)("span",{children:(0,d.jsx)(m.A,{"aria-label":M("flows.builder.autoAlign"),onClick:c1,disabled:Y.length<=1,color:"primary",size:"small",children:(0,d.jsx)(dT,{})})})}),(0,d.jsx)(L.A,{orientation:"vertical",flexItem:!0}),(0,d.jsx)(n.A,{title:`${M("flows.builder.undo")} \xb7 Ctrl/⌘ Z`,children:(0,d.jsx)("span",{children:(0,d.jsx)(m.A,{"aria-label":M("flows.builder.undo"),onClick:cs,disabled:!cq,color:"primary",size:"small",children:(0,d.jsx)(dJ,{})})})}),(0,d.jsx)(n.A,{title:`${M("flows.builder.redo")} \xb7 Ctrl/⌘ Shift Z`,children:(0,d.jsx)("span",{children:(0,d.jsx)(m.A,{"aria-label":M("flows.builder.redo"),onClick:ct,disabled:!cr,color:"primary",size:"small",children:(0,d.jsx)(dK,{})})})})]}),(0,d.jsx)(k.A,{variant:"guided"===ar?"outlined":"contained",color:"primary",onClick:()=>void cd(),startIcon:"saving"===bH?(0,d.jsx)(G.default,{size:16,color:"inherit"}):(0,d.jsx)(dI,{}),disabled:!!aj||"saving"===bH,"aria-label":M("flows.builder.saveFlow"),children:M("flows.builder.save")}),"guided"===ar&&B&&(0,d.jsx)(k.A,{variant:"contained",color:"primary",onClick:()=>void ce(),startIcon:(0,d.jsx)(bG.A,{}),disabled:!cU,children:M("flows.builder.try")}),("advanced"===ar||a&&!A)&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.A,{title:M("flows.builder.moreCommands"),children:(0,d.jsx)(m.A,{id:"more-actions-button","data-tour":"improve-flow","aria-label":M("flows.builder.moreActions"),"aria-controls":br?"more-actions-menu":void 0,"aria-haspopup":"menu","aria-expanded":br?"true":void 0,onClick:a=>bs(a.currentTarget),color:"primary",size:"small",children:(0,d.jsx)(dL,{})})}),(0,d.jsxs)(J.A,{id:"more-actions-menu",anchorEl:br,open:!!br,onClose:()=>bs(null),MenuListProps:{"aria-labelledby":"more-actions-button"},children:["advanced"===ar&&(0,d.jsx)(K.A,{disabled:Y.length<=1,onClick:()=>{bs(null),c1()},children:M("flows.builder.autoAlign")}),"advanced"===ar&&(0,d.jsx)(K.A,{disabled:Y.length<=1,onClick:()=>{bs(null),c4()},children:M("flows.builder.relayout")}),"advanced"===ar&&(0,d.jsx)(K.A,{disabled:0===Y.length,onClick:cj,children:M("flows.builder.repairAutomatic")}),"advanced"===ar&&(0,d.jsx)(K.A,{disabled:0===Y.length,onClick:ck,children:M("flows.builder.repairAi")}),a&&!A&&(0,d.jsx)(L.A,{}),a&&!A&&"advanced"===ar&&(0,d.jsx)(K.A,{onClick:()=>{bs(null),bu(""),bm(!0)},children:M("flows.builder.improveAi")}),a&&!A&&(0,d.jsx)(K.A,{onClick:()=>{bs(null),bw(!0)},children:"guided"===ar?M("flows.builder.previousVersions"):M("flows.builder.history")}),a&&!A&&(0,d.jsx)(K.A,{onClick:()=>{bs(null),aN("duplicate"),aP(M("flows.page.copyName",{name:a.name})),aL(!0)},children:"guided"===ar?M("flows.builder.duplicateAgent"):M("flows.builder.duplicateFlow")}),a&&!A&&(0,d.jsx)(K.A,{sx:{color:"error.main"},onClick:()=>{bs(null),cg()},children:"guided"===ar?M("flows.builder.deleteAgent"):M("flows.builder.deleteFlow")})]})]})]}),(0,d.jsx)(o.A,{in:!!bb,unmountOnExit:!0,children:bb&&(0,d.jsx)(p.A,{severity:"warning",onClose:()=>bc(null),sx:{mb:1},children:bb})}),(0,d.jsx)(o.A,{in:!!bn,unmountOnExit:!0,children:bn&&(0,d.jsx)(p.A,{severity:bn.severity,onClose:()=>bo(null),sx:{mb:1},children:bn.message})}),"guided"===ar?(0,d.jsx)(bJ,{nodes:Y,orderedStepIds:aI.orderedNodeIds,subagentNodeIds:aI.subagentNodeIds,selectedNodeId:cG?.id,flowName:aa,flowNameError:aj,onFlowNameChange:a=>{ai.current=a,ah(a),ak(b7(a)),b8()},onSelectNode:cV,onAddTask:cF,onTry:B?()=>{ce()}:void 0,isSaving:"saving"===bH,hasAdvancedFeatures:aJ,readyToTry:cU,needsAIConnection:!cR,onSwitchAdvanced:()=>at("advanced"),models:bK,modelsLoading:!bM,aiAssistance:bQ,selectedModelId:bO,onChooseAssistance:a=>{bS(a),bP(b=>"manual"===a?null:b??eb(bK))},onModelChange:bP,onCheckPlausibility:()=>{bX(null),bZ("review"),bV(!0)},currentFlowId:a?.id??b$.current,availableAgents:w,mcpConnectionsByNode:cJ,agentConnectionsByNode:cL,onConnectMcpServer:da,onRemoveMcpServer:dc,loadMcpServers:df,onConnectAgent:dd,onRemoveAgent:de}):(0,d.jsxs)(i.default,{sx:{flex:1,width:"100%",minWidth:0,minHeight:0,position:"relative",display:"flex",flexDirection:"column"},children:[X&&(0,d.jsx)(i.default,{sx:{mb:1},children:(0,d.jsx)(aC,{authoringMode:ar,onAddNode:cE})}),(0,d.jsx)(ag.Ay,{ref:cy,nodes:Y,edges:$,onNodesChange:cv,onEdgesChange:cx,onDrop:dh,onDragOver:di,onInit:dj,reactFlowWrapper:cy,onEditNode:dg,onCreateNode:cD,onConvertProcessToSubflow:a?a=>bk(a.id):void 0,onEditEdge:a=>bi(a)})]})]})})}),("advanced"===ar||cG)&&(0,d.jsx)(bA,{selectedNode:cG,onClearSelection:c0,onCommitNode:c8,onOpenAdvanced:dg,onOpenTechnicalDetails:a=>a9(a.id),flowName:aa,flowNameError:aj,onFlowNameChange:a=>{ai.current=a,ah(a),ak(b7(a)),b8()},flowDescription:al,onFlowDescriptionChange:a=>{am(a),b8()},authoringMode:ar,beginnerMode:"guided"===ar,onAuthoringModeChange:at,permissionRuleCount:ay.length,onOpenPermissionRules:()=>aE(!0),onSuggestTools:a=>{bX(a.id),bZ("apps"),bV(!0)},onSuggestAgents:a=>{bX(a.id),bZ("agents"),bV(!0)},onImprovePrompt:async a=>{let b=a.data.properties?.boundModel,c=a.data.properties?.modelId,d="string"==typeof b&&b?b:"string"==typeof c&&c?c:bO;if(!d)throw Error(M("flows.inspector.chooseAiToImprove"));let e={...cW,nodes:cW.nodes.map(b=>b.id===a.id?a:b)};return(await P.g.improvePromptForStep({flow:e,relatedFlows:x,nodeId:a.id,modelId:d})).prompt},onCheckPlausibility:()=>{bX(null),bZ("review"),bV(!0)},connectedMcpServers:cK,onConnectMcpServer:da,onRemoveMcpServer:dc,loadMcpServers:df,onSelectMcpNodeServer:db,currentFlowId:a?.id??b$.current,availableAgents:w,connectedAgents:cG?.data.type==="process"?cL.get(cG.id)??[]:[],onConnectAgent:dd,onRemoveAgent:de,models:bK,onNavigateToFlow:C?a=>cf(()=>C(a)):void 0}),(0,d.jsx)(cB,{open:aS,node:bd,onClose:()=>{aT(!1),bg("edit")},onSave:c9,mode:bf,flowEdges:$,flowNodes:Y,flowId:a?.id,onConnectMcpServer:a=>{bd&&da(bd.id,a)},authoringMode:ar}),(0,d.jsx)(bR,{open:bT,flow:cW,relatedFlows:x,nodeId:bW,initialFocus:bY,modelId:c$,models:bK,onApply:c_,onApplyRelatedFlows:z,onClose:()=>bV(!1)}),(0,d.jsx)(cM,{open:aU,node:bd,onClose:()=>aV(!1),onSave:c9,authoringMode:ar}),(0,d.jsx)(cN,{open:aW,node:bd,onClose:()=>aX(!1),onSave:c9}),(0,d.jsx)(cO,{open:aY,node:bd,onClose:()=>aZ(!1),onSave:c9}),(0,d.jsx)(cY,{open:a$,node:bd,onClose:()=>a_(!1),onSave:c9,onNavigateToFlow:C?a=>{a_(!1),cf(()=>C(a))}:void 0,flowId:a?.id,authoringMode:ar}),(0,d.jsx)(c2,{open:a0,node:bd,onClose:()=>a1(!1),onSave:c9,flowNodes:Y}),(0,d.jsx)(c3,{open:a2,node:bd,onClose:()=>a3(!1),onSave:c9}),(0,d.jsx)(c7,{open:a4,node:bd,onClose:()=>a5(!1),onSave:c9}),(0,d.jsx)(dt,{open:a6,node:bd,flowId:a?.id||"",onClose:()=>{a7(!1),be(null)},onSave:c9}),(0,d.jsx)(cT,{open:!!cH,node:cH,flowNames:an,onClose:()=>a9(null)}),(0,d.jsx)(cP,{open:!!bh,edge:bh,onClose:()=>bi(null),onSave:cw}),(0,d.jsx)(dH,{open:!!bj,processNodeId:bj,parentFlow:{id:a?.id||"",name:aa,description:al,folder:a?.folder,favorite:a?.favorite,permissionRules:cb(),createdAt:a?.createdAt,updatedAt:a?.updatedAt,nodes:Y,edges:$},existingFlowNames:w.map(a=>a.name),onClose:()=>bk(null),onAccept:cu}),(0,d.jsx)(dz,{open:bv,flowId:a?.id,onClose:()=>bw(!1),onRestore:ci}),(0,d.jsx)(dP,{open:bl,onClose:()=>bm(!1),currentFlow:{id:a?.id||"",name:aa,description:al,permissionRules:cb(),nodes:Y,edges:$},onImproved:ch,initialDescription:bt}),(0,d.jsxs)(q.A,{open:aD,onClose:()=>aE(!1),fullWidth:!0,maxWidth:"md","aria-labelledby":"permission-rules-dialog-title",children:[(0,d.jsx)(r.A,{id:"permission-rules-dialog-title",children:M("flows.builder.permissionsTitle")}),(0,d.jsxs)(s.A,{children:[(0,d.jsx)(t.A,{sx:{mb:2},children:M("flows.builder.permissionsHelp")}),aF&&(0,d.jsx)(p.A,{severity:"error",sx:{mb:2},children:aF}),0===ay.length?(0,d.jsx)(j.A,{color:"text.secondary",sx:{mb:2},children:M("flows.builder.noPermissions")}):ay.map((a,b)=>(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:1},children:[(0,d.jsxs)(j.A,{"aria-label":M("flows.builder.rule",{number:b+1}),sx:{minWidth:24},children:[b+1,"."]}),(0,d.jsx)(u.A,{label:M("flows.builder.action"),size:"small",value:a.action,onChange:b=>b9(a.id,{action:b.target.value}),inputProps:{"aria-label":`${M("flows.builder.rule",{number:b+1})}: ${M("flows.builder.action")}`},sx:{flex:1}}),(0,d.jsx)(u.A,{label:M("flows.builder.resource"),size:"small",value:a.resource,onChange:b=>b9(a.id,{resource:b.target.value}),inputProps:{"aria-label":`${M("flows.builder.rule",{number:b+1})}: ${M("flows.builder.resource")}`},sx:{flex:1}}),(0,d.jsxs)(u.A,{select:!0,label:M("flows.builder.effect"),size:"small",value:a.effect,onChange:b=>b9(a.id,{effect:b.target.value}),inputProps:{"aria-label":`${M("flows.builder.rule",{number:b+1})}: ${M("flows.builder.effect")}`},sx:{minWidth:100},children:[(0,d.jsx)(K.A,{value:"allow",children:M("flows.builder.allow")}),(0,d.jsx)(K.A,{value:"deny",children:M("flows.builder.deny")}),(0,d.jsx)(K.A,{value:"ask",children:M("flows.builder.ask")})]}),(0,d.jsx)(n.A,{title:M("flows.builder.moveRuleUp",{number:b+1}),children:(0,d.jsx)("span",{children:(0,d.jsx)(m.A,{"aria-label":M("flows.builder.moveRuleUp",{number:b+1}),onClick:()=>ca(b,-1),disabled:0===b,children:(0,d.jsx)(c5.A,{})})})}),(0,d.jsx)(n.A,{title:M("flows.builder.moveRuleDown",{number:b+1}),children:(0,d.jsx)("span",{children:(0,d.jsx)(m.A,{"aria-label":M("flows.builder.moveRuleDown",{number:b+1}),onClick:()=>ca(b,1),disabled:b===ay.length-1,children:(0,d.jsx)(c6,{})})})}),(0,d.jsx)(n.A,{title:M("flows.builder.deleteRule",{number:b+1}),children:(0,d.jsx)(m.A,{"aria-label":M("flows.builder.deleteRule",{number:b+1}),onClick:()=>{var b;return b=a.id,void(az(a=>a.filter(a=>a.id!==b)),aB(!0),aG(null),b8())},children:(0,d.jsx)(dM.A,{})})})]},a.id)),(0,d.jsx)(k.A,{startIcon:(0,d.jsx)(y.A,{}),onClick:()=>{az(a=>[...a,ax({action:"",resource:"",effect:"ask"})]),aB(!0),aG(null),b8()},children:M("flows.builder.addRule")})]}),(0,d.jsx)(v.A,{children:(0,d.jsx)(k.A,{onClick:()=>aE(!1),children:M("flows.builder.done")})})]}),(0,d.jsxs)(q.A,{open:aK,onClose:cn,children:[(0,d.jsx)(r.A,{children:"duplicate"===aM?"guided"===ar?M("flows.builder.copyAgent"):M("flows.builder.copyFlow"):"rename"===aM?"guided"===ar?M("flows.builder.renameAgent"):M("flows.builder.renameFlow"):M("flows.builder.unsavedChanges")}),(0,d.jsx)(s.A,{children:"unsaved"===aM?(0,d.jsx)(t.A,{children:M("flows.builder.unsavedQuestion")}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(t.A,{children:"duplicate"===aM?M("flows.builder.copyPrompt"):M("flows.builder.renameQuestion")}),(0,d.jsx)(u.A,{autoFocus:!0,margin:"dense",label:"guided"===ar?M("flows.builder.agentName"):M("flows.builder.flowName"),type:"text",fullWidth:!0,value:aO,onChange:a=>{let b=a.target.value;aP(b),aR(b7(b))},error:!!aQ,helperText:aQ,sx:{mt:2}})]})}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:cn,children:M("flows.builder.cancel")}),"unsaved"===aM&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.A,{onClick:()=>{bF(!1),cm(),cn()},color:"error",children:M("flows.builder.discard")}),(0,d.jsx)(k.A,{onClick:cp,variant:"contained",color:"primary",children:M("flows.builder.saveChanges")})]}),"rename"===aM&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.A,{onClick:()=>{let b=b7(aO);b?aR(b):(a&&cl(a,aO),cn())},children:M("flows.builder.copy")}),(0,d.jsx)(k.A,{onClick:co,variant:"contained",color:"primary",disabled:!!aQ,children:M("flows.builder.rename")})]}),"duplicate"===aM&&(0,d.jsx)(k.A,{onClick:co,variant:"contained",color:"primary",disabled:!!aQ,children:M("flows.builder.copy")})]})]})]})});ed.displayName="FlowBuilder";var ee=c(607),ef=c(32105),eg=c(66417),eh=c(76676),ei=c(33439);async function ej(a,b,c){let d=await fetch("/api/flow/generate/visual",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a),signal:c});if(!d.ok){let a=await d.json().catch(()=>null);throw Error(a?.error||"Could not start visual agent generation.")}let e=null,f=null;if(await (0,ei.d)(d,async a=>{await b(a),"complete"===a.type&&(e=a.result),"error"===a.type&&(f=a.error)}),f)throw Error(f);if(!e)throw Error("Visual generation ended without a completed draft.");return e}var ek=c(34159),el=c(13036);let em=(0,w.A)((0,d.jsx)("path",{d:"M14 10.5v.5h-3v-.5c0-.83-.67-1.5-1.5-1.5h-1V7h1c.83 0 1.5-.67 1.5-1.5v-3c0-.83-.67-1.5-1.5-1.5h-4C4.67 1 4 1.67 4 2.5v3C4 6.33 4.67 7 5.5 7h1v2h-1C4.67 9 4 9.67 4 10.5v3c0 .83.67 1.5 1.5 1.5h1v2h-1c-.83 0-1.5.67-1.5 1.5v3c0 .83.67 1.5 1.5 1.5h4c.83 0 1.5-.67 1.5-1.5v-3c0-.83-.67-1.5-1.5-1.5h-1v-2h1c.83 0 1.5-.67 1.5-1.5V13h3v.5c0 .83.67 1.5 1.5 1.5h4c.83 0 1.5-.67 1.5-1.5v-3c0-.83-.67-1.5-1.5-1.5h-4c-.83 0-1.5.67-1.5 1.5"}),"SchemaRounded"),en={started:!1,sessionId:null,maxDepth:8,agents:{},agentOrder:[],focusedAgentId:null,suggestions:{},decisions:[],activities:[],routes:{},previews:{}};function eo(a,b){return`${a}\u0000${b}`}function ep(a,b){if("reset"===b.type)return en;if("focus"===b.type)return{...a,focusedAgentId:b.agentId};if("session-started"===b.type)return{...en,started:!0,sessionId:b.sessionId,maxDepth:b.maxDepth,activities:[b.message]};if("activity"===b.type)return{...a,activities:[...a.activities.slice(-15),b.message]};if("agent-created"===b.type)return{...a,agents:{...a.agents,[b.agent.id]:b.agent},agentOrder:a.agentOrder.includes(b.agent.id)?a.agentOrder:[...a.agentOrder,b.agent.id],focusedAgentId:b.agent.id};if("agent-focused"===b.type)return{...a,focusedAgentId:b.agentId};if("step-added"===b.type||"step-updated"===b.type)return function(a,b,c){let d=a.agents[b];if(!d)return a;let e=d.steps.findIndex(a=>a.id===c.id),f=e>=0?d.steps.map((a,b)=>b===e?c:a):[...d.steps,c];return{...a,agents:{...a.agents,[b]:{...d,steps:f}}}}({...a,focusedAgentId:b.agentId},b.agentId,b.step);if("routes-updated"===b.type)return{...a,routes:{...a.routes,[b.agentId]:b.routes}};if("flow-preview"===b.type)return{...a,previews:{...a.previews,[b.agentId]:{flow:b.flow,revision:b.revision}}};if("suggestions"===b.type)return{...a,suggestions:{...a.suggestions,[eo(b.agentId,b.stepId)]:{tools:b.tools,agents:b.agents}}};if("suggestion-decision"===b.type)return{...a,decisions:[...a.decisions,b.decision]};if("agent-status"===b.type){let c=a.agents[b.agentId];return c?{...a,agents:{...a.agents,[c.id]:{...c,status:b.status}}}:a}if("marketplace-results"===b.type)return{...a,activities:[...a.activities.slice(-15),`Marketplace search “${b.query}” found ${b.count} result(s).`]};if("connector-installed"===b.type)return{...a,activities:[...a.activities.slice(-15),`Connected ${b.name} with ${b.tools.length} tool(s).`]};if("complete"===b.type){let c=Math.max(0,...Object.values(a.previews).map(a=>a.revision))+1,d=Object.fromEntries(b.result.flows.map(a=>[a.id,{flow:a,revision:c}]));return{...a,activities:[],previews:{...a.previews,...d}}}return"error"===b.type?{...a,activities:[b.error]}:a}let eq=(0,el.i7)`
7
8
  0%, 100% { transform: scale(1); opacity: .72; }
8
9
  50% { transform: scale(1.06); opacity: 1; }
9
- `;function er(a){return"ready"===a?"success":"needs-attention"===a?"warning":"checking"===a?"info":"primary"}let es={building:"flows.generator.visualStatus.building",checking:"flows.generator.visualStatus.checking",ready:"flows.generator.visualStatus.ready","needs-attention":"flows.generator.visualStatus.needs-attention"};function et({decision:a}){let{t:b}=(0,au.s9)(),c="accepted"===a.decision;return(0,d.jsx)(F.A,{size:"small",color:c?"success":"default",variant:c?"filled":"outlined",icon:c?(0,d.jsx)(dU.A,{}):(0,d.jsx)(be.A,{}),label:b(c?"flows.generator.visualUsing":"flows.generator.visualSkipped",{name:a.label}),title:a.reason,sx:{maxWidth:"100%","& .MuiChip-label":{overflow:"hidden",textOverflow:"ellipsis"}}})}function eu({state:a,onSelect:b}){let{t:c,tp:e}=(0,au.s9)();return(0,d.jsxs)(bb.A,{spacing:.75,children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",sx:{px:.5},children:[(0,d.jsx)(A.A,{color:"primary",fontSize:"small"}),(0,d.jsx)(j.A,{variant:"subtitle2",fontWeight:850,children:c("flows.generator.visualTree")}),(0,d.jsx)(F.A,{size:"small",label:`${a.agentOrder.length}`})]}),a.agentOrder.map(f=>{let g=a.agents[f];if(!g)return null;let h=a.focusedAgentId===g.id;return(0,d.jsx)(D.A,{component:"button",type:"button",onClick:()=>b(g.id),elevation:0,sx:{appearance:"none",width:`calc(100% - ${10*Math.min(g.depth,5)}px)`,ml:`${10*Math.min(g.depth,5)}px !important`,p:1,textAlign:"left",color:"text.primary",cursor:"pointer",border:1,borderColor:h?"primary.main":"divider",borderRadius:2.5,bgcolor:h?a=>(0,ah.X4)(a.palette.primary.main,.11):"background.paper",transition:"all 180ms ease"},children:(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,d.jsx)(bu.A,{color:h?"primary":"action",fontSize:"small"}),(0,d.jsxs)(i.default,{minWidth:0,flex:1,children:[(0,d.jsx)(j.A,{variant:"body2",fontWeight:800,noWrap:!0,children:g.name}),(0,d.jsxs)(j.A,{variant:"caption",color:"text.secondary",children:[e("flows.card.step",g.steps.length)," \xb7 ",c("flows.generator.visualLevel",{count:g.depth})]})]}),(0,d.jsx)(i.default,{sx:{width:8,height:8,borderRadius:"50%",bgcolor:`${er(g.status)}.main`}})]})},g.id)})]})}function ev({preview:a,agentName:b}){let{t:c}=(0,au.s9)();return(0,d.jsxs)(i.default,{"data-testid":"visual-expert-preview",sx:{minWidth:0,minHeight:{xs:360,lg:0},height:"100%",display:"flex",flexDirection:"column",borderLeft:{lg:1},borderTop:{xs:1,lg:0},borderColor:"divider",bgcolor:a=>(0,ah.X4)(a.palette.background.default,.55)},children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",sx:{px:1.5,py:1.25,borderBottom:1,borderColor:"divider"},children:[(0,d.jsx)(em,{color:"primary",fontSize:"small"}),(0,d.jsxs)(i.default,{minWidth:0,flex:1,children:[(0,d.jsx)(j.A,{variant:"subtitle2",fontWeight:850,children:c("flows.generator.visualExpertPreview")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",noWrap:!0,children:b})]}),(0,d.jsx)(F.A,{size:"small",variant:"outlined",color:"primary",label:c("flows.generator.visualAutoAligned")})]}),(0,d.jsx)(i.default,{sx:{position:"relative",flex:1,minHeight:0},children:a?(0,d.jsx)(dx,{flow:a.flow,autoLayout:!0,fitViewOnChange:!0},a.flow.id):(0,d.jsx)(i.default,{sx:{position:"absolute",inset:0,display:"grid",placeItems:"center",p:4,textAlign:"center"},children:(0,d.jsxs)(bb.A,{spacing:1.5,alignItems:"center",children:[(0,d.jsxs)(i.default,{sx:{position:"relative",display:"grid",placeItems:"center",width:64,height:64},children:[(0,d.jsx)(i.default,{sx:{position:"absolute",inset:0,borderRadius:"50%",bgcolor:"primary.main",opacity:.1,animation:`${eq} 1.5s ease-in-out infinite`}}),(0,d.jsx)(em,{color:"primary",sx:{fontSize:32}})]}),(0,d.jsx)(j.A,{variant:"body2",fontWeight:750,children:c("flows.generator.visualPreviewWaiting")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:c("flows.generator.visualPreviewHelp")})]})})})]})}function ew({state:a,working:b,onSelectAgent:c}){let{t:e}=(0,au.s9)(),g=a.focusedAgentId?a.agents[a.focusedAgentId]:void 0;if(!g)return(0,d.jsx)(i.default,{sx:{minHeight:360,display:"grid",placeItems:"center",textAlign:"center",p:4},children:(0,d.jsxs)(bb.A,{alignItems:"center",spacing:2,children:[(0,d.jsxs)(i.default,{sx:{position:"relative",display:"grid",placeItems:"center",width:88,height:88},children:[(0,d.jsx)(i.default,{sx:{position:"absolute",inset:0,borderRadius:"50%",bgcolor:"primary.main",opacity:.12,animation:`${eq} 1.5s ease-in-out infinite`}}),(0,d.jsx)(bh.A,{color:"primary",sx:{fontSize:42}})]}),(0,d.jsx)(j.A,{variant:"h6",children:e("flows.generator.visualDesigning")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:e("flows.generator.visualFirstAgent")}),b&&(0,d.jsx)(G.default,{size:24})]})});let h=a.previews[g.id];return(0,d.jsxs)(i.default,{sx:{display:"grid",gridTemplateColumns:{xs:"minmax(0, 1fr)",md:"210px minmax(0, 1fr)",lg:"210px minmax(380px, 1.08fr) minmax(340px, 0.92fr)"},minHeight:460,height:{lg:"58vh"},maxHeight:{lg:"58vh"},width:"100%",maxWidth:"100%",minWidth:0,overflowX:"hidden"},children:[(0,d.jsx)(i.default,{sx:{minWidth:0,p:1.5,borderRight:{md:1},borderBottom:{xs:1,md:0},borderColor:"divider",overflowY:"auto"},children:(0,d.jsx)(eu,{state:a,onSelect:c})}),(0,d.jsx)(i.default,{sx:{minWidth:0,p:{xs:1.5,sm:2.5},overflowY:"auto"},children:(0,d.jsxs)(bb.A,{spacing:2,children:[(0,d.jsx)(D.A,{elevation:0,sx:{p:2,border:1,borderColor:"divider",borderRadius:3,bgcolor:a=>(0,ah.X4)(a.palette.primary.main,.045)},children:(0,d.jsxs)(bb.A,{direction:{xs:"column",sm:"row"},spacing:1,alignItems:{sm:"center"},children:[(0,d.jsxs)(i.default,{flex:1,minWidth:0,children:[(0,d.jsx)(j.A,{variant:"overline",color:"primary.main",children:e("flows.generator.visualLevelAgent",{count:g.depth})}),(0,d.jsx)(j.A,{variant:"h5",fontWeight:850,children:g.name}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:g.goal})]}),(0,d.jsx)(F.A,{color:er(g.status),label:e(es[g.status])})]})}),(0,d.jsxs)(i.default,{sx:{px:1.5,py:1,borderRadius:2.5,border:1,borderColor:"divider",bgcolor:"background.paper"},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:850,color:"primary.main",sx:{textTransform:"uppercase"},children:e("flows.guided.when")}),(0,d.jsx)(j.A,{variant:"body2",fontWeight:700,children:e("flows.guided.someoneAsks")})]}),g.steps.map((b,h)=>{let k=a.suggestions[eo(g.id,b.id)],l=a.decisions.filter(a=>a.agentId===g.id&&a.stepId===b.id),m=!!k&&l.length<k.tools.length+k.agents.length,n=b.connectedAgentIds.map(b=>a.agents[b]).filter(Boolean);return(0,d.jsxs)(f().Fragment,{children:[(0,d.jsx)(bE,{sx:{alignSelf:"center",color:"text.disabled"}}),(0,d.jsx)(D.A,{elevation:0,sx:{p:1.75,border:1,borderColor:m?"info.main":"divider",borderRadius:3,animation:m?`${eq} 1.8s ease-in-out infinite`:void 0},children:(0,d.jsxs)(bb.A,{spacing:1.25,children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1.25,alignItems:"flex-start",children:[(0,d.jsx)(i.default,{sx:{display:"grid",placeItems:"center",width:32,height:32,flexShrink:0,borderRadius:2,bgcolor:"primary.main",color:"primary.contrastText",fontWeight:850},children:h+1}),(0,d.jsxs)(i.default,{minWidth:0,flex:1,children:[(0,d.jsx)(j.A,{variant:"subtitle1",fontWeight:850,children:b.label}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{whiteSpace:"pre-wrap"},children:b.task.replace(/\$\{tool:([^}_]+)__([^}]+)\}/g,(a,b,c)=>`${b} / ${c}`)})]}),m&&(0,d.jsx)(G.default,{size:18})]}),(k||l.length>0||n.length>0)&&(0,d.jsx)(L.A,{}),k&&k.tools.length+k.agents.length>0&&(0,d.jsxs)(bb.A,{direction:"row",spacing:.75,alignItems:"center",children:[(0,d.jsx)(bh.A,{color:"info",fontSize:"small"}),(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,children:e("flows.generator.visualSuggestionsReviewed")})]}),l.length>0&&(0,d.jsx)(bb.A,{direction:"row",gap:.75,flexWrap:"wrap",children:l.map(a=>(0,d.jsx)(et,{decision:a},a.id))}),n.length>0&&(0,d.jsxs)(bb.A,{spacing:.75,children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,color:"text.secondary",sx:{textTransform:"uppercase"},children:e("flows.generator.visualNewHelpers")}),n.map(a=>(0,d.jsx)(F.A,{icon:(0,d.jsx)(bo.A,{}),color:"primary",variant:"outlined",label:`${a.name} \xb7 ${e("flows.generator.visualLevel",{count:a.depth})}`,onClick:()=>c(a.id)},a.id))]})]})})]},b.id)}),0===g.steps.length&&(0,d.jsxs)(D.A,{elevation:0,sx:{p:3,border:1,borderStyle:"dashed",borderColor:"divider",borderRadius:3,textAlign:"center"},children:[(0,d.jsx)(G.default,{size:22,sx:{mb:1}}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:e("flows.generator.visualChoosingStep")})]}),(0,d.jsx)(bE,{sx:{alignSelf:"center",color:"text.disabled"}}),(0,d.jsxs)(i.default,{sx:{px:1.5,py:1,borderRadius:2.5,border:1,borderColor:"divider",bgcolor:a=>(0,ah.X4)(a.palette.success.main,.055)},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:850,color:"success.main",sx:{textTransform:"uppercase"},children:e("flows.guided.then")}),(0,d.jsx)(j.A,{variant:"body2",fontWeight:700,children:e("flows.guided.sendAnswer")})]}),a.activities.length>0&&(0,d.jsx)(D.A,{elevation:0,sx:{p:1.5,borderRadius:3,bgcolor:"action.hover"},children:(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",children:[b?(0,d.jsx)(G.default,{size:16}):(0,d.jsx)(dU.A,{color:"success",fontSize:"small"}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:a.activities[a.activities.length-1]})]})})]})}),(0,d.jsx)(i.default,{sx:{gridColumn:{xs:"1",md:"1 / -1",lg:"auto"},minWidth:0,minHeight:0,height:"100%",overflow:"hidden"},children:(0,d.jsx)(ev,{preview:h,agentName:g.name})})]})}let ex=(0,M.h)("frontend/components/Flow/FlowManager/GenerateFlowDialog");function ey(a,b){return{id:(0,O.A)(),role:a,content:b,timestamp:Date.now()}}function ez(a){if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return a}}function eA(a,b,c,d){let e=c(b?"flows.generator.updated":"flows.generator.readyNamed",{name:a.flow.name}),f=Math.max(0,a.flows.length-1),g=f?d("flows.generator.helper",f):"",h=a.errorCount+a.warningCount;return[e,g,h?d("flows.generator.review",h):c("flows.generator.readyReview")].filter(Boolean).join(" ")}let eB=({open:a,onClose:b,onGenerated:c})=>{let{settings:f,settingsHydrated:g}=(0,ek.rX)(),{t:h,tp:l}=(0,au.s9)(),o=g&&f?.experimental?.enabled===!0&&!0===f.experimental.flowBasedGenerator,[t,u]=(0,e.useState)([]),[w,x]=(0,e.useState)(""),[y,A]=(0,e.useState)(null),[B,C]=(0,e.useState)([]),[D,E]=(0,e.useState)(null),[G,I]=(0,e.useState)(!1),[J,L]=(0,e.useState)(8),[M,N]=(0,e.useState)(!1),[Q,S]=(0,e.useState)(!1),[T,U]=(0,e.useState)(null),[V,W]=(0,e.useReducer)(ep,en),X=(0,e.useRef)(null);(0,e.useEffect)(()=>{if(!a)return;let b=!1;return R.N.loadModels().then(a=>{b||(u(a),x(b=>a.some(a=>a.id===b)?b:a[0]?.id??""))}).catch(a=>{ex.warn("Failed to load generator models",a),b||U(h("flows.generator.modelsFailed"))}),()=>{b=!0}},[a,h]),(0,e.useEffect)(()=>{a&&(A(null),C([]),E(null),I(!1),L(8),W({type:"reset"}),U(null))},[o,a]);let Y=(0,e.useMemo)(()=>B.filter(a=>("user"===a.role||"assistant"===a.role)&&"string"==typeof a.content&&a.content.trim()).map((a,b)=>({id:"string"==typeof a.id?a.id:`flow-generator-${b}`,role:a.role,content:a.content,timestamp:"number"==typeof a.timestamp?a.timestamp:Date.now()+b,processNodeId:a.processNodeId})),[B]),Z=(0,e.useCallback)(async()=>{if(y)return y;let a=(0,O.A)(),{flow:b}=await eh.O.synthesizeFlowGenerator({conversationId:a,modelId:w,allowInstall:G}),c=Date.now();return await eh.O.createConversation({id:a,title:h("flows.generator.conversationTitle"),flowId:b.id,flowSnapshot:b,createdAt:c,updatedAt:c}),A(a),a},[G,y,w,h]),$=(0,e.useCallback)(async a=>{let b=a.trim();if(!b||M||!w)return;let c=[...B,ey("user",b)];C(c),U(null),N(!0);try{if(o){let a=await Z(),b=await eh.O.completeFlowGeneratorTurn({conversationId:a,messages:c}),d=Array.isArray(b?.messages)?b.messages:c;C(d);let e=function(a){let b=(a,c=0)=>{if(c>6)return null;let d=ez(a);if(!d||"object"!=typeof d)return null;if(d.flow&&Array.isArray(d.flows)&&"string"==typeof d.rootFlowId)return d;if(Array.isArray(d.content))for(let a=d.content.length-1;a>=0;a--){let e=b(d.content[a],c+1);if(e)return e}for(let a of["text","data","result"])if(a in d){let e=b(d[a],c+1);if(e)return e}return null};for(let c=a.length-1;c>=0;c--){let d=b(a[c]?.content);if(d)return d}return null}(d);if(!e)return void U(h("flows.generator.experimentalNoDraft"));let f={flow:e.flow,flows:e.flows,rootFlowId:e.rootFlowId,errorCount:e.validation?.errorCount??0,warningCount:e.validation?.warningCount??0,attempts:d.filter(a=>"user"===a.role).length,installedServers:function(a){let b=new Map,c=(a,d=0)=>{if(d>6)return;let e=ez(a);if(e&&"object"==typeof e)for(let a of(!0===e.installed&&"string"==typeof e.serverName&&Array.isArray(e.tools)&&b.set(e.serverName,{name:e.serverName,tools:e.tools.map(a=>"string"==typeof a?a:a&&"object"==typeof a?String(a.name??""):"").filter(Boolean),alreadyExisted:!0===e.alreadyExisted,..."string"==typeof e.plan?.command?{command:e.plan.command}:{},...Array.isArray(e.plan?.args)?{args:e.plan.args.map(String)}:{},..."string"==typeof e.plan?.verificationStatus?{verificationStatus:e.plan.verificationStatus}:{}}),Object.values(e)))c(a,d+1)};for(let b of a)c(b.content);return[...b.values()]}(d)};E(f),ex.info("Experimental Generation Flow returned a draft",{flowId:f.rootFlowId,flowCount:f.flows.length,errors:f.errorCount,warnings:f.warningCount});return}if(!D){let a=new AbortController;X.current=a,W({type:"session-started",sessionId:"starting",maxDepth:J,message:h("flows.generator.visualStarting")});let d=await ej({description:b,modelId:w,maxDepth:J,allowInstall:G},async a=>{W(a),("agent-created"===a.type||"step-added"===a.type||"suggestion-decision"===a.type)&&await new Promise(a=>window.setTimeout(a,140))},a.signal),e={flow:d.flow,flows:d.flows,rootFlowId:d.rootFlowId,errorCount:d.validation.errorCount,warningCount:d.validation.warningCount,attempts:d.attempts,installedServers:d.installedServers};ex.info("Draft flow generated",{flowId:e.rootFlowId,flowCount:e.flows.length,attempts:e.attempts,errors:e.errorCount,warnings:e.warningCount,installedServers:e.installedServers.length}),E(e),C([...c,ey("assistant",eA(e,!1,h,l))]);return}let a=D.flows.filter(a=>a.id!==D.rootFlowId),d=await P.g.improveFlow(D.flow,b,w,{allowInstall:G,relatedFlows:a});if(!d.success)return void U(d.error);let e={flow:d.flow,flows:d.flows.map(a=>a.flow),rootFlowId:d.rootFlowId,errorCount:d.validation.errorCount,warningCount:d.validation.warningCount,attempts:D.attempts+d.attempts,installedServers:[...D.installedServers,...d.installedServers]};ex.info("Draft flow improved",{flowId:e.rootFlowId,flowCount:e.flows.length,attempts:e.attempts,errors:e.errorCount,warnings:e.warningCount,installedServers:e.installedServers.length}),E(e),C([...c,ey("assistant",eA(e,!0,h,l))])}catch(a){a?.name==="AbortError"?U(h("flows.generator.cancelled")):U(a instanceof Error?a.message:String(a))}finally{X.current=null,N(!1)}},[G,D,o,M,J,w,Z,h,l,B]),_=(0,e.useCallback)(()=>{D&&c(D)},[D,c]),aa=(0,e.useCallback)(async()=>{if(!M&&!Q){S(!0),U(null);try{await eh.O.restoreFlowGenerator(),A(null),C([]),E(null),W({type:"reset"})}catch(a){U(a instanceof Error?a.message:String(a))}finally{S(!1)}}},[Q,M]),ab=(0,e.useCallback)(()=>{M||Q||(A(null),C([]),E(null),I(!1),L(8),W({type:"reset"}),U(null),b())},[Q,M,b]),ac=(0,e.useCallback)(()=>{X.current?.abort()},[]);return(0,d.jsxs)(q.A,{open:a,onClose:ab,maxWidth:!o&&V.started?"xl":"md",fullWidth:!0,slotProps:{paper:{sx:{overflow:"hidden",transition:"max-width 240ms ease, width 240ms ease"}}},children:[(0,d.jsxs)(r.A,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(z,{color:"primary"}),(0,d.jsxs)(i.default,{sx:{flex:1},children:[h("flows.generator.title"),o&&(0,d.jsx)(F.A,{label:h("flows.generator.experimentalChip"),size:"small",color:"warning",variant:"outlined",sx:{ml:1}}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:o?h("flows.generator.experimentalDescription"):h("flows.generator.description")})]}),o&&(0,d.jsx)(n.A,{title:h("flows.generator.restore"),children:(0,d.jsx)("span",{children:(0,d.jsx)(m.A,{"aria-label":h("flows.generator.restore"),onClick:()=>{aa()},disabled:M||Q,children:(0,d.jsx)(b7.A,{})})})}),(0,d.jsxs)(i.default,{display:"flex",alignItems:"center",gap:.5,flexShrink:0,children:[(0,d.jsx)(bO.A,{}),(0,d.jsx)(bP.A,{variant:"icon"})]})]}),(0,d.jsxs)(s.A,{dividers:!0,sx:{p:0,overflowX:"hidden"},children:[(0,d.jsxs)(i.default,{sx:{p:2,borderBottom:1,borderColor:"divider"},children:[T&&(0,d.jsx)(p.A,{severity:"error",sx:{mb:1.5},onClose:()=>U(null),children:T}),o&&(0,d.jsx)(p.A,{severity:"warning",sx:{mb:1.5},children:h("flows.generator.experimentalWarning")}),(0,d.jsxs)(i.default,{component:"details",sx:{mt:T||o?1.5:0,border:1,borderColor:"divider",borderRadius:2.5,"&[open]":{p:1.5},"&[open] > summary":{mb:1.5}},children:[(0,d.jsx)(i.default,{component:"summary",sx:{px:1.5,py:1.1,cursor:"pointer",color:"text.secondary",fontSize:"0.86rem",fontWeight:700},children:h("flows.generator.advanced")}),(0,d.jsxs)(bB.A,{size:"small",fullWidth:!0,disabled:M||o&&!!y,children:[(0,d.jsx)(bC.A,{id:"flow-generator-model-label",children:h("flows.generator.model")}),(0,d.jsx)(bD.A,{labelId:"flow-generator-model-label",label:h("flows.generator.model"),value:w,onChange:a=>x(a.target.value),children:t.map(a=>(0,d.jsx)(K.A,{value:a.id,children:a.displayName?.trim()||a.name},a.id))})]}),(0,d.jsx)(H.A,{sx:{mt:1},control:(0,d.jsx)(bK.A,{checked:G,onChange:a=>I(a.target.checked),disabled:M||o&&!!y}),label:h("flows.generator.allowTools")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",display:"block",children:h("flows.generator.allowToolsHelp")}),!o&&(0,d.jsxs)(i.default,{sx:{mt:2,px:.5},children:[(0,d.jsxs)(bb.A,{direction:"row",justifyContent:"space-between",alignItems:"center",children:[(0,d.jsx)(j.A,{variant:"body2",fontWeight:750,children:h("flows.generator.maxDepth")}),(0,d.jsx)(F.A,{size:"small",color:"primary",variant:"outlined",label:h("flows.generator.levelCount",{count:J})})]}),(0,d.jsx)(ee.Ay,{"aria-label":h("flows.generator.maxDepth"),value:J,min:1,max:8,step:1,marks:!0,valueLabelDisplay:"auto",disabled:M,onChange:(a,b)=>L(Array.isArray(b)?b[0]:b),sx:{mt:.5}}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:h("flows.generator.maxDepthHelp")})]}),G&&(0,d.jsx)(p.A,{severity:"warning",sx:{mt:1},children:h("flows.generator.installWarning")})]})]}),!o&&V.started?(0,d.jsx)(ew,{state:V,working:M,onSelectAgent:a=>W({type:"focus",agentId:a})}):(0,d.jsx)(i.default,{sx:{minHeight:360,maxHeight:"55vh",overflowY:"auto",p:2},children:0===Y.length?(0,d.jsxs)(i.default,{sx:{py:8,textAlign:"center",color:"text.secondary"},children:[(0,d.jsx)(j.A,{variant:"h6",children:h("flows.generator.question")}),(0,d.jsx)(j.A,{variant:"body2",children:h("flows.generator.example")})]}):(0,d.jsx)(eg.Ay,{messages:Y,conversationId:"new-flow-generator",onToggleDisabled:()=>void 0,onSplitConversation:()=>void 0})}),D&&(0,d.jsx)(p.A,{severity:D.errorCount?"warning":"success",sx:{mx:2,mb:1},children:D.errorCount?l("flows.generator.draftAttention",D.errorCount):h("flows.generator.draftReady")}),(0,d.jsxs)(i.default,{sx:{p:1.5,borderTop:1,borderColor:"divider"},children:[(0,d.jsx)(ef.A,{onSendMessage:a=>{$(a)},disabled:M||!w,placeholder:h("flows.generator.placeholder")}),M&&(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:D?h("flows.generator.applying"):o?h("flows.generator.runningExperimental"):h("flows.generator.building")})]})]}),(0,d.jsxs)(v.A,{children:[M&&!o&&(0,d.jsx)(k.A,{color:"warning",onClick:ac,children:h("flows.generator.cancel")}),(0,d.jsx)(k.A,{onClick:ab,disabled:M||Q,children:h("flows.generator.close")}),(0,d.jsx)(k.A,{variant:"contained",onClick:_,disabled:!D||M,startIcon:(0,d.jsx)(z,{}),children:h("flows.generator.continue")})]})]})};var eC=c(24579);let eD=null;var eE=c(8897);(0,M.h)("frontend/hooks/useHistoryGuard");var eF=c(12853),eG=c(22730),eH=c(12558),eI=c(70364);let eJ=(0,w.A)((0,d.jsx)("path",{d:"M10 18h4v-2h-4zM3 6v2h18V6zm3 7h12v-2H6z"}),"FilterList"),eK=(0,w.A)((0,d.jsx)("path",{d:"M3 14h4v-4H3zm0 5h4v-4H3zM3 9h4V5H3zm5 5h13v-4H8zm0 5h13v-4H8zM8 5v4h13V5z"}),"ViewList"),eL=(0,w.A)((0,d.jsx)("path",{d:"M14.67 5v6.5H9.33V5zm1 6.5H21V5h-5.33zm-1 7.5v-6.5H9.33V19zm1-6.5V19H21v-6.5zm-7.34 0H3V19h5.33zm0-1V5H3v6.5z"}),"ViewModule");var eM=c(60685),eN=c(26433),eO=c(37198),eP=c(18169),eQ=c(53526),eR=c(66137),eS=c(58065);let eT=({open:a,flows:b,models:c,modelsLoading:g=!1,onClose:h,onApply:l})=>{let{t:m,tp:n,formatNumber:o}=(0,au.s9)(),[t,w]=(0,e.useState)({}),[x,y]=(0,e.useState)(!1),[z,A]=(0,e.useState)(null),B=(0,e.useMemo)(()=>(function(a,b){let c=new Map(b.map(a=>[a.id,a])),d=new Map;for(let b of a){let a=b.id??b.name??String(d.size);for(let c of b.nodes??[]){let b=c.data?.properties,e=b?.boundModel;if("string"!=typeof e||0===e.length)continue;let f=d.get(e)??{flowIds:new Set,nodeCount:0};f.flowIds.add(a),f.nodeCount+=1,f.cachedName||"string"!=typeof b?.modelName||(f.cachedName=b.modelName),d.set(e,f)}}return Array.from(d,([a,b])=>{let d=c.get(a);return{modelId:a,label:d?.displayName||d?.name||b.cachedName||a,flowCount:b.flowIds.size,nodeCount:b.nodeCount,missing:!d}}).sort((a,b)=>a.label.localeCompare(b.label))})(b,c),[b,c]),C=(0,e.useMemo)(()=>new Map(c.map(a=>[a.id,a])),[c]);(0,e.useEffect)(()=>{a&&(w({}),y(!1),A(null))},[a]);let D=(0,e.useMemo)(()=>{let a={};for(let[b,c]of Object.entries(t)){if(!c||c===b)continue;let d=C.get(c);d&&(a[b]={id:d.id,name:d.name})}return a},[C,t]),E=Object.keys(D).length,H=async()=>{if(0!==E){y(!0),A(null);try{let a=await l(D);if(0===a.updatedFlowCount&&a.failedFlowCount>0)return void A(m("flows.quickModels.applyFailed"));h()}catch(a){A(a instanceof Error?a.message:m("flows.quickModels.applyFailed"))}finally{y(!1)}}};return(0,d.jsxs)(q.A,{open:a,onClose:x?void 0:h,fullWidth:!0,maxWidth:"md",children:[(0,d.jsx)(r.A,{children:m("flows.quickModels.title")}),(0,d.jsxs)(s.A,{dividers:!0,children:[(0,d.jsx)(j.A,{color:"text.secondary",sx:{mb:2},children:m("flows.quickModels.description",{count:o(b.length)})}),z&&(0,d.jsx)(p.A,{severity:"error",sx:{mb:2},children:z}),g?(0,d.jsxs)(bb.A,{alignItems:"center",spacing:1.5,sx:{py:6},children:[(0,d.jsx)(G.default,{size:28}),(0,d.jsx)(j.A,{color:"text.secondary",children:m("flows.quickModels.loading")})]}):0===c.length?(0,d.jsx)(p.A,{severity:"warning",children:m("flows.quickModels.noModels")}):0===B.length?(0,d.jsx)(p.A,{severity:"info",children:m("flows.quickModels.noBindings")}):(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,d.jsx)(j.A,{variant:"overline",color:"text.secondary",fontWeight:700,sx:{flex:1},children:m("flows.quickModels.currentModels")}),(0,d.jsx)(j.A,{variant:"overline",color:"text.secondary",fontWeight:700,sx:{flex:1},children:m("flows.quickModels.replacements")})]}),B.map((a,b)=>(0,d.jsxs)(f().Fragment,{children:[b>0&&(0,d.jsx)(L.A,{}),(0,d.jsxs)(i.default,{sx:{display:"grid",gridTemplateColumns:{xs:"minmax(0, 1fr)",sm:"minmax(0, 1fr) 44px minmax(0, 1fr)"},gap:1.5,alignItems:"center"},children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1.25,alignItems:"center",sx:{minWidth:0},children:[(0,d.jsx)(i.default,{sx:{width:40,height:40,borderRadius:2,display:"grid",placeItems:"center",bgcolor:"action.hover",color:a.missing?"warning.main":"primary.main",flex:"0 0 auto"},children:(0,d.jsx)(eS.A,{})}),(0,d.jsxs)(i.default,{sx:{minWidth:0},children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:.75,alignItems:"center",children:[(0,d.jsx)(j.A,{fontWeight:700,noWrap:!0,children:a.label}),a.missing&&(0,d.jsx)(F.A,{size:"small",color:"warning",label:m("flows.quickModels.missing")})]}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:m("flows.quickModels.usage",{steps:n("flows.quickModels.stepCount",a.nodeCount),agents:n("flows.quickModels.agentCount",a.flowCount)})})]})]}),(0,d.jsx)(eR.A,{color:"action",sx:{justifySelf:"center",transform:{xs:"rotate(90deg)",sm:"none"}}}),(0,d.jsxs)(u.A,{select:!0,fullWidth:!0,size:"small",label:m("flows.quickModels.chooseReplacement"),value:t[a.modelId]??"",onChange:b=>{let c=b.target.value;w(b=>({...b,[a.modelId]:c}))},children:[(0,d.jsx)(K.A,{value:"",children:(0,d.jsx)("em",{children:m("flows.quickModels.leaveUnchanged")})}),c.filter(b=>b.id!==a.modelId).map(a=>(0,d.jsx)(K.A,{value:a.id,children:a.displayName||a.name},a.id))]})]})]},a.modelId)),(0,d.jsx)(p.A,{severity:E>0?"info":"warning",children:E>0?n("flows.quickModels.ready",E):m("flows.quickModels.chooseAtLeastOne")})]})]}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:h,disabled:x,children:m("common.cancel")}),(0,d.jsx)(k.A,{variant:"contained",onClick:()=>void H(),disabled:x||g||0===E,startIcon:x?(0,d.jsx)(G.default,{size:16,color:"inherit"}):(0,d.jsx)(eS.A,{}),children:x?m("flows.quickModels.applying"):m("flows.quickModels.apply")})]})]})};var eU=c(39066),eV=c(80128),eW=c(57606),eX=c(61407),eY=c(72581),eZ=c(1395),e$=c(30211);let e_=(0,M.h)("components/Flow/FlowDashboard/FlowDashboard");function e0(a,b){return a+Math.round(255*b).toString(16).padStart(2,"0")}let e1=({flows:a,selectedFlow:b,onSelectFlow:c,onDeleteFlow:f,onCopyFlow:g,onEditFlow:l,onOpenInChat:n,onCreateFlow:o,onSetFolder:p,onToggleFavorite:q,onReplaceModels:r,isLoading:s=!1})=>{let{t,tp:v,formatNumber:w}=(0,au.s9)(),[x,z]=(0,e.useState)(""),A=(0,eX.j)(),[B,C]=(0,dW.Io)("flujo-ui:flows:sort","name-asc"),[F,G]=(0,dW.Io)("flujo-ui:flows:view","grid"),[H,I]=(0,e.useState)(null),[M,N]=(0,dW.Io)("flujo-ui:flows:group",eV.FM),[O,P]=(0,e.useState)(null),[Q,R]=(0,e.useState)(!1),[S,T]=(0,e.useState)(new Set),[U,V]=(0,e.useState)(!1),[W,X]=(0,dW.Io)("flujo-ui:flows:collapsed",[]),Y=(0,e.useMemo)(()=>new Set(W),[W]),[Z,$]=(0,e.useState)({}),[_,aa]=(0,e.useState)(!0);(0,e.useEffect)(()=>{let a=!1;return(async()=>{let b={};try{let a=await fetch("/api/model");if(a.ok){let c=await a.json();Array.isArray(c)&&(b.models=c)}}catch(a){e_.warn("Could not load models for flow badges",a)}try{let a=await fetch("/api/mcp/servers");if(a.ok){let c=await a.json();Array.isArray(c)&&(b.servers=c.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})))}}catch(a){e_.warn("Could not load servers for flow badges",a)}a||($(b),aa(!1))})(),()=>{a=!0}},[]),(0,e.useEffect)(()=>{let b=new Set(a.map(a=>a.id));T(a=>{let c=new Set(Array.from(a).filter(a=>b.has(a)));return c.size===a.size?a:c})},[a]);let ab=(0,e.useMemo)(()=>{let b={};for(let c of a)try{b[c.id]=a7(c,Z)}catch(a){e_.warn("Failed to validate flow for badge",{flowId:c.id,error:a})}return b},[a,Z]),ac=(0,h.A)(),ad=(0,E.A)(ac.breakpoints.down("sm")),ae=(0,E.A)(ac.breakpoints.down("md")),af=()=>{I(null)},ag=a=>{C(a),af()},ah=a=>{N(a),P(null)},aj=a=>{T(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},ak=(0,e.useMemo)(()=>{e_.debug("Filtering and sorting flows",{searchTerm:x,sortOption:B});let b=a;if(""!==x.trim()){let c=x.toLowerCase();b=a.filter(a=>a.name.toLowerCase().includes(c))}return(0,eW.NP)(b,B)},[a,x,B]),{ref:al,clusterProps:am}=(0,eZ.QY)("flujo-ui:scroll:flows",{deps:[s,ak.length],groupsEnabled:"none"!==M}),an=(0,e.useMemo)(()=>(0,eV.yF)(a,a=>a.folder),[a]),ao=(0,e.useMemo)(()=>"folder"===M?(0,eV.Je)(ak,a=>a.folder,t("flows.group.ungrouped")):"sort"===M?(0,eV.Az)(ak,a=>{let b=(0,eW.ts)(a,B),c={"recency:unknown":t("flows.group.noDate"),"recency:today":t("flows.group.today"),"recency:week":t("flows.group.week"),"recency:month":t("flows.group.month"),"recency:older":t("flows.group.older"),"nodes:0":t("flows.group.nodes0"),"nodes:1-2":t("flows.group.nodes12"),"nodes:3-5":t("flows.group.nodes35"),"nodes:6-10":t("flows.group.nodes610"),"nodes:11+":t("flows.group.nodes11"),all:t("flows.group.all")};return{...b,label:c[b.key]??b.label}}):[],[M,ak,B,t]),ap="name-asc"===B?t("flows.sort.nameAsc"):"name-desc"===B?t("flows.sort.nameDesc"):"newest"===B?t("flows.sort.newest"):"oldest"===B?t("flows.sort.oldest"):"most-nodes"===B?t("flows.sort.mostSteps"):t("flows.sort.fewestSteps"),aq=a=>(0,d.jsx)(eH.Ay,{container:!0,spacing:2.5,children:a.map(a=>(0,d.jsx)(eH.Ay,{item:!0,xs:12,sm:"compact"===F?12:6,md:"compact"===F?12:3==("compact"===F||ad?1:ae?2:3)?4:6,children:(0,d.jsx)(bx.A,{flow:a,selected:Q?S.has(a.id):b===a.id,onSelect:Q?aj:c,onDelete:f,onCopy:g,onEdit:l,onOpenInChat:n,onSetFolder:p,onToggleFavorite:q,folders:an,validation:ab[a.id],selectionMode:Q})},a.id))});return(0,d.jsxs)(i.default,{sx:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,d.jsx)(D.A,{elevation:1,sx:{mb:2,p:1},children:(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:1,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,d.jsx)(u.A,{placeholder:t("flows.dashboard.search"),variant:"outlined",size:"small",fullWidth:!0,value:x,onChange:a=>{z(a.target.value)},inputRef:A,InputProps:{startAdornment:(0,d.jsx)(ai.A,{position:"start",children:(0,d.jsx)(b8.A,{fontSize:"small"})})},sx:{maxWidth:{sm:300}}}),(0,d.jsxs)(i.default,{sx:{display:"flex",gap:1,alignItems:"center",flexWrap:"wrap"},children:[r&&(Q?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.A,{size:"small",onClick:()=>T(new Set(ak.map(a=>a.id))),children:t("flows.quickModels.selectVisible")}),(0,d.jsx)(k.A,{size:"small",onClick:()=>T(new Set),disabled:0===S.size,children:t("flows.quickModels.clear")}),(0,d.jsx)(k.A,{size:"small",variant:"contained",startIcon:(0,d.jsx)(bp,{}),disabled:0===S.size,onClick:()=>V(!0),children:t("flows.quickModels.changeSelected",{count:w(S.size)})}),(0,d.jsx)(m.A,{size:"small","aria-label":t("flows.quickModels.cancelSelection"),onClick:()=>{R(!1),T(new Set),V(!1)},children:(0,d.jsx)(be.A,{fontSize:"small"})})]}):(0,d.jsx)(k.A,{size:"small",variant:"outlined",startIcon:(0,d.jsx)(bp,{}),disabled:0===a.length||s,onClick:()=>R(!0),children:t("flows.quickModels.start")})),(0,d.jsxs)(i.default,{sx:{display:"flex",backgroundColor:ac.palette.background.default,borderRadius:1,border:`1px solid ${ac.palette.divider}`,overflow:"hidden"},children:[(0,d.jsx)(m.A,{"aria-label":t("flows.dashboard.cards"),size:"small",onClick:()=>G("grid"),color:"grid"===F?"primary":"default",sx:{borderRadius:0,backgroundColor:"grid"===F?e0(ac.palette.primary.main,.1):"transparent"},children:(0,d.jsx)(eL,{fontSize:"small"})}),(0,d.jsx)(m.A,{"aria-label":t("flows.dashboard.compact"),size:"small",onClick:()=>G("compact"),color:"compact"===F?"primary":"default",sx:{borderRadius:0,backgroundColor:"compact"===F?e0(ac.palette.primary.main,.1):"transparent"},children:(0,d.jsx)(eK,{fontSize:"small"})})]}),(0,d.jsx)(m.A,{size:"small",onClick:a=>P(a.currentTarget),color:"none"!==M?"primary":"default",sx:{border:`1px solid ${ac.palette.divider}`,backgroundColor:ac.palette.background.default},title:t("flows.dashboard.groupCards"),"aria-label":t("flows.dashboard.groupAgents"),children:(0,d.jsx)(eO.A,{fontSize:"small"})}),(0,d.jsx)(m.A,{"aria-label":t("flows.dashboard.sortAgents"),size:"small",onClick:a=>{I(a.currentTarget)},sx:{border:`1px solid ${ac.palette.divider}`,backgroundColor:ac.palette.background.default},children:(0,d.jsx)(eI.A,{fontSize:"small"})})]})]})}),(0,d.jsxs)(i.default,{sx:{display:"flex",justifyContent:"space-between",mb:2,px:1},children:[(0,d.jsxs)(j.A,{variant:"body2",color:"textSecondary",children:[v("flows.dashboard.count",a.length,{shown:w(ak.length),total:w(a.length)}),x&&t("flows.dashboard.matching",{search:x})]}),(0,d.jsx)(j.A,{variant:"body2",color:"textSecondary",children:t("flows.dashboard.showing",{sort:ap})})]}),(0,d.jsx)(i.default,{ref:al,sx:{flex:1,overflow:"auto",px:1,pb:2},children:s?(0,d.jsx)(eH.Ay,{container:!0,spacing:2.5,children:Array(6).fill(0).map((a,b)=>(0,d.jsx)(eH.Ay,{item:!0,xs:12,sm:"compact"===F?12:6,md:"compact"===F?12:4,children:(0,d.jsx)(bx.o,{})},`skeleton-${b}`))}):ak.length>0?"none"===M?aq(ak):ao.map(a=>(0,d.jsx)(eU.A,{groupKey:a.key,label:a.label,count:a.items.length,expanded:!Y.has(a.key),onToggle:()=>{var b;return b=a.key,void X(a=>a.includes(b)?a.filter(a=>a!==b):[...a,b])},showFolderIcon:"folder"===M,children:aq(a.items)},a.key)):(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",p:4,backgroundColor:ac.palette.background.paper,borderRadius:1,border:`1px dashed ${ac.palette.divider}`,height:"100%",minHeight:200},children:[(0,d.jsx)(j.A,{variant:"h6",gutterBottom:!0,color:"textSecondary",children:x?t("flows.dashboard.noMatches"):t("flows.dashboard.empty")}),x?(0,d.jsxs)(j.A,{variant:"body2",color:"textSecondary",align:"center",children:[t("flows.dashboard.noMatchHelp"),(0,d.jsx)(i.default,{component:"span",display:"block",mt:1,children:(0,d.jsx)(e$.A,{message:"flows.dashboard.trySearch",values:{clearAction:(0,d.jsx)(k.A,{size:"small",onClick:()=>z(""),children:t("flows.dashboard.clearSearch")})}})})]}):(0,d.jsxs)(j.A,{variant:"body2",color:"textSecondary",align:"center",children:[t("flows.dashboard.emptyHelp"),o&&(0,d.jsx)(i.default,{component:"span",display:"block",mt:2,children:(0,d.jsx)(k.A,{variant:"contained",color:"primary",startIcon:(0,d.jsx)(y.A,{}),onClick:o,children:t("flows.dashboard.createFirst")})})]})]})}),(0,d.jsxs)(J.A,{anchorEl:O,open:!!O,onClose:()=>P(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,d.jsxs)(K.A,{selected:"none"===M,onClick:()=>ah("none"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eP.A,{fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:t("flows.group.none")})]}),(0,d.jsxs)(K.A,{selected:"folder"===M,onClick:()=>ah("folder"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eQ.A,{fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:t("flows.group.folder")})]}),(0,d.jsxs)(K.A,{selected:"sort"===M,onClick:()=>ah("sort"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eO.A,{fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:t("flows.group.sort")})]})]}),(0,d.jsxs)(J.A,{anchorEl:H,open:!!H,onClose:af,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,d.jsxs)(K.A,{onClick:()=>ag("name-asc"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eM.A,{fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:t("flows.sort.nameAsc")})]}),(0,d.jsxs)(K.A,{onClick:()=>ag("name-desc"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eM.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})}),(0,d.jsx)(aH.A,{primary:t("flows.sort.nameDesc")})]}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(K.A,{onClick:()=>ag("newest"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eN.A,{fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:t("flows.sort.newest")})]}),(0,d.jsxs)(K.A,{onClick:()=>ag("oldest"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eN.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})}),(0,d.jsx)(aH.A,{primary:t("flows.sort.oldest")})]}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(K.A,{onClick:()=>ag("most-nodes"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eJ,{fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:t("flows.sort.mostSteps")})]}),(0,d.jsxs)(K.A,{onClick:()=>ag("least-nodes"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eJ,{fontSize:"small",sx:{transform:"scaleY(-1)"}})}),(0,d.jsx)(aH.A,{primary:t("flows.sort.fewestSteps")})]})]}),(0,d.jsx)(eY.A,{...am}),r&&(0,d.jsx)(eT,{open:U,flows:a.filter(a=>S.has(a.id)),models:Z.models??[],modelsLoading:_,onClose:()=>V(!1),onApply:async a=>{let b=await r(Array.from(S),a);return(b.updatedFlowCount>0||0===b.failedFlowCount)&&(R(!1),T(new Set)),b}})]})},e2=(0,M.h)("app/flows/page"),e3=()=>{e2.debug("Rendering FlowsPage"),(0,h.A)();let a=(0,g.useRouter)(),b=(0,g.useSearchParams)(),{t:c,tp:f,formatList:w}=(0,au.s9)(),[C,D]=(0,e.useState)([]),[E,F]=(0,e.useState)(null),[G,H]=(0,e.useState)(!0),I="edit"===b.get("mode")&&!!E,J=(0,e.useRef)(!1),K=(0,e.useRef)(null),L=(0,e.useCallback)(b=>{e2.debug("Entering flow editor",{flowId:b}),F(b),J.current=!0,a.push((0,eF.F)({kind:"flow-editor",id:b}))},[a]),[M,N]=(0,e.useState)(null),[Q,R]=(0,e.useState)([]),[S,T]=(0,e.useState)(),[U,V]=(0,e.useState)(!1),W=(0,e.useRef)(!1),X=E?C.find(a=>a.id===E)??(M?.id===E?M:null):null;(0,d3.qz)({scopeId:X?`flow:${X.id}`:"flows:dashboard",pageType:X?"flow":"flows",route:"/flows",title:X?.name??c("flows.page.title"),identifiers:{flowId:X?.id??null},data:X?{flow:X}:{flows:C},capabilities:{notes:X?["The nested Flow Builder adapter replaces this saved snapshot with live unsaved state while the editor is mounted."]:["The dashboard context contains every flow currently shown on screen."]}});let[Y,Z]=(0,e.useState)(!1),[$,_]=(0,e.useState)(null),[aa,ab]=(0,e.useState)(""),[ac,ad]=(0,e.useState)(null),[ae,af]=(0,e.useState)({open:!1,message:"",severity:"info"});(0,e.useEffect)(()=>{e2.info("Loading flows"),(async()=>{H(!0);try{let b=await P.g.loadFlows();e2.debug("Flows loaded successfully",{count:b.length}),D(b),E&&(b.some(a=>a.id===E)||M?.id===E||(e2.warn("Previously selected flow no longer exists",{flowId:E}),F(null),a.replace("/flows"),ak(c("flows.page.previousMissing"),"warning")))}catch(a){e2.error("Error loading flows",a),ak(c("flows.page.loadFailed"),"error")}finally{H(!1)}})()},[E,M,c]);let ag=(0,e.useCallback)(a=>{e2.debug("Flow selected",{flowId:a}),T(void 0),L(a)},[L]),ah=(0,e.useCallback)(b=>{e2.debug("Opening flow in chat",{flowId:b}),a.push(`/chat?flow=${encodeURIComponent(b)}`)},[a]),ai=(0,e.useCallback)(()=>{E&&a.push(`/chat?flow=${encodeURIComponent(E)}`)},[E,a]);(0,eE.R)({param:"flow",ready:!G,exists:a=>C.some(b=>b.id===a),onResolve:ag}),(0,e.useEffect)(()=>{if(!(I&&E))return;let a=a=>{K.current?K.current.requestNavigation(a):a()};return eD=a,()=>{eD===a&&(eD=null)}},[I,E]);let aj=function({active:a,currentUrl:b}){(0,g.useRouter)();let c=(0,e.useRef)(!1);return{suppressNext:(0,e.useCallback)(()=>{c.current=!0},[])}}({active:I&&!!E,currentUrl:E?(0,eF.F)({kind:"flow-editor",id:E}):"/flows"}),ak=(0,e.useCallback)((a,b="info")=>{e2.debug("Showing snackbar",{message:a,severity:b}),af({open:!0,message:a,severity:b})},[]),al=(0,e.useCallback)(()=>{e2.debug("Returning to dashboard");let b=()=>{if(T(void 0),M&&M.id===E){let a=Q.length>0;N(null),R([]),F(null),ak(a?c("flows.page.draftBundleDiscarded"):c("flows.page.draftDiscarded"),"info")}aj.suppressNext(),J.current?(J.current=!1,a.back()):a.replace("/flows")};K.current?K.current.requestNavigation(b):b()},[M,Q,E,ak,c,aj,a]),am=(0,e.useCallback)(()=>{af(a=>({...a,open:!1}))},[]);(0,e.useEffect)(()=>{if(!ae.open||"error"===ae.severity)return;let a=setTimeout(()=>{af(a=>({...a,open:!1}))},6e3);return()=>clearTimeout(a)},[ae.open,ae.message,ae.severity]);let an=(0,e.useCallback)(a=>(e2.debug("Validating flow name",{name:a}),a.trim())?/^[\p{L}\p{N}_ -]+$/u.test(a.trim())?C.some(b=>b.name.trim().toLowerCase()===a.trim().toLowerCase())?(e2.debug("Flow name validation failed: duplicate name"),c("flows.page.nameDuplicate")):(e2.debug("Flow name validation passed"),null):(e2.debug("Flow name validation failed: invalid characters"),c("flows.page.nameCharacters")):(e2.debug("Flow name validation failed: empty name"),c("flows.page.nameEmpty")),[C,c]),ao=async a=>{e2.info("Saving flow",{flowId:a.id,flowName:a.name});try{if(M?.id===a.id&&Q.length>0){for(let a of(e2.info("Persisting generated subflow descendants before the root",{count:Q.length}),Q)){let b=C.some(b=>b.id===a.id)?await P.g.updateFlow(a):await P.g.addFlow(a);if(!b.success)return e2.error("Failed to save a generated subflow",{error:b.error,childId:a.id}),ak(b.error||c("flows.page.saveSubflowFailed"),"error"),!1}D(a=>{let b=new Set(a.map(a=>a.id)),c=Q.filter(a=>!b.has(a.id));return c.length?[...a,...c]:a}),R([])}let b=C.some(b=>b.id===a.id)?await P.g.updateFlow(a):await P.g.addFlow(a);if(!b.success)return e2.error("Failed to save flow",{error:b.error}),ak(b.error||c("flows.page.saveFailed"),"error"),!1;return e2.debug("Flow saved successfully"),D(b=>{let c=b.findIndex(b=>b.id===a.id);if(!(c>=0))return e2.debug("Adding new flow to state"),[...b,a];{e2.debug("Updating existing flow in state");let d=[...b];return d[c]=a,d}}),M?.id===a.id&&N(null),F(a.id),ak(c("flows.page.saved"),"success"),!0}catch(a){return e2.error("Error saving flow",a),ak(c("flows.page.saveFailed"),"error"),!1}},ap=(0,e.useCallback)((a,b)=>{D(c=>[...c.filter(c=>c.id!==a.id&&c.id!==b.id),a,b]),F(a.id),ak(c("flows.page.subflowCreated",{name:b.name}),"success")},[ak,c]),aq=async b=>{e2.info("Deleting flow",{flowId:b});try{await P.g.deleteFlow(b),e2.debug("Flow deleted successfully"),D(a=>a.filter(a=>a.id!==b)),E===b&&(e2.debug("Clearing selected flow as it was deleted"),F(null),a.replace("/flows")),ak(c("flows.page.deleted"),"success")}catch(a){e2.error("Error deleting flow",a),ak(c("flows.page.deleteFailed"),"error")}},ar=(0,e.useCallback)(async(a,b)=>{e2.info("Setting flow folder",{flowId:a,folder:b});let d=C.find(b=>b.id===a);if(!d)return void e2.warn("Flow to move not found",{flowId:a});let e={...d,folder:b&&b.trim()?b.trim():void 0};try{let b=await P.g.updateFlow(e);if(!b.success)return void ak(b.error||c("flows.page.moveFailed"),"error");D(b=>b.map(b=>b.id===a?e:b)),ak(e.folder?c("flows.page.moved",{folder:e.folder}):c("flows.page.removedFolder"),"success")}catch(a){e2.error("Error setting flow folder",a),ak(c("flows.page.moveFailed"),"error")}},[C,ak,c]),as=(0,e.useCallback)(async a=>{e2.info("Toggling flow favorite",{flowId:a});let b=C.find(b=>b.id===a);if(!b)return void e2.warn("Flow to favorite not found",{flowId:a});let d=!b.favorite,e={...b,favorite:d||void 0};try{let b=await P.g.updateFlow(e);if(!b.success)return void ak(b.error||c("flows.page.favoriteFailed"),"error");D(b=>b.map(b=>b.id===a?e:b)),ak(d?c("flows.page.favoriteAdded"):c("flows.page.favoriteRemoved"),"success")}catch(a){e2.error("Error toggling flow favorite",a),ak(c("flows.page.favoriteFailed"),"error")}},[C,ak,c]),at=(0,e.useCallback)(async(a,b)=>{let d=new Set(a),e=C.filter(a=>d.has(a.id)).map(a=>{let c,d;return c=0,d=(a.nodes??[]).map(a=>{let d=a.data?.properties,e=d?.boundModel;if("string"!=typeof e)return a;let f=b[e];return f&&(f.id!==e||d?.modelName!==f.name)?(c+=1,{...a,data:{...a.data,properties:{...d,boundModel:f.id,modelName:f.name}}}):a}),0===c?{flow:a,replacedNodeCount:c}:{flow:{...a,nodes:d},replacedNodeCount:c}}).filter(a=>a.replacedNodeCount>0);if(0===e.length)return{updatedFlowCount:0,replacedNodeCount:0,failedFlowCount:0};let g=await Promise.all(e.map(async a=>({update:a,result:await P.g.updateFlow(a.flow)}))),h=g.filter(({result:a})=>a.success),i=g.filter(({result:a})=>!a.success),j=new Map(h.map(({update:a})=>[a.flow.id,a.flow])),k=h.reduce((a,{update:b})=>a+b.replacedNodeCount,0);return j.size>0&&D(a=>a.map(a=>j.get(a.id)??a)),0===i.length?ak(c("flows.page.modelsChanged",{agents:f("flows.quickModels.agentCount",h.length),steps:f("flows.quickModels.stepCount",k)}),"success"):h.length>0?ak(c("flows.page.modelsChangedPartial",{updated:f("flows.quickModels.agentCount",h.length),failed:f("flows.quickModels.agentCount",i.length)}),"warning"):ak(c("flows.page.modelsChangeFailed"),"error"),{updatedFlowCount:h.length,replacedNodeCount:k,failedFlowCount:i.length}},[C,ak,c,f]),av=a=>{e2.info("Copying flow",{flowId:a});let b=C.find(b=>b.id===a);b?(e2.debug("Found flow to copy",{flowName:b.name}),_(b),ab(c("flows.page.copyName",{name:b.name})),Z(!0)):(e2.warn("Flow to copy not found",{flowId:a}),ak(c("flows.page.notFound"),"error"))},aw=()=>{e2.debug("Closing copy flow dialog"),Z(!1),_(null),ab(""),ad(null)},ax=async()=>{if(e2.info("Confirming flow copy"),!$){e2.warn("No flow to copy"),ak(c("flows.page.noCopySelection"),"error");return}let a=an(aa);if(a){e2.debug("Flow name validation failed",{error:a}),ad(a);return}let b=(0,O.A)();e2.debug("Creating new flow from copy",{newId:b,newName:aa});let d={id:b,name:aa,description:$.description,nodes:$.nodes,edges:$.edges,folder:$.folder,favorite:$.favorite};await ao(d)&&(aw(),e2.debug("Selecting newly copied flow"),T(void 0),L(d.id),ak(c("flows.page.copyCreated",{name:aa}),"success"))},ay=(0,e.useCallback)(a=>{e2.info("Opening generated draft flow",{flowId:a.flow.id,attempts:a.attempts,errors:a.errorCount,warnings:a.warningCount}),V(!1);let b=(a.flows??[]).filter(b=>b.id!==a.rootFlowId);N(a.flow),R(b),T("guided"),L(a.flow.id);let d=a.installedServers?.filter(a=>!a.alreadyExisted)??[],e=d.length>0?c("flows.page.connectedServers",{servers:w(d.map(a=>a.name))}):"",g=[b.length>0?f("flows.page.helper",b.length):"",e].filter(Boolean).join(" ");a.errorCount>0?ak(`${f("flows.page.draftAttention",a.errorCount)}${g?` ${g}`:""}`,"warning"):a.warningCount>0?ak(`${c("flows.page.draftSuggestions")}${g?` ${g}`:""}`,"info"):ak(`${c("flows.page.draftReady")}${g?` ${g}`:""}`,"success")},[ak,c,f,w,L]),az=(0,e.useCallback)((a="guided")=>{e2.info("Creating new flow");let b=c("flows.page.untitled"),d=b,e=2;for(;C.some(a=>a.name===d);)d=`${b} ${e}`,e++;let f=P.g.createNewFlow(d);(0,dW.WL)("flujo-ui:flow-builder:mode",a),T(a),N(f),R([]),L(f.id),ak("advanced"===a?c("flows.page.newExpert"):c("flows.page.newGuided"),"info")},[C,ak,c,L]);return(0,e.useEffect)(()=>{if(!W.current&&!G){if("assistant"!==new URLSearchParams(window.location.search).get("create")){W.current=!0;return}W.current=!0,az("guided")}},[az,G]),(0,d.jsxs)(i.default,{sx:{height:{xs:"auto",md:"calc(100dvh - var(--app-bar-height))"},minHeight:"calc(100dvh - var(--app-bar-height))",display:"flex",flexDirection:"column",overflow:{xs:"visible",md:"hidden"}},children:[(0,d.jsx)(eC.default,{eyebrow:I?c("flows.page.eyebrowMine"):c("flows.page.eyebrowCreate"),icon:A.A,compact:I,title:I&&E?M?.id===E?c("flows.page.draftSuffix",{name:M.name}):C.find(a=>a.id===E)?.name||c("flows.page.agent"):c("flows.page.title"),description:I?c("flows.page.editDescription"):c("flows.page.description"),leading:I&&E?(0,d.jsx)(m.A,{color:"primary",onClick:al,"aria-label":c("flows.page.back"),sx:{border:1,borderColor:"divider"},children:(0,d.jsx)(x,{})}):void 0,actions:I?E&&M?.id!==E?(0,d.jsx)(eG.A,{target:{kind:"flow-editor",id:E}}):void 0:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.A,{title:c("flows.page.aiHelp"),describeChild:!0,children:(0,d.jsx)(k.A,{variant:"contained",color:"primary",startIcon:(0,d.jsx)(z,{}),onClick:()=>V(!0),"data-tour":"generate-flow",children:c("flows.page.createAi")})}),(0,d.jsx)(n.A,{title:c("flows.page.simpleHelp"),describeChild:!0,children:(0,d.jsx)(k.A,{variant:"outlined",color:"primary",startIcon:(0,d.jsx)(y.A,{}),onClick:()=>az("guided"),"data-tour":"new-flow",children:c("flows.page.startSimple")})}),(0,d.jsx)(n.A,{title:c("flows.page.expertHelp"),describeChild:!0,children:(0,d.jsx)(k.A,{variant:"outlined",color:"primary",startIcon:(0,d.jsx)(B.A,{}),onClick:()=>az("advanced"),"data-tour":"new-expert-flow",children:c("flows.page.startExpert")})})]})}),(0,d.jsx)(o.A,{in:ae.open,unmountOnExit:!0,children:(0,d.jsx)(p.A,{severity:ae.severity,onClose:am,sx:{borderRadius:0},children:ae.message})}),(0,d.jsx)(i.default,{sx:{flex:1,minHeight:0,overflow:{xs:"visible",md:"hidden"}},children:(()=>{if(I&&E){let a=C.find(a=>a.id===E)??(M?.id===E?M:void 0);return a?(0,d.jsx)(l.A,{in:!0,timeout:300,children:(0,d.jsx)(i.default,{sx:{height:{xs:"auto",md:"100%"}},children:(0,d.jsx)(ed,{ref:K,initialFlow:a,initialAuthoringMode:S,onSave:ao,onDelete:aq,onConversionCommitted:ap,allFlows:[...C.filter(a=>!Q.some(b=>b.id===a.id)),...Q],relatedDraftFlows:Q,onRelatedDraftFlowsChange:R,isDraft:M?.id===a.id,onTry:ai,onNavigateToFlow:ag},E)})}):(0,d.jsxs)(i.default,{sx:{p:4,textAlign:"center"},children:[(0,d.jsx)(j.A,{variant:"h6",color:"error",children:c("flows.page.notFound")}),(0,d.jsx)(k.A,{variant:"contained",onClick:al,sx:{mt:2},children:c("flows.page.back")})]})}return(0,d.jsx)(l.A,{in:!0,timeout:300,children:(0,d.jsx)(i.default,{sx:{height:{xs:"auto",md:"100%"}},children:(0,d.jsx)(e1,{flows:C,selectedFlow:E,onSelectFlow:ag,onDeleteFlow:aq,onCopyFlow:av,onCreateFlow:()=>az("guided"),onSetFolder:ar,onToggleFavorite:as,onReplaceModels:at,onOpenInChat:ah,isLoading:G})})})})()}),(0,d.jsxs)(q.A,{open:Y,onClose:aw,children:[(0,d.jsx)(r.A,{children:c("flows.page.copyTitle")}),(0,d.jsxs)(s.A,{children:[(0,d.jsx)(t.A,{children:c("flows.page.copyPrompt")}),(0,d.jsx)(u.A,{autoFocus:!0,margin:"dense",label:c("flows.page.nameLabel"),type:"text",fullWidth:!0,value:aa,onChange:a=>{let b=a.target.value;e2.debug("Flow name changed",{name:b}),ab(b),ad(an(b))},error:!!ac,helperText:ac})]}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:aw,children:c("common.cancel")}),(0,d.jsx)(k.A,{onClick:ax,variant:"contained",color:"primary",disabled:!!ac,children:c("flows.page.copyAction")})]})]}),(0,d.jsx)(eB,{open:U,onClose:()=>V(!1),onGenerated:ay})]})},e4=()=>(0,d.jsx)(e.Suspense,{fallback:null,children:(0,d.jsx)(e3,{})})},1708:a=>{"use strict";a.exports=require("node:process")},2642:(a,b,c)=>{"use strict";c.d(b,{g:()=>g});var d=c(74948);let e=(0,c(6680).h)("frontend/services/flow/index");class f{async loadFlows(){e.debug("loadFlows: Entering method");try{if(this.flowsCache)return e.debug("loadFlows: Using cached flows",{count:this.flowsCache.length}),this.flowsCache;let a=await fetch("/api/flow");if(!a.ok){let b=await a.json();throw Error(b.error||"Failed to load flows")}let b=await a.json();return e.debug("loadFlows: Loaded flows from API",{count:b.length}),this.flowsCache=b,b}catch(a){return e.warn("loadFlows: Failed to load flows:",a),[]}}async suggestToolsForStep(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"suggest-tools",...a})}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error||"Could not suggest connected tools.");return c}async generateNameForFlow(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"generate-name",...a})}),c=await b.json().catch(()=>null);if(!b.ok||"string"!=typeof c?.name)throw Error(c?.error||"Could not generate a workflow name.");return{name:c.name}}async applyToolsToStep(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"apply-tools",...a})}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error||"Could not connect the approved tools.");return c.flow}async suggestAgentsForStep(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"suggest-agents",...a})}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error||"Could not suggest connected agents.");return c}async applyAgentsToStep(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"apply-agents",...a})}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error||"Could not connect the approved agents.");return c.flow}async improvePromptForStep(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"improve-prompt",...a})}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error||"Could not improve this prompt.");return c}async checkPlausibility(a){let b=await fetch("/api/flow/assist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check-plausibility",...a})}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error||"Could not check flow plausibility.");return c}async getFlow(a){e.debug("getFlow: Entering method",{flowId:a});try{if(this.flowsCache){let b=this.flowsCache.find(b=>b.id===a);if(b)return e.debug("getFlow: Using cached flow",{flowId:a}),b}let b=await fetch(`/api/flow/${encodeURIComponent(a)}`);if(!b.ok){if(404===b.status)return e.debug(`getFlow: Flow ${a} not found`),null;let c=await b.json();throw Error(c.error||`Failed to get flow: ${a}`)}let c=await b.json();return e.debug("getFlow: Retrieved flow from API",{flowId:a}),c}catch(b){return e.warn(`getFlow: Failed to get flow ${a}:`,b),null}}async addFlow(a){e.debug("addFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch("/api/flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to add flow"}}let c=await b.json();return this.flowsCache&&this.flowsCache.push(c),e.debug("addFlow: Flow added successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("addFlow: Failed to add flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to add flow"}}}async generateFlow(a,b,c){e.debug("generateFlow: Entering method",{modelId:b,allowInstall:c?.allowInstall,allowSubflows:c?.allowSubflows,maxDepth:c?.maxDepth});try{let d=await fetch("/api/flow/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:a,modelId:b,allowInstall:c?.allowInstall===!0,allowSubflows:c?.allowSubflows!==!1,..."number"==typeof c?.maxDepth?{maxDepth:c.maxDepth}:{}})}),f=await d.json().catch(()=>null);if(!d.ok)return{success:!1,error:f?.error||"Failed to generate flow"};let g=Array.isArray(f.flows)&&f.flows.length>0?f.flows:[{flow:f.flow,validation:f.validation}];return e.debug("generateFlow: Draft generated",{flowId:f.flow?.id,flowCount:g.length,attempts:f.attempts,errorCount:f.validation?.errorCount,installedServers:f.installedServers?.length??0}),{success:!0,flow:f.flow,validation:f.validation,flows:g,rootFlowId:f.rootFlowId??f.flow?.id,attempts:f.attempts,installedServers:f.installedServers??[]}}catch(a){return e.warn("generateFlow: Failed to generate flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to generate flow"}}}async improveFlow(a,b,c,d){e.debug("improveFlow: Entering method",{flowId:a?.id,modelId:c,allowInstall:d?.allowInstall});try{let f=await fetch("/api/flow/improve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({flow:a,relatedFlows:d?.relatedFlows,description:b,modelId:c,allowInstall:d?.allowInstall===!0})}),g=await f.json().catch(()=>null);if(!f.ok)return{success:!1,error:g?.error||"Failed to improve flow"};return e.debug("improveFlow: Draft revised",{flowId:g.flow?.id,attempts:g.attempts,errorCount:g.validation?.errorCount,installedServers:g.installedServers?.length??0}),{success:!0,flow:g.flow,validation:g.validation,flows:Array.isArray(g.flows)&&g.flows.length>0?g.flows:[{flow:g.flow,validation:g.validation}],rootFlowId:g.rootFlowId??g.flow?.id,attempts:g.attempts,installedServers:g.installedServers??[]}}catch(a){return e.warn("improveFlow: Failed to improve flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to improve flow"}}}async convertProcessToSubflow(a,b,c,d){try{let e=await fetch(`/api/flow/${encodeURIComponent(a.id)}/convert-process-to-subflow`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({parentFlow:a,childFlow:b,processNodeId:c,expectedUpdatedAt:d})}),f=await e.json().catch(()=>null);if(!e.ok)return{success:!1,error:f?.error||"Failed to convert Process to Subflow."};let g=f.parentFlow,h=f.childFlow;if(this.flowsCache){let a=this.flowsCache.findIndex(a=>a.id===g.id);a>=0?this.flowsCache[a]=g:this.flowsCache.push(g),this.flowsCache.some(a=>a.id===h.id)||this.flowsCache.push(h)}return{success:!0,parentFlow:g,childFlow:h}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to convert Process to Subflow."}}}async updateFlow(a){e.debug("updateFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch(`/api/flow/${encodeURIComponent(a.id)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to update flow"}}let c=await b.json();if(this.flowsCache){let b=this.flowsCache.findIndex(b=>b.id===a.id);b>=0?this.flowsCache[b]=c:this.flowsCache.push(c)}return e.debug("updateFlow: Flow updated successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("updateFlow: Failed to update flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to update flow"}}}async deleteFlow(a){e.debug("deleteFlow: Entering method",{flowId:a});try{let b=await fetch(`/api/flow/${encodeURIComponent(a)}`,{method:"DELETE"});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to delete flow"}}return this.flowsCache&&(this.flowsCache=this.flowsCache.filter(b=>b.id!==a)),e.debug("deleteFlow: Flow deleted successfully",{flowId:a}),{success:!0}}catch(a){return e.warn("deleteFlow: Failed to delete flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to delete flow"}}}async listFlowVersions(a){e.debug("listFlowVersions: Entering method",{flowId:a});try{let b=await fetch(`/api/flow/${encodeURIComponent(a)}/versions`);if(!b.ok){let a=await b.json().catch(()=>null);throw Error(a?.error||"Failed to list flow versions")}let c=await b.json();return Array.isArray(c.versions)?c.versions:[]}catch(b){return e.warn(`listFlowVersions: Failed for flow ${a}:`,b),[]}}async getFlowVersion(a,b){e.debug("getFlowVersion: Entering method",{flowId:a,versionId:b});try{let c=await fetch(`/api/flow/${encodeURIComponent(a)}/versions/${encodeURIComponent(b)}`);if(!c.ok){if(404===c.status)return null;let a=await c.json().catch(()=>null);throw Error(a?.error||"Failed to get flow version")}return await c.json()}catch(c){return e.warn(`getFlowVersion: Failed for ${a}/${b}:`,c),null}}createNode(a,b){return e.debug("createNode: Entering method",{type:a,position:b}),{id:(0,d.A)(),type:a,position:b,data:{label:`${"mcp"===a?"MCP":a.charAt(0).toUpperCase()+a.slice(1)} Node`,type:a,properties:"process"===a?{inputMode:"full-history"}:"static"===a?{entries:[]}:"subflow"===a?{resultPresentation:"separate"}:{}}}}createStartNode(){return{id:(0,d.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}}}createNewFlow(a="NewFlow"){e.debug("createNewFlow: Entering method",{name:a});let b=Date.now();return{id:(0,d.A)(),name:a,createdAt:b,updatedAt:b,nodes:[this.createStartNode()],edges:[]}}createHistoryEntry(a,b){return e.debug("createHistoryEntry: Entering method"),{nodes:[...a],edges:[...b]}}generateSampleFlow(a="Sample Flow"){return e.debug("generateSampleFlow: Entering method",{name:a}),{id:(0,d.A)(),name:a,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]}}constructor(){this.flowsCache=null}}let g=new f},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},5485:(a,b,c)=>{"use strict";c.d(b,{v:()=>h});var d=c(67484),e=c(92646);let f=(0,c(6680).h)("frontend/hooks/useServerStatus");function g(a){return"stdio"===a.transport?a.args&&a.args.length>0?a.args[0]:"Unknown path":"websocket"===a.transport?a.websocketUrl||"Unknown URL":a.serverUrl||"Unknown URL"}function h(){let[a,b]=(0,d.useState)([]),[c,h]=(0,d.useState)(!0),[i,j]=(0,d.useState)(null),[k,l]=(0,d.useState)(new Set),m=(0,d.useCallback)(async()=>{f.debug("Loading servers"),h(!0),j(null);try{let a=await e.S.loadServerConfigs();if(!a||"error"in a){f.warn("Failed to load server configurations:",a?.error),j(a?.error||"Failed to load server configurations"),h(!1);return}let c=await Promise.all(a.map(async a=>{f.debug(`Getting status for server: ${a.name}`);let b=await e.S.getServerStatus(a.name),c="string"==typeof b?b:b.status,d="object"==typeof b&&b.message?b.message:void 0,h="object"==typeof b&&b.stderrOutput?b.stderrOutput:void 0,i="object"==typeof b?b.stdioOAuth:void 0,j=g(a);return{...a,path:j,status:c,error:d,stderrOutput:h,stdioOAuth:i}}));f.debug("Final server states:",c),b(c),h(!1)}catch(a){f.warn("Failed to load servers:",a),j("Failed to load servers"),h(!1)}},[]),n=(0,d.useCallback)(async(c,d)=>{f.debug(`Toggling server ${c} to ${d?"enabled":"disabled"}`);try{let g=a.find(a=>a.name===c);if(!g)return f.warn(`Server not found: ${c}`),!1;f.debug(`Found server ${c}, current disabled state: ${g.disabled}`);let h=await e.S.updateServerConfig(c,{disabled:!d});if(h.error)return f.warn("Failed to update server config:",[h.error,c]),!1;f.debug(`Updating server ${c} state in UI, new disabled state: ${!d}`),b(a=>a.map(a=>a.name===c?{...a,disabled:!d}:a)),f.info(`Successfully toggled server ${c} to ${d?"enabled":"disabled"}`);try{let a=await e.S.getServerStatus(c),d="string"==typeof a?a:a.status,f="object"==typeof a&&a.message?a.message:void 0,g="object"==typeof a&&a.stderrOutput?a.stderrOutput:void 0,h="object"==typeof a?a.stdioOAuth:void 0;b(a=>a.map(a=>a.name===c?{...a,status:d,error:f,stderrOutput:g,stdioOAuth:h}:a))}catch(a){f.warn(`Failed to get status for server ${c} after toggle:`,a)}return!0}catch(a){return f.warn("Failed to toggle server:",a),!1}},[a]),o=(0,d.useCallback)(async c=>{f.debug(`Deleting server: ${c}`);try{if(!a.find(a=>a.name===c))return f.warn("Server not found:",c),!1;let d=await e.S.deleteServerConfig(c);if(d.error)return f.warn("Failed to delete server config:",d.error),!1;return b(a=>a.filter(a=>a.name!==c)),!0}catch(a){return f.warn("Failed to delete server:",a),!1}},[a]),p=(0,d.useCallback)(async a=>{f.debug("Adding server:",a);try{let c=g(a),d={...a,path:c,status:"connecting",tools:[],env:a.env||{}};b(a=>[...a,d]),l(b=>new Set(b).add(a.name));let h=await e.S.updateServerConfig(a.name,a);if(h.error)return f.warn("Failed to update server config:",h.error),b(b=>b.map(b=>b.name===a.name?{...b,status:"error",error:h.error}:b)),l(b=>{let c=new Set(b);return c.delete(a.name),c}),!1;f.info(`Successfully added server ${a.name}`);try{let c=await e.S.getServerStatus(a.name),d="string"==typeof c?c:c.status,f="object"==typeof c&&c.message?c.message:void 0,g="object"==typeof c&&c.stderrOutput?c.stderrOutput:void 0,h="object"==typeof c?c.stdioOAuth:void 0;b(b=>b.map(b=>b.name===a.name?{...b,status:d,error:f,stderrOutput:g,stdioOAuth:h}:b))}catch(b){f.warn(`Failed to get status for server ${a.name} after adding:`,b)}return l(b=>{let c=new Set(b);return c.delete(a.name),c}),!0}catch(c){return f.warn("Failed to add server:",c),b(b=>b.map(b=>b.name===a.name?{...b,status:"error",error:c instanceof Error?c.message:"Unknown error during server addition"}:b)),l(b=>{let c=new Set(b);return c.delete(a.name),c}),!1}},[]),q=(0,d.useCallback)(async(a,c)=>{let d=c??a.name,h=d!==a.name;f.debug("Updating server:",a);try{b(b=>b.map(b=>b.name===d?{...a,path:g(a),status:b.status,error:b.error,stderrOutput:b.stderrOutput}:b));let c=await e.S.updateServerConfig(d,a);if(c.error){if(f.warn("Failed to update server config:",c.error),h)return await m(),!1;return b(b=>b.map(b=>b.name===a.name?{...b,status:"error",error:c.error}:b)),!1}f.info(`Successfully updated config for server ${a.name}`);try{let c=await e.S.getServerStatus(a.name),d="string"==typeof c?c:c.status,f="object"==typeof c&&c.message?c.message:void 0,g="object"==typeof c&&c.stderrOutput?c.stderrOutput:void 0,h="object"==typeof c?c.stdioOAuth:void 0;b(b=>b.map(b=>b.name===a.name?{...b,status:d,error:f,stderrOutput:g,stdioOAuth:h}:b))}catch(b){f.warn(`Failed to get status for server ${a.name} after config update:`,b)}return!0}catch(d){if(f.warn("Failed to update server:",d),h)return await m(),!1;let c=d instanceof Error?d.message:"Unknown error during update";return b(b=>b.map(b=>b.name===a.name?{...b,status:"error",error:c}:b)),!1}},[m]),r=(0,d.useCallback)(async(a,c)=>{let d=c&&c.trim()?c.trim():"";f.debug(`Setting folder for server ${a} to ${d||"(none)"}`);try{let c=await e.S.updateServerConfig(a,{folder:d});if("error"in c&&c.error)return f.warn("Failed to update server folder:",c.error),!1;return b(b=>b.map(b=>b.name===a?{...b,folder:d||void 0}:b)),!0}catch(a){return f.warn("Failed to set server folder:",a),!1}},[]),s=(0,d.useCallback)(async(a,c)=>{f.debug(`Setting favorite for server ${a} to ${c}`);try{let d=await e.S.updateServerConfig(a,{favorite:c});if("error"in d&&d.error)return f.warn("Failed to update server favorite:",d.error),!1;return b(b=>b.map(b=>b.name===a?{...b,favorite:c}:b)),!0}catch(a){return f.warn("Failed to set server favorite:",a),!1}},[]),t=(0,d.useCallback)(async(c,d)=>{f.debug(`Saving environment variables for server: ${c}`,d);try{if(!a.find(a=>a.name===c))return f.warn(`Server not found: ${c}`),!1;let g=await e.S.updateServerConfig(c,{env:d});if(g.error)return f.warn("Failed to update server config:",g.error),!1;return f.debug(`Updating environment variables in UI for server: ${c}`),b(a=>a.map(a=>a.name===c?{...a,env:d}:a)),f.info(`Successfully saved environment variables for server: ${c}`),!0}catch(a){return f.warn("Failed to save environment variables:",a),!1}},[a]);return{servers:a,isLoading:c,loadError:i,connectingServers:k,loadServers:m,toggleServer:n,retryServer:(0,d.useCallback)(async a=>{f.debug(`Retrying server status for: ${a}`);try{let c=await e.S.getServerStatus(a),d="string"==typeof c?c:c.status,f="object"==typeof c&&c.message?c.message:void 0,g="object"==typeof c&&c.stderrOutput?c.stderrOutput:void 0,h="object"==typeof c?c.stdioOAuth:void 0;return b(b=>b.map(b=>b.name===a?{...b,status:d,error:f,stderrOutput:g,stdioOAuth:h}:b)),!0}catch(a){return f.warn("Failed to retry server status:",a),!1}},[]),deleteServer:o,addServer:p,updateServer:q,setServerFolder:r,setServerFavorite:s,saveEnv:t}}},8332:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"M8.7 15.9 4.8 12l3.9-3.9c.39-.39.39-1.01 0-1.4a.984.984 0 0 0-1.4 0l-4.59 4.59c-.39.39-.39 1.02 0 1.41l4.59 4.6c.39.39 1.01.39 1.4 0s.39-1.01 0-1.4m6.6 0 3.9-3.9-3.9-3.9a.984.984 0 0 1 0-1.4c.39-.39 1.01-.39 1.4 0l4.59 4.59c.39.39.39 1.02 0 1.41l-4.59 4.6c-.39.39-1.01.39-1.4 0a.984.984 0 0 1 0-1.4"}),"CodeRounded")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},16084:(a,b,c)=>{Promise.resolve().then(c.bind(c,1658))},16300:(a,b,c)=>{"use strict";c.d(b,{O:()=>g});var d=c(67484),e=c(92646);let f=(0,c(6680).h)("frontend/hooks/useServerTools");function g(a){let[b,c]=(0,d.useState)([]),[g,h]=(0,d.useState)(!1),[i,j]=(0,d.useState)(null),[k,l]=(0,d.useState)(null),[m,n]=(0,d.useState)(null),[o,p]=(0,d.useState)(null),[q,r]=(0,d.useState)(0),[s,t]=(0,d.useState)(!1),u=(0,d.useRef)(null),v=(0,d.useCallback)(async(d=!1)=>{if(!a){c([]),p(null),j(null);return}if(n(a),!d&&k&&new Date().getTime()-k.getTime()<200&&b.length>0&&a===m)return void f.debug(`Rate limiting tool refresh for server: ${a}`);f.debug(`Loading tools for server: ${a}`),h(!0),c([]),p(null),j(null);try{let b=await e.S.listServerTools(a);if(a!==m)return void f.debug(`Server changed during tool loading from ${a} to ${m}`);if(b.error)f.warn(`Error loading tools for ${a}:`,b.error),j(b.error),c([]);else{let d=(b.tools||[]).map(a=>({...a,description:a.description||""}));f.debug(`Loaded ${d.length} tools for ${a}`),c(d),p(a),l(new Date),r(0)}}catch(b){if(a!==m)return void f.debug(`Server changed during tool loading from ${a} to ${m}`);f.warn(`Failed to load tools for server ${a}:`,b),j(`Failed to load tools: ${b instanceof Error?b.message:"Unknown error"}`),c([]),p(null)}finally{a===m&&h(!1)}},[a,k,b.length,m]),w=(0,d.useCallback)(()=>{if(!a)return;u.current&&(clearTimeout(u.current),u.current=null),t(!0);let b=Math.min(1e3*Math.pow(2,q),1e4);return f.debug(`Retrying tool load for ${a} in ${b}ms (attempt ${q+1})`),u.current=setTimeout(()=>{r(a=>a+1),v(!0),t(!1)},b),()=>{u.current&&clearTimeout(u.current)}},[a,q,v]);return{tools:b,toolsServerName:o,isLoading:g||s,error:i,loadTools:v,retryLoadTools:w,isRetrying:s,retryCount:q,testTool:(0,d.useCallback)(async(b,c,d)=>{if(!a)return{success:!1,output:"",error:"No server selected"};f.debug(`Testing tool ${b} on server ${a} with params:`,c);try{let g=await e.S.callTool(a,b,c,d);if(g.error)return f.warn(`Error calling tool ${b}:`,g.error),{success:!1,output:"",error:g.error};return f.debug(`Tool ${b} executed successfully:`,g),{success:!0,output:JSON.stringify(g,null,2)}}catch(a){return f.error(`Exception calling tool ${b}:`,a),{success:!1,output:"",error:a instanceof Error?a.message:"Unknown error occurred"}}},[a])}}},17891:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/get-segment-param")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19572:(a,b,c)=>{"use strict";c.d(b,{A:()=>t});var d=c(48249),e=c(67484),f=c(29184),g=c(55784),h=c(79705),i=c(20437),j=c(88458),k=c(53800),l=c(77217),m=c(36485),n=c(86471),o=c(86136),p=c(17852),q=c(9695),r=c(32166),s=c(30211);let t=({roots:a,onChange:b})=>{let{t:c}=(0,r.s9)(),t=Array.isArray(a)?a:[],[u,v]=(0,e.useState)(null),w=(a,c)=>{b(t.map((b,d)=>d===a?c:b))};return(0,d.jsxs)(f.default,{children:[(0,d.jsxs)(f.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,d.jsx)(o.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,d.jsx)(g.A,{variant:"subtitle1",children:c("mcp.local.roots.title")})]}),(0,d.jsx)(g.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:(0,d.jsx)(s.A,{message:"mcp.local.roots.help",values:{binding:(0,d.jsx)("code",{children:"${global:VAR}"})}})}),(0,d.jsx)(h.A,{spacing:1,children:t.map((a,e)=>(0,d.jsxs)(f.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(i.A,{size:"small",fullWidth:!0,placeholder:"/path/to/folder or file:///path",value:a,onChange:a=>w(e,a.target.value)}),(0,d.jsx)(j.A,{title:c("mcp.local.roots.browse"),children:(0,d.jsx)(k.A,{size:"small",onClick:()=>v(e),"aria-label":c("mcp.local.roots.browse"),children:(0,d.jsx)(p.A,{fontSize:"small"})})}),(0,d.jsx)(j.A,{title:c("mcp.local.roots.remove"),children:(0,d.jsx)(k.A,{size:"small",onClick:()=>b(t.filter((a,b)=>b!==e)),"aria-label":c("mcp.local.roots.remove"),children:(0,d.jsx)(n.A,{fontSize:"small"})})})]},e))}),(0,d.jsx)(l.A,{size:"small",startIcon:(0,d.jsx)(m.A,{}),onClick:()=>b([...t,""]),sx:{mt:1},children:c("mcp.local.roots.add")}),(0,d.jsx)(q.A,{open:null!==u,title:c("mcp.local.roots.choose"),initialPath:null!==u&&t[u]||void 0,onClose:()=>v(null),onSelect:a=>{null!==u&&w(u,a)}})]})}},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33439:(a,b,c)=>{"use strict";c.d(b,{d:()=>e});var d=c(1115);async function e(a,b){if(!a.body||"function"!=typeof a.body.getReader)throw Error("Response has no readable body to stream");let c=a.body.getReader(),e=new TextDecoder,f=(0,d.c)();try{for(;;){let{value:a,done:d}=await c.read();if(d)break;for(let c of f.push(e.decode(a,{stream:!0})))await b(c)}let a=e.decode();if(a)for(let c of f.push(a))await b(c);for(let a of f.flush())await b(a)}finally{try{c.releaseLock()}catch{}}}},33873:a=>{"use strict";a.exports=require("path")},37741:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>O,handler:()=>Q,routeModule:()=>P});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(14965),o=c(63747),p=c(24235),q=c(23938),r=c(261),s=c(66758),t=c(77243),u=c(26713),v=c(37527),w=c(22820),x=c(88216),y=c(47929),z=c(79551),A=c(71797),B=c(89125),C=c(86439),D=c(77068),E=c(27269),F=c(37525),G=c(61287),H=c(81494),I=c(70722),J=c(70753),K=c(43954),L=c(17891),M={};for(let a in G)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(M[a]=()=>G[a]);c.d(b,M);let N={children:["",{children:["flows",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,80236)),"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\flows\\page.tsx"]}]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,76537)),"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"]},[]]}.children,O={require:c,loadChunk:()=>Promise.resolve()},P=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/flows/page",pathname:"/flows",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:N},distDir:".next",relativeProjectDir:""});async function Q(a,b,d){var M,R,S,T,U;d.requestMeta&&(0,h.setRequestMeta)(a,d.requestMeta),P.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let V=!!(0,h.getRequestMeta)(a,"minimalMode"),W="/flows/page";"/index"===W&&(W="/");let X=await P.prepare(a,b,{srcPage:W,multiZoneDraftMode:!1});if(!X)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Y,query:Z,params:$,pageIsDynamic:_,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,serverActionsManifest:ad,clientReferenceManifest:ae,subresourceIntegrityManifest:af,prerenderManifest:ag,isDraftMode:ah,resolvedPathname:ai,revalidateOnlyGenerated:aj,routerServerContext:ak,nextConfig:al,parsedUrl:am,interceptionRoutePatterns:an,deploymentId:ao,clientAssetToken:ap}=X,aq=(0,r.normalizeAppPath)(W),{isOnDemandRevalidate:ar}=X,as=al.experimental.ppr&&!al.cacheComponents&&(0,K.isInterceptionRouteAppPath)(ai)?null:P.match(ai,ag),at=(null==as?void 0:as.route)??null,au=!!ag.routes[ai],av=a.headers["user-agent"]||"",aw=(0,u.getBotType)(av),ax=(0,q.isHtmlBotRequest)(a),ay=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],az=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[t.RSC_HEADER]),aA=(0,s.getIsPossibleServerAction)(a),aB=(0,m.checkIsAppPPREnabled)(al.experimental.ppr),aC=a.headers[y.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,h.getRequestMeta)(a,"postponed")&&V&&aB&&aA&&aC&&"string"==typeof aC){let e=parseInt(aC,10),{maxPostponedStateSize:f,maxPostponedStateSizeBytes:g}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize);if(!isNaN(e)&&e>0){if(e>g)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(f)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let i="1 MB",j=(null==(U=al.experimental.serverActions)?void 0:U.bodySizeLimit)??i,k=e+(j!==i?c(95726).parse(j):1048576),l=await (0,E.readBodyWithSizeLimit)(a,k);if(null===l)return b.statusCode=413,b.end("Request body exceeded limit. To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;if(l.length>=e){let b=l.subarray(0,e).toString("utf8");(0,h.addRequestMeta)(a,"postponed",b);let c=l.subarray(e);(0,h.addRequestMeta)(a,"actionBody",c)}else throw Object.defineProperty(Error(`invariant: expected ${e} bytes of postponed state but only received ${l.length} bytes`),"__NEXT_ERROR_CODE",{value:"E979",enumerable:!1,configurable:!0})}}if(!(0,h.getRequestMeta)(a,"postponed")&&aB&&"1"===a.headers[y.NEXT_RESUME_HEADER]&&"POST"===a.method){let{maxPostponedStateSize:c,maxPostponedStateSizeBytes:e}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize),f=await (0,E.readBodyWithSizeLimit)(a,e);if(null===f)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(c)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let g=f.toString("utf8");(0,h.addRequestMeta)(a,"postponed",g)}let aD=!0===P.isDev||!0===al.experimental.exposeTestingApiInProductionBuild,aE=aD&&("1"===a.headers[t.NEXT_INSTANT_PREFETCH_HEADER]||!(0,n.f)(a.headers[t.RSC_HEADER])&&"string"==typeof a.headers.cookie&&a.headers.cookie.includes(t.NEXT_INSTANT_TEST_COOKIE+"=")),aF=(aB||aE)&&((null==(M=ag.routes[aq]??ag.dynamicRoutes[aq])?void 0:M.renderingMode)==="PARTIALLY_STATIC"||aE&&(aD||(null==ak?void 0:ak.experimentalTestProxy)===!0)),aG=aE&&aF,aH=aG&&!0===P.isDev,aI=!1,aJ=aF?(0,h.getRequestMeta)(a,"postponed"):void 0,aK=null==(R=ag.routes[ai])?void 0:R.prefetchDataRoute,aL=aF&&az&&!ay&&!aK;V&&(aL=aL&&!!aJ);let aM=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),aN=(!aw||!aF)&&(!av||(0,q.shouldServeStreamingMetadata)(av,al.htmlLimitedBots)),aO=!!((at||au||ag.routes[aq])&&!(aw&&aF)),aP=aF&&!0===al.cacheComponents,aQ=!0===P.isDev||!aO||"string"==typeof aJ||(aP&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aL&&!V:aL),aR=!!aw&&aF,aS=(null==at?void 0:at.remainingPrerenderableParams)??[],aT=(null==at?void 0:at.fallback)===null&&((null==(S=at.fallbackRootParams)?void 0:S.length)??0)>0,aU=null;if(!ah&&aO&&!aQ&&!aA&&!aJ&&!aL){let a=as?"string"==typeof(null==at?void 0:at.fallback)?at.fallback:as.source:null;if(!0===al.experimental.partialFallbacks&&a&&(null==at?void 0:at.fallbackRouteParams)&&!aT){if(aS.length>0){let b,c=(b=new Map(aS.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,L.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==$?void 0:$[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace((0,o.buildDynamicSegmentPlaceholder)(d),f)}).join("/")||"/");aU=c!==a?c:null}}else aU=ai}let aV=aU;!aV&&(P.isDev||aO&&_&&(null==at?void 0:at.fallbackRouteParams)&&!aA)&&(aV=ai),P.isDev||ah||!aO||!az||aL||(0,k.d)(a.headers);let aW={...G,tree:N,handler:Q,routeModule:P,__next_app__:O};ad&&ae&&(0,p.setManifestsSingleton)({page:W,clientReferenceManifest:ae,serverActionsManifest:ad});let aX=a.method||"GET",aY=(0,g.getTracer)(),aZ=aY.getActiveScopeSpan(),a$=!!(null==ak?void 0:ak.isWrappedByNextServer),a_=!0===al.experimental.partialFallbacks&&aS.length>0?(null==at||null==(T=at.fallbackRouteParams)?void 0:T.filter(a=>!aS.some(b=>b.paramName===a.paramName)))??[]:[],a0=async()=>((null==ak?void 0:ak.render404)?await ak.render404(a,b,am,!1):b.end("This page could not be found"),null);try{let k,m=P.getVaryHeader(ai,an);b.setHeader("Vary",m);let n=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return P.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aY.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aX} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a),k&&k!==c&&(k.setAttribute("http.route",d),k.updateName(a))}else c.updateName(`${aX} ${W}`)})},p=(0,h.getRequestMeta)(a,"incrementalCache")||await P.getIncrementalCache(a,al,ag,V);null==p||p.resetRequestCache(),globalThis.__incrementalCache=p;let q=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let k={query:Z,params:$,page:aq,sharedContext:{buildId:Y,deploymentId:ao,clientAssetToken:ap},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aW,Component:(0,j.T)(aW),params:$,routeModule:P,page:W,postponed:f,shouldWaitOnAllReady:aR,serveStreamingMetadata:aN,supportsDynamicResponse:"string"==typeof f||aQ,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,subresourceIntegrityManifest:af,setCacheStatus:null==ak?void 0:ak.setCacheStatus,setIsrStatus:null==ak?void 0:ak.setIsrStatus,setReactDebugChannel:null==ak?void 0:ak.setReactDebugChannel,sendErrorsToBrowser:null==ak?void 0:ak.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),P.relativeProjectDir),isDraftMode:ah,botType:aw,isOnDemandRevalidate:ar,isPossibleServerAction:aA,assetPrefix:al.assetPrefix,nextConfigOutput:al.output,crossOrigin:al.crossOrigin,trailingSlash:al.trailingSlash,images:al.images,previewProps:ag.preview,enableTainting:al.experimental.taint,htmlLimitedBots:al.htmlLimitedBots,reactMaxHeadersLength:al.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:p,cacheLifeProfiles:al.cacheLife,basePath:al.basePath,serverActions:al.experimental.serverActions,logServerFunctions:"object"==typeof al.logging&&!!al.logging.serverFunctions,...aG||aH||aI?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aH}:{},cacheComponents:!!al.cacheComponents,experimental:{isRoutePPREnabled:aF,expireTime:al.expireTime,staleTimes:al.experimental.staleTimes,dynamicOnHover:!!al.experimental.dynamicOnHover,optimisticRouting:!!al.experimental.optimisticRouting,inlineCss:!!al.experimental.inlineCss,prefetchInlining:al.experimental.prefetchInlining??!1,authInterrupts:!!al.experimental.authInterrupts,cachedNavigations:!!al.experimental.cachedNavigations,clientTraceMetadata:al.experimental.clientTraceMetadata||[],clientParamParsingOrigins:al.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,D.parseMaxPostponedStateSize)(al.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>P.onRequestError(a,b,d,e,ak),err:(0,h.getRequestMeta)(a,"invokeError")}};i&&(k.renderOpts.supportsDynamicResponse=!1);let l=await n(e,k),{metadata:m}=l,{cacheControl:o,headers:q={},fetchTags:r,fetchMetrics:s}=m;if(r&&(q[y.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,aO&&(null==o?void 0:o.revalidate)===0&&!P.isDev&&!aF){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ai}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
10
- see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:v.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:o}},r=async({hasResolved:c,previousCacheEntry:g,isRevalidating:i,span:j,forceStaticRender:k=!1})=>{let l=!1===P.isDev,m=c||b.writableEnded;try{var n;let f;if(ar&&aj&&!g&&!V)return(null==ak?void 0:ak.render404)?await ak.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(at&&(f=(0,w.parseFallbackField)(at.fallback)),!0===al.experimental.partialFallbacks&&(null==at?void 0:at.fallback)===null&&!aT&&aS.length>0&&(f=w.FallbackMode.PRERENDER),f===w.FallbackMode.PRERENDER&&(0,u.isBot)(av)&&(!aF||ax)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),(null==g?void 0:g.isStale)===-1&&(ar=!0),ar&&(f!==w.FallbackMode.NOT_FOUND||g)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),!V&&f!==w.FallbackMode.BLOCKING_STATIC_RENDER&&aV&&!m&&!ah&&_&&(l||!au)){if((l||at)&&f===w.FallbackMode.NOT_FOUND){if(al.adapterPath)return await a0();throw new C.NoFallbackError}if(aF&&(al.cacheComponents?!aL:!az)){let b=l&&"string"==typeof(null==at?void 0:at.fallback)?at.fallback:aq,f=(l||aG)&&(null==at?void 0:at.fallbackRouteParams)?(0,o.createOpaqueFallbackRouteParams)(at.fallbackRouteParams):aI?(0,o.getFallbackRouteParams)(aq,P):null;aG&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await P.handleResponse({cacheKey:b,req:a,nextConfig:al,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ag,isRoutePPREnabled:aF,responseGenerator:async()=>q({span:j,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:V});if(null===g)return null;if(g)return V||!aF||!(aS.length>0)||!0!==al.experimental.partialFallbacks||!aU||!p||ar||aI||aD||aE||ay||(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(aU,p,aF,!1,a=>q({span:a.span,postponed:void 0,fallbackRouteParams:a_.length>0?(0,o.createOpaqueFallbackRouteParams)(a_):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let s=ar||i||!aJ?void 0:aJ;if(aP&&!V&&p&&(aL||aA)&&!k){let b=await p.get(ai,{kind:v.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===v.CachedRouteKind.APP_PAGE&&(s=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(ai,p,aF,!1,a=>r({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aG||aH)&&void 0!==s)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:v.CachedRouteKind.PAGES,html:x.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let t=!P.isDev&&_&&(null==at?void 0:at.fallbackRouteParams)?(0,o.getPlaceholderFallbackRouteParams)($,at.fallbackRouteParams):null,y=t&&t.length>0?t:null==at?void 0:at.fallbackRouteParams,z=null!=t&&t.length>0,A=null;if(al.cacheComponents&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,h.getRequestMeta)(a,"resolvedRouteParamKeys");b&&b.size>0&&(A=at.fallbackRouteParams.filter(a=>!b.has(a.paramName)))}let B=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||z||aG&&!au)&&y?(0,o.createOpaqueFallbackRouteParams)(y):A&&A.length>0&&A.length<((null==at||null==(n=at.fallbackRouteParams)?void 0:n.length)??0)?(0,o.createOpaqueFallbackRouteParams)(A):aI?(0,o.getFallbackRouteParams)(aq,P):null;if((l||aG)&&al.cacheComponents&&!au&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,o.createOpaqueFallbackRouteParams)(y??at.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return q({span:j,postponed:s,fallbackRouteParams:B,forceStaticRender:k})}catch(b){throw(null==g?void 0:g.isStale)&&await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}},s=async c=>{var f,g,i,j,k,l;let m,n=await P.handleResponse({cacheKey:aU,responseGenerator:a=>r({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ar,isRoutePPREnabled:aF,req:a,nextConfig:al,prerenderManifest:ag,waitUntil:d.waitUntil,isMinimalMode:V});if(ah&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),P.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!n){if(aU)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let o="string"==typeof n.value.postponed;az&&!aA&&ao&&b.setHeader(y.NEXT_NAV_DEPLOYMENT_ID_HEADER,ao),aO&&!aL&&(!o||ay)&&(V||b.setHeader("x-nextjs-cache",ar?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(t.NEXT_IS_PRERENDER_HEADER,"1"));let{value:p}=n;if(aJ)m={revalidate:0,expire:void 0};else if(aL)m={revalidate:0,expire:void 0};else if(!P.isDev)if(ah)m={revalidate:0,expire:void 0};else if(aO){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});m={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??al.expireTime}}else m={revalidate:y.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(m={revalidate:0,expire:void 0});if(n.cacheControl=m,"string"==typeof aM&&(null==p?void 0:p.kind)===v.CachedRouteKind.APP_PAGE&&p.segmentData){b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=p.headers)?void 0:k[y.NEXT_CACHE_TAGS_HEADER];V&&aO&&c&&"string"==typeof c&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,c);let d=p.segmentData.get(aM);return void 0!==d?(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(d,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl}))}let s=aP?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(s){let b=(0,h.getRequestMeta)(a,"initURL")??a.url,c=b?(null==(l=(0,F.parseUrl)(b))?void 0:l.pathname)??b:void 0;if(await s(n,{url:c}))return null}if(p.headers){let a={...p.headers};for(let[c,d]of(V&&aO||delete a[y.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let u=null==(g=p.headers)?void 0:g[y.NEXT_CACHE_TAGS_HEADER];if(V&&aO&&u&&"string"==typeof u&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,u),!p.status||az&&aF||(b.statusCode=p.status),!V&&p.status&&H.RedirectStatusCode[p.status]&&az&&(b.statusCode=200),o&&!aL&&b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"1"),az&&!ah){if(void 0===p.rscData){if(p.html.contentType!==t.RSC_CONTENT_TYPE_HEADER)if(al.cacheComponents)return b.statusCode=404,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl});else throw Object.defineProperty(new I.InvariantError(`Expected RSC response, got ${p.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:p.html,cacheControl:n.cacheControl})}return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(p.rscData,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let w=p.html;if(aE&&aG){let c=!0===P.isDev?crypto.randomUUID():null;return w.pipeThrough(await (0,A.createInstantTestScriptInsertionTransformStream)(c)),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})}if(!o||V||az)return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:n.cacheControl});if(aG||aH)return w.push(new ReadableStream({start(a){a.enqueue(z.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}});let C=new TransformStream;return w.push(C.readable),q({span:c,postponed:p.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(C.writable)}).catch(a=>{C.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})};if(!a$||!aZ)return k=aY.getActiveScopeSpan(),await aY.withPropagatedContext(a.headers,()=>aY.trace(i.BaseServerSpan.handleRequest,{spanName:`${aX} ${W}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aX,"http.target":a.url}},s),void 0,!a$);await s(aZ)}catch(b){throw b instanceof C.NoFallbackError||await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}}},40052:(a,b,c)=>{Promise.resolve().then(c.bind(c,80236))},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},46571:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"m20.45 6 .49-1.06L22 4.45c.39-.18.39-.73 0-.91l-1.06-.49L20.45 2c-.18-.39-.73-.39-.91 0l-.49 1.06-1.05.49c-.39.18-.39.73 0 .91l1.06.49.49 1.05c.17.39.73.39.9 0M8.95 6l.49-1.06 1.06-.49c.39-.18.39-.73 0-.91l-1.06-.48L8.95 2c-.17-.39-.73-.39-.9 0l-.49 1.06-1.06.49c-.39.18-.39.73 0 .91l1.06.49L8.05 6c.17.39.73.39.9 0m10.6 7.5-.49 1.06-1.06.49c-.39.18-.39.73 0 .91l1.06.49.49 1.06c.18.39.73.39.91 0l.49-1.06 1.05-.5c.39-.18.39-.73 0-.91l-1.06-.49-.49-1.06c-.17-.38-.73-.38-.9.01m-1.84-4.38-2.83-2.83a.996.996 0 0 0-1.41 0L2.29 17.46c-.39.39-.39 1.02 0 1.41l2.83 2.83c.39.39 1.02.39 1.41 0L17.7 10.53c.4-.38.4-1.02.01-1.41m-3.5 2.09L12.8 9.8l1.38-1.38 1.41 1.41z"}),"AutoFixHighRounded")},58065:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3m-2 10H6V7h12zm-9-6c-.83 0-1.5-.67-1.5-1.5S8.17 10 9 10s1.5.67 1.5 1.5S9.83 13 9 13m7.5-1.5c0 .83-.67 1.5-1.5 1.5s-1.5-.67-1.5-1.5.67-1.5 1.5-1.5 1.5.67 1.5 1.5M8 15h8v2H8z"}),"SmartToyOutlined")},60389:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5-1-1h-5l-1 1H5v2h14V4z"}),"DeleteOutline")},60928:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2zM9 9h6c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1H9c-.55 0-1-.45-1-1v-8c0-.55.45-1 1-1m6.5-5-.71-.71c-.18-.18-.44-.29-.7-.29H9.91c-.26 0-.52.11-.7.29L8.5 4H6c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1z"}),"DeleteOutlineRounded")},61990:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"m18.04 7.99-.63-1.4-1.4-.63c-.39-.18-.39-.73 0-.91l1.4-.63.63-1.4c.18-.39.73-.39.91 0l.63 1.4 1.4.63c.39.18.39.73 0 .91l-1.4.63-.63 1.4c-.17.39-.73.39-.91 0m3.24 4.73-.32-.72c-.18-.39-.73-.39-.91 0l-.32.72-.73.32c-.39.18-.39.73 0 .91l.72.32.32.73c.18.39.73.39.91 0l.32-.72.73-.32c.39-.18.39-.73 0-.91zm-5.04 1.65 1.23.93c.4.3.51.86.26 1.3l-1.62 2.8c-.25.44-.79.62-1.25.42l-1.43-.6c-.2.13-.42.26-.64.37l-.19 1.54c-.06.5-.49.88-.99.88H8.38c-.5 0-.93-.38-.99-.88l-.19-1.54c-.22-.11-.43-.23-.64-.37l-1.43.6c-.46.2-1 .02-1.25-.42l-1.62-2.8c-.25-.44-.14-.99.26-1.3l1.23-.93V14c0-.12 0-.25.01-.37l-1.23-.93c-.4-.3-.51-.86-.26-1.3l1.62-2.8c.25-.44.79-.62 1.25-.42l1.43.6c.2-.13.42-.26.64-.37l.19-1.54c.05-.49.48-.87.98-.87h3.23c.5 0 .93.38.99.88l.19 1.54c.22.11.43.23.64.37l1.43-.6c.46-.2 1-.02 1.25.42l1.62 2.8c.25.44.14.99-.26 1.3l-1.23.93c.01.12.01.24.01.37s0 .24-.01.36M13 14c0-1.66-1.34-3-3-3s-3 1.34-3 3 1.34 3 3 3 3-1.34 3-3"}),"SettingsSuggestRounded")},62282:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(32586),e=c(48249);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 5V2L8 6l4 4V7c3.31 0 6 2.69 6 6 0 2.97-2.17 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93 0-4.42-3.58-8-8-8m-6 8c0-1.65.67-3.15 1.76-4.24L6.34 7.34C4.9 8.79 4 10.79 4 13c0 4.08 3.05 7.44 7 7.93v-2.02c-2.83-.48-5-2.94-5-5.91"}),"RestartAlt")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},80236:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"C:\\\\Users\\\\Moe\\\\Documents\\\\GitHub\\\\FLUJO\\\\src\\\\app\\\\flows\\\\page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\flows\\page.tsx","default")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,319,4490,3727,437,8458,1269,1990,9345,6024,7393,5409,7911,7476,9050,5851,4340,7927,2839,7506,4222,4998,3184,7912,4291,9253,387,8767,3761,5434,8601,8981,75,8542,2296,2474,9553],()=>b(b.s=37741));module.exports=c})();
10
+ `;function er(a){return"ready"===a?"success":"needs-attention"===a?"warning":"checking"===a?"info":"primary"}let es={building:"flows.generator.visualStatus.building",checking:"flows.generator.visualStatus.checking",ready:"flows.generator.visualStatus.ready","needs-attention":"flows.generator.visualStatus.needs-attention"};function et({decision:a}){let{t:b}=(0,au.s9)(),c="accepted"===a.decision;return(0,d.jsx)(F.A,{size:"small",color:c?"success":"default",variant:c?"filled":"outlined",icon:c?(0,d.jsx)(dU.A,{}):(0,d.jsx)(be.A,{}),label:b(c?"flows.generator.visualUsing":"flows.generator.visualSkipped",{name:a.label}),title:a.reason,sx:{maxWidth:"100%","& .MuiChip-label":{overflow:"hidden",textOverflow:"ellipsis"}}})}function eu({state:a,onSelect:b}){let{t:c,tp:e}=(0,au.s9)();return(0,d.jsxs)(bb.A,{spacing:.75,children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",sx:{px:.5},children:[(0,d.jsx)(A.A,{color:"primary",fontSize:"small"}),(0,d.jsx)(j.A,{variant:"subtitle2",fontWeight:850,children:c("flows.generator.visualTree")}),(0,d.jsx)(F.A,{size:"small",label:`${a.agentOrder.length}`})]}),a.agentOrder.map(f=>{let g=a.agents[f];if(!g)return null;let h=a.focusedAgentId===g.id;return(0,d.jsx)(D.A,{component:"button",type:"button",onClick:()=>b(g.id),elevation:0,sx:{appearance:"none",width:`calc(100% - ${10*Math.min(g.depth,5)}px)`,ml:`${10*Math.min(g.depth,5)}px !important`,p:1,textAlign:"left",color:"text.primary",cursor:"pointer",border:1,borderColor:h?"primary.main":"divider",borderRadius:2.5,bgcolor:h?a=>(0,ah.X4)(a.palette.primary.main,.11):"background.paper",transition:"all 180ms ease"},children:(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,d.jsx)(bu.A,{color:h?"primary":"action",fontSize:"small"}),(0,d.jsxs)(i.default,{minWidth:0,flex:1,children:[(0,d.jsx)(j.A,{variant:"body2",fontWeight:800,noWrap:!0,children:g.name}),(0,d.jsxs)(j.A,{variant:"caption",color:"text.secondary",children:[e("flows.card.step",g.steps.length)," \xb7 ",c("flows.generator.visualLevel",{count:g.depth})]})]}),(0,d.jsx)(i.default,{sx:{width:8,height:8,borderRadius:"50%",bgcolor:`${er(g.status)}.main`}})]})},g.id)})]})}function ev({preview:a,agentName:b}){let{t:c}=(0,au.s9)();return(0,d.jsxs)(i.default,{"data-testid":"visual-expert-preview",sx:{minWidth:0,minHeight:{xs:360,lg:0},height:"100%",display:"flex",flexDirection:"column",borderLeft:{lg:1},borderTop:{xs:1,lg:0},borderColor:"divider",bgcolor:a=>(0,ah.X4)(a.palette.background.default,.55)},children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",sx:{px:1.5,py:1.25,borderBottom:1,borderColor:"divider"},children:[(0,d.jsx)(em,{color:"primary",fontSize:"small"}),(0,d.jsxs)(i.default,{minWidth:0,flex:1,children:[(0,d.jsx)(j.A,{variant:"subtitle2",fontWeight:850,children:c("flows.generator.visualExpertPreview")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",noWrap:!0,children:b})]}),(0,d.jsx)(F.A,{size:"small",variant:"outlined",color:"primary",label:c("flows.generator.visualAutoAligned")})]}),(0,d.jsx)(i.default,{sx:{position:"relative",flex:1,minHeight:0},children:a?(0,d.jsx)(dx,{flow:a.flow,autoLayout:!0,fitViewOnChange:!0},a.flow.id):(0,d.jsx)(i.default,{sx:{position:"absolute",inset:0,display:"grid",placeItems:"center",p:4,textAlign:"center"},children:(0,d.jsxs)(bb.A,{spacing:1.5,alignItems:"center",children:[(0,d.jsxs)(i.default,{sx:{position:"relative",display:"grid",placeItems:"center",width:64,height:64},children:[(0,d.jsx)(i.default,{sx:{position:"absolute",inset:0,borderRadius:"50%",bgcolor:"primary.main",opacity:.1,animation:`${eq} 1.5s ease-in-out infinite`}}),(0,d.jsx)(em,{color:"primary",sx:{fontSize:32}})]}),(0,d.jsx)(j.A,{variant:"body2",fontWeight:750,children:c("flows.generator.visualPreviewWaiting")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:c("flows.generator.visualPreviewHelp")})]})})})]})}function ew({state:a,working:b,onSelectAgent:c}){let{t:e}=(0,au.s9)(),g=a.focusedAgentId?a.agents[a.focusedAgentId]:void 0;if(!g)return(0,d.jsx)(i.default,{sx:{minHeight:360,display:"grid",placeItems:"center",textAlign:"center",p:4},children:(0,d.jsxs)(bb.A,{alignItems:"center",spacing:2,children:[(0,d.jsxs)(i.default,{sx:{position:"relative",display:"grid",placeItems:"center",width:88,height:88},children:[(0,d.jsx)(i.default,{sx:{position:"absolute",inset:0,borderRadius:"50%",bgcolor:"primary.main",opacity:.12,animation:`${eq} 1.5s ease-in-out infinite`}}),(0,d.jsx)(bh.A,{color:"primary",sx:{fontSize:42}})]}),(0,d.jsx)(j.A,{variant:"h6",children:e("flows.generator.visualDesigning")}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:e("flows.generator.visualFirstAgent")}),b&&(0,d.jsx)(G.default,{size:24})]})});let h=a.previews[g.id];return(0,d.jsxs)(i.default,{sx:{display:"grid",gridTemplateColumns:{xs:"minmax(0, 1fr)",md:"210px minmax(0, 1fr)",lg:"210px minmax(380px, 1.08fr) minmax(340px, 0.92fr)"},minHeight:460,height:{lg:"58vh"},maxHeight:{lg:"58vh"},width:"100%",maxWidth:"100%",minWidth:0,overflowX:"hidden"},children:[(0,d.jsx)(i.default,{sx:{minWidth:0,p:1.5,borderRight:{md:1},borderBottom:{xs:1,md:0},borderColor:"divider",overflowY:"auto"},children:(0,d.jsx)(eu,{state:a,onSelect:c})}),(0,d.jsx)(i.default,{sx:{minWidth:0,p:{xs:1.5,sm:2.5},overflowY:"auto"},children:(0,d.jsxs)(bb.A,{spacing:2,children:[(0,d.jsx)(D.A,{elevation:0,sx:{p:2,border:1,borderColor:"divider",borderRadius:3,bgcolor:a=>(0,ah.X4)(a.palette.primary.main,.045)},children:(0,d.jsxs)(bb.A,{direction:{xs:"column",sm:"row"},spacing:1,alignItems:{sm:"center"},children:[(0,d.jsxs)(i.default,{flex:1,minWidth:0,children:[(0,d.jsx)(j.A,{variant:"overline",color:"primary.main",children:e("flows.generator.visualLevelAgent",{count:g.depth})}),(0,d.jsx)(j.A,{variant:"h5",fontWeight:850,children:g.name}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:g.goal})]}),(0,d.jsx)(F.A,{color:er(g.status),label:e(es[g.status])})]})}),(0,d.jsxs)(i.default,{sx:{px:1.5,py:1,borderRadius:2.5,border:1,borderColor:"divider",bgcolor:"background.paper"},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:850,color:"primary.main",sx:{textTransform:"uppercase"},children:e("flows.guided.when")}),(0,d.jsx)(j.A,{variant:"body2",fontWeight:700,children:e("flows.guided.someoneAsks")})]}),g.steps.map((b,h)=>{let k=a.suggestions[eo(g.id,b.id)],l=a.decisions.filter(a=>a.agentId===g.id&&a.stepId===b.id),m=!!k&&l.length<k.tools.length+k.agents.length,n=b.connectedAgentIds.map(b=>a.agents[b]).filter(Boolean);return(0,d.jsxs)(f().Fragment,{children:[(0,d.jsx)(bE,{sx:{alignSelf:"center",color:"text.disabled"}}),(0,d.jsx)(D.A,{elevation:0,sx:{p:1.75,border:1,borderColor:m?"info.main":"divider",borderRadius:3,animation:m?`${eq} 1.8s ease-in-out infinite`:void 0},children:(0,d.jsxs)(bb.A,{spacing:1.25,children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1.25,alignItems:"flex-start",children:[(0,d.jsx)(i.default,{sx:{display:"grid",placeItems:"center",width:32,height:32,flexShrink:0,borderRadius:2,bgcolor:"primary.main",color:"primary.contrastText",fontWeight:850},children:h+1}),(0,d.jsxs)(i.default,{minWidth:0,flex:1,children:[(0,d.jsx)(j.A,{variant:"subtitle1",fontWeight:850,children:b.label}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",sx:{whiteSpace:"pre-wrap"},children:b.task.replace(/\$\{tool:([^}_]+)__([^}]+)\}/g,(a,b,c)=>`${b} / ${c}`)})]}),m&&(0,d.jsx)(G.default,{size:18})]}),(k||l.length>0||n.length>0)&&(0,d.jsx)(L.A,{}),k&&k.tools.length+k.agents.length>0&&(0,d.jsxs)(bb.A,{direction:"row",spacing:.75,alignItems:"center",children:[(0,d.jsx)(bh.A,{color:"info",fontSize:"small"}),(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,children:e("flows.generator.visualSuggestionsReviewed")})]}),l.length>0&&(0,d.jsx)(bb.A,{direction:"row",gap:.75,flexWrap:"wrap",children:l.map(a=>(0,d.jsx)(et,{decision:a},a.id))}),n.length>0&&(0,d.jsxs)(bb.A,{spacing:.75,children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:800,color:"text.secondary",sx:{textTransform:"uppercase"},children:e("flows.generator.visualNewHelpers")}),n.map(a=>(0,d.jsx)(F.A,{icon:(0,d.jsx)(bo.A,{}),color:"primary",variant:"outlined",label:`${a.name} \xb7 ${e("flows.generator.visualLevel",{count:a.depth})}`,onClick:()=>c(a.id)},a.id))]})]})})]},b.id)}),0===g.steps.length&&(0,d.jsxs)(D.A,{elevation:0,sx:{p:3,border:1,borderStyle:"dashed",borderColor:"divider",borderRadius:3,textAlign:"center"},children:[(0,d.jsx)(G.default,{size:22,sx:{mb:1}}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:e("flows.generator.visualChoosingStep")})]}),(0,d.jsx)(bE,{sx:{alignSelf:"center",color:"text.disabled"}}),(0,d.jsxs)(i.default,{sx:{px:1.5,py:1,borderRadius:2.5,border:1,borderColor:"divider",bgcolor:a=>(0,ah.X4)(a.palette.success.main,.055)},children:[(0,d.jsx)(j.A,{variant:"caption",fontWeight:850,color:"success.main",sx:{textTransform:"uppercase"},children:e("flows.guided.then")}),(0,d.jsx)(j.A,{variant:"body2",fontWeight:700,children:e("flows.guided.sendAnswer")})]}),a.activities.length>0&&(0,d.jsx)(D.A,{elevation:0,sx:{p:1.5,borderRadius:3,bgcolor:"action.hover"},children:(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",children:[b?(0,d.jsx)(G.default,{size:16}):(0,d.jsx)(dU.A,{color:"success",fontSize:"small"}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:a.activities[a.activities.length-1]})]})})]})}),(0,d.jsx)(i.default,{sx:{gridColumn:{xs:"1",md:"1 / -1",lg:"auto"},minWidth:0,minHeight:0,height:"100%",overflow:"hidden"},children:(0,d.jsx)(ev,{preview:h,agentName:g.name})})]})}let ex=(0,M.h)("frontend/components/Flow/FlowManager/GenerateFlowDialog");function ey(a,b){return{id:(0,O.A)(),role:a,content:b,timestamp:Date.now()}}function ez(a){if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return a}}function eA(a,b,c,d){let e=c(b?"flows.generator.updated":"flows.generator.readyNamed",{name:a.flow.name}),f=Math.max(0,a.flows.length-1),g=f?d("flows.generator.helper",f):"",h=a.errorCount+a.warningCount;return[e,g,h?d("flows.generator.review",h):c("flows.generator.readyReview")].filter(Boolean).join(" ")}let eB=({open:a,onClose:b,onGenerated:c})=>{let{settings:f,settingsHydrated:g}=(0,ek.rX)(),{t:h,tp:l}=(0,au.s9)(),o=g&&f?.experimental?.enabled===!0&&!0===f.experimental.flowBasedGenerator,[t,u]=(0,e.useState)([]),[w,x]=(0,e.useState)(""),[y,A]=(0,e.useState)(null),[B,C]=(0,e.useState)([]),[D,E]=(0,e.useState)(null),[G,I]=(0,e.useState)(!1),[J,L]=(0,e.useState)(8),[M,N]=(0,e.useState)(!1),[Q,S]=(0,e.useState)(!1),[T,U]=(0,e.useState)(null),[V,W]=(0,e.useReducer)(ep,en),X=(0,e.useRef)(null);(0,e.useEffect)(()=>{if(!a)return;let b=!1;return R.N.loadModels().then(a=>{b||(u(a),x(b=>a.some(a=>a.id===b)?b:a[0]?.id??""))}).catch(a=>{ex.warn("Failed to load generator models",a),b||U(h("flows.generator.modelsFailed"))}),()=>{b=!0}},[a,h]),(0,e.useEffect)(()=>{a&&(A(null),C([]),E(null),I(!1),L(8),W({type:"reset"}),U(null))},[o,a]);let Y=(0,e.useMemo)(()=>B.filter(a=>("user"===a.role||"assistant"===a.role)&&"string"==typeof a.content&&a.content.trim()).map((a,b)=>({id:"string"==typeof a.id?a.id:`flow-generator-${b}`,role:a.role,content:a.content,timestamp:"number"==typeof a.timestamp?a.timestamp:Date.now()+b,processNodeId:a.processNodeId})),[B]),Z=(0,e.useCallback)(async()=>{if(y)return y;let a=(0,O.A)(),{flow:b}=await eh.O.synthesizeFlowGenerator({conversationId:a,modelId:w,allowInstall:G}),c=Date.now();return await eh.O.createConversation({id:a,title:h("flows.generator.conversationTitle"),flowId:b.id,flowSnapshot:b,createdAt:c,updatedAt:c}),A(a),a},[G,y,w,h]),$=(0,e.useCallback)(async a=>{let b=a.trim();if(!b||M||!w)return;let c=[...B,ey("user",b)];C(c),U(null),N(!0);try{if(o){let a=await Z(),b=await eh.O.completeFlowGeneratorTurn({conversationId:a,messages:c}),d=Array.isArray(b?.messages)?b.messages:c;C(d);let e=function(a){let b=(a,c=0)=>{if(c>6)return null;let d=ez(a);if(!d||"object"!=typeof d)return null;if(d.flow&&Array.isArray(d.flows)&&"string"==typeof d.rootFlowId)return d;if(Array.isArray(d.content))for(let a=d.content.length-1;a>=0;a--){let e=b(d.content[a],c+1);if(e)return e}for(let a of["text","data","result"])if(a in d){let e=b(d[a],c+1);if(e)return e}return null};for(let c=a.length-1;c>=0;c--){let d=b(a[c]?.content);if(d)return d}return null}(d);if(!e)return void U(h("flows.generator.experimentalNoDraft"));let f={flow:e.flow,flows:e.flows,rootFlowId:e.rootFlowId,errorCount:e.validation?.errorCount??0,warningCount:e.validation?.warningCount??0,attempts:d.filter(a=>"user"===a.role).length,installedServers:function(a){let b=new Map,c=(a,d=0)=>{if(d>6)return;let e=ez(a);if(e&&"object"==typeof e)for(let a of(!0===e.installed&&"string"==typeof e.serverName&&Array.isArray(e.tools)&&b.set(e.serverName,{name:e.serverName,tools:e.tools.map(a=>"string"==typeof a?a:a&&"object"==typeof a?String(a.name??""):"").filter(Boolean),alreadyExisted:!0===e.alreadyExisted,..."string"==typeof e.plan?.command?{command:e.plan.command}:{},...Array.isArray(e.plan?.args)?{args:e.plan.args.map(String)}:{},..."string"==typeof e.plan?.verificationStatus?{verificationStatus:e.plan.verificationStatus}:{}}),Object.values(e)))c(a,d+1)};for(let b of a)c(b.content);return[...b.values()]}(d)};E(f),ex.info("Experimental Generation Flow returned a draft",{flowId:f.rootFlowId,flowCount:f.flows.length,errors:f.errorCount,warnings:f.warningCount});return}if(!D){let a=new AbortController;X.current=a,W({type:"session-started",sessionId:"starting",maxDepth:J,message:h("flows.generator.visualStarting")});let d=await ej({description:b,modelId:w,maxDepth:J,allowInstall:G},async a=>{W(a),("agent-created"===a.type||"step-added"===a.type||"suggestion-decision"===a.type)&&await new Promise(a=>window.setTimeout(a,140))},a.signal),e={flow:d.flow,flows:d.flows,rootFlowId:d.rootFlowId,errorCount:d.validation.errorCount,warningCount:d.validation.warningCount,attempts:d.attempts,installedServers:d.installedServers};ex.info("Draft flow generated",{flowId:e.rootFlowId,flowCount:e.flows.length,attempts:e.attempts,errors:e.errorCount,warnings:e.warningCount,installedServers:e.installedServers.length}),E(e),C([...c,ey("assistant",eA(e,!1,h,l))]);return}let a=D.flows.filter(a=>a.id!==D.rootFlowId),d=await P.g.improveFlow(D.flow,b,w,{allowInstall:G,relatedFlows:a});if(!d.success)return void U(d.error);let e={flow:d.flow,flows:d.flows.map(a=>a.flow),rootFlowId:d.rootFlowId,errorCount:d.validation.errorCount,warningCount:d.validation.warningCount,attempts:D.attempts+d.attempts,installedServers:[...D.installedServers,...d.installedServers]};ex.info("Draft flow improved",{flowId:e.rootFlowId,flowCount:e.flows.length,attempts:e.attempts,errors:e.errorCount,warnings:e.warningCount,installedServers:e.installedServers.length}),E(e),C([...c,ey("assistant",eA(e,!0,h,l))])}catch(a){a?.name==="AbortError"?U(h("flows.generator.cancelled")):U(a instanceof Error?a.message:String(a))}finally{X.current=null,N(!1)}},[G,D,o,M,J,w,Z,h,l,B]),_=(0,e.useCallback)(()=>{D&&c(D)},[D,c]),aa=(0,e.useCallback)(async()=>{if(!M&&!Q){S(!0),U(null);try{await eh.O.restoreFlowGenerator(),A(null),C([]),E(null),W({type:"reset"})}catch(a){U(a instanceof Error?a.message:String(a))}finally{S(!1)}}},[Q,M]),ab=(0,e.useCallback)(()=>{M||Q||(A(null),C([]),E(null),I(!1),L(8),W({type:"reset"}),U(null),b())},[Q,M,b]),ac=(0,e.useCallback)(()=>{X.current?.abort()},[]);return(0,d.jsxs)(q.A,{open:a,onClose:ab,maxWidth:!o&&V.started?"xl":"md",fullWidth:!0,slotProps:{paper:{sx:{overflow:"hidden",transition:"max-width 240ms ease, width 240ms ease"}}},children:[(0,d.jsxs)(r.A,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(z,{color:"primary"}),(0,d.jsxs)(i.default,{sx:{flex:1},children:[h("flows.generator.title"),o&&(0,d.jsx)(F.A,{label:h("flows.generator.experimentalChip"),size:"small",color:"warning",variant:"outlined",sx:{ml:1}}),(0,d.jsx)(j.A,{variant:"body2",color:"text.secondary",children:o?h("flows.generator.experimentalDescription"):h("flows.generator.description")})]}),o&&(0,d.jsx)(n.A,{title:h("flows.generator.restore"),children:(0,d.jsx)("span",{children:(0,d.jsx)(m.A,{"aria-label":h("flows.generator.restore"),onClick:()=>{aa()},disabled:M||Q,children:(0,d.jsx)(b7.A,{})})})}),(0,d.jsxs)(i.default,{display:"flex",alignItems:"center",gap:.5,flexShrink:0,children:[(0,d.jsx)(bO.A,{}),(0,d.jsx)(bP.A,{variant:"icon"})]})]}),(0,d.jsxs)(s.A,{dividers:!0,sx:{p:0,overflowX:"hidden"},children:[(0,d.jsxs)(i.default,{sx:{p:2,borderBottom:1,borderColor:"divider"},children:[T&&(0,d.jsx)(p.A,{severity:"error",sx:{mb:1.5},onClose:()=>U(null),children:T}),o&&(0,d.jsx)(p.A,{severity:"warning",sx:{mb:1.5},children:h("flows.generator.experimentalWarning")}),(0,d.jsxs)(i.default,{component:"details",sx:{mt:T||o?1.5:0,border:1,borderColor:"divider",borderRadius:2.5,"&[open]":{p:1.5},"&[open] > summary":{mb:1.5}},children:[(0,d.jsx)(i.default,{component:"summary",sx:{px:1.5,py:1.1,cursor:"pointer",color:"text.secondary",fontSize:"0.86rem",fontWeight:700},children:h("flows.generator.advanced")}),(0,d.jsxs)(bB.A,{size:"small",fullWidth:!0,disabled:M||o&&!!y,children:[(0,d.jsx)(bC.A,{id:"flow-generator-model-label",children:h("flows.generator.model")}),(0,d.jsx)(bD.A,{labelId:"flow-generator-model-label",label:h("flows.generator.model"),value:w,onChange:a=>x(a.target.value),children:t.map(a=>(0,d.jsx)(K.A,{value:a.id,children:a.displayName?.trim()||a.name},a.id))})]}),(0,d.jsx)(H.A,{sx:{mt:1},control:(0,d.jsx)(bK.A,{checked:G,onChange:a=>I(a.target.checked),disabled:M||o&&!!y}),label:h("flows.generator.allowTools")}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",display:"block",children:h("flows.generator.allowToolsHelp")}),!o&&(0,d.jsxs)(i.default,{sx:{mt:2,px:.5},children:[(0,d.jsxs)(bb.A,{direction:"row",justifyContent:"space-between",alignItems:"center",children:[(0,d.jsx)(j.A,{variant:"body2",fontWeight:750,children:h("flows.generator.maxDepth")}),(0,d.jsx)(F.A,{size:"small",color:"primary",variant:"outlined",label:h("flows.generator.levelCount",{count:J})})]}),(0,d.jsx)(ee.Ay,{"aria-label":h("flows.generator.maxDepth"),value:J,min:1,max:8,step:1,marks:!0,valueLabelDisplay:"auto",disabled:M,onChange:(a,b)=>L(Array.isArray(b)?b[0]:b),sx:{mt:.5}}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:h("flows.generator.maxDepthHelp")})]}),G&&(0,d.jsx)(p.A,{severity:"warning",sx:{mt:1},children:h("flows.generator.installWarning")})]})]}),!o&&V.started?(0,d.jsx)(ew,{state:V,working:M,onSelectAgent:a=>W({type:"focus",agentId:a})}):(0,d.jsx)(i.default,{sx:{minHeight:360,maxHeight:"55vh",overflowY:"auto",p:2},children:0===Y.length?(0,d.jsxs)(i.default,{sx:{py:8,textAlign:"center",color:"text.secondary"},children:[(0,d.jsx)(j.A,{variant:"h6",children:h("flows.generator.question")}),(0,d.jsx)(j.A,{variant:"body2",children:h("flows.generator.example")})]}):(0,d.jsx)(eg.Ay,{messages:Y,conversationId:"new-flow-generator",onToggleDisabled:()=>void 0,onSplitConversation:()=>void 0})}),D&&(0,d.jsx)(p.A,{severity:D.errorCount?"warning":"success",sx:{mx:2,mb:1},children:D.errorCount?l("flows.generator.draftAttention",D.errorCount):h("flows.generator.draftReady")}),(0,d.jsxs)(i.default,{sx:{p:1.5,borderTop:1,borderColor:"divider"},children:[(0,d.jsx)(ef.A,{onSendMessage:a=>{$(a)},disabled:M||!w,placeholder:h("flows.generator.placeholder")}),M&&(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:D?h("flows.generator.applying"):o?h("flows.generator.runningExperimental"):h("flows.generator.building")})]})]}),(0,d.jsxs)(v.A,{children:[M&&!o&&(0,d.jsx)(k.A,{color:"warning",onClick:ac,children:h("flows.generator.cancel")}),(0,d.jsx)(k.A,{onClick:ab,disabled:M||Q,children:h("flows.generator.close")}),(0,d.jsx)(k.A,{variant:"contained",onClick:_,disabled:!D||M,startIcon:(0,d.jsx)(z,{}),children:h("flows.generator.continue")})]})]})};var eC=c(24579);let eD=null;var eE=c(8897);(0,M.h)("frontend/hooks/useHistoryGuard");var eF=c(12853),eG=c(22730),eH=c(12558),eI=c(70364);let eJ=(0,w.A)((0,d.jsx)("path",{d:"M10 18h4v-2h-4zM3 6v2h18V6zm3 7h12v-2H6z"}),"FilterList"),eK=(0,w.A)((0,d.jsx)("path",{d:"M3 14h4v-4H3zm0 5h4v-4H3zM3 9h4V5H3zm5 5h13v-4H8zm0 5h13v-4H8zM8 5v4h13V5z"}),"ViewList"),eL=(0,w.A)((0,d.jsx)("path",{d:"M14.67 5v6.5H9.33V5zm1 6.5H21V5h-5.33zm-1 7.5v-6.5H9.33V19zm1-6.5V19H21v-6.5zm-7.34 0H3V19h5.33zm0-1V5H3v6.5z"}),"ViewModule");var eM=c(60685),eN=c(26433),eO=c(37198),eP=c(18169),eQ=c(53526),eR=c(66137),eS=c(58065);let eT=({open:a,flows:b,models:c,modelsLoading:g=!1,onClose:h,onApply:l})=>{let{t:m,tp:n,formatNumber:o}=(0,au.s9)(),[t,w]=(0,e.useState)({}),[x,y]=(0,e.useState)(!1),[z,A]=(0,e.useState)(null),B=(0,e.useMemo)(()=>(function(a,b){let c=new Map(b.map(a=>[a.id,a])),d=new Map;for(let b of a){let a=b.id??b.name??String(d.size);for(let c of b.nodes??[]){let b=c.data?.properties,e=b?.boundModel;if("string"!=typeof e||0===e.length)continue;let f=d.get(e)??{flowIds:new Set,nodeCount:0};f.flowIds.add(a),f.nodeCount+=1,f.cachedName||"string"!=typeof b?.modelName||(f.cachedName=b.modelName),d.set(e,f)}}return Array.from(d,([a,b])=>{let d=c.get(a);return{modelId:a,label:d?.displayName||d?.name||b.cachedName||a,flowCount:b.flowIds.size,nodeCount:b.nodeCount,missing:!d}}).sort((a,b)=>a.label.localeCompare(b.label))})(b,c),[b,c]),C=(0,e.useMemo)(()=>new Map(c.map(a=>[a.id,a])),[c]);(0,e.useEffect)(()=>{a&&(w({}),y(!1),A(null))},[a]);let D=(0,e.useMemo)(()=>{let a={};for(let[b,c]of Object.entries(t)){if(!c||c===b)continue;let d=C.get(c);d&&(a[b]={id:d.id,name:d.name})}return a},[C,t]),E=Object.keys(D).length,H=async()=>{if(0!==E){y(!0),A(null);try{let a=await l(D);if(0===a.updatedFlowCount&&a.failedFlowCount>0)return void A(m("flows.quickModels.applyFailed"));h()}catch(a){A(a instanceof Error?a.message:m("flows.quickModels.applyFailed"))}finally{y(!1)}}};return(0,d.jsxs)(q.A,{open:a,onClose:x?void 0:h,fullWidth:!0,maxWidth:"md",children:[(0,d.jsx)(r.A,{children:m("flows.quickModels.title")}),(0,d.jsxs)(s.A,{dividers:!0,children:[(0,d.jsx)(j.A,{color:"text.secondary",sx:{mb:2},children:m("flows.quickModels.description",{count:o(b.length)})}),z&&(0,d.jsx)(p.A,{severity:"error",sx:{mb:2},children:z}),g?(0,d.jsxs)(bb.A,{alignItems:"center",spacing:1.5,sx:{py:6},children:[(0,d.jsx)(G.default,{size:28}),(0,d.jsx)(j.A,{color:"text.secondary",children:m("flows.quickModels.loading")})]}):0===c.length?(0,d.jsx)(p.A,{severity:"warning",children:m("flows.quickModels.noModels")}):0===B.length?(0,d.jsx)(p.A,{severity:"info",children:m("flows.quickModels.noBindings")}):(0,d.jsxs)(bb.A,{spacing:1.5,children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,d.jsx)(j.A,{variant:"overline",color:"text.secondary",fontWeight:700,sx:{flex:1},children:m("flows.quickModels.currentModels")}),(0,d.jsx)(j.A,{variant:"overline",color:"text.secondary",fontWeight:700,sx:{flex:1},children:m("flows.quickModels.replacements")})]}),B.map((a,b)=>(0,d.jsxs)(f().Fragment,{children:[b>0&&(0,d.jsx)(L.A,{}),(0,d.jsxs)(i.default,{sx:{display:"grid",gridTemplateColumns:{xs:"minmax(0, 1fr)",sm:"minmax(0, 1fr) 44px minmax(0, 1fr)"},gap:1.5,alignItems:"center"},children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:1.25,alignItems:"center",sx:{minWidth:0},children:[(0,d.jsx)(i.default,{sx:{width:40,height:40,borderRadius:2,display:"grid",placeItems:"center",bgcolor:"action.hover",color:a.missing?"warning.main":"primary.main",flex:"0 0 auto"},children:(0,d.jsx)(eS.A,{})}),(0,d.jsxs)(i.default,{sx:{minWidth:0},children:[(0,d.jsxs)(bb.A,{direction:"row",spacing:.75,alignItems:"center",children:[(0,d.jsx)(j.A,{fontWeight:700,noWrap:!0,children:a.label}),a.missing&&(0,d.jsx)(F.A,{size:"small",color:"warning",label:m("flows.quickModels.missing")})]}),(0,d.jsx)(j.A,{variant:"caption",color:"text.secondary",children:m("flows.quickModels.usage",{steps:n("flows.quickModels.stepCount",a.nodeCount),agents:n("flows.quickModels.agentCount",a.flowCount)})})]})]}),(0,d.jsx)(eR.A,{color:"action",sx:{justifySelf:"center",transform:{xs:"rotate(90deg)",sm:"none"}}}),(0,d.jsxs)(u.A,{select:!0,fullWidth:!0,size:"small",label:m("flows.quickModels.chooseReplacement"),value:t[a.modelId]??"",onChange:b=>{let c=b.target.value;w(b=>({...b,[a.modelId]:c}))},children:[(0,d.jsx)(K.A,{value:"",children:(0,d.jsx)("em",{children:m("flows.quickModels.leaveUnchanged")})}),c.filter(b=>b.id!==a.modelId).map(a=>(0,d.jsx)(K.A,{value:a.id,children:a.displayName||a.name},a.id))]})]})]},a.modelId)),(0,d.jsx)(p.A,{severity:E>0?"info":"warning",children:E>0?n("flows.quickModels.ready",E):m("flows.quickModels.chooseAtLeastOne")})]})]}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:h,disabled:x,children:m("common.cancel")}),(0,d.jsx)(k.A,{variant:"contained",onClick:()=>void H(),disabled:x||g||0===E,startIcon:x?(0,d.jsx)(G.default,{size:16,color:"inherit"}):(0,d.jsx)(eS.A,{}),children:x?m("flows.quickModels.applying"):m("flows.quickModels.apply")})]})]})};var eU=c(39066),eV=c(80128),eW=c(57606),eX=c(61407),eY=c(72581),eZ=c(1395),e$=c(30211);let e_=(0,M.h)("components/Flow/FlowDashboard/FlowDashboard");function e0(a,b){return a+Math.round(255*b).toString(16).padStart(2,"0")}let e1=({flows:a,selectedFlow:b,onSelectFlow:c,onDeleteFlow:f,onCopyFlow:g,onEditFlow:l,onOpenInChat:n,onCreateFlow:o,onSetFolder:p,onToggleFavorite:q,onReplaceModels:r,isLoading:s=!1})=>{let{t,tp:v,formatNumber:w}=(0,au.s9)(),[x,z]=(0,e.useState)(""),A=(0,eX.j)(),[B,C]=(0,dW.Io)("flujo-ui:flows:sort","name-asc"),[F,G]=(0,dW.Io)("flujo-ui:flows:view","grid"),[H,I]=(0,e.useState)(null),[M,N]=(0,dW.Io)("flujo-ui:flows:group",eV.FM),[O,P]=(0,e.useState)(null),[Q,R]=(0,e.useState)(!1),[S,T]=(0,e.useState)(new Set),[U,V]=(0,e.useState)(!1),[W,X]=(0,dW.Io)("flujo-ui:flows:collapsed",[]),Y=(0,e.useMemo)(()=>new Set(W),[W]),[Z,$]=(0,e.useState)({}),[_,aa]=(0,e.useState)(!0);(0,e.useEffect)(()=>{let a=!1;return(async()=>{let b={};try{let a=await fetch("/api/model");if(a.ok){let c=await a.json();Array.isArray(c)&&(b.models=c)}}catch(a){e_.warn("Could not load models for flow badges",a)}try{let a=await fetch("/api/mcp/servers");if(a.ok){let c=await a.json();Array.isArray(c)&&(b.servers=c.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})))}}catch(a){e_.warn("Could not load servers for flow badges",a)}a||($(b),aa(!1))})(),()=>{a=!0}},[]),(0,e.useEffect)(()=>{let b=new Set(a.map(a=>a.id));T(a=>{let c=new Set(Array.from(a).filter(a=>b.has(a)));return c.size===a.size?a:c})},[a]);let ab=(0,e.useMemo)(()=>{let b={};for(let c of a)try{b[c.id]=a7(c,Z)}catch(a){e_.warn("Failed to validate flow for badge",{flowId:c.id,error:a})}return b},[a,Z]),ac=(0,h.A)(),ad=(0,E.A)(ac.breakpoints.down("sm")),ae=(0,E.A)(ac.breakpoints.down("md")),af=()=>{I(null)},ag=a=>{C(a),af()},ah=a=>{N(a),P(null)},aj=a=>{T(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},ak=(0,e.useMemo)(()=>{e_.debug("Filtering and sorting flows",{searchTerm:x,sortOption:B});let b=a;if(""!==x.trim()){let c=x.toLowerCase();b=a.filter(a=>a.name.toLowerCase().includes(c))}return(0,eW.NP)(b,B)},[a,x,B]),{ref:al,clusterProps:am}=(0,eZ.QY)("flujo-ui:scroll:flows",{deps:[s,ak.length],groupsEnabled:"none"!==M}),an=(0,e.useMemo)(()=>(0,eV.yF)(a,a=>a.folder),[a]),ao=(0,e.useMemo)(()=>"folder"===M?(0,eV.Je)(ak,a=>a.folder,t("flows.group.ungrouped")):"sort"===M?(0,eV.Az)(ak,a=>{let b=(0,eW.ts)(a,B),c={"recency:unknown":t("flows.group.noDate"),"recency:today":t("flows.group.today"),"recency:week":t("flows.group.week"),"recency:month":t("flows.group.month"),"recency:older":t("flows.group.older"),"nodes:0":t("flows.group.nodes0"),"nodes:1-2":t("flows.group.nodes12"),"nodes:3-5":t("flows.group.nodes35"),"nodes:6-10":t("flows.group.nodes610"),"nodes:11+":t("flows.group.nodes11"),all:t("flows.group.all")};return{...b,label:c[b.key]??b.label}}):[],[M,ak,B,t]),ap="name-asc"===B?t("flows.sort.nameAsc"):"name-desc"===B?t("flows.sort.nameDesc"):"newest"===B?t("flows.sort.newest"):"oldest"===B?t("flows.sort.oldest"):"most-nodes"===B?t("flows.sort.mostSteps"):t("flows.sort.fewestSteps"),aq=a=>(0,d.jsx)(eH.Ay,{container:!0,spacing:2.5,children:a.map(a=>(0,d.jsx)(eH.Ay,{item:!0,xs:12,sm:"compact"===F?12:6,md:"compact"===F?12:3==("compact"===F||ad?1:ae?2:3)?4:6,children:(0,d.jsx)(bx.A,{flow:a,selected:Q?S.has(a.id):b===a.id,onSelect:Q?aj:c,onDelete:f,onCopy:g,onEdit:l,onOpenInChat:n,onSetFolder:p,onToggleFavorite:q,folders:an,validation:ab[a.id],selectionMode:Q})},a.id))});return(0,d.jsxs)(i.default,{sx:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,d.jsx)(D.A,{elevation:1,sx:{mb:2,p:1},children:(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:1,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,d.jsx)(u.A,{placeholder:t("flows.dashboard.search"),variant:"outlined",size:"small",fullWidth:!0,value:x,onChange:a=>{z(a.target.value)},inputRef:A,InputProps:{startAdornment:(0,d.jsx)(ai.A,{position:"start",children:(0,d.jsx)(b8.A,{fontSize:"small"})})},sx:{maxWidth:{sm:300}}}),(0,d.jsxs)(i.default,{sx:{display:"flex",gap:1,alignItems:"center",flexWrap:"wrap"},children:[r&&(Q?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.A,{size:"small",onClick:()=>T(new Set(ak.map(a=>a.id))),children:t("flows.quickModels.selectVisible")}),(0,d.jsx)(k.A,{size:"small",onClick:()=>T(new Set),disabled:0===S.size,children:t("flows.quickModels.clear")}),(0,d.jsx)(k.A,{size:"small",variant:"contained",startIcon:(0,d.jsx)(bp,{}),disabled:0===S.size,onClick:()=>V(!0),children:t("flows.quickModels.changeSelected",{count:w(S.size)})}),(0,d.jsx)(m.A,{size:"small","aria-label":t("flows.quickModels.cancelSelection"),onClick:()=>{R(!1),T(new Set),V(!1)},children:(0,d.jsx)(be.A,{fontSize:"small"})})]}):(0,d.jsx)(k.A,{size:"small",variant:"outlined",startIcon:(0,d.jsx)(bp,{}),disabled:0===a.length||s,onClick:()=>R(!0),children:t("flows.quickModels.start")})),(0,d.jsxs)(i.default,{sx:{display:"flex",backgroundColor:ac.palette.background.default,borderRadius:1,border:`1px solid ${ac.palette.divider}`,overflow:"hidden"},children:[(0,d.jsx)(m.A,{"aria-label":t("flows.dashboard.cards"),size:"small",onClick:()=>G("grid"),color:"grid"===F?"primary":"default",sx:{borderRadius:0,backgroundColor:"grid"===F?e0(ac.palette.primary.main,.1):"transparent"},children:(0,d.jsx)(eL,{fontSize:"small"})}),(0,d.jsx)(m.A,{"aria-label":t("flows.dashboard.compact"),size:"small",onClick:()=>G("compact"),color:"compact"===F?"primary":"default",sx:{borderRadius:0,backgroundColor:"compact"===F?e0(ac.palette.primary.main,.1):"transparent"},children:(0,d.jsx)(eK,{fontSize:"small"})})]}),(0,d.jsx)(m.A,{size:"small",onClick:a=>P(a.currentTarget),color:"none"!==M?"primary":"default",sx:{border:`1px solid ${ac.palette.divider}`,backgroundColor:ac.palette.background.default},title:t("flows.dashboard.groupCards"),"aria-label":t("flows.dashboard.groupAgents"),children:(0,d.jsx)(eO.A,{fontSize:"small"})}),(0,d.jsx)(m.A,{"aria-label":t("flows.dashboard.sortAgents"),size:"small",onClick:a=>{I(a.currentTarget)},sx:{border:`1px solid ${ac.palette.divider}`,backgroundColor:ac.palette.background.default},children:(0,d.jsx)(eI.A,{fontSize:"small"})})]})]})}),(0,d.jsxs)(i.default,{sx:{display:"flex",justifyContent:"space-between",mb:2,px:1},children:[(0,d.jsxs)(j.A,{variant:"body2",color:"textSecondary",children:[v("flows.dashboard.count",a.length,{shown:w(ak.length),total:w(a.length)}),x&&t("flows.dashboard.matching",{search:x})]}),(0,d.jsx)(j.A,{variant:"body2",color:"textSecondary",children:t("flows.dashboard.showing",{sort:ap})})]}),(0,d.jsx)(i.default,{ref:al,sx:{flex:1,overflow:"auto",px:1,pb:2},children:s?(0,d.jsx)(eH.Ay,{container:!0,spacing:2.5,children:Array(6).fill(0).map((a,b)=>(0,d.jsx)(eH.Ay,{item:!0,xs:12,sm:"compact"===F?12:6,md:"compact"===F?12:4,children:(0,d.jsx)(bx.o,{})},`skeleton-${b}`))}):ak.length>0?"none"===M?aq(ak):ao.map(a=>(0,d.jsx)(eU.A,{groupKey:a.key,label:a.label,count:a.items.length,expanded:!Y.has(a.key),onToggle:()=>{var b;return b=a.key,void X(a=>a.includes(b)?a.filter(a=>a!==b):[...a,b])},showFolderIcon:"folder"===M,children:aq(a.items)},a.key)):(0,d.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",p:4,backgroundColor:ac.palette.background.paper,borderRadius:1,border:`1px dashed ${ac.palette.divider}`,height:"100%",minHeight:200},children:[(0,d.jsx)(j.A,{variant:"h6",gutterBottom:!0,color:"textSecondary",children:x?t("flows.dashboard.noMatches"):t("flows.dashboard.empty")}),x?(0,d.jsxs)(j.A,{variant:"body2",color:"textSecondary",align:"center",children:[t("flows.dashboard.noMatchHelp"),(0,d.jsx)(i.default,{component:"span",display:"block",mt:1,children:(0,d.jsx)(e$.A,{message:"flows.dashboard.trySearch",values:{clearAction:(0,d.jsx)(k.A,{size:"small",onClick:()=>z(""),children:t("flows.dashboard.clearSearch")})}})})]}):(0,d.jsxs)(j.A,{variant:"body2",color:"textSecondary",align:"center",children:[t("flows.dashboard.emptyHelp"),o&&(0,d.jsx)(i.default,{component:"span",display:"block",mt:2,children:(0,d.jsx)(k.A,{variant:"contained",color:"primary",startIcon:(0,d.jsx)(y.A,{}),onClick:o,children:t("flows.dashboard.createFirst")})})]})]})}),(0,d.jsxs)(J.A,{anchorEl:O,open:!!O,onClose:()=>P(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,d.jsxs)(K.A,{selected:"none"===M,onClick:()=>ah("none"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eP.A,{fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:t("flows.group.none")})]}),(0,d.jsxs)(K.A,{selected:"folder"===M,onClick:()=>ah("folder"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eQ.A,{fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:t("flows.group.folder")})]}),(0,d.jsxs)(K.A,{selected:"sort"===M,onClick:()=>ah("sort"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eO.A,{fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:t("flows.group.sort")})]})]}),(0,d.jsxs)(J.A,{anchorEl:H,open:!!H,onClose:af,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,d.jsxs)(K.A,{onClick:()=>ag("name-asc"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eM.A,{fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:t("flows.sort.nameAsc")})]}),(0,d.jsxs)(K.A,{onClick:()=>ag("name-desc"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eM.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})}),(0,d.jsx)(aH.A,{primary:t("flows.sort.nameDesc")})]}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(K.A,{onClick:()=>ag("newest"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eN.A,{fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:t("flows.sort.newest")})]}),(0,d.jsxs)(K.A,{onClick:()=>ag("oldest"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eN.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})}),(0,d.jsx)(aH.A,{primary:t("flows.sort.oldest")})]}),(0,d.jsx)(L.A,{}),(0,d.jsxs)(K.A,{onClick:()=>ag("most-nodes"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eJ,{fontSize:"small"})}),(0,d.jsx)(aH.A,{primary:t("flows.sort.mostSteps")})]}),(0,d.jsxs)(K.A,{onClick:()=>ag("least-nodes"),children:[(0,d.jsx)(aG.A,{children:(0,d.jsx)(eJ,{fontSize:"small",sx:{transform:"scaleY(-1)"}})}),(0,d.jsx)(aH.A,{primary:t("flows.sort.fewestSteps")})]})]}),(0,d.jsx)(eY.A,{...am}),r&&(0,d.jsx)(eT,{open:U,flows:a.filter(a=>S.has(a.id)),models:Z.models??[],modelsLoading:_,onClose:()=>V(!1),onApply:async a=>{let b=await r(Array.from(S),a);return(b.updatedFlowCount>0||0===b.failedFlowCount)&&(R(!1),T(new Set)),b}})]})},e2=(0,M.h)("app/flows/page"),e3=()=>{e2.debug("Rendering FlowsPage"),(0,h.A)();let a=(0,g.useRouter)(),b=(0,g.useSearchParams)(),{t:c,tp:f,formatList:w}=(0,au.s9)(),[C,D]=(0,e.useState)([]),[E,F]=(0,e.useState)(null),[G,H]=(0,e.useState)(!0),I="edit"===b.get("mode")&&!!E,J=(0,e.useRef)(!1),K=(0,e.useRef)(null),L=(0,e.useCallback)(b=>{e2.debug("Entering flow editor",{flowId:b}),F(b),J.current=!0,a.push((0,eF.F)({kind:"flow-editor",id:b}))},[a]),[M,N]=(0,e.useState)(null),[Q,R]=(0,e.useState)([]),[S,T]=(0,e.useState)(),[U,V]=(0,e.useState)(!1),W=(0,e.useRef)(!1),X=E?C.find(a=>a.id===E)??(M?.id===E?M:null):null;(0,d3.qz)({scopeId:X?`flow:${X.id}`:"flows:dashboard",pageType:X?"flow":"flows",route:"/flows",title:X?.name??c("flows.page.title"),identifiers:{flowId:X?.id??null},data:X?{flow:X}:{flows:C},capabilities:{notes:X?["The nested Flow Builder adapter replaces this saved snapshot with live unsaved state while the editor is mounted."]:["The dashboard context contains every flow currently shown on screen."]}});let[Y,Z]=(0,e.useState)(!1),[$,_]=(0,e.useState)(null),[aa,ab]=(0,e.useState)(""),[ac,ad]=(0,e.useState)(null),[ae,af]=(0,e.useState)({open:!1,message:"",severity:"info"});(0,e.useEffect)(()=>{e2.info("Loading flows"),(async()=>{H(!0);try{let b=await P.g.loadFlows();e2.debug("Flows loaded successfully",{count:b.length}),D(b),E&&(b.some(a=>a.id===E)||M?.id===E||(e2.warn("Previously selected flow no longer exists",{flowId:E}),F(null),a.replace("/flows"),ak(c("flows.page.previousMissing"),"warning")))}catch(a){e2.error("Error loading flows",a),ak(c("flows.page.loadFailed"),"error")}finally{H(!1)}})()},[E,M,c]);let ag=(0,e.useCallback)(a=>{e2.debug("Flow selected",{flowId:a}),T(void 0),L(a)},[L]),ah=(0,e.useCallback)(b=>{e2.debug("Opening flow in chat",{flowId:b}),a.push(`/chat?flow=${encodeURIComponent(b)}`)},[a]),ai=(0,e.useCallback)(()=>{E&&a.push(`/chat?flow=${encodeURIComponent(E)}`)},[E,a]);(0,eE.R)({param:"flow",ready:!G,exists:a=>C.some(b=>b.id===a),onResolve:ag}),(0,e.useEffect)(()=>{if(!(I&&E))return;let a=a=>{K.current?K.current.requestNavigation(a):a()};return eD=a,()=>{eD===a&&(eD=null)}},[I,E]);let aj=function({active:a,currentUrl:b}){(0,g.useRouter)();let c=(0,e.useRef)(!1);return{suppressNext:(0,e.useCallback)(()=>{c.current=!0},[])}}({active:I&&!!E,currentUrl:E?(0,eF.F)({kind:"flow-editor",id:E}):"/flows"}),ak=(0,e.useCallback)((a,b="info")=>{e2.debug("Showing snackbar",{message:a,severity:b}),af({open:!0,message:a,severity:b})},[]),al=(0,e.useCallback)(()=>{e2.debug("Returning to dashboard");let b=()=>{if(T(void 0),M&&M.id===E){let a=Q.length>0;N(null),R([]),F(null),ak(a?c("flows.page.draftBundleDiscarded"):c("flows.page.draftDiscarded"),"info")}aj.suppressNext(),J.current?(J.current=!1,a.back()):a.replace("/flows")};K.current?K.current.requestNavigation(b):b()},[M,Q,E,ak,c,aj,a]),am=(0,e.useCallback)(()=>{af(a=>({...a,open:!1}))},[]);(0,e.useEffect)(()=>{if(!ae.open||"error"===ae.severity)return;let a=setTimeout(()=>{af(a=>({...a,open:!1}))},6e3);return()=>clearTimeout(a)},[ae.open,ae.message,ae.severity]);let an=(0,e.useCallback)(a=>(e2.debug("Validating flow name",{name:a}),a.trim())?/^[\p{L}\p{N}_ -]+$/u.test(a.trim())?C.some(b=>b.name.trim().toLowerCase()===a.trim().toLowerCase())?(e2.debug("Flow name validation failed: duplicate name"),c("flows.page.nameDuplicate")):(e2.debug("Flow name validation passed"),null):(e2.debug("Flow name validation failed: invalid characters"),c("flows.page.nameCharacters")):(e2.debug("Flow name validation failed: empty name"),c("flows.page.nameEmpty")),[C,c]),ao=async a=>{e2.info("Saving flow",{flowId:a.id,flowName:a.name});try{if(M?.id===a.id&&Q.length>0){for(let a of(e2.info("Persisting generated subflow descendants before the root",{count:Q.length}),Q)){let b=C.some(b=>b.id===a.id)?await P.g.updateFlow(a):await P.g.addFlow(a);if(!b.success)return e2.error("Failed to save a generated subflow",{error:b.error,childId:a.id}),ak(b.error||c("flows.page.saveSubflowFailed"),"error"),!1}D(a=>{let b=new Set(a.map(a=>a.id)),c=Q.filter(a=>!b.has(a.id));return c.length?[...a,...c]:a}),R([])}let b=C.some(b=>b.id===a.id)?await P.g.updateFlow(a):await P.g.addFlow(a);if(!b.success)return e2.error("Failed to save flow",{error:b.error}),ak(b.error||c("flows.page.saveFailed"),"error"),!1;return e2.debug("Flow saved successfully"),D(b=>{let c=b.findIndex(b=>b.id===a.id);if(!(c>=0))return e2.debug("Adding new flow to state"),[...b,a];{e2.debug("Updating existing flow in state");let d=[...b];return d[c]=a,d}}),M?.id===a.id&&N(null),F(a.id),ak(c("flows.page.saved"),"success"),!0}catch(a){return e2.error("Error saving flow",a),ak(c("flows.page.saveFailed"),"error"),!1}},ap=(0,e.useCallback)((a,b)=>{D(c=>[...c.filter(c=>c.id!==a.id&&c.id!==b.id),a,b]),F(a.id),ak(c("flows.page.subflowCreated",{name:b.name}),"success")},[ak,c]),aq=async b=>{e2.info("Deleting flow",{flowId:b});try{await P.g.deleteFlow(b),e2.debug("Flow deleted successfully"),D(a=>a.filter(a=>a.id!==b)),E===b&&(e2.debug("Clearing selected flow as it was deleted"),F(null),a.replace("/flows")),ak(c("flows.page.deleted"),"success")}catch(a){e2.error("Error deleting flow",a),ak(c("flows.page.deleteFailed"),"error")}},ar=(0,e.useCallback)(async(a,b)=>{e2.info("Setting flow folder",{flowId:a,folder:b});let d=C.find(b=>b.id===a);if(!d)return void e2.warn("Flow to move not found",{flowId:a});let e={...d,folder:b&&b.trim()?b.trim():void 0};try{let b=await P.g.updateFlow(e);if(!b.success)return void ak(b.error||c("flows.page.moveFailed"),"error");D(b=>b.map(b=>b.id===a?e:b)),ak(e.folder?c("flows.page.moved",{folder:e.folder}):c("flows.page.removedFolder"),"success")}catch(a){e2.error("Error setting flow folder",a),ak(c("flows.page.moveFailed"),"error")}},[C,ak,c]),as=(0,e.useCallback)(async a=>{e2.info("Toggling flow favorite",{flowId:a});let b=C.find(b=>b.id===a);if(!b)return void e2.warn("Flow to favorite not found",{flowId:a});let d=!b.favorite,e={...b,favorite:d||void 0};try{let b=await P.g.updateFlow(e);if(!b.success)return void ak(b.error||c("flows.page.favoriteFailed"),"error");D(b=>b.map(b=>b.id===a?e:b)),ak(d?c("flows.page.favoriteAdded"):c("flows.page.favoriteRemoved"),"success")}catch(a){e2.error("Error toggling flow favorite",a),ak(c("flows.page.favoriteFailed"),"error")}},[C,ak,c]),at=(0,e.useCallback)(async(a,b)=>{let d=new Set(a),e=C.filter(a=>d.has(a.id)).map(a=>{let c,d;return c=0,d=(a.nodes??[]).map(a=>{let d=a.data?.properties,e=d?.boundModel;if("string"!=typeof e)return a;let f=b[e];return f&&(f.id!==e||d?.modelName!==f.name)?(c+=1,{...a,data:{...a.data,properties:{...d,boundModel:f.id,modelName:f.name}}}):a}),0===c?{flow:a,replacedNodeCount:c}:{flow:{...a,nodes:d},replacedNodeCount:c}}).filter(a=>a.replacedNodeCount>0);if(0===e.length)return{updatedFlowCount:0,replacedNodeCount:0,failedFlowCount:0};let g=await Promise.all(e.map(async a=>({update:a,result:await P.g.updateFlow(a.flow)}))),h=g.filter(({result:a})=>a.success),i=g.filter(({result:a})=>!a.success),j=new Map(h.map(({update:a})=>[a.flow.id,a.flow])),k=h.reduce((a,{update:b})=>a+b.replacedNodeCount,0);return j.size>0&&D(a=>a.map(a=>j.get(a.id)??a)),0===i.length?ak(c("flows.page.modelsChanged",{agents:f("flows.quickModels.agentCount",h.length),steps:f("flows.quickModels.stepCount",k)}),"success"):h.length>0?ak(c("flows.page.modelsChangedPartial",{updated:f("flows.quickModels.agentCount",h.length),failed:f("flows.quickModels.agentCount",i.length)}),"warning"):ak(c("flows.page.modelsChangeFailed"),"error"),{updatedFlowCount:h.length,replacedNodeCount:k,failedFlowCount:i.length}},[C,ak,c,f]),av=a=>{e2.info("Copying flow",{flowId:a});let b=C.find(b=>b.id===a);b?(e2.debug("Found flow to copy",{flowName:b.name}),_(b),ab(c("flows.page.copyName",{name:b.name})),Z(!0)):(e2.warn("Flow to copy not found",{flowId:a}),ak(c("flows.page.notFound"),"error"))},aw=()=>{e2.debug("Closing copy flow dialog"),Z(!1),_(null),ab(""),ad(null)},ax=async()=>{if(e2.info("Confirming flow copy"),!$){e2.warn("No flow to copy"),ak(c("flows.page.noCopySelection"),"error");return}let a=an(aa);if(a){e2.debug("Flow name validation failed",{error:a}),ad(a);return}let b=(0,O.A)();e2.debug("Creating new flow from copy",{newId:b,newName:aa});let d={id:b,name:aa,description:$.description,nodes:$.nodes,edges:$.edges,folder:$.folder,favorite:$.favorite};await ao(d)&&(aw(),e2.debug("Selecting newly copied flow"),T(void 0),L(d.id),ak(c("flows.page.copyCreated",{name:aa}),"success"))},ay=(0,e.useCallback)(a=>{e2.info("Opening generated draft flow",{flowId:a.flow.id,attempts:a.attempts,errors:a.errorCount,warnings:a.warningCount}),V(!1);let b=(a.flows??[]).filter(b=>b.id!==a.rootFlowId);N(a.flow),R(b),T("guided"),L(a.flow.id);let d=a.installedServers?.filter(a=>!a.alreadyExisted)??[],e=d.length>0?c("flows.page.connectedServers",{servers:w(d.map(a=>a.name))}):"",g=[b.length>0?f("flows.page.helper",b.length):"",e].filter(Boolean).join(" ");a.errorCount>0?ak(`${f("flows.page.draftAttention",a.errorCount)}${g?` ${g}`:""}`,"warning"):a.warningCount>0?ak(`${c("flows.page.draftSuggestions")}${g?` ${g}`:""}`,"info"):ak(`${c("flows.page.draftReady")}${g?` ${g}`:""}`,"success")},[ak,c,f,w,L]),az=(0,e.useCallback)((a="guided")=>{e2.info("Creating new flow");let b=c("flows.page.untitled"),d=b,e=2;for(;C.some(a=>a.name===d);)d=`${b} ${e}`,e++;let f=P.g.createNewFlow(d);(0,dW.WL)("flujo-ui:flow-builder:mode",a),T(a),N(f),R([]),L(f.id),ak("advanced"===a?c("flows.page.newExpert"):c("flows.page.newGuided"),"info")},[C,ak,c,L]);return(0,e.useEffect)(()=>{if(!W.current&&!G){if("assistant"!==new URLSearchParams(window.location.search).get("create")){W.current=!0;return}W.current=!0,az("guided")}},[az,G]),(0,d.jsxs)(i.default,{sx:{height:{xs:"auto",md:"calc(100dvh - var(--app-bar-height))"},minHeight:"calc(100dvh - var(--app-bar-height))",display:"flex",flexDirection:"column",overflow:{xs:"visible",md:"hidden"}},children:[(0,d.jsx)(eC.default,{eyebrow:I?c("flows.page.eyebrowMine"):c("flows.page.eyebrowCreate"),icon:A.A,compact:I,title:I&&E?M?.id===E?c("flows.page.draftSuffix",{name:M.name}):C.find(a=>a.id===E)?.name||c("flows.page.agent"):c("flows.page.title"),description:I?c("flows.page.editDescription"):c("flows.page.description"),leading:I&&E?(0,d.jsx)(m.A,{color:"primary",onClick:al,"aria-label":c("flows.page.back"),sx:{border:1,borderColor:"divider"},children:(0,d.jsx)(x,{})}):void 0,actions:I?E&&M?.id!==E?(0,d.jsx)(eG.A,{target:{kind:"flow-editor",id:E}}):void 0:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.A,{title:c("flows.page.aiHelp"),describeChild:!0,children:(0,d.jsx)(k.A,{variant:"contained",color:"primary",startIcon:(0,d.jsx)(z,{}),onClick:()=>V(!0),"data-tour":"generate-flow",children:c("flows.page.createAi")})}),(0,d.jsx)(n.A,{title:c("flows.page.simpleHelp"),describeChild:!0,children:(0,d.jsx)(k.A,{variant:"outlined",color:"primary",startIcon:(0,d.jsx)(y.A,{}),onClick:()=>az("guided"),"data-tour":"new-flow",children:c("flows.page.startSimple")})}),(0,d.jsx)(n.A,{title:c("flows.page.expertHelp"),describeChild:!0,children:(0,d.jsx)(k.A,{variant:"outlined",color:"primary",startIcon:(0,d.jsx)(B.A,{}),onClick:()=>az("advanced"),"data-tour":"new-expert-flow",children:c("flows.page.startExpert")})})]})}),(0,d.jsx)(o.A,{in:ae.open,unmountOnExit:!0,children:(0,d.jsx)(p.A,{severity:ae.severity,onClose:am,sx:{borderRadius:0},children:ae.message})}),(0,d.jsx)(i.default,{sx:{flex:1,minHeight:0,overflow:{xs:"visible",md:"hidden"}},children:(()=>{if(I&&E){let a=C.find(a=>a.id===E)??(M?.id===E?M:void 0);return a?(0,d.jsx)(l.A,{in:!0,timeout:300,children:(0,d.jsx)(i.default,{sx:{height:{xs:"auto",md:"100%"}},children:(0,d.jsx)(ed,{ref:K,initialFlow:a,initialAuthoringMode:S,onSave:ao,onDelete:aq,onConversionCommitted:ap,allFlows:[...C.filter(a=>!Q.some(b=>b.id===a.id)),...Q],relatedDraftFlows:Q,onRelatedDraftFlowsChange:R,isDraft:M?.id===a.id,onTry:ai,onNavigateToFlow:ag},E)})}):(0,d.jsxs)(i.default,{sx:{p:4,textAlign:"center"},children:[(0,d.jsx)(j.A,{variant:"h6",color:"error",children:c("flows.page.notFound")}),(0,d.jsx)(k.A,{variant:"contained",onClick:al,sx:{mt:2},children:c("flows.page.back")})]})}return(0,d.jsx)(l.A,{in:!0,timeout:300,children:(0,d.jsx)(i.default,{sx:{height:{xs:"auto",md:"100%"}},children:(0,d.jsx)(e1,{flows:C,selectedFlow:E,onSelectFlow:ag,onDeleteFlow:aq,onCopyFlow:av,onCreateFlow:()=>az("guided"),onSetFolder:ar,onToggleFavorite:as,onReplaceModels:at,onOpenInChat:ah,isLoading:G})})})})()}),(0,d.jsxs)(q.A,{open:Y,onClose:aw,children:[(0,d.jsx)(r.A,{children:c("flows.page.copyTitle")}),(0,d.jsxs)(s.A,{children:[(0,d.jsx)(t.A,{children:c("flows.page.copyPrompt")}),(0,d.jsx)(u.A,{autoFocus:!0,margin:"dense",label:c("flows.page.nameLabel"),type:"text",fullWidth:!0,value:aa,onChange:a=>{let b=a.target.value;e2.debug("Flow name changed",{name:b}),ab(b),ad(an(b))},error:!!ac,helperText:ac})]}),(0,d.jsxs)(v.A,{children:[(0,d.jsx)(k.A,{onClick:aw,children:c("common.cancel")}),(0,d.jsx)(k.A,{onClick:ax,variant:"contained",color:"primary",disabled:!!ac,children:c("flows.page.copyAction")})]})]}),(0,d.jsx)(eB,{open:U,onClose:()=>V(!1),onGenerated:ay})]})},e4=()=>(0,d.jsx)(e.Suspense,{fallback:null,children:(0,d.jsx)(e3,{})})},76760:a=>{"use strict";a.exports=require("node:path")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},80236:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"C:\\\\Users\\\\Moe\\\\Documents\\\\GitHub\\\\FLUJO\\\\src\\\\app\\\\flows\\\\page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\flows\\page.tsx","default")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,319,4490,3727,437,8458,1269,1990,9345,6024,7393,5409,7911,7476,9050,5851,4340,7927,2839,7506,4222,4998,3184,7912,4291,9253,4779,8767,3761,5434,8601,8981,75,8542,2296,2474,9553],()=>b(b.s=37741));module.exports=c})();