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
@@ -0,0 +1,10 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7401],{16909:(e,t,i)=>{i.d(t,{A:()=>m});var r=i(95155);i(12115);var a=i(66808),o=i(85876),n=i(83793),l=i(64924),s=i(85930),d=i(89852),c=i(71031),p=i(40245),u=i(6310);let m=({open:e,onClose:t,title:i,ariaLabel:m,description:h,maxWidth:x="md",fullScreen:g=!1,autoFocusSearch:f,autoFocusDelayMs:v,...b})=>{let{t:w}=(0,u.s9)(),y=f??e;return(0,r.jsxs)(a.A,{open:e,onClose:t,maxWidth:x,fullWidth:!0,fullScreen:g,PaperProps:m?{"aria-label":m}:void 0,children:[null!=i&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(c.A,{title:i,onClose:t}),(0,r.jsx)(o.A,{})]}),(0,r.jsxs)(n.A,{sx:{p:3},children:[h&&(0,r.jsx)(l.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:h}),(0,r.jsx)(p.A,{...b,autoFocusSearch:y,autoFocusDelayMs:v??120})]}),(0,r.jsx)(s.A,{children:(0,r.jsx)(d.A,{onClick:t,children:w("common.cancel")})})]})}},19800:(e,t,i)=>{i.d(t,{E:()=>c});var r=i(12115),a=i(90015),o=i(29598),n=i(30711),l=i(24111),s=i(72968);let d={models:{defaultSort:"name-asc",sort:(e,t)=>(0,n.CR)(e,t),deriveSortGroup:(e,t)=>(0,n.eZ)(e,t),getFolder:e=>e.folder,getSearchText:e=>`${(0,n.Lg)(e)} ${e.name??""}`},mcp:{defaultSort:"name-asc",sort:(e,t)=>(0,l.oO)(e,t),deriveSortGroup:(e,t)=>(0,l.mO)(e,t),getFolder:e=>e.folder,getSearchText:e=>`${e.name??""} ${e.rootPath??e.path??""}`},flows:{defaultSort:"name-asc",sort:(e,t)=>(0,s.NP)(e,t),deriveSortGroup:(e,t)=>(0,s.ts)(e,t),getFolder:e=>e.folder,getSearchText:e=>e.name??""}};function c(e,t){let i=d[e],[n,l]=(0,r.useState)(""),[s]=(0,a.Io)(`flujo-ui:${e}:sort`,i.defaultSort),[c]=(0,a.Io)(`flujo-ui:${e}:group`,o.FM),[p,u]=(0,a.Io)(`flujo-ui:${e}:collapsed`,[]),m=(0,r.useMemo)(()=>new Set(p),[p]),h=(0,r.useMemo)(()=>{let e=n.trim().toLowerCase(),r=e?t.filter(t=>i.getSearchText(t).toLowerCase().includes(e)):t;return i.sort([...r],s)},[t,n,s,i]),x=(0,r.useMemo)(()=>"folder"===c?(0,o.Je)(h,e=>i.getFolder(e)):"sort"===c?(0,o.Az)(h,e=>i.deriveSortGroup(e,s)):null,[c,h,s,i]);return{searchTerm:n,setSearchTerm:l,sortOption:s,groupMode:c,items:h,groups:x,collapsedKeys:m,toggleGroup:(0,r.useCallback)(e=>{u(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[u])}}},30711:(e,t,i)=>{i.d(t,{CR:()=>s,Lg:()=>o,eZ:()=>l});var r=i(89238),a=i(29598);let o=e=>e.displayName||e.name||"",n=e=>(0,r.T_)(e.provider,e.adapter).label;function l(e,t){switch(t){case"provider":{let t=n(e);return{key:`provider:${t}`,label:t}}case"context-asc":case"context-desc":var i;return"number"!=typeof(i=e.contextWindow)||Number.isNaN(i)?{key:"ctx:unknown",label:"Unknown context"}:i<=8e3?{key:"ctx:<=8k",label:"≤ 8K tokens"}:i<=32e3?{key:"ctx:8k-32k",label:"8K–32K tokens"}:i<=128e3?{key:"ctx:32k-128k",label:"32K–128K tokens"}:i<=1e6?{key:"ctx:128k-1m",label:"128K–1M tokens"}:{key:"ctx:>1m",label:"> 1M tokens"};default:return(0,a.po)(o(e))}}function s(e,t){let i=(e,i)=>{switch(t){case"name-asc":return o(e).localeCompare(o(i));case"name-desc":return o(i).localeCompare(o(e));case"provider":return n(e).localeCompare(n(i))||o(e).localeCompare(o(i));case"context-desc":case"context-asc":{let r="number"!=typeof e.contextWindow||Number.isNaN(e.contextWindow)?void 0:e.contextWindow,a="number"!=typeof i.contextWindow||Number.isNaN(i.contextWindow)?void 0:i.contextWindow;if(void 0===r&&void 0===a)return o(e).localeCompare(o(i));if(void 0===r)return 1;if(void 0===a)return -1;let n="context-desc"===t?a-r:r-a;return 0!==n?n:o(e).localeCompare(o(i))}default:return 0}};return[...e].sort((e,t)=>{let r=Number(!!t.favorite)-Number(!!e.favorite);return 0!==r?r:i(e,t)})}},40245:(e,t,i)=>{i.d(t,{A:()=>f});var r=i(95155),a=i(12115),o=i(26576),n=i(76010),l=i(91216),s=i(45483),d=i(93385),c=i(64924),p=i(83550),u=i(17842),m=i(57643),h=i(43409),x=i(6310);let g={xs:12,sm:6,md:4},f=({isLoading:e=!1,error:t=null,emptyMessage:i,loadingMessage:f,skeleton:v,skeletonCount:b=4,columns:w=g,items:y,searchable:A=!1,searchPlaceholder:k,searchTerm:j,onSearchChange:C,groups:S,collapsedKeys:z,onToggleGroup:I,autoFocusSearch:O,autoFocusDelayMs:M=0,stickySearch:N,searchInputRef:L})=>{let{t:U}=(0,x.s9)(),T=i??U("cardPicker.empty"),P=f??U("common.loading"),$=k??U("common.search"),W={...g,...w},R=N??A,F=(0,h.j)({enabled:O??A,delayMs:M}),B=(0,a.useCallback)(e=>{F.current=e,"function"==typeof L?L(e):L&&(L.current=e)},[F,L]),[D,K]=(0,a.useState)(""),X=void 0!==j,_=X?j:D,[G,E]=(0,a.useState)(new Set),H=z??G,q=e=>(0,r.jsx)(o.Ay,{container:!0,spacing:2,alignItems:"stretch",children:e.map(e=>(0,r.jsx)(o.Ay,{item:!0,xs:W.xs,sm:W.sm,md:W.md,lg:W.lg,sx:{display:"flex"},children:(0,r.jsx)(n.default,{sx:{width:"100%"},children:e.content})},e.key))}),Y=A?(0,r.jsx)(l.A,{placeholder:$,variant:"outlined",size:"small",fullWidth:!0,value:_,onChange:e=>{var t;return t=e.target.value,void(C?.(t),!X&&K(t))},inputRef:B,InputProps:{startAdornment:(0,r.jsx)(s.A,{position:"start",children:(0,r.jsx)(p.A,{fontSize:"small"})})},inputProps:{"aria-label":$}}):null,V=A?(0,r.jsx)(m.A,{mode:"container",disableSticky:!R,sx:{mb:2},children:Y}):null,Z=e=>(0,r.jsxs)(n.default,{children:[V,e]});if(e)return Z(v?(0,r.jsx)(o.Ay,{container:!0,spacing:2,children:Array.from({length:b}).map((e,t)=>(0,r.jsx)(o.Ay,{item:!0,xs:W.xs,sm:W.sm,md:W.md,lg:W.lg,children:v},`skeleton-${t}`))}):(0,r.jsxs)(n.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2},children:[(0,r.jsx)(d.default,{size:20}),(0,r.jsx)(c.A,{variant:"body2",color:"text.secondary",children:P})]}));if(t)return Z((0,r.jsx)(c.A,{color:"error",variant:"body2",sx:{py:2},children:t}));let J=X?"":_.trim().toLowerCase(),Q=e=>!J||(e.searchText??"").toLowerCase().includes(J),ee=(0,r.jsx)(c.A,{variant:"body2",color:"text.secondary",sx:{py:2},children:T});if(S){let e=S.map(e=>({...e,items:e.items.filter(Q)})).filter(e=>e.items.length>0);return Z(0===e.length?ee:(0,r.jsx)(r.Fragment,{children:e.map(e=>(0,r.jsx)(u.A,{label:e.label,count:e.items.length,expanded:!H.has(e.key),onToggle:()=>{var t;return t=e.key,void(I?I(t):E(e=>{let i=new Set(e);return i.has(t)?i.delete(t):i.add(t),i}))},children:q(e.items)},e.key))}))}let et=(y??[]).filter(Q);return Z(0===et.length?ee:q(et))}},67471:(e,t,i)=>{i.d(t,{o:()=>B,A:()=>D});var r=i(95155),a=i(12115),o=i(42131),n=i(99084),l=i(5704),s=i(76010),d=i(37156),c=i(64924),p=i(6302),u=i(40323),m=i(32782),h=i(47667),x=i(83063),g=i(95473),f=i(60294),v=i(89852),b=i(57518),w=i(72133),y=i(18190),A=i(6950),k=i(25279),j=i(43018),C=i(1756),S=i(82300),z=i(19418),I=i(8349),O=i(21129),M=i(81680);function N(e){return String(e?.data?.type??e?.type??"")}function L(e){return e.data?.bidirectional===!0}var U=i(83219),T=i(49103),P=i(6310),$=i(90186);let W=(0,T.h)("components/Flow/FlowDashboard/FlowCard"),R=(0,o.Ay)(n.A,{shouldForwardProp:e=>"selected"!==e})(({theme:e,selected:t})=>({display:"grid",gridTemplateColumns:"minmax(138px, 1.05fr) minmax(0, 0.95fr)",gridTemplateRows:"auto minmax(0, 1fr) auto auto",gridTemplateAreas:`
2
+ "title title"
3
+ "preview details"
4
+ "preview primary"
5
+ "preview footer"
6
+ `,height:"100%",minHeight:286,position:"relative",overflow:"hidden",border:`1px solid ${t?e.palette.primary.main:e.palette.divider}`,boxShadow:t?`0 0 0 3px ${(0,l.X4)(e.palette.primary.main,.14)}, 0 24px 70px ${(0,l.X4)(e.palette.primary.main,.18)}`:`0 16px 45px ${(0,l.X4)(e.palette.common.black,"dark"===e.palette.mode?.18:.07)}`,transition:"transform 220ms cubic-bezier(0.2, 0.75, 0.2, 1), border-color 220ms ease, box-shadow 220ms ease","&:hover":{borderColor:(0,l.X4)(e.palette.primary.main,.42),boxShadow:`0 26px 70px ${(0,l.X4)(e.palette.primary.main,"dark"===e.palette.mode?.16:.12)}`,transform:"translateY(-4px)"},"&::before":{content:'""',position:"absolute",zIndex:2,top:0,left:0,width:"100%",height:t?"3px":"1px",opacity:t?1:.5,background:`linear-gradient(90deg, ${e.palette.primary.main}, ${e.palette.secondary.main}, transparent)`}})),F=(0,o.Ay)(s.default)(({theme:e})=>({gridArea:"preview",flex:1,minWidth:0,height:236,backgroundColor:(0,l.X4)(e.palette.background.default,.82),backgroundImage:`
7
+ linear-gradient(${(0,l.X4)(e.palette.divider,.55)} 1px, transparent 1px),
8
+ linear-gradient(90deg, ${(0,l.X4)(e.palette.divider,.55)} 1px, transparent 1px),
9
+ radial-gradient(circle at 25% 0%, ${(0,l.X4)(e.palette.primary.main,.12)}, transparent 52%)
10
+ `,backgroundSize:"22px 22px, 22px 22px, auto",border:`1px solid ${e.palette.divider}`,borderRadius:14,display:"flex",alignItems:"center",justifyContent:"center",margin:e.spacing(1.25),marginRight:e.spacing(0),overflow:"hidden",position:"relative"})),B=()=>(0,r.jsxs)(n.A,{sx:{height:"100%",minHeight:286,display:"grid",gridTemplateColumns:"minmax(138px, 1.05fr) minmax(0, 0.95fr)",gridTemplateRows:"auto 1fr auto auto"},children:[(0,r.jsx)(s.default,{sx:{gridColumn:"1 / -1",px:1.5,py:1.25,borderBottom:1,borderColor:"divider"},children:(0,r.jsx)(b.A,{variant:"text",width:"55%",height:30})}),(0,r.jsx)(s.default,{sx:{gridColumn:1,gridRow:"2 / 5",p:1.25,pr:0},children:(0,r.jsx)(b.A,{variant:"rounded",height:"100%",sx:{minHeight:220}})}),(0,r.jsxs)(x.A,{sx:{gridColumn:2,gridRow:2,p:1.5},children:[(0,r.jsx)(b.A,{variant:"text"}),(0,r.jsx)(b.A,{variant:"text",width:"85%"}),(0,r.jsxs)(s.default,{sx:{display:"flex",gap:.5,mt:1},children:[(0,r.jsx)(b.A,{variant:"rectangular",width:60,height:20}),(0,r.jsx)(b.A,{variant:"rectangular",width:55,height:20})]})]}),(0,r.jsxs)(f.A,{sx:{gridColumn:2,gridRow:3,px:1.25,pb:1},children:[(0,r.jsx)(b.A,{variant:"rounded",width:"48%",height:30}),(0,r.jsx)(b.A,{variant:"rounded",width:"48%",height:30})]}),(0,r.jsxs)(f.A,{sx:{gridColumn:2,gridRow:4,justifyContent:"flex-end",p:.75,borderTop:1,borderColor:"divider"},children:[(0,r.jsx)(b.A,{variant:"circular",width:28,height:28}),(0,r.jsx)(b.A,{variant:"circular",width:28,height:28}),(0,r.jsx)(b.A,{variant:"circular",width:28,height:28})]})]}),D=({flow:e,selected:t,onSelect:i,onDelete:o,onCopy:n,onEdit:b,onOpenInChat:T,onSetFolder:B,onToggleFavorite:D,folders:K=[],validation:X,pickerMode:_=!1,selectionMode:G=!1})=>{W.debug("Rendering FlowCard",{flowId:e.id,flowName:e.name});let E=(0,d.A)(),{t:H,tp:q,formatNumber:Y}=(0,P.s9)(),[V,Z]=(0,a.useState)(null),J=X?.errorCount??0,Q=X?.warningCount??0,{stepCount:ee,subagentCount:et,signalCount:ei}=function(e){let t=Array.isArray(e.nodes)?e.nodes:[],i=Array.isArray(e.edges)?e.edges:[],r=new Map(t.map(e=>[e.id,e])),a=i.filter(e=>!(0,M.BY)(e)),o=0,n=0,l=0;for(let e of t){let t=N(e);if("process"===t){o+=1;continue}if("signal"===t){let t=e.data?.properties?.topic;"string"==typeof t&&t.trim()&&(l+=1);continue}if("subflow"!==t)continue;let i=a.filter(t=>t.source===e.id||t.target===e.id),s=i.some(t=>{if(!L(t))return!1;let i=t.source===e.id?t.target:t.source;return"process"===N(r.get(i))}),d=i.filter(t=>!L(t)&&t.target===e.id),c=i.filter(t=>!L(t)&&t.source===e.id),p=d.some(e=>c.some(t=>e.source!==t.target));s||1===d.length&&0===c.length?n+=1:p&&(o+=1)}return{stepCount:o,subagentCount:n,signalCount:l}}(e),er=J>0?"error":Q>0?"warning":null,ea=X?(0,r.jsxs)(s.default,{children:[(0,r.jsx)(c.A,{variant:"caption",sx:{fontWeight:600,display:"block",mb:.5},children:J>0?q("flows.card.problem",J):q("flows.card.warning",Q)}),X.issues.slice(0,5).map((e,t)=>(0,r.jsxs)(c.A,{variant:"caption",sx:{display:"block"},children:["• ",(0,$.z)(e,H)]},t)),X.issues.length>5&&(0,r.jsx)(c.A,{variant:"caption",sx:{display:"block",fontStyle:"italic"},children:H("flows.card.more",{count:Y(X.issues.length-5)})})]}):null;return(0,r.jsxs)(R,{selected:t,children:[G&&(0,r.jsx)(p.A,{checked:t,onChange:()=>i(e.id),onClick:e=>e.stopPropagation(),inputProps:{"aria-label":H("flows.card.select",{name:e.name})},sx:{position:"absolute",top:2,left:2,zIndex:3,bgcolor:(0,l.X4)(E.palette.background.paper,.78),borderRadius:1.5}}),D&&!G&&(0,r.jsx)(u.A,{title:e.favorite?H("flows.card.favoriteRemove"):H("flows.card.favoriteAdd"),arrow:!0,placement:"top",children:(0,r.jsx)(m.A,{size:"small",onClick:t=>{t.stopPropagation(),D&&D(e.id)},sx:{position:"absolute",top:4,left:4,zIndex:2,color:e.favorite?E.palette.warning.main:E.palette.text.secondary,backgroundColor:(0,l.X4)(E.palette.background.paper,.6),"&:hover":{backgroundColor:(0,l.X4)(E.palette.background.paper,.9)}},children:e.favorite?(0,r.jsx)(j.A,{fontSize:"small"}):(0,r.jsx)(C.A,{fontSize:"small"})})}),er&&(0,r.jsx)(u.A,{title:ea,arrow:!0,placement:"top",children:(0,r.jsxs)(s.default,{sx:{position:"absolute",top:8,right:8,zIndex:2,display:"flex",alignItems:"center",gap:.5,px:.75,py:.25,borderRadius:1,color:"#fff",backgroundColor:"error"===er?E.palette.error.main:E.palette.warning.main,boxShadow:E.shadows[2],pointerEvents:"auto"},children:["error"===er?(0,r.jsx)(z.A,{sx:{fontSize:16}}):(0,r.jsx)(I.A,{sx:{fontSize:16}}),(0,r.jsx)(c.A,{variant:"caption",sx:{fontWeight:700,lineHeight:1},children:"error"===er?J:Q})]})}),(0,r.jsx)(h.A,{onClick:()=>i(e.id),sx:{gridArea:"title",display:"block",minWidth:0,px:1.5,py:1.25,pl:D||G?5.5:1.5,pr:er?7:1.5,borderBottom:`1px solid ${E.palette.divider}`},children:(0,r.jsx)(c.A,{variant:"h6",component:"div",noWrap:!0,title:e.name,children:e.name})}),(0,r.jsx)(h.A,{onClick:()=>i(e.id),"aria-label":H("flows.card.open",{name:e.name}),sx:{gridArea:"preview",minWidth:0,height:256,display:"flex",alignItems:"stretch"},children:(0,r.jsx)(F,{children:(()=>{if(0===e.nodes.length)return(0,r.jsx)(s.default,{sx:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,r.jsx)(c.A,{color:"textSecondary",align:"center",children:H("flows.card.nothing")})});let t=e.nodes.map(e=>e.position?.x??0),i=e.nodes.map(e=>e.position?.y??0),a=Math.min(...t),o=Math.min(...i),n=Math.max(...t)+180,l=Math.max(...i)+70,d=`${a-40} ${o-40} ${n-a+80} ${l-o+80}`,p=e=>({cx:(e.position?.x??0)+90,cy:(e.position?.y??0)+35});return(0,r.jsx)(s.default,{sx:{width:"100%",height:"100%",p:1},children:(0,r.jsxs)("svg",{width:"100%",height:"100%",viewBox:d,preserveAspectRatio:"xMidYMid meet",style:{display:"block"},children:[e.edges.map((t,i)=>{let a=e.nodes.find(e=>e.id===t.source),o=e.nodes.find(e=>e.id===t.target);if(!a||!o)return null;let n=p(a),l=p(o);return(0,r.jsx)("line",{x1:n.cx,y1:n.cy,x2:l.cx,y2:l.cy,stroke:E.palette.text.secondary,strokeWidth:2,opacity:.5,vectorEffect:"non-scaling-stroke"},t.id||i)}),e.nodes.map(e=>{let t=e.position?.x??0,i=e.position?.y??0,a=e.data?.type??"process",o=(0,O.M6)(a,E);return(0,r.jsxs)("g",{children:[(0,r.jsx)("rect",{x:t,y:i,width:180,height:70,rx:12,fill:o,opacity:.85,stroke:E.palette.background.paper,strokeWidth:2,vectorEffect:"non-scaling-stroke"}),(0,r.jsx)("text",{x:t+90,y:i+35,textAnchor:"middle",dominantBaseline:"central",fill:"#fff",fontSize:35,fontWeight:"bold",children:a.substring(0,1).toUpperCase()})]},e.id)})]})})})()})}),(0,r.jsx)(h.A,{onClick:()=>i(e.id),sx:{gridArea:"details",gridRow:_||G?"2 / 5":void 0,minWidth:0,display:"flex",alignItems:"stretch"},children:(0,r.jsxs)(x.A,{sx:{width:"100%",minWidth:0,p:1.5,"&:last-child":{pb:1.25}},children:[e.description?(0,r.jsx)(u.A,{title:e.description,placement:"bottom-start",children:(0,r.jsx)(c.A,{variant:"body2",color:"text.secondary",sx:{display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden"},children:e.description})}):(0,r.jsx)(c.A,{variant:"body2",color:"text.secondary",sx:{fontStyle:"italic"},children:H("flows.card.noDescription")}),(0,r.jsxs)(s.default,{sx:{display:"flex",gap:.5,mt:1.25,flexWrap:"wrap"},children:[(0,r.jsx)(g.A,{size:"small",label:q("flows.card.step",ee),color:"primary",variant:"outlined",sx:{fontSize:"0.7rem",height:20}}),et>0&&(0,r.jsx)(g.A,{size:"small",label:q("flows.card.subagent",et),color:"secondary",variant:"outlined",sx:{fontSize:"0.7rem",height:20}}),(0,r.jsx)(g.A,{size:"small",label:q("flows.card.signal",ei),variant:"outlined",sx:{fontSize:"0.7rem",height:20}})]})]})}),!_&&!G&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(f.A,{sx:{gridArea:"primary",gap:.75,px:1.25,pb:1,pt:0},children:[T&&(0,r.jsx)(v.A,{size:"small",variant:"contained",startIcon:(0,r.jsx)(S.A,{fontSize:"small"}),onClick:t=>{t.stopPropagation(),T&&T(e.id)},sx:{flex:1,minWidth:0},children:H("flows.card.use")}),(0,r.jsx)(v.A,{size:"small",variant:"outlined",startIcon:(0,r.jsx)(A.A,{fontSize:"small"}),onClick:t=>{t.stopPropagation(),b?b(e.id):i(e.id)},sx:{flex:1,minWidth:0},children:H("flows.card.edit")})]}),(0,r.jsxs)(f.A,{sx:{gridArea:"footer",justifyContent:"flex-end",gap:.25,px:1,py:.625,minHeight:42,borderTop:`1px solid ${E.palette.divider}`,backgroundColor:(0,l.X4)(E.palette.background.default,.55)},children:[n&&(0,r.jsx)(u.A,{title:H("flows.card.copy"),children:(0,r.jsx)(m.A,{size:"small",onClick:t=>{t.stopPropagation(),n&&n(e.id)},"aria-label":H("flows.card.copy"),children:(0,r.jsx)(y.A,{fontSize:"small"})})}),B&&(0,r.jsx)(u.A,{title:e.folder?H("flows.card.folder",{folder:e.folder}):H("flows.card.organize"),children:(0,r.jsx)(m.A,{size:"small",onClick:e=>{e.stopPropagation(),Z(e.currentTarget)},color:e.folder?"primary":"default","aria-label":H("flows.card.move"),children:(0,r.jsx)(k.A,{fontSize:"small"})})}),o&&(0,r.jsx)(u.A,{title:H("flows.card.delete"),children:(0,r.jsx)(m.A,{size:"small",onClick:t=>{t.stopPropagation(),o&&o(e.id)},color:"error","aria-label":H("flows.card.delete"),children:(0,r.jsx)(w.A,{fontSize:"small"})})})]})]}),!_&&B&&(0,r.jsx)(U.A,{anchorEl:V,open:!!V,currentFolder:e.folder,folders:K,onClose:()=>Z(null),onAssign:t=>B(e.id,t)})]})}},72968:(e,t,i)=>{i.d(t,{K:()=>o,NP:()=>s,ts:()=>n});var r=i(29598);function a(e){return e.updatedAt??e.createdAt??0}function o(e,t=Date.now()){if(!e)return{key:"recency:unknown",label:"No date"};let i=t-e;return i<864e5?{key:"recency:today",label:"Today"}:i<6048e5?{key:"recency:week",label:"This week"}:i<2592e6?{key:"recency:month",label:"This month"}:{key:"recency:older",label:"Older"}}function n(e,t){switch(t){case"name-asc":case"name-desc":return(0,r.po)(e.name);case"most-nodes":case"least-nodes":var i;return 0===(i=e.nodes.length)?{key:"nodes:0",label:"0 nodes"}:i<=2?{key:"nodes:1-2",label:"1–2 nodes"}:i<=5?{key:"nodes:3-5",label:"3–5 nodes"}:i<=10?{key:"nodes:6-10",label:"6–10 nodes"}:{key:"nodes:11+",label:"11+ nodes"};case"newest":case"oldest":return o(a(e));default:return{key:"all",label:"All flows"}}}function l(e,t){return e.name.localeCompare(t.name)||e.id.localeCompare(t.id)}function s(e,t){let i=(e,i)=>{switch(t){case"name-asc":return e.name.localeCompare(i.name);case"name-desc":return i.name.localeCompare(e.name);case"most-nodes":return i.nodes.length-e.nodes.length;case"least-nodes":return e.nodes.length-i.nodes.length;case"newest":{let t=a(i)-a(e);return 0!==t?t:l(e,i)}case"oldest":{let t=a(e)-a(i);return 0!==t?t:l(e,i)}default:return 0}};return[...e].sort((e,t)=>{let r=Number(!!t.favorite)-Number(!!e.favorite);return 0!==r?r:i(e,t)})}},81680:(e,t,i)=>{function r(e){return!!e&&e.includes("mcp")}function a(e){return!!e&&e.includes("resource")}function o(e){let t=e?.data?.edgeType;return"mcp"===t||"resource"===t}function n(e,t,i,o){if("trigger"===e&&"start"===i)return t&&"trigger-bottom"!==t?"Trigger nodes must connect via their bottom handle":o&&"start-top"!==o?"Trigger nodes must connect to the top handle of the Start node":null;if("trigger"===i)return"Trigger nodes cannot have incoming connections";if("trigger"===e&&"start"!==i)return"Trigger nodes can only connect to the Start node";if("start"===i)return"Start nodes cannot have incoming connections";if("finish"===e)return"Finish nodes cannot have outgoing connections";if("mcp"===e||"mcp"===i||r(t)||r(o))return("mcp"!==e||"process"!==i)&&("process"!==e||"mcp"!==i)?"MCP connections must link an MCP node to a Process node via MCP handles":"process"!==e||r(t)?null:"Connect MCP nodes from the Process node's left/right MCP handles";if("resource"===e||"resource"===i||a(t)||a(o)){if(("resource"!==e||"process"!==i)&&("process"!==e||"resource"!==i))return"Resource connections must link a Resource node to a Process node via resource handles";if("process"===e&&!a(t))return"Connect Resource nodes from the Process node's left/right resource handles"}return null}function l(e,t){return"mcp"===e&&"process-left-mcp"===t?"mcp-right":"mcp"===e&&"process-right-mcp"===t?"mcp-left":"resource"===e?"resource-in":"process"===e&&a(t)?"process-left-resource":"process"===e&&r(t)?"process-left-mcp":"start"===e?"start-top":`${e}-top`}function s(e,t){if("trigger"===e)return["start"];let i=["process","finish","mcp","subflow","resource","signal","trigger","static"];return e&&t?i.filter(i=>null===n(e,t,i,l(i,t))):i}i.d(t,{BY:()=>o,CW:()=>l,_w:()=>s,vC:()=>n,vM:()=>a,z5:()=>r})},89238:(e,t,i)=>{i.d(t,{T_:()=>d,V0:()=>r,g3:()=>l,xx:()=>s});let r="2024-10-21",a=/(^|[/_-])(o[1-9]|gpt-5)(?:[./_-]|$)/i,o=/claude-(?:fable|mythos)-5|claude-opus-4-(?:[7-9]|\d{2,})|claude-sonnet-5/i,n=/^(?:opus|sonnet|fable)$|claude-(?:fable|mythos)-5|claude-opus-4-(?:[6-9]|\d{2,})|claude-sonnet-4-6/i;function l(e,t,i=""){let r=t||"openai",s=i.trim();if("codex-cli"===r)return{effortLevels:/^gpt-5\.6-(?:sol|terra)$/i.test(s)?["low","medium","high","xhigh","max","ultra"]:/^gpt-5\.6-/i.test(s)?["low","medium","high","xhigh","max"]:["low","medium","high","xhigh"],priority:!/(?:mini|spark|review)/i.test(s),maxOutputTokens:!1};if("claude-cli"===r)return{...n.test(s)?{effortLevels:["low","medium","high","xhigh","max"]}:{},maxOutputTokens:!1};if("anthropic"===r)return{...!o.test(s)?{creativity:{min:0,max:1,step:.1}}:{},...n.test(s)?{effortLevels:["low","medium","high","xhigh","max"]}:{},maxOutputTokens:!0};if("gemini"===r)return{creativity:{min:0,max:2,step:.1},.../^gemini-2\.5/i.test(s)?{thinkingBudget:!0}:!/^gemini-2\.0/i.test(s)?{thinkingLevels:["minimal","low","medium","high"]}:{},maxOutputTokens:!0};let d="openai"===(e||"openai")&&a.test(s);return{...!d?{creativity:{min:0,max:2,step:.1}}:{},...d?{effortLevels:["low","medium","high"]}:{},maxOutputTokens:!0}}let s=[{id:"openai",label:"OpenAI",provider:"openai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0},{id:"openai-responses",label:"OpenAI (Responses API)",provider:"openai",adapter:"openai-responses",sdkLabel:"OpenAI SDK (Responses)",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0,defaultModels:["gpt-5","gpt-5-mini","o4-mini","o3"]},{id:"azure",label:"Azure OpenAI",provider:"azure",adapter:"azure",sdkLabel:"AzureOpenAI SDK",baseUrl:"",showBaseUrl:!0,supportsModelDiscovery:!1,defaultApiVersion:r},{id:"openrouter",label:"OpenRouter",provider:"openrouter",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://openrouter.ai/api/v1",showBaseUrl:!0},{id:"requesty",label:"Requesty",provider:"requesty",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://router.requesty.ai/v1",showBaseUrl:!0},{id:"xai",label:"X.ai",provider:"xai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.x.ai/v1",showBaseUrl:!0},{id:"ollama",label:"Ollama",provider:"ollama",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"http://localhost:11434/v1",showBaseUrl:!0},{id:"litellm",label:"LiteLLM",provider:"litellm",adapter:"openai",sdkLabel:"OpenAI SDK (via LiteLLM Proxy)",baseUrl:"http://localhost:4000/v1",showBaseUrl:!0},{id:"gemini-openai",label:"Gemini (OpenAI Format)",provider:"gemini",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai/",showBaseUrl:!0},{id:"gemini-native",label:"Gemini (Native)",provider:"gemini",adapter:"gemini",sdkLabel:"GenAI SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash"]},{id:"anthropic-openai",label:"Anthropic (OpenAI Format)",provider:"anthropic",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.anthropic.com/v1/",showBaseUrl:!0},{id:"anthropic-native",label:"Anthropic (Native)",provider:"anthropic",adapter:"anthropic",sdkLabel:"Anthropic SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["claude-opus-4-8","claude-sonnet-4-6","claude-haiku-4-5-20251001","claude-fable-5"]},{id:"claude-subscription",label:"Claude Subscription",provider:"claude-subscription",adapter:"claude-cli",sdkLabel:"Claude CLI",baseUrl:"",showBaseUrl:!1,defaultModels:["opus","sonnet","haiku","fable"]},{id:"codex",label:"Codex (OpenAI)",provider:"codex",adapter:"codex-cli",sdkLabel:"Codex SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-5.5","gpt-5.4","gpt-5.4-mini"]}];function d(e,t){let i=e||"openai",r=t||"openai";return s.find(e=>e.provider===i&&e.adapter===r)||s.find(e=>e.provider===i)||s[0]}},90186:(e,t,i)=>{i.d(t,{z:()=>a});let r={"no-start-node":"validation.noStart","multiple-start-nodes":"validation.multipleStart","no-finish-node":"validation.noFinish","process-missing-model":"validation.processNoModel","process-model-missing":"validation.processModelMissing","mcp-missing-server":"validation.mcpNoServer","mcp-server-missing":"validation.serverMissing","mcp-server-disconnected":"validation.serverDisconnected","mcp-node-unconnected":"validation.nodeUnconnected","resource-missing-binding":"validation.resourceIncomplete","resource-run-name":"validation.invalidName","resource-server-missing":"validation.serverMissing","resource-node-unconnected":"validation.nodeUnconnected","resource-produce-static":"validation.staticResourceProduced","resource-multiple-producers":"validation.multipleProducers","resource-consumed-never-produced":"validation.neverProduced","signal-missing-topic":"validation.signalNoTopic","start-no-outgoing":"validation.startNoOutgoing","unreachable-node":"validation.unreachable","subflow-multiple-outgoing":"validation.subflowOneOutgoing","subflow-both-targets":"validation.incompatibleOptions","subflow-map-and-parallel":"validation.incompatibleOptions","subflow-map-no-child":"validation.subflowNoChild","subflow-spawn-no-child":"validation.subflowNoChild","subflow-spawn-and-parallel":"validation.incompatibleOptions","subflow-spawn-and-map":"validation.incompatibleOptions","subflow-parallel-var-name":"validation.invalidName","subflow-map-and-parallel-var":"validation.incompatibleOptions","subflow-parallel-var-uncaptured":"validation.dynamicTargetsMissing","subflow-map-and-caller-fanout":"validation.incompatibleOptions","subflow-concurrency-limit":"validation.concurrency","edge-condition-non-process":"validation.conditionWrongNode","edge-condition-kind":"validation.invalidCondition","edge-condition-value":"validation.invalidCondition","edge-condition-regex":"validation.invalidCondition","edge-condition-no-fallback":"validation.noFallback","capture-var-name":"validation.invalidName","var-ref-uncaptured":"validation.missingReference","capture-kv-name":"validation.invalidName","kv-ref-name":"validation.invalidName","handoff-pill-obsolete":"validation.handoffObsolete","tool-pill-disconnected":"validation.toolDisconnected","tool-unavailable":"validation.toolUnavailable","handoff-target-unreferenced":"validation.handoffUnused","mcp-server-no-tools":"validation.serverNoTools","static-invalid-injectonce":"validation.staticInjectOnce"};function a(e,t){let i=r[e.code];return i?t(i,{node:e.nodeLabel??e.nodeId??""}):e.message}}}]);
@@ -0,0 +1,7 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8457],{609:(e,t,a)=>{"use strict";a.d(t,{A:()=>f});var n=a(95155),r=a(12115),o=a(76010),l=a(64924),s=a(93385),i=a(89852),d=a(79935),c=a(65614),u=a(16909),h=a(67471),p=a(19800),g=a(6310);let f=({selectedFlowId:e,onSelectFlow:t,disabled:a=!1,hideLabel:f=!1,compact:m=!1,fullScreenPicker:x})=>{let{t:b}=(0,g.s9)(),[y,v]=(0,r.useState)([]),[w,A]=(0,r.useState)(!0),[j,k]=(0,r.useState)(null),[S,I]=(0,r.useState)(!1);(0,r.useEffect)(()=>{(async()=>{A(!0),k(null);try{let e=await c.g.loadFlows();v(e)}catch(e){console.error("Error loading flows:",e),k(b("chat.selector.loadFailed"))}finally{A(!1)}})()},[b]);let C=e=>{t(e),I(!1)},$=async e=>{let t=y.find(t=>t.id===e);if(!t)return;let a=!t.favorite,n={...t,favorite:a||void 0};try{(await c.g.updateFlow(n)).success&&v(t=>t.map(t=>t.id===e?n:t))}catch(e){console.error("Error toggling flow favorite:",e)}},z=(0,p.E)("flows",y),M=t=>({key:t.id,content:(0,n.jsx)(h.A,{flow:t,selected:t.id===e,onSelect:C,onToggleFavorite:$,pickerMode:!0})}),E=z.items.map(M),T=z.groups?z.groups.map(e=>({...e,items:e.items.map(M)})):null,N=(()=>{if(!e)return"";let t=y.find(t=>t.id===e);return t?t.name:""})();return(0,n.jsxs)(o.default,{sx:{minWidth:0},children:[!f&&!m&&(0,n.jsx)(l.A,{variant:"subtitle1",gutterBottom:!0,children:b("chat.selector.title")}),w?(0,n.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,n.jsx)(s.default,{size:20}),(0,n.jsx)(l.A,{variant:"body2",color:"text.secondary",children:b("chat.selector.loading")})]}):j?(0,n.jsx)(l.A,{color:"error",variant:"body2",children:j}):0===y.length?(0,n.jsx)(l.A,{variant:"body2",color:"text.secondary",children:b("chat.selector.empty")}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.A,{variant:"outlined",size:m?"small":"medium",startIcon:(0,n.jsx)(d.A,{}),onClick:()=>I(!0),disabled:a,sx:{textTransform:"none",maxWidth:"100%",minWidth:0,...m&&{minHeight:36,px:1.25}},children:(0,n.jsx)(o.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e&&N||b("chat.selector.title")})}),!m&&(0,n.jsx)(l.A,{variant:"caption",color:"text.secondary",display:"block",sx:{mt:.5},children:e?b("chat.selector.using",{agent:N}):b("chat.selector.help")}),(0,n.jsx)(u.A,{open:S,onClose:()=>I(!1),fullScreen:x??m,title:b("chat.selector.title"),description:b("chat.selector.dialogHelp"),skeleton:(0,n.jsx)(h.o,{}),emptyMessage:b("chat.selector.empty"),searchable:!0,searchPlaceholder:b("flows.dashboard.search"),searchTerm:z.searchTerm,onSearchChange:z.setSearchTerm,items:E,groups:T,collapsedKeys:z.collapsedKeys,onToggleGroup:z.toggleGroup})]})]})}},13658:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(95155),r=a(12115);let o=(0,a(49103).h)("frontend/components/ClientOnly");function l({children:e}){let[t,a]=(0,r.useState)(!1);return((0,r.useEffect)(()=>(o.debug("ClientOnly component mounted"),a(!0),()=>{o.debug("ClientOnly component unmounted")}),[]),t)?(o.debug("ClientOnly component rendering children"),(0,n.jsx)(n.Fragment,{children:e})):(o.debug("ClientOnly component rendering null (not yet mounted)"),null)}},24111:(e,t,a)=>{"use strict";a.d(t,{mO:()=>o,oO:()=>l});var n=a(29598);let r=["stdio","websocket","sse","streamable"];function o(e,t){switch(t){case"name-asc":case"name-desc":return(0,n.po)(e.name);case"status-connected":case"status-disconnected":{let t=e.status;if("connected"===t)return{key:"status:connected",label:"Connected"};if("error"===t)return{key:"status:error",label:"Error"};if("requires_authentication"===t)return{key:"status:auth",label:"Requires authentication"};return{key:"status:disconnected",label:"Disconnected"}}case"transport":{let t=e.transport||"unknown";return{key:`transport:${t}`,label:({stdio:"Stdio",websocket:"WebSocket",sse:"SSE",streamable:"Streamable HTTP"})[t]||t}}default:return{key:"all",label:"All servers"}}}function l(e,t){let a=(e,a)=>{switch(t){case"name-asc":return e.name.localeCompare(a.name);case"name-desc":return a.name.localeCompare(e.name);case"status-connected":if("connected"===e.status&&"connected"!==a.status)return -1;if("connected"!==e.status&&"connected"===a.status)return 1;return e.name.localeCompare(a.name);case"status-disconnected":if("disconnected"===e.status&&"disconnected"!==a.status)return -1;if("disconnected"!==e.status&&"disconnected"===a.status)return 1;return e.name.localeCompare(a.name);case"transport":{let t=r.indexOf(e.transport??""),n=r.indexOf(a.transport??"");if(t!==n)return t-n;return e.name.localeCompare(a.name)}default:return 0}};return[...e].sort((e,t)=>{let n=Number(!!t.favorite)-Number(!!e.favorite);return 0!==n?n:a(e,t)})}},79415:(e,t,a)=>{Promise.resolve().then(a.bind(a,87653))},87653:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>nl});var n=a(95155),r=a(12115),o=a(32020),l=a(73321),s=a(44469),i=a(76010),d=a(89852),c=a(93385),u=a(72636),h=a(64924),p=a(40323),g=a(32782),f=a(12502),m=a(91216),x=a(95473),b=a(51048),y=a(49414),v=a(66808),w=a(25404),A=a(83793),j=a(69288),k=a(85930),S=a(37156),I=a(4061),C=a(74786),$=a(66301);let z=["top","up","bottom"];var M=a(2501),E=a(99637),T=a(56358),N=a(19418),R=a(95462),D=a(73032),O=a(30537),P=a(45941),F=a(6950),W=a(97533),_=a(79935),q=a(81163),H=a(17776),B=a(61041),L=a(23598),U=a(16079),K=a(82150),X=a(7880),J=a(6438),V=a(85876),G=a(45483),Y=a(87696),Q=a(1507),Z=a(61281),ee=a(61775),et=a(78674),ea=a(72133),en=a(82325),er=a(83550),eo=a(59035),el=a(47863),es=a(78487),ei=a(76628),ed=a(97131),ec=a(47208),eu=a(63514),eh=a(39612),ep=a(68263),eg=a(10600),ef=a(33801),em=a(21223),ex=a(82998),eb=a(18298),ey=a(89848),ev=a(38065),ew=a(33228),eA=a(46508);function ej(e){return"string"==typeof e&&e.startsWith("quickchat-")}a(77483);var ek=a(62510),eS=a(72968),eI=a(29598);let eC="wave:__adhoc__",e$="wave:__archived__";var ez=a(90015),eM=a(5704),eE=a(6310);function eT({nodes:e,childrenByParent:t,renderItem:a,expanded:r,onToggle:o,depth:l=0,visited:s,maxDepth:d=20,parent:c}){let{t:u}=(0,eE.s9)(),f=(0,S.A)();if(!e||0===e.length||l>d)return null;let m=s??new Set;return(0,n.jsx)(n.Fragment,{children:e.map((s,x)=>{if(m.has(s.id))return null;let b=t.get(s.id)??[],y=b.length>0&&l<d,v=!1!==r[s.id],w=new Set(m);w.add(s.id);let A=x===e.length-1,j=(0,eM.X4)(f.palette.primary.main,"dark"===f.palette.mode?.5:.34);return(0,n.jsxs)(i.default,{"data-tree-depth":l,sx:{position:"relative",pl:3.25*(l>0),...l>0?{"&::before":{content:'""',position:"absolute",left:12,top:0,bottom:A?"calc(100% - 31px)":0,borderLeft:`2px solid ${j}`},"&::after":{content:'""',position:"absolute",left:12,top:30,width:14,borderTop:`2px solid ${j}`,borderTopLeftRadius:6}}:{}},children:[l>0&&c&&(0,n.jsx)(p.A,{title:u("chat.chain.childOf",{title:c.title}),children:(0,n.jsxs)(h.A,{variant:"caption",color:"text.secondary",noWrap:!0,sx:{display:"block",ml:4.25,mb:.15,maxWidth:"calc(100% - 40px)",fontWeight:650},children:["↳ ",u("chat.chain.childOf",{title:c.title})]})}),(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"flex-start"},children:[y?(0,n.jsx)(g.A,{size:"small",onClick:()=>o(s.id),"aria-label":v?u("chat.chain.collapse"):u("chat.chain.expand"),sx:{mt:.5,flexShrink:0,zIndex:1,border:"1px solid",borderColor:j,bgcolor:"background.paper","&:hover":{bgcolor:"action.hover"}},children:v?(0,n.jsx)(es.A,{fontSize:"small"}):(0,n.jsx)(el.A,{fontSize:"small"})}):(0,n.jsx)(i.default,{sx:{width:34,flexShrink:0}}),(0,n.jsx)(i.default,{sx:{flex:1,minWidth:0},children:a(s,l)})]}),y&&(0,n.jsx)(ee.A,{in:v,timeout:"auto",unmountOnExit:!0,children:(0,n.jsx)(eT,{nodes:b,childrenByParent:t,renderItem:a,expanded:r,onToggle:o,depth:l+1,visited:w,maxDepth:d,parent:s})})]},s.id)})})}var eN=a(89228),eR=a(94370);let eD={chat:{label:"User chat",description:"Started interactively from the chat workspace"},api:{label:"API",description:"Started through the chat completions API"},schedule:{label:"Automation",description:"Started by a planned execution or automation trigger"},trigger:{label:"Trigger",description:"Started by an unattended runtime trigger"},subflow:{label:"Subagent",description:"Spawned as a subagent by another conversation"},mcp:{label:"MCP run",description:"Started through FLUJO's MCP interface"},internal:{label:"Internal",description:"Started by an internal FLUJO tool"},meeting:{label:"Meeting",description:"Participated in a multi-flow meeting"},unknown:{label:"Unknown origin",description:"Origin metadata was not recorded for this older conversation"}};function eO(e,t){return{key:e,...eD[e],inferred:t}}function eP(e){return e.source&&e.source in eD?eO(e.source,!1):e.parentConversationId?eO("subflow",!0):e.plannedExecutionId?eO("schedule",!0):eO("unknown",!0)}var eF=a(94111),eW=a(18540),e_=a(57643),eq=a(43409);let eH=["all","running","awaiting_tool_approval","paused_debug","completed","error"],eB=["all","today","7d","30d"],eL=["none","date","flow","origin","wave","chain"],eU=["all","chat","schedule","subflow","meeting"],eK={chat:B.A,api:ep.A,schedule:ec.A,trigger:eh.A,subflow:eu.A,mcp:eg.A,internal:ef.A,meeting:em.A,unknown:ex.A},eX=r.memo(({conversations:e,totalConversations:t=e.length,hasMoreConversations:a=!1,isLoadingMore:o=!1,onLoadMore:l,onLoadAll:s,currentConversationId:u,revealRequest:f=null,onSelectConversation:b,onDeleteConversation:y,onBulkDelete:I,onStopConversation:C,onNewConversation:$,onQuickChat:z,onCollapse:E,collapsed:T=!1,flowNames:N={}})=>{let{t:D,tp:O,formatDate:F}=(0,eE.s9)(),W=(0,S.A)(),{visualStyle:_}=(0,eR.useTheme)(),q="modern"===_,[H,B]=r.useState(""),L=(0,eq.j)(),[U,ec]=r.useState({open:!1,ids:[],label:""}),[eu,eh]=r.useState(!1),[ep,eg]=r.useState(null),[ef,em]=r.useState({open:!1,parent:null,descendantIds:[],lookupFailed:!1}),[ex,eD]=(0,ez.Io)("flujo-ui:chat-sidebar:search-dim","title"),[eO,eX]=r.useState(null),[eJ,eV]=r.useState(!1),[eG,eY]=r.useState(!1),[eQ,eZ]=r.useState(null),e0=r.useRef(null),[e1,e2]=(0,ez.Io)("flujo-ui:chat-sidebar:group","none"),[e5,e4]=(0,ez.Io)("flujo-ui:chat-sidebar:status","all"),[e6,e3]=(0,ez.Io)("flujo-ui:chat-sidebar:flow","all"),[e8,e7]=(0,ez.Io)("flujo-ui:chat-sidebar:date","all"),[e9,te]=(0,ez.Io)("flujo-ui:chat-sidebar:origin","all"),[tt,ta]=(0,ez.Io)("flujo-ui:chat-sidebar:filters-open",!1),[tn,tr]=(0,ez.Io)("flujo-ui:chat-sidebar:collapsed",{}),to=H.trim(),tl=`${ex}\u0000${e9}\u0000${to}`,ts=to.length>0&&eO?.key===tl?eO:null,ti=to.length>0?ts?.items??[]:e,[td,tc]=r.useState(null),tu=(0,r.useMemo)(()=>ti.map(e=>`${e.id}:${e.plannedExecutionId??""}`).join("\0"),[ti]);r.useEffect(()=>{if("wave"!==e1)return;let e=!1;return fetch("/api/waves").then(e=>e.ok?e.json():null).then(t=>{!e&&t&&tc(t)}).catch(()=>{}),()=>{e=!0}},[e1,tu]);let th=(0,r.useMemo)(()=>(function(e){let t=new Map;if(!e?.waves)return t;for(let a of e.waves){let e=a.rootExecutionIds?.[0],n=e&&a.nodes.find(t=>t.executionId===e)||a.nodes[0],r=n?.name||n?.flowName||a.id;for(let e of a.nodes)t.set(e.executionId,{waveId:a.id,label:r})}return t})(td),[td]);r.useEffect(()=>{if(0===to.length){e0.current?.abort(),e0.current=null,eX(null),eZ(null),eV(!1),eY(!1);return}let e=`${ex}\u0000${e9}\u0000${to}`,t=new AbortController;e0.current?.abort(),e0.current=t,eX(null),eZ(null),eV(!0),eY(!1);let a=setTimeout(()=>{eW.O.listConversationPage({limit:50,search:to,dimension:ex,..."all"!==e9?{origin:e9}:{},signal:t.signal}).then(a=>{t.signal.aborted||eX({key:e,...a})}).catch(a=>{t.signal.aborted||a?.name==="AbortError"||(eX({key:e,items:[],total:0,hasMore:!1}),eZ(e))}).finally(()=>{e0.current!==t||t.signal.aborted||eV(!1)})},300);return()=>{clearTimeout(a),t.abort(),e0.current===t&&(e0.current=null)}},[to,ex,e9]);let tp=r.useCallback(async()=>{let e=e0.current;if(ts?.hasMore&&ts.nextCursor&&e&&!e.signal.aborted&&!eG){eY(!0),eZ(null);try{let t=await eW.O.listConversationPage({limit:50,cursor:ts.nextCursor,search:to,dimension:ex,..."all"!==e9?{origin:e9}:{},signal:e.signal});if(e.signal.aborted)return;eX(e=>{if(!e||e.key!==tl)return e;let a=new Set(e.items.map(e=>e.id)),n=t.items.filter(e=>!a.has(e.id));return{key:tl,...t,items:[...e.items,...n]}})}catch(t){if(e.signal.aborted||t?.name==="AbortError")return;eZ(tl)}finally{e0.current!==e||e.signal.aborted||eY(!1)}}},[ts,eG,e9,ex,tl,to]),tg=r.useCallback(e=>D(`chat.origin.${e}`),[D]),tf=r.useCallback(e=>D(`chat.origin.description.${e}`),[D]),tm=r.useCallback(e=>"all"===e?D("chat.history.anyOrigin"):"subflow"===e?D("chat.history.originSubflow"):tg(e),[tg,D]),tx=r.useCallback(e=>e?ej(e)?{key:"flow:__quickchat__",label:D("chat.quick.title")}:{key:`flow:${e}`,label:N[e]??D("chat.history.unknownAgent")}:{key:"flow:__none__",label:D("chat.history.noAgent")},[N,D]),tb=(0,r.useMemo)(()=>{let e=new Map;for(let t of ti){let a=tx(t.flowId);e.has(a.key)||e.set(a.key,a.label)}return Array.from(e.entries()).map(([e,t])=>({key:e,label:t})).sort((e,t)=>e.label.localeCompare(t.label))},[ti,tx]),ty=r.useCallback(e=>{let t=Date.now(),a="today"===e8?t-864e5:"7d"===e8?t-6048e5:"30d"===e8?t-2592e6:0;return e.filter(e=>("all"===e5||e.status===e5)&&("all"===e6||tx(e.flowId).key===e6)&&("all"===e9||eP(e).key===e9)&&(!a||!(e.updatedAt<a))).sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt))},[e5,e6,e9,e8,tx]),tv=(0,r.useMemo)(()=>ty(ti),[ty,ti]),tw=(0,r.useMemo)(()=>{if("none"===e1)return[{key:"all",label:"",items:tv}];if("wave"===e1){var e;let t;return(e=(0,eI.Az)(tv,e=>(function(e,t){if(!e)return{key:eC,label:"Ad-hoc"};let a=t.get(e);return a?{key:`wave:${a.waveId}`,label:a.label}:{key:e$,label:"Archived / no longer scheduled"}})(e.plannedExecutionId,th)),t=new Set([eC,e$]),[...e.filter(e=>!t.has(e.key)),...e.filter(e=>t.has(e.key))]).map(e=>({...e,label:"wave:__adhoc__"===e.key?D("chat.group.adhoc"):"wave:__archived__"===e.key?D("chat.group.archived"):e.label}))}return(0,eI.Az)(tv,e=>{if("date"===e1){let t=(0,eS.K)(e.updatedAt),a={"recency:unknown":D("flows.group.noDate"),"recency:today":D("flows.group.today"),"recency:week":D("flows.group.week"),"recency:month":D("flows.group.month"),"recency:older":D("flows.group.older")};return{...t,label:a[t.key]??t.label}}if("origin"===e1){let t=eP(e);return{key:`origin:${t.key}`,label:tg(t.key)}}return tx(e.flowId)})},[tv,e1,tx,th,tg,D]),tA=(0,r.useMemo)(()=>"chain"===e1?(0,eN.C)(tv):{roots:[],childrenByParent:new Map,detachedIds:new Set},[e1,tv]),[tj,tk]=r.useState({}),tS=r.useCallback(e=>{tk(t=>({...t,[e]:!1===t[e]}))},[]),tI=(0,r.useMemo)(()=>{let e=new Map;if("wave"!==e1)return e;for(let t of tw)e.set(t.key,(0,eN.C)(t.items));return e},[e1,tw]),tC=(0,r.useMemo)(()=>{let e=new Set;return"chain"===e1?tA.childrenByParent.forEach((t,a)=>e.add(a)):"wave"===e1&&tI.forEach(t=>{t.childrenByParent.forEach((t,a)=>e.add(a))}),[...e]},[tA,e1,tI]),t$=r.useCallback(e=>{tk(t=>{let a={...t};return tC.forEach(t=>{a[t]=e}),a}),"wave"===e1&&tr(t=>{let a={...t};return tw.forEach(t=>{a[t.key]=!e}),a})},[tC,e1,tw,tr]),tz="chain"===e1&&tC.length>0||"wave"===e1&&tw.length>0,tM=r.useRef(null),tE=r.useRef(null),tT=r.useRef(null),tN=r.useRef(0),[tR,tD]=r.useState(0);r.useEffect(()=>{if(!f)return;let{id:e,requestKey:t}=f;if(tE.current===t||e!==u||(tT.current!==t&&(tT.current=t,tN.current=0),!tv.some(t=>t.id===e)))return;let a="none"!==e1&&"chain"!==e1?tw.find(t=>t.items.some(t=>t.id===e)):void 0;if(a&&tn[a.key])return void tr(e=>e[a.key]?{...e,[a.key]:!1}:e);let n="chain"===e1?tA:a?tI.get(a.key):void 0;if(n){let t=new Map;for(let[e,a]of n.childrenByParent)for(let n of a)t.set(n.id,e);let a=[],r=new Set([e]),o=t.get(e);for(;o&&!r.has(o);)r.add(o),!1===tj[o]&&a.push(o),o=t.get(o);if(a.length>0)return void tk(e=>{let t={...e};for(let e of a)t[e]=!0;return t})}let r=window.requestAnimationFrame(()=>{let a=tM.current?Array.from(tM.current.querySelectorAll("[data-conversation-id]")).find(t=>t.getAttribute("data-conversation-id")===e):void 0;if(a){tE.current=t,a.scrollIntoView({block:"nearest",behavior:"auto"});return}if(tN.current+=1,tN.current>=10){tE.current=t;return}tD(e=>e+1)});return()=>window.cancelAnimationFrame(r)},[f,u,tv,tw,e1,tn,tr,tA,tI,tj,tR]);let tO=+("all"!==e5)+ +("all"!==e6)+ +("all"!==e9)+ +("all"!==e8),tP=tO+ +("none"!==e1),tF=(e,t)=>{let a,r,o=t?.detached===!0,l=!!C&&("running"===e.status||"awaiting_tool_approval"===e.status),s=tx(e.flowId),d="flow:__quickchat__"===s.key,f=e.id===u,m=eP(e),y=tg(m.key),v=tf(m.key),w=eK[m.key],A=function(e,t){switch(e){case"subflow":return t.palette.warning.main;case"schedule":case"trigger":return eF.L.light.signal;case"mcp":return t.palette.info.main;case"meeting":return t.palette.secondary.main;default:return t.palette.primary.main}}(m.key,W),j=function(e,t){switch(e){case"running":return t.palette.primary.main;case"awaiting_tool_approval":return t.palette.warning.main;case"paused_debug":return t.palette.secondary.main;case"completed":return t.palette.success.main;case"capped":return t.palette.info.main;case"error":return t.palette.error.main;default:return t.palette.text.disabled}}(e.status,W),k=f?"dark"===W.palette.mode?.38:.3:"dark"===W.palette.mode?.3:.23;return(0,n.jsx)(K.Ay,{"data-conversation-id":e.id,"data-conversation-origin":m.key,disablePadding:!0,secondaryAction:(0,n.jsxs)(i.default,{className:"conversation-card-actions",sx:q?{display:"flex",zIndex:2,gap:.25,opacity:+!!f,transition:"opacity 160ms ease",bgcolor:(0,eM.X4)(W.palette.background.paper,.72),borderRadius:2,backdropFilter:"blur(12px)","& .MuiIconButton-root":{width:30,height:30}}:{display:"flex"},children:[l&&(0,n.jsx)(p.A,{title:D("chat.history.stop"),children:(0,n.jsx)(g.A,{edge:"end",size:"small","aria-label":D("chat.history.stop"),onClick:t=>{t.stopPropagation(),C(e.id)},children:(0,n.jsx)(R.A,{color:"error",fontSize:"small"})})}),(0,n.jsx)(ek.A,{target:{kind:"conversation",id:e.id}}),(0,n.jsx)(p.A,{title:D("chat.history.delete"),children:(0,n.jsx)(g.A,{edge:"end",size:"small","aria-label":D("chat.history.delete"),disabled:ep===e.id,onClick:t=>{t.stopPropagation(),tL(e)},children:ep===e.id?(0,n.jsx)(c.default,{size:16}):(0,n.jsx)(ea.A,{fontSize:"small"})})})]}),sx:q?{position:"relative",mb:.9,border:"1px solid",borderColor:f?(0,eM.X4)(A,.68):(0,eM.X4)(A,.32),borderRadius:2.5,overflow:"hidden",opacity:1,bgcolor:(0,eM.X4)(W.palette.background.paper,"dark"===W.palette.mode?.72:.82),backgroundImage:(a=(0,eM.X4)(A,k),r=(0,eM.X4)(j,k),`linear-gradient(90deg, ${a} 0%, ${a} 90%, ${r} 90%, ${r} 100%)`),boxShadow:f?`0 10px 30px ${(0,eM.X4)(A,.24)}`:`0 5px 20px ${(0,eM.X4)(A,"dark"===W.palette.mode?.12:.08)}`,transition:"transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease","&::before":{content:'""',position:"absolute",inset:"10px auto 10px 0",width:f?4:3,borderRadius:"0 4px 4px 0",bgcolor:A},"&::after":{content:'""',position:"absolute",zIndex:0,top:0,bottom:0,left:"90%",width:1,bgcolor:(0,eM.X4)(j,.5),pointerEvents:"none"},"&:hover":{transform:"translateY(-1px)",borderColor:(0,eM.X4)(A,.58),boxShadow:`0 10px 28px ${(0,eM.X4)(A,"dark"===W.palette.mode?.2:.14)}`,"& .conversation-card-actions":{opacity:1}},"&:focus-within .conversation-card-actions":{opacity:1},"@media (hover: none)":{"& .conversation-card-actions":{opacity:1}},"& > .MuiListItemSecondaryAction-root":{zIndex:2}}:{opacity:f?1:.7,"& > .MuiListItemSecondaryAction-root":{zIndex:2}},children:(0,n.jsx)(X.A,{selected:f,onClick:()=>b(e.id),"aria-label":D("chat.history.openAria",{title:e.title,origin:y,status:(e=>{switch(e){case"running":return D("chat.status.processing");case"awaiting_tool_approval":return D("chat.status.waitingTooltip");case"paused_debug":return D("chat.status.pausedTooltip");case"completed":return D("chat.status.completed");case"capped":return D("chat.status.capped");case"error":return D("chat.status.error");default:return""}})(e.status)||D("chat.history.unknown")}),sx:{position:"relative",zIndex:1,pr:l?12:7,px:q?1.5:2,py:q?1.25:1,alignItems:"flex-start",borderRadius:"inherit","&.Mui-selected":{bgcolor:"transparent"},"&.Mui-selected:hover":{bgcolor:(0,eM.X4)(W.palette.primary.main,.04)}},children:(0,n.jsx)(J.A,{sx:{my:0,minWidth:0},primary:(0,n.jsx)(i.default,{sx:{display:"flex",alignItems:"center"},children:(0,n.jsx)(p.A,{title:e.title,enterDelay:500,children:(0,n.jsx)(h.A,{component:"span",fontWeight:f?760:q?650:"normal",sx:{display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",wordBreak:"break-word",fontSize:q?"0.9rem":void 0,lineHeight:q?1.35:void 0},children:e.title})})}),secondary:(0,n.jsxs)(i.default,{component:"span",sx:{display:"flex",alignItems:"center",gap:.75,mt:.8,flexWrap:"wrap"},children:["origin"!==e1&&(0,n.jsx)(p.A,{title:`${v}${m.inferred?` (${D("chat.history.inferred")})`:""}`,children:(0,n.jsx)(x.A,{icon:(0,n.jsx)(w,{}),label:y,size:"small",variant:"outlined",sx:{height:q?22:20,color:q?A:void 0,borderColor:q?(0,eM.X4)(A,.72):void 0,bgcolor:q?(0,eM.X4)(A,.13):void 0,"& .MuiChip-icon":{fontSize:14,color:q?A:void 0},"& .MuiChip-label":{px:.75,fontSize:"0.68rem",fontWeight:q?700:500}}})}),o&&(0,n.jsx)(p.A,{title:D("chat.chain.detachedHelp"),children:(0,n.jsx)(x.A,{icon:(0,n.jsx)(ey.A,{}),label:D("chat.chain.detached"),size:"small",variant:"outlined",sx:{height:q?22:20,color:W.palette.text.secondary,borderColor:(0,eM.X4)(W.palette.text.secondary,.45),borderStyle:"dashed","& .MuiChip-icon":{fontSize:14,color:W.palette.text.secondary},"& .MuiChip-label":{px:.75,fontSize:"0.68rem",fontWeight:q?700:500}}})}),"flow"!==e1&&(0,n.jsx)(p.A,{title:d?D("chat.history.quickNoAgent"):D("chat.history.agentNamed",{agent:s.label}),children:(0,n.jsx)(x.A,{icon:d?(0,n.jsx)(M.A,{}):void 0,label:s.label,size:"small",variant:"outlined",color:d?"secondary":"default",sx:{maxWidth:"100%",height:q?22:20,"& .MuiChip-icon":{fontSize:14},"& .MuiChip-label":{px:.75,fontSize:"0.68rem"}}})}),(0,n.jsxs)(i.default,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:.35,ml:"auto"},children:[q&&(0,n.jsx)(eb.A,{"aria-hidden":"true",sx:{fontSize:13,color:"text.disabled"}}),(0,n.jsx)(h.A,{component:"span",variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:F(e.updatedAt,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]})]}),secondaryTypographyProps:{component:"div"}})})},e.id)},tW=to.length>0,t_=eQ===tl,tq=tW&&!ts&&!t_,tH=tW?ts?.total??0:t,tB=tv.length,tL=async n=>{if(ep)return;eg(n.id);let r=new Set(function(e,t){let a=new Map;for(let t of e){let e=t.parentConversationId;if(!e||e===t.id)continue;let n=a.get(e)??[];n.push(t.id),a.set(e,n)}let n=new Set,r=[...a.get(t)??[]];for(;r.length>0;){let e=r.pop();e===t||n.has(e)||(n.add(e),r.push(...a.get(e)??[]))}return[...n]}(Array.from(new Map([...e,...ti].map(e=>[e.id,e])).values()),n.id)),o=!a&&e.length>=t;try{o||(await eW.O.listAllConversationPages({descendantsOf:n.id})).forEach(e=>r.add(e.id));let e=[...r];if(0===e.length)return void y(n.id);em({open:!0,parent:n,descendantIds:e,lookupFailed:!1})}catch{em({open:!0,parent:n,descendantIds:[...r],lookupFailed:!0})}finally{eg(null)}},tU=async()=>{eh(!0);try{let t=s?await s():e;ec({open:!0,ids:t.map(e=>e.id),label:O("chat.history.deleteAllQuestion",t.length)})}finally{eh(!1)}},tK=async()=>{eh(!0);try{let t=tW?await eW.O.listAllConversationPages({search:to,dimension:ex,..."all"!==e9?{origin:e9}:{}}):s?await s():e,a=ty(t);ec({open:!0,ids:a.map(e=>e.id),label:O("chat.history.deleteVisibleQuestion",a.length)})}finally{eh(!1)}};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(i.default,{sx:{p:q?2:1.5,display:"flex",justifyContent:"space-between",alignItems:"center",gap:q?1:.7,background:q?`linear-gradient(135deg, ${(0,eM.X4)(W.palette.primary.main,.14)}, ${(0,eM.X4)(W.palette.secondary.main,.05)} 58%, transparent)`:"linear-gradient(120deg, rgba(139,124,255,.09), transparent 62%)"},children:[E&&(0,n.jsx)(p.A,{title:T?D("chat.history.expand"):D("chat.history.collapse"),children:(0,n.jsx)(g.A,{size:"small",onClick:E,"aria-label":T?D("chat.history.expand"):D("chat.history.collapse"),children:(0,n.jsx)(P.A,{})})}),(0,n.jsxs)(i.default,{sx:{flex:1,minWidth:0},children:[(0,n.jsx)(h.A,{variant:"caption",sx:{display:"block",color:"primary.light",fontWeight:760,letterSpacing:".1em"},children:D("chat.history.agentRuns")}),(0,n.jsx)(h.A,{variant:"h6",noWrap:!0,children:D("chat.history.title")})]}),t>0&&(0,n.jsx)(p.A,{title:D("chat.history.deleteAll"),children:(0,n.jsx)("span",{children:(0,n.jsx)(g.A,{size:"small",color:"error","aria-label":D("chat.history.deleteAll"),disabled:eu,onClick:()=>void tU(),children:(0,n.jsx)(ei.A,{fontSize:"small"})})})}),tv.length>0&&(tW||tO>0)&&(0,n.jsx)(p.A,{title:D("chat.history.deleteVisible"),children:(0,n.jsx)("span",{children:(0,n.jsx)(g.A,{size:"small",color:"error","aria-label":D("chat.history.deleteVisible"),disabled:eu,onClick:()=>void tK(),children:(0,n.jsx)(ed.A,{fontSize:"small"})})})}),z&&(0,n.jsx)(p.A,{title:D("chat.history.quickHelp"),children:(0,n.jsx)(d.A,{variant:"outlined",color:"primary",startIcon:(0,n.jsx)(M.A,{}),onClick:z,size:"small",children:D("chat.history.quick")})}),(0,n.jsx)(d.A,{variant:"contained",color:"primary",startIcon:(0,n.jsx)(en.A,{}),onClick:$,size:"small",children:D("chat.history.new")})]}),(0,n.jsx)(V.A,{}),(0,n.jsxs)(i.default,{sx:{px:1.5,pt:1.5,pb:1.2,display:"flex",flexDirection:"column",gap:1,bgcolor:q?(0,eM.X4)(W.palette.background.paper,.22):"rgba(127,127,160,.035)"},children:[(0,n.jsx)(e_.A,{mode:"container",children:(0,n.jsxs)(i.default,{sx:{display:"flex",gap:1},children:[(0,n.jsx)(m.A,{size:"small",sx:{flex:1},inputRef:L,placeholder:"content"===ex?D("chat.history.searchContent"):D("chat.history.searchTitle"),value:H,onChange:e=>B(e.target.value),InputProps:{startAdornment:(0,n.jsx)(G.A,{position:"start",children:(0,n.jsx)(er.A,{fontSize:"small"})}),endAdornment:H||eJ?(0,n.jsxs)(G.A,{position:"end",children:[eJ&&(0,n.jsx)(c.default,{size:16,"aria-label":D("chat.history.searching")}),H&&(0,n.jsx)(g.A,{size:"small","aria-label":D("chat.history.clearSearch"),onClick:()=>B(""),children:(0,n.jsx)(eo.A,{fontSize:"small"})})]}):void 0}}),(0,n.jsx)(Y.A,{size:"small",sx:{minWidth:100},children:(0,n.jsxs)(Q.A,{value:ex,onChange:e=>eD(e.target.value),inputProps:{"aria-label":D("chat.history.searchDimension")},children:[(0,n.jsx)(Z.A,{value:"title",children:D("chat.history.searchTitleOption")}),(0,n.jsx)(Z.A,{value:"content",children:D("chat.history.searchContentOption")})]})})]})}),(0,n.jsxs)(d.A,{size:"small",color:"inherit",startIcon:(0,n.jsx)(ev.A,{}),endIcon:tt?(0,n.jsx)(es.A,{}):(0,n.jsx)(el.A,{}),"aria-expanded":tt,"aria-controls":"chat-sidebar-filter-controls",onClick:()=>ta(e=>!e),sx:{alignSelf:"stretch",justifyContent:"flex-start",color:"text.secondary"},children:[D("chat.history.filters"),tP>0&&(0,n.jsx)(x.A,{label:tP,size:"small",color:"primary",sx:{ml:1,height:20,"& .MuiChip-label":{px:.75}}})]}),(0,n.jsx)(ee.A,{in:tt,timeout:"auto",children:(0,n.jsxs)(i.default,{id:"chat-sidebar-filter-controls",sx:{display:"flex",flexWrap:"wrap",gap:1},children:[(0,n.jsx)(Y.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,n.jsx)(Q.A,{value:e1,onChange:e=>e2(e.target.value),inputProps:{"aria-label":D("chat.history.groupAria")},children:eL.map(e=>(0,n.jsx)(Z.A,{value:e,children:{none:D("chat.group.none"),date:D("chat.group.date"),flow:D("chat.group.agent"),origin:D("chat.group.origin"),wave:D("chat.group.wave"),chain:D("chat.group.chain")}[e]},e))})}),(0,n.jsx)(Y.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,n.jsx)(Q.A,{value:e5,onChange:e=>e4(e.target.value),inputProps:{"aria-label":D("chat.history.filterStatus")},children:eH.map(e=>(0,n.jsx)(Z.A,{value:e,children:{all:D("chat.status.any"),running:D("chat.status.processing"),awaiting_tool_approval:D("chat.status.awaiting"),paused_debug:D("chat.status.paused"),completed:D("chat.status.completed"),capped:D("chat.status.capped"),error:D("chat.status.error")}[e]},e))})}),(0,n.jsx)(Y.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,n.jsxs)(Q.A,{value:tb.some(e=>e.key===e6)?e6:"all",onChange:e=>e3(e.target.value),inputProps:{"aria-label":D("chat.history.filterAgent")},children:[(0,n.jsx)(Z.A,{value:"all",children:D("chat.history.anyAgent")}),tb.map(e=>(0,n.jsx)(Z.A,{value:e.key,children:e.label},e.key))]})}),(0,n.jsx)(Y.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,n.jsx)(Q.A,{value:e9,onChange:e=>te(e.target.value),inputProps:{"aria-label":D("chat.history.filterOrigin")},children:eU.map(e=>(0,n.jsx)(Z.A,{value:e,children:tm(e)},e))})}),(0,n.jsx)(Y.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,n.jsx)(Q.A,{value:e8,onChange:e=>e7(e.target.value),inputProps:{"aria-label":D("chat.history.filterDate")},children:eB.map(e=>(0,n.jsx)(Z.A,{value:e,children:{all:D("chat.date.any"),today:D("chat.date.day"),"7d":D("chat.date.week"),"30d":D("chat.date.month")}[e]},e))})})]})}),(tW||tO>0)&&(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)(h.A,{variant:"caption",color:"text.secondary",children:tq||eJ?D("chat.history.searching"):t_?D("chat.history.searchFailed"):D("chat.history.matchCount",{shown:tB,total:tH})}),(0,n.jsx)(d.A,{size:"small",onClick:()=>{B(""),e4("all"),e3("all"),te("all"),e7("all")},children:D("chat.history.clearFilters")})]})]}),(0,n.jsx)(V.A,{}),tz&&(0,n.jsxs)(i.default,{sx:{px:1.5,py:.75,display:"flex",alignItems:"center",justifyContent:"space-between",gap:1,bgcolor:(0,eM.X4)(W.palette.primary.main,q?.055:.025)},children:[(0,n.jsx)(h.A,{variant:"caption",color:"text.secondary",sx:{fontWeight:700},children:D("chat.chain.hierarchy")}),(0,n.jsxs)(i.default,{sx:{display:"flex",gap:.5},children:[(0,n.jsx)(d.A,{size:"small",startIcon:(0,n.jsx)(ew.A,{}),onClick:()=>t$(!0),children:D("chat.chain.expandAll")}),(0,n.jsx)(d.A,{size:"small",startIcon:(0,n.jsx)(eA.A,{}),onClick:()=>t$(!1),children:D("chat.chain.collapseAll")})]})]}),(0,n.jsxs)(et.A,{ref:tM,"aria-label":D("chat.history.title"),"aria-busy":tq||eJ||eG,sx:{overflow:"auto",flex:1,px:q?1.25:1,py:q?1.5:1,scrollbarGutter:"stable"},children:[tq||eJ?(0,n.jsxs)(K.Ay,{sx:{justifyContent:"center",gap:1,py:3},children:[(0,n.jsx)(c.default,{size:18}),(0,n.jsx)(h.A,{variant:"body2",color:"text.secondary",children:D("chat.history.searching")})]}):t_&&0===ti.length?(0,n.jsx)(K.Ay,{children:(0,n.jsx)(J.A,{primary:D("chat.history.searchFailed"),secondary:D("chat.history.searchFailedHelp"),primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}):tW||0!==tH?0===tB?(0,n.jsx)(K.Ay,{children:(0,n.jsx)(J.A,{primary:D("chat.history.noMatch"),secondary:D("chat.history.noMatchHelp"),primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}):"chain"===e1?(0,n.jsx)(eT,{nodes:tA.roots,childrenByParent:tA.childrenByParent,renderItem:e=>tF(e,{detached:tA.detachedIds.has(e.id)}),expanded:tj,onToggle:tS}):"none"===e1?tv.map(e=>tF(e)):tw.map(e=>{let t=!!tn[e.key],a="wave"===e1?tI.get(e.key):void 0;return(0,n.jsxs)(i.default,{children:[(0,n.jsxs)(X.A,{onClick:()=>{var t;return t=e.key,void tr(e=>({...e,[t]:!e[t]}))},sx:{py:.5,bgcolor:"action.hover"},children:[t?(0,n.jsx)(el.A,{fontSize:"small"}):(0,n.jsx)(es.A,{fontSize:"small"}),(0,n.jsx)(h.A,{variant:"overline",sx:{ml:.5,flex:1,lineHeight:1.6},noWrap:!0,children:e.label}),(0,n.jsx)(x.A,{label:e.items.length,size:"small",sx:{height:18,"& .MuiChip-label":{px:.75,fontSize:"0.7rem"}}})]}),(0,n.jsx)(ee.A,{in:!t,timeout:"auto",unmountOnExit:!0,children:a?(0,n.jsx)(eT,{nodes:a.roots,childrenByParent:a.childrenByParent,renderItem:e=>tF(e,{detached:a.detachedIds.has(e.id)}),expanded:tj,onToggle:tS}):e.items.map(e=>tF(e))})]},e.key)}):(0,n.jsx)(K.Ay,{children:(0,n.jsx)(J.A,{primary:D("chat.history.empty"),secondary:D("chat.history.emptyHelp"),primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}),tW&&ts?.hasMore&&(0,n.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",py:1.5},children:(0,n.jsx)(d.A,{size:"small",variant:"outlined",disabled:eG,startIcon:eG?(0,n.jsx)(c.default,{size:14}):void 0,onClick:()=>void tp(),children:D("chat.history.loadMore")})}),!tW&&a&&l&&(0,n.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",py:1.5},children:(0,n.jsx)(d.A,{size:"small",variant:"outlined",disabled:o,startIcon:o?(0,n.jsx)(c.default,{size:14}):void 0,onClick:()=>void l(),children:D("chat.history.loadMore")})})]}),(0,n.jsxs)(v.A,{open:ef.open,onClose:()=>em(e=>({...e,open:!1})),"aria-labelledby":"delete-family-dialog-title",children:[(0,n.jsx)(w.A,{id:"delete-family-dialog-title",children:D("chat.history.deleteFamilyTitle")}),(0,n.jsx)(A.A,{children:(0,n.jsx)(j.A,{children:ef.lookupFailed?D("chat.history.deleteFamilyLookupFailed"):D("chat.history.deleteFamilyQuestion",{title:ef.parent?.title??"",count:ef.descendantIds.length})})}),(0,n.jsxs)(k.A,{children:[(0,n.jsx)(d.A,{onClick:()=>em(e=>({...e,open:!1})),children:D("common.cancel")}),!ef.lookupFailed&&ef.parent&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(d.A,{color:"error",onClick:()=>{let e=ef.parent.id;em(e=>({...e,open:!1})),y(e)},children:D("chat.history.deleteParentOnly")}),(0,n.jsx)(d.A,{variant:"contained",color:"error",onClick:()=>{let e=[ef.parent.id,...ef.descendantIds];em(e=>({...e,open:!1})),I(e)},children:D("chat.history.deleteFamilyAction",{count:ef.descendantIds.length})})]})]})]}),(0,n.jsxs)(v.A,{open:U.open,onClose:()=>ec(e=>({...e,open:!1})),"aria-labelledby":"bulk-delete-dialog-title",children:[(0,n.jsx)(w.A,{id:"bulk-delete-dialog-title",children:D("chat.history.confirmDelete")}),(0,n.jsx)(A.A,{children:(0,n.jsxs)(j.A,{children:[U.label," ",D("chat.history.cannotUndo")]})}),(0,n.jsxs)(k.A,{children:[(0,n.jsx)(d.A,{onClick:()=>ec(e=>({...e,open:!1})),children:D("common.cancel")}),(0,n.jsx)(d.A,{color:"error",onClick:async()=>{ec(e=>({...e,open:!1})),await I(U.ids)},autoFocus:!0,children:D("chat.history.deleteAction")})]})]})]})});var eJ=a(46455),eV=a(55601),eG=a(47186),eY=a(94437),eQ=a(15147);function eZ(e,t){if(!(t in e))return e;let a={...e};return delete a[t],a}function e0(e,t,a){let n=e[t]??[],r=n.filter(e=>e.id!==a);if(r.length===n.length)return e;let o={...e};return r.length>0?o[t]=r:delete o[t],o}var e1=a(81326),e2=a(82360),e5=a(44683);let e4={byIndex:{}};function e6(e,t,a){for(let n=0;n<t;n++)e[n]||(e[n]={laneIndex:n,laneCount:t,label:`Lane ${n+1}/${t}`,status:"pending",lastEventAt:a})}let e3=["the moon janitor","a time-hopping intern","three union pigeons","the office wizard","a skeptical goldfish","the museum ghost","an off-duty oracle","the last polite pirate","a raccoon committee","the cryptid expert","a calm astronaut","the royal beekeeper","the lighthouse cat","a future detective","the backup dragon","a jetpack accountant","the submarine butler","a retired villain","the support goose","a help-desk knight","an imaginary conductor","an archaeology intern","the weather crow","a receipt philosopher"],e8=["the moon ladder","a diplomatic sock","the royal stapler","an indoor umbrella","the lunch compass","a warm snow globe","the last teaspoon","a fictional map","the folding napkin","a jar of thunder","the Wi-Fi wand","a lawyered sandwich","the spare sun","a jar of silence","the haunted printer","a load-bearing baguette","the tiny drawbridge","the wrong key","the inflatable anvil","a prophecy coupon","the reverse telescope","classified confetti","the nervous pendulum","a pocket volcano"],e7=["on the Moon","at the seafloor post office","at the Bermuda gift shop","at the Wi-Fi castle","behind the second attic","at North Pole support","on platform nine-ish","beside a black hole","inside the mood library","under the cloud","in the office kitchen","inside spreadsheet forest","at volcano reception","behind the old clock","in Lost Luggage","on the snack balcony","in the shallow moat","at the desert hotel","inside the failed museum","in lab number two","at tomorrow station","inside dragon training","on Tuesday Island","past the supply closet"],e9=["sorting moon rocks","looking for lunch","testing the fire alarm","folding space-time","counting invisible sheep","polishing the eclipse","fixing yesterday","mapping the snack drawer","questioning the compass","training the pigeons","debugging the horoscope","watering plastic plants","auditing the pirates","rewinding the sundial","interviewing a shadow","filing dragon taxes","calibrating breakfast","alphabetizing fog","measuring gossip","rehearsing the alibi","charging the crystal ball","untangling gravity","translating whale mail","backing up the Moon"],te=["fold a fitted sheet","whistle in binary","park a gondola","alphabetize fog","moonwalk quietly","invoice a dragon","juggle theories","read the room","argue with a door","brew orbital tea","translate sarcasm","defeat a sundial","smuggle daylight","assemble a prophecy","locate north","interview tomorrow","budget on a unicycle","write in zero gravity","herd digital cats","repair a metaphor","land a paper plane","greet the abyss","exit a time loop","explain medieval taxes"],tt=["the Moon’s back door","Wednesday’s location","gravity’s fine print","the missing socks","the Morse-code plant","the speakerphone echo","the pigeon payroll","the painted horizon","the absent staircase","Tuesday’s sequel","the Gary compass","the second ocean","the dramatic copier","tomorrow’s mail","the extra five minutes","the licensed ghost","the reviewed treasure map","the hungry plot hole","the sorted stars","the sighing elevator","the thunder receipts","the lunch eclipse","the freelance mirror","the exit to 1843"],ta=["a bent paperclip","a rubber chicken","the good magnifier","one brave teaspoon","a future abacus","a cat laser","an accordion","a dishonest ruler","a memo compass","the royal whisk","a pocket sundial","two magnets","a Latin wrench","the tiny hammer","tenured tape","a crystal ball","a haunted slide rule","the backup kazoo","a gloomy spirit level","the left telescope","a stern clipboard","emergency string","a weather vane","the manual page"],tn=["the eclipse rehearsal","emergency teatime","the gravity inspection","the office moon landing","the password ceremony","yesterday’s reopening","the hiding finals","the underwater fire drill","the time-traveler meeting","the lighthouse picnic","the backup launch","the horizon retirement","the expedition talent show","bring-your-ghost night","Coincidence Day","Small Ben’s unveiling","the silent concert","the endless ribbon-cutting","the volcano open house","breakfast rehearsal","the maritime spelling bee","the ancient Wi-Fi demo","the alibi parade","the surprise-party audit"],tr=["the inspector walks in","the inventor denies it","the footnote calls","the lights blink in Morse","tomorrow asks for help","the witness appears","the smoke alarm passes","the prophecy arrives","every clock coughs","the fire drill gets real","the squirrels object","the Moon calls back","the red lever starts counting","the alibi walks past","next door repeats it","the backup plan resigns","the weather apologizes","the map says “you first”","the missing page falls out","Coincidence Day is canceled","the goose takes charge","the empty box takes notes","a comet arrives early","the narrator gets fired"],to=["the goose approves","the timeline objects","the manual shrugs","lunch takes priority","the pigeons demand credit","the chart looks worried","the calendar resigns","history asks for a redo","the printer applauds","gravity clocks out","the map denies everything","the ghost files a claim","the budget grows a moat","the experiment gets renewed","the floor adds a door","the ducks peer-review it","management calls it tradition","confetti is deployed","the loop requests closure","a plaque is ordered","physics grants an exception","the cupboard applauds","the conclusion needs edits","the universe closes the ticket"],tl=(e,t)=>({count:e.reduce((e,t)=>e*t.length,1),render:a=>{let n=a,r=e.map(e=>{let t=e[n%e.length];return n=Math.floor(n/e.length),t});return`${t(...r)}…`}}),ts=e=>`${e[0].toUpperCase()}${e.slice(1)}`,ti=[tl([e3,te],(e,t)=>`Teaching ${e} to ${t}`),tl([e8,e7],(e,t)=>`Finding ${e} ${t}`),tl([e9,to],(e,t)=>`${ts(e)}; ${t}`),tl([tt,ta],(e,t)=>`Solving ${e} with ${t}`),tl([e8,ta],(e,t)=>`Repairing ${e} with ${t}`),tl([tn,e3],(e,t)=>`Rehearsing ${e} with ${t}`),tl([e3,e9],(e,t)=>`Helping ${e} finish ${t}`),tl([e8,to],(e,t)=>`Showing off ${e}; ${t}`),tl([tt,e7],(e,t)=>`Investigating ${e} ${t}`),tl([te,ta],(e,t)=>`Trying to ${e} with ${t}`),tl([e8,tr],(e,t)=>`Hiding ${e} just as ${t}`),tl([tn,tr],(e,t)=>`Starting ${e} as ${t}`),tl([e3,e8],(e,t)=>`${ts(e)} arrives carrying ${t}`),tl([e9,tr],(e,t)=>`While ${e}, ${t}`),tl([tt,e3],(e,t)=>`Discovering ${e}; ${t} takes credit`),tl([e8,to],(e,t)=>`Testing ${e}; ${t}`),tl([e7,e3],(e,t)=>`Arriving ${e}; ${t} was already there`),tl([tn,tr],(e,t)=>`${ts(e)} begins moments before ${t}`),tl([e3,tt],(e,t)=>`Asking ${e} about ${t}`),tl([te,tr],(e,t)=>`Learning to ${e} seconds before ${t}`),tl([e8,e3],(e,t)=>`Returning ${e} to ${t}`),tl([tn,e7],(e,t)=>`Booking ${e} ${t}`),tl([tt,tr],(e,t)=>`Checking ${e} when ${t}`),tl([e9,e3],(e,t)=>`${ts(e)} with ${t}`),tl([e8,to],(e,t)=>`Calibrating ${e}; ${t}`),tl([tn,ta],(e,t)=>`Running ${e} with ${t}`),tl([e3,e7],(e,t)=>`Following ${e} ${t}`),tl([tt,to],(e,t)=>`Explaining ${e}; ${t}`),tl([e9,ta],(e,t)=>`${ts(e)} with ${t}`),tl([e8,tn],(e,t)=>`Preparing ${e} for ${t}`),tl([e7,ta],(e,t)=>`Taking notes ${e} with ${t}`),tl([e3,tn],(e,t)=>`Briefing ${e} on ${t}`),tl([e8,tt],(e,t)=>`Checking ${e} against ${t}`),tl([e7,to],(e,t)=>`Mapping ${e}; ${t}`),tl([e3,ta],(e,t)=>`Helping ${e} use ${t}`),tl([tn,tt],(e,t)=>`Linking ${e} to ${t}`),tl([te,e3],(e,t)=>`Watching ${t} learn to ${e}`),tl([e9,tn],(e,t)=>`${ts(e)} before ${t}`),tl([e8,e7],(e,t)=>`Delivering ${e} ${t}`),tl([e3,e7],(e,t)=>`Meeting ${e} ${t}`),tl([tt,tn],(e,t)=>`Discussing ${e} at ${t}`),tl([te,e7],(e,t)=>`Trying to ${e} ${t}`),tl([e9,e8],(e,t)=>`${ts(e)} around ${t}`),tl([tn,e7],(e,t)=>`Hosting ${e} ${t}`),tl([e8,tt],(e,t)=>`Comparing ${e} with ${t}`),tl([e3,tr],(e,t)=>`Meeting ${e} just as ${t}`),tl([ta,to],(e,t)=>`Pointing ${e} north; ${t}`),tl([te,tn],(e,t)=>`Practicing how to ${e} at ${t}`)];ti.reduce((e,t)=>e+t.count,0);let td=(e,t)=>{let a=Math.abs(e),n=Math.abs(t);for(;0!==n;)[a,n]=[n,a%n];return a},tc=e=>{let t=0|e;return((t=Math.imul((t=Math.imul(t^t>>>16,0x21f0aaad))^t>>>15,0x735a2d97))^t>>>15)>>>0},tu=(e,t)=>{let a=tc(t)%(e-1)+1;for(;1!==td(a,e);)a=a%(e-1)+1;return a},th=({lane:e,onOpenLane:t})=>{let{t:a}=(0,eE.s9)(),r=!!e.laneConversationId&&!!t,o="pending"===e.status;return(0,n.jsxs)(i.default,{onClick:r?()=>t(e.laneConversationId):void 0,sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.25,borderRadius:1,...r&&{cursor:"pointer","&:hover":{bgcolor:"action.hover",textDecoration:"underline"}}},children:["running"===e.status&&(0,n.jsx)(c.default,{size:14,sx:{flexShrink:0}}),"completed"===e.status&&(0,n.jsx)(T.A,{sx:{fontSize:16,flexShrink:0},color:"success"}),"error"===e.status&&(0,n.jsx)(e2.A,{sx:{fontSize:16,flexShrink:0},color:"error"}),o&&(0,n.jsx)(e5.A,{sx:{fontSize:16,flexShrink:0},color:"disabled"}),(0,n.jsxs)(h.A,{variant:"caption",color:o?"text.disabled":"textSecondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[e.label,o&&` — ${a("chat.live.queued")}`,"running"===e.status&&e.activity&&(0,n.jsxs)(h.A,{component:"span",variant:"caption",color:"text.disabled",children:[" \xb7 ",e.activity]})]})]})},tp=({liveStats:e,onStop:t,stopDisabled:a,awaitingApproval:o,lanes:l,onOpenLane:s,retryWait:u,compact:f=!1})=>{let m,x,b,y,v,w,A,{locale:j,t:k,tp:S,formatNumber:I,formatList:C}=(0,eE.s9)(),[$,z]=(0,r.useState)(()=>Date.now()),[M]=(0,r.useState)(()=>Date.now()),[E,T]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=setInterval(()=>z(Date.now()),1e3);return()=>clearInterval(e)},[]);let N=e?Math.max(0,Math.round(($-e.startedAt)/1e3)):0,R=e?Math.round(($-e.lastEventAt)/1e3):0,D=!o&&!u&&!!e&&R>=60,O=e?.startedAt??M,P=Math.floor(Math.max(0,$-O)/1e4),F="en"===j?(m=Math.max(0,Math.floor(P)),x=Math.floor(O),b=ti.length,v=ti[y=(tc(x)%b+m*tu(b,0x6d2b79f5^x))%b],w=Math.floor(m/b),A=(tc(x^Math.imul(y+1,0x9e3779b1))%v.count+w*tu(v.count,x^Math.imul(y+1,0x85ebca6b)))%v.count,v.render(A)):k(`chat.live.working.${P%6}`),W=u?Math.max(0,Math.ceil((u.retryAt-$)/1e3)):0,_=u?u.maxAttempts?k("chat.live.retryWaitAttempt",{seconds:I(W),attempt:I(u.attempt),total:I(u.maxAttempts)}):k("chat.live.retryWait",{seconds:I(W)}):null,q=l?Object.values(l.byIndex).sort((e,t)=>e.laneIndex-t.laneIndex):[],H=q.length>0?(()=>{let e=q.filter(e=>"running"===e.status).length,t=q.filter(e=>"pending"===e.status).length,a=q.filter(e=>"completed"===e.status).length,n=q.filter(e=>"error"===e.status).length;if(0===e&&0===t&&n>0)return{text:k("chat.live.partialFailure",{failed:I(n),total:I(q.length)}),warning:!0};let r=[e>0?S("chat.live.laneRunning",e):"",t>0?S("chat.live.laneQueued",t):"",a>0?S("chat.live.laneDone",a):"",n>0?S("chat.live.laneFailed",n):""].filter(Boolean);return{text:S("chat.live.lanes",q.length,{states:C(r)}),warning:n>0}})():null;if(f){let r=o?k("chat.live.waitingApproval"):e?.activeNode?k("chat.live.running",{node:e.activeNode}):k("chat.live.working");return(0,n.jsxs)(i.default,{"data-testid":"compact-live-run",sx:{flexShrink:0,bgcolor:"background.paper",borderTop:1,borderBottom:1,borderColor:"divider",boxShadow:"0 -8px 24px rgba(0,0,0,.10)",position:"relative",zIndex:3},children:[(0,n.jsxs)(i.default,{sx:{minHeight:44,px:1,display:"flex",alignItems:"center",gap:.75},children:[o?(0,n.jsx)(e1.A,{fontSize:"small",color:"warning"}):(0,n.jsx)(c.default,{size:18,color:D?"warning":"primary"}),(0,n.jsx)(h.A,{variant:"body2",noWrap:!0,role:"status","aria-live":"polite","aria-atomic":"true","data-testid":_?"retry-wait":"run-status",color:_?"warning.main":void 0,sx:{flex:1,minWidth:0},children:_??r}),!o&&(0,n.jsxs)(h.A,{variant:"caption",color:D?"warning.main":"text.secondary",sx:{whiteSpace:"nowrap"},children:[I(e?.totalTokens??0)," \xb7 ",I(N),"s"]}),H&&(0,n.jsx)(p.A,{title:H.text,children:(0,n.jsx)(g.A,{size:"small",onClick:()=>T(e=>!e),"aria-label":H.text,"aria-expanded":E,children:E?(0,n.jsx)(es.A,{}):(0,n.jsx)(el.A,{})})}),(0,n.jsx)(d.A,{variant:"outlined",color:"secondary",size:"small",onClick:t,disabled:a,sx:{minWidth:"auto",px:1},children:k("chat.live.stop")})]}),!o&&(0,n.jsx)(h.A,{"data-testid":"compact-working-message",variant:"body2",color:"text.primary","aria-hidden":"true",sx:{px:1.5,pb:.75,fontSize:"0.8125rem",fontWeight:500,lineHeight:1.35,textAlign:"center",overflowWrap:"anywhere"},children:F}),H&&(0,n.jsx)(ee.A,{in:E,unmountOnExit:!0,children:(0,n.jsxs)(i.default,{sx:{px:1,pb:1},children:[(0,n.jsx)(h.A,{variant:"caption",color:H.warning?"warning.main":"text.secondary",sx:{display:"block",mb:.25},children:H.text}),q.map(e=>(0,n.jsx)(th,{lane:e,onOpenLane:s},e.laneIndex))]})})]})}return(0,n.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",my:2,gap:.5},children:[(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:2},children:[o?(0,n.jsx)(e1.A,{fontSize:"small",color:"warning"}):(0,n.jsx)(c.default,{size:20,color:D?"warning":"primary"}),(0,n.jsx)(h.A,{variant:"body2",color:_?"warning.main":"textSecondary","data-testid":_?"retry-wait":"run-status",role:"status","aria-live":"polite","aria-atomic":"true",children:_??(o?k("chat.live.waitingApproval"):e?.activeNode?k("chat.live.running",{node:e.activeNode}):k("chat.live.working"))}),(0,n.jsx)(d.A,{variant:"outlined",color:"secondary",size:"small",onClick:t,disabled:a,children:k("chat.live.stop")})]}),!o&&(0,n.jsx)(h.A,{"data-testid":"working-message",variant:"body2",color:"text.primary",sx:{maxWidth:680,px:2,py:.5,borderRadius:1,bgcolor:"action.hover",fontSize:"0.875rem",fontWeight:500,lineHeight:1.45,textAlign:"center",overflowWrap:"anywhere"},"aria-hidden":"true",children:F}),H&&(0,n.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",alignItems:"stretch",minWidth:280,maxWidth:520},children:[(0,n.jsx)(h.A,{variant:"caption",color:H.warning?"warning.main":"textSecondary",sx:{px:1,fontWeight:500},children:H.text}),q.map(e=>(0,n.jsx)(th,{lane:e,onOpenLane:s},e.laneIndex))]}),!o&&(0,n.jsxs)(h.A,{variant:"caption",color:D?"warning.main":"textSecondary",children:[S("chat.live.elapsed",N,{tokens:k("chat.stats.tokens",{count:I(e?.totalTokens??0)})}),D?` \xb7 ${S("chat.live.inactive",R)}`:""]})]})};var tg=a(95877),tf=a(53157),tm=a(92042);let tx=({todos:e})=>{let{t,formatNumber:a}=(0,eE.s9)();if(!e||0===e.length)return null;let r=e.filter(e=>"done"===e.status).length,o=e.length>0?Math.round(r/e.length*100):0;return(0,n.jsxs)(tg.A,{variant:"outlined",sx:{mt:2,p:1.5,borderRadius:2},children:[(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:1},children:[(0,n.jsx)(h.A,{variant:"subtitle2",sx:{fontWeight:600},children:t("chat.todo.title")}),(0,n.jsx)(h.A,{variant:"caption",color:"text.secondary",children:t("chat.todo.progress",{done:a(r),total:a(e.length)})})]}),(0,n.jsx)(tf.A,{variant:"determinate",value:o,sx:{mb:1,borderRadius:1}}),(0,n.jsx)(i.default,{component:"ul",sx:{listStyle:"none",m:0,p:0},children:e.map(e=>(0,n.jsxs)(i.default,{component:"li",sx:{display:"flex",alignItems:"center",gap:1,py:.25},children:[function(e){switch(e){case"done":return(0,n.jsx)(T.A,{fontSize:"small",color:"success"});case"in_progress":return(0,n.jsx)(tm.A,{fontSize:"small",color:"info"});case"cancelled":return(0,n.jsx)(e2.A,{fontSize:"small",color:"disabled"});default:return(0,n.jsx)(e5.A,{fontSize:"small",color:"disabled"})}}(e.status),(0,n.jsx)(h.A,{variant:"body2",sx:{textDecoration:"done"===e.status||"cancelled"===e.status?"line-through":"none",color:"done"===e.status||"cancelled"===e.status?"text.secondary":"text.primary"},children:e.content})]},e.id))})]})};var tb=a(86403),ty=a(72852),tv=a(29586),tw=a(8682),tA=a(30902),tj=a(73039),tk=a(79377),tS=a(25601);let tI=e=>e>=1e3?`${(e/1e3).toFixed(e>=1e5?0:1)}k`:`${e}`,tC=({usage:e,contextInfo:t,availableNodes:a,compact:o=!1})=>{let{t:l,formatNumber:s}=(0,eE.s9)(),[d,c]=(0,r.useState)(null);if(!e&&!t)return null;let u=e?.byNode?Object.entries(e.byNode):[],g=e?(0,tS.g)(e):void 0,f=g?.cacheReadTokens??0,m=g?.cacheWriteTokens??0,b=g?.freshPromptTokens??0,y=g?.meterTotalTokens??0,v=t?.contextWindow&&t.contextWindow>0?Math.min(100,Math.round(t.promptTokens/t.contextWindow*100)):void 0;return(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:o?.5:1.5,flexShrink:0},children:[e&&y>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(p.A,{title:l("chat.stats.tooltip",{prompt:s(b),completion:s(e.completionTokens),cached:f>0?l("chat.stats.cached",{count:s(f)}):"",written:m>0?l("chat.stats.written",{count:s(m)}):""}),children:(0,n.jsx)(x.A,{icon:(0,n.jsx)(tk.A,{}),label:o?tI(y):l("chat.stats.tokens",{count:tI(y)}),size:"small",variant:"outlined",onClick:e=>c(e.currentTarget),sx:{cursor:"pointer"}})}),(0,n.jsx)(tb.Ay,{open:!!d,anchorEl:d,onClose:()=>c(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:(0,n.jsxs)(i.default,{sx:{p:2,maxWidth:"min(680px, calc(100vw - 24px))",overflowX:"auto"},children:[(0,n.jsx)(h.A,{variant:"subtitle2",sx:{mb:1},children:l("chat.stats.title")}),(0,n.jsxs)(ty.A,{size:"small",children:[(0,n.jsx)(tv.A,{children:(0,n.jsxs)(tw.A,{children:[(0,n.jsx)(tA.A,{children:l("chat.stats.node")}),(0,n.jsx)(tA.A,{align:"right",children:l("chat.stats.prompt")}),(0,n.jsx)(tA.A,{align:"right",children:l("chat.stats.completion")}),(0,n.jsx)(tA.A,{align:"right",children:l("chat.stats.cachedRead")}),(0,n.jsx)(tA.A,{align:"right",children:l("chat.stats.cacheWrite")}),(0,n.jsx)(tA.A,{align:"right",children:l("chat.stats.total")})]})}),(0,n.jsxs)(tj.A,{children:[u.map(([e,t])=>{let r=(0,tS.g)(t);return(0,n.jsxs)(tw.A,{children:[(0,n.jsx)(tA.A,{children:(0,n.jsx)(p.A,{title:e,children:(0,n.jsx)("span",{children:a.find(t=>t.id===e)?.label||`${e.substring(0,8)}…`})})}),(0,n.jsx)(tA.A,{align:"right",children:s(r.freshPromptTokens)}),(0,n.jsx)(tA.A,{align:"right",children:s(r.completionTokens)}),(0,n.jsx)(tA.A,{align:"right",children:s(r.cacheReadTokens)}),(0,n.jsx)(tA.A,{align:"right",children:s(r.cacheWriteTokens)}),(0,n.jsx)(tA.A,{align:"right",children:s(r.meterTotalTokens)})]},e)}),(0,n.jsxs)(tw.A,{children:[(0,n.jsx)(tA.A,{sx:{fontWeight:"bold"},children:l("chat.stats.total")}),(0,n.jsx)(tA.A,{align:"right",sx:{fontWeight:"bold"},children:s(b)}),(0,n.jsx)(tA.A,{align:"right",sx:{fontWeight:"bold"},children:s(e.completionTokens)}),(0,n.jsx)(tA.A,{align:"right",sx:{fontWeight:"bold"},children:s(f)}),(0,n.jsx)(tA.A,{align:"right",sx:{fontWeight:"bold"},children:s(m)}),(0,n.jsx)(tA.A,{align:"right",sx:{fontWeight:"bold"},children:s(y)})]})]})]}),f>0&&(0,n.jsx)(h.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1},children:l("chat.stats.cacheHelp",{cached:s(f),fresh:s(y)})}),m>0&&(0,n.jsx)(h.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:.5},children:l("chat.stats.cacheWriteHelp",{written:s(m)})})]})})]}),t&&void 0!==v&&!o&&(0,n.jsx)(p.A,{title:l("chat.stats.context",{model:t.modelDisplayName?l("chat.stats.model",{model:t.modelDisplayName}):"",used:s(t.promptTokens),total:s(t.contextWindow)}),children:(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,minWidth:140},children:[(0,n.jsx)(tf.A,{variant:"determinate",value:v,color:v>=90?"error":v>=70?"warning":"primary",sx:{flex:1,height:6,borderRadius:3}}),(0,n.jsxs)(h.A,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:[tI(t.promptTokens),"/",tI(t.contextWindow)," (",v,"%)"]})]})}),t&&void 0!==v&&o&&(0,n.jsx)(p.A,{title:l("chat.stats.context",{model:t.modelDisplayName?l("chat.stats.model",{model:t.modelDisplayName}):"",used:s(t.promptTokens),total:s(t.contextWindow)}),children:(0,n.jsxs)(h.A,{variant:"caption",color:v>=90?"error.main":"text.secondary",sx:{whiteSpace:"nowrap"},children:["ctx ",v,"%"]})}),t&&void 0===v&&(0,n.jsx)(p.A,{title:l("chat.stats.noWindow",{model:t.modelDisplayName?l("chat.stats.model",{model:t.modelDisplayName}):""}),children:(0,n.jsxs)(h.A,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:["ctx ",tI(t.promptTokens)]})})]})};var t$=a(609),tz=a(15344),tM=a(25422),tE=a(6302),tT=a(71031),tN=a(32897),tR=a(60756),tD=a(49103);let tO=(0,tD.h)("frontend/components/Chat/QuickChatDialog"),tP=({open:e,onClose:t,onStart:a})=>{let{t:o,tp:l}=(0,eE.s9)(),[s,p]=(0,r.useState)([]),[f,b]=(0,r.useState)([]),[y,w]=(0,r.useState)(!1),[j,S]=(0,r.useState)(null),[I,C]=(0,r.useState)(""),[$,z]=(0,r.useState)(""),[M,E]=(0,r.useState)({}),[T,N]=(0,r.useState)(!1),[R,D]=(0,r.useState)(null);(0,r.useEffect)(()=>{if(!e)return;let t=!1;return w(!0),S(null),(async()=>{try{let[e,a]=await Promise.all([tN.N.loadModels(),tR.S.loadServerConfigs()]);if(t)return;p(e);let n=Array.isArray(a)?a.filter(e=>!e.disabled).map(e=>e.name):[];b(n),C(t=>t||e[0]?.id||"")}catch(e){t||(tO.warn("Failed to load models/servers for quick chat",e),S(o("chat.quick.loadFailed")))}finally{t||w(!1)}})(),()=>{t=!0}},[e,o]),(0,r.useEffect)(()=>{e||(z(""),E({}),D(null),N(!1))},[e]);let O=(0,r.useCallback)(e=>{E(t=>{let a=t[e];return a?.selected?{...t,[e]:{...a,selected:!1}}:{...t,[e]:{...a??{tools:null,expanded:!1},selected:!0}}})},[]),P=(0,r.useCallback)(async e=>{E(t=>{let a=t[e]??{selected:!1,tools:null,expanded:!1};return{...t,[e]:{...a,expanded:!a.expanded}}});let t=M[e];if(!t?.available&&!t?.loading){E(t=>({...t,[e]:{...t[e]??{selected:!1,tools:null,expanded:!0},loading:!0}}));try{let{tools:t}=await tR.S.listServerTools(e),a=Array.isArray(t)?t.map(e=>e.name).filter(Boolean):[];E(t=>({...t,[e]:{...t[e]??{selected:!1,tools:null,expanded:!0},available:a,loading:!1}}))}catch(t){tO.warn(`Failed to load tools for ${e}`,t),E(t=>({...t,[e]:{...t[e]??{selected:!1,tools:null,expanded:!0},available:[],loading:!1}}))}}},[M]),F=(0,r.useCallback)((e,t,a)=>{E(n=>{let r=n[e]??{selected:!0,tools:null,expanded:!0},o=new Set(r.tools??new Set(a));return o.has(t)?o.delete(t):o.add(t),{...n,[e]:{...r,selected:!0,tools:o}}})},[]),W=!!I&&!T&&!y,_=async()=>{if(!I)return void D(o("chat.quick.pickModel"));N(!0),D(null);let e=f.filter(e=>M[e]?.selected).map(e=>{let t=M[e];return!t.tools||t.available&&t.tools.size===t.available.length?{name:e}:{name:e,enabledTools:[...t.tools]}});try{await a({modelId:I,servers:e,systemPrompt:$.trim()||void 0})}catch(e){tO.warn("Quick chat failed to start",e),D(e instanceof Error?e.message:o("chat.quick.startFailed")),N(!1)}};return(0,n.jsxs)(v.A,{open:e,onClose:T?void 0:t,maxWidth:"sm",fullWidth:!0,children:[(0,n.jsx)(tT.A,{title:o("chat.quick.title"),onClose:t}),(0,n.jsxs)(A.A,{children:[(0,n.jsx)(h.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:o("chat.quick.help")}),j&&(0,n.jsx)(u.A,{severity:"error",sx:{mb:2},children:j}),(0,n.jsxs)(Y.A,{fullWidth:!0,size:"small",sx:{mb:2},disabled:y,children:[(0,n.jsx)(tz.A,{id:"quick-chat-model-label",children:o("chat.quick.model")}),(0,n.jsxs)(Q.A,{labelId:"quick-chat-model-label",label:o("chat.quick.model"),value:I,onChange:e=>C(e.target.value),children:[0===s.length&&(0,n.jsx)(Z.A,{value:"",disabled:!0,children:y?o("common.loading"):o("chat.quick.noModels")}),s.map(e=>(0,n.jsx)(Z.A,{value:e.id,children:e.displayName||e.name},e.id))]})]}),(0,n.jsx)(m.A,{fullWidth:!0,size:"small",multiline:!0,minRows:2,maxRows:6,label:o("chat.quick.systemPrompt"),placeholder:o("chat.quick.systemPlaceholder"),value:$,onChange:e=>z(e.target.value),sx:{mb:2}}),(0,n.jsx)(V.A,{sx:{mb:1}}),(0,n.jsx)(h.A,{variant:"subtitle2",gutterBottom:!0,children:o("chat.quick.servers")}),y?(0,n.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,n.jsx)(c.default,{size:22})}):0===f.length?(0,n.jsx)(h.A,{variant:"body2",color:"text.secondary",children:o("chat.quick.noServers")}):f.map(e=>{let t=M[e],a=!!t?.selected,r=t?.available,s=t?.tools;return(0,n.jsxs)(i.default,{sx:{mb:.5},children:[(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,n.jsx)(tM.A,{sx:{flexGrow:1,mr:0},control:(0,n.jsx)(tE.A,{size:"small",checked:a,onChange:()=>O(e)}),label:(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,n.jsx)(h.A,{variant:"body2",children:e}),a&&(0,n.jsx)(x.A,{size:"small",variant:"outlined",label:s?l("chat.quick.tool",s.size):o("chat.quick.allTools")})]})}),(0,n.jsx)(g.A,{size:"small",onClick:()=>P(e),"aria-label":o("chat.quick.customize",{server:e}),children:t?.expanded?(0,n.jsx)(es.A,{fontSize:"small"}):(0,n.jsx)(el.A,{fontSize:"small"})})]}),(0,n.jsx)(ee.A,{in:!!t?.expanded,unmountOnExit:!0,children:(0,n.jsx)(i.default,{sx:{pl:4,pb:1},children:t?.loading?(0,n.jsx)(c.default,{size:16}):r&&r.length>0?r.map(t=>{let a=!s||s.has(t);return(0,n.jsx)(tM.A,{sx:{display:"flex"},control:(0,n.jsx)(tE.A,{size:"small",checked:a,onChange:()=>F(e,t,r)}),label:(0,n.jsx)(h.A,{variant:"caption",children:t})},t)}):(0,n.jsx)(h.A,{variant:"caption",color:"text.secondary",children:r?o("chat.quick.noTools"):""})})})]},e)}),R&&(0,n.jsx)(u.A,{severity:"error",sx:{mt:2},children:R})]}),(0,n.jsxs)(k.A,{children:[(0,n.jsx)(d.A,{onClick:t,disabled:T,children:o("common.cancel")}),(0,n.jsx)(d.A,{variant:"contained",onClick:_,disabled:!W,startIcon:T?(0,n.jsx)(c.default,{size:16,color:"inherit"}):void 0,children:T?o("chat.quick.starting"):o("chat.quick.start")})]})]})};var tF=a(10550),tW=a(10286),t_=a(9160),tq=a(73212),tH=a(44493),tB=a(33790),tL=a(82183),tU=a(32391),tK=a(36048),tX=a(14879),tJ=a(96848),tV=a(18109),tG=a(19500),tY=a(42131),tQ=a(81750),tZ=a(65614),t0=a(21129),t1=a(42727);let t2={byNode:{},byResource:{},byResourceName:{},resourceVersion:0},t5="root",t4=e=>"subflow:start"===e.type||"subflow:done"===e.type?e.depth??1:e.depth??0,t6=(e,t)=>null==t.laneIndex||null==e.laneIndex||e.laneIndex===t.laneIndex,t3=(e,t)=>{for(let a=e.order.length-1;a>=0;a-=1){let n=e.frames[e.order[a]];if(n&&t(n))return n}},t8=(e,t,a)=>a<=1?e.frames[e.rootKey]:t3(e,e=>"active"===e.status&&e.depth===a-1&&t6(e,t))??e.frames[e.rootKey],t7=(e,t)=>{let a=t4(t);return a<=0?e.frames[e.rootKey]:t3(e,e=>"active"===e.status&&e.depth===a&&t6(e,t))??e.frames[e.rootKey]},t9=e=>"node"in e?e.node?.nodeId:void 0,ae=e=>"resource:read"===e.type?"resource-read":"resource:write"===e.type?"resource-write":"active",at="tool:",aa="tool-node:",an="tool:*",ar=e=>(e??[]).filter(e=>"*"!==e&&!(e.startsWith(at)||e.startsWith(aa)));var ao=a(83216),al=a(4099),as=a(20967),ai=a(42546);let ad=(0,tD.h)("frontend/components/Chat/RunResourcesPanel"),ac=({conversationId:e,refreshToken:t})=>{let{t:a,formatNumber:o}=(0,eE.s9)(),[l,s]=(0,r.useState)(null),[d,u]=(0,r.useState)(null);return((0,r.useEffect)(()=>{if(!e)return;let t=!1;return fetch(`/v1/chat/conversations/${encodeURIComponent(e)}/resources`).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e.json()}).then(e=>{t||(s(Array.isArray(e.resources)?e.resources:[]),u(null))}).catch(e=>{t||(ad.warn("Failed to load run resources",e),u(e instanceof Error?e.message:String(e)))}),()=>{t=!0}},[e,t]),d)?(0,n.jsx)(h.A,{variant:"caption",color:"text.secondary",children:a("chat.resources.unavailable",{error:d})}):null===l?(0,n.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",p:1},children:(0,n.jsx)(c.default,{size:16})}):0===l.length?(0,n.jsx)(h.A,{variant:"caption",color:"text.secondary",children:a("chat.resources.empty")}):(0,n.jsx)(et.A,{dense:!0,disablePadding:!0,children:[...l].sort((e,t)=>t.createdAt-e.createdAt).map(e=>{var t;return(0,n.jsxs)(K.Ay,{disableGutters:!0,sx:{alignItems:"flex-start"},children:[(0,n.jsx)(tW.A,{sx:{minWidth:30,mt:.5},children:function(e){switch(e){case"image":return(0,n.jsx)(al.A,{fontSize:"small",sx:{color:"#009688"}});case"audio":return(0,n.jsx)(as.A,{fontSize:"small",sx:{color:"#009688"}});case"link":return(0,n.jsx)(ai.A,{fontSize:"small",sx:{color:"#009688"}});default:return(0,n.jsx)(ao.A,{fontSize:"small",sx:{color:"#009688"}})}}(e.kind)}),(0,n.jsx)(J.A,{primary:(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap"},children:[(0,n.jsx)(h.A,{variant:"body2",sx:{fontWeight:500},children:e.name??`${e.kind}-${e.id.slice(0,8)}`}),e.mimeType&&(0,n.jsx)(x.A,{label:e.mimeType,size:"small",variant:"outlined",sx:{height:18,fontSize:"0.65rem"}}),e.archive&&(0,n.jsx)(x.A,{label:"page"===e.archive.role?a("chat.resources.archivePage",{page:(e.archive.pageIndex??0)+1,total:e.archive.pageCount??"?"}):a("chat.resources.archiveSource"),size:"small",color:"info",variant:"outlined",sx:{height:18,fontSize:"0.65rem"}}),(0,n.jsx)(h.A,{variant:"caption",color:"text.secondary",children:(t=e.size)<1024?`${o(t)} B`:t<1048576?`${o(Math.round(t/1024))} KB`:`${o(t/1048576,{maximumFractionDigits:1})} MB`})]}),secondary:(0,n.jsxs)(h.A,{variant:"caption",color:"text.secondary",component:"span",sx:{wordBreak:"break-all"},children:[a("chat.resources.by",{producer:(e=>{let t=e.producedBy;switch(t.source){case"tool-result":return a("chat.resources.producer.toolResult",{server:t.server??"?",tool:t.toolName??"?"});case"tool-args":return a("chat.resources.producer.toolArgs",{server:t.server??"?",tool:t.toolName??"?"});case"capture":return a("chat.resources.producer.step",{step:t.nodeName??t.nodeId??"?"});case"mcp-link":return a("chat.resources.producer.link",{server:t.server??"?"});case"visual-archive":return a("chat.resources.producer.archive");default:return a("chat.resources.producer.run")}})(e)}),e.readBy.length>0?` \xb7 ${a("chat.resources.read",{count:e.readBy.length})}`:"",(e.verifications?.length??0)>0?` \xb7 ${a("chat.resources.verified",{ok:e.verifications.filter(e=>e.ok).length,total:e.verifications.length})}`:"",e.sha256?` \xb7 sha256 ${e.sha256.slice(0,12)}…`:""," \xb7 ",e.uri]})})]},e.id)})})},au=(0,tD.h)("frontend/components/Chat/DebuggerCanvas"),ah={start:t0.vm,process:t0.Uw,finish:t0.IK,mcp:t0.v2,subflow:t0.lA,resource:t0.z9},ap={custom:t1.jY,mcpEdge:t1.oY,resourceEdge:t1.sZ},ag=[],af=["tracker","detail"],am="flujo-debugger-section-order",ax="flujo-debugger-section-visible",ab="flujo-debugger-detail-width",ay=(0,tY.Ay)(tg.A)(({theme:e})=>({display:"flex",flexDirection:"column",height:"100%",overflow:"hidden",padding:e.spacing(1)})),av=(0,tY.Ay)(i.default)(({theme:e})=>({padding:e.spacing(1,2),borderBottom:`1px solid ${e.palette.divider}`})),aw=(0,tY.Ay)(i.default)({flexGrow:1,display:"flex",overflow:"hidden",minHeight:0}),aA=(0,tY.Ay)(i.default)(({theme:e})=>({width:"200px",flexShrink:0,borderRight:`1px solid ${e.palette.divider}`,overflowY:"auto",padding:e.spacing(1)})),aj=(0,tY.Ay)(i.default)({flexGrow:1,position:"relative",height:"100%"}),ak=(0,tY.Ay)(i.default)(({theme:e})=>({padding:e.spacing(1,2),borderTop:`1px solid ${e.palette.divider}`,display:"flex",gap:e.spacing(1),justifyContent:"center"})),aS=(0,tY.Ay)(i.default)(({theme:e})=>({width:"6px",flexShrink:0,cursor:"col-resize",backgroundColor:e.palette.divider,transition:"background-color 120ms",touchAction:"none","&:hover":{backgroundColor:e.palette.primary.main}})),aI=({debugState:e,conversationId:t,onStep:a,onStepOver:o,onContinue:l,onCancel:s,isLoading:f,breakpoints:m,onToggleBreakpoint:b,onSetBreakpoints:y,onClose:v,isExpanded:w,onToggleExpand:A,liveActivity:j,executionEvents:k=ag,onStepSelectionChange:I})=>{let C=(0,S.A)(),{t:$,tp:z,formatDate:M}=(0,eE.s9)(),E={tracker:$("chat.debug.section.tracker"),detail:$("chat.debug.section.detail")},[T,N]=(0,r.useState)(e.executionTrace&&e.executionTrace.length>0?e.executionTrace.length-1:-1),[R,P]=(0,r.useState)(()=>(function(){try{let e=JSON.parse(window.localStorage.getItem(am)||"null");if(Array.isArray(e)){let t=e.filter(e=>af.includes(e)),a=af.filter(e=>!t.includes(e));if(t.length+a.length===af.length)return[...t,...a]}}catch{}return[...af]})()),[F,W]=(0,r.useState)(()=>(function(){let e={tracker:!0,detail:!0};try{let t=JSON.parse(window.localStorage.getItem(ax)||"null");if(t&&"object"==typeof t)for(let a of af)"boolean"==typeof t[a]&&(e[a]=t[a])}catch{}return e})()),[q,H]=(0,r.useState)(()=>{let e;return Number.isFinite(e=Number(window.localStorage.getItem(ab)))&&e>=240?e:320}),B=(0,r.useMemo)(()=>(function(e,t){let a={key:t5,parentKey:null,flowId:e,displayName:"Root flow",depth:0,status:"active",startedSeq:0,nodeActivity:{}},n={rootKey:a.key,activeFrameKey:a.key,frames:{[a.key]:a},order:[a.key]};for(let e of t){let t=t4(e);if(t<0||t>8)continue;if("run:start"===e.type){n.activeFrameKey=a.key;continue}if("subflow:start"===e.type){if(!e.subflowId||t<=0)continue;let a=t8(n,e,t),r=null==e.laneIndex?"":`:lane-${e.laneIndex}`,o=`${a.key}:${e.node?.nodeId??"subflow"}:${e.subflowId}${r}:seq-${e.seq}`,l={key:o,parentKey:a.key,flowId:e.subflowId,invokingNodeId:e.node?.nodeId,displayName:e.laneTitle||e.subflowName||e.subflowId,depth:t,laneIndex:e.laneIndex,laneCount:e.laneCount,laneTitle:e.laneTitle,status:"active",startedSeq:e.seq,nodeActivity:{}};n.frames[o]=l,n.order.push(o),n.activeFrameKey=o,e.node?.nodeId&&(a.nodeActivity[e.node.nodeId]={kind:"active",ts:e.timestamp});continue}if("subflow:done"===e.type){let r=t3(n,a=>"active"===a.status&&a.depth===t&&a.flowId===e.subflowId&&(e.node?.nodeId==null||a.invokingNodeId===e.node.nodeId)&&t6(a,e));if(!r)continue;r.status=e.status,r.endedSeq=e.seq,n.activeFrameKey=r.parentKey??a.key;let o=n.frames[r.parentKey??a.key];r.invokingNodeId&&o&&(o.nodeActivity[r.invokingNodeId]={kind:"active",ts:e.timestamp});continue}let r=t7(n,e);n.activeFrameKey=r.key;let o=t9(e);o&&(r.nodeActivity[o]={kind:ae(e),ts:e.timestamp})}return n})(e.flowId??"",k),[e.flowId,k]),[L,U]=(0,r.useState)(t5),[V,G]=(0,r.useState)({}),Y=(0,r.useRef)(new Set),Q=(0,r.useRef)(0),[ee,ea,en]=(0,tQ.ck)([]),[er,eo,es]=(0,tQ.fM)([]);(0,r.useEffect)(()=>{window.localStorage.setItem(am,JSON.stringify(R))},[R]),(0,r.useEffect)(()=>{window.localStorage.setItem(ax,JSON.stringify(F))},[F]),(0,r.useEffect)(()=>{window.localStorage.setItem(ab,String(Math.round(q)))},[q]),(0,r.useEffect)(()=>{let t=e.executionTrace?.length||0;t>0?(N(e=>Math.min(e,t-1)),T<t-1&&N(t-1)):N(-1)},[e.executionTrace]),(0,r.useEffect)(()=>{I?.(T)},[T,I]),(0,r.useEffect)(()=>{U(B.activeFrameKey)},[B.activeFrameKey,k.length]);let ei=(0,r.useMemo)(()=>Array.from(new Set(B.order.map(e=>B.frames[e]?.flowId).filter(Boolean))),[B]);(0,r.useEffect)(()=>{Q.current+=1,Y.current.clear(),G({}),U(t5)},[t,e.flowId]),(0,r.useEffect)(()=>{let e=Q.current;for(let t of ei)!t||Y.current.has(t)||(Y.current.add(t),G(e=>({...e,[t]:{status:"loading"}})),tZ.g.getFlow(t).then(a=>{Q.current===e&&G(e=>({...e,[t]:a?{status:"ready",flow:a}:{status:"missing"}}))}).catch(a=>{if(Q.current!==e)return;let n=a instanceof Error?a.message:$("chat.debug.loadFlowFailed",{id:t});au.error("Error loading debugger flow definition:",a),G(e=>({...e,[t]:{status:"error",message:n}}))}))},[t,e.flowId,ei,$]);let ed=B.frames[L]??B.frames[B.activeFrameKey]??B.frames[t5],ec=V[ed.flowId],eu=ed;for(;V[eu.flowId]?.status!=="ready"&&eu.parentKey;)eu=B.frames[eu.parentKey]??B.frames[t5];let eh=V[eu.flowId],ep=eh?.status==="ready"?eh.flow:null,eg=V[e.flowId??""],ef=!!e.flowId&&!ep&&(!eg||"loading"===eg.status),em=e.flowId?eg?.status==="missing"?$("chat.debug.flowNotFound",{id:e.flowId}):eg?.status==="error"?eg.message:null:$("chat.debug.flowMissingId"),ex=ed.key!==t5&&ec?.status!=="ready"?ec?.status!=="loading"&&ec?$("chat.debug.childUnavailable",{agent:ed.displayName}):$("chat.debug.loadingChild",{agent:ed.displayName}):null;(0,r.useEffect)(()=>{if(!ep){ea([]),eo([]);return}au.debug(`Setting debugger graph for flow ${ep.id}`),ea(ep.nodes.map(e=>({...e,draggable:!1,selectable:!1,connectable:!1}))),eo(ep.edges.map(e=>({...e,selectable:!1})))},[ep,ea,eo]);let eb=(0,r.useCallback)(()=>{if(au.debug(`Previous button clicked. Current index: ${T}`),T>0){let e=T-1;au.debug(`Setting current step index to: ${e}`),N(e)}else au.debug("Already at the first step, cannot go previous.")},[T]),ey=(0,r.useCallback)(()=>{if(au.debug(`Next button clicked. Current index: ${T}, Trace length: ${e.executionTrace?.length}`),e.executionTrace&&T<e.executionTrace.length-1){let e=T+1;au.debug(`Navigating to next trace step: ${e}`),N(e)}else au.info("At end of trace, triggering API call for next step."),a()},[T,e.executionTrace,a]),ev=(0,r.useMemo)(()=>{if(e.executionTrace&&T>=0&&T<e.executionTrace.length)return e.executionTrace[T]},[e.executionTrace,T]),[ew,eA]=(0,r.useState)(()=>Date.now());(0,r.useEffect)(()=>{eA(Date.now())},[k.length]),(0,r.useEffect)(()=>{if(!j)return;let e=()=>{let e=Date.now();return[...Object.values(j.byNode),...Object.values(j.byResource),...Object.values(j.byResourceName)].some(t=>e-t.ts<4e3)};if(!e())return;let t=setInterval(()=>{eA(Date.now()),e()||clearInterval(t)},350);return()=>clearInterval(t)},[j]);let ej=(0,r.useCallback)(e=>{var t,a;let n=eu.nodeActivity[e.id];if(n&&ew-n.ts<4e3)return n;if(eu.key!==t5||!j)return null;let r=j.byNode[e.id];if(r&&ew-r.ts<4e3)return r;let o=e.data;if((o?.type??e.type)!=="resource")return null;let l=o?.properties??{},s="run"===l.scope?"string"==typeof l.runName?j.byResourceName[l.runName]:void 0:"string"==typeof l.boundServer&&"string"==typeof l.uri?j.byResource[t=l.boundServer,a=l.uri,`${t} ${a}`]:void 0;return s&&ew-s.ts<4e3?{kind:"read"===s.kind?"resource-read":"resource-write",ts:s.ts}:null},[eu,j,ew]),ek=(0,r.useCallback)(e=>{if(eu.key!==t5)return null;let t="string"==typeof e.data?.type?e.data.type:e.type;return"mcp"===t?`${aa}${e.id}`:"resource"===t||"trigger"===t?null:e.id},[eu.key]),eS=(0,r.useMemo)(()=>{let e=eu.key===t5?ev?.nodeId:void 0;return ee.map(t=>{let a=t.id===e,n=ek(t),r=!!n&&!!m?.includes(n),o=a?null:ej(t),l=o?Math.max(.25,1-(ew-o.ts)/4e3):0,s=o?.kind==="active"?C.palette.primary.main:"#009688";return{...t,className:[t.className,r?"flujo-breakpoint":null].filter(Boolean).join(" ")||void 0,style:{...t.style,border:a?`2px solid ${C.palette.warning.main}`:o?`2px solid ${s}`:t.style?.border,boxShadow:a?`0 0 10px ${C.palette.warning.light}`:o?`0 0 ${"resource-write"===o.kind?14:10}px ${s}${Math.round(255*l).toString(16).padStart(2,"0")}`:void 0}}})},[ee,eu.key,ev,m,C,ej,ew,ek]),[eI,eC]=(0,r.useState)(null),e$=(0,r.useCallback)(()=>eC(null),[]),ez=m??[],eT=ez.includes(an),eN=(0,r.useCallback)((e,t)=>{e.preventDefault();let a="string"==typeof t.data?.label?t.data.label:t.id,n=ek(t);eC({x:e.clientX,y:e.clientY,...n?{breakpointKey:n}:{},nodeLabel:a,...!n?{unavailableReason:eu.key===t5?$("chat.debug.breakpointPassiveNode"):$("chat.debug.breakpointChildRun")}:{}})},[ek,eu.key,$]),eR=(0,r.useCallback)(e=>{e.preventDefault(),eC({x:e.clientX,y:e.clientY})},[]),eD=(0,r.useCallback)(()=>{y&&(y(eT?ez.filter(e=>e!==an):[...ez,an]),e$())},[y,eT,ez,e$]),eO=(0,r.useCallback)(()=>{y?.([]),e$()},[y,e$]),eP=(0,r.useMemo)(()=>(function(e,t){let a=[],n=new Set,r=e.frames[t];for(;r&&!n.has(r.key)&&a.length<=8;)a.unshift(r),n.add(r.key),r=r.parentKey?e.frames[r.parentKey]:void 0;return a})(B,ed.key),[B,ed.key]),eF=(0,r.useCallback)(e=>{let t=V[e.flowId],a=e.key===t5&&t?.status==="ready"?t.flow.name:e.displayName;return null==e.laneIndex?a:`${a} \xb7 lane ${e.laneIndex+1}`},[V]),eW=(0,r.useMemo)(()=>R.filter(e=>F[e]),[R,F]),e_=(0,r.useCallback)(e=>{W(t=>({...t,[e]:!t[e]}))},[]),eq=(0,r.useCallback)((e,t)=>{P(a=>{let n=a.indexOf(e),r=n+t;if(n<0||r<0||r>=a.length)return a;let o=[...a];return[o[n],o[r]]=[o[r],o[n]],o})},[]),eH=(0,r.useCallback)((e,t)=>{t.preventDefault();let a=t.clientX,n=document.body.style.userSelect,r=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let o=t=>{H(Math.min(Math.max(q+e*(t.clientX-a),240),1100))},l=()=>{window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",l),document.body.style.userSelect=n,document.body.style.cursor=r};window.addEventListener("pointermove",o),window.addEventListener("pointerup",l)},[q]),eB={tracker:(0,n.jsxs)(i.default,{sx:{flexGrow:1,display:"flex",overflow:"hidden",minHeight:0},children:[(0,n.jsxs)(aA,{children:[(0,n.jsx)(h.A,{variant:"caption",color:"textSecondary",gutterBottom:!0,sx:{display:"block"},children:$("chat.debug.executionTrace")}),(0,n.jsxs)(et.A,{dense:!0,disablePadding:!0,children:[e.executionTrace?.map((t,a)=>(0,n.jsx)(K.Ay,{disablePadding:!0,children:(0,n.jsx)(X.A,{selected:a===T,onClick:()=>{e.executionTrace&&a>=0&&a<e.executionTrace.length?(au.debug(`Trace step selected: ${a}`),N(a)):au.warn(`Invalid step index selected: ${a}`)},children:(0,n.jsx)(J.A,{primary:`${t.stepIndex}: ${t.nodeName||t.nodeId}`,secondary:t.nodeType})})},t.stepIndex)),f&&(0,n.jsx)(K.Ay,{children:(0,n.jsx)(c.default,{size:20,sx:{margin:"auto"}})})]})]}),(0,n.jsx)(aj,{children:(0,n.jsxs)(i.default,{sx:{height:"100%",minHeight:0,display:"flex",flexDirection:"column"},children:[(0,n.jsxs)(i.default,{sx:{px:1,py:.5,borderBottom:`1px solid ${C.palette.divider}`,flexShrink:0},children:[(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.25,overflowX:"auto"},children:[ed.parentKey&&(0,n.jsx)(p.A,{title:$("chat.debug.backToParent"),children:(0,n.jsx)(g.A,{size:"small",onClick:()=>U(ed.parentKey??t5),"aria-label":$("chat.debug.backToParent"),children:(0,n.jsx)(D.A,{fontSize:"small"})})}),eP.map((e,t)=>(0,n.jsxs)(r.Fragment,{children:[t>0&&(0,n.jsx)(O.A,{color:"disabled",fontSize:"small"}),(0,n.jsx)(d.A,{size:"small",variant:e.key===ed.key?"contained":"text",onClick:()=>U(e.key),sx:{minWidth:0,whiteSpace:"nowrap",textTransform:"none"},children:eF(e)})]},e.key))]}),B.order.length>1&&(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5,mt:.25,overflowX:"auto"},children:[(0,n.jsx)(h.A,{variant:"caption",color:"textSecondary",sx:{flexShrink:0},children:$("chat.debug.frames")}),B.order.slice(1).map(e=>{let t=B.frames[e];return(0,n.jsxs)(d.A,{size:"small",variant:t.key===ed.key?"outlined":"text",color:"error"===t.status?"error":"inherit",onClick:()=>U(t.key),sx:{minWidth:0,py:0,whiteSpace:"nowrap",textTransform:"none",fontSize:"0.7rem"},children:[eF(t)," \xb7 ",t.status]},e)})]})]}),ex&&(0,n.jsx)(u.A,{severity:ec?.status!=="loading"&&ec?"warning":"info",sx:{m:1,mb:0,py:0,flexShrink:0},children:ex}),(0,n.jsxs)(i.default,{sx:{flexGrow:1,minHeight:0,position:"relative","& .react-flow__node.flujo-breakpoint":{outline:`3px solid ${C.palette.error.main}`,outlineOffset:"2px",borderRadius:"8px",boxShadow:`0 0 0 7px ${(0,eM.X4)(C.palette.error.main,.16)}, 0 0 14px ${(0,eM.X4)(C.palette.error.main,.5)}`},"& .react-flow__node.flujo-breakpoint::before":{content:'""',position:"absolute",top:"-11px",left:"-11px",width:"16px",height:"16px",borderRadius:"50%",backgroundColor:C.palette.error.main,border:`2px solid ${C.palette.background.paper}`,boxShadow:`0 0 8px ${C.palette.error.main}`,zIndex:12,pointerEvents:"none"}},onContextMenu:e=>{e.target.closest(".react-flow__node")||eR(e)},children:[ef?(0,n.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,n.jsx)(c.default,{})}):em?(0,n.jsx)(u.A,{severity:"error",sx:{margin:2},children:em}):(0,n.jsx)(tQ.Ln,{children:(0,n.jsx)(tQ.Gc,{nodes:eS,edges:er,onNodesChange:en,onEdgesChange:es,nodeTypes:ah,edgeTypes:ap,fitView:!0,attributionPosition:"bottom-right",nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!1,onNodeClick:(e,t)=>{e.preventDefault();let a=ek(t);b&&a&&b(a)},onNodeContextMenu:eN,onPaneContextMenu:eR,onEdgeClick:e=>e.preventDefault(),onPaneClick:()=>{}})}),(0,n.jsxs)(tF.A,{open:!!eI,onClose:e$,anchorReference:"anchorPosition",anchorPosition:eI?{top:eI.y,left:eI.x}:void 0,children:[eI?.nodeLabel&&(0,n.jsxs)(Z.A,{onClick:()=>{eI.breakpointKey&&b?.(eI.breakpointKey),e$()},disabled:!b||!eI.breakpointKey,children:[(0,n.jsx)(tW.A,{children:eI.breakpointKey&&ez.includes(eI.breakpointKey)?(0,n.jsx)(tJ.A,{fontSize:"small",color:"error"}):(0,n.jsx)(tX.A,{fontSize:"small",color:eI.breakpointKey?"error":"disabled"})}),(0,n.jsx)(J.A,{primary:eI.breakpointKey&&ez.includes(eI.breakpointKey)?$("chat.debug.menu.removeBreakpoint"):$("chat.debug.menu.addBreakpoint"),secondary:eI.unavailableReason||eI.nodeLabel})]}),(0,n.jsxs)(Z.A,{onClick:eD,disabled:!y,children:[(0,n.jsx)(tW.A,{children:(0,n.jsx)(tG.A,{fontSize:"small",color:eT?"error":"inherit"})}),(0,n.jsx)(J.A,{primary:eT?$("chat.debug.menu.toolBreakpointOff"):$("chat.debug.menu.toolBreakpointOn"),secondary:$("chat.debug.menu.toolBreakpointHelp")})]}),(0,n.jsxs)(Z.A,{onClick:eO,disabled:!y||0===ez.length,children:[(0,n.jsx)(tW.A,{children:(0,n.jsx)(tV.A,{fontSize:"small"})}),(0,n.jsx)(J.A,{primary:$("chat.debug.menu.clearAll")})]})]})]})]})})]}),detail:(0,n.jsxs)(i.default,{sx:{flexGrow:1,overflowY:"auto",minHeight:0,p:2},children:[ev?(0,n.jsxs)(i.default,{children:[(0,n.jsxs)(h.A,{variant:"body2",children:[(0,n.jsx)("b",{children:$("chat.debug.node")})," ",ev.nodeName," (",ev.nodeId,")"]}),(0,n.jsxs)(h.A,{variant:"body2",children:[(0,n.jsx)("b",{children:$("chat.debug.type")})," ",ev.nodeType]}),(0,n.jsxs)(h.A,{variant:"body2",children:[(0,n.jsx)("b",{children:$("chat.debug.timestamp")})," ",M(new Date(ev.timestamp),{dateStyle:"medium",timeStyle:"medium"})]}),(0,n.jsxs)(h.A,{variant:"body2",children:[(0,n.jsx)("b",{children:$("chat.debug.actionTaken")})," ",ev.actionTaken]}),(0,n.jsxs)(t_.A,{sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,n.jsx)(tq.A,{expandIcon:(0,n.jsx)(el.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,n.jsx)(h.A,{variant:"caption",children:$("chat.debug.prepResult")})}),(0,n.jsx)(tH.A,{sx:{p:0},children:(0,n.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(ev.prepResultSnapshot,null,2)})})]}),(0,n.jsxs)(t_.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,n.jsx)(tq.A,{expandIcon:(0,n.jsx)(el.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,n.jsx)(h.A,{variant:"caption",color:ev.execResultSnapshot?.success===!1?"error":"inherit",children:ev.execResultSnapshot?.success===!1?$("chat.debug.execResultError"):$("chat.debug.execResult")})}),(0,n.jsx)(tH.A,{sx:{p:0},children:ev.execResultSnapshot?.success===!1?(0,n.jsxs)(i.default,{sx:{p:1,background:C.palette.error.light,borderRadius:1},children:[(0,n.jsxs)(h.A,{variant:"body2",color:"error",gutterBottom:!0,children:[(0,n.jsx)("b",{children:$("chat.debug.error")})," ",ev.execResultSnapshot.error||$("chat.debug.unknownError")]}),ev.execResultSnapshot.errorDetails&&(0,n.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"150px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"4px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(ev.execResultSnapshot.errorDetails,null,2)})]}):(0,n.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(ev.execResultSnapshot,null,2)})})]}),(0,n.jsxs)(t_.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,n.jsx)(tq.A,{expandIcon:(0,n.jsx)(el.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,n.jsx)(h.A,{variant:"caption",children:$("chat.debug.stateBefore")})}),(0,n.jsx)(tH.A,{sx:{p:0},children:(0,n.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(ev.stateBefore,null,2)})})]}),(0,n.jsxs)(t_.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,n.jsx)(tq.A,{expandIcon:(0,n.jsx)(el.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,n.jsx)(h.A,{variant:"caption",children:$("chat.debug.stateAfter")})}),(0,n.jsx)(tH.A,{sx:{p:0},children:(0,n.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(ev.stateAfter,null,2)})})]})]}):(0,n.jsx)(h.A,{variant:"body2",color:"textSecondary",children:$("chat.debug.selectStep")}),(0,n.jsxs)(t_.A,{defaultExpanded:!0,sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,n.jsx)(tq.A,{expandIcon:(0,n.jsx)(el.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,n.jsx)(h.A,{variant:"caption",children:$("chat.debug.runData")})}),(0,n.jsx)(tH.A,{sx:{p:0},children:(0,n.jsx)(ac,{conversationId:t,refreshToken:j?.resourceVersion})})]})]})};return(0,n.jsxs)(ay,{elevation:2,children:[(0,n.jsxs)(av,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-between"},children:[(0,n.jsxs)(i.default,{children:[(0,n.jsx)(h.A,{variant:"h6",children:$("chat.debug.title")}),(0,n.jsxs)(h.A,{variant:"caption",color:"textSecondary",display:"block",children:[$("chat.debug.breakpointHelp"),ez.length>0?` \xb7 ${z("chat.debug.activeBreakpoints",ez.length)}`:""]}),ez.length>0&&(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5,mt:.5,flexWrap:"wrap"},children:[ar(ez).length>0&&(0,n.jsx)(x.A,{size:"small",variant:"outlined",color:"error",icon:(0,n.jsx)(tX.A,{}),label:z("chat.debug.nodeBreakpoints",ar(ez).length)}),(ez??[]).filter(e=>e.startsWith(at)).map(e=>e.slice(at.length)).map(e=>(0,n.jsx)(x.A,{size:"small",variant:"outlined",color:"error",icon:(0,n.jsx)(tG.A,{}),label:"*"===e?$("chat.debug.anyToolBreakpoint"):e,onDelete:y?()=>y(ez.filter(t=>t!==`tool:${e}`)):void 0},e)),(ez??[]).filter(e=>e.startsWith(aa)).map(e=>e.slice(aa.length)).map(e=>(0,n.jsx)(x.A,{size:"small",variant:"outlined",color:"error",icon:(0,n.jsx)(tG.A,{}),label:$("chat.debug.toolNodeBreakpoint",{id:e.slice(0,8)}),onDelete:y?()=>y(ez.filter(t=>t!==`${aa}${e}`)):void 0},`tool-node:${e}`))]})]}),(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,n.jsx)(p.A,{title:F.tracker?$("chat.debug.hideSection",{section:E.tracker}):$("chat.debug.showSection",{section:E.tracker}),children:(0,n.jsx)(g.A,{size:"small",onClick:()=>e_("tracker"),color:F.tracker?"primary":"default","aria-label":F.tracker?$("chat.debug.hideSection",{section:E.tracker}):$("chat.debug.showSection",{section:E.tracker}),children:(0,n.jsx)(_.A,{fontSize:"small"})})}),(0,n.jsx)(p.A,{title:F.detail?$("chat.debug.hideSection",{section:E.detail}):$("chat.debug.showSection",{section:E.detail}),children:(0,n.jsx)(g.A,{size:"small",onClick:()=>e_("detail"),color:F.detail?"primary":"default","aria-label":F.detail?$("chat.debug.hideSection",{section:E.detail}):$("chat.debug.showSection",{section:E.detail}),children:(0,n.jsx)(tK.A,{fontSize:"small"})})}),A&&(0,n.jsx)(p.A,{title:w?$("chat.debug.exitFullscreen"):$("chat.debug.enterFullscreen"),children:(0,n.jsx)(g.A,{size:"small",onClick:A,"aria-label":w?$("chat.debug.exitFullscreen"):$("chat.debug.enterFullscreen"),children:w?(0,n.jsx)(tU.A,{fontSize:"small"}):(0,n.jsx)(tL.A,{fontSize:"small"})})}),v&&(0,n.jsx)(p.A,{title:$("chat.debug.close"),children:(0,n.jsx)(g.A,{size:"small",onClick:v,"aria-label":$("chat.debug.close"),children:(0,n.jsx)(tB.A,{fontSize:"small"})})})]})]}),(0,n.jsx)(aw,{children:0===eW.length?(0,n.jsx)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",p:3},children:(0,n.jsx)(h.A,{variant:"body2",color:"textSecondary",children:$("chat.debug.allHidden")})}):eW.map((e,t)=>{var a;let o,l,s,d;return(0,n.jsxs)(r.Fragment,{children:[(l=(o="detail"===e)?q:void 0,(0,n.jsxs)(i.default,{sx:{...o?{width:l,flexShrink:0}:{flexGrow:1,minWidth:300},display:"flex",flexDirection:"column",overflow:"hidden",minHeight:0},children:[(s=eW.indexOf(e),(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",px:1,py:.5,borderBottom:`1px solid ${C.palette.divider}`},children:[(0,n.jsx)(h.A,{variant:"subtitle2",noWrap:!0,children:E[e]}),(0,n.jsxs)(i.default,{sx:{display:"flex"},children:[(0,n.jsx)(p.A,{title:$("chat.debug.moveLeft",{section:E[e]}),children:(0,n.jsx)("span",{children:(0,n.jsx)(g.A,{size:"small",onClick:()=>eq(e,-1),disabled:s<=0,"aria-label":$("chat.debug.moveLeft",{section:E[e]}),children:(0,n.jsx)(D.A,{fontSize:"small"})})})}),(0,n.jsx)(p.A,{title:$("chat.debug.moveRight",{section:E[e]}),children:(0,n.jsx)("span",{children:(0,n.jsx)(g.A,{size:"small",onClick:()=>eq(e,1),disabled:s<0||s>=eW.length-1,"aria-label":$("chat.debug.moveRight",{section:E[e]}),children:(0,n.jsx)(O.A,{fontSize:"small"})})})}),(0,n.jsx)(p.A,{title:$("chat.debug.hideSection",{section:E[e]}),children:(0,n.jsx)(g.A,{size:"small",onClick:()=>e_(e),"aria-label":$("chat.debug.hideSection",{section:E[e]}),children:(0,n.jsx)(tB.A,{fontSize:"small"})})})]})]})),eB[e]]},e)),t<eW.length-1&&(a=eW[t+1],d="tracker"!==e?1:-1,(0,n.jsx)(aS,{onPointerDown:e=>eH(d,e),"aria-label":$("chat.debug.resizeSection",{section:E.detail})},`resizer-${e}-${a}`))]},e)})}),(0,n.jsxs)(ak,{children:[(0,n.jsx)(d.A,{variant:"outlined",size:"small",onClick:eb,disabled:f||T<=0,children:$("chat.debug.previous")}),(0,n.jsx)(d.A,{variant:"contained",size:"small",onClick:ey,disabled:f||-1===T,children:e.executionTrace&&T<e.executionTrace.length-1?$("chat.debug.nextTrace"):$("chat.debug.stepNext")}),o&&(0,n.jsx)(d.A,{variant:"outlined",size:"small",onClick:o,disabled:f,children:$("chat.debug.stepOver")}),(0,n.jsx)(d.A,{variant:"contained",color:"secondary",size:"small",onClick:l,disabled:f,children:$("chat.debug.continue")}),(0,n.jsx)(d.A,{variant:"outlined",color:"error",size:"small",onClick:s,disabled:f,children:$("chat.debug.stop")})]})]})},aC={system:{color:"secondary"},sent:{color:"success"},folded:{color:"warning"},"scoped-out":{color:"info"},"handoff-stripped":{color:"default"}},a$={whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem",fontFamily:"inherit"},az=({role:e,content:t,toolCallNames:a,status:r,faded:o})=>{let{t:l}=(0,eE.s9)(),s="user"===e?l("chat.messages.you"):"assistant"===e?l("chat.messages.agent"):"tool"===e?l("chat.messages.tool"):"system"===e?l("chat.messages.system"):e,d=l("system"===r?"chat.debug.status.system":"sent"===r?"chat.debug.status.sent":"folded"===r?"chat.debug.status.folded":"scoped-out"===r?"chat.debug.status.scoped":"chat.debug.status.handoff");return(0,n.jsxs)(tg.A,{variant:"outlined",sx:{p:1,mb:.75,opacity:o?.55:1,borderStyle:o?"dashed":"solid"},children:[(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5,mb:.5,flexWrap:"wrap"},children:[(0,n.jsx)(x.A,{size:"small",label:s,color:function(e){switch(e){case"system":return"secondary";case"user":return"primary";case"assistant":return"success";case"tool":return"info";default:return"default"}}(e),variant:"outlined"}),a&&a.length>0&&(0,n.jsx)(x.A,{size:"small",variant:"outlined",label:`🔧 ${a.join(", ")}`,sx:{maxWidth:"100%"}}),r&&"sent"!==r&&"system"!==r&&(0,n.jsx)(x.A,{size:"small",color:aC[r].color,label:d})]}),t.trim().length>0?(0,n.jsx)("pre",{style:a$,children:t}):(0,n.jsx)(h.A,{variant:"caption",color:"textSecondary",children:l("chat.debug.noText")})]})},aM=({provenance:e})=>{let{t}=(0,eE.s9)();return(0,n.jsxs)(i.default,{children:[(0,n.jsx)(h.A,{variant:"caption",color:"textSecondary",sx:{display:"block",mb:.5},children:t("chat.debug.historyHelp")}),e.map((e,t)=>(0,n.jsx)(az,{role:e.role,content:e.preview??"",toolCallNames:e.toolCallNames,status:e.status,faded:"sent"!==e.status&&"system"!==e.status},e.id??`hist-${t}`)),e.some(e=>"sent"!==e.status&&"system"!==e.status)&&(0,n.jsx)(h.A,{variant:"caption",color:"textSecondary",sx:{display:"block",mt:1},children:t("chat.debug.badgeHelp")})]})},aE=()=>{},aT=({modelInput:e,conversationId:t})=>{let{t:a}=(0,eE.s9)(),[o,l]=(0,r.useState)("wire"),{systemMessage:s,wireMessages:d,provenance:c,counts:u,inputMode:p}=e,g=(0,r.useMemo)(()=>(d||[]).filter(e=>"system"!==e.role),[d]);return(0,n.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",p:1},children:[(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap",mb:1},children:[(0,n.jsx)(h.A,{variant:"caption",color:"textSecondary",children:a?[a("chat.debug.summary",{history:u.threaded,sent:u.sent}),u.folded?a("chat.debug.foldedCount",{count:u.folded}):"",u.scopedOut?a("chat.debug.scopedCount",{count:u.scopedOut}):"",u.handoffStripped?a("chat.debug.handoffCount",{count:u.handoffStripped}):""].filter(Boolean).join(" \xb7 "):`${u.threaded} in history → ${u.sent} sent`+(u.folded?` \xb7 ${u.folded} folded`:"")+(u.scopedOut?` \xb7 ${u.scopedOut} scoped out`:"")+(u.handoffStripped?` \xb7 ${u.handoffStripped} handoff-stripped`:"")}),p&&"full-history"!==p&&(0,n.jsx)(x.A,{size:"small",variant:"outlined",label:`inputMode: ${p}`})]}),(0,n.jsxs)(t_.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,n.jsx)(tq.A,{expandIcon:(0,n.jsx)(el.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,n.jsx)(h.A,{variant:"caption",children:(0,n.jsx)("b",{children:a("chat.debug.systemMessage")})})}),(0,n.jsx)(tH.A,{sx:{p:0},children:s&&s.content.trim().length>0?(0,n.jsx)(tg.A,{variant:"outlined",sx:{p:1,maxHeight:220,overflowY:"auto"},children:(0,n.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem",fontFamily:"inherit"},children:s.content})}):(0,n.jsx)(h.A,{variant:"caption",color:"textSecondary",children:a("chat.debug.noSystem")})})]}),(0,n.jsxs)(b.A,{size:"small",exclusive:!0,value:o,onChange:(e,t)=>{t&&l(t)},sx:{my:1},children:[(0,n.jsx)(y.A,{value:"wire",children:a("chat.debug.modelView")}),(0,n.jsx)(y.A,{value:"annotated",children:a("chat.debug.fullHistory")})]}),(0,n.jsx)(i.default,{children:"wire"===o?0===g.length?(0,n.jsx)(h.A,{variant:"body2",color:"textSecondary",sx:{p:1},children:a("chat.debug.noConversation")}):(0,n.jsx)(eJ.Ay,{messages:g,conversationId:t?`debug-${t}`:void 0,onToggleDisabled:aE,onSplitConversation:aE}):(0,n.jsx)(aM,{provenance:c})})]})};var aN=a(97282);let aR=({mode:e,onClose:t,isExpanded:a,onToggleExpand:r})=>{let{t:o}=(0,eE.s9)();return(0,n.jsxs)(tg.A,{elevation:0,square:!0,sx:{height:"100%",display:"flex",flexDirection:"column",minHeight:0,bgcolor:"background.default"},children:[(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.5,borderBottom:1,borderColor:"divider",flexShrink:0},children:[(0,n.jsx)(aN.A,{fontSize:"small",color:"primary"}),(0,n.jsx)(h.A,{variant:"subtitle2",sx:{flexGrow:1},children:o("chat.debug.title")}),r&&(0,n.jsx)(p.A,{title:o(a?"chat.debug.exitFullscreen":"chat.debug.enterFullscreen"),children:(0,n.jsx)(g.A,{size:"small",onClick:r,"aria-label":o(a?"chat.debug.exitFullscreen":"chat.debug.enterFullscreen"),children:a?(0,n.jsx)(tU.A,{fontSize:"small"}):(0,n.jsx)(tL.A,{fontSize:"small"})})}),(0,n.jsx)(p.A,{title:o("chat.debug.close"),children:(0,n.jsx)(g.A,{size:"small",onClick:t,"aria-label":o("chat.debug.close"),children:(0,n.jsx)(tB.A,{fontSize:"small"})})})]}),(0,n.jsxs)(i.default,{sx:{flexGrow:1,minHeight:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:2,p:3,textAlign:"center"},"data-testid":"debugger-pending",children:[(0,n.jsx)(c.default,{size:32}),(0,n.jsx)(h.A,{variant:"body2",color:"textSecondary",children:o("attaching"===e?"chat.debug.pendingAttaching":"chat.debug.pendingArmed")}),(0,n.jsx)(h.A,{variant:"caption",color:"textSecondary",sx:{maxWidth:420},children:o("attaching"===e?"chat.debug.pendingAttachingHelp":"chat.debug.pendingArmedHelp")})]}),(0,n.jsxs)(i.default,{sx:{display:"flex",gap:1,p:1,borderTop:1,borderColor:"divider",flexShrink:0},children:[(0,n.jsx)(d.A,{variant:"outlined",size:"small",disabled:!0,children:o("chat.debug.previous")}),(0,n.jsx)(d.A,{variant:"contained",size:"small",disabled:!0,children:o("chat.debug.stepNext")}),(0,n.jsx)(d.A,{variant:"outlined",size:"small",disabled:!0,children:o("chat.debug.stepOver")}),(0,n.jsx)(d.A,{variant:"contained",color:"secondary",size:"small",disabled:!0,children:o("chat.debug.continue")})]})]})},aD=(0,tD.h)("frontend/components/Chat/ExecutedFlowPanel"),aO={start:t0.vm,process:t0.Uw,finish:t0.IK,mcp:t0.v2,subflow:t0.lA,resource:t0.z9,signal:t0.z3},aP={custom:t1.jY,mcpEdge:t1.oY,resourceEdge:t1.sZ},aF=({flowId:e,flowSnapshot:t,executedNodeIds:a,liveActivity:o,onClose:l})=>{let{t:s}=(0,eE.s9)(),d=(0,S.A)(),[f,m]=(0,r.useState)(null),[x,b]=(0,r.useState)(!0),[y,v]=(0,r.useState)(null),[w,A,j]=(0,tQ.ck)([]),[k,I,C]=(0,tQ.fM)([]);(0,r.useEffect)(()=>{let a=!1;return(async()=>{b(!0),v(null);try{if(t&&Array.isArray(t.nodes)){a||m(t);return}if(!e)throw Error(s("chat.executed.noAgent"));aD.debug(`Loading flow definition for ID: ${e}`);let n=await tZ.g.getFlow(e);if(!n)throw Error(s("chat.executed.notFound",{id:e}));a||m(n)}catch(e){aD.error("Error loading flow definition:",e),a||(v(e instanceof Error?e.message:s("chat.executed.loadFailed")),m(null))}finally{a||b(!1)}})(),()=>{a=!0}},[e,t,s]),(0,r.useEffect)(()=>{f&&(A(f.nodes.map(e=>({...e,draggable:!1,selectable:!1,connectable:!1}))),I(f.edges.map(e=>({...e,selectable:!1}))))},[f,A,I]);let $=(0,r.useMemo)(()=>new Set(a),[a]),[z,M]=(0,r.useState)(()=>Date.now());(0,r.useEffect)(()=>{if(!o)return;let e=()=>Object.values(o.byNode).some(e=>Date.now()-e.ts<4e3);if(!e())return;let t=setInterval(()=>{M(Date.now()),e()||clearInterval(t)},350);return()=>clearInterval(t)},[o]);let E=(0,r.useMemo)(()=>w.map(e=>{let t=$.has(e.id),a=o?.byNode[e.id],n=!!a&&z-a.ts<4e3;return{...e,style:{...e.style,opacity:t||n?1:.4,border:n?`2px solid ${d.palette.primary.main}`:t?`2px solid ${d.palette.success.main}`:`1px solid ${d.palette.divider}`,boxShadow:n?`0 0 10px ${d.palette.primary.light}`:t?`0 0 8px ${d.palette.success.light}`:void 0}}}),[w,$,o,z,d]);return(0,n.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%",borderLeft:1,borderColor:"divider",minWidth:0},children:[(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,px:1.5,py:1,borderBottom:1,borderColor:"divider",flexShrink:0},children:[(0,n.jsx)(_.A,{fontSize:"small",color:"action"}),(0,n.jsx)(h.A,{variant:"subtitle2",sx:{flex:1,minWidth:0},noWrap:!0,children:s("chat.executed.title")}),(0,n.jsx)(p.A,{title:s("chat.executed.hide"),children:(0,n.jsx)(g.A,{size:"small",onClick:l,"aria-label":s("chat.executed.hide"),children:(0,n.jsx)(tB.A,{fontSize:"small"})})})]}),(0,n.jsx)(i.default,{sx:{flex:1,minHeight:0,position:"relative"},children:x?(0,n.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,n.jsx)(c.default,{})}):y?(0,n.jsx)(u.A,{severity:"info",sx:{m:2},children:y}):(0,n.jsx)(tQ.Ln,{children:(0,n.jsx)(tQ.Gc,{nodes:E,edges:k,onNodesChange:j,onEdgesChange:C,nodeTypes:aO,edgeTypes:aP,fitView:!0,attributionPosition:"bottom-right",nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!1})})})]})};var aW=a(12289),a_=a(62310),aq=a(26636);let aH={authentication:"chat.page.errorClass.authentication",authorization:"chat.page.errorClass.authorization",cancelled:"chat.page.errorClass.cancelled",configuration:"chat.page.errorClass.configuration",context_limit:"chat.page.errorClass.context_limit",network:"chat.page.errorClass.network",provider:"chat.page.errorClass.provider",rate_limit:"chat.page.errorClass.rate_limit",timeout:"chat.page.errorClass.timeout",validation:"chat.page.errorClass.validation",unknown:"chat.page.errorClass.unknown"};function aB({error:e,fallbackMessage:t,compact:a}){let{t:o}=(0,eE.s9)(),[l,s]=(0,r.useState)(!1),[d,c]=(0,r.useState)(!1),u=e?.message||t||o("chat.page.endedError"),p=!!(e&&(e.code||e.httpStatus||e.errorClass||e.retryAfter)),g=async()=>{try{let t=JSON.stringify(e??{message:u},null,2);await navigator.clipboard.writeText(t),c(!0)}catch{}};return(0,n.jsxs)(i.default,{sx:{minWidth:0},children:[(0,n.jsx)(h.A,{variant:"body2",component:"span",sx:{wordBreak:"break-word"},children:u}),p&&(0,n.jsxs)(aW.A,{direction:"row",spacing:.5,flexWrap:"wrap",sx:{mt:.5},children:[e?.code&&(0,n.jsx)(x.A,{size:"small",variant:"outlined",label:o("chat.page.errorCode",{code:e.code})}),e?.httpStatus!==void 0&&(0,n.jsx)(x.A,{size:"small",variant:"outlined",label:o("chat.page.errorStatus",{status:e.httpStatus})}),e?.errorClass&&(0,n.jsx)(x.A,{size:"small",variant:"outlined",label:o(aH[e.errorClass])}),e?.retryAfter&&(0,n.jsx)(x.A,{size:"small",variant:"outlined",label:o("chat.page.errorRetryAfter",{seconds:e.retryAfter})})]}),!a&&e&&(e.details||p)&&(0,n.jsxs)(i.default,{sx:{mt:.5},children:[(0,n.jsxs)(aW.A,{direction:"row",spacing:1.5,alignItems:"center",children:[(0,n.jsxs)(a_.A,{component:"button",type:"button",variant:"caption",underline:"hover",onClick:()=>s(e=>!e),sx:{color:"inherit"},children:[o("chat.page.errorDetails")," ",l?"▾":"▸"]}),(0,n.jsx)(a_.A,{component:"button",type:"button",variant:"caption",underline:"hover",onClick:g,sx:{color:"inherit"},children:o("chat.page.errorCopy")})]}),l&&e.details&&(0,n.jsx)(i.default,{component:"pre",sx:{mt:.5,p:1,maxHeight:240,overflow:"auto",fontSize:"0.7rem",bgcolor:"action.hover",borderRadius:1,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:JSON.stringify(e.details,null,2)})]}),(0,n.jsx)(aq.A,{open:d,autoHideDuration:2e3,onClose:()=>c(!1),message:o("chat.page.errorCopied")})]})}function aL(e){return e?.nodes?.find(e=>(e?.type??e?.data?.type)==="start")}var aU=a(44424),aK=a(19260),aX=a(52375),aJ=a(39749),aV=a(45355),aG=a(22766),aY=a(51893),aQ=a(60317),aZ=a(81220),a0=a(13286),a1=a(16007);function a2(e){return(0,a1.BV)(`flujo-ui:mcp-canvas:dismissed:${e}`)}function a5(e){let t=(0,ez.Aq)(a2(e),[]);return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}function a4(e,t,a){if(0===t.length)return;let n=new Set(a5(e));for(let e of t)a?n.add(e):n.delete(e);(0,ez.vi)(a2(e),[...n])}function a6(e){return(0,a1.BV)(`flujo-ui:mcp-canvas:auto-open-suppressed:${e}`)}function a3(e){return!0===(0,ez.Aq)(a6(e),!1)}let a8=(0,tD.h)("frontend/components/Chat/index");function a7(e){let t=(0,r.useRef)(e);return t.current=e,(0,r.useCallback)((...e)=>t.current(...e),[])}function a9(e){if(Array.isArray(e.content))return e.content;let t="string"==typeof e.content?e.content:"",a=e.attachments??[],n=a.filter(e=>"document"===e.type&&!e.content.startsWith("data:")),r=a.filter(e=>"image"===e.type),o=a.filter(e=>"image"!==e.type&&!n.includes(e));if(n.length>0&&(t+="\n\n"+n.map(e=>`[DOCUMENT]: ${e.content}`).join("\n\n")),0===r.length&&0===o.length)return t;let l=[];for(let e of(t.trim()&&l.push({type:"text",text:t}),r))l.push({type:"image_url",image_url:{url:e.content}});for(let e of o)if("audio"===e.type){let t=/^data:([^;,]+);base64,([\s\S]*)$/.exec(e.content),a=e.mimeType??t?.[1];t&&("audio/wav"===a||"audio/mpeg"===a)?l.push({type:"input_audio",input_audio:{data:t[2],format:"audio/mpeg"===a?"mp3":"wav"}}):l.push({type:"audio_url",audio_url:{url:e.content,mime_type:a}}),e.transcript&&l.push({type:"text",text:`[Audio transcript]: ${e.transcript}`})}else"video"===e.type?l.push({type:"video_url",video_url:{url:e.content,mime_type:e.mimeType}}):l.push({type:"file",file:{file_data:e.content,filename:e.originalName,mime_type:e.mimeType}});return l}let ne=(e,t)=>e.length===t.length&&e.every((e,a)=>{let n=t[a];return e.id===n.id&&e.title===n.title&&e.flowId===n.flowId&&e.status===n.status&&e.recovery?.classification===n.recovery?.classification&&e.recovery?.updatedAt===n.recovery?.updatedAt&&e.plannedExecutionId===n.plannedExecutionId&&e.source===n.source&&e.parentConversationId===n.parentConversationId&&e.rootConversationId===n.rootConversationId&&e.createdAt===n.createdAt&&e.updatedAt===n.updatedAt&&e.lastUserMessageAt===n.lastUserMessageAt}),nt=/cancelled by user|execution cancelled/i,na=e=>e?.code==="cancelled"||e?.error?.code==="cancelled"||[e?.message,"string"==typeof e?.body?.error?e.body.error:void 0].some(e=>"string"==typeof e&&nt.test(e)),nn=()=>{var e;let t,a=(0,l.useRouter)(),o=(0,S.A)(),{t:K,tp:X}=(0,eE.s9)(),{settings:J}=(0,aJ.useStorage)(),V=J?.experimental?.requireMcpAppLaunchClick!==!0,G=(0,s.A)(o.breakpoints.down("lg"),{noSsr:!0}),Y=(0,s.A)(o.breakpoints.down("sm"),{noSsr:!0}),[Q,Z]=(0,r.useState)([]),[ee,et]=(0,r.useState)(!0),[ea,en]=(0,r.useState)(!1),[er,eo]=(0,r.useState)(null),[el,es]=(0,r.useState)({total:0,hasMore:!1}),ei=(0,r.useRef)(el),ed=(0,r.useRef)(0),ec=(0,r.useCallback)(e=>{ei.current=e,es(e)},[]),[eu,eh]=(0,r.useState)(null),[ep,eg]=(0,r.useState)(!1),[ef,em]=(0,r.useState)(null),[ex,eb]=(0,U.Mj)(U.Zg.CURRENT_CONVERSATION_ID,null),ey=(0,r.useRef)(ex),ev=(0,r.useRef)(new Map),[ew,eA]=(0,r.useState)(()=>new Set),[ek,eS]=(0,r.useState)(0),eI=(0,r.useMemo)(()=>ex?new Set(a5(ex)):new Set,[ex,ek]),eC=(0,r.useCallback)((e,t,a)=>{let n;n=new Set(a5(e)),a?n.add(t):n.delete(t),(0,ez.vi)(a2(e),[...n]),eS(e=>e+1)},[]),e$=(0,r.useCallback)(e=>{let t=ey.current;t&&eC(t,e,!1)},[eC]),[eM,eT]=(0,r.useState)(0),eN=(0,r.useMemo)(()=>!!ex&&a3(ex),[ex,eM]),eR=(0,r.useCallback)((e,t)=>{(0,ez.vi)(a6(e),t),eT(e=>e+1)},[]),eD=(0,r.useRef)(new Map),eO=(0,r.useRef)(0),eP=(0,r.useCallback)(e=>{let t=eO.current+1;eO.current=t;let a=ey.current;if(a===e)return void eb(e);let n=a?`${a}\u0000`:null,r=n?[...eD.current.entries()].filter(([e])=>e.startsWith(n)).map(([,e])=>e):[];if(0===r.length){ey.current=e,eb(e);return}Promise.allSettled(r.map(e=>e())).then(()=>{eO.current===t&&(ey.current=e,eb(e))})},[eb]),[eF,e_]=(0,U.Mj)(U.Zg.LAST_PICKED_FLOW_ID,null),[eq,eH]=(0,r.useState)(!1),[eB,eL]=(0,r.useState)(new Set),eU=(0,r.useCallback)((e,t)=>{e&&eL(a=>{if(t===a.has(e))return a;let n=new Set(a);return t?n.add(e):n.delete(e),n})},[]),[eK,e1]=(0,r.useState)({}),e2=(0,r.useRef)(!1),[e5,e3]=(0,r.useState)(null),[e8,e7]=(0,r.useState)(null),[e9,te]=(0,r.useState)(null),[tt,ta]=(0,r.useState)(null),[tn,tr]=(0,r.useState)([]),[to,tl]=(0,r.useState)(!1),[ts,ti]=(0,r.useState)(!1),[td,tc]=(0,r.useState)(""),[tu,th]=(0,r.useState)(!1),[tg,tf]=(0,r.useState)(null),[tm,tb]=(0,r.useState)(null),[ty,tv]=(0,r.useState)(null),[tw,tA]=(0,r.useState)(null),[tj,tk]=(0,r.useState)(null),[tS,tI]=(0,r.useState)(null),[tz,tM]=(0,r.useState)(!1),[tE,tT]=(0,r.useState)(null),[tN,tR]=(0,r.useState)(-1),[tD,tO]=(0,r.useState)(0),[tF,tW]=(0,r.useState)("chat"),[t_,tq]=(0,r.useState)(!1),[tH,tB]=(0,r.useState)(!1),[tL,tU]=(0,r.useState)(!1),[tK,tX]=(0,r.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-debugger-width"));return Number.isFinite(e)&&e>0?e:0}),[tJ,tV]=(0,r.useState)(()=>"1"===window.localStorage.getItem("flujo-debugger-expanded"));(0,r.useEffect)(()=>{window.localStorage.setItem("flujo-debugger-expanded",tJ?"1":"0")},[tJ]),(0,r.useEffect)(()=>{tW("chat"),tR(-1),tO(0)},[ex]),(0,r.useEffect)(()=>{tE||(tW("chat"),tR(-1),tO(0))},[tE]);let[tG,tY]=(0,r.useState)(()=>"1"===window.localStorage.getItem("flujo-workflow-panel-visible"));(0,r.useEffect)(()=>{window.localStorage.setItem("flujo-workflow-panel-visible",tG?"1":"0")},[tG]);let[tQ,t0]=(0,r.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-workflow-panel-width"));return Number.isFinite(e)&&e>0?e:320}),t1=(0,r.useCallback)(e=>{e.preventDefault();let t=e.clientX,a=0;t0(e=>(a=e,e));let n=document.body.style.userSelect,r=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let o=e=>{t0(Math.min(Math.max(a+(t-e.clientX),240),Math.round(.7*window.innerWidth)))},l=()=>{window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",l),document.body.style.userSelect=n,document.body.style.cursor=r,t0(e=>(e>0&&window.localStorage.setItem("flujo-workflow-panel-width",String(Math.round(e))),e))};window.addEventListener("pointermove",o),window.addEventListener("pointerup",l)},[]),t5=(0,r.useCallback)(e=>{e.preventDefault();let t=document.body.style.userSelect,a=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let n=e=>{tX(Math.min(Math.max(window.innerWidth-e.clientX,360),Math.round(.85*window.innerWidth)))},r=()=>{window.removeEventListener("pointermove",n),window.removeEventListener("pointerup",r),document.body.style.userSelect=t,document.body.style.cursor=a,tX(e=>(e>0&&window.localStorage.setItem("flujo-debugger-width",String(Math.round(e))),e))};window.addEventListener("pointermove",n),window.addEventListener("pointerup",r)},[]),[t4,t6]=(0,r.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-chat-sidebar-width"));return Number.isFinite(e)&&e>0?e:300}),[t3,t8]=(0,r.useState)(()=>"1"===window.localStorage.getItem("flujo-chat-sidebar-collapsed")),[t7,t9]=(0,r.useState)(!1),ae=G?!t7:t3,at=(0,r.useCallback)(()=>{G?t9(e=>!e):t8(e=>{let t=!e;return window.localStorage.setItem("flujo-chat-sidebar-collapsed",t?"1":"0"),t})},[G]),aa=a7(e=>{eP(e),G&&t9(!1)}),an=(0,r.useCallback)(e=>{e.preventDefault();let t=document.body.style.userSelect,a=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let n=e=>{t6(Math.min(Math.max(e.clientX,220),560))},r=()=>{window.removeEventListener("pointermove",n),window.removeEventListener("pointerup",r),document.body.style.userSelect=t,document.body.style.cursor=a,t6(e=>(e>0&&window.localStorage.setItem("flujo-chat-sidebar-width",String(Math.round(e))),e))};window.addEventListener("pointermove",n),window.addEventListener("pointerup",r)},[]),[ar,ao]=(0,r.useState)(null),[al,as]=(0,r.useState)(null),[ai,ad]=(0,r.useState)(t2),[ac,au]=(0,r.useState)([]),[ah,ap]=(0,r.useState)(e4),[ag,af]=(0,r.useState)([]),[am,ax]=(0,r.useState)(new Set),[ab,ay]=(0,r.useState)([]),[av,aw]=(0,r.useState)(null),aA=(0,r.useRef)(null),aj=(0,r.useRef)(null),ak=(0,r.useRef)(null),aS=(0,r.useRef)(null),aC=(0,r.useRef)(-1),a$=(0,r.useRef)(new Map);(0,r.useEffect)(()=>{ey.current=ex},[ex]);let az=(0,r.useRef)(new Set),aM=(0,r.useRef)(null),aE=(0,r.useRef)(!1),aN=(0,r.useRef)(new Set),aD=(0,r.useRef)(new Set),[aO,aP]=(0,r.useState)(new Set),aW=(0,r.useCallback)((e,t)=>{e&&(t?aD.current.add(e):aD.current.delete(e),aP(new Set(aD.current)))},[]),a_=function(e={}){let{conversationId:t,messages:a,autoHideEnabled:n,idleMs:o}=e,l=(0,S.A)(),i=(0,s.A)(l.breakpoints.down("sm")),d=function({enabled:e,idleMs:t=2500}){let[a,n]=(0,r.useState)(!1),o=(0,r.useRef)(null),l=(0,r.useCallback)(()=>{o.current&&(clearTimeout(o.current),o.current=null)},[]),s=(0,r.useCallback)(()=>{l(),o.current=setTimeout(()=>{o.current=null,n(!0)},t)},[l,t]),i=(0,r.useCallback)(()=>{(n(!1),e)?s():l()},[s,l,e]);return(0,r.useEffect)(()=>(e?(n(!1),s()):(l(),n(!1)),l),[e,t,s,l]),{visible:!e||!a,poke:i}}({enabled:n??i,...void 0===o?{}:{idleMs:o}}),c=(0,C.Q)({bottomThreshold:80,anchorSelector:"[data-ask-flujo-message-id]",deps:[t,a]}),u=c.ref,h=(0,r.useRef)(!0),p=(0,r.useCallback)((e="auto")=>{let t=u.current;t&&(t.scrollTo({top:t.scrollHeight,behavior:(0,$.ik)(e)}),c.measure())},[u,c]),g=(0,r.useCallback)(()=>{let e=u.current;e&&(h.current=e.scrollHeight-e.scrollTop-e.clientHeight<80),c.onScroll(),d.poke()},[u,c,d]),f=(0,r.useCallback)(()=>{d.poke()},[d]),m=(0,r.useCallback)(()=>{h.current=!1;let e=u.current;e&&e.scrollTo({top:0,behavior:(0,$.ik)("smooth")}),c.measure()},[u,c]),x=(0,r.useCallback)(()=>{h.current=!1,c.scrollToPreviousAnchor()},[c]),b=(0,r.useCallback)(()=>{h.current=!0,p("smooth")},[p]),y=(0,r.useCallback)(e=>{d.poke(),"top"===e?m():"up"===e?x():"bottom"===e&&b()},[d,m,x,b]);(0,r.useEffect)(()=>{h.current=!0,p("auto")},[t]),(0,r.useEffect)(()=>{h.current&&p("auto")},[a]);let v=(0,r.useMemo)(()=>({top:c.atTop,up:c.atTop,bottom:c.atBottom}),[c.atTop,c.atBottom]);return{containerProps:{ref:u,onScroll:g,onPointerDown:f},scrollRef:u,show:c.scrollable&&d.visible,actions:z,disabled:v,onAction:y,jumpToLatest:b,isPinnedToBottom:()=>h.current}}({conversationId:ex,messages:eu?.messages}),aq=(0,r.useRef)(null);(0,r.useEffect)(()=>{aq.current=av},[av]),(0,r.useEffect)(()=>{let e=window.location.origin+"/v1";aA.current=new aX.Ay({baseURL:e,apiKey:"FLUJO",dangerouslyAllowBrowser:!0,maxRetries:0,timeout:18e6})},[]),(0,r.useEffect)(()=>{(async()=>{a8.debug("Loading flows");try{let e=await tZ.g.loadFlows();tr(e)}catch(e){a8.error("Error loading flows:",e)}})()},[]);let aH=(0,r.useCallback)((e,t)=>{let a=t?.silent??!1,n=async()=>{a8.debug("Fetching conversation list from backend",{silent:a}),a||(et(!0),eo(null));let t=[],n=!1;try{let e=a?Math.max(50,ed.current):50,n=await eW.O.listConversationPage({limit:Math.min(200,e)}),r=[...n.items];for(;r.length<e&&n.nextCursor;)n=await eW.O.listConversationPage({limit:Math.min(200,e-r.length),cursor:n.nextCursor}),r.push(...n.items);for(let e of(ed.current=(t=r.filter(e=>!aN.current.has(e.id)).sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt))).length,ec({total:n.total,hasMore:n.hasMore,nextCursor:n.nextCursor}),t))az.current.delete(e.id);Z(e=>{let a=e.filter(e=>az.current.has(e.id)),n=e.find(e=>e.id===ey.current&&!az.current.has(e.id)&&!t.some(t=>t.id===e.id)),r=[...a,...t,...n?[n]:[]].sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt));return ne(e,r)?e:r}),a8.info(`Fetched ${t.length} conversations for the list`)}catch(e){n=!0,a8.error("Error fetching conversation list:",e),a||(eo(K("chat.page.historyLoadFailed")),Z([]),ed.current=0,ec({total:0,hasMore:!1}))}finally{if(a||et(!1),a||n)return;let r=void 0!==e?e:ey.current,o=ey.current;if(r&&(t.some(e=>e.id===r)||az.current.has(r)||void 0===e))r!==o&&(a8.debug(`Setting currentConversationId to ${r} after fetch/operation.`),eP(r));else if(t.length>0){let e=t[0].id;e!==o&&(a8.debug(`Selecting most recent conversation ${e} after fetch/operation.`),eP(e))}else null===o||az.current.has(o)||(a8.debug("No conversations available after fetch/operation, clearing selection."),eP(null))}};if(!a)return n();if(aM.current)return aE.current=!0,aM.current;let r=(async()=>{do aE.current=!1,await n();while(aE.current)})().finally(()=>{aM.current===r&&(aM.current=null)});return aM.current=r,r},[eP,K,ec]),a1=(0,r.useCallback)(async()=>{let e=ei.current.nextCursor;if(e&&!ea){en(!0);try{let t=await eW.O.listConversationPage({limit:50,cursor:e}),a=t.items.filter(e=>!aN.current.has(e.id));Z(e=>{let t=new Map(e.map(e=>[e.id,e]));for(let e of a)t.set(e.id,e);let n=[...t.values()].sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt));return ne(e,n)?e:n}),ed.current+=a.filter(e=>!az.current.has(e.id)).length,ec({total:t.total,hasMore:t.hasMore,nextCursor:t.nextCursor})}catch(e){a8.error("Could not load the next conversation page",e),eo(K("chat.page.historyLoadFailed"))}finally{en(!1)}}},[ea,K,ec]),nn=(0,r.useCallback)(async()=>{let e=(await eW.O.listAllConversationPages()).filter(e=>!aN.current.has(e.id)).sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt));ed.current=e.length,ec({total:e.length,hasMore:!1});let t=[...Q.filter(e=>az.current.has(e.id)),...e].sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt));return Z(e=>ne(e,t)?e:t),t},[Q,ec]);(0,r.useEffect)(()=>{aH()},[]),(0,r.useEffect)(()=>{let e=null,t=null,a=null,n=!1,r=0,o=()=>{e&&clearTimeout(e),t&&clearTimeout(t),e=null,t=null},l=()=>{e&&clearTimeout(e),n||"visible"!==document.visibilityState||(e=setTimeout(()=>{e=null,r=Date.now(),aH(void 0,{silent:!0}).finally(l)},3e4))},s=()=>{n||"visible"!==document.visibilityState||t||(t=setTimeout(()=>{t=null,r=Date.now(),aH(void 0,{silent:!0}).finally(l)},Math.max(200,5e3-(Date.now()-r))))},i=()=>{a||n||"visible"!==document.visibilityState||(a=eW.O.subscribeToSidebarEvents({onEvent:s}))},d=()=>{a?.close(),a=null},c=()=>{if("visible"!==document.visibilityState){o(),d();return}i(),r=Date.now(),aH(void 0,{silent:!0}).finally(l)};return r=Date.now(),i(),l(),document.addEventListener("visibilitychange",c),()=>{n=!0,o(),d(),document.removeEventListener("visibilitychange",c)}},[aH]);let nr=(0,r.useCallback)(async e=>{if(az.current.has(e))return void a8.debug("Skipping detail fetch for client-only conversation",{conversationId:e});if(ey.current!==e){a8.debug("Detail fetch requested for non-viewed conversation; refreshing list instead",{conversationId:e}),aH(void 0,{silent:!0});return}a8.debug("Fetching detailed conversation",{conversationId:e}),eg(!0),em(null);try{let t=await eW.O.getConversation(e);if(ey.current!==e)return void a8.debug("Discarding stale detailed conversation response",{fetchedId:e,currentId:ey.current});void 0===t.mcpAppContexts||a$.current.has(e)||a$.current.set(e,{...t.mcpAppContexts}),eh(t),"error"===t.status&&t.lastError?e7(t.lastError):"error"!==t.status&&e7(null),Z(a=>a.map(a=>a.id===e?{...a,title:t.title,flowId:t.flowId,updatedAt:t.updatedAt,status:t.status??a.status}:a).sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt))),a8.info("Fetched detailed conversation successfully",{conversationId:e})}catch(t){if(a8.error("Error fetching detailed conversation:",{conversationId:e,err:t}),ey.current!==e)return;t instanceof eW.b&&404===t.status?(em(K("chat.page.conversationNotFound",{id:e})),eP(null),aH()):em(K("chat.page.detailsLoadFailed",{id:e})),eh(null)}finally{ey.current===e&&eg(!1)}},[aH,eP,K]);(0,r.useEffect)(()=>{tf(null),tk(null),ex?nr(ex):(eh(null),eg(!1),em(null))},[ex,nr]),(0,r.useEffect)(()=>{let e=eu?.id;if(!e||e!==ex)return void eA(e=>0===e.size?e:new Set);let t=(0,a0.fT)(ev.current,e,eu.messages);0!==t.length&&eA(new Set((0,a0.pv)(eu.messages,t)))},[ex,eu?.id,eu?.messages]),(0,r.useEffect)(()=>{if(0===ew.size)return;let e=window.setTimeout(()=>eA(new Set),1500);return()=>window.clearTimeout(e)},[ew]);let no=eu?.parentConversationId?Q.find(e=>e.id===eu.parentConversationId):void 0;(0,r.useEffect)(()=>{let e=eu?.id;if(!(e&&eu?.status==="error")||!e)return void te(null);let t=!1;return eW.O.getSubflowRecoveryOptions(e).then(e=>{t||te(e.hasRecoverableFamily?e:null)}).catch(a=>{a8.warn("Could not load subflow recovery options",{conversationId:e,err:a}),t||te(null)}),()=>{t=!0}},[eu?.id,eu?.parentConversationId,eu?.status,no?.status,no?.updatedAt,no?.recovery?.updatedAt]),(0,r.useEffect)(()=>{eu&&tl(eu.requireApproval??!1)},[eu?.id]);let nl=(0,r.useCallback)(async e=>{if(tl(e),ex)try{await eW.O.updateConversationApproval(ex,e)}catch(e){a8.warn("Failed to persist requireApproval setting",{conversationId:ex,err:e})}},[ex]),ns=Q.find(e=>e.id===ex)||null,ni=(0,r.useMemo)(()=>{let e={};for(let t of tn)t.id&&(e[t.id]=t.name);return e},[tn]),nd=(0,r.useMemo)(()=>tn.find(e=>e.id===eu?.flowId)||null,[tn,eu?.flowId]),nc=(0,r.useCallback)(e=>{if("chat-message"===e.target.kind&&e.target.id&&"highlight"===e.type){let t=[...document.querySelectorAll("[data-ask-flujo-message-id]")].find(t=>t.getAttribute("data-ask-flujo-message-id")===e.target.id)??null,a=(0,aG.g_)(t);return{success:a,message:a?"Highlighted the conversation message.":"That message is not currently visible."}}if("chat-field"===e.target.kind&&"title"===e.target.field){if("highlight"===e.type){let e=(0,aG.g_)(document.querySelector("[data-ask-flujo-chat-title]"));return{success:e,message:e?"Highlighted the conversation title.":"The title is not currently visible."}}return"string"==typeof e.value&&e.value.trim()?(tc(e.value),ti(!0),{success:!0,message:"Updated the title field. Confirm it with the normal save control."}):{success:!1,message:"The conversation title must be non-empty text."}}return{success:!1,message:"That conversation UI target is not supported."}},[]);(0,aV.qz)({scopeId:eu?`chat:${eu.id}`:"chat:none",pageType:"chat",route:"/chat",title:eu?.title??K("nav.talk"),identifiers:{conversationId:eu?.id??ex,flowId:eu?.flowId??null},data:{conversation:eu,selectedFlow:nd,requireApproval:to,executeInDebugger:tu},capabilities:{highlightTargets:[...(eu?.messages??[]).map(e=>({kind:"chat-message",id:e.id,role:e.role,processNodeId:e.processNodeId})),{kind:"chat-field",field:"title"}],editableTargets:[{kind:"chat-field",field:"title"}],notes:["The conversation id and flow id are always supplied explicitly."]}},nc,100);let nu=(0,r.useMemo)(()=>nd?.nodes?.map(e=>({id:e.id,label:e.data.label||e.id}))||[],[nd]),nh=(0,r.useMemo)(()=>{var e;let t;return e={messages:eu?.messages,nodeExecutionTracker:tE?.trackingInfo?.nodeExecutionTracker,executionTrace:tE?.executionTrace,sseVisitedIds:am},t=new Set,e.messages?.forEach(e=>{e?.processNodeId&&t.add(e.processNodeId)}),e.nodeExecutionTracker?.forEach(e=>{e?.nodeId&&t.add(e.nodeId)}),e.executionTrace?.forEach(e=>{e?.nodeId&&t.add(e.nodeId)}),e.sseVisitedIds?.forEach(e=>{e&&t.add(e)}),Array.from(t)},[eu?.messages,tE,am]);(0,r.useEffect)(()=>{ax(new Set),au([])},[eu?.id]);let np=(0,r.useMemo)(()=>{let e=e=>!!e&&nu.some(t=>t.id===e);if(e(tj))return tj;if(e(eu?.currentNodeId))return eu.currentNodeId;let t=eu?.messages??[];for(let a=t.length-1;a>=0;a--){let n=t[a];if("assistant"===n.role&&e(n.processNodeId))return n.processNodeId}return nu[0]?.id??null},[tj,eu,nu]),ng=async e=>{a8.debug("Attempting to create new conversation"),e3(null),e7(null);let t="string"!=typeof e||ej(e)?void 0:tn.find(t=>t.id===e),a=eF&&!ej(eF)?tn.find(e=>e.id===eF):void 0,n=(t??a??tn.find(e=>e.favorite)??tn[0])?.id||null;if(!n){a8.error("Cannot create conversation: No flows available or first flow has no ID."),e3(K("chat.page.noAgents"));return}let r=(0,aK.A)(),o=Date.now(),l={id:r,title:K("chat.page.newTitle"),flowId:n,createdAt:o,updatedAt:o};try{a8.info("Sending request to create conversation on backend",{payload:JSON.stringify(l)});let e=await eW.O.createConversation(l);a8.info("Successfully created conversation on backend",{conversationId:e.id}),Z(t=>[e,...t].sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt))),eP(e.id),eh({id:e.id,title:e.title,flowId:e.flowId,createdAt:e.createdAt,updatedAt:e.updatedAt,messages:[]}),eg(!1),em(null)}catch(t){a8.error("Error creating conversation on backend:",t);let e=K("chat.page.createFailed");t instanceof eW.b?e+=` (${t.body?.error||t.message})`:t instanceof Error&&(e+=` (${t.message})`),e3(e)}};(0,aY.R)({param:"flow",ready:tn.length>0,exists:e=>tn.some(t=>t.id===e)&&!ej(e),onResolve:e=>ng(e),consume:!0,replacePath:"/chat"});let nf=a7(()=>{ng()});(0,aY.R)({param:aZ.AW,ready:tn.length>0,exists:e=>(0,aZ.k2)(e),onResolve:e=>{(0,aZ.pP)(e)&&nf()},consume:!0,replacePath:"/chat"}),(0,r.useEffect)(()=>(0,aZ.lP)(e=>{(0,aZ.pP)(e)&&nf()}),[nf]);let[nm,nx]=(0,r.useState)(null),nb=(0,r.useRef)(0),ny=(0,r.useCallback)(e=>{nb.current+=1,nx({id:e,requestKey:nb.current})},[]),nv=(0,r.useRef)(null),nw=(0,r.useRef)(!1),nA=(0,r.useCallback)(e=>{if(nv.current=e,Q.some(t=>t.id===e)){eP(e),ny(e);return}!ei.current.hasMore||nw.current?a8.warn("Conversation deep link target does not exist, ignoring",{id:e}):(nw.current=!0,nn().then(t=>{if(nv.current===e){if(!t.some(t=>t.id===e))return void a8.warn("Conversation deep link target does not exist, ignoring",{id:e});eP(e),ny(e)}}).catch(t=>{a8.warn("Could not materialize conversation deep link target",{id:e,error:t})}).finally(()=>{nw.current=!1}))},[Q,nn,ny,eP]);(0,aY.R)({param:"conversation",ready:!ee,exists:e=>Q.some(t=>t.id===e)||ei.current.hasMore,onResolve:e=>nA(e)});let[nj,nk]=(0,r.useState)(null);(0,aY.R)({param:"message",ready:!ep&&!!eu&&eu.id===ex,exists:e=>!!eu?.messages?.some(t=>t.id===e),onResolve:e=>nk(e),consume:!0,replacePath:ex?(0,aQ.F)({kind:"conversation",id:ex}):"/chat"}),(0,r.useEffect)(()=>{if(ee||nw.current)return;let e=new URLSearchParams(window.location.search);if(e.get("flow")||e.get("message")||e.get(aZ.AW))return;let t=ey.current,n=e.get("conversation");if(t){n!==t&&a.replace((0,aQ.F)({kind:"conversation",id:t}));return}n&&a.replace("/chat")},[ex,Q,ee,a]),(0,r.useEffect)(()=>{if(!nj)return;let e=window.setTimeout(()=>nk(null),4e3);return()=>window.clearTimeout(e)},[nj]),(0,r.useEffect)(()=>{nk(null)},[ex]);let[nS,nI]=(0,r.useState)(!1),nC=async e=>{e3(null),e7(null);let t=(0,aK.A)(),{flow:a}=await eW.O.synthesizeQuickChat({conversationId:t,modelId:e.modelId,servers:e.servers,systemPrompt:e.systemPrompt}),n=Date.now(),r=await eW.O.createConversation({id:t,title:K("chat.page.quickChat"),flowId:a.id,flowSnapshot:a,createdAt:n,updatedAt:n});Z(e=>[r,...e].sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt))),eP(r.id),eh({id:r.id,title:r.title,flowId:r.flowId,createdAt:r.createdAt,updatedAt:r.updatedAt,messages:[]}),eg(!1),em(null),nI(!1)},n$=(0,r.useCallback)(e=>{a8.debug("Updating detailed conversation state locally",{conversationId:e.id});let t={...e,updatedAt:Date.now()};eh(t),Z(e=>e.map(e=>e.id===t.id?{...e,title:t.title,updatedAt:t.updatedAt}:e).sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt)))},[]),nz=(0,r.useCallback)(()=>{ak.current&&(a8.debug("Closing execution event stream"),ak.current.close(),ak.current=null)},[]),nM=(0,r.useCallback)((e,t)=>{Z(a=>{let n=a.findIndex(t=>t.id===e);if(-1===n||a[n].status===t)return a;let r=[...a];return r[n]={...r[n],status:t},r})},[]),nE=(0,r.useCallback)(e=>{if("number"==typeof e.seq){if(e.seq<=aC.current)return;aC.current=e.seq}("run:start"===e.type||"run:done"===e.type||"run:paused"===e.type||"breakpoint:hit"===e.type||"subflow:start"===e.type||"subflow:done"===e.type||"node:enter"===e.type||"node:exit"===e.type||"resource:read"===e.type||"resource:write"===e.type||"error"===e.type)&&au(t=>{if("run:start"===e.type)return[e];let a=[...t,e];return a.length>2e3?a.slice(a.length-2e3):a}),"recovery:retry"!==e.type&&as(t=>t&&(!e.conversationId||t.conversationId===e.conversationId)?null:t);let t=e=>ao(t=>({totalTokens:e.totalTokens??t?.totalTokens??0,activeNode:void 0!==e.activeNode?e.activeNode:t?.activeNode??null,startedAt:t?.startedAt??Date.now(),lastEventAt:Date.now()})),a=e=>ad(t=>{let a,n=Date.now(),r={byNode:{...t.byNode},byResource:{...t.byResource},byResourceName:{...t.byResourceName},resourceVersion:t.resourceVersion};return e(r),{byNode:(a=e=>{let t={};for(let[a,r]of Object.entries(e))n-r.ts<4e3&&(t[a]=r);return t})(r.byNode),byResource:a(r.byResource),byResourceName:a(r.byResourceName),resourceVersion:r.resourceVersion}});if(null!=e.laneIndex)switch(ap(t=>(function(e,t,a=Date.now()){let n=t.laneIndex,r=t.laneCount;if(null==n||null==r)return e;let o=("subflow:start"===t.type||"subflow:done"===t.type)&&1===t.depth;if(o&&"subflow:start"===t.type){let o,l=t.node?.nodeId,s=e.ownerNodeId&&l&&e.ownerNodeId!==l?{}:{...e.byIndex};return e6(s,r,a),s[n]={laneIndex:n,laneCount:r,label:t.laneTitle||((o=t.subflowName||t.subflowId)?`${o} ${n+1}/${r}`:`Lane ${n+1}/${r}`),laneConversationId:t.laneConversationId??s[n]?.laneConversationId,status:"running",lastEventAt:a},{ownerNodeId:l??e.ownerNodeId,byIndex:s}}if(o&&"subflow:done"===t.type){let o={...e.byIndex};e6(o,r,a);let l=o[n];return o[n]={...l,label:l.label&&"pending"!==l.status?l.label:t.laneTitle||l.label,laneConversationId:l.laneConversationId??t.laneConversationId,status:"capped"===t.status?"completed":t.status,activity:void 0,lastEventAt:a},{ownerNodeId:e.ownerNodeId??t.node?.nodeId,byIndex:o}}let l=function(e){switch(e.type){case"node:enter":return e.node?.nodeName||e.node?.nodeId||void 0;case"tool:call":return e.name;case"tool:progress":return e.message?`${e.name} — ${e.message}`:e.name;case"subflow:start":return`↳ ${e.subflowName||e.subflowId}`;case"handoff":return`→ ${e.toNodeId}`;default:return}}(t);if(void 0===l)return e;let s=e.byIndex[n];if(s&&s.activity===l&&"pending"!==s.status||s&&("completed"===s.status||"error"===s.status))return e;let i={...e.byIndex};e6(i,r,a);let d=i[n];return i[n]={...d,status:"pending"===d.status?"running":d.status,activity:l,lastEventAt:a},{ownerNodeId:e.ownerNodeId,byIndex:i}})(t,e)),e.type){case"node:enter":if(e.node?.nodeId){let t=e.node.nodeId;a(e=>{e.byNode[t]={kind:"active",ts:Date.now()}}),ax(e=>e.has(t)?e:new Set(e).add(t))}t({});return;case"tool:call":case"tool:progress":case"subflow:start":case"handoff":t({});return}switch(e.type){case"run:start":ao({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),ad(t2),ap(e4),af([]),e.conversationId&&(nM(e.conversationId,"running"),aW(e.conversationId,!1));break;case"model:delta":t({}),eh(t=>{if(!t||t.id!==e.conversationId)return t;let a=t.messages.findIndex(t=>t.id===e.messageId),n=a>=0?t.messages[a]:{id:e.messageId,role:"assistant",content:"",timestamp:e.timestamp,processNodeId:e.node?.nodeId};if("assistant"!==n.role)return t;let r=[...n.tool_calls??[]],o=e.toolCallDelta;if(o){let t=r[o.index];r[o.index]={id:o.id??t?.id??`pending_${e.messageId}_${o.index}`,type:"function",function:{name:`${t?.function.name??""}${o.nameDelta??""}`,arguments:`${t?.function.arguments??""}${o.argumentsDelta??""}`}}}let l={...n,content:`${"string"==typeof n.content?n.content:""}${e.delta??""}`,...e.mediaPart?{media:[...n.media??[],...(n.media??[]).some(t=>t.type===e.mediaPart?.type&&t.url===e.mediaPart?.url&&t.resourceUri===e.mediaPart?.resourceUri)?[]:[e.mediaPart]]}:{},...r.length>0?{tool_calls:r}:{}},s=[...t.messages];return a>=0?s[a]=l:s.push(l),{...t,messages:s}});break;case"model:end":t({}),e.discard&&e.messageId&&eh(t=>{if(!t||t.id!==e.conversationId)return t;let a=t.messages.filter(t=>t.id!==e.messageId);return a.length===t.messages.length?t:{...t,messages:a}});break;case"message":{let a=e.message;t({}),eh(t=>{let n;if(!t||t.id!==e.conversationId)return t;let r=t.messages.findIndex(e=>e.id===a.id);return r>=0?(n=[...t.messages])[r]={...n[r],...a}:n=[...t.messages,a],{...t,messages:n}});break}case"node:changed-files":{t({});let a=e.node?.nodeId;if(!a||0===e.changedFiles.length)break;eh(t=>{if(!t||t.id!==e.conversationId)return t;let n=t.messages.findLastIndex(e=>e.processNodeId===a);if(n<0)return t;let r=[...t.messages];return r[n]={...r[n],changedFiles:e.changedFiles.map(({path:e,status:t})=>({path:e,status:t}))},{...t,messages:r}});break}case"usage":ao(t=>({totalTokens:(t?.totalTokens??0)+Math.max(0,(e.totalTokens||0)-(e.cacheReadTokens||0)),activeNode:t?.activeNode??null,startedAt:t?.startedAt??Date.now(),lastEventAt:Date.now()}));break;case"node:enter":if(t({activeNode:e.node?.nodeName||e.node?.nodeId||null}),e.node?.nodeId){let t=e.node.nodeId;a(e=>{e.byNode[t]={kind:"active",ts:Date.now()}}),ax(e=>e.has(t)?e:new Set(e).add(t))}break;case"resource:read":case"resource:write":{let n="resource:read"===e.type?"read":"write";if("resource:write"===e.type&&"snapshot"===e.source&&e.snapshot&&e.node?.nodeId&&e.conversationId===ey.current){let t=e.node.nodeId,a=e.snapshot.root;nJ(e.conversationId),nK(n=>(0,eY.aE)(n,{serverName:"filesystem",uri:"ui://devcanvas/diff",instanceKey:`snapshot::${t}::${a}`,toolName:"snapshot_diff",resultContent:JSON.stringify({snapshotDiff:{nodeId:t,nodeName:e.node?.nodeName,root:a,startSnapshot:e.snapshot?.startSnapshot,endSnapshot:e.snapshot?.endSnapshot,changedFiles:e.snapshot?.changedFiles,resourceUri:e.uri}}),updateId:e.seq},Date.now(),Number.MAX_SAFE_INTEGER).state)}a(t=>{var a,r;let o=Date.now();e.node?.nodeId&&(t.byNode[e.node.nodeId]={kind:"read"===n?"resource-read":"resource-write",ts:o}),e.server&&e.uri&&(t.byResource[a=e.server,r=e.uri,`${a} ${r}`]={kind:n,ts:o}),e.name&&(t.byResourceName[e.name]={kind:n,ts:o}),"write"===n&&(t.resourceVersion=t.resourceVersion+1)}),t({});break}case"todo:update":af(e.todos??[]),t({});break;case"tool:call":t({activeNode:e.name});break;case"tool:progress":t({activeNode:e.message?`${e.name} — ${e.message}`:e.name});break;case"subflow:start":t({activeNode:`↳ ${e.subflowName||e.subflowId}`});break;case"handoff":t({activeNode:`→ ${e.toNodeId}`});break;case"run:awaiting_approval":e.conversationId&&e.conversationId===ey.current&&tf(e.pendingToolCalls||[]),e.conversationId&&nM(e.conversationId,"awaiting_tool_approval");break;case"run:awaiting_elicitation":e.conversationId&&e.conversationId===ey.current&&tb({elicitationId:e.elicitationId,message:e.message,requestedSchema:e.requestedSchema});break;case"run:awaiting_question":e.conversationId&&e.conversationId===ey.current&&tv({questionId:e.questionId,questions:e.questions});break;case"breakpoint:hit":case"run:paused":eH(!1),e.conversationId&&(eU(e.conversationId,!1),nM(e.conversationId,"paused_debug")),tM(!0);break;case"run:done":if(e.conversationId&&(eU(e.conversationId,!1),nM(e.conversationId,e.status)),"error"===e.status&&e.error&&e.conversationId===ey.current&&e7(e.error),e.conversationId===ey.current&&(tb(null),tv(null)),e.conversationId&&aq.current&&e.conversationId!==aq.current)break;ao(null),ad(t2),ap(e4),eH(!1),aw(null),nz(),e.conversationId&&e.conversationId===ey.current?nr(e.conversationId):aH(void 0,{silent:!0});break;case"recovery:retry":e.conversationId&&(as({conversationId:e.conversationId,attempt:e.attempt,maxAttempts:e.maxAttempts,retryAt:e.retryAt}),nM(e.conversationId,"running")),t({});break;case"error":e3(e.message||K("chat.page.executionError")),e7(e.error??{message:e.message||K("chat.page.executionError")});break;default:t({})}},[nz,nr,aH,eU,nM,aW,K]),nT=(0,r.useCallback)((e,t)=>(nz(),aC.current=void 0!==t?t-1:-1,ap(e4),new Promise(a=>{let n=!1,r=()=>{n||(n=!0,a())};try{ak.current=eW.O.subscribeToEvents(e,{onEvent:nE,onOpen:r},t),setTimeout(r,1500)}catch(t){a8.error("Failed to open execution event stream",{conversationId:e,err:t}),r()}})),[nE,nz]);(0,r.useEffect)(()=>{if(ex&&ns?.status==="running"&&aq.current!==ex){if(aD.current.has(ex))return void a8.debug("Skipping re-attach to a conversation the user just stopped",{conversationId:ex});a8.info("Re-attaching to in-progress run",{conversationId:ex}),aq.current=ex,eH(!0),aw(ex),eU(ex,!0),ao(e=>e??{totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),nT(ex,0)}},[ex,ns?.status,nT]);let nN=async e=>{a8.debug("Attempting to delete conversation",{conversationId:e}),e3(null),e7(null),aN.current.add(e);let t=az.current.delete(e);aq.current===e&&(nz(),eH(!1),aw(null),ao(null),ap(e4),as(null)),eU(e,!1),e1(t=>eZ(t,e));let a=Q.filter(t=>t.id!==e);Z(a);let n=ex;ex===e&&(a.length>0?(n=a[0].id,a8.debug("Deleted current conversation, selecting next most recent",{nextSelectionId:n})):(n=null,a8.debug("Deleted last conversation, clearing selection")),eP(n));try{await eW.O.deleteConversation(e),a8.info("Successfully deleted conversation on backend",{conversationId:e}),t||(ed.current=Math.max(0,ed.current-1),ec({...ei.current,total:Math.max(0,ei.current.total-1)}))}catch(a){a8.error("Error deleting conversation:",{conversationId:e,err:a}),e3(K("chat.page.deleteFailed",{id:e})),aN.current.delete(e),t&&az.current.add(e),Z(Q),eP(ex)}},nR=async e=>{if(!e.length)return;e3(null),e7(null);let t=new Set(e),a=new Set(e.filter(e=>az.current.has(e))),n=Q.filter(e=>t.has(e.id)&&!a.has(e.id)).length;e.forEach(e=>aN.current.add(e)),e.forEach(e=>az.current.delete(e));let r=ey.current;r&&t.has(r)&&aq.current===r&&(nz(),eH(!1),aw(null),ao(null),ap(e4),as(null)),e.forEach(e=>{eU(e,!1),e1(t=>eZ(t,e))}),Z(e=>e.filter(e=>!t.has(e.id))),r&&t.has(r)&&eP(null);try{let t=await eW.O.deleteConversations(e);a8.info("Bulk delete succeeded",{requested:e.length,...t}),ed.current=Math.max(0,ed.current-n);let r=e.length-a.size;ec({...ei.current,total:Math.max(0,ei.current.total-Math.min(t.deleted,r))})}catch(t){a8.error("Bulk delete failed",{err:t}),e3(K("chat.page.bulkDeleteFailed")),e.forEach(e=>aN.current.delete(e)),a.forEach(e=>az.current.add(e)),Z(Q),eP(ex)}},nD=async e=>{if(a8.debug("Flow selected, attempting to update",{flowId:e,currentConversationId:ex}),e3(null),e7(null),!ex){a8.warn("Cannot update flow: No conversation selected."),e3(K("chat.page.selectFirst"));return}eu&&eu.id===ex&&eh({...eu,flowId:e,updatedAt:Date.now()}),Z(t=>t.map(t=>t.id===ex?{...t,flowId:e,updatedAt:Date.now()}:t).sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt)));try{let t=await eW.O.updateConversationFlow(ex,e);a8.info("Successfully updated flowId on backend",{conversationId:ex,flowId:e}),eh(e=>e&&e.id===ex?(a8.debug("Confirming detailedConversation update from server response",{conversationId:ex,flowId:t.flowId}),{...e,flowId:t.flowId,updatedAt:t.updatedAt}):(a8.debug("Skipping detailedConversation update, ID mismatch or null state",{currentDetailedId:e?.id,targetId:ex}),e)),Z(e=>e.map(e=>e.id===ex?t:e).sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt)))}catch(a){a8.error("Error updating flowId on backend:",{conversationId:ex,flowId:e,err:a});let t=K("chat.page.updateAgentFailed");a instanceof eW.b?t+=` (${a.body?.error||a.message})`:a instanceof Error&&(t+=` (${a.message})`),e3(t),eh(eu),Z(Q)}},nO=()=>{tc(eu?.title??ns?.title??""),ti(!0)},nP=async()=>{if(ti(!1),!ex)return;let e=eu?.title??ns?.title??"",t=td.trim().slice(0,200);if(t&&t!==e){eh(e=>e&&e.id===ex?{...e,title:t}:e),Z(e=>e.map(e=>e.id===ex?{...e,title:t}:e));try{let e=await eW.O.updateConversationTitle(ex,t);eh(t=>t&&t.id===ex?{...t,title:e.title}:t),Z(t=>t.map(t=>t.id===ex?{...t,title:e.title}:t))}catch(t){a8.warn("Failed to rename conversation",{conversationId:ex,err:t}),eh(t=>t&&t.id===ex?{...t,title:e}:t),Z(t=>t.map(t=>t.id===ex?{...t,title:e}:t)),e3(K("chat.page.renameFailed"))}}},nF=async(e,t=[],a)=>{let n;if(!e.trim()&&0===t.length)return;if(!eu){a8.error("Cannot send message, detailed conversation not loaded."),e3(K("chat.page.detailsMissing"));return}if(!a?.fromQueue&&eB.has(eu.id)){let a=eu.id;if(0!==t.length||tj){let n={id:(0,aK.A)(),content:e,attachments:t,nodeOverride:tj??null,timestamp:Date.now()};e1(e=>{var t,r,o;return t=e,r=a,o=n,{...t,[r]:[...t[r]??[],o]}}),tk(null),a8.debug("Run in progress — queued message (not steerable)",{conversationId:a,queuedId:n.id,reason:t.length>0?"attachments":"node-override"});return}{let t=(0,aK.A)(),{delivered:n}=await eW.O.injectMessage(a,e,t);if(n){let n={id:t,role:"user",content:e,timestamp:Date.now()};n$({...eu,messages:[...eu.messages,n]}),a8.debug("Run in progress — injected steering message into the live run",{conversationId:a,messageId:t});return}a8.debug("Steering rejected (run no longer live) — sending as a normal turn",{conversationId:a})}}a8.debug("Sending message",{conversationId:eu.id,contentLength:e.length,attachmentsCount:t.length});let r=eu.messages,o=!r.some(e=>"user"===e.role),l=eu.flowId,s=a?.fromQueue?a.nodeOverride??null:tj;if(s)n=s,a?.fromQueue||tk(null),a8.debug(`Assigning manually picked node ID to user message: ${n}`);else if(o){let e=aL(tn.find(e=>e.id===l));e?(n=e.id,a8.debug(`Assigning start node ID to first user message: ${n}`)):a8.warn(`Could not find start node for flow ${l}. User message will not have a processNodeId.`)}else if(ns?.status==="error"){let e=aL(tn.find(e=>e.id===l));e?(n=e.id,a8.debug(`Post-error message: re-driving turn from start node ID: ${n}`)):a8.warn(`Could not find start node for post-error message in flow ${l}. User message will not have a processNodeId.`)}else{for(let e=r.length-1;e>=0;e--){let t=r[e];if("assistant"===t.role&&t.processNodeId){n=t.processNodeId,a8.debug(`Assigning last assistant node ID to user message: ${n}`);break}}if(!n){let e=aL(tn.find(e=>e.id===l));e?(n=e.id,a8.debug(`No prior assistant node ID found, falling back to start node ID: ${n}`)):a8.warn(`Could not find start node for fallback in flow ${l}. User message will not have a processNodeId.`)}}let i={id:(0,aK.A)(),role:"user",content:e,timestamp:Date.now(),attachments:t.length>0?t:void 0,processNodeId:n},d={...eu,messages:[...eu.messages,i]};n$(d),d.flowId?await nq(d):(e3(K("chat.page.chooseAgent")),eh(eu))},nW=(0,r.useCallback)((e,t)=>{a8.verbose("Handling API response data",JSON.stringify(e)),eU(t,"running"===e.status);let a=aq.current===t,n=ey.current===t;if("paused_debug"===e.status&&e.debugState)return(a8.info("API Response: Paused for debugging",{conversationId:t}),n)?(tT(e.debugState),tM(!0),tq(!0),eH(!1),aw(null),nz(),n_(),eh(a=>a?.id===t&&e.debugState.messages&&JSON.stringify(a.messages)!==JSON.stringify(e.debugState.messages)?(a8.debug("Updating detailed conversation messages from debug state"),{...a,messages:e.debugState.messages,updatedAt:e.debugState.updatedAt}):a),Z(a=>a.map(a=>a.id===t?{...a,title:e.debugState.title??a.title,flowId:e.debugState.flowId??a.flowId,status:"paused_debug",updatedAt:e.debugState.updatedAt}:a).sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt)))):(nM(t,"paused_debug"),a&&(eH(!1),aw(null),nz(),n_())),!0;if(("completed"===e.status||"error"===e.status)&&n?(a8.info(`API Response: Execution completed or errored (Status: ${e.status}). Hiding debugger panel.`,{conversationId:t}),tB(!1),tU(!1),th(!1),tM(!1),tT(null),tq(!1),ay([])):a8.debug(`API Response: Status is '${e.status}'. Debugger panel visibility unchanged (currently ${tz?"visible":"hidden"}).`,{conversationId:t}),e.messages&&e.conversation_id===t){let a=e.messages.map((e,a)=>"number"!=typeof e.timestamp||isNaN(e.timestamp)?(a8.warn(`Invalid timestamp found in message index ${a} from API response. Defaulting to Date.now().`,{conversationId:t,messageId:e.id,invalidTimestamp:e.timestamp}),{...e,timestamp:Date.now()}):e);eh(n=>{let r=n;return n?.id===t&&JSON.stringify(n.messages)!==JSON.stringify(a)&&(a8.info("API Response/Polling: Updating detailed conversation messages",{conversationId:t,newMessageCount:a.length}),r={...n,messages:a,updatedAt:e.updatedAt||n.updatedAt}),a8.debug("Polling: setDetailedConversation callback executed.",{conversationId:t,messagesChanged:r!==n,newMessageCount:r?.messages?.length??"N/A"}),r})}if("awaiting_tool_approval"===e.status)a8.info("API Response/Polling: Pausing for tool approval",{conversationId:t}),n&&tf(e.pendingToolCalls||[]),a&&(eH(!1),aw(null),nz(),n_());else if("completed"===e.status||"error"===e.status){if(a8.info("API Response/Polling: Stopping due to final status",{conversationId:t,status:e.status}),a&&(n_(),eH(!1),aw(null),nz()),"error"===e.status){let r=e.error?.message||e.lastResponse?.error||K("chat.page.unknownExecutionError");nt.test(r)||aD.current.has(t)?(aW(t,!0),(a||n)&&e3(null),e7(null),a8.info("API Response/Polling: Execution cancelled by user",{conversationId:t})):(e3(r),a8.error("API Response/Polling: Execution resulted in error",{conversationId:t,error:e.error||e.lastResponse}))}nr(t)}else"running"!==e.status||tz?n&&tf(null):(n&&tf(null),a&&!aj.current&&eH(!0));return e.conversation_id===t&&Z(a=>a.map(a=>a.id===t?{...a,title:e.title??a.title,flowId:e.flowId??a.flowId,status:e.status??a.status,updatedAt:e.updatedAt||a.updatedAt}:a).sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt))),!1},[eh,tf,eH,e3,tM,tT,Z,nr,nz,eU,nM,aW,K]),n_=()=>{aj.current&&(a8.debug("Stopping polling interval"),clearInterval(aj.current),aj.current=null)};(0,r.useEffect)(()=>()=>{nz()},[nz]);let nq=async e=>{if(!e?.id||!e.flowId||!aA.current)return a8.error("Cannot send to completions: Missing conversation ID or flow ID.",{id:e?.id,flowId:e?.flowId}),e3(K("chat.page.agentMissing")),!1;tf(null),e3(null),e7(null),eH(!0),aw(e.id),eU(e.id,!0),nM(e.id,"running"),aW(e.id,!1);let t=az.current.delete(e.id);ao({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await nT(e.id);let a=!1;try{let t,n,r,o;if(ej(e.flowId))t="flow-Quick Chat",a8.debug("Sending quick chat to completions",{flowId:e.flowId,conversationId:e.id});else{let a=await tZ.g.getFlow(e.flowId);if(!a)throw Error(`Flow with ID ${e.flowId} not found`);t=`flow-${a.name}`,a8.debug("Sending to chat completions",{flowId:e.flowId,flowName:a.name,conversationId:e.id})}let l=e.messages.filter(e=>!e.disabled&&!((e.depth??0)>0)).map(e=>{let t=a9(e),a=e.processNodeId,n={id:e.id,timestamp:e.timestamp};return"user"===e.role?{role:"user",content:t,...n,processNodeId:a}:"assistant"===e.role?{role:"assistant",content:t,tool_calls:e.tool_calls,toolPayloads:e.toolPayloads,...n,processNodeId:a}:"system"===e.role?{role:"system",content:t,...n,processNodeId:a}:"tool"===e.role?e.tool_call_id?{role:"tool",content:t,tool_call_id:e.tool_call_id,toolPayloads:e.toolPayloads,...n,processNodeId:a}:{role:"user",content:"string"==typeof t?`Tool result: ${t}`:t,...n,processNodeId:a}:{role:"user",content:t,...n,processNodeId:a}}),s=await aA.current.chat.completions.create({model:t,messages:l,stream:!1,metadata:(n=a$.current.get(e.id),r={flujo:"true",requireApproval:to?"true":void 0,flujodebug:tu?"true":void 0,conversationId:e.id,compactToolPayloads:"true",mcpAppContexts:void 0===n?void 0:JSON.stringify(n)},o={},r.flujo&&(o.flujo=r.flujo),r.requireApproval&&(o.requireApproval=r.requireApproval),r.flujodebug&&(o.flujodebug=r.flujodebug),r.conversationId&&(o.conversationId=r.conversationId),r.compactToolPayloads&&(o.compactToolPayloads=r.compactToolPayloads),void 0!==r.mcpAppContexts&&(o.mcpAppContexts=r.mcpAppContexts),o)});a8.debug("Chat completion initial response received",{completionId:s.id}),a=!0;let i={...s,status:s.status||"completed",conversation_id:e.id,messages:s.messages||e.messages,pendingToolCalls:s.pendingToolCalls,debugState:s.debugState,error:s.error,lastResponse:s.lastResponse,updatedAt:s.updatedAt||Date.now()},d=nW(i,e.id);d||aj.current?d&&a8.debug("Debug state handled, polling remains stopped."):a8.debug("Starting polling after initial non-debug response.")}catch(r){if(na(r)||aD.current.has(e.id))return a8.info("Chat completion cancelled by user",{conversationId:e.id}),a=!1,eU(e.id,!1),aW(e.id,!0),aq.current===e.id&&(n_(),eH(!1),aw(null),nz(),e3(null),e7(null)),a;a8.error("Error calling chat completions API:",r),a=!1;let n="An error occurred while sending the message.";if(r instanceof aX.LG)n=`API Error: ${r.message} (Status: ${r.status})`,r.code&&(n+=` (Code: ${r.code})`),r.type&&(n+=` [Type: ${r.type}]`),a8.verbose("APIError details",JSON.stringify(r));else if(r instanceof aX.vc){n=`OpenAI Error: ${r.message}`;let e=r.error;e&&"object"==typeof e&&(e.code&&(n+=` (Code: ${e.code})`),e.type&&(n+=` [Type: ${e.type}]`)),a8.verbose("OpenAIError details",JSON.stringify(r))}else r instanceof eW.b?(n=`Error: ${r.body?.error||r.message}`,r.status&&(n+=` (Status: ${r.status})`),a8.verbose("ChatApiError details",JSON.stringify(r.body))):r instanceof Error&&(n=r.message);e3(n),eU(e.id,!1),aq.current===e.id&&(n_(),eH(!1),aw(null),nz()),t&&az.current.add(e.id)}finally{}return a},nH=(0,r.useRef)(nF);nH.current=nF;let nB=(0,r.useCallback)(e=>!!ex&&ey.current===ex&&(nH.current(e),!0),[ex]),nL=(0,r.useCallback)((e,t)=>{if(!ex||ey.current!==ex)return!1;let a={...a$.current.get(ex)??{}};return(void 0===t.content&&void 0===t.structuredContent?delete a[e]:a[e]=t,(0,eQ.Yw)(a)>eQ.uJ)?(a8.warn("Rejected oversized aggregate MCP App model context",{conversationId:ex,appKey:e}),!1):(a$.current.set(ex,a),!0)},[ex]),[nU,nK]=(0,r.useState)(eY.zs),[nX,nJ]=(0,r.useState)(ex),[nV,nG]=(0,r.useState)({placement:"bottom",reservedWidth:0,reservedHeight:0}),nY=(0,r.useCallback)(e=>{nG(t=>t.placement===e.placement&&t.reservedWidth===e.reservedWidth&&t.reservedHeight===e.reservedHeight?t:e)},[]),nQ=(0,r.useRef)(new Set),nZ=(0,r.useCallback)((e,t,a)=>{let n=`${e}\u0000${t}`;a?eD.current.set(n,a):eD.current.delete(n)},[]),n0=(0,r.useCallback)((e,t)=>{ex&&nZ(ex,e,t)},[ex,nZ]),n1=(0,r.useCallback)(e=>{let t=ey.current;if(!t)return;let a=(0,eY.cb)(e.serverName,e.uri);(0,eY.h)({automatic:!!e.automatic,dismissed:a5(t).includes(a),suppressed:a3(t),healthy:e.healthy})&&(e.automatic||(eC(t,a,!1),eR(t,!1)),nJ(t),nK(t=>{let{state:a}=(0,eY.aE)(t,e,Date.now(),Number.MAX_SAFE_INTEGER);return a}))},[eR,eC]),n2=(0,r.useCallback)(e=>{let t=ey.current;t&&(e?(a4(t,(0,eY.dd)(nU).map(e=>e.key),!0),eR(t,!0)):eR(t,!1))},[nU,eR]),n5=(0,r.useCallback)(()=>{let e=ey.current;if(!e)return;let t=(0,eY.dd)(nU).map(e=>e.key);0===t.length||(a4(e,t,!0),eR(e,!0),Promise.allSettled(t.map(t=>{let a=eD.current.get(`${e}\0${t}`);return a?a():Promise.resolve()})).finally(()=>{ey.current===e&&nK(e=>{let a=e;for(let e of t)a=(0,eY.o4)(a,e);return a})}))},[nU,eR]),n4=(0,r.useCallback)(e=>{nK(t=>(0,eY.Az)(t,e))},[]),n6=(0,r.useCallback)(e=>{if(!ex)return;eC(ex,e,!0);let t=eD.current.get(`${ex}\u0000${e}`),a=()=>{ey.current===ex&&nK(t=>(0,eY.o4)(t,e))};t?t().finally(a):a()},[ex,eC]);(0,r.useEffect)(()=>{nJ(ex),nK(eY.zs),nG({placement:"bottom",reservedWidth:0,reservedHeight:0})},[ex]);let n3=nU.order.join("|");(0,r.useEffect)(()=>{let e=eu?.messages;if(!e||!eu||eu.id!==ex||nX!==ex)return;let t=new Map;for(let a of e)if("assistant"===a.role&&Array.isArray(a.tool_calls))for(let e of a.tool_calls)"function"===e.type&&e.id&&t.set(e.id,e);let a=new Map;for(let n of e){let e=n.ui;if("tool"===n.role&&e?.uri&&e?.serverName&&"string"==typeof n.content){let r="string"==typeof n.tool_call_id?t.get(n.tool_call_id):void 0,o={serverName:e.serverName,uri:e.uri,toolName:e.toolName??(r?.type==="function"?r.function.name:void 0),toolArgs:e.toolArgs??(r?.type==="function"?r.function.arguments:void 0),resultContent:n.content,cancelledReason:e.cancelledReason,isError:e.isError,updateId:n.id};a.set(`${e.serverName}::${e.uri}`,o)}}nK(e=>{let t=e;for(let e of t.order){let n=t.entries[e],r=a.get(e);n&&r&&(r.updateId!==n.latestToolUpdateId||r.toolArgs!==n.latestToolArgs||void 0===r.cancelledReason&&r.resultContent!==n.latestResultContent||r.cancelledReason!==n.latestToolCancelledReason||r.isError!==n.latestToolIsError)&&(t=(0,eY.hx)(t,r))}return t})},[n3,nX,ex,eu?.id,eu?.messages]),(0,r.useEffect)(()=>{if(!ex||nX!==ex||nU.order.length<=eY.Yb)return;let{evicted:e}=(0,eY.lR)(nU,eY.Yb,nU.activeKey??void 0);for(let t of e){let e=`${ex}\u0000${t}`;if(nQ.current.has(e))continue;nQ.current.add(e),a8.info(`Canvas tab cap reached — gracefully evicting (LRU): ${t}`);let a=eD.current.get(e);(a?a():Promise.resolve()).finally(()=>{nQ.current.delete(e),ey.current===ex&&nK(e=>(0,eY.o4)(e,t))})}},[nU,nX,ex]);let n8=async(e,t,a)=>{if(!eu)return;a8.debug("Editing message",{messageId:e,contentLength:t.length,processNodeId:a});let n=eu.messages.findIndex(t=>t.id===e);if(-1===n)return;let r={...eu.messages[n],content:t,timestamp:Date.now(),processNodeId:a||void 0},o=[...eu.messages.slice(0,n),r],l={...eu,messages:o};if(n$(l),l.flowId){let e=a$.current.get(l.id),t={flujo:"true",requireApproval:to?"true":void 0,flujodebug:tu?"true":void 0,conversationId:l.id,processNodeId:a||void 0,mcpAppContexts:void 0===e?void 0:JSON.stringify(e)};if(!aA.current)return;e3(null),e7(null),eH(!0),aw(l.id),eU(l.id,!0),aW(l.id,!1),ao({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await nT(l.id);try{let e,a=await tZ.g.getFlow(l.flowId);if(!a)throw Error(`Flow with ID ${l.flowId} not found`);let n=l.messages.filter(e=>!e.disabled&&!((e.depth??0)>0)).map(e=>{let t=a9(e),a={id:e.id,timestamp:e.timestamp,processNodeId:e.processNodeId};return"user"===e.role?{role:"user",content:t,...a}:"assistant"===e.role?{role:"assistant",content:t,tool_calls:e.tool_calls,toolPayloads:e.toolPayloads,...a}:"system"===e.role?{role:"system",content:t,...a}:"tool"===e.role?e.tool_call_id?{role:"tool",content:t,tool_call_id:e.tool_call_id,toolPayloads:e.toolPayloads,...a}:{role:"user",content:"string"==typeof t?`Tool result: ${t}`:t,...a}:{role:"user",content:t,...a}}),r=await aA.current.chat.completions.create({model:`flow-${a.name}`,messages:n,stream:!1,metadata:(e={},t.flujo&&(e.flujo=t.flujo),t.requireApproval&&(e.requireApproval=t.requireApproval),t.flujodebug&&(e.flujodebug=t.flujodebug),t.conversationId&&(e.conversationId=t.conversationId),e.compactToolPayloads="true",t.processNodeId&&(e.processNodeId=t.processNodeId),void 0!==t.mcpAppContexts&&(e.mcpAppContexts=t.mcpAppContexts),e)}),o={...r,status:r.status||"completed",conversation_id:l.id,messages:r.messages||l.messages,pendingToolCalls:r.pendingToolCalls,debugState:r.debugState,error:r.error,updatedAt:r.updatedAt||Date.now()};nW(o,l.id)}catch(e){na(e)||aD.current.has(l.id)?(a8.info("Edited-message run cancelled by user",{conversationId:l.id}),aW(l.id,!0)):(a8.error("Error sending edited message:",e),e3(e instanceof Error?e.message:K("chat.page.sendEditedFailed"))),eU(l.id,!1),aq.current===l.id&&(eH(!1),aw(null),nz())}}},n7=(0,r.useCallback)(e=>{let t=eu?.messages.find(t=>t.id===e);t&&"user"===t.role&&"string"==typeof t.content&&tI({messageId:e,content:t.content,nodeId:t.processNodeId??nu[0]?.id??null})},[eu,nu]),n9=(0,r.useCallback)(e=>{tI(t=>t?{...t,content:e}:t)},[]),re=(0,r.useCallback)(e=>{tI(t=>t?{...t,nodeId:e}:t)},[]),rt=(0,r.useCallback)(()=>tI(null),[]),ra=(e,t="head")=>{var a;if(!eu)return;a8.debug("Splitting conversation at message",{messageId:e,half:t});let n=eu.messages.findIndex(t=>t.id===e);if(-1===n)return;let r=(a=eu.messages,"head"===t?a.slice(0,n+1):function(e,t){let a=e.slice(0,t).filter(e=>"system"===e.role),n=new Set,r=[];for(let a of e.slice(t)){if("assistant"===a.role&&Array.isArray(a.tool_calls))for(let e of a.tool_calls)e?.id&&n.add(e.id);("tool"!==a.role||!a.tool_call_id||n.has(a.tool_call_id))&&r.push(a)}return[...a,...r]}(a,n));if(0===r.length)return void a8.debug("Split produced no messages — ignoring",{messageId:e,half:t});let o=(0,aK.A)(),l={id:o,title:K("head"===t?"chat.page.splitTitle":"chat.page.splitTailTitle",{title:eu.title}),messages:r,flowId:eu.flowId,createdAt:Date.now(),updatedAt:Date.now()},s={id:o,title:l.title,flowId:l.flowId,createdAt:l.createdAt,updatedAt:l.updatedAt};az.current.add(o),Z(e=>[s,...e].sort((e,t)=>(t.lastUserMessageAt??t.updatedAt)-(e.lastUserMessageAt??e.updatedAt))),eP(o),eh(l),eg(!1),em(null)},rn=async(e,t,a,n)=>{if(ex){a8.info(`Handling tool response: ${e}`,{conversationId:ex,toolCallId:t,always:a}),tf(null),eH(!0),aw(ex),eU(ex,!0),nM(ex,"running"),e3(null),e7(null),await nT(ex);try{let r=await eW.O.respondToToolCall(ex,e,t,a,n);a8.debug("Tool response successful",{conversationId:ex,action:e,toolCallId:t}),nW(r,ex)}catch(n){if(na(n)||aD.current.has(ex)){a8.info("Tool-response resume cancelled by user",{conversationId:ex}),aW(ex,!0),aq.current===ex&&eH(!1),eU(ex,!1);return}a8.error(`Error sending tool response (${e})`,{conversationId:ex,toolCallId:t,err:n});let a="approve"===e?K("chat.page.approveFailed"):K("chat.page.rejectFailed");n instanceof eW.b?a+=` (${n.body?.error||n.message})`:n instanceof Error&&(a+=` (${n.message})`),e3(a),aq.current===ex&&eH(!1),eU(ex,!1)}}},rr=async e=>{if(ex){a8.info("Cancelling single tool call",{conversationId:ex,toolCallId:e});try{await eW.O.cancelToolCall(ex,e)}catch(t){a8.warn("Failed to cancel tool call",{conversationId:ex,toolCallId:e,err:t})}}},ro=async(e,t)=>{if(ex){a8.info("Submitting elicitation form",{conversationId:ex,elicitationId:e}),tb(null);try{await fetch(`/v1/chat/conversations/${ex}/respond`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"elicitation-submit",elicitationId:e,content:t})})}catch(t){a8.error("Failed to submit elicitation",{conversationId:ex,elicitationId:e,err:t})}}},rl=async e=>{if(ex){a8.info("Cancelling elicitation",{conversationId:ex,elicitationId:e}),tb(null);try{await fetch(`/v1/chat/conversations/${ex}/respond`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"elicitation-cancel",elicitationId:e})})}catch(t){a8.error("Failed to cancel elicitation",{conversationId:ex,elicitationId:e,err:t})}}},rs=async(e,t)=>{if(ex){a8.info("Answering question",{conversationId:ex,questionId:e}),tv(null);try{await fetch(`/v1/chat/conversations/${ex}/respond`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"question-answer",questionId:e,answers:t})})}catch(t){a8.error("Failed to answer question",{conversationId:ex,questionId:e,err:t})}}},ri=async e=>{if(ex){a8.info("Declining question",{conversationId:ex,questionId:e}),tv(null);try{await fetch(`/v1/chat/conversations/${ex}/respond`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"question-decline",questionId:e})})}catch(t){a8.error("Failed to decline question",{conversationId:ex,questionId:e,err:t})}}},rd=async()=>{if(ex&&tz){a8.info("Handling debug step request",{conversationId:ex}),eH(!0),aw(ex),eU(ex,!0),e3(null),e7(null),await nT(ex);try{let e=await eW.O.debugStep(ex);nW(e,ex)}catch(e){a8.error("Error during debug step API call",{conversationId:ex,err:e}),e3(e instanceof Error?e.message:K("chat.page.debugStepFailed")),eH(!1),eU(ex,!1),tM(!1),tT(null)}finally{}}},rc=async()=>{if(ex&&tz){a8.info("Handling debug continue request",{conversationId:ex}),eH(!0),aw(ex),eU(ex,!0),nM(ex,"running"),e3(null),e7(null),tB(!1),tU(!1),th(!1),tM(!1),tT(null),tq(!1),ay([]),await nT(ex);try{let e=await eW.O.debugContinue(ex);nW(e,ex)}catch(e){a8.error("Error during debug continue API call",{conversationId:ex,err:e}),e3(e instanceof Error?e.message:K("chat.page.debugContinueFailed")),eH(!1),eU(ex,!1)}finally{}}};(0,r.useEffect)(()=>{tE&&ay(tE.breakpoints??[])},[tE]);let ru=(0,r.useCallback)(async e=>{if(ex){ay(e);try{await eW.O.setBreakpoints(ex,e)}catch(e){a8.error("Failed to update breakpoints",{conversationId:ex,err:e}),ay(ab)}}},[ab,ex]),rh=(0,r.useCallback)(async e=>{if(!ex)return;let t=ab.includes(e)?ab.filter(t=>t!==e):[...ab,e];ay(t);try{await eW.O.setBreakpoints(ex,t)}catch(e){a8.error("Failed to update breakpoints",{conversationId:ex,err:e}),ay(ab)}},[ab,ex]),rp=(0,r.useCallback)(async()=>{if(ex){a8.info("Attaching debugger to running conversation",{conversationId:ex}),tU(!0);try{await eW.O.attachDebugger(ex)}catch(e){a8.error("Failed to attach debugger",{conversationId:ex,err:e}),tU(!1),e3(e instanceof Error?e.message:K("chat.page.attachDebuggerFailed"))}}},[ex,K]),rg=(0,r.useCallback)(()=>{tH||t_||tz?aS.current?.():(tB(!0),th(!0),(eq&&av===ex||ex&&eB.has(ex)||ns?.status==="running")&&ex&&(ak.current||nT(ex),rp()))},[tH,t_,tz,eq,av,ex,eB,ns?.status,rp,nT]),rf=async()=>{if(!ex||!tz)return;let e=tE?.currentNodeId;eH(!0),aw(ex),eU(ex,!0),e3(null),e7(null),await nT(ex);try{for(let t=0;t<50;t++){let t=await eW.O.debugStep(ex),a=t?.status??t?.debugState?.status,n=t?.debugState?.currentNodeId;if("paused_debug"!==a||n&&n!==e)return void nW(t,ex)}a8.warn("Step Over hit iteration cap",{conversationId:ex}),eH(!1),eU(ex,!1)}catch(e){a8.error("Error during step over",{conversationId:ex,err:e}),e3(e instanceof Error?e.message:K("chat.page.stepOverFailed")),eH(!1),eU(ex,!1)}},rm=async()=>{if(ex){a8.info("Cancelling request",{conversationId:ex}),n_(),eH(!1),aw(null),eU(ex,!1),aW(ex,!0),tB(!1),tU(!1),th(!1),tM(!1),tT(null),tq(!1),ay([]),nz(),tf(null),as(null),e3(null),e7(null);try{await eW.O.cancel(ex),a8.debug("Cancel request sent successfully",{conversationId:ex}),await nr(ex)}catch(e){a8.error("Error sending cancel request",{conversationId:ex,err:e}),e3(K("chat.page.cancelFailed"))}}},rx=async e=>{if(e===ex)return void await rm();a8.info("Stopping background conversation",{conversationId:e}),aW(e,!0);try{await eW.O.cancel(e),eU(e,!1),await aH(void 0,{silent:!0})}catch(t){a8.error("Error stopping background conversation",{conversationId:e,err:t}),e3(K("chat.page.cancelFailed"))}},rb=async e=>{if(ex&&!tt){ta(e),e3(null),e7(null);try{let t=await eW.O.retrySubflowRecovery(ex,e);t.failed.length>0?e3(t.failed.map(e=>e.error).join("\n")):aW(ex,!1),await Promise.all([nr(ex),aH(void 0,{silent:!0})]);try{te(await eW.O.getSubflowRecoveryOptions(ex))}catch{te(null)}}catch(t){a8.error("Subflow recovery failed",{conversationId:ex,scope:e,err:t}),e3(t instanceof Error?t.message:K("chat.page.recoveryFailed"))}finally{ta(null)}}},ry=(0,r.useCallback)(async()=>{if(a8.info("Closing debugger panel (detach)",{conversationId:ex,wasPaused:tz}),tB(!1),tU(!1),th(!1),tM(!1),tT(null),tq(!1),ex){try{await eW.O.setBreakpoints(ex,[]),ay([])}catch(e){a8.error("Failed to clear breakpoints while detaching",{conversationId:ex,err:e})}if(tz){eH(!0),aw(ex),eU(ex,!0),nM(ex,"running"),await nT(ex);try{let e=await eW.O.debugContinue(ex);nW(e,ex)}catch(e){a8.error("Failed to resume run while detaching the debugger",{conversationId:ex,err:e}),eH(!1),eU(ex,!1),e3(e instanceof Error?e.message:K("chat.page.debugContinueFailed"))}}}},[ex,tz,nT,nW,eU,K]);(0,r.useEffect)(()=>{aS.current=ry},[ry]),(0,r.useEffect)(()=>{if(!ex||!tH&&!t_||tE||!(tz||ns?.status==="paused_debug"))return;let e=!1;return(async()=>{try{let t=await eW.O.getDebugState(ex);if(e||!t?.debugState)return;tT(t.debugState),tq(!0),tM(!0),tU(!1),ay(t.breakpoints??[])}catch(e){a8.error("Failed to hydrate debug state",{conversationId:ex,err:e})}})(),()=>{e=!0}},[ex,tH,t_,tE,tz,ns?.status]),a8.debug("Rendering Chat component",{currentConversationId:ex,isHandleEditMessageDefined:!0});let rv=(tH||t_||tz)&&!!ex,rw=tL?"attaching":"armed",rA=(0,r.useCallback)(e=>{tR(e),tO(0)},[]),rj=tE?.executionTrace??[],rk=0===rj.length?-1:tN>=0&&tN<rj.length?tN:rj.length-1,rS=rk>=0?rj[rk]:void 0,rI=rS?.modelInputs?.length?rS.modelInputs:rS?.modelInput?[rS.modelInput]:[],rC=rI.length>0?Math.min(tD,rI.length-1):0,r$=rI[rC],rz=rv&&!!tE&&rk>=0,rM="wire"===tF&&rz,rE=ns?.status==="awaiting_tool_approval"||!!tg,rT=!(rE||ns?.status==="paused_debug")&&(eq&&av===ex||!!ex&&eB.has(ex)||ns?.status==="running"),rN=!rT&&!!ex&&aO.has(ex);(0,r.useEffect)(()=>{var e;if(!ex||e2.current||!eu||eu.id!==ex)return;let t=(eK[ex]??[])[0];if(!t||!(!(e={running:eB.has(ex),pendingApproval:!!tg,debugPaused:tz,hasError:ns?.status==="error",stopped:rN}).running&&!e.pendingApproval&&!e.debugPaused&&!e.hasError&&!e.stopped))return;e2.current=!0;let a=setTimeout(async()=>{try{e1(e=>e0(e,ex,t.id)),await nF(t.content,t.attachments,{fromQueue:!0,nodeOverride:t.nodeOverride,queuedId:t.id})}catch{e1(e=>{var a,n,r;let o;return a=e,n=ex,r=t,o=(a[n]??[]).filter(e=>e.id!==r.id),{...a,[n]:[r,...o]}})}finally{e2.current=!1}},0);return()=>clearTimeout(a)},[ex,eu,eK,eB,tg,tz,ns?.status,rN]);let rR=a7(nN),rD=a7(nR),rO=a7(rx),rP=a7(ng),rF=(0,r.useCallback)(()=>nI(!0),[]),rW=e9?(0,n.jsxs)(i.default,{sx:{display:"flex",gap:.5,flexWrap:"wrap",justifyContent:"flex-end"},children:[(0,n.jsx)(d.A,{color:"inherit",size:"small",startIcon:"branch"===tt?(0,n.jsx)(c.default,{color:"inherit",size:14}):(0,n.jsx)(E.A,{}),disabled:!!tt||!e9.canRetryBranch,onClick:()=>void rb("branch"),children:K("chat.page.recoverBranch")}),e9.canRetrySiblings&&(0,n.jsx)(d.A,{color:"inherit",size:"small",startIcon:"siblings"===tt?(0,n.jsx)(c.default,{color:"inherit",size:14}):(0,n.jsx)(_.A,{}),disabled:!!tt,onClick:()=>void rb("siblings"),children:K("chat.page.recoverLevel",{count:e9.incompleteSiblingCount})}),e9.canRetryDeepest&&e9.deepestFailedCount>1&&(0,n.jsx)(d.A,{color:"inherit",size:"small",startIcon:"deepest"===tt?(0,n.jsx)(c.default,{color:"inherit",size:14}):(0,n.jsx)(W.A,{}),disabled:!!tt,onClick:()=>void rb("deepest"),children:K("chat.page.recoverLeaves",{count:e9.deepestFailedCount})})]}):null,r_=ee?(0,n.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",p:2},children:(0,n.jsx)(aU.default,{size:"medium",color:"primary"})}):er?(0,n.jsx)(u.A,{severity:"error",sx:{m:2},children:er}):(0,n.jsx)(eX,{conversations:Q,totalConversations:el.total+az.current.size,hasMoreConversations:el.hasMore,isLoadingMore:ea,onLoadMore:a1,onLoadAll:nn,flowNames:ni,currentConversationId:ex,revealRequest:nm,onSelectConversation:aa,onDeleteConversation:rR,onBulkDelete:rD,onStopConversation:rO,onNewConversation:rP,onQuickChat:rF,onCollapse:at,collapsed:ae});return(0,n.jsxs)(i.default,{sx:{display:"flex",height:`calc(
2
+ 100dvh
3
+ - var(--app-bar-height)
4
+ - var(--active-subnav-height)
5
+ - var(--global-mcp-dock-top)
6
+ - var(--global-mcp-dock-bottom)
7
+ )`,minHeight:0,overflow:"hidden",position:"relative",bgcolor:"transparent"},children:[(0,n.jsx)(h.A,{component:"h1",className:"sr-only",children:K("chat.title")}),ae&&!Y&&(0,n.jsx)(i.default,{sx:{width:40,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",justifyContent:"center",alignItems:"flex-start",pt:1.4,bgcolor:"var(--surface-glass)",backdropFilter:"blur(18px)"},children:(0,n.jsx)(p.A,{title:K("chat.page.showSidebar"),children:(0,n.jsx)(g.A,{size:"small",onClick:at,"aria-label":K("chat.page.showSidebar"),children:(0,n.jsx)(P.A,{fontSize:"small"})})})}),G&&(0,n.jsx)(f.Ay,{anchor:"left",open:t7,onClose:()=>t9(!1),ModalProps:{keepMounted:!0},PaperProps:{sx:{width:"min(86vw, 340px)",maxWidth:"calc(100vw - 28px)",display:"flex",flexDirection:"column",bgcolor:"var(--surface-glass)",backgroundImage:"none",backdropFilter:"blur(22px) saturate(140%)",boxShadow:"24px 0 70px rgba(0,0,0,.45)"}},children:r_}),!G&&!t3&&(0,n.jsx)(i.default,{sx:{width:t4,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",flexDirection:"column",bgcolor:"var(--surface-glass)",backdropFilter:"blur(18px) saturate(135%)"},children:r_}),!G&&!t3&&(0,n.jsx)(i.default,{onPointerDown:an,onKeyDown:e=>{("ArrowLeft"===e.key||"ArrowRight"===e.key)&&(e.preventDefault(),t6(t=>{let a=Math.min(560,Math.max(220,t+("ArrowRight"===e.key?16:-16)));return window.localStorage.setItem("flujo-chat-sidebar-width",String(a)),a}))},role:"separator",tabIndex:0,"aria-orientation":"vertical","aria-valuemin":220,"aria-valuemax":560,"aria-valuenow":Math.round(t4),sx:{position:"relative",width:"8px",flexShrink:0,cursor:"col-resize",bgcolor:"transparent",transition:"background-color 120ms","&::after":{position:"absolute",top:0,bottom:0,left:"50%",width:1,content:'""',bgcolor:"divider",transition:"width 120ms, background-color 120ms"},"&:hover::after":{width:2,bgcolor:"primary.main"},"&:focus-visible::after":{width:3,bgcolor:"primary.main"},touchAction:"none"},"aria-label":K("chat.page.resizeSidebar")}),(0,n.jsxs)(i.default,{sx:{flex:1,height:"100%",display:"flex",minWidth:0,minHeight:0},children:[(0,n.jsxs)(i.default,{sx:{flex:1,minWidth:0,display:"flex",flexDirection:"column",height:"100%",position:"relative",boxSizing:"border-box",pl:"left"===nV.placement&&nV.reservedWidth>0?`min(${nV.reservedWidth}px, calc(100% - 320px))`:0,pr:"right"===nV.placement&&nV.reservedWidth>0?`min(${nV.reservedWidth}px, calc(100% - 320px))`:0,pt:"top"===nV.placement&&nV.reservedHeight>0?`min(${nV.reservedHeight}px, calc(100% - 240px))`:0},children:[ex&&(0,n.jsxs)(i.default,{sx:{px:{xs:1,sm:1.5,md:2},py:{xs:.5,sm:.75},display:"flex",alignItems:"center",gap:1,minWidth:0,borderBottom:1,borderColor:"divider",bgcolor:"var(--surface-glass)",backdropFilter:"blur(16px)"},children:[Y&&(0,n.jsx)(p.A,{title:K("chat.page.showSidebar"),children:(0,n.jsx)(g.A,{size:"small",onClick:at,"aria-label":K("chat.page.showSidebar"),children:(0,n.jsx)(P.A,{fontSize:"small"})})}),ts?(0,n.jsx)(m.A,{"data-ask-flujo-chat-title":!0,value:td,onChange:e=>tc(e.target.value),onBlur:nP,onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),nP()):"Escape"===e.key&&ti(!1)},size:"small",autoFocus:!0,fullWidth:!0,inputProps:{maxLength:200,"aria-label":K("chat.page.conversationTitle")}}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(h.A,{"data-ask-flujo-chat-title":!0,variant:"subtitle1",noWrap:!0,onClick:nO,title:eu?.title||ns?.title||"",sx:{flex:1,minWidth:0,cursor:"text"},children:eu?.title||ns?.title||K("chat.page.untitled")}),(0,n.jsx)(p.A,{title:K("chat.page.rename"),children:(0,n.jsx)(g.A,{size:"small",onClick:nO,"aria-label":K("chat.page.rename"),children:(0,n.jsx)(F.A,{fontSize:"small"})})}),(0,n.jsx)(p.A,{title:tG?K("chat.page.hideExecuted"):K("chat.page.showExecuted"),children:(0,n.jsx)(g.A,{size:"small",color:tG?"primary":"default",onClick:()=>tY(e=>!e),"aria-label":K("chat.page.toggleExecuted"),children:(0,n.jsx)(_.A,{fontSize:"small"})})})]})]}),ex&&(0,n.jsxs)(i.default,{sx:{px:{xs:1,sm:1.5,md:2},py:{xs:.5,sm:.75},borderBottom:1,borderColor:"divider",display:"flex",alignItems:"center",gap:1,bgcolor:"var(--surface-glass)",backdropFilter:"blur(16px)"},children:[(0,n.jsx)(i.default,{sx:{flex:1,minWidth:0},children:ej(ns?.flowId||eu?.flowId)?(0,n.jsx)(x.A,{color:"primary",variant:"outlined",icon:(0,n.jsx)(M.A,{}),label:K("chat.page.quickChat")}):(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,n.jsx)(t$.A,{selectedFlowId:ns?.flowId||eu?.flowId||null,onSelectFlow:e=>{if(!ex){a8.warn("Cannot update flow: No conversation selected."),e3(K("chat.page.selectFirst"));return}ej(e)||e_(e);let t=eu?.flowId??ns?.flowId??null;if((eu?.messages?.length??0)>0&&t&&e!==t){a8.debug("Flow switch on executed conversation — asking for confirmation",{flowId:e,currentFlowId:t}),tA(e);return}nD(e)},disabled:tz,hideLabel:!0,compact:!0,fullScreenPicker:Y}),(t=ns?.flowId||eu?.flowId||null)?(0,n.jsx)(p.A,{title:K("chat.page.openAgent"),children:(0,n.jsx)(g.A,{size:"small",color:"primary",onClick:()=>a.push(`/flows?flow=${encodeURIComponent(t)}`),children:(0,n.jsx)(W.A,{fontSize:"small"})})}):null]})}),rz&&(0,n.jsxs)(b.A,{exclusive:!0,size:"small",value:tF,onChange:(e,t)=>{t&&tW(t)},"aria-label":K("chat.page.transcriptView"),sx:{flexShrink:0,p:"3px",gap:"2px",borderRadius:999,bgcolor:"action.hover","& .MuiToggleButton-root":{gap:.5,minWidth:{xs:36,sm:"auto"},px:{xs:.75,sm:1.25},py:.35,border:0,borderRadius:"999px !important",textTransform:"none",color:"text.secondary","&.Mui-selected":{bgcolor:"background.paper",color:"primary.main",boxShadow:1}}},children:[(0,n.jsxs)(y.A,{value:"chat","aria-label":K("chat.page.chatView"),children:[(0,n.jsx)(B.A,{fontSize:"small"}),(0,n.jsx)(i.default,{component:"span",sx:{display:{xs:"none",sm:"inline"}},children:K("chat.page.chatView")})]}),(0,n.jsxs)(y.A,{value:"wire","aria-label":K("chat.page.modelInputView"),children:[(0,n.jsx)(L.A,{fontSize:"small"}),(0,n.jsx)(i.default,{component:"span",sx:{display:{xs:"none",sm:"inline"}},children:K("chat.page.modelInputView")})]})]}),(0,n.jsx)(tC,{usage:eu?.usage,contextInfo:eu?.contextInfo,availableNodes:nu,compact:Y})]}),(0,n.jsxs)(i.default,{sx:{flex:1,minHeight:0,position:"relative",display:"flex",flexDirection:"column"},children:[(0,n.jsx)(i.default,{...a_.containerProps,sx:{flex:1,overflow:"auto",px:{xs:1.5,sm:2.5,lg:4},py:{xs:1.25,sm:2.5},"& > *":{width:"100%",maxWidth:{xs:960,lg:"none"},mx:"auto"}},children:ep?(0,n.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,n.jsx)(aU.default,{size:"medium",color:"primary"})}):ef?(0,n.jsx)(u.A,{severity:"error",sx:{m:2},children:ef}):eu?(0,n.jsx)(n.Fragment,{children:rM?(0,n.jsxs)(i.default,{"data-testid":"model-input-conversation",sx:{minHeight:"100%"},children:[rI.length>1&&(0,n.jsxs)(i.default,{sx:{position:"sticky",top:0,zIndex:2,display:"flex",alignItems:"center",justifyContent:"center",gap:.5,width:"fit-content",mx:"auto",mb:1,px:.5,py:.25,border:1,borderColor:"divider",borderRadius:999,bgcolor:"background.paper",boxShadow:1},children:[(0,n.jsx)(p.A,{title:K("chat.debug.previousModelCall"),children:(0,n.jsx)("span",{children:(0,n.jsx)(g.A,{size:"small",onClick:()=>tO(Math.max(0,rC-1)),disabled:rC<=0,"aria-label":K("chat.debug.previousModelCall"),children:(0,n.jsx)(D.A,{fontSize:"small"})})})}),(0,n.jsx)(h.A,{variant:"caption",color:"text.secondary",children:K("chat.debug.modelCall",{current:rC+1,total:rI.length})}),(0,n.jsx)(p.A,{title:K("chat.debug.nextModelCall"),children:(0,n.jsx)("span",{children:(0,n.jsx)(g.A,{size:"small",onClick:()=>tO(Math.min(rI.length-1,rC+1)),disabled:rC>=rI.length-1,"aria-label":K("chat.debug.nextModelCall"),children:(0,n.jsx)(O.A,{fontSize:"small"})})})})]}),r$?(0,n.jsx)(aT,{modelInput:r$,conversationId:`${eu.id}-step-${rk}-call-${rC}`}):(0,n.jsx)(u.A,{severity:"info",variant:"outlined",sx:{mx:"auto",mt:2,maxWidth:720},children:K("chat.debug.noModelCall")})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eJ.Ay,{messages:eu.messages,pendingToolCalls:tg,pendingElicitation:tm,availableNodes:nu,conversationId:eu.id,editingMessageId:tS?.messageId??null,onToggleDisabled:e=>{if(!eu)return;a8.debug("Toggling message disabled state",{messageId:e});let t=eu.messages.map(t=>t.id===e?{...t,disabled:!t.disabled}:t);n$({...eu,messages:t})},onSplitConversation:ra,onSplitConversationFromHere:e=>ra(e,"tail"),onRevertToHere:()=>nr(eu.id),onBeginEditMessage:n7,onApproveToolCall:(e,t)=>{rn("approve",e,t)},onRejectToolCall:(e,t,a)=>{rn("reject",e,t,a)},onCancelToolCall:rr,onSubmitElicitation:ro,onCancelElicitation:rl,pendingQuestion:ty,onAnswerQuestion:rs,onDeclineQuestion:ri,onAppMessage:nB,onUpdateModelContext:nL,onRegisterAppTeardown:n0,onOpenInCanvas:n1,autoOpenMcpApps:V,autoOpenMcpAppResultIds:ew,dismissedMcpAppKeys:eI,autoOpenSuppressed:eN,onMcpAppManualOpen:e$,anchorMessageId:nj,queuedMessages:eK[eu.id]??[],queueHoldReason:(e=>{switch(e){case"Held — you stopped this run. Send again to continue.":return K("chat.page.queueStopped");case"Held — the last run failed. Retry or send again to continue.":return K("chat.page.queueFailed");case"Held — waiting for tool approval.":return K("chat.page.queueApproval");case"Held — paused in the debugger.":return K("chat.page.queueDebugger");default:return e}})((e={running:eB.has(eu.id),pendingApproval:!!tg,debugPaused:tz,hasError:ns?.status==="error",stopped:rN}).stopped?"Held — you stopped this run. Send again to continue.":e.hasError?"Held — the last run failed. Retry or send again to continue.":e.pendingApproval?"Held — waiting for tool approval.":e.debugPaused?"Held — paused in the debugger.":null)}),!eq&&!tz&&eu.messages.length>0&&ns?.status==="completed"&&(0,n.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,n.jsx)(u.A,{icon:(0,n.jsx)(T.A,{fontSize:"inherit"}),severity:"success",variant:"filled",sx:{borderRadius:2,py:.5},children:K("chat.page.completed")})}),!eq&&!tz&&rN&&(0,n.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,n.jsx)(u.A,{icon:(0,n.jsx)(R.A,{fontSize:"inherit"}),severity:"info",variant:"outlined",sx:{borderRadius:2,py:.5,alignItems:"center"},action:rW??(0,n.jsx)(d.A,{color:"inherit",size:"small",startIcon:(0,n.jsx)(E.A,{}),onClick:()=>nq(eu),children:K("chat.page.resume")}),children:K("chat.page.stopped")})}),!eq&&!tz&&!rN&&eu?.recovery&&("interrupted"===eu.recovery.classification||eu.recovery.manualActionRequired)&&(0,n.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,n.jsxs)(u.A,{icon:(0,n.jsx)(N.A,{fontSize:"inherit"}),severity:"warning",variant:"filled",sx:{borderRadius:2,py:.5,alignItems:"center",maxWidth:760},action:(0,n.jsx)(d.A,{color:"inherit",size:"small",startIcon:(0,n.jsx)(E.A,{}),onClick:()=>nq(eu),children:K("chat.page.restartTurn")}),children:[(0,n.jsx)(h.A,{variant:"body2",fontWeight:600,children:eu.recovery.currentCheckpoint?.nodeId?K("chat.page.recoveryAtNode",{node:eu.recovery.currentCheckpoint.nodeId}):K("chat.page.recovery")}),eu.recovery.sideEffectWarning&&(0,n.jsx)(h.A,{variant:"caption",component:"div",children:eu.recovery.sideEffectWarning})]})}),!eq&&!tz&&!e5&&!rN&&eu?.recovery?.classification!=="interrupted"&&!eu?.recovery?.manualActionRequired&&ns?.status==="error"&&(0,n.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,n.jsx)(u.A,{icon:(0,n.jsx)(N.A,{fontSize:"inherit"}),severity:"error",variant:"filled",sx:{borderRadius:2,py:.5,alignItems:"center"},action:rW??(0,n.jsx)(d.A,{color:"inherit",size:"small",startIcon:(0,n.jsx)(E.A,{}),onClick:()=>{nq(eu)},children:K("chat.page.retry")}),children:(0,n.jsx)(aB,{error:eu?.lastError??e8,fallbackMessage:K("chat.page.endedError")})})}),rT&&ag.length>0&&(0,n.jsx)(tx,{todos:ag}),rT&&!tz&&!Y&&(0,n.jsx)(tp,{liveStats:ar,lanes:ah,onOpenLane:eP,onStop:rm,stopDisabled:!ex,retryWait:al&&al.conversationId===ex?al:null}),!rT&&rE&&!tz&&!Y&&(0,n.jsx)(tp,{liveStats:ar,lanes:ah,onOpenLane:eP,awaitingApproval:!0,onStop:rm,stopDisabled:!ex}),e5&&(0,n.jsx)(u.A,{severity:"error",sx:{mt:2},action:(0,n.jsx)(d.A,{color:"inherit",size:"small",startIcon:(0,n.jsx)(E.A,{}),onClick:()=>{eu&&nq(eu)},children:K("chat.page.retry")}),children:(0,n.jsx)(aB,{error:e8,fallbackMessage:e5,compact:!0})})]})}):Y?(0,n.jsxs)(i.default,{sx:{minHeight:"100%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:1.5,px:2,textAlign:"center"},children:[(0,n.jsx)(h.A,{variant:"body1",color:"text.secondary",children:Q.length>0?K("chat.page.selectOrCreate"):K("chat.page.createToStart")}),(0,n.jsx)(d.A,{variant:"contained",size:"large",startIcon:(0,n.jsx)(H.A,{}),onClick:()=>ng(),disabled:0===tn.length,sx:{minHeight:48,borderRadius:999,px:2.5},children:K("chat.page.newTitle")}),Q.length>0&&(0,n.jsx)(d.A,{variant:"text",startIcon:(0,n.jsx)(P.A,{}),onClick:at,children:K("chat.page.showSidebar")})]}):(0,n.jsx)(h.A,{variant:"body1",color:"textSecondary",align:"center",sx:{mt:4},children:Q.length>0?K("chat.page.selectOrCreate"):K("chat.page.createToStart")})}),(0,n.jsx)(I.A,{show:a_.show,actions:a_.actions,disabled:a_.disabled,onAction:a_.onAction,positionMode:"absolute",labels:{top:K("chat.page.scrollTop"),up:K("chat.page.scrollLastMessage"),bottom:K("chat.page.scrollLatest")},sx:{bottom:16,right:24,zIndex:2}})]}),ex&&(0,n.jsx)(eG.A,{conversationId:ex,entries:nX===ex?(0,eY.dd)(nU):[],activeKey:nU.activeKey,onSelectTab:n4,onCloseTab:n6,onAppMessage:nB,onUpdateModelContext:nL,onRegisterTeardown:nZ,onLayoutChange:nY,onCollapseChange:n2,onCloseAll:n5},ex),Y&&rT&&!tz&&(0,n.jsx)(tp,{compact:!0,liveStats:ar,lanes:ah,onOpenLane:eP,onStop:rm,stopDisabled:!ex,retryWait:al&&al.conversationId===ex?al:null}),Y&&!rT&&rE&&!tz&&(0,n.jsx)(tp,{compact:!0,liveStats:ar,lanes:ah,onOpenLane:eP,awaitingApproval:!0,onStop:rm,stopDisabled:!ex}),(!Y||!!ex)&&(0,n.jsxs)(i.default,{sx:{p:0,borderTop:1,borderColor:"divider",background:"linear-gradient(to top, var(--background) 35%, transparent)"},children:[ex&&(eK[ex]??[]).length>0&&(0,n.jsxs)(i.default,{"data-testid":"queued-messages",sx:{mb:1,display:"flex",flexWrap:"wrap",gap:1,alignItems:"center"},children:[(0,n.jsxs)(h.A,{variant:"caption",color:"text.secondary",sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,n.jsx)(q.A,{fontSize:"inherit"})," ",K("chat.page.queued")]}),(eK[ex]??[]).map(e=>(0,n.jsx)(x.A,{size:"small",variant:"outlined",label:e.content.trim().slice(0,40)||(e.attachments.length?X("chat.messages.attachment",e.attachments.length):K("chat.page.queuedMessage")),onDelete:()=>e1(t=>e0(t,ex,e.id))},e.id))]}),(0,n.jsx)(eV.A,{onSendMessage:nF,disabled:ep||!(eu?.flowId||ns?.flowId)||!!tg||tz,requireApproval:to,onRequireApprovalChange:nl,debuggerOpen:rv,onToggleDebugger:rg,availableNodes:nu,flow:nd,currentNodeId:np,nodeOverrideActive:!!tj,onSelectNode:tk,editing:tS,onEditingContentChange:n9,onEditingNodeChange:re,onSaveEdit:()=>{tS&&tS.content.trim()&&(n8(tS.messageId,tS.content,tS.nodeId||""),tI(null))},onCancelEdit:rt})]})]})," ",tG&&ex&&!G&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.default,{onPointerDown:t1,onKeyDown:e=>{("ArrowLeft"===e.key||"ArrowRight"===e.key)&&(e.preventDefault(),t0(t=>{let a=Math.min(Math.max(240,Math.round(.7*window.innerWidth)),Math.max(240,t+("ArrowRight"===e.key?-16:16)));return window.localStorage.setItem("flujo-workflow-panel-width",String(a)),a}))},role:"separator",tabIndex:0,"aria-orientation":"vertical","aria-valuemin":240,"aria-valuemax":Math.max(240,Math.round(.7*window.innerWidth)),"aria-valuenow":Math.min(Math.max(240,Math.round(.7*window.innerWidth)),Math.round(tQ)),sx:{width:"6px",flexShrink:0,display:{xs:"none",lg:"block"},cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},"&:focus-visible":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":K("chat.page.resizeExecuted")}),(0,n.jsx)(i.default,{sx:{width:{xs:"100%",lg:`${tQ}px`},minWidth:{xs:0,lg:240},maxWidth:{xs:"none",lg:"70vw"},flexShrink:0,display:"flex",flexDirection:"column",height:"100%",position:{xs:"absolute",lg:"static"},inset:{xs:0,lg:"auto"},zIndex:{xs:36,lg:"auto"},bgcolor:"background.default"},children:(0,n.jsx)(aF,{flowId:eu?.flowId||ns?.flowId||null,flowSnapshot:tE?.flowSnapshot??null,executedNodeIds:nh,liveActivity:ai,onClose:()=>tY(!1)})})]}),rv&&ex&&!tJ&&!G&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.default,{onPointerDown:t5,onKeyDown:e=>{("ArrowLeft"===e.key||"ArrowRight"===e.key)&&(e.preventDefault(),tX(t=>{let a=Math.min(Math.max(360,Math.round(.85*window.innerWidth)),Math.max(360,(t||Math.round(.5*window.innerWidth))+("ArrowRight"===e.key?-16:16)));return window.localStorage.setItem("flujo-debugger-width",String(a)),a}))},role:"separator",tabIndex:0,"aria-orientation":"vertical","aria-valuemin":360,"aria-valuemax":Math.max(360,Math.round(.85*window.innerWidth)),"aria-valuenow":Math.min(Math.max(360,Math.round(.85*window.innerWidth)),Math.round(tK||.5*window.innerWidth)),sx:{width:"6px",flexShrink:0,display:{xs:"none",lg:"block"},cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},"&:focus-visible":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":K("chat.page.resizeDebugger")}),(0,n.jsx)(i.default,{sx:{width:{xs:"100%",lg:tK?`${tK}px`:"50%"},minWidth:{xs:0,lg:360},maxWidth:{xs:"none",lg:"85vw"},flexShrink:0,display:"flex",flexDirection:"column",height:"100%",position:{xs:"absolute",lg:"static"},inset:{xs:0,lg:"auto"},zIndex:{xs:40,lg:"auto"},bgcolor:"background.default"},children:tE?(0,n.jsx)(aI,{debugState:tE,conversationId:ex,liveActivity:ai,executionEvents:ac,onStepSelectionChange:rA,onStep:rd,onStepOver:rf,onContinue:rc,onCancel:rm,isLoading:eq,breakpoints:ab,onToggleBreakpoint:rh,onSetBreakpoints:ru,onClose:ry,isExpanded:tJ,onToggleExpand:()=>tV(e=>!e)}):(0,n.jsx)(aR,{mode:rw,onClose:ry,isExpanded:tJ,onToggleExpand:()=>tV(e=>!e)})})]})]})," ",tG&&ex&&G&&!rv&&(0,n.jsx)(v.A,{fullScreen:!0,open:!0,onClose:()=>tY(!1),"aria-label":K("chat.page.executedDialog"),children:(0,n.jsx)(i.default,{sx:{height:"100%",display:"flex",flexDirection:"column",bgcolor:"background.default"},children:(0,n.jsx)(aF,{flowId:eu?.flowId||ns?.flowId||null,flowSnapshot:tE?.flowSnapshot??null,executedNodeIds:nh,liveActivity:ai,onClose:()=>tY(!1)})})}),rv&&ex&&(tJ||G)&&(0,n.jsx)(v.A,{fullScreen:!0,open:!0,onClose:()=>{G?ry():tV(!1)},"aria-label":K("chat.page.debuggerDialog"),children:(0,n.jsx)(i.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:tE?(0,n.jsx)(aI,{debugState:tE,conversationId:ex,liveActivity:ai,executionEvents:ac,onStepSelectionChange:rA,onStep:rd,onStepOver:rf,onContinue:rc,onCancel:rm,isLoading:eq,breakpoints:ab,onToggleBreakpoint:rh,onSetBreakpoints:ru,onClose:ry,isExpanded:tJ||G,onToggleExpand:()=>{G?ry():tV(e=>!e)}}):(0,n.jsx)(aR,{mode:rw,onClose:ry,isExpanded:tJ||G,onToggleExpand:()=>{G?ry():tV(e=>!e)}})})}),(0,n.jsxs)(v.A,{open:!!tw,onClose:()=>tA(null),children:[(0,n.jsx)(w.A,{children:K("chat.page.switchTitle")}),(0,n.jsx)(A.A,{children:(0,n.jsx)(j.A,{children:K("chat.page.switchHelp",{agent:tn.find(e=>e.id===tw)?.name||K("chat.page.selectedAgent")})})}),(0,n.jsxs)(k.A,{children:[(0,n.jsx)(d.A,{onClick:()=>tA(null),children:K("chat.page.cancel")}),(0,n.jsx)(d.A,{variant:"contained",onClick:()=>{tA(null),tw&&nD(tw)},children:K("chat.page.switch")})]})]}),(0,n.jsx)(tP,{open:nS,onClose:()=>nI(!1),onStart:nC})]})};var nr=a(13658);let no=(0,tD.h)("app/chat/page");function nl(){return no.debug("Rendering ChatPage"),(0,n.jsx)(o.A,{maxWidth:!1,disableGutters:!0,children:(0,n.jsx)(nr.A,{children:(0,n.jsx)(nn,{})})})}},89228:(e,t,a)=>{"use strict";function n(e){let t=new Map;for(let a of e)t.set(a.id,a);let a=new Map,n=[],r=new Set,o=e=>e.parentConversationId&&e.parentConversationId!==e.id?e.parentConversationId:null,l=e=>e.rootConversationId&&e.rootConversationId!==e.id?e.rootConversationId:null,s=(e,t)=>{let n=a.get(e)??[];n.push(t),a.set(e,n)};for(let a of e){let e=o(a);if(e&&t.has(e)){s(e,a);continue}if(!e){n.push(a);continue}let i=l(a),d=i?t.get(i):void 0;r.add(a.id),d&&i!==e&&!o(d)?s(d.id,a):n.push(a)}let i=new Set,d=[...n];for(;d.length;){let e=d.pop();if(!i.has(e.id))for(let t of(i.add(e.id),a.get(e.id)??[]))d.push(t)}let c=new Set(n.map(e=>e.id));for(let t of e)i.has(t.id)||c.has(t.id)||(n.push(t),c.add(t.id),r.add(t.id));return{roots:n,childrenByParent:a,detachedIds:r}}a.d(t,{C:()=>n})}},e=>{e.O(0,[6373,3862,7926,7564,2457,6714,8111,1627,2782,9852,1418,6686,1216,238,3420,8961,6268,6567,9086,2667,8002,191,7129,1190,2454,1566,373,9304,3464,3101,2375,3841,5212,9749,2352,1114,1978,5147,7401,9610,3999,8441,3794,7358],()=>e(e.s=79415)),_N_E=e.O()}]);