flujo-ai 3.34.0 → 3.35.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 (423) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +324 -317
  3. package/.next/app-path-routes-manifest.json +19 -18
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +24 -24
  6. package/.next/routes-manifest.json +9 -0
  7. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_not-found.html +1 -1
  9. package/.next/server/app/_not-found.rsc +1 -1
  10. package/.next/server/app/api/approvals/[id]/route.js +1 -1
  11. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/approvals/route.js +2 -2
  13. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/backup/route.js +1 -1
  15. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/bugs/enhance/route.js +1 -1
  18. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/env/route.js +2 -2
  22. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/flow/generator/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/flow/prompt-renderer/route.js +1 -1
  31. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/mcp/cancel/route.js +1 -1
  42. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/mcp-registry/route.js +1 -1
  56. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
  58. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/model/provider/route.js +1 -1
  61. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/model/test/route.js +1 -1
  64. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/oauth/callback/route.js +1 -1
  66. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/oauth/initiate/route.js +1 -1
  68. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/oauth/reset/route.js +1 -1
  70. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/packages/search/route.js +1 -1
  79. package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/planned-executions/[id]/route.js +1 -1
  82. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/planned-executions/[id]/run/route.js +1 -1
  84. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/planned-executions/[id]/runs/route.js +1 -1
  86. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/registry/feedback/route.js +1 -1
  94. package/.next/server/app/api/registry/feedback/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/registry/packages/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/restore/route.js +1 -1
  101. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/runs/active/route.js +1 -1
  103. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/storage/route.js +1 -1
  105. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/telemetry/daily-active/route.js +1 -1
  107. package/.next/server/app/api/telemetry/daily-active/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/update/route.js +1 -1
  109. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/chat/page.js +2 -2
  113. package/.next/server/app/chat/page.js.nft.json +1 -1
  114. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  115. package/.next/server/app/chat.html +1 -1
  116. package/.next/server/app/chat.rsc +2 -2
  117. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  118. package/.next/server/app/docs.html +1 -1
  119. package/.next/server/app/docs.rsc +1 -1
  120. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  121. package/.next/server/app/executions.html +1 -1
  122. package/.next/server/app/executions.rsc +1 -1
  123. package/.next/server/app/flows/page.js +2 -2
  124. package/.next/server/app/flows/page.js.nft.json +1 -1
  125. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  126. package/.next/server/app/flows.html +1 -1
  127. package/.next/server/app/flows.rsc +2 -2
  128. package/.next/server/app/index.html +1 -1
  129. package/.next/server/app/index.rsc +1 -1
  130. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  131. package/.next/server/app/mcp-flows/route.js +1 -1
  132. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  134. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/mcp.html +1 -1
  136. package/.next/server/app/mcp.rsc +2 -2
  137. package/.next/server/app/models/page.js +1 -1
  138. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  139. package/.next/server/app/packages/page.js +1 -1
  140. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  141. package/.next/server/app/packages.html +1 -1
  142. package/.next/server/app/packages.rsc +2 -2
  143. package/.next/server/app/page_client-reference-manifest.js +1 -1
  144. package/.next/server/app/settings/page.js +1 -1
  145. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  146. package/.next/server/app/settings.html +1 -1
  147. package/.next/server/app/settings.rsc +2 -2
  148. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  150. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  152. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  154. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  156. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  158. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +1 -1
  160. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +1 -1
  162. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route.js +1 -0
  164. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route.js.nft.json +1 -0
  165. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route_client-reference-manifest.js +1 -0
  166. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
  167. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  169. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +1 -1
  171. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/v1/chat/conversations/route.js +1 -1
  173. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/v1/chat/events/route.js +1 -1
  175. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/v1/models/route.js +1 -1
  177. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  179. package/.next/server/app/waves.html +1 -1
  180. package/.next/server/app/waves.rsc +1 -1
  181. package/.next/server/app-paths-manifest.json +19 -18
  182. package/.next/server/chunks/1227.js +1 -1
  183. package/.next/server/chunks/1805.js +1 -1
  184. package/.next/server/chunks/2273.js +2 -2
  185. package/.next/server/chunks/2372.js +1 -1
  186. package/.next/server/chunks/2859.js +1 -1
  187. package/.next/server/chunks/3935.js +4 -0
  188. package/.next/server/chunks/4265.js +1 -1
  189. package/.next/server/chunks/4771.js +2 -2
  190. package/.next/server/chunks/4822.js +1 -1
  191. package/.next/server/chunks/5096.js +1 -1
  192. package/.next/server/chunks/5309.js +1 -1
  193. package/.next/server/chunks/544.js +16 -16
  194. package/.next/server/chunks/5544.js +1 -1
  195. package/.next/server/chunks/5703.js +2 -2
  196. package/.next/server/chunks/6041.js +1 -1
  197. package/.next/server/chunks/6226.js +1 -1
  198. package/.next/server/chunks/6747.js +42 -42
  199. package/.next/server/chunks/701.js +1 -1
  200. package/.next/server/chunks/7069.js +4 -4
  201. package/.next/server/chunks/7506.js +1 -1
  202. package/.next/server/chunks/7628.js +1 -1
  203. package/.next/server/chunks/7891.js +1 -1
  204. package/.next/server/chunks/7993.js +1 -1
  205. package/.next/server/chunks/8284.js +1 -1
  206. package/.next/server/chunks/8387.js +1 -1
  207. package/.next/server/chunks/8645.js +1 -1
  208. package/.next/server/chunks/8739.js +1 -1
  209. package/.next/server/chunks/9085.js +1 -1
  210. package/.next/server/chunks/9235.js +1 -1
  211. package/.next/server/chunks/9285.js +1 -1
  212. package/.next/server/functions-config-manifest.json +1 -1
  213. package/.next/server/middleware-build-manifest.js +1 -1
  214. package/.next/server/middleware-manifest.json +1 -1
  215. package/.next/server/pages/404.html +1 -1
  216. package/.next/server/pages/500.html +1 -1
  217. package/.next/server/server-reference-manifest.js +1 -1
  218. package/.next/server/server-reference-manifest.json +1 -1
  219. package/.next/static/chunks/{8650-5294c6ed1173b014.js → 8650-aa22dbf7b37348f0.js} +1 -1
  220. package/.next/static/chunks/9611-9867e6e8e65172ec.js +1 -0
  221. package/.next/static/chunks/app/api/approvals/[id]/{route-9ea2990be4b67136.js → route-b9c783850b4c2acf.js} +1 -1
  222. package/.next/static/chunks/app/api/approvals/{route-9ea2990be4b67136.js → route-b9c783850b4c2acf.js} +1 -1
  223. package/.next/static/chunks/app/api/backup/{route-9ea2990be4b67136.js → route-b9c783850b4c2acf.js} +1 -1
  224. package/.next/static/chunks/app/api/browse/{route-9ea2990be4b67136.js → route-b9c783850b4c2acf.js} +1 -1
  225. package/.next/static/chunks/app/api/bugs/enhance/route-b9c783850b4c2acf.js +1 -0
  226. package/.next/static/chunks/app/api/cwd/route-b9c783850b4c2acf.js +1 -0
  227. package/.next/static/chunks/app/api/encryption/secure/route-b9c783850b4c2acf.js +1 -0
  228. package/.next/static/chunks/app/api/env/route-b9c783850b4c2acf.js +1 -0
  229. package/.next/static/chunks/app/api/flow/[id]/route-b9c783850b4c2acf.js +1 -0
  230. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-b9c783850b4c2acf.js +1 -0
  231. package/.next/static/chunks/app/api/flow/[id]/versions/route-b9c783850b4c2acf.js +1 -0
  232. package/.next/static/chunks/app/api/flow/compile/route-b9c783850b4c2acf.js +1 -0
  233. package/.next/static/chunks/app/api/flow/generate/route-b9c783850b4c2acf.js +1 -0
  234. package/.next/static/chunks/app/api/flow/generator/route-b9c783850b4c2acf.js +1 -0
  235. package/.next/static/chunks/app/api/flow/improve/route-b9c783850b4c2acf.js +1 -0
  236. package/.next/static/chunks/app/api/flow/prompt-renderer/route-b9c783850b4c2acf.js +1 -0
  237. package/.next/static/chunks/app/api/flow/quick-chat/route-b9c783850b4c2acf.js +1 -0
  238. package/.next/static/chunks/app/api/flow/repair/route-b9c783850b4c2acf.js +1 -0
  239. package/.next/static/chunks/app/api/flow/route-b9c783850b4c2acf.js +1 -0
  240. package/.next/static/chunks/app/api/git/route-b9c783850b4c2acf.js +1 -0
  241. package/.next/static/chunks/app/api/init/route-b9c783850b4c2acf.js +1 -0
  242. package/.next/static/chunks/app/api/local-models/capability/route-b9c783850b4c2acf.js +1 -0
  243. package/.next/static/chunks/app/api/local-models/pull/route-b9c783850b4c2acf.js +1 -0
  244. package/.next/static/chunks/app/api/local-models/suggest/route-b9c783850b4c2acf.js +1 -0
  245. package/.next/static/chunks/app/api/mcp/app-sandbox/route-b9c783850b4c2acf.js +1 -0
  246. package/.next/static/chunks/app/api/mcp/cancel/route-b9c783850b4c2acf.js +1 -0
  247. package/.next/static/chunks/app/api/mcp/oauth-capability/route-b9c783850b4c2acf.js +1 -0
  248. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-b9c783850b4c2acf.js +1 -0
  249. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-b9c783850b4c2acf.js +1 -0
  250. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-b9c783850b4c2acf.js +1 -0
  251. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-b9c783850b4c2acf.js +1 -0
  252. package/.next/static/chunks/app/api/mcp/servers/[name]/route-b9c783850b4c2acf.js +1 -0
  253. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-b9c783850b4c2acf.js +1 -0
  254. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-b9c783850b4c2acf.js +1 -0
  255. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-b9c783850b4c2acf.js +1 -0
  256. package/.next/static/chunks/app/api/mcp/servers/route-b9c783850b4c2acf.js +1 -0
  257. package/.next/static/chunks/app/api/mcp/test-connection/route-b9c783850b4c2acf.js +1 -0
  258. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-b9c783850b4c2acf.js +1 -0
  259. package/.next/static/chunks/app/api/mcp-registry/route-b9c783850b4c2acf.js +1 -0
  260. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-b9c783850b4c2acf.js +1 -0
  261. package/.next/static/chunks/app/api/model/[id]/route-b9c783850b4c2acf.js +1 -0
  262. package/.next/static/chunks/app/api/model/provider/route-b9c783850b4c2acf.js +1 -0
  263. package/.next/static/chunks/app/api/model/route-b9c783850b4c2acf.js +1 -0
  264. package/.next/static/chunks/app/api/model/test/route-b9c783850b4c2acf.js +1 -0
  265. package/.next/static/chunks/app/api/oauth/callback/route-b9c783850b4c2acf.js +1 -0
  266. package/.next/static/chunks/app/api/oauth/initiate/route-b9c783850b4c2acf.js +1 -0
  267. package/.next/static/chunks/app/api/oauth/reset/route-b9c783850b4c2acf.js +1 -0
  268. package/.next/static/chunks/app/api/packages/build/route-b9c783850b4c2acf.js +1 -0
  269. package/.next/static/chunks/app/api/packages/derive-secrets/route-b9c783850b4c2acf.js +1 -0
  270. package/.next/static/chunks/app/api/packages/install/route-b9c783850b4c2acf.js +1 -0
  271. package/.next/static/chunks/app/api/packages/install/status/route-b9c783850b4c2acf.js +1 -0
  272. package/.next/static/chunks/app/api/packages/installed/route-b9c783850b4c2acf.js +1 -0
  273. package/.next/static/chunks/app/api/packages/resolve/route-b9c783850b4c2acf.js +1 -0
  274. package/.next/static/chunks/app/api/packages/scan-targets/route-b9c783850b4c2acf.js +1 -0
  275. package/.next/static/chunks/app/api/packages/search/route-b9c783850b4c2acf.js +1 -0
  276. package/.next/static/chunks/app/api/packages/uninstall/route-b9c783850b4c2acf.js +1 -0
  277. package/.next/static/chunks/app/api/planned-executions/[id]/route-b9c783850b4c2acf.js +1 -0
  278. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-b9c783850b4c2acf.js +1 -0
  279. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-b9c783850b4c2acf.js +1 -0
  280. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-b9c783850b4c2acf.js +1 -0
  281. package/.next/static/chunks/app/api/planned-executions/reconcile/route-b9c783850b4c2acf.js +1 -0
  282. package/.next/static/chunks/app/api/planned-executions/route-b9c783850b4c2acf.js +1 -0
  283. package/.next/static/chunks/app/api/registry/auth/resend/route-b9c783850b4c2acf.js +1 -0
  284. package/.next/static/chunks/app/api/registry/auth/reset/route-b9c783850b4c2acf.js +1 -0
  285. package/.next/static/chunks/app/api/registry/auth/route-b9c783850b4c2acf.js +1 -0
  286. package/.next/static/chunks/app/api/registry/feedback/route-b9c783850b4c2acf.js +1 -0
  287. package/.next/static/chunks/app/api/registry/oauth/callback/route-b9c783850b4c2acf.js +1 -0
  288. package/.next/static/chunks/app/api/registry/oauth/initiate/route-b9c783850b4c2acf.js +1 -0
  289. package/.next/static/chunks/app/api/registry/packages/route-b9c783850b4c2acf.js +1 -0
  290. package/.next/static/chunks/app/api/registry/publish/route-b9c783850b4c2acf.js +1 -0
  291. package/.next/static/chunks/app/api/registry/settings/route-b9c783850b4c2acf.js +1 -0
  292. package/.next/static/chunks/app/api/restore/route-b9c783850b4c2acf.js +1 -0
  293. package/.next/static/chunks/app/api/runs/active/route-b9c783850b4c2acf.js +1 -0
  294. package/.next/static/chunks/app/api/storage/route-b9c783850b4c2acf.js +1 -0
  295. package/.next/static/chunks/app/api/telemetry/daily-active/route-b9c783850b4c2acf.js +1 -0
  296. package/.next/static/chunks/app/api/update/route-b9c783850b4c2acf.js +1 -0
  297. package/.next/static/chunks/app/api/waves/route-b9c783850b4c2acf.js +1 -0
  298. package/.next/static/chunks/app/api/webhooks/[id]/route-b9c783850b4c2acf.js +1 -0
  299. package/.next/static/chunks/app/chat/{page-bc7807593b8b7394.js → page-e37bbc561f40ce60.js} +1 -1
  300. package/.next/static/chunks/app/flows/{page-87fb466e491fc068.js → page-e52c8943555e38dd.js} +1 -1
  301. package/.next/static/chunks/app/mcp-flows/route-b9c783850b4c2acf.js +1 -0
  302. package/.next/static/chunks/app/mcp-proxy/[server]/route-b9c783850b4c2acf.js +1 -0
  303. package/.next/static/chunks/app/models/page-595597042e227970.js +1 -0
  304. package/.next/static/chunks/app/packages/page-f1a22789a6c0e0b6.js +1 -0
  305. package/.next/static/chunks/app/settings/{page-2fc3a70bfd25c48b.js → page-f35e939032b0277d.js} +1 -1
  306. package/.next/static/chunks/app/v1/chat/completions/route-b9c783850b4c2acf.js +1 -0
  307. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-b9c783850b4c2acf.js +1 -0
  308. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-b9c783850b4c2acf.js +1 -0
  309. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-b9c783850b4c2acf.js +1 -0
  310. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-b9c783850b4c2acf.js +1 -0
  311. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-b9c783850b4c2acf.js +1 -0
  312. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-b9c783850b4c2acf.js +1 -0
  313. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-b9c783850b4c2acf.js +1 -0
  314. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route-b9c783850b4c2acf.js +1 -0
  315. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-b9c783850b4c2acf.js +1 -0
  316. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-b9c783850b4c2acf.js +1 -0
  317. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-b9c783850b4c2acf.js +1 -0
  318. package/.next/static/chunks/app/v1/chat/conversations/route-b9c783850b4c2acf.js +1 -0
  319. package/.next/static/chunks/app/v1/chat/events/route-b9c783850b4c2acf.js +1 -0
  320. package/.next/static/chunks/app/v1/models/route-b9c783850b4c2acf.js +1 -0
  321. package/.next/static/chunks/{webpack-d5d737ff6a86674f.js → webpack-9d09d53b271f49e2.js} +1 -1
  322. package/.next/trace +10 -10
  323. package/.next/types/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route.ts +347 -0
  324. package/.next/types/routes.d.ts +2 -1
  325. package/.next/types/validator.ts +9 -0
  326. package/README.md +60 -61
  327. package/package.json +1 -1
  328. package/.next/server/chunks/4308.js +0 -4
  329. package/.next/static/chunks/6733-c9029143901e62e9.js +0 -1
  330. package/.next/static/chunks/app/api/bugs/enhance/route-9ea2990be4b67136.js +0 -1
  331. package/.next/static/chunks/app/api/cwd/route-9ea2990be4b67136.js +0 -1
  332. package/.next/static/chunks/app/api/encryption/secure/route-9ea2990be4b67136.js +0 -1
  333. package/.next/static/chunks/app/api/env/route-9ea2990be4b67136.js +0 -1
  334. package/.next/static/chunks/app/api/flow/[id]/route-9ea2990be4b67136.js +0 -1
  335. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-9ea2990be4b67136.js +0 -1
  336. package/.next/static/chunks/app/api/flow/[id]/versions/route-9ea2990be4b67136.js +0 -1
  337. package/.next/static/chunks/app/api/flow/compile/route-9ea2990be4b67136.js +0 -1
  338. package/.next/static/chunks/app/api/flow/generate/route-9ea2990be4b67136.js +0 -1
  339. package/.next/static/chunks/app/api/flow/generator/route-9ea2990be4b67136.js +0 -1
  340. package/.next/static/chunks/app/api/flow/improve/route-9ea2990be4b67136.js +0 -1
  341. package/.next/static/chunks/app/api/flow/prompt-renderer/route-9ea2990be4b67136.js +0 -1
  342. package/.next/static/chunks/app/api/flow/quick-chat/route-9ea2990be4b67136.js +0 -1
  343. package/.next/static/chunks/app/api/flow/repair/route-9ea2990be4b67136.js +0 -1
  344. package/.next/static/chunks/app/api/flow/route-9ea2990be4b67136.js +0 -1
  345. package/.next/static/chunks/app/api/git/route-9ea2990be4b67136.js +0 -1
  346. package/.next/static/chunks/app/api/init/route-9ea2990be4b67136.js +0 -1
  347. package/.next/static/chunks/app/api/local-models/capability/route-9ea2990be4b67136.js +0 -1
  348. package/.next/static/chunks/app/api/local-models/pull/route-9ea2990be4b67136.js +0 -1
  349. package/.next/static/chunks/app/api/local-models/suggest/route-9ea2990be4b67136.js +0 -1
  350. package/.next/static/chunks/app/api/mcp/app-sandbox/route-9ea2990be4b67136.js +0 -1
  351. package/.next/static/chunks/app/api/mcp/cancel/route-9ea2990be4b67136.js +0 -1
  352. package/.next/static/chunks/app/api/mcp/oauth-capability/route-9ea2990be4b67136.js +0 -1
  353. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-9ea2990be4b67136.js +0 -1
  354. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-9ea2990be4b67136.js +0 -1
  355. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-9ea2990be4b67136.js +0 -1
  356. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-9ea2990be4b67136.js +0 -1
  357. package/.next/static/chunks/app/api/mcp/servers/[name]/route-9ea2990be4b67136.js +0 -1
  358. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-9ea2990be4b67136.js +0 -1
  359. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-9ea2990be4b67136.js +0 -1
  360. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-9ea2990be4b67136.js +0 -1
  361. package/.next/static/chunks/app/api/mcp/servers/route-9ea2990be4b67136.js +0 -1
  362. package/.next/static/chunks/app/api/mcp/test-connection/route-9ea2990be4b67136.js +0 -1
  363. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-9ea2990be4b67136.js +0 -1
  364. package/.next/static/chunks/app/api/mcp-registry/route-9ea2990be4b67136.js +0 -1
  365. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-9ea2990be4b67136.js +0 -1
  366. package/.next/static/chunks/app/api/model/[id]/route-9ea2990be4b67136.js +0 -1
  367. package/.next/static/chunks/app/api/model/provider/route-9ea2990be4b67136.js +0 -1
  368. package/.next/static/chunks/app/api/model/route-9ea2990be4b67136.js +0 -1
  369. package/.next/static/chunks/app/api/model/test/route-9ea2990be4b67136.js +0 -1
  370. package/.next/static/chunks/app/api/oauth/callback/route-9ea2990be4b67136.js +0 -1
  371. package/.next/static/chunks/app/api/oauth/initiate/route-9ea2990be4b67136.js +0 -1
  372. package/.next/static/chunks/app/api/oauth/reset/route-9ea2990be4b67136.js +0 -1
  373. package/.next/static/chunks/app/api/packages/build/route-9ea2990be4b67136.js +0 -1
  374. package/.next/static/chunks/app/api/packages/derive-secrets/route-9ea2990be4b67136.js +0 -1
  375. package/.next/static/chunks/app/api/packages/install/route-9ea2990be4b67136.js +0 -1
  376. package/.next/static/chunks/app/api/packages/install/status/route-9ea2990be4b67136.js +0 -1
  377. package/.next/static/chunks/app/api/packages/installed/route-9ea2990be4b67136.js +0 -1
  378. package/.next/static/chunks/app/api/packages/resolve/route-9ea2990be4b67136.js +0 -1
  379. package/.next/static/chunks/app/api/packages/scan-targets/route-9ea2990be4b67136.js +0 -1
  380. package/.next/static/chunks/app/api/packages/search/route-9ea2990be4b67136.js +0 -1
  381. package/.next/static/chunks/app/api/packages/uninstall/route-9ea2990be4b67136.js +0 -1
  382. package/.next/static/chunks/app/api/planned-executions/[id]/route-9ea2990be4b67136.js +0 -1
  383. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-9ea2990be4b67136.js +0 -1
  384. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-9ea2990be4b67136.js +0 -1
  385. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-9ea2990be4b67136.js +0 -1
  386. package/.next/static/chunks/app/api/planned-executions/reconcile/route-9ea2990be4b67136.js +0 -1
  387. package/.next/static/chunks/app/api/planned-executions/route-9ea2990be4b67136.js +0 -1
  388. package/.next/static/chunks/app/api/registry/auth/resend/route-9ea2990be4b67136.js +0 -1
  389. package/.next/static/chunks/app/api/registry/auth/reset/route-9ea2990be4b67136.js +0 -1
  390. package/.next/static/chunks/app/api/registry/auth/route-9ea2990be4b67136.js +0 -1
  391. package/.next/static/chunks/app/api/registry/feedback/route-9ea2990be4b67136.js +0 -1
  392. package/.next/static/chunks/app/api/registry/oauth/callback/route-9ea2990be4b67136.js +0 -1
  393. package/.next/static/chunks/app/api/registry/oauth/initiate/route-9ea2990be4b67136.js +0 -1
  394. package/.next/static/chunks/app/api/registry/packages/route-9ea2990be4b67136.js +0 -1
  395. package/.next/static/chunks/app/api/registry/publish/route-9ea2990be4b67136.js +0 -1
  396. package/.next/static/chunks/app/api/registry/settings/route-9ea2990be4b67136.js +0 -1
  397. package/.next/static/chunks/app/api/restore/route-9ea2990be4b67136.js +0 -1
  398. package/.next/static/chunks/app/api/runs/active/route-9ea2990be4b67136.js +0 -1
  399. package/.next/static/chunks/app/api/storage/route-9ea2990be4b67136.js +0 -1
  400. package/.next/static/chunks/app/api/telemetry/daily-active/route-9ea2990be4b67136.js +0 -1
  401. package/.next/static/chunks/app/api/update/route-9ea2990be4b67136.js +0 -1
  402. package/.next/static/chunks/app/api/waves/route-9ea2990be4b67136.js +0 -1
  403. package/.next/static/chunks/app/api/webhooks/[id]/route-9ea2990be4b67136.js +0 -1
  404. package/.next/static/chunks/app/mcp-flows/route-9ea2990be4b67136.js +0 -1
  405. package/.next/static/chunks/app/mcp-proxy/[server]/route-9ea2990be4b67136.js +0 -1
  406. package/.next/static/chunks/app/models/page-a5e2437356b06db8.js +0 -1
  407. package/.next/static/chunks/app/packages/page-fba5696f33d9cdfb.js +0 -1
  408. package/.next/static/chunks/app/v1/chat/completions/route-9ea2990be4b67136.js +0 -1
  409. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-9ea2990be4b67136.js +0 -1
  410. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-9ea2990be4b67136.js +0 -1
  411. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-9ea2990be4b67136.js +0 -1
  412. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-9ea2990be4b67136.js +0 -1
  413. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-9ea2990be4b67136.js +0 -1
  414. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-9ea2990be4b67136.js +0 -1
  415. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-9ea2990be4b67136.js +0 -1
  416. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-9ea2990be4b67136.js +0 -1
  417. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-9ea2990be4b67136.js +0 -1
  418. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-9ea2990be4b67136.js +0 -1
  419. package/.next/static/chunks/app/v1/chat/conversations/route-9ea2990be4b67136.js +0 -1
  420. package/.next/static/chunks/app/v1/chat/events/route-9ea2990be4b67136.js +0 -1
  421. package/.next/static/chunks/app/v1/models/route-9ea2990be4b67136.js +0 -1
  422. /package/.next/static/{Zz_Vh59XdtLIPcf-PxCpo → hbjnLG9RCje2AApS9TzP8}/_buildManifest.js +0 -0
  423. /package/.next/static/{Zz_Vh59XdtLIPcf-PxCpo → hbjnLG9RCje2AApS9TzP8}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8457],{22573:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var l=n(95155);n(12115);var o=n(33567),r=n(94049),a=n(41983),s=n(25635),i=n(28548),d=n(50430),c=n(63186),u=n(91665);let f=e=>{let{label:t,count:n,expanded:f,onToggle:p,showFolderIcon:h=!1,children:g}=e,m=(0,o.A)();return(0,l.jsxs)(r.default,{sx:{mb:1.5},children:[(0,l.jsxs)(r.default,{role:"button",tabIndex:0,"aria-expanded":f,onClick:p,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),p())},sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.75,borderRadius:1,cursor:"pointer",userSelect:"none",backgroundColor:m.palette.background.default,border:"1px solid ".concat(m.palette.divider),"&:hover":{backgroundColor:m.palette.action.hover}},children:[(0,l.jsx)(a.A,{size:"small","aria-label":f?"Collapse section":"Expand section",onClick:e=>{e.stopPropagation(),p()},sx:{transition:"transform 0.2s",transform:f?"rotate(0deg)":"rotate(-90deg)"},children:(0,l.jsx)(c.A,{fontSize:"small"})}),h&&(0,l.jsx)(u.A,{fontSize:"small",sx:{color:"text.secondary"}}),(0,l.jsx)(s.default,{variant:"subtitle2",sx:{fontWeight:600},children:t}),(0,l.jsx)(i.A,{label:n,size:"small",sx:{height:20,fontSize:"0.7rem"}})]}),(0,l.jsx)(d.A,{in:f,unmountOnExit:!0,children:(0,l.jsx)(r.default,{sx:{pt:1.5},children:g})})]})}},27156:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var l=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",e.ENCRYPTION_KEY="encryption_key",e.MCP_SERVERS="mcp_servers",e.GLOBAL_ENV_VARS="global_env_vars",e.CURRENT_CONVERSATION_ID="current_conversation_id",e.SELECTED_FLOW_ID="selected_flow_id",e.LAST_PICKED_FLOW_ID="last_picked_flow_id",e.SPEECH_SETTINGS="speech_settings",e.SPOTLIGHT_SERVERS="spotlight_servers",e.PLANNED_EXECUTIONS="planned_executions",e.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",e.MCP_QUALITY_SETTINGS="mcp_quality_settings",e.RUN_RESOURCE_SETTINGS="run_resource_settings",e.KV_STORE_SETTINGS="kv_store_settings",e.PENDING_APPROVALS="pending_approvals",e.MCP_INTERNAL_OVERRIDES="mcp_internal_overrides",e.PACKAGE_INSTALLS="package_installs",e.EXPERIMENTAL_SETTINGS="experimental_settings",e.REGISTRY_ACCOUNT="registry_account",e.REGISTRY_SETTINGS="registry_settings",e.TELEMETRY_STATE="telemetry_state",e}({})},29692:(e,t,n)=>{"use strict";n.d(t,{Zg:()=>l.Z,YM:()=>i,VH:()=>s,Mj:()=>a});var l=n(27156),o=n(12115);let r=(0,n(87021).h)("utils/storage/frontend.ts");function a(e,t){r.verbose("useLocalStorage: Entering method");let[n,l]=(0,o.useState)(t),[a,s]=(0,o.useState)(!0),i=(0,o.useRef)(n);return(0,o.useEffect)(()=>{i.current=n},[n]),(0,o.useEffect)(()=>{(async()=>{r.verbose("loadValue: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),o=await n.json();n.ok&&l(o.value)}catch(t){r.warn('Error reading storage key "'.concat(e,'":'),t)}finally{s(!1)}})()},[e]),[n,(0,o.useCallback)(async t=>{r.verbose("setValue: Entering method");try{let n=t instanceof Function?t(i.current):t;if(l(n),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:n})})).ok)throw Error("Failed to save value")}catch(t){r.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),a]}let s=async(e,t)=>{r.verbose("saveItem: Entering method");try{if(!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).ok)throw Error("Failed to save item")}catch(e){throw r.error("Error saving to storage:",e),e}},i=async(e,t)=>{r.verbose("loadItem: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!n.ok)throw Error("Failed to load item");return(await n.json()).value}catch(e){return r.error("Error loading from storage:",e),t}}},38459:(e,t,n)=>{"use strict";n.d(t,{Az:()=>o,FM:()=>l,Je:()=>a,po:()=>r,yF:()=>s});let l="folder";function o(e,t){let n=[],l=new Map;for(let o of e){let{key:e,label:r}=t(o),a=l.get(e);a||(a={key:e,label:r,items:[]},l.set(e,a),n.push(a)),a.items.push(o)}return n}function r(e){let t=(null!=e?e:"").trim().charAt(0).toUpperCase();return t>="A"&&t<="Z"?{key:"letter:".concat(t),label:t}:{key:"letter:#",label:"#"}}function a(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Ungrouped",l=new Map,o=[];for(let n of e){var r;let e=null==(r=t(n))?void 0:r.trim();if(e){let t=l.get(e);t?t.push(n):l.set(e,[n])}else o.push(n)}let a=Array.from(l.keys()).sort((e,t)=>e.localeCompare(t)).map(e=>({key:"folder:".concat(e),label:e,items:l.get(e)}));return o.length>0&&a.push({key:"folder:__ungrouped__",label:n,items:o}),a}function s(e,t){let n=new Set;for(let o of e){var l;let e=null==(l=t(o))?void 0:l.trim();e&&n.add(e)}return Array.from(n).sort((e,t)=>e.localeCompare(t))}},65818:(e,t,n)=>{"use strict";n.d(t,{mO:()=>r,oO:()=>a});var l=n(38459);let o=["stdio","websocket","sse","streamable"];function r(e,t){switch(t){case"name-asc":case"name-desc":return(0,l.po)(e.name);case"status-connected":case"status-disconnected":{let t=e.status;if("connected"===t)return{key:"status:connected",label:"Connected"};if("error"===t)return{key:"status:error",label:"Error"};if("requires_authentication"===t)return{key:"status:auth",label:"Requires authentication"};return{key:"status:disconnected",label:"Disconnected"}}case"transport":{let t=e.transport||"unknown";return{key:"transport:".concat(t),label:({stdio:"Stdio",websocket:"WebSocket",sse:"SSE",streamable:"Streamable HTTP"})[t]||t}}default:return{key:"all",label:"All servers"}}}function a(e,t){let n=(e,n)=>{switch(t){case"name-asc":return e.name.localeCompare(n.name);case"name-desc":return n.name.localeCompare(e.name);case"status-connected":if("connected"===e.status&&"connected"!==n.status)return -1;if("connected"!==e.status&&"connected"===n.status)return 1;return e.name.localeCompare(n.name);case"status-disconnected":if("disconnected"===e.status&&"disconnected"!==n.status)return -1;if("disconnected"!==e.status&&"disconnected"===n.status)return 1;return e.name.localeCompare(n.name);case"transport":{var l,r;let t=o.indexOf(null!=(l=e.transport)?l:""),a=o.indexOf(null!=(r=n.transport)?r:"");if(t!==a)return t-a;return e.name.localeCompare(n.name)}default:return 0}};return[...e].sort((e,t)=>{let l=Number(!!t.favorite)-Number(!!e.favorite);return 0!==l?l:n(e,t)})}},69645:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>ne});var l=n(95155),o=n(12115),r=n(97322),a=n(20063),s=n(94049),i=n(78470),d=n(41983),c=n(22003),u=n(9562),f=n(25635),p=n(28548),h=n(91871),g=n(3339),m=n(67895),x=n(2778),v=n(52363),b=n(65036),y=n(50001),w=n(75912),j=n(22719),A=n(11096),S=n(76530),I=n(36741),k=n(60691),C=n(47419),E=n(78410),T=n(14915),N=n(55930),D=n(56900),R=n(26922),z=n(29692),M=n(23820),_=n(73707),O=n(17681),P=n(21067),F=n(56422),L=n(52641),W=n(55606),U=n(86973),H=n(41602),q=n(50430),B=n(4484),G=n(86946),J=n(19219),V=n(51611),Y=n(12140),K=n(63186),Q=n(62962),X=n(51331),Z=n(97736);function $(e){return"string"==typeof e&&e.startsWith("quickchat-")}n(77890);var ee=n(88377),et=n(38459);let en="wave:__adhoc__",el="wave:__archived__";var eo=n(97104);function er(e){let{nodes:t,childrenByParent:n,renderItem:o,expanded:r,onToggle:a,depth:i=0,visited:c,maxDepth:u=20}=e;if(!t||0===t.length||i>u)return null;let f=null!=c?c:new Set;return(0,l.jsx)(l.Fragment,{children:t.map(e=>{var t;if(f.has(e.id))return null;let c=null!=(t=n.get(e.id))?t:[],p=c.length>0&&i<u,h=!1!==r[e.id],g=new Set(f);return g.add(e.id),(0,l.jsxs)(s.default,{sx:{pl:1.5*(i>0),borderLeft:i>0?"1px dashed rgba(128,128,128,0.35)":"none"},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"flex-start"},children:[p?(0,l.jsx)(d.A,{size:"small",onClick:()=>a(e.id),"aria-label":h?"Collapse chain":"Expand chain",sx:{mt:.5,flexShrink:0},children:h?(0,l.jsx)(Q.A,{fontSize:"small"}):(0,l.jsx)(K.A,{fontSize:"small"})}):(0,l.jsx)(s.default,{sx:{width:34,flexShrink:0}}),(0,l.jsx)(s.default,{sx:{flex:1,minWidth:0},children:o(e,i)})]}),p&&(0,l.jsx)(q.A,{in:h,timeout:"auto",unmountOnExit:!0,children:(0,l.jsx)(er,{nodes:c,childrenByParent:n,renderItem:o,expanded:r,onToggle:a,depth:i+1,visited:g,maxDepth:u})})]},e.id)})})}function ea(e){var t,n;let l=new Map;for(let t of e)l.set(t.id,t);let o=new Map,r=[],a=e=>e.parentConversationId&&e.parentConversationId!==e.id?e.parentConversationId:null;for(let n of e){let e=a(n);if(e&&l.has(e)){let l=null!=(t=o.get(e))?t:[];l.push(n),o.set(e,l)}else r.push(n)}let s=new Set,i=[...r];for(;i.length;){let e=i.pop();if(!s.has(e.id))for(let t of(s.add(e.id),null!=(n=o.get(e.id))?n:[]))i.push(t)}let d=new Set(r.map(e=>e.id));for(let t of e)s.has(t.id)||d.has(t.id)||(r.push(t),d.add(t.id));return{roots:r,childrenByParent:o}}let es={group:"flujo-ui:chat-sidebar:group",status:"flujo-ui:chat-sidebar:status",flow:"flujo-ui:chat-sidebar:flow",date:"flujo-ui:chat-sidebar:date",collapsed:"flujo-ui:chat-sidebar:collapsed",searchDim:"flujo-ui:chat-sidebar:search-dim"},ei=[{value:"all",label:"Any status"},{value:"running",label:"Processing"},{value:"awaiting_tool_approval",label:"Awaiting approval"},{value:"paused_debug",label:"Paused (debug)"},{value:"completed",label:"Completed"},{value:"error",label:"Error"}],ed=[{value:"all",label:"Any time"},{value:"today",label:"Last 24h"},{value:"7d",label:"Last 7 days"},{value:"30d",label:"Last 30 days"}],ec=[{value:"none",label:"No grouping"},{value:"date",label:"Group by date"},{value:"flow",label:"Group by flow"},{value:"wave",label:"Group by wave"},{value:"chain",label:"Group by chain"}],eu=e=>{let{conversations:t,currentConversationId:n,onSelectConversation:r,onDeleteConversation:a,onBulkDelete:c,onStopConversation:g,onNewConversation:m,onQuickChat:j,onCollapse:S,flowNames:I={}}=e,[k,E]=o.useState(""),[T,N]=o.useState({open:!1,ids:[],label:""}),[D,R]=(0,eo.Xk)(es.searchDim,"title"),[z,eu]=o.useState(null),[ef,ep]=(0,eo.Xk)(es.group,"none"),[eh,eg]=(0,eo.Xk)(es.status,"all"),[em,ex]=(0,eo.Xk)(es.flow,"all"),[ev,eb]=(0,eo.Xk)(es.date,"all"),[ey,ew]=(0,eo.Xk)(es.collapsed,{}),[ej,eA]=o.useState(null);o.useEffect(()=>{if("wave"!==ef)return;let e=!1;return fetch("/api/waves").then(e=>e.ok?e.json():null).then(t=>{!e&&t&&eA(t)}).catch(()=>{}),()=>{e=!0}},[ef,t]);let eS=(0,o.useMemo)(()=>(function(e){let t=new Map;if(!(null==e?void 0:e.waves))return t;for(let l of e.waves){var n;let e=null==(n=l.rootExecutionIds)?void 0:n[0],o=e&&l.nodes.find(t=>t.executionId===e)||l.nodes[0],r=(null==o?void 0:o.name)||(null==o?void 0:o.flowName)||l.id;for(let e of l.nodes)t.set(e.executionId,{waveId:l.id,label:r})}return t})(ej),[ej]);o.useEffect(()=>{let e=k.trim();if("content"!==D||0===e.length)return void eu(null);let t=!1,n=setTimeout(()=>{fetch("/v1/chat/conversations?search=".concat(encodeURIComponent(e),"&dimension=content")).then(e=>e.ok?e.json():[]).then(e=>{t||eu(new Set(Array.isArray(e)?e.map(e=>e.id):[]))}).catch(()=>{t||eu(new Set)})},300);return()=>{t=!0,clearTimeout(n)}},[k,D]);let eI=o.useCallback(e=>{var t;return e?$(e)?{key:"flow:__quickchat__",label:"Quick Chat"}:{key:"flow:".concat(e),label:null!=(t=I[e])?t:"Unknown flow"}:{key:"flow:__none__",label:"No flow"}},[I]),ek=(0,o.useMemo)(()=>{let e=new Map;for(let n of t){let t=eI(n.flowId);e.has(t.key)||e.set(t.key,t.label)}return Array.from(e.entries()).map(e=>{let[t,n]=e;return{key:t,label:n}}).sort((e,t)=>e.label.localeCompare(t.label))},[t,eI]),eC=(0,o.useMemo)(()=>{let e=k.trim().toLowerCase(),n=Date.now(),l="today"===ev?n-864e5:"7d"===ev?n-6048e5:"30d"===ev?n-2592e6:0;return t.filter(t=>{if("all"!==eh&&t.status!==eh||"all"!==em&&eI(t.flowId).key!==em||l&&t.updatedAt<l)return!1;if(e){if("content"===D){if(!z||!z.has(t.id))return!1}else if(!"".concat(t.title," ").concat(eI(t.flowId).label).toLowerCase().includes(e))return!1}return!0}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})},[t,k,D,z,eh,em,ev,eI]),eE=(0,o.useMemo)(()=>"none"===ef?[{key:"all",label:"",items:eC}]:"wave"===ef?function(e){let t=new Set([en,el]);return[...e.filter(e=>!t.has(e.key)),...e.filter(e=>t.has(e.key))]}((0,et.Az)(eC,e=>(function(e,t){if(!e)return{key:en,label:"Ad-hoc"};let n=t.get(e);return n?{key:"wave:".concat(n.waveId),label:n.label}:{key:el,label:"Archived / no longer scheduled"}})(e.plannedExecutionId,eS))):(0,et.Az)(eC,e=>"date"===ef?(0,ee.K)(e.updatedAt):eI(e.flowId)),[eC,ef,eI,eS]),eT=(0,o.useMemo)(()=>"chain"===ef?ea(eC):{roots:[],childrenByParent:new Map},[ef,eC]),[eN,eD]=o.useState({}),eR=o.useCallback(e=>{eD(t=>({...t,[e]:!1===t[e]}))},[]),ez=(0,o.useMemo)(()=>{let e=new Map;if("wave"!==ef)return e;for(let t of eE)e.set(t.key,ea(t.items));return e},[ef,eE]),eM=+("all"!==eh)+ +("all"!==em)+ +("all"!==ev),e_=e=>{let t=!!g&&("running"===e.status||"awaiting_tool_approval"===e.status),o=eI(e.flowId),c="flow:__quickchat__"===o.key;return(0,l.jsx)(M.Ay,{disablePadding:!0,secondaryAction:(0,l.jsxs)(l.Fragment,{children:[t&&(0,l.jsx)(i.A,{title:"Stop this run",children:(0,l.jsx)(d.A,{edge:"end","aria-label":"stop run",onClick:t=>{t.stopPropagation(),g(e.id)},children:(0,l.jsx)(C.A,{color:"error"})})}),(0,l.jsx)(d.A,{edge:"end","aria-label":"delete",onClick:t=>{t.stopPropagation(),a(e.id)},children:(0,l.jsx)(B.A,{})})]}),sx:{opacity:e.id===n?1:.7},children:(0,l.jsx)(_.A,{selected:e.id===n,onClick:()=>r(e.id),sx:{pr:t?12:7},children:(0,l.jsx)(O.A,{primary:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[e.status&&(0,l.jsx)(i.A,{title:(e=>{switch(e){case"running":return"Processing";case"awaiting_tool_approval":return"Waiting for tool approval";case"paused_debug":return"Paused in debug mode";case"completed":return"Completed";case"capped":return"Landed at turn limit (summary produced)";case"error":return"Error";default:return""}})(e.status),children:(0,l.jsx)(s.default,{component:"span",sx:{width:8,height:8,borderRadius:"50%",bgcolor:(e=>{switch(e){case"running":return"primary.main";case"awaiting_tool_approval":return"warning.main";case"paused_debug":return"secondary.main";case"completed":return"success.main";case"capped":return"info.main";case"error":return"error.main";default:return"transparent"}})(e.status),display:"inline-block",flexShrink:0}})}),(0,l.jsx)(i.A,{title:e.title,enterDelay:500,children:(0,l.jsx)(f.default,{component:"span",fontWeight:e.id===n?"bold":"normal",sx:{display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",wordBreak:"break-word"},children:e.title})})]}),secondary:(0,l.jsxs)(s.default,{component:"span",sx:{display:"flex",alignItems:"center",gap:.75,mt:.5,flexWrap:"wrap"},children:["flow"!==ef&&(0,l.jsx)(i.A,{title:c?"Quick Chat (no saved flow)":"Flow: ".concat(o.label),children:(0,l.jsx)(p.A,{icon:c?(0,l.jsx)(A.A,{}):void 0,label:o.label,size:"small",variant:"outlined",color:c?"secondary":"default",sx:{maxWidth:"100%",height:20,"& .MuiChip-label":{px:.75,fontSize:"0.7rem"}}})}),(0,l.jsx)(f.default,{component:"span",variant:"caption",color:"text.secondary",children:new Date(e.updatedAt).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),secondaryTypographyProps:{component:"div"}})})},e.id)},eO=t.length,eP=eC.length;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(s.default,{sx:{p:2,display:"flex",justifyContent:"space-between",alignItems:"center",gap:1},children:[S&&(0,l.jsx)(i.A,{title:"Hide sidebar",children:(0,l.jsx)(d.A,{size:"small",onClick:S,"aria-label":"Hide conversation sidebar",children:(0,l.jsx)(J.A,{})})}),(0,l.jsx)(f.default,{variant:"h6",sx:{flex:1},noWrap:!0,children:"Conversations"}),t.length>0&&(0,l.jsx)(i.A,{title:"Delete all conversations",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",color:"error","aria-label":"Delete all conversations",onClick:()=>N({open:!0,ids:t.map(e=>e.id),label:"Delete all ".concat(t.length," conversation(s)?")}),children:(0,l.jsx)(X.A,{fontSize:"small"})})})}),eC.length>0&&eC.length<t.length&&(0,l.jsx)(i.A,{title:"Delete visible conversations (matching current filter)",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",color:"error","aria-label":"Delete visible conversations",onClick:()=>N({open:!0,ids:eC.map(e=>e.id),label:"Delete ".concat(eC.length," visible conversation(s)?")}),children:(0,l.jsx)(Z.A,{fontSize:"small"})})})}),j&&(0,l.jsx)(i.A,{title:"Quick Chat: a model + optional MCP servers, no saved flow",children:(0,l.jsx)(h.A,{variant:"outlined",color:"primary",startIcon:(0,l.jsx)(A.A,{}),onClick:j,size:"small",children:"Quick"})}),(0,l.jsx)(h.A,{variant:"contained",color:"primary",startIcon:(0,l.jsx)(G.A,{}),onClick:m,size:"small",children:"New"})]}),(0,l.jsx)(P.A,{}),(0,l.jsxs)(s.default,{sx:{px:2,pt:1.5,pb:1,display:"flex",flexDirection:"column",gap:1},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",gap:1},children:[(0,l.jsx)(u.A,{size:"small",sx:{flex:1},placeholder:"content"===D?"Search message content…":"Search title or flow…",value:k,onChange:e=>E(e.target.value),InputProps:{startAdornment:(0,l.jsx)(F.A,{position:"start",children:(0,l.jsx)(V.A,{fontSize:"small"})}),endAdornment:k?(0,l.jsx)(F.A,{position:"end",children:(0,l.jsx)(d.A,{size:"small","aria-label":"Clear search",onClick:()=>E(""),children:(0,l.jsx)(Y.A,{fontSize:"small"})})}):void 0}}),(0,l.jsx)(L.A,{size:"small",sx:{minWidth:100},children:(0,l.jsxs)(W.A,{value:D,onChange:e=>R(e.target.value),"aria-label":"Search dimension",children:[(0,l.jsx)(U.A,{value:"title",children:"Title"}),(0,l.jsx)(U.A,{value:"content",children:"Content"})]})})]}),(0,l.jsxs)(s.default,{sx:{display:"flex",flexWrap:"wrap",gap:1},children:[(0,l.jsx)(L.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsx)(W.A,{value:ef,onChange:e=>ep(e.target.value),"aria-label":"Group conversations",children:ec.map(e=>(0,l.jsx)(U.A,{value:e.value,children:e.label},e.value))})}),(0,l.jsx)(L.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsx)(W.A,{value:eh,onChange:e=>eg(e.target.value),"aria-label":"Filter by status",children:ei.map(e=>(0,l.jsx)(U.A,{value:e.value,children:e.label},e.value))})}),(0,l.jsx)(L.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsxs)(W.A,{value:ek.some(e=>e.key===em)?em:"all",onChange:e=>ex(e.target.value),"aria-label":"Filter by flow",children:[(0,l.jsx)(U.A,{value:"all",children:"Any flow"}),ek.map(e=>(0,l.jsx)(U.A,{value:e.key,children:e.label},e.key))]})}),(0,l.jsx)(L.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsx)(W.A,{value:ev,onChange:e=>eb(e.target.value),"aria-label":"Filter by date",children:ed.map(e=>(0,l.jsx)(U.A,{value:e.value,children:e.label},e.value))})})]}),(k||eM>0)&&(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",children:[eP," of ",eO]}),(0,l.jsx)(h.A,{size:"small",onClick:()=>{E(""),eg("all"),ex("all"),eb("all")},children:"Clear filters"})]})]}),(0,l.jsx)(P.A,{}),(0,l.jsx)(H.A,{sx:{overflow:"auto",flex:1},children:0===eO?(0,l.jsx)(M.Ay,{children:(0,l.jsx)(O.A,{primary:"No conversations yet",secondary:"Start a new conversation",primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}):0===eP?(0,l.jsx)(M.Ay,{children:(0,l.jsx)(O.A,{primary:"No matching conversations",secondary:"Try a different search or filter",primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}):"chain"===ef?(0,l.jsx)(er,{nodes:eT.roots,childrenByParent:eT.childrenByParent,renderItem:e=>e_(e),expanded:eN,onToggle:eR}):"none"===ef?eC.map(e_):eE.map(e=>{let t=!!ey[e.key],n="wave"===ef?ez.get(e.key):void 0;return(0,l.jsxs)(s.default,{children:[(0,l.jsxs)(_.A,{onClick:()=>(e=>{ew(t=>({...t,[e]:!t[e]}))})(e.key),sx:{py:.5,bgcolor:"action.hover"},children:[t?(0,l.jsx)(K.A,{fontSize:"small"}):(0,l.jsx)(Q.A,{fontSize:"small"}),(0,l.jsx)(f.default,{variant:"overline",sx:{ml:.5,flex:1,lineHeight:1.6},noWrap:!0,children:e.label}),(0,l.jsx)(p.A,{label:e.items.length,size:"small",sx:{height:18,"& .MuiChip-label":{px:.75,fontSize:"0.7rem"}}})]}),(0,l.jsx)(q.A,{in:!t,timeout:"auto",unmountOnExit:!0,children:n?(0,l.jsx)(er,{nodes:n.roots,childrenByParent:n.childrenByParent,renderItem:e=>e_(e),expanded:eN,onToggle:eR}):e.items.map(e_)})]},e.key)})}),(0,l.jsxs)(x.A,{open:T.open,onClose:()=>N(e=>({...e,open:!1})),"aria-labelledby":"bulk-delete-dialog-title",children:[(0,l.jsx)(v.A,{id:"bulk-delete-dialog-title",children:"Confirm deletion"}),(0,l.jsx)(b.A,{children:(0,l.jsxs)(y.A,{children:[T.label," This cannot be undone."]})}),(0,l.jsxs)(w.A,{children:[(0,l.jsx)(h.A,{onClick:()=>N(e=>({...e,open:!1})),children:"Cancel"}),(0,l.jsx)(h.A,{color:"error",onClick:async()=>{N(e=>({...e,open:!1})),await c(T.ids)},autoFocus:!0,children:"Delete"})]})]})]})};var ef=n(70072),ep=n(10915),eh=n(33567),eg=n(66177),em=n(26188),ex=n(77073),ev=n(39486),eb=n(82446),ey=n(37596),ew=n(23731);function ej(e,t){return 1===e.length&&e.every(e=>{var n;let l=null!=(n=t[e])?n:[];return l.includes("pip")&&l.includes("fullscreen")})}let eA=e=>{let{conversationId:t,entries:n,activeKey:r,onSelectTab:a,onCloseTab:c,onAppMessage:u,onUpdateModelContext:p,onRegisterTeardown:h}=e,g=(0,eh.A)(),[m,x]=(0,o.useState)(!1),[v,b]=(0,o.useState)(!1),[y,w]=(0,o.useState)({}),[j,A]=(0,o.useState)([]),S=(0,o.useMemo)(()=>new Set(n.map(e=>e.key)),[n]),I=(0,o.useMemo)(()=>j.filter(e=>S.has(e)),[j,S]),k=(0,o.useMemo)(()=>I.length>0?I:r?[r]:[],[I,r]),C=(0,o.useMemo)(()=>new Set(k),[k]),E=(0,o.useMemo)(()=>ej(k,y),[y,k]),T=Math.max(1,Math.ceil(Math.sqrt(k.length)));return((0,o.useEffect)(()=>{w(e=>{let t=Object.fromEntries(Object.entries(e).filter(e=>{let[t]=e;return S.has(t)}));return Object.keys(t).length===Object.keys(e).length?e:t})},[S]),(0,o.useEffect)(()=>{v&&!E&&b(!1)},[v,E]),0===n.length)?null:(0,l.jsxs)(s.default,{"data-testid":"dev-canvas-dock",sx:{borderTop:1,borderColor:"divider",bgcolor:"background.paper",display:"flex",flexDirection:"column",minHeight:0,...v?{position:"fixed",inset:16,zIndex:1300,borderRadius:1,boxShadow:6,border:1}:{maxHeight:"45vh"}},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5,px:1,py:.5,bgcolor:"action.hover"},children:[(0,l.jsx)(em.A,{fontSize:"small",color:"primary"}),(0,l.jsx)(f.default,{variant:"caption",sx:{fontWeight:600,mr:1},children:"Canvas"}),(0,l.jsx)(s.default,{sx:{display:"flex",gap:.5,overflowX:"auto",flex:1,minWidth:0},children:n.map(e=>{let t=e.key===r,n=I.includes(e.key);return(0,l.jsxs)(s.default,{onClick:()=>(e=>{v&&!ej([e],y)&&b(!1),a(e)})(e.key),sx:{display:"flex",alignItems:"center",gap:.5,px:1,py:.25,borderRadius:1,cursor:"pointer",whiteSpace:"nowrap",border:1,borderColor:t?"primary.main":"divider",bgcolor:t?"action.selected":"transparent"},title:"".concat(e.serverName," — ").concat(e.uri),children:[(0,l.jsx)(eg.A,{color:"primary",variant:"dot",invisible:!e.unread,children:(0,l.jsx)(f.default,{variant:"caption",sx:{fontWeight:t?600:400},children:function(e){return e.replace(/\/+$/,"").split("/").pop()||e}(e.uri)})}),(0,l.jsx)(f.default,{variant:"caption",color:"text.secondary",sx:{fontSize:"0.65rem"},children:e.serverName}),(0,l.jsx)(i.A,{title:n?"Remove from split":"Add to split view",children:(0,l.jsx)(d.A,{size:"small",sx:{p:.25},color:n?"primary":"default",onClick:t=>{t.stopPropagation(),(e=>{v&&b(!1),A(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])})(e.key)},"aria-label":"Toggle split view",children:(0,l.jsx)(ey.A,{sx:{fontSize:14}})})}),(0,l.jsx)(i.A,{title:"Close",children:(0,l.jsx)(d.A,{size:"small",sx:{p:.25},onClick:t=>{t.stopPropagation(),c(e.key)},"aria-label":"Close canvas tab",children:(0,l.jsx)(ex.A,{sx:{fontSize:14}})})})]},e.key)})}),(0,l.jsx)(i.A,{title:v?"Exit fullscreen":E?"Fullscreen":"Every visible app must declare pip and fullscreen support",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",disabled:!v&&!E,onClick:()=>b(e=>!e),"aria-label":"Toggle canvas fullscreen",children:v?(0,l.jsx)(eb.A,{fontSize:"small"}):(0,l.jsx)(ev.A,{fontSize:"small"})})})}),(0,l.jsx)(i.A,{title:m?"Expand canvas":"Collapse canvas",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>{!m&&v&&b(!1),x(e=>!e)},"aria-label":"Toggle canvas collapse",children:m?(0,l.jsx)(Q.A,{fontSize:"small"}):(0,l.jsx)(K.A,{fontSize:"small"})})})]}),(0,l.jsx)(s.default,{sx:{display:m?"none":"grid",position:"relative",gridTemplateColumns:"repeat(".concat(T,", minmax(0, 1fr))"),gap:1,p:1,flex:1,height:v?"auto":320,minHeight:0,overflow:"hidden"},children:n.map(e=>{var n;let o=!m&&C.has(e.key);return(0,l.jsx)(s.default,{sx:{display:"flex",...o?{position:"relative"}:{position:"absolute",inset:0,visibility:"hidden",pointerEvents:"none"},flexDirection:"column",minHeight:0,border:1,borderColor:"divider",borderRadius:1,overflow:"hidden",bgcolor:"dark"===g.palette.mode?"#111":"#fff"},children:(0,l.jsx)(ew.Ay,{docked:!0,visible:o,serverName:e.serverName,uri:e.uri,toolName:e.toolName,toolArgs:e.latestToolArgs,toolResultContent:e.latestResultContent,toolCancelledReason:e.latestToolCancelledReason,toolIsError:e.latestToolIsError,toolUpdateId:null!=(n=e.latestToolUpdateId)?n:e.updatedAt,onAppMessage:u,onUpdateModelContext:p,hostDisplayMode:v&&o?"fullscreen":"pip",onAvailableDisplayModes:t=>{w(n=>{var l;let o=null!=(l=n[e.key])?l:[];return o.length===t.length&&o.every((e,n)=>e===t[n])?n:{...n,[e.key]:t}})},onRequestDisplayMode:(t,n)=>((e,t,n)=>{let l=v&&C.has(e)?"fullscreen":"pip";return t===l?l:"fullscreen"===t&&1===k.length&&k[0]===e&&n.includes("pip")&&n.includes("fullscreen")?(b(!0),"fullscreen"):"pip"===t&&"fullscreen"===l&&n.includes("pip")?(b(!1),"pip"):l})(e.key,t,n),onRequestClose:()=>c(e.key),onRegisterTeardown:(e,n)=>{null==h||h(t,e,n)}})},e.key)})})]})},eS={entries:{},order:[],activeKey:null};function eI(e,t){return"".concat(e,"::").concat(t)}function ek(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16,n=arguments.length>2?arguments[2]:void 0,l=Math.max(1,Math.floor(t));if(e.order.length<=l)return{state:e,evicted:[]};let o={...e.entries},r=[...e.order],a=[];for(;r.length>l;){let e=null,t=1/0;for(let l of r){var s,i;if(l===n)continue;let r=null!=(i=null==(s=o[l])?void 0:s.lastActiveAt)?i:0;r<t&&(t=r,e=l)}if(!e)break;delete o[e],r=r.filter(t=>t!==e),a.push(e)}let d=e.activeKey;return d&&!o[d]&&(d=r.length?r[r.length-1]:null),{state:{entries:o,order:r,activeKey:d},evicted:a}}function eC(e,t){if(!e.entries[t])return e;let n={...e.entries};delete n[t];let l=e.order.filter(e=>e!==t),o=e.activeKey;if(o===t){o=null;let e=-1/0;for(let t of l){var r,a;let l=null!=(a=null==(r=n[t])?void 0:r.lastActiveAt)?a:0;l>=e&&(e=l,o=t)}}return{entries:n,order:l,activeKey:o}}function eE(e,t){var n;return null!=(n=e[t])?n:[]}function eT(e,t){if(!(t in e))return e;let n={...e};return delete n[t],n}function eN(e,t,n){let l=eE(e,t),o=l.filter(e=>e.id!==n);if(o.length===l.length)return e;let r={...e};return o.length>0?r[t]=o:delete r[t],r}var eD=n(4474),eR=n(25731),ez=n(62617),eM=n(12857),e_=n(16186);let eO={byIndex:{}};function eP(e,t,n){for(let l=0;l<t;l++)e[l]||(e[l]={laneIndex:l,laneCount:t,label:"Lane ".concat(l+1,"/").concat(t),status:"pending",lastEventAt:n})}let eF=[""," before breakfast"," under a full moon"," with expert supervision"," somewhere off the map"," according to ancient custom"," while nobody is looking"," for science"," one tiny step at a time"," against all reasonable advice"],eL=["Painting the fence","Watching the 1954 World Cup","Drying behind the ears","Attending the first moon landing","Fighting in the Thirty Years’ War","Discovering fire","Playing with the cats","Cutting down a tree","Plumbing a drain","Eating a sandwich","Committing tax fraud","Awaiting GTA 7","Going on a demonstration","Driving in the left lane","Repairing an old chair","Exploring magnetism","Teaching a goldfish algebra","Alphabetizing the spice rack","Polishing a brass telescope","Folding a fitted sheet","Training for the snail marathon","Counting the rings of Saturn","Sharpening a box of crayons","Negotiating with the squirrels","Rehearsing a dramatic entrance","Mapping an imaginary island","Baking a suspiciously round pie","Tuning a haunted piano","Watering the plastic plants","Untangling holiday lights","Building a pillow fortress","Decoding the grocery list","Interviewing a garden gnome","Organizing the sock drawer","Following a trail of breadcrumbs","Inventing a quieter kazoo","Dusting the dinosaur bones","Launching a paper airplane","Measuring the speed of gossip","Teaching robots to whistle","Calibrating the sundial","Searching for buried treasure","Painting clouds on the ceiling","Refilling the office stapler","Herding digital cats","Consulting the ancient scrolls","Testing the emergency hammock","Translating whale songs","Perfecting the secret handshake","Winding the grandfather clock","Chasing the northern lights","Sailing across a coffee cup","Planting a tiny forest","Borrowing sugar from the neighbors","Learning the penguin shuffle","Auditioning for a silent movie","Restoring a medieval tapestry","Naming every star","Packing for an expedition","Composing an elevator symphony","Inspecting the castle moat","Reading tea leaves","Assembling a model volcano","Studying the migration of sandwiches","Racing a steam locomotive","Picnicking beside a black hole","Practicing wizard etiquette","Delivering mail by pigeon","Searching the library stacks","Brewing a heroic cup of tea","Drawing moustaches on portraits","Balancing the household budget","Learning to speak dolphin","Mending a pirate sail","Surveying the ocean floor","Opening a detective agency","Carving a wooden spoon","Observing the neighborhood dragons","Crossing the Silk Road","Preparing for the robot uprising","Writing a strongly worded postcard","Spinning plates at the circus","Evicting ghosts from the attic","Charting the Bermuda Triangle","Making friends with the ravens","Designing a moon garden","Investigating the cookie jar","Practicing synchronized napping","Mining cheese on the Moon","Repairing the time machine","Conducting the dawn chorus","Waiting for paint to dry","Solving the sphinx’s riddle","Building a better mousetrap","Exploring an underwater city","Sorting the wizard’s mail","Escaping an awkward conversation","Raking leaves in a hurricane","Guarding the last doughnut","Looking busy"].flatMap(e=>eF.map(t=>"".concat(e).concat(t,"…"))),eW=e=>{let{lane:t,onOpenLane:n}=e,o=!!t.laneConversationId&&!!n,r="pending"===t.status;return(0,l.jsxs)(s.default,{onClick:o?()=>n(t.laneConversationId):void 0,sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.25,borderRadius:1,...o&&{cursor:"pointer","&:hover":{bgcolor:"action.hover",textDecoration:"underline"}}},children:["running"===t.status&&(0,l.jsx)(eD.default,{size:14,sx:{flexShrink:0}}),"completed"===t.status&&(0,l.jsx)(I.A,{sx:{fontSize:16,flexShrink:0},color:"success"}),"error"===t.status&&(0,l.jsx)(eM.A,{sx:{fontSize:16,flexShrink:0},color:"error"}),r&&(0,l.jsx)(e_.A,{sx:{fontSize:16,flexShrink:0},color:"disabled"}),(0,l.jsxs)(f.default,{variant:"caption",color:r?"text.disabled":"textSecondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[t.label,r&&" — queued","running"===t.status&&t.activity&&(0,l.jsxs)(f.default,{component:"span",variant:"caption",color:"text.disabled",children:[" \xb7 ",t.activity]})]})]})},eU=e=>{var t;let{liveStats:n,onStop:r,stopDisabled:a,awaitingApproval:i,lanes:d,onOpenLane:c,onAttachDebugger:u}=e,[p,g]=(0,o.useState)(()=>Date.now()),[m,x]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=setInterval(()=>g(Date.now()),1e3);return()=>clearInterval(e)},[]);let v=n?Math.max(0,Math.round((p-n.startedAt)/1e3)):0,b=n?Math.round((p-n.lastEventAt)/1e3):0,y=!i&&!!n&&b>=60,w=n?Math.floor(n.startedAt/1e3)%eL.length:0,j=eL[(w+Math.floor(v/5))%eL.length],A=d?Object.values(d.byIndex).sort((e,t)=>e.laneIndex-t.laneIndex):[],S=A.length>0?(e=>{let t=e.filter(e=>"running"===e.status).length,n=e.filter(e=>"pending"===e.status).length,l=e.filter(e=>"completed"===e.status).length,o=e.filter(e=>"error"===e.status).length;if(0===t&&0===n&&o>0)return{text:"".concat(o,"/").concat(e.length," lanes failed — partial results"),warning:!0};let r=[t>0?"".concat(t," running"):"",n>0?"".concat(n," queued"):"",l>0?"".concat(l," done"):"",o>0?"".concat(o," failed"):""].filter(Boolean);return{text:"".concat(e.length," lanes — ").concat(r.join(", ")),warning:o>0}})(A):null;return(0,l.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",my:2,gap:.5},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:2},children:[i?(0,l.jsx)(eR.A,{fontSize:"small",color:"warning"}):(0,l.jsx)(eD.default,{size:20,color:y?"warning":"primary"}),(0,l.jsx)(f.default,{variant:"body2",color:"textSecondary",children:i?"Waiting for tool approval":(null==n?void 0:n.activeNode)?"Running: ".concat(n.activeNode):"Working…"}),u&&!i&&(0,l.jsx)(h.A,{variant:"outlined",color:"primary",size:"small",startIcon:(0,l.jsx)(ez.A,{fontSize:"small"}),onClick:()=>{x(!0),u()},disabled:m,children:m?"Attaching…":"Attach debugger"}),(0,l.jsx)(h.A,{variant:"outlined",color:"secondary",size:"small",onClick:r,disabled:a,children:"Stop"})]}),!i&&(0,l.jsx)(f.default,{variant:"caption",color:"text.disabled",sx:{fontStyle:"italic"},"aria-live":"polite",children:j}),S&&(0,l.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",alignItems:"stretch",minWidth:280,maxWidth:520},children:[(0,l.jsx)(f.default,{variant:"caption",color:S.warning?"warning.main":"textSecondary",sx:{px:1,fontWeight:500},children:S.text}),A.map(e=>(0,l.jsx)(eW,{lane:e,onOpenLane:c},e.laneIndex))]}),!i&&(0,l.jsxs)(f.default,{variant:"caption",color:y?"warning.main":"textSecondary",children:[(null!=(t=null==n?void 0:n.totalTokens)?t:0).toLocaleString()," tokens \xb7 ",v,"s elapsed",y?" \xb7 no activity for ".concat(b,"s — may be stuck"):""]})]})};var eH=n(2300),eq=n(52005),eB=n(54121);let eG=e=>{let{todos:t}=e;if(!t||0===t.length)return null;let n=t.filter(e=>"done"===e.status).length,o=t.length>0?Math.round(n/t.length*100):0;return(0,l.jsxs)(eH.A,{variant:"outlined",sx:{mt:2,p:1.5,borderRadius:2},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:1},children:[(0,l.jsx)(f.default,{variant:"subtitle2",sx:{fontWeight:600},children:"Tasks"}),(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",children:[n," of ",t.length," done"]})]}),(0,l.jsx)(eq.A,{variant:"determinate",value:o,sx:{mb:1,borderRadius:1}}),(0,l.jsx)(s.default,{component:"ul",sx:{listStyle:"none",m:0,p:0},children:t.map(e=>(0,l.jsxs)(s.default,{component:"li",sx:{display:"flex",alignItems:"center",gap:1,py:.25},children:[function(e){switch(e){case"done":return(0,l.jsx)(I.A,{fontSize:"small",color:"success"});case"in_progress":return(0,l.jsx)(eB.A,{fontSize:"small",color:"info"});case"cancelled":return(0,l.jsx)(eM.A,{fontSize:"small",color:"disabled"});default:return(0,l.jsx)(e_.A,{fontSize:"small",color:"disabled"})}}(e.status),(0,l.jsx)(f.default,{variant:"body2",sx:{textDecoration:"done"===e.status||"cancelled"===e.status?"line-through":"none",color:"done"===e.status||"cancelled"===e.status?"text.secondary":"text.primary"},children:e.content})]},e.id))})]})};var eJ=n(88538),eV=n(16963),eY=n(2456),eK=n(64792),eQ=n(71356),eX=n(45202),eZ=n(77998);let e$=e=>e>=1e3?"".concat((e/1e3).toFixed(e>=1e5?0:1),"k"):"".concat(e),e0=e=>{var t;let{usage:n,contextInfo:r,availableNodes:a}=e,[d,c]=(0,o.useState)(null);if(!n&&!r)return null;let u=(null==n?void 0:n.byNode)?Object.entries(n.byNode):[],h=null!=(t=null==n?void 0:n.cacheReadTokens)?t:0,g=n?Math.max(0,n.promptTokens-h):0,m=n?Math.max(0,n.totalTokens-h):0,x=(null==r?void 0:r.contextWindow)&&r.contextWindow>0?Math.min(100,Math.round(r.promptTokens/r.contextWindow*100)):void 0;return(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1.5,flexShrink:0},children:[n&&m>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.A,{title:"Tokens this conversation — ".concat(g.toLocaleString()," prompt / ").concat(n.completionTokens.toLocaleString()," completion").concat(h>0?" (+".concat(h.toLocaleString()," cached reads, not counted)"):"",". Click for the per-node breakdown."),children:(0,l.jsx)(p.A,{icon:(0,l.jsx)(eZ.A,{}),label:"".concat(e$(m)," tokens"),size:"small",variant:"outlined",onClick:e=>c(e.currentTarget),sx:{cursor:"pointer"}})}),(0,l.jsx)(eJ.Ay,{open:!!d,anchorEl:d,onClose:()=>c(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:(0,l.jsxs)(s.default,{sx:{p:2,maxWidth:420},children:[(0,l.jsx)(f.default,{variant:"subtitle2",sx:{mb:1},children:"Token usage by node"}),(0,l.jsxs)(eV.A,{size:"small",children:[(0,l.jsx)(eY.A,{children:(0,l.jsxs)(eK.A,{children:[(0,l.jsx)(eQ.A,{children:"Node"}),(0,l.jsx)(eQ.A,{align:"right",children:"Prompt"}),(0,l.jsx)(eQ.A,{align:"right",children:"Completion"}),(0,l.jsx)(eQ.A,{align:"right",children:"Total"})]})}),(0,l.jsxs)(eX.A,{children:[u.map(e=>{let[t,n]=e;return(0,l.jsxs)(eK.A,{children:[(0,l.jsx)(eQ.A,{children:(0,l.jsx)(i.A,{title:t,children:(0,l.jsx)("span",{children:(e=>{var t;return(null==(t=a.find(t=>t.id===e))?void 0:t.label)||"".concat(e.substring(0,8),"…")})(t)})})}),(0,l.jsx)(eQ.A,{align:"right",children:n.promptTokens.toLocaleString()}),(0,l.jsx)(eQ.A,{align:"right",children:n.completionTokens.toLocaleString()}),(0,l.jsx)(eQ.A,{align:"right",children:n.totalTokens.toLocaleString()})]},t)}),(0,l.jsxs)(eK.A,{children:[(0,l.jsx)(eQ.A,{sx:{fontWeight:"bold"},children:"Total"}),(0,l.jsx)(eQ.A,{align:"right",sx:{fontWeight:"bold"},children:n.promptTokens.toLocaleString()}),(0,l.jsx)(eQ.A,{align:"right",sx:{fontWeight:"bold"},children:n.completionTokens.toLocaleString()}),(0,l.jsx)(eQ.A,{align:"right",sx:{fontWeight:"bold"},children:n.totalTokens.toLocaleString()})]})]})]}),h>0&&(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1},children:["Prompt totals include ",h.toLocaleString()," tokens re-read from the prompt cache. The header chip shows the fresh figure (",m.toLocaleString(),") with those cached reads excluded."]})]})})]}),r&&void 0!==x&&(0,l.jsx)(i.A,{title:"Context of the latest call".concat(r.modelDisplayName?" (".concat(r.modelDisplayName,")"):"",": ").concat(r.promptTokens.toLocaleString()," of ").concat(r.contextWindow.toLocaleString()," tokens"),children:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1,minWidth:140},children:[(0,l.jsx)(eq.A,{variant:"determinate",value:x,color:x>=90?"error":x>=70?"warning":"primary",sx:{flex:1,height:6,borderRadius:3}}),(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:[e$(r.promptTokens),"/",e$(r.contextWindow)," (",x,"%)"]})]})}),r&&void 0===x&&(0,l.jsx)(i.A,{title:"Prompt size of the latest call".concat(r.modelDisplayName?" (".concat(r.modelDisplayName,")"):"",". Set the model's Context Window in its settings to see a usage meter."),children:(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:["ctx ",e$(r.promptTokens)]})})]})};var e1=n(75870),e2=n(95436),e5=n(99944),e6=n(22822),e3=n(43076),e4=n(17897),e8=n(87021);let e7=(0,e8.h)("frontend/components/Chat/QuickChatDialog"),e9=e=>{let{open:t,onClose:n,onStart:r}=e,[a,i]=(0,o.useState)([]),[g,m]=(0,o.useState)([]),[y,j]=(0,o.useState)(!1),[A,S]=(0,o.useState)(null),[I,k]=(0,o.useState)(""),[C,E]=(0,o.useState)(""),[T,N]=(0,o.useState)({}),[D,R]=(0,o.useState)(!1),[z,M]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!t)return;let e=!1;return j(!0),S(null),(async()=>{try{let[t,n]=await Promise.all([e3.N.loadModels(),e4.S.loadServerConfigs()]);if(e)return;i(t);let l=Array.isArray(n)?n.filter(e=>!e.disabled).map(e=>e.name):[];m(l),k(e=>{var n;return e||(null==(n=t[0])?void 0:n.id)||""})}catch(t){e||(e7.warn("Failed to load models/servers for quick chat",t),S("Could not load models or servers."))}finally{e||j(!1)}})(),()=>{e=!0}},[t]),(0,o.useEffect)(()=>{t||(E(""),N({}),M(null),R(!1))},[t]);let _=(0,o.useCallback)(e=>{N(t=>{let n=t[e];return(null==n?void 0:n.selected)?{...t,[e]:{...n,selected:!1}}:{...t,[e]:{...null!=n?n:{tools:null,expanded:!1},selected:!0}}})},[]),O=(0,o.useCallback)(async e=>{N(t=>{var n;let l=null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!1};return{...t,[e]:{...l,expanded:!l.expanded}}});let t=T[e];if(!(null==t?void 0:t.available)&&!(null==t?void 0:t.loading)){N(t=>{var n;return{...t,[e]:{...null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!0},loading:!0}}});try{let{tools:t}=await e4.S.listServerTools(e),n=Array.isArray(t)?t.map(e=>e.name).filter(Boolean):[];N(t=>{var l;return{...t,[e]:{...null!=(l=t[e])?l:{selected:!1,tools:null,expanded:!0},available:n,loading:!1}}})}catch(t){e7.warn("Failed to load tools for ".concat(e),t),N(t=>{var n;return{...t,[e]:{...null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!0},available:[],loading:!1}}})}}},[T]),F=(0,o.useCallback)((e,t,n)=>{N(l=>{var o,r;let a=null!=(o=l[e])?o:{selected:!0,tools:null,expanded:!0},s=new Set(null!=(r=a.tools)?r:new Set(n));return s.has(t)?s.delete(t):s.add(t),{...l,[e]:{...a,selected:!0,tools:s}}})},[]),H=!!I&&!D&&!y,B=async()=>{if(!I)return void M("Pick a model to chat with.");R(!0),M(null);let e=g.filter(e=>{var t;return null==(t=T[e])?void 0:t.selected}).map(e=>{let t=T[e];return!t.tools||t.available&&t.tools.size===t.available.length?{name:e}:{name:e,enabledTools:[...t.tools]}});try{await r({modelId:I,servers:e,systemPrompt:C.trim()||void 0})}catch(e){e7.warn("Quick chat failed to start",e),M(e instanceof Error?e.message:"Could not start the quick chat."),R(!1)}};return(0,l.jsxs)(x.A,{open:t,onClose:D?void 0:n,maxWidth:"sm",fullWidth:!0,children:[(0,l.jsx)(v.A,{children:"Quick Chat"}),(0,l.jsxs)(b.A,{children:[(0,l.jsx)(f.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Chat with a model and, optionally, some MCP servers — no need to build and save a flow."}),A&&(0,l.jsx)(c.A,{severity:"error",sx:{mb:2},children:A}),(0,l.jsxs)(L.A,{fullWidth:!0,size:"small",sx:{mb:2},disabled:y,children:[(0,l.jsx)(e2.A,{id:"quick-chat-model-label",children:"Model"}),(0,l.jsxs)(W.A,{labelId:"quick-chat-model-label",label:"Model",value:I,onChange:e=>k(e.target.value),children:[0===a.length&&(0,l.jsx)(U.A,{value:"",disabled:!0,children:y?"Loading…":"No models configured"}),a.map(e=>(0,l.jsx)(U.A,{value:e.id,children:e.displayName||e.name},e.id))]})]}),(0,l.jsx)(u.A,{fullWidth:!0,size:"small",multiline:!0,minRows:2,maxRows:6,label:"System prompt (optional)",placeholder:"e.g. You are a concise coding assistant.",value:C,onChange:e=>E(e.target.value),sx:{mb:2}}),(0,l.jsx)(P.A,{sx:{mb:1}}),(0,l.jsx)(f.default,{variant:"subtitle2",gutterBottom:!0,children:"MCP servers (optional)"}),y?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(eD.default,{size:22})}):0===g.length?(0,l.jsx)(f.default,{variant:"body2",color:"text.secondary",children:"No connected MCP servers. You can still chat with the model alone."}):g.map(e=>{let t=T[e],n=!!(null==t?void 0:t.selected),o=null==t?void 0:t.available,r=null==t?void 0:t.tools;return(0,l.jsxs)(s.default,{sx:{mb:.5},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center"},children:[(0,l.jsx)(e5.A,{sx:{flexGrow:1,mr:0},control:(0,l.jsx)(e6.A,{size:"small",checked:n,onChange:()=>_(e)}),label:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(f.default,{variant:"body2",children:e}),n&&(0,l.jsx)(p.A,{size:"small",variant:"outlined",label:r?"".concat(r.size," tool").concat(1===r.size?"":"s"):"all tools"})]})}),(0,l.jsx)(d.A,{size:"small",onClick:()=>O(e),"aria-label":"customize ".concat(e," tools"),children:(null==t?void 0:t.expanded)?(0,l.jsx)(Q.A,{fontSize:"small"}):(0,l.jsx)(K.A,{fontSize:"small"})})]}),(0,l.jsx)(q.A,{in:!!(null==t?void 0:t.expanded),unmountOnExit:!0,children:(0,l.jsx)(s.default,{sx:{pl:4,pb:1},children:(null==t?void 0:t.loading)?(0,l.jsx)(eD.default,{size:16}):o&&o.length>0?o.map(t=>{let n=!r||r.has(t);return(0,l.jsx)(e5.A,{sx:{display:"flex"},control:(0,l.jsx)(e6.A,{size:"small",checked:n,onChange:()=>F(e,t,o)}),label:(0,l.jsx)(f.default,{variant:"caption",children:t})},t)}):(0,l.jsx)(f.default,{variant:"caption",color:"text.secondary",children:o?"No tools reported (server may be offline).":""})})})]},e)}),z&&(0,l.jsx)(c.A,{severity:"error",sx:{mt:2},children:z})]}),(0,l.jsxs)(w.A,{children:[(0,l.jsx)(h.A,{onClick:n,disabled:D,children:"Cancel"}),(0,l.jsx)(h.A,{variant:"contained",onClick:B,disabled:!H,startIcon:D?(0,l.jsx)(eD.default,{size:16,color:"inherit"}):void 0,children:D?"Starting…":"Start chat"})]})]})};var te=n(98267),tt=n(20537),tn=n(37960),tl=n(49692),to=n(54178),tr=n(11305),ta=n(48116),ts=n(22539),ti=n(90057),td=n(33420),tc=n(53911);let tu={byNode:{},byResource:{},byResourceName:{},resourceVersion:0};function tf(e,t){return"".concat(e," ").concat(t)}var tp=n(49501),th=n(59323),tg=n(72308),tm=n(6422),tx=n(48363);let tv=(0,e8.h)("frontend/components/Chat/RunResourcesPanel"),tb=e=>{let{conversationId:t,refreshToken:n}=e,[r,a]=(0,o.useState)(null),[i,d]=(0,o.useState)(null);return((0,o.useEffect)(()=>{if(!t)return;let e=!1;return fetch("/v1/chat/conversations/".concat(encodeURIComponent(t),"/resources")).then(async e=>{if(!e.ok)throw Error("HTTP ".concat(e.status));return e.json()}).then(t=>{e||(a(Array.isArray(t.resources)?t.resources:[]),d(null))}).catch(t=>{e||(tv.warn("Failed to load run resources",t),d(t instanceof Error?t.message:String(t)))}),()=>{e=!0}},[t,n]),i)?(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",children:["Run data unavailable (",i,")"]}):null===r?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",p:1},children:(0,l.jsx)(eD.default,{size:16})}):0===r.length?(0,l.jsx)(f.default,{variant:"caption",color:"text.secondary",children:"No data artifacts captured in this run yet."}):(0,l.jsx)(H.A,{dense:!0,disablePadding:!0,children:[...r].sort((e,t)=>t.createdAt-e.createdAt).map(e=>{var t;return(0,l.jsxs)(M.Ay,{disableGutters:!0,sx:{alignItems:"flex-start"},children:[(0,l.jsx)(tp.A,{sx:{minWidth:30,mt:.5},children:function(e){switch(e){case"image":return(0,l.jsx)(tg.A,{fontSize:"small",sx:{color:"#009688"}});case"audio":return(0,l.jsx)(tm.A,{fontSize:"small",sx:{color:"#009688"}});case"link":return(0,l.jsx)(tx.A,{fontSize:"small",sx:{color:"#009688"}});default:return(0,l.jsx)(th.A,{fontSize:"small",sx:{color:"#009688"}})}}(e.kind)}),(0,l.jsx)(O.A,{primary:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap"},children:[(0,l.jsx)(f.default,{variant:"body2",sx:{fontWeight:500},children:null!=(t=e.name)?t:"".concat(e.kind,"-").concat(e.id.slice(0,8))}),e.mimeType&&(0,l.jsx)(p.A,{label:e.mimeType,size:"small",variant:"outlined",sx:{height:18,fontSize:"0.65rem"}}),(0,l.jsx)(f.default,{variant:"caption",color:"text.secondary",children:function(e){return e<1024?"".concat(e," B"):e<1048576?"".concat(Math.round(e/1024)," KB"):"".concat((e/1048576).toFixed(1)," MB")}(e.size)})]}),secondary:(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",component:"span",sx:{wordBreak:"break-all"},children:["by ",function(e){var t,n,l,o,r,a,s;let i=e.producedBy;switch(i.source){case"tool-result":return"tool ".concat(null!=(t=i.server)?t:"?","/").concat(null!=(n=i.toolName)?n:"?");case"tool-args":return"tool args ".concat(null!=(l=i.server)?l:"?","/").concat(null!=(o=i.toolName)?o:"?");case"capture":return"step ".concat(null!=(a=null!=(r=i.nodeName)?r:i.nodeId)?a:"?");case"mcp-link":return"link from ".concat(null!=(s=i.server)?s:"?");default:return"run"}}(e),e.readBy.length>0?" \xb7 read ".concat(e.readBy.length,"\xd7"):""," \xb7 ",e.uri]})})]},e.id)})})};var ty=n(14913),tw=n(57883);let tj={system:{label:"system",color:"secondary"},sent:{label:"sent",color:"success"},folded:{label:"folded",color:"warning"},"scoped-out":{label:"scoped out",color:"info"},"handoff-stripped":{label:"handoff plumbing",color:"default"}},tA={whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem",fontFamily:"inherit"},tS=e=>{let{role:t,content:n,toolCallNames:o,status:r,faded:a}=e;return(0,l.jsxs)(eH.A,{variant:"outlined",sx:{p:1,mb:.75,opacity:a?.55:1,borderStyle:a?"dashed":"solid"},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5,mb:.5,flexWrap:"wrap"},children:[(0,l.jsx)(p.A,{size:"small",label:t,color:function(e){switch(e){case"system":return"secondary";case"user":return"primary";case"assistant":return"success";case"tool":return"info";default:return"default"}}(t),variant:"outlined"}),o&&o.length>0&&(0,l.jsx)(p.A,{size:"small",variant:"outlined",label:"\uD83D\uDD27 ".concat(o.join(", ")),sx:{maxWidth:"100%"}}),r&&"sent"!==r&&"system"!==r&&(0,l.jsx)(p.A,{size:"small",color:tj[r].color,label:tj[r].label})]}),n.trim().length>0?(0,l.jsx)("pre",{style:tA,children:n}):(0,l.jsx)(f.default,{variant:"caption",color:"textSecondary",children:"(no text content)"})]})},tI=e=>{let{provenance:t}=e;return(0,l.jsxs)(s.default,{children:[(0,l.jsx)(f.default,{variant:"caption",color:"textSecondary",sx:{display:"block",mb:.5},children:"Full threaded history — greyed rows are not sent to the model."}),t.map((e,t)=>{var n,o;return(0,l.jsx)(tS,{role:e.role,content:null!=(n=e.preview)?n:"",toolCallNames:e.toolCallNames,status:e.status,faded:"sent"!==e.status&&"system"!==e.status},null!=(o=e.id)?o:"hist-".concat(t))}),t.some(e=>"sent"!==e.status&&"system"!==e.status)&&(0,l.jsx)(f.default,{variant:"caption",color:"textSecondary",sx:{display:"block",mt:1},children:"Hover a badge label to understand why a message is not on the wire: folded (outputMode), scoped out (inputMode), or handoff plumbing (tool-call strip)."})]})},tk=()=>{},tC=e=>{let{modelInput:t,conversationId:n}=e,[r,a]=(0,o.useState)("wire"),{systemMessage:i,wireMessages:d,provenance:c,counts:u,inputMode:h}=t,g=(0,o.useMemo)(()=>(d||[]).filter(e=>"system"!==e.role),[d]);return(0,l.jsxs)(s.default,{sx:{height:"100%",display:"flex",flexDirection:"column",p:1},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap",mb:1},children:[(0,l.jsx)(f.default,{variant:"caption",color:"textSecondary",children:function(e){return"".concat(e.threaded," in history → ").concat(e.sent," sent")+(e.folded?" \xb7 ".concat(e.folded," folded"):"")+(e.scopedOut?" \xb7 ".concat(e.scopedOut," scoped out"):"")+(e.handoffStripped?" \xb7 ".concat(e.handoffStripped," handoff-stripped"):"")}(u)}),h&&"full-history"!==h&&(0,l.jsx)(p.A,{size:"small",variant:"outlined",label:"inputMode: ".concat(h)})]}),(0,l.jsxs)(te.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(tt.A,{expandIcon:(0,l.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(f.default,{variant:"caption",children:(0,l.jsx)("b",{children:"System message"})})}),(0,l.jsx)(tn.A,{sx:{p:0},children:i&&i.content.trim().length>0?(0,l.jsx)(eH.A,{variant:"outlined",sx:{p:1,maxHeight:220,overflowY:"auto"},children:(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem",fontFamily:"inherit"},children:i.content})}):(0,l.jsx)(f.default,{variant:"caption",color:"textSecondary",children:"(no system message)"})})]}),(0,l.jsxs)(ty.A,{size:"small",exclusive:!0,value:r,onChange:(e,t)=>{t&&a(t)},sx:{my:1},children:[(0,l.jsx)(tw.A,{value:"wire",children:"What the model sees"}),(0,l.jsx)(tw.A,{value:"annotated",children:"Full history (annotated)"})]}),(0,l.jsx)(s.default,{sx:{flexGrow:1,overflowY:"auto",minHeight:0},children:"wire"===r?0===g.length?(0,l.jsx)(f.default,{variant:"body2",color:"textSecondary",sx:{p:1},children:"No conversation messages — the model sees only the system message."}):(0,l.jsx)(ef.A,{messages:g,conversationId:n?"debug-".concat(n):void 0,onToggleDisabled:tk,onSplitConversation:tk}):(0,l.jsx)(tI,{provenance:c})})]})},tE=(0,e8.h)("frontend/components/Chat/DebuggerCanvas"),tT={start:td.vm,process:td.Uw,finish:td.IK,mcp:td.v2,subflow:td.lA,resource:td.z9},tN={custom:tc.jY,mcpEdge:tc.oY,resourceEdge:tc.sZ},tD=["conversation","tracker","detail"],tR={conversation:"Conversation",tracker:"Execution Tracker",detail:"Detail"},tz="flujo-debugger-section-order",tM="flujo-debugger-section-visible",t_="flujo-debugger-conv-width",tO="flujo-debugger-detail-width";function tP(e,t){let n=Number(window.localStorage.getItem(e));return Number.isFinite(n)&&n>=240?n:t}let tF=(0,ta.Ay)(eH.A)(e=>{let{theme:t}=e;return{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden",padding:t.spacing(1)}}),tL=(0,ta.Ay)(s.default)(e=>{let{theme:t}=e;return{padding:t.spacing(1,2),borderBottom:"1px solid ".concat(t.palette.divider)}}),tW=(0,ta.Ay)(s.default)({flexGrow:1,display:"flex",overflow:"hidden",minHeight:0}),tU=(0,ta.Ay)(s.default)(e=>{let{theme:t}=e;return{width:"200px",flexShrink:0,borderRight:"1px solid ".concat(t.palette.divider),overflowY:"auto",padding:t.spacing(1)}}),tH=(0,ta.Ay)(s.default)({flexGrow:1,position:"relative",height:"100%"}),tq=(0,ta.Ay)(s.default)(e=>{let{theme:t}=e;return{padding:t.spacing(1,2),borderTop:"1px solid ".concat(t.palette.divider),display:"flex",gap:t.spacing(1),justifyContent:"center"}}),tB=(0,ta.Ay)(s.default)(e=>{let{theme:t}=e;return{width:"6px",flexShrink:0,cursor:"col-resize",backgroundColor:t.palette.divider,transition:"background-color 120ms",touchAction:"none","&:hover":{backgroundColor:t.palette.primary.main}}}),tG=e=>{var t,n,r,a;let{debugState:u,conversationId:p,onStep:g,onStepOver:m,onContinue:x,onCancel:v,isLoading:b,breakpoints:y,onToggleBreakpoint:w,onClose:j,isExpanded:A,onToggleExpand:S,liveActivity:I}=e,k=(0,eh.A)(),[C,E]=(0,o.useState)(u.executionTrace&&u.executionTrace.length>0?u.executionTrace.length-1:-1),[T,N]=(0,o.useState)(()=>(function(){try{let e=JSON.parse(window.localStorage.getItem(tz)||"null");if(Array.isArray(e)){let t=e.filter(e=>tD.includes(e)),n=tD.filter(e=>!t.includes(e));if(t.length+n.length===tD.length)return[...t,...n]}}catch(e){}return[...tD]})()),[R,z]=(0,o.useState)(()=>(function(){let e={conversation:!0,tracker:!0,detail:!0};try{let t=JSON.parse(window.localStorage.getItem(tM)||"null");if(t&&"object"==typeof t)for(let n of tD)"boolean"==typeof t[n]&&(e[n]=t[n])}catch(e){}return e})()),[P,F]=(0,o.useState)(()=>tP(t_,480)),[L,W]=(0,o.useState)(()=>tP(tO,320)),[U,q]=(0,o.useState)(null),[B,G]=(0,o.useState)(!0),[V,Y]=(0,o.useState)(null),[Q,X,Z]=(0,ts.ck)([]),[$,ee,et]=(0,ts.fM)([]);(0,o.useEffect)(()=>{window.localStorage.setItem(tz,JSON.stringify(T))},[T]),(0,o.useEffect)(()=>{window.localStorage.setItem(tM,JSON.stringify(R))},[R]),(0,o.useEffect)(()=>{window.localStorage.setItem(t_,String(Math.round(P)))},[P]),(0,o.useEffect)(()=>{window.localStorage.setItem(tO,String(Math.round(L)))},[L]),(0,o.useEffect)(()=>{var e;let t=(null==(e=u.executionTrace)?void 0:e.length)||0;t>0?(E(e=>Math.min(e,t-1)),C<t-1&&E(t-1)):E(-1)},[u.executionTrace]),(0,o.useEffect)(()=>{(async()=>{if(!u.flowId){Y("Flow ID is missing in debug state."),G(!1);return}G(!0),Y(null);try{tE.debug("Loading flow definition for ID: ".concat(u.flowId));let e=await ti.g.getFlow(u.flowId);if(!e)throw Error("Flow with ID ".concat(u.flowId," not found."));q(e),tE.info("Flow definition loaded: ".concat(e.name))}catch(e){tE.error("Error loading flow definition:",e),Y(e instanceof Error?e.message:"Failed to load flow definition."),q(null)}finally{G(!1)}})()},[u.flowId]),(0,o.useEffect)(()=>{if(U){tE.debug("Setting nodes and edges from flow definition");let e=U.nodes.map(e=>({...e,draggable:!1,selectable:!1,connectable:!1})),t=U.edges.map(e=>({...e,selectable:!1}));X(e),ee(t)}},[U,X,ee]);let en=(0,o.useCallback)(()=>{if(tE.debug("Previous button clicked. Current index: ".concat(C)),C>0){let e=C-1;tE.debug("Setting current step index to: ".concat(e)),E(e)}else tE.debug("Already at the first step, cannot go previous.")},[C]),el=(0,o.useCallback)(()=>{var e;if(tE.debug("Next button clicked. Current index: ".concat(C,", Trace length: ").concat(null==(e=u.executionTrace)?void 0:e.length)),u.executionTrace&&C<u.executionTrace.length-1){let e=C+1;tE.debug("Navigating to next trace step: ".concat(e)),E(e)}else tE.info("At end of trace, triggering API call for next step."),g()},[C,u.executionTrace,g]),eo=(0,o.useMemo)(()=>{if(u.executionTrace&&C>=0&&C<u.executionTrace.length)return u.executionTrace[C]},[u.executionTrace,C]),er=(0,o.useMemo)(()=>(null==eo?void 0:eo.modelInputs)&&eo.modelInputs.length>0?eo.modelInputs:(null==eo?void 0:eo.modelInput)?[eo.modelInput]:void 0,[eo]),[ea,es]=(0,o.useState)(0);(0,o.useEffect)(()=>{es(0)},[C]);let ei=er?Math.min(ea,er.length-1):0,ed=null==er?void 0:er[ei],[ec,eu]=(0,o.useState)(()=>Date.now());(0,o.useEffect)(()=>{if(!I)return;let e=()=>{let e=Date.now();return[...Object.values(I.byNode),...Object.values(I.byResource),...Object.values(I.byResourceName)].some(t=>e-t.ts<4e3)};if(!e())return;let t=setInterval(()=>{eu(Date.now()),e()||clearInterval(t)},350);return()=>clearInterval(t)},[I]);let ef=(0,o.useCallback)(e=>{var t,n;if(!I)return null;let l=I.byNode[e.id];if(l&&ec-l.ts<4e3)return l;let o=e.data;if((null!=(t=null==o?void 0:o.type)?t:e.type)!=="resource")return null;let r=null!=(n=null==o?void 0:o.properties)?n:{},a="run"===r.scope?"string"==typeof r.runName?I.byResourceName[r.runName]:void 0:"string"==typeof r.boundServer&&"string"==typeof r.uri?I.byResource[tf(r.boundServer,r.uri)]:void 0;return a&&ec-a.ts<4e3?{kind:"read"===a.kind?"resource-read":"resource-write",ts:a.ts}:null},[I,ec]),ep=(0,o.useMemo)(()=>{let e=null==eo?void 0:eo.nodeId;return Q.map(t=>{var n;let l=t.id===e,o=null==y?void 0:y.includes(t.id),r=l?null:ef(t),a=r?Math.max(.25,1-(ec-r.ts)/4e3):0,s=(null==r?void 0:r.kind)==="active"?k.palette.primary.main:"#009688";return{...t,style:{...t.style,border:l?"2px solid ".concat(k.palette.warning.main):r?"2px solid ".concat(s):o?"2px dashed ".concat(k.palette.error.main):null==(n=t.style)?void 0:n.border,boxShadow:l?"0 0 10px ".concat(k.palette.warning.light):r?"0 0 ".concat("resource-write"===r.kind?14:10,"px ").concat(s).concat(Math.round(255*a).toString(16).padStart(2,"0")):void 0}}})},[Q,eo,y,k,ef,ec]),eg=(0,o.useMemo)(()=>T.filter(e=>R[e]),[T,R]),em=(0,o.useCallback)(e=>{z(t=>({...t,[e]:!t[e]}))},[]),ey=(0,o.useCallback)((e,t)=>{N(n=>{let l=n.indexOf(e),o=l+t;if(l<0||o<0||o>=n.length)return n;let r=[...n];return[r[l],r[o]]=[r[o],r[l]],r})},[]),ew=(0,o.useCallback)((e,t,n)=>{n.preventDefault();let l=n.clientX,o="conversation"===e?P:L,r="conversation"===e?F:W,a=document.body.style.userSelect,s=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let i=e=>{r(Math.min(Math.max(o+t*(e.clientX-l),240),1100))},d=()=>{window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",d),document.body.style.userSelect=a,document.body.style.cursor=s};window.addEventListener("pointermove",i),window.addEventListener("pointerup",d)},[P,L]),ej=(0,l.jsx)(s.default,{sx:{flexGrow:1,overflow:"hidden",minHeight:0,display:"flex",flexDirection:"column"},children:eo?ed&&er?(0,l.jsxs)(s.default,{sx:{flexGrow:1,minHeight:0,display:"flex",flexDirection:"column"},children:[er.length>1&&(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"center",gap:.5,px:1,py:.5,borderBottom:"1px solid ".concat(k.palette.divider)},children:[(0,l.jsx)(i.A,{title:"Previous model call",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>es(e=>Math.max(0,Math.min(e,er.length-1)-1)),disabled:ei<=0,"aria-label":"Previous model call",children:(0,l.jsx)(J.A,{fontSize:"small"})})})}),(0,l.jsxs)(f.default,{variant:"caption",color:"textSecondary",children:["Model call ",ei+1," / ",er.length]}),(0,l.jsx)(i.A,{title:"Next model call",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>es(e=>Math.min(er.length-1,Math.min(e,er.length-1)+1)),disabled:ei>=er.length-1,"aria-label":"Next model call",children:(0,l.jsx)(tl.A,{fontSize:"small"})})})})]}),(0,l.jsx)(s.default,{sx:{flexGrow:1,minHeight:0,overflow:"hidden",display:"flex",flexDirection:"column"},children:(0,l.jsx)(tC,{modelInput:ed,conversationId:p})})]}):(0,l.jsx)(f.default,{variant:"body2",color:"textSecondary",sx:{p:2},children:"No model call for this step."}):(0,l.jsx)(f.default,{variant:"body2",color:"textSecondary",sx:{p:2},children:"Select a step from the execution tracker."})}),eA={conversation:ej,tracker:(0,l.jsxs)(s.default,{sx:{flexGrow:1,display:"flex",overflow:"hidden",minHeight:0},children:[(0,l.jsxs)(tU,{children:[(0,l.jsx)(f.default,{variant:"caption",color:"textSecondary",gutterBottom:!0,sx:{display:"block"},children:"Execution Trace"}),(0,l.jsxs)(H.A,{dense:!0,disablePadding:!0,children:[null==(t=u.executionTrace)?void 0:t.map((e,t)=>(0,l.jsx)(M.Ay,{disablePadding:!0,children:(0,l.jsx)(_.A,{selected:t===C,onClick:()=>(e=>{u.executionTrace&&e>=0&&e<u.executionTrace.length?(tE.debug("Trace step selected: ".concat(e)),E(e)):tE.warn("Invalid step index selected: ".concat(e))})(t),children:(0,l.jsx)(O.A,{primary:"".concat(e.stepIndex,": ").concat(e.nodeName||e.nodeId),secondary:e.nodeType})})},e.stepIndex)),b&&(0,l.jsx)(M.Ay,{children:(0,l.jsx)(eD.default,{size:20,sx:{margin:"auto"}})})]})]}),(0,l.jsx)(tH,{children:B?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,l.jsx)(eD.default,{})}):V?(0,l.jsx)(c.A,{severity:"error",sx:{margin:2},children:V}):(0,l.jsxs)(ts.Ln,{children:[" ",(0,l.jsx)(ts.Gc,{nodes:ep,edges:$,onNodesChange:Z,onEdgesChange:et,nodeTypes:tT,edgeTypes:tN,fitView:!0,attributionPosition:"bottom-right",nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!1,onNodeClick:(e,t)=>{e.preventDefault(),w&&w(t.id)},onEdgeClick:e=>e.preventDefault(),onPaneClick:()=>{},children:" "})]})})]}),detail:(0,l.jsxs)(s.default,{sx:{flexGrow:1,overflowY:"auto",minHeight:0,p:2},children:[eo?(0,l.jsxs)(s.default,{children:[(0,l.jsxs)(f.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Node:"})," ",eo.nodeName," (",eo.nodeId,")"]}),(0,l.jsxs)(f.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Type:"})," ",eo.nodeType]}),(0,l.jsxs)(f.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Timestamp:"})," ",new Date(eo.timestamp).toLocaleString()]}),(0,l.jsxs)(f.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Action Taken:"})," ",eo.actionTaken]}),(0,l.jsxs)(te.A,{sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(tt.A,{expandIcon:(0,l.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(f.default,{variant:"caption",children:"Prep Result"})}),(0,l.jsx)(tn.A,{sx:{p:0},children:(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(eo.prepResultSnapshot,null,2)})})]}),(0,l.jsxs)(te.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(tt.A,{expandIcon:(0,l.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsxs)(f.default,{variant:"caption",color:(null==(n=eo.execResultSnapshot)?void 0:n.success)===!1?"error":"inherit",children:["Exec Result ",(null==(r=eo.execResultSnapshot)?void 0:r.success)===!1?"(Error)":""]})}),(0,l.jsx)(tn.A,{sx:{p:0},children:(null==(a=eo.execResultSnapshot)?void 0:a.success)===!1?(0,l.jsxs)(s.default,{sx:{p:1,background:k.palette.error.light,borderRadius:1},children:[(0,l.jsxs)(f.default,{variant:"body2",color:"error",gutterBottom:!0,children:[(0,l.jsx)("b",{children:"Error:"})," ",eo.execResultSnapshot.error||"Unknown error"]}),eo.execResultSnapshot.errorDetails&&(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"150px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"4px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(eo.execResultSnapshot.errorDetails,null,2)})]}):(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(eo.execResultSnapshot,null,2)})})]}),(0,l.jsxs)(te.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(tt.A,{expandIcon:(0,l.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(f.default,{variant:"caption",children:"State Before"})}),(0,l.jsx)(tn.A,{sx:{p:0},children:(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(eo.stateBefore,null,2)})})]}),(0,l.jsxs)(te.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(tt.A,{expandIcon:(0,l.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(f.default,{variant:"caption",children:"State After"})}),(0,l.jsx)(tn.A,{sx:{p:0},children:(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(eo.stateAfter,null,2)})})]})]}):(0,l.jsx)(f.default,{variant:"body2",color:"textSecondary",children:"Select a step from the execution tracker."}),(0,l.jsxs)(te.A,{defaultExpanded:!0,sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(tt.A,{expandIcon:(0,l.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(f.default,{variant:"caption",children:"Run Data"})}),(0,l.jsx)(tn.A,{sx:{p:0},children:(0,l.jsx)(tb,{conversationId:p,refreshToken:null==I?void 0:I.resourceVersion})})]})]})};return(0,l.jsxs)(tF,{elevation:2,children:[(0,l.jsxs)(tL,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-between"},children:[(0,l.jsxs)(s.default,{children:[(0,l.jsx)(f.default,{variant:"h6",children:"Flow Debugger"}),(0,l.jsxs)(f.default,{variant:"caption",color:"textSecondary",display:"block",children:["Click a node to toggle a breakpoint",y&&y.length>0?" \xb7 ".concat(y.length," active"):""]})]}),(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,l.jsx)(i.A,{title:R.conversation?"Hide Conversation":"Show Conversation",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>em("conversation"),color:R.conversation?"primary":"default","aria-label":R.conversation?"Hide Conversation":"Show Conversation",children:(0,l.jsx)(to.A,{fontSize:"small"})})}),(0,l.jsx)(i.A,{title:R.tracker?"Hide Execution Tracker":"Show Execution Tracker",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>em("tracker"),color:R.tracker?"primary":"default","aria-label":R.tracker?"Hide Execution Tracker":"Show Execution Tracker",children:(0,l.jsx)(D.A,{fontSize:"small"})})}),(0,l.jsx)(i.A,{title:R.detail?"Hide Detail":"Show Detail",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>em("detail"),color:R.detail?"primary":"default","aria-label":R.detail?"Hide Detail":"Show Detail",children:(0,l.jsx)(tr.A,{fontSize:"small"})})}),S&&(0,l.jsx)(i.A,{title:A?"Exit full screen":"Expand to full screen",children:(0,l.jsx)(d.A,{size:"small",onClick:S,"aria-label":A?"Exit full screen":"Expand to full screen",children:A?(0,l.jsx)(eb.A,{fontSize:"small"}):(0,l.jsx)(ev.A,{fontSize:"small"})})}),j&&(0,l.jsx)(i.A,{title:"Close debugger",children:(0,l.jsx)(d.A,{size:"small",onClick:j,"aria-label":"Close debugger",children:(0,l.jsx)(ex.A,{fontSize:"small"})})})]})]}),(0,l.jsx)(tW,{children:0===eg.length?(0,l.jsx)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",p:3},children:(0,l.jsx)(f.default,{variant:"body2",color:"textSecondary",children:"All sections are hidden — use the toolbar toggles above to show a section."})}):eg.map((e,t)=>(0,l.jsxs)(o.Fragment,{children:[(e=>{let t="tracker"!==e,n="conversation"===e?P:"detail"===e?L:void 0;return(0,l.jsxs)(s.default,{sx:{...t?{width:n,flexShrink:0}:{flexGrow:1,minWidth:300},display:"flex",flexDirection:"column",overflow:"hidden",minHeight:0},children:[(e=>{let t=eg.indexOf(e);return(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",px:1,py:.5,borderBottom:"1px solid ".concat(k.palette.divider)},children:[(0,l.jsx)(f.default,{variant:"subtitle2",noWrap:!0,children:tR[e]}),(0,l.jsxs)(s.default,{sx:{display:"flex"},children:[(0,l.jsx)(i.A,{title:"Move left",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>ey(e,-1),disabled:t<=0,"aria-label":"Move ".concat(tR[e]," left"),children:(0,l.jsx)(J.A,{fontSize:"small"})})})}),(0,l.jsx)(i.A,{title:"Move right",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>ey(e,1),disabled:t<0||t>=eg.length-1,"aria-label":"Move ".concat(tR[e]," right"),children:(0,l.jsx)(tl.A,{fontSize:"small"})})})}),(0,l.jsx)(i.A,{title:"Hide section",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>em(e),"aria-label":"Hide ".concat(tR[e]),children:(0,l.jsx)(ex.A,{fontSize:"small"})})})]})]})})(e),eA[e]]},e)})(e),t<eg.length-1&&((e,t)=>{let n="tracker"!==e?e:"tracker"!==t?t:null;if(!n)return null;let o="tracker"!==e?1:-1;return(0,l.jsx)(tB,{onPointerDown:e=>ew(n,o,e),"aria-label":"Resize ".concat(tR[n]," section")},"resizer-".concat(e,"-").concat(t))})(e,eg[t+1])]},e))}),(0,l.jsxs)(tq,{children:[(0,l.jsx)(h.A,{variant:"outlined",size:"small",onClick:en,disabled:b||C<=0,children:"Previous"}),(0,l.jsx)(h.A,{variant:"contained",size:"small",onClick:el,disabled:b||-1===C,children:u.executionTrace&&C<u.executionTrace.length-1?"Next Trace Step":"Step Next"}),m&&(0,l.jsx)(h.A,{variant:"outlined",size:"small",onClick:m,disabled:b,children:"Step Over"}),(0,l.jsx)(h.A,{variant:"contained",color:"secondary",size:"small",onClick:x,disabled:b,children:"Continue"}),(0,l.jsx)(h.A,{variant:"outlined",color:"error",size:"small",onClick:v,disabled:b,children:"Stop"})]})]})},tJ=(0,e8.h)("frontend/components/Chat/ExecutedFlowPanel"),tV={start:td.vm,process:td.Uw,finish:td.IK,mcp:td.v2,subflow:td.lA,resource:td.z9,signal:td.z3},tY={custom:tc.jY,mcpEdge:tc.oY,resourceEdge:tc.sZ},tK=e=>{let{flowId:t,flowSnapshot:n,executedNodeIds:r,liveActivity:a,onClose:u}=e,p=(0,eh.A)(),[h,g]=(0,o.useState)(null),[m,x]=(0,o.useState)(!0),[v,b]=(0,o.useState)(null),[y,w,j]=(0,ts.ck)([]),[A,S,I]=(0,ts.fM)([]);(0,o.useEffect)(()=>{let e=!1;return(async()=>{x(!0),b(null);try{if(n&&Array.isArray(n.nodes)){e||g(n);return}if(!t)throw Error("No flow is associated with this conversation yet.");tJ.debug("Loading flow definition for ID: ".concat(t));let l=await ti.g.getFlow(t);if(!l)throw Error("Flow with ID ".concat(t," not found."));e||g(l)}catch(t){tJ.error("Error loading flow definition:",t),e||(b(t instanceof Error?t.message:"Failed to load flow definition."),g(null))}finally{e||x(!1)}})(),()=>{e=!0}},[t,n]),(0,o.useEffect)(()=>{h&&(w(h.nodes.map(e=>({...e,draggable:!1,selectable:!1,connectable:!1}))),S(h.edges.map(e=>({...e,selectable:!1}))))},[h,w,S]);let k=(0,o.useMemo)(()=>new Set(r),[r]),[C,E]=(0,o.useState)(()=>Date.now());(0,o.useEffect)(()=>{if(!a)return;let e=()=>Object.values(a.byNode).some(e=>Date.now()-e.ts<4e3);if(!e())return;let t=setInterval(()=>{E(Date.now()),e()||clearInterval(t)},350);return()=>clearInterval(t)},[a]);let T=(0,o.useMemo)(()=>y.map(e=>{let t=k.has(e.id),n=null==a?void 0:a.byNode[e.id],l=!!n&&C-n.ts<4e3;return{...e,style:{...e.style,opacity:t||l?1:.4,border:l?"2px solid ".concat(p.palette.primary.main):t?"2px solid ".concat(p.palette.success.main):"1px solid ".concat(p.palette.divider),boxShadow:l?"0 0 10px ".concat(p.palette.primary.light):t?"0 0 8px ".concat(p.palette.success.light):void 0}}}),[y,k,a,C,p]);return(0,l.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",height:"100%",borderLeft:1,borderColor:"divider",minWidth:0},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1,px:1.5,py:1,borderBottom:1,borderColor:"divider",flexShrink:0},children:[(0,l.jsx)(D.A,{fontSize:"small",color:"action"}),(0,l.jsx)(f.default,{variant:"subtitle2",sx:{flex:1,minWidth:0},noWrap:!0,children:"Executed Steps"}),(0,l.jsx)(i.A,{title:"Hide panel",children:(0,l.jsx)(d.A,{size:"small",onClick:u,"aria-label":"Hide executed steps panel",children:(0,l.jsx)(ex.A,{fontSize:"small"})})})]}),(0,l.jsx)(s.default,{sx:{flex:1,minHeight:0,position:"relative"},children:m?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,l.jsx)(eD.default,{})}):v?(0,l.jsx)(c.A,{severity:"info",sx:{m:2},children:v}):(0,l.jsx)(ts.Ln,{children:(0,l.jsx)(ts.Gc,{nodes:T,edges:A,onNodesChange:j,onEdgesChange:I,nodeTypes:tV,edgeTypes:tY,fitView:!0,attributionPosition:"bottom-right",nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!1})})})]})};function tQ(e){var t;return null==e||null==(t=e.nodes)?void 0:t.find(e=>{var t,n;return(null!=(n=null==e?void 0:e.type)?n:null==e||null==(t=e.data)?void 0:t.type)==="start"})}var tX=n(94929),tZ=n(74879),t$=n(29155),t0=n(63650),t1=n(49479);let t2=(0,e8.h)("frontend/components/Chat/index");function t5(e){var t;if(Array.isArray(e.content))return e.content;let n="string"==typeof e.content?e.content:"",l=null!=(t=e.attachments)?t:[],o=l.filter(e=>"image"!==e.type),r=l.filter(e=>"image"===e.type);if(o.length>0&&(n+="\n\n"+o.map(e=>"[".concat(e.type.toUpperCase(),"]: ").concat(e.content)).join("\n\n")),0===r.length)return n;let a=[];for(let e of(n.trim()&&a.push({type:"text",text:n}),r))a.push({type:"image_url",image_url:{url:e.content}});return a}let t6=/cancelled by user|execution cancelled/i,t3=e=>{var t,n;return(null==e?void 0:e.code)==="cancelled"||(null==e||null==(t=e.error)?void 0:t.code)==="cancelled"||[null==e?void 0:e.message,"string"==typeof(null==e||null==(n=e.body)?void 0:n.error)?e.body.error:void 0].some(e=>"string"==typeof e&&t6.test(e))},t4=()=>{var e,t,n;let r=(0,a.useRouter)(),[M,_]=(0,o.useState)([]),[O,P]=(0,o.useState)(!0),[F,L]=(0,o.useState)(null),[W,U]=(0,o.useState)(null),[H,q]=(0,o.useState)(!1),[B,G]=(0,o.useState)(null),[J,V]=(0,z.Mj)(z.Zg.CURRENT_CONVERSATION_ID,null),Y=(0,o.useRef)(J),K=(0,o.useRef)(new Map),Q=(0,o.useRef)(0),X=(0,o.useCallback)(e=>{let t=Q.current+1;Q.current=t;let n=Y.current;if(n===e)return void V(e);let l=n?"".concat(n,"\0"):null,o=l?[...K.current.entries()].filter(e=>{let[t]=e;return t.startsWith(l)}).map(e=>{let[,t]=e;return t}):[];if(0===o.length){Y.current=e,V(e);return}Promise.allSettled(o.map(e=>e())).then(()=>{Q.current===t&&(Y.current=e,V(e))})},[V]),[Z,ee]=(0,z.Mj)(z.Zg.LAST_PICKED_FLOW_ID,null),[et,en]=(0,o.useState)(!1),[el,eo]=(0,o.useState)(new Set),er=(0,o.useCallback)((e,t)=>{e&&eo(n=>{if(t===n.has(e))return n;let l=new Set(n);return t?l.add(e):l.delete(e),l})},[]),[ea,es]=(0,o.useState)({}),ei=(0,o.useRef)(!1),[ed,ec]=(0,o.useState)(null),[eh,eg]=(0,o.useState)([]),[em,ex]=(0,o.useState)(!1),[ev,eb]=(0,o.useState)(!1),[ey,ej]=(0,o.useState)(""),[eD,eR]=(0,o.useState)(!1),[ez,eM]=(0,o.useState)(null),[e_,eF]=(0,o.useState)(null),[eL,eW]=(0,o.useState)(null),[eH,eq]=(0,o.useState)(null),[eB,eJ]=(0,o.useState)(null),[eV,eY]=(0,o.useState)(null),[eK,eQ]=(0,o.useState)(!1),[eX,eZ]=(0,o.useState)(null),[e$,e2]=(0,o.useState)(!1),[e5,e6]=(0,o.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-debugger-width"));return Number.isFinite(e)&&e>0?e:0}),[e3,e4]=(0,o.useState)(()=>"1"===window.localStorage.getItem("flujo-debugger-expanded"));(0,o.useEffect)(()=>{window.localStorage.setItem("flujo-debugger-expanded",e3?"1":"0")},[e3]);let[e8,e7]=(0,o.useState)(()=>"1"===window.localStorage.getItem("flujo-workflow-panel-visible"));(0,o.useEffect)(()=>{window.localStorage.setItem("flujo-workflow-panel-visible",e8?"1":"0")},[e8]);let[te,tt]=(0,o.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-workflow-panel-width"));return Number.isFinite(e)&&e>0?e:320}),tn=(0,o.useCallback)(e=>{e.preventDefault();let t=e.clientX,n=0;tt(e=>(n=e,e));let l=document.body.style.userSelect,o=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let r=e=>{tt(Math.min(Math.max(n+(t-e.clientX),240),Math.round(.7*window.innerWidth)))},a=()=>{window.removeEventListener("pointermove",r),window.removeEventListener("pointerup",a),document.body.style.userSelect=l,document.body.style.cursor=o,tt(e=>(e>0&&window.localStorage.setItem("flujo-workflow-panel-width",String(Math.round(e))),e))};window.addEventListener("pointermove",r),window.addEventListener("pointerup",a)},[]),tl=(0,o.useCallback)(e=>{e.preventDefault();let t=document.body.style.userSelect,n=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let l=e=>{e6(Math.min(Math.max(window.innerWidth-e.clientX,360),Math.round(.85*window.innerWidth)))},o=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",o),document.body.style.userSelect=t,document.body.style.cursor=n,e6(e=>(e>0&&window.localStorage.setItem("flujo-debugger-width",String(Math.round(e))),e))};window.addEventListener("pointermove",l),window.addEventListener("pointerup",o)},[]),[to,tr]=(0,o.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-chat-sidebar-width"));return Number.isFinite(e)&&e>0?e:300}),[ta,ts]=(0,o.useState)(()=>"1"===window.localStorage.getItem("flujo-chat-sidebar-collapsed")),td=(0,o.useCallback)(()=>{ts(e=>{let t=!e;return window.localStorage.setItem("flujo-chat-sidebar-collapsed",t?"1":"0"),t})},[]),tc=(0,o.useCallback)(e=>{e.preventDefault();let t=document.body.style.userSelect,n=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let l=e=>{tr(Math.min(Math.max(e.clientX,220),560))},o=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",o),document.body.style.userSelect=t,document.body.style.cursor=n,tr(e=>(e>0&&window.localStorage.setItem("flujo-chat-sidebar-width",String(Math.round(e))),e))};window.addEventListener("pointermove",l),window.addEventListener("pointerup",o)},[]),[tp,th]=(0,o.useState)(null),[tg,tm]=(0,o.useState)(tu),[tx,tv]=(0,o.useState)(eO),[tb,ty]=(0,o.useState)([]),[tw,tj]=(0,o.useState)(new Set),[tA,tS]=(0,o.useState)([]),[tI,tk]=(0,o.useState)(null),tC=(0,o.useRef)(null),tE=(0,o.useRef)(null),tT=(0,o.useRef)(null),tN=(0,o.useRef)(-1),tD=(0,o.useRef)(new Map);(0,o.useEffect)(()=>{Y.current=J},[J]);let tR=(0,o.useRef)(new Set),tz=(0,o.useRef)(new Set),tM=(0,o.useRef)(new Set),[t_,tO]=(0,o.useState)(new Set),tP=(0,o.useCallback)((e,t)=>{e&&(t?tM.current.add(e):tM.current.delete(e),tO(new Set(tM.current)))},[]),tF=(0,o.useRef)(null),tL=(0,o.useRef)(!0),[tW,tU]=(0,o.useState)(!1),tH=(0,o.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"auto",t=tF.current;t&&t.scrollTo({top:t.scrollHeight,behavior:e})},[]),tq=(0,o.useCallback)(()=>{let e=tF.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight<80;tL.current=t,tU(!t)},[]),tB=(0,o.useCallback)(()=>{tL.current=!0,tU(!1),tH("smooth")},[tH]);(0,o.useEffect)(()=>{tL.current=!0,tU(!1)},[J]),(0,o.useEffect)(()=>{tL.current&&tH("auto")},[null==W?void 0:W.messages,tH]);let tJ=(0,o.useRef)(null);(0,o.useEffect)(()=>{tJ.current=tI},[tI]),(0,o.useEffect)(()=>{let e=window.location.origin+"/v1";tC.current=new t$.Ay({baseURL:e,apiKey:"FLUJO",dangerouslyAllowBrowser:!0,maxRetries:0,timeout:18e6})},[]),(0,o.useEffect)(()=>{(async()=>{t2.debug("Loading flows");try{let e=await ti.g.loadFlows();eg(e)}catch(e){t2.error("Error loading flows:",e)}})()},[]);let tV=(0,o.useCallback)(async(e,t)=>{var n;let l=null!=(n=null==t?void 0:t.silent)&&n;t2.debug("Fetching conversation list from backend",{silent:l}),l||(P(!0),L(null));let o=[],r=!1;try{for(let e of o=(await t1.O.listConversations()).filter(e=>!tz.current.has(e.id)).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))tR.current.delete(e.id);_(e=>{let t=e.filter(e=>tR.current.has(e.id)),n=t.length>0?[...t,...o].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}):o;return((e,t)=>e.length===t.length&&e.every((e,n)=>{let l=t[n];return e.id===l.id&&e.title===l.title&&e.flowId===l.flowId&&e.status===l.status&&e.plannedExecutionId===l.plannedExecutionId&&e.parentConversationId===l.parentConversationId&&e.rootConversationId===l.rootConversationId&&e.createdAt===l.createdAt&&e.updatedAt===l.updatedAt}))(e,n)?e:n}),t2.info("Fetched ".concat(o.length," conversations for the list"))}catch(e){r=!0,t2.error("Error fetching conversation list:",e),l||(L("Failed to load conversation history."),_([]))}finally{if(l||P(!1),l||r)return;let t=void 0!==e?e:Y.current,n=Y.current;if(t&&(e=>o.some(t=>t.id===e)||tR.current.has(e))(t))t!==n&&(t2.debug("Setting currentConversationId to ".concat(t," after fetch/operation.")),X(t));else if(o.length>0){let e=o[0].id;e!==n&&(t2.debug("Selecting most recent conversation ".concat(e," after fetch/operation.")),X(e))}else null===n||tR.current.has(n)||(t2.debug("No conversations available after fetch/operation, clearing selection."),X(null))}},[X]);(0,o.useEffect)(()=>{tV()},[]),(0,o.useEffect)(()=>{let e=()=>{("undefined"==typeof document||"visible"===document.visibilityState)&&tV(void 0,{silent:!0})},t=setInterval(e,5e3);return document.addEventListener("visibilitychange",e),()=>{clearInterval(t),document.removeEventListener("visibilitychange",e)}},[tV]);let tY=(0,o.useCallback)(async e=>{if(tR.current.has(e))return void t2.debug("Skipping detail fetch for client-only conversation",{conversationId:e});if(Y.current!==e){t2.debug("Detail fetch requested for non-viewed conversation; refreshing list instead",{conversationId:e}),tV(void 0,{silent:!0});return}t2.debug("Fetching detailed conversation",{conversationId:e}),q(!0),G(null);try{let t=await t1.O.getConversation(e);if(Y.current!==e)return void t2.debug("Discarding stale detailed conversation response",{fetchedId:e,currentId:Y.current});void 0===t.mcpAppContexts||tD.current.has(e)||tD.current.set(e,{...t.mcpAppContexts}),U(t),_(n=>n.map(n=>{var l;return n.id===e?{...n,title:t.title,flowId:t.flowId,updatedAt:t.updatedAt,status:null!=(l=t.status)?l:n.status}:n}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),t2.info("Fetched detailed conversation successfully",{conversationId:e})}catch(t){if(t2.error("Error fetching detailed conversation:",{conversationId:e,err:t}),Y.current!==e)return;t instanceof t1.b&&404===t.status?(G("Conversation ".concat(e," not found.")),X(null),tV()):G("Failed to load details for conversation ".concat(e,".")),U(null)}finally{Y.current===e&&q(!1)}},[tV,X]);(0,o.useEffect)(()=>{eM(null),eJ(null),J?tY(J):(U(null),q(!1),G(null))},[J,tY]),(0,o.useEffect)(()=>{if(W){var e;ex(null!=(e=W.requireApproval)&&e)}},[null==W?void 0:W.id]);let t4=(0,o.useCallback)(async e=>{if(ex(e),J)try{await t1.O.updateConversationApproval(J,e)}catch(e){t2.warn("Failed to persist requireApproval setting",{conversationId:J,err:e})}},[J]),t8=M.find(e=>e.id===J)||null,t7=(0,o.useMemo)(()=>{let e={};for(let t of eh)t.id&&(e[t.id]=t.name);return e},[eh]),t9=(0,o.useMemo)(()=>eh.find(e=>e.id===(null==W?void 0:W.flowId))||null,[eh,null==W?void 0:W.flowId]),ne=(0,o.useMemo)(()=>{var e;return(null==t9||null==(e=t9.nodes)?void 0:e.map(e=>({id:e.id,label:e.data.label||e.id})))||[]},[t9]),nt=(0,o.useMemo)(()=>{var e;return function(e){var t,n,l,o;let r=new Set;return null==(t=e.messages)||t.forEach(e=>{(null==e?void 0:e.processNodeId)&&r.add(e.processNodeId)}),null==(n=e.nodeExecutionTracker)||n.forEach(e=>{(null==e?void 0:e.nodeId)&&r.add(e.nodeId)}),null==(l=e.executionTrace)||l.forEach(e=>{(null==e?void 0:e.nodeId)&&r.add(e.nodeId)}),null==(o=e.sseVisitedIds)||o.forEach(e=>{e&&r.add(e)}),Array.from(r)}({messages:null==W?void 0:W.messages,nodeExecutionTracker:null==eX||null==(e=eX.trackingInfo)?void 0:e.nodeExecutionTracker,executionTrace:null==eX?void 0:eX.executionTrace,sseVisitedIds:tw})},[null==W?void 0:W.messages,eX,tw]);(0,o.useEffect)(()=>{tj(new Set)},[null==W?void 0:W.id]);let nn=(0,o.useMemo)(()=>{var e,t,n;let l=e=>!!e&&ne.some(t=>t.id===e);if(l(eB))return eB;if(l(null==W?void 0:W.currentNodeId))return W.currentNodeId;let o=null!=(t=null==W?void 0:W.messages)?t:[];for(let e=o.length-1;e>=0;e--){let t=o[e];if("assistant"===t.role&&l(t.processNodeId))return t.processNodeId}return null!=(n=null==(e=ne[0])?void 0:e.id)?n:null},[eB,W,ne]),nl=async e=>{var t,n,l,o;t2.debug("Attempting to create new conversation"),ec(null);let r="string"!=typeof e||$(e)?void 0:eh.find(t=>t.id===e),a=Z&&!$(Z)?eh.find(e=>e.id===Z):void 0,s=(null==(t=null!=(l=null!=(n=null!=r?r:a)?n:eh.find(e=>e.favorite))?l:eh[0])?void 0:t.id)||null;if(!s){t2.error("Cannot create conversation: No flows available or first flow has no ID."),ec("Cannot create a new conversation: No flows available.");return}let i=(0,tZ.A)(),d=Date.now(),c={id:i,title:"New Conversation",flowId:s,createdAt:d,updatedAt:d};try{t2.info("Sending request to create conversation on backend",{payload:JSON.stringify(c)});let e=await t1.O.createConversation(c);t2.info("Successfully created conversation on backend",{conversationId:e.id}),_(t=>[e,...t].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),X(e.id),U({id:e.id,title:e.title,flowId:e.flowId,createdAt:e.createdAt,updatedAt:e.updatedAt,messages:[]}),q(!1),G(null)}catch(t){t2.error("Error creating conversation on backend:",t);let e="Failed to create conversation on the server.";t instanceof t1.b?e+=" Error: ".concat((null==(o=t.body)?void 0:o.error)||t.message):t instanceof Error&&(e+=" Error: ".concat(t.message)),ec(e)}},no=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(no.current||0===eh.length)return;let e=new URLSearchParams(window.location.search).get("flow");if(!e){no.current=!0;return}no.current=!0,eh.some(t=>t.id===e)&&!$(e)&&nl(e),r.replace("/chat")},[eh]);let[nr,na]=(0,o.useState)(!1),ns=async e=>{ec(null);let t=(0,tZ.A)(),{flow:n}=await t1.O.synthesizeQuickChat({conversationId:t,modelId:e.modelId,servers:e.servers,systemPrompt:e.systemPrompt}),l=Date.now(),o=await t1.O.createConversation({id:t,title:"Quick Chat",flowId:n.id,flowSnapshot:n,createdAt:l,updatedAt:l});_(e=>[o,...e].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),X(o.id),U({id:o.id,title:o.title,flowId:o.flowId,createdAt:o.createdAt,updatedAt:o.updatedAt,messages:[]}),q(!1),G(null),na(!1)},ni=(0,o.useCallback)(e=>{t2.debug("Updating detailed conversation state locally",{conversationId:e.id});let t={...e,updatedAt:Date.now()};U(t),_(e=>e.map(e=>e.id===t.id?{...e,title:t.title,updatedAt:t.updatedAt}:e).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))},[]),nd=(0,o.useCallback)(()=>{tT.current&&(t2.debug("Closing execution event stream"),tT.current.close(),tT.current=null)},[]),nc=(0,o.useCallback)((e,t)=>{_(n=>{let l=n.findIndex(t=>t.id===e);if(-1===l||n[l].status===t)return n;let o=[...n];return o[l]={...o[l],status:t},o})},[]),nu=(0,o.useCallback)(e=>{var t,n,l,o,r;if("number"==typeof e.seq){if(e.seq<=tN.current)return;tN.current=e.seq}let a=e=>th(t=>{var n,l,o,r;return{totalTokens:null!=(l=null!=(n=e.totalTokens)?n:null==t?void 0:t.totalTokens)?l:0,activeNode:void 0!==e.activeNode?e.activeNode:null!=(o=null==t?void 0:t.activeNode)?o:null,startedAt:null!=(r=null==t?void 0:t.startedAt)?r:Date.now(),lastEventAt:Date.now()}}),s=e=>tm(t=>{let n=Date.now(),l={byNode:{...t.byNode},byResource:{...t.byResource},byResourceName:{...t.byResourceName},resourceVersion:t.resourceVersion};return e(l),function(e,t){let n=e=>{let n={};for(let[l,o]of Object.entries(e))t-o.ts<4e3&&(n[l]=o);return n};return{byNode:n(e.byNode),byResource:n(e.byResource),byResourceName:n(e.byResourceName),resourceVersion:e.resourceVersion}}(l,n)});if(null!=e.laneIndex)switch(tv(t=>(function(e,t){var n,l,o,r,a,s;let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),d=t.laneIndex,c=t.laneCount;if(null==d||null==c)return e;let u=("subflow:start"===t.type||"subflow:done"===t.type)&&1===t.depth;if(u&&"subflow:start"===t.type){let r=null==(n=t.node)?void 0:n.nodeId,a=e.ownerNodeId&&r&&e.ownerNodeId!==r?{}:{...e.byIndex};return eP(a,c,i),a[d]={laneIndex:d,laneCount:c,label:t.laneTitle||function(e,t,n){let l=e.subflowName||e.subflowId;return l?"".concat(l," ").concat(t+1,"/").concat(n):"Lane ".concat(t+1,"/").concat(n)}(t,d,c),laneConversationId:null!=(o=t.laneConversationId)?o:null==(l=a[d])?void 0:l.laneConversationId,status:"running",lastEventAt:i},{ownerNodeId:null!=r?r:e.ownerNodeId,byIndex:a}}if(u&&"subflow:done"===t.type){let n={...e.byIndex};eP(n,c,i);let l=n[d];return n[d]={...l,label:l.label&&"pending"!==l.status?l.label:t.laneTitle||l.label,laneConversationId:null!=(a=l.laneConversationId)?a:t.laneConversationId,status:"capped"===t.status?"completed":t.status,activity:void 0,lastEventAt:i},{ownerNodeId:null!=(s=e.ownerNodeId)?s:null==(r=t.node)?void 0:r.nodeId,byIndex:n}}let f=function(e){switch(e.type){case"node:enter":var t,n;return(null==(t=e.node)?void 0:t.nodeName)||(null==(n=e.node)?void 0:n.nodeId)||void 0;case"tool:call":return e.name;case"tool:progress":return e.message?"".concat(e.name," — ").concat(e.message):e.name;case"subflow:start":return"↳ ".concat(e.subflowName||e.subflowId);case"handoff":return"→ ".concat(e.toNodeId);default:return}}(t);if(void 0===f)return e;let p=e.byIndex[d];if(p&&p.activity===f&&"pending"!==p.status||p&&("completed"===p.status||"error"===p.status))return e;let h={...e.byIndex};eP(h,c,i);let g=h[d];return h[d]={...g,status:"pending"===g.status?"running":g.status,activity:f,lastEventAt:i},{ownerNodeId:e.ownerNodeId,byIndex:h}})(t,e)),e.type){case"node:enter":if(null==(t=e.node)?void 0:t.nodeId){let t=e.node.nodeId;s(e=>{e.byNode[t]={kind:"active",ts:Date.now()}}),tj(e=>e.has(t)?e:new Set(e).add(t))}a({});return;case"tool:call":case"tool:progress":case"subflow:start":case"handoff":a({});return}switch(e.type){case"run:start":th({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),tm(tu),tv(eO),ty([]),e.conversationId&&(nc(e.conversationId,"running"),tP(e.conversationId,!1));break;case"model:delta":a({}),U(t=>{var n,l,o,r,a,s,i,d,c;if(!t||t.id!==e.conversationId)return t;let u=t.messages.findIndex(t=>t.id===e.messageId),f=u>=0?t.messages[u]:{id:e.messageId,role:"assistant",content:"",timestamp:e.timestamp,processNodeId:null==(n=e.node)?void 0:n.nodeId};if("assistant"!==f.role)return t;let p=[...null!=(l=f.tool_calls)?l:[]],h=e.toolCallDelta;if(h){let t=p[h.index];p[h.index]={id:null!=(r=null!=(o=h.id)?o:null==t?void 0:t.id)?r:"pending_".concat(e.messageId,"_").concat(h.index),type:"function",function:{name:"".concat(null!=(a=null==t?void 0:t.function.name)?a:"").concat(null!=(s=h.nameDelta)?s:""),arguments:"".concat(null!=(i=null==t?void 0:t.function.arguments)?i:"").concat(null!=(d=h.argumentsDelta)?d:"")}}}let g={...f,content:"".concat("string"==typeof f.content?f.content:"").concat(null!=(c=e.delta)?c:""),...p.length>0?{tool_calls:p}:{}},m=[...t.messages];return u>=0?m[u]=g:m.push(g),{...t,messages:m}});break;case"model:end":a({}),e.discard&&e.messageId&&U(t=>{if(!t||t.id!==e.conversationId)return t;let n=t.messages.filter(t=>t.id!==e.messageId);return n.length===t.messages.length?t:{...t,messages:n}});break;case"message":{let t=e.message;a({}),U(n=>{let l;if(!n||n.id!==e.conversationId)return n;let o=n.messages.findIndex(e=>e.id===t.id);return o>=0?(l=[...n.messages])[o]={...l[o],...t}:l=[...n.messages,t],{...n,messages:l}});break}case"usage":th(t=>{var n,l,o;return{totalTokens:(null!=(n=null==t?void 0:t.totalTokens)?n:0)+(e.totalTokens||0),activeNode:null!=(l=null==t?void 0:t.activeNode)?l:null,startedAt:null!=(o=null==t?void 0:t.startedAt)?o:Date.now(),lastEventAt:Date.now()}});break;case"node:enter":if(a({activeNode:(null==(n=e.node)?void 0:n.nodeName)||(null==(l=e.node)?void 0:l.nodeId)||null}),null==(o=e.node)?void 0:o.nodeId){let t=e.node.nodeId;s(e=>{e.byNode[t]={kind:"active",ts:Date.now()}}),tj(e=>e.has(t)?e:new Set(e).add(t))}break;case"resource:read":case"resource:write":{let t="resource:read"===e.type?"read":"write";s(n=>{var l;let o=Date.now();(null==(l=e.node)?void 0:l.nodeId)&&(n.byNode[e.node.nodeId]={kind:"read"===t?"resource-read":"resource-write",ts:o}),e.server&&e.uri&&(n.byResource[tf(e.server,e.uri)]={kind:t,ts:o}),e.name&&(n.byResourceName[e.name]={kind:t,ts:o}),"write"===t&&(n.resourceVersion=n.resourceVersion+1)}),a({});break}case"todo:update":ty(null!=(r=e.todos)?r:[]),a({});break;case"tool:call":a({activeNode:e.name});break;case"tool:progress":a({activeNode:e.message?"".concat(e.name," — ").concat(e.message):e.name});break;case"subflow:start":a({activeNode:"↳ ".concat(e.subflowName||e.subflowId)});break;case"handoff":a({activeNode:"→ ".concat(e.toNodeId)});break;case"run:awaiting_approval":e.conversationId&&e.conversationId===Y.current&&eM(e.pendingToolCalls||[]),e.conversationId&&nc(e.conversationId,"awaiting_tool_approval");break;case"run:awaiting_elicitation":e.conversationId&&e.conversationId===Y.current&&eF({elicitationId:e.elicitationId,message:e.message,requestedSchema:e.requestedSchema});break;case"run:awaiting_question":e.conversationId&&e.conversationId===Y.current&&eW({questionId:e.questionId,questions:e.questions});break;case"breakpoint:hit":case"run:paused":en(!1),e.conversationId&&(er(e.conversationId,!1),nc(e.conversationId,"paused_debug")),eQ(!0);break;case"run:done":if(e.conversationId&&(er(e.conversationId,!1),nc(e.conversationId,e.status)),e.conversationId===Y.current&&(eF(null),eW(null)),e.conversationId&&tJ.current&&e.conversationId!==tJ.current)break;th(null),tm(tu),tv(eO),en(!1),tk(null),nd(),e.conversationId&&e.conversationId===Y.current?tY(e.conversationId):tV(void 0,{silent:!0});break;case"error":ec(e.message||"Execution error");break;default:a({})}},[nd,tY,tV,er,nc,tP]),nf=(0,o.useCallback)((e,t)=>(nd(),tN.current=void 0!==t?t-1:-1,tv(eO),new Promise(n=>{let l=!1,o=()=>{l||(l=!0,n())};try{tT.current=t1.O.subscribeToEvents(e,{onEvent:nu,onOpen:o},t),setTimeout(o,1500)}catch(t){t2.error("Failed to open execution event stream",{conversationId:e,err:t}),o()}})),[nu,nd]);(0,o.useEffect)(()=>{if(J&&(null==t8?void 0:t8.status)==="running"&&tJ.current!==J){if(tM.current.has(J))return void t2.debug("Skipping re-attach to a conversation the user just stopped",{conversationId:J});t2.info("Re-attaching to in-progress run",{conversationId:J}),tJ.current=J,en(!0),tk(J),er(J,!0),th(e=>null!=e?e:{totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),nf(J,0)}},[J,null==t8?void 0:t8.status,nf]);let np=async e=>{t2.debug("Attempting to delete conversation",{conversationId:e}),ec(null),tz.current.add(e);let t=tR.current.delete(e);tJ.current===e&&(nd(),en(!1),tk(null),th(null),tv(eO)),er(e,!1),es(t=>eT(t,e));let n=M.filter(t=>t.id!==e);_(n);let l=J;J===e&&(n.length>0?(l=n[0].id,t2.debug("Deleted current conversation, selecting next most recent",{nextSelectionId:l})):(l=null,t2.debug("Deleted last conversation, clearing selection")),X(l));try{await t1.O.deleteConversation(e),t2.info("Successfully deleted conversation on backend",{conversationId:e})}catch(n){t2.error("Error deleting conversation:",{conversationId:e,err:n}),ec("Failed to delete conversation ".concat(e,". Please try again.")),tz.current.delete(e),t&&tR.current.add(e),_(M),X(J)}},nh=async e=>{if(!e.length)return;ec(null);let t=new Set(e);e.forEach(e=>tz.current.add(e));let n=Y.current;n&&t.has(n)&&tJ.current===n&&(nd(),en(!1),tk(null),th(null),tv(eO)),e.forEach(e=>{er(e,!1),es(t=>eT(t,e))}),_(e=>e.filter(e=>!t.has(e.id))),n&&t.has(n)&&X(null);try{let t=await t1.O.deleteConversations(e);t2.info("Bulk delete succeeded",{requested:e.length,...t})}catch(t){t2.error("Bulk delete failed",{err:t}),ec("Failed to delete conversations. Please try again."),e.forEach(e=>tz.current.delete(e)),_(M),X(J)}},ng=async e=>{if(t2.debug("Flow selected, attempting to update",{flowId:e,currentConversationId:J}),ec(null),!J){t2.warn("Cannot update flow: No conversation selected."),ec("Please select a conversation first.");return}W&&W.id===J&&U({...W,flowId:e,updatedAt:Date.now()}),_(t=>t.map(t=>t.id===J?{...t,flowId:e,updatedAt:Date.now()}:t).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}));try{let t=await t1.O.updateConversationFlow(J,e);t2.info("Successfully updated flowId on backend",{conversationId:J,flowId:e}),U(e=>e&&e.id===J?(t2.debug("Confirming detailedConversation update from server response",{conversationId:J,flowId:t.flowId}),{...e,flowId:t.flowId,updatedAt:t.updatedAt}):(t2.debug("Skipping detailedConversation update, ID mismatch or null state",{currentDetailedId:null==e?void 0:e.id,targetId:J}),e)),_(e=>e.map(e=>e.id===J?t:e).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))}catch(l){t2.error("Error updating flowId on backend:",{conversationId:J,flowId:e,err:l});let n="Failed to update the selected flow.";if(l instanceof t1.b){var t;n+=" Error: ".concat((null==(t=l.body)?void 0:t.error)||l.message)}else l instanceof Error&&(n+=" Error: ".concat(l.message));ec(n),U(W),_(M)}},nm=()=>{var e,t;ej(null!=(t=null!=(e=null==W?void 0:W.title)?e:null==t8?void 0:t8.title)?t:""),eb(!0)},nx=async()=>{var e,t;if(eb(!1),!J)return;let n=null!=(t=null!=(e=null==W?void 0:W.title)?e:null==t8?void 0:t8.title)?t:"",l=ey.trim().slice(0,200);if(l&&l!==n){U(e=>e&&e.id===J?{...e,title:l}:e),_(e=>e.map(e=>e.id===J?{...e,title:l}:e));try{let e=await t1.O.updateConversationTitle(J,l);U(t=>t&&t.id===J?{...t,title:e.title}:t),_(t=>t.map(t=>t.id===J?{...t,title:e.title}:t))}catch(e){t2.warn("Failed to rename conversation",{conversationId:J,err:e}),U(e=>e&&e.id===J?{...e,title:n}:e),_(e=>e.map(e=>e.id===J?{...e,title:n}:e)),ec("Failed to rename the conversation.")}}},nv=async function(e){var t;let n,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=arguments.length>2?arguments[2]:void 0;if(!e.trim()&&0===l.length)return;if(!W){t2.error("Cannot send message, detailed conversation not loaded."),ec("Cannot send message: conversation details not loaded.");return}if(!(null==o?void 0:o.fromQueue)&&el.has(W.id)){let t=W.id;if(0!==l.length||eB){let n={id:(0,tZ.A)(),content:e,attachments:l,nodeOverride:null!=eB?eB:null,timestamp:Date.now()};es(e=>({...e,[t]:[...eE(e,t),n]})),eJ(null),t2.debug("Run in progress — queued message (not steerable)",{conversationId:t,queuedId:n.id,reason:l.length>0?"attachments":"node-override"});return}{let n=(0,tZ.A)(),{delivered:l}=await t1.O.injectMessage(t,e,n);if(l){let l={id:n,role:"user",content:e,timestamp:Date.now()};ni({...W,messages:[...W.messages,l]}),t2.debug("Run in progress — injected steering message into the live run",{conversationId:t,messageId:n});return}t2.debug("Steering rejected (run no longer live) — sending as a normal turn",{conversationId:t})}}t2.debug("Sending message",{conversationId:W.id,contentLength:e.length,attachmentsCount:l.length});let r=W.messages,a=!r.some(e=>"user"===e.role),s=W.flowId,i=(null==o?void 0:o.fromQueue)?null!=(t=o.nodeOverride)?t:null:eB;if(i)n=i,(null==o?void 0:o.fromQueue)||eJ(null),t2.debug("Assigning manually picked node ID to user message: ".concat(n));else if(a){let e=tQ(eh.find(e=>e.id===s));e?(n=e.id,t2.debug("Assigning start node ID to first user message: ".concat(n))):t2.warn("Could not find start node for flow ".concat(s,". User message will not have a processNodeId."))}else if((null==t8?void 0:t8.status)==="error"){let e=tQ(eh.find(e=>e.id===s));e?(n=e.id,t2.debug("Post-error message: re-driving turn from start node ID: ".concat(n))):t2.warn("Could not find start node for post-error message in flow ".concat(s,". User message will not have a processNodeId."))}else{for(let e=r.length-1;e>=0;e--){let t=r[e];if("assistant"===t.role&&t.processNodeId){n=t.processNodeId,t2.debug("Assigning last assistant node ID to user message: ".concat(n));break}}if(!n){let e=tQ(eh.find(e=>e.id===s));e?(n=e.id,t2.debug("No prior assistant node ID found, falling back to start node ID: ".concat(n))):t2.warn("Could not find start node for fallback in flow ".concat(s,". User message will not have a processNodeId."))}}let d={id:(0,tZ.A)(),role:"user",content:e,timestamp:Date.now(),attachments:l.length>0?l:void 0,processNodeId:n},c={...W,messages:[...W.messages,d]};ni(c),c.flowId?await nw(c):(ec("Please select a flow for this conversation before sending messages"),U(W))},nb=(0,o.useCallback)((e,t)=>{t2.verbose("Handling API response data",JSON.stringify(e)),er(t,"running"===e.status);let n=tJ.current===t,l=Y.current===t;if("paused_debug"===e.status&&e.debugState)return(t2.info("API Response: Paused for debugging",{conversationId:t}),l)?(eZ(e.debugState),eQ(!0),e2(!0),en(!1),tk(null),nd(),ny(),U(n=>(null==n?void 0:n.id)===t&&e.debugState.messages&&JSON.stringify(n.messages)!==JSON.stringify(e.debugState.messages)?(t2.debug("Updating detailed conversation messages from debug state"),{...n,messages:e.debugState.messages,updatedAt:e.debugState.updatedAt}):n),_(n=>n.map(n=>{var l,o;return n.id===t?{...n,title:null!=(l=e.debugState.title)?l:n.title,flowId:null!=(o=e.debugState.flowId)?o:n.flowId,status:"paused_debug",updatedAt:e.debugState.updatedAt}:n}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))):(nc(t,"paused_debug"),n&&(en(!1),tk(null),nd(),ny())),!0;if(("completed"===e.status||"error"===e.status)&&l?(t2.info("API Response: Execution completed or errored (Status: ".concat(e.status,"). Hiding debugger panel."),{conversationId:t}),eQ(!1),eZ(null),e2(!1)):t2.debug("API Response: Status is '".concat(e.status,"'. Debugger panel visibility unchanged (currently ").concat(eK?"visible":"hidden",")."),{conversationId:t}),e.messages&&e.conversation_id===t){let n=e.messages.map((e,n)=>"number"!=typeof e.timestamp||isNaN(e.timestamp)?(t2.warn("Invalid timestamp found in message index ".concat(n," from API response. Defaulting to Date.now()."),{conversationId:t,messageId:e.id,invalidTimestamp:e.timestamp}),{...e,timestamp:Date.now()}):e);U(l=>{var o,r;let a=l;return(null==l?void 0:l.id)===t&&JSON.stringify(l.messages)!==JSON.stringify(n)&&(t2.info("API Response/Polling: Updating detailed conversation messages",{conversationId:t,newMessageCount:n.length}),a={...l,messages:n,updatedAt:e.updatedAt||l.updatedAt}),t2.debug("Polling: setDetailedConversation callback executed.",{conversationId:t,messagesChanged:a!==l,newMessageCount:null!=(r=null==a||null==(o=a.messages)?void 0:o.length)?r:"N/A"}),a})}if("awaiting_tool_approval"===e.status)t2.info("API Response/Polling: Pausing for tool approval",{conversationId:t}),l&&eM(e.pendingToolCalls||[]),n&&(en(!1),tk(null),nd(),ny());else if("completed"===e.status||"error"===e.status){if(t2.info("API Response/Polling: Stopping due to final status",{conversationId:t,status:e.status}),n&&(ny(),en(!1),tk(null),nd()),"error"===e.status){var o,r;let a=(null==(o=e.error)?void 0:o.message)||(null==(r=e.lastResponse)?void 0:r.error)||"Unknown error during execution";t6.test(a)||tM.current.has(t)?(tP(t,!0),(n||l)&&ec(null),t2.info("API Response/Polling: Execution cancelled by user",{conversationId:t})):(ec(a),t2.error("API Response/Polling: Execution resulted in error",{conversationId:t,error:e.error||e.lastResponse}))}tY(t)}else"running"!==e.status||eK?l&&eM(null):(l&&eM(null),n&&!tE.current&&en(!0));return e.conversation_id===t&&_(n=>n.map(n=>{var l,o,r;return n.id===t?{...n,title:null!=(l=e.title)?l:n.title,flowId:null!=(o=e.flowId)?o:n.flowId,status:null!=(r=e.status)?r:n.status,updatedAt:e.updatedAt||n.updatedAt}:n}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),!1},[U,eM,en,ec,eQ,eZ,_,tY,nd,er,nc,tP]),ny=()=>{tE.current&&(t2.debug("Stopping polling interval"),clearInterval(tE.current),tE.current=null)};(0,o.useEffect)(()=>()=>{nd()},[nd]);let nw=async e=>{if(!(null==e?void 0:e.id)||!e.flowId||!tC.current)return t2.error("Cannot send to completions: Missing conversation ID or flow ID.",{id:null==e?void 0:e.id,flowId:null==e?void 0:e.flowId}),ec("Cannot send message: Missing conversation ID or flow ID."),!1;eM(null),ec(null),en(!0),tk(e.id),er(e.id,!0),tP(e.id,!1);let t=tR.current.delete(e.id);th({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await nf(e.id);let n=!1;try{let t;if($(e.flowId))t="flow-Quick Chat",t2.debug("Sending quick chat to completions",{flowId:e.flowId,conversationId:e.id});else{let n=await ti.g.getFlow(e.flowId);if(!n)throw Error("Flow with ID ".concat(e.flowId," not found"));t="flow-".concat(n.name),t2.debug("Sending to chat completions",{flowId:e.flowId,flowName:n.name,conversationId:e.id})}let l=e.messages.filter(e=>{var t;return!e.disabled&&!((null!=(t=e.depth)?t:0)>0)}).map(e=>{let t=t5(e),n=e.processNodeId,l={id:e.id,timestamp:e.timestamp};return"user"===e.role?{role:"user",content:t,...l,processNodeId:n}:"assistant"===e.role?{role:"assistant",content:t,tool_calls:e.tool_calls,...l,processNodeId:n}:"system"===e.role?{role:"system",content:t,...l,processNodeId:n}:"tool"===e.role?e.tool_call_id?{role:"tool",content:t,tool_call_id:e.tool_call_id,...l,processNodeId:n}:{role:"user",content:"string"==typeof t?"Tool result: ".concat(t):t,...l,processNodeId:n}:{role:"user",content:t,...l,processNodeId:n}}),o=await tC.current.chat.completions.create({model:t,messages:l,stream:!1,metadata:(()=>{let t=tD.current.get(e.id),n={flujo:"true",requireApproval:em?"true":void 0,flujodebug:eD?"true":void 0,conversationId:e.id,mcpAppContexts:void 0===t?void 0:JSON.stringify(t)},l={};return n.flujo&&(l.flujo=n.flujo),n.requireApproval&&(l.requireApproval=n.requireApproval),n.flujodebug&&(l.flujodebug=n.flujodebug),n.conversationId&&(l.conversationId=n.conversationId),void 0!==n.mcpAppContexts&&(l.mcpAppContexts=n.mcpAppContexts),l})()});t2.debug("Chat completion initial response received",{completionId:o.id}),n=!0;let r={...o,status:o.status||"completed",conversation_id:e.id,messages:o.messages||e.messages,pendingToolCalls:o.pendingToolCalls,debugState:o.debugState,error:o.error,lastResponse:o.lastResponse,updatedAt:o.updatedAt||Date.now()},a=nb(r,e.id);a||tE.current?a&&t2.debug("Debug state handled, polling remains stopped."):t2.debug("Starting polling after initial non-debug response.")}catch(r){if(t3(r)||tM.current.has(e.id))return t2.info("Chat completion cancelled by user",{conversationId:e.id}),n=!1,er(e.id,!1),tP(e.id,!0),tJ.current===e.id&&(ny(),en(!1),tk(null),nd(),ec(null)),n;t2.error("Error calling chat completions API:",r),n=!1;let o="An error occurred while sending the message.";if(r instanceof t0.LG)o="API Error: ".concat(r.message," (Status: ").concat(r.status,")"),r.code&&(o+=" (Code: ".concat(r.code,")")),r.type&&(o+=" [Type: ".concat(r.type,"]")),t2.verbose("APIError details",JSON.stringify(r));else if(r instanceof t0.vc){o="OpenAI Error: ".concat(r.message);let e=r.error;e&&"object"==typeof e&&(e.code&&(o+=" (Code: ".concat(e.code,")")),e.type&&(o+=" [Type: ".concat(e.type,"]"))),t2.verbose("OpenAIError details",JSON.stringify(r))}else if(r instanceof t1.b){var l;o="Error: ".concat((null==(l=r.body)?void 0:l.error)||r.message),r.status&&(o+=" (Status: ".concat(r.status,")")),t2.verbose("ChatApiError details",JSON.stringify(r.body))}else r instanceof Error&&(o=r.message);ec(o),er(e.id,!1),tJ.current===e.id&&(ny(),en(!1),tk(null),nd()),t&&tR.current.add(e.id)}finally{}return n},nj=(0,o.useRef)(nv);nj.current=nv;let nA=(0,o.useCallback)(e=>!!J&&Y.current===J&&(nj.current(e),!0),[J]),nS=(0,o.useCallback)((e,t)=>{var n;if(!J||Y.current!==J)return!1;let l={...null!=(n=tD.current.get(J))?n:{}};return(void 0===t.content&&void 0===t.structuredContent?delete l[e]:l[e]=t,(0,ew.Yw)(l)>ew.uJ)?(t2.warn("Rejected oversized aggregate MCP App model context",{conversationId:J,appKey:e}),!1):(tD.current.set(J,l),!0)},[J]),[nI,nk]=(0,o.useState)(eS),[nC,nE]=(0,o.useState)(J),nT=(0,o.useRef)(new Set),nN=(0,o.useCallback)((e,t,n)=>{let l="".concat(e,"\0").concat(t);n?K.current.set(l,n):K.current.delete(l)},[]),nD=(0,o.useCallback)((e,t)=>{J&&nN(J,e,t)},[J,nN]),nR=(0,o.useCallback)(e=>{nE(Y.current),nk(t=>{let{state:n}=function(e,t){var n,l,o,r;let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:16,i=eI(t.serverName,t.uri),d=e.entries[i],c={key:i,serverName:t.serverName,uri:t.uri,toolName:null!=(n=t.toolName)?n:null==d?void 0:d.toolName,latestToolArgs:null!=(l=t.toolArgs)?l:null==d?void 0:d.latestToolArgs,latestResultContent:void 0!==t.cancelledReason?void 0:null!=(o=t.resultContent)?o:null==d?void 0:d.latestResultContent,latestToolCancelledReason:void 0!==t.cancelledReason?t.cancelledReason:void 0!==t.resultContent||null==d?void 0:d.latestToolCancelledReason,latestToolIsError:void 0!==t.cancelledReason?void 0:void 0!==t.isError?t.isError:void 0===t.resultContent&&(null==d?void 0:d.latestToolIsError),latestToolUpdateId:null!=(r=t.updateId)?r:null==d?void 0:d.latestToolUpdateId,unread:!1,lastActiveAt:a,updatedAt:a,consent:null==d?void 0:d.consent},u={...e.entries,[i]:c};return ek({entries:u,order:d?e.order:[...e.order,i],activeKey:i},s,i)}(t,e,Date.now(),Number.MAX_SAFE_INTEGER);return n})},[]),nz=(0,o.useCallback)(e=>{nk(t=>(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),l=e.entries[t];if(!l)return e;let o={...l,unread:!1,lastActiveAt:n};return{...e,entries:{...e.entries,[t]:o},activeKey:t}})(t,e))},[]),nM=(0,o.useCallback)(e=>{if(!J)return;let t=K.current.get("".concat(J,"\0").concat(e)),n=()=>{Y.current===J&&nk(t=>eC(t,e))};t?t().finally(n):n()},[J]);(0,o.useEffect)(()=>{nE(J),nk(eS)},[J]);let n_=nI.order.join("|");(0,o.useEffect)(()=>{let e=null==W?void 0:W.messages;if(!e||!W||W.id!==J||nC!==J)return;let t=new Map;for(let n of e)if("assistant"===n.role&&Array.isArray(n.tool_calls))for(let e of n.tool_calls)"function"===e.type&&e.id&&t.set(e.id,e);let n=new Map;for(let o of e){let e=o.ui;if("tool"===o.role&&(null==e?void 0:e.uri)&&(null==e?void 0:e.serverName)&&"string"==typeof o.content){var l;let r="string"==typeof o.tool_call_id?t.get(o.tool_call_id):void 0,a={serverName:e.serverName,uri:e.uri,toolName:null!=(l=e.toolName)?l:(null==r?void 0:r.type)==="function"?r.function.name:void 0,toolArgs:(null==r?void 0:r.type)==="function"?r.function.arguments:void 0,resultContent:o.content,cancelledReason:e.cancelledReason,isError:e.isError,updateId:o.id};n.set("".concat(e.serverName,"::").concat(e.uri),a)}}nk(e=>{let t=e;for(let e of t.order){let l=t.entries[e],o=n.get(e);l&&o&&(o.updateId!==l.latestToolUpdateId||o.toolArgs!==l.latestToolArgs||void 0===o.cancelledReason&&o.resultContent!==l.latestResultContent||o.cancelledReason!==l.latestToolCancelledReason||o.isError!==l.latestToolIsError)&&(t=function(e,t){var n,l,o,r;let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),s=eI(t.serverName,t.uri),i=e.entries[s];if(!i)return e;let d=e.activeKey===s,c={...i,toolName:null!=(n=t.toolName)?n:i.toolName,latestToolArgs:null!=(l=t.toolArgs)?l:i.latestToolArgs,latestResultContent:void 0!==t.cancelledReason?void 0:null!=(o=t.resultContent)?o:i.latestResultContent,latestToolCancelledReason:void 0!==t.cancelledReason?t.cancelledReason:void 0!==t.resultContent?void 0:i.latestToolCancelledReason,latestToolIsError:void 0!==t.cancelledReason?void 0:void 0!==t.isError?t.isError:void 0===t.resultContent&&i.latestToolIsError,latestToolUpdateId:null!=(r=t.updateId)?r:i.latestToolUpdateId,updatedAt:a,unread:!d,lastActiveAt:d?a:i.lastActiveAt};return{...e,entries:{...e.entries,[s]:c}}}(t,o))}return t})},[n_,nC,J,null==W?void 0:W.id,null==W?void 0:W.messages]),(0,o.useEffect)(()=>{var e;if(!J||nC!==J||nI.order.length<=16)return;let{evicted:t}=ek(nI,16,null!=(e=nI.activeKey)?e:void 0);for(let e of t){let t="".concat(J,"\0").concat(e);if(nT.current.has(t))continue;nT.current.add(t),t2.info("Canvas tab cap reached — gracefully evicting (LRU): ".concat(e));let n=K.current.get(t);(n?n():Promise.resolve()).finally(()=>{nT.current.delete(t),Y.current===J&&nk(t=>eC(t,e))})}},[nI,nC,J]);let nO=async(e,t,n)=>{if(!W)return;t2.debug("Editing message",{messageId:e,contentLength:t.length,processNodeId:n});let l=W.messages.findIndex(t=>t.id===e);if(-1===l)return;let o={...W.messages[l],content:t,timestamp:Date.now(),processNodeId:n||void 0},r=[...W.messages.slice(0,l),o],a={...W,messages:r};if(ni(a),a.flowId){let e=tD.current.get(a.id),t={flujo:"true",requireApproval:em?"true":void 0,flujodebug:eD?"true":void 0,conversationId:a.id,processNodeId:n||void 0,mcpAppContexts:void 0===e?void 0:JSON.stringify(e)};if(!tC.current)return;ec(null),en(!0),tk(a.id),er(a.id,!0),tP(a.id,!1),th({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await nf(a.id);try{let e=await ti.g.getFlow(a.flowId);if(!e)throw Error("Flow with ID ".concat(a.flowId," not found"));let n=a.messages.filter(e=>{var t;return!e.disabled&&!((null!=(t=e.depth)?t:0)>0)}).map(e=>{let t=t5(e),n={id:e.id,timestamp:e.timestamp,processNodeId:e.processNodeId};return"user"===e.role?{role:"user",content:t,...n}:"assistant"===e.role?{role:"assistant",content:t,tool_calls:e.tool_calls,...n}:"system"===e.role?{role:"system",content:t,...n}:"tool"===e.role?e.tool_call_id?{role:"tool",content:t,tool_call_id:e.tool_call_id,...n}:{role:"user",content:"string"==typeof t?"Tool result: ".concat(t):t,...n}:{role:"user",content:t,...n}}),l=await tC.current.chat.completions.create({model:"flow-".concat(e.name),messages:n,stream:!1,metadata:(()=>{let e={};return t.flujo&&(e.flujo=t.flujo),t.requireApproval&&(e.requireApproval=t.requireApproval),t.flujodebug&&(e.flujodebug=t.flujodebug),t.conversationId&&(e.conversationId=t.conversationId),t.processNodeId&&(e.processNodeId=t.processNodeId),void 0!==t.mcpAppContexts&&(e.mcpAppContexts=t.mcpAppContexts),e})()}),o={...l,status:l.status||"completed",conversation_id:a.id,messages:l.messages||a.messages,pendingToolCalls:l.pendingToolCalls,debugState:l.debugState,error:l.error,updatedAt:l.updatedAt||Date.now()};nb(o,a.id)}catch(e){t3(e)||tM.current.has(a.id)?(t2.info("Edited-message run cancelled by user",{conversationId:a.id}),tP(a.id,!0)):(t2.error("Error sending edited message:",e),ec(e instanceof Error?e.message:"Failed to send edited message")),er(a.id,!1),tJ.current===a.id&&(en(!1),tk(null),nd())}}},nP=(0,o.useCallback)(e=>{var t,n,l;let o=null==W?void 0:W.messages.find(t=>t.id===e);o&&"user"===o.role&&"string"==typeof o.content&&eY({messageId:e,content:o.content,nodeId:null!=(l=o.processNodeId)?l:null!=(n=null==(t=ne[0])?void 0:t.id)?n:null})},[W,ne]),nF=(0,o.useCallback)(e=>{eY(t=>t?{...t,content:e}:t)},[]),nL=(0,o.useCallback)(e=>{eY(t=>t?{...t,nodeId:e}:t)},[]),nW=(0,o.useCallback)(()=>eY(null),[]),nU=async(e,t,n,l)=>{if(J){t2.info("Handling tool response: ".concat(e),{conversationId:J,toolCallId:t,always:n}),eM(null),en(!0),tk(J),er(J,!0),ec(null),await nf(J);try{let o=await t1.O.respondToToolCall(J,e,t,n,l);t2.debug("Tool response successful",{conversationId:J,action:e,toolCallId:t}),nb(o,J)}catch(l){if(t3(l)||tM.current.has(J)){t2.info("Tool-response resume cancelled by user",{conversationId:J}),tP(J,!0),tJ.current===J&&en(!1),er(J,!1);return}t2.error("Error sending tool response (".concat(e,")"),{conversationId:J,toolCallId:t,err:l});let n="Failed to ".concat(e," tool call.");if(l instanceof t1.b){var o;n+=" Error: ".concat((null==(o=l.body)?void 0:o.error)||l.message)}else l instanceof Error&&(n+=" Error: ".concat(l.message));ec(n),tJ.current===J&&en(!1),er(J,!1)}}},nH=async(e,t)=>{if(J){t2.info("Submitting elicitation form",{conversationId:J,elicitationId:e}),eF(null);try{await fetch("/v1/chat/conversations/".concat(J,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"elicitation-submit",elicitationId:e,content:t})})}catch(t){t2.error("Failed to submit elicitation",{conversationId:J,elicitationId:e,err:t})}}},nq=async e=>{if(J){t2.info("Cancelling elicitation",{conversationId:J,elicitationId:e}),eF(null);try{await fetch("/v1/chat/conversations/".concat(J,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"elicitation-cancel",elicitationId:e})})}catch(t){t2.error("Failed to cancel elicitation",{conversationId:J,elicitationId:e,err:t})}}},nB=async(e,t)=>{if(J){t2.info("Answering question",{conversationId:J,questionId:e}),eW(null);try{await fetch("/v1/chat/conversations/".concat(J,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"question-answer",questionId:e,answers:t})})}catch(t){t2.error("Failed to answer question",{conversationId:J,questionId:e,err:t})}}},nG=async e=>{if(J){t2.info("Declining question",{conversationId:J,questionId:e}),eW(null);try{await fetch("/v1/chat/conversations/".concat(J,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"question-decline",questionId:e})})}catch(t){t2.error("Failed to decline question",{conversationId:J,questionId:e,err:t})}}},nJ=async()=>{if(J&&eK){t2.info("Handling debug step request",{conversationId:J}),en(!0),tk(J),er(J,!0),ec(null),await nf(J);try{let e=await t1.O.debugStep(J);nb(e,J)}catch(e){t2.error("Error during debug step API call",{conversationId:J,err:e}),ec(e instanceof Error?e.message:"Failed to execute debug step."),en(!1),er(J,!1),eQ(!1),eZ(null)}finally{}}},nV=async()=>{if(J&&eK){t2.info("Handling debug continue request",{conversationId:J}),en(!0),tk(J),er(J,!0),ec(null),eQ(!1),await nf(J);try{let e=await t1.O.debugContinue(J);nb(e,J)}catch(e){t2.error("Error during debug continue API call",{conversationId:J,err:e}),ec(e instanceof Error?e.message:"Failed to continue execution."),en(!1),er(J,!1)}finally{}}};(0,o.useEffect)(()=>{if(eX){var e;tS(null!=(e=eX.breakpoints)?e:[])}},[eX]);let nY=(0,o.useCallback)(async e=>{if(!J)return;let t=tA.includes(e)?tA.filter(t=>t!==e):[...tA,e];tS(t);try{await t1.O.setBreakpoints(J,t)}catch(e){t2.error("Failed to update breakpoints",{conversationId:J,err:e}),tS(tA)}},[tA,J]),nK=(0,o.useCallback)(async()=>{if(J){t2.info("Attaching debugger to running conversation",{conversationId:J});try{await t1.O.setBreakpoints(J,["*"])}catch(e){t2.error("Failed to attach debugger",{conversationId:J,err:e}),ec(e instanceof Error?e.message:"Failed to attach debugger.")}}},[J]),nQ=async()=>{if(!J||!eK)return;let e=null==eX?void 0:eX.currentNodeId;en(!0),tk(J),er(J,!0),ec(null),await nf(J);try{for(let o=0;o<50;o++){var t,n,l;let o=await t1.O.debugStep(J),r=null!=(l=null==o?void 0:o.status)?l:null==o||null==(t=o.debugState)?void 0:t.status,a=null==o||null==(n=o.debugState)?void 0:n.currentNodeId;if("paused_debug"!==r||a&&a!==e)return void nb(o,J)}t2.warn("Step Over hit iteration cap",{conversationId:J}),en(!1),er(J,!1)}catch(e){t2.error("Error during step over",{conversationId:J,err:e}),ec(e instanceof Error?e.message:"Failed to step over."),en(!1),er(J,!1)}},nX=async()=>{if(J){t2.info("Cancelling request",{conversationId:J}),ny(),en(!1),tk(null),er(J,!1),tP(J,!0),e2(!1),nd(),eM(null),ec(null);try{await t1.O.cancel(J),t2.debug("Cancel request sent successfully",{conversationId:J}),await tY(J)}catch(e){t2.error("Error sending cancel request",{conversationId:J,err:e}),ec("Failed to send cancel request to the server.")}}},nZ=async e=>{if(e===J)return void await nX();t2.info("Stopping background conversation",{conversationId:e}),tP(e,!0);try{await t1.O.cancel(e),er(e,!1),await tV(void 0,{silent:!0})}catch(t){t2.error("Error stopping background conversation",{conversationId:e,err:t}),ec("Failed to send cancel request to the server.")}},n$=async()=>{t2.info("Closing debugger panel",{conversationId:J}),eQ(!1),eZ(null),e2(!1),await nX()};t2.debug("Rendering Chat component",{currentConversationId:J,isHandleEditMessageDefined:!0});let n0=(e$||eK)&&!!eX&&!!J,n1=(null==t8?void 0:t8.status)==="awaiting_tool_approval"||!!ez,n2=!(n1||(null==t8?void 0:t8.status)==="paused_debug")&&(et&&tI===J||!!J&&el.has(J)||(null==t8?void 0:t8.status)==="running"),n5=!n2&&!!J&&t_.has(J);return(0,o.useEffect)(()=>{if(!J||ei.current||!W||W.id!==J)return;let e=eE(ea,J)[0];if(!e||!function(e){return!e.running&&!e.pendingApproval&&!e.debugPaused&&!e.hasError&&!e.stopped}({running:el.has(J),pendingApproval:!!ez,debugPaused:eK,hasError:(null==t8?void 0:t8.status)==="error",stopped:n5}))return;ei.current=!0;let t=setTimeout(async()=>{try{es(t=>eN(t,J,e.id)),await nv(e.content,e.attachments,{fromQueue:!0,nodeOverride:e.nodeOverride,queuedId:e.id})}catch(t){es(t=>(function(e,t,n){let l=eE(e,t).filter(e=>e.id!==n.id);return{...e,[t]:[n,...l]}})(t,J,e))}finally{ei.current=!1}},0);return()=>clearTimeout(t)},[J,W,ea,el,ez,eK,null==t8?void 0:t8.status,n5]),(0,l.jsxs)(s.default,{sx:{display:"flex",height:"calc(100vh - 64px)"},children:[ta&&(0,l.jsx)(s.default,{sx:{width:40,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",justifyContent:"center",pt:1},children:(0,l.jsx)(i.A,{title:"Show conversation sidebar",children:(0,l.jsx)(d.A,{size:"small",onClick:td,"aria-label":"Show conversation sidebar",children:(0,l.jsx)(E.A,{fontSize:"small"})})})}),!ta&&(0,l.jsx)(s.default,{sx:{width:to,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",flexDirection:"column"},children:O?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",p:2},children:(0,l.jsx)(tX.default,{size:"medium",color:"primary"})}):F?(0,l.jsx)(c.A,{severity:"error",sx:{m:2},children:F}):(0,l.jsx)(eu,{conversations:M,flowNames:t7,currentConversationId:J,onSelectConversation:X,onDeleteConversation:np,onBulkDelete:nh,onStopConversation:nZ,onNewConversation:nl,onQuickChat:()=>na(!0),onCollapse:td})}),!ta&&(0,l.jsx)(s.default,{onPointerDown:tc,sx:{width:"6px",flexShrink:0,cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":"Resize conversation sidebar"}),(0,l.jsxs)(s.default,{sx:{flex:1,height:"100%",display:"flex",minWidth:0,minHeight:0},children:[(0,l.jsxs)(s.default,{sx:{flex:1,minWidth:0,display:"flex",flexDirection:"column",height:"100%"},children:[J&&(0,l.jsx)(s.default,{sx:{px:2,pt:2,pb:1,display:"flex",alignItems:"center",gap:1,minWidth:0},children:ev?(0,l.jsx)(u.A,{value:ey,onChange:e=>ej(e.target.value),onBlur:nx,onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),nx()):"Escape"===e.key&&eb(!1)},size:"small",autoFocus:!0,fullWidth:!0,inputProps:{maxLength:200,"aria-label":"Conversation title"}}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(f.default,{variant:"h6",noWrap:!0,onClick:nm,title:(null==W?void 0:W.title)||(null==t8?void 0:t8.title)||"",sx:{flex:1,minWidth:0,cursor:"text"},children:(null==W?void 0:W.title)||(null==t8?void 0:t8.title)||"Untitled Conversation"}),(0,l.jsx)(i.A,{title:"Rename conversation",children:(0,l.jsx)(d.A,{size:"small",onClick:nm,"aria-label":"Rename conversation",children:(0,l.jsx)(T.A,{fontSize:"small"})})}),(0,l.jsx)(i.A,{title:e8?"Hide executed steps":"Show executed steps",children:(0,l.jsx)(d.A,{size:"small",color:e8?"primary":"default",onClick:()=>e7(e=>!e),"aria-label":"Toggle executed steps panel",children:(0,l.jsx)(D.A,{fontSize:"small"})})})]})}),J&&(0,l.jsxs)(s.default,{sx:{p:2,borderBottom:1,borderColor:"divider",display:"flex",alignItems:"center",gap:2},children:[(0,l.jsx)(s.default,{sx:{flex:1,minWidth:0},children:$((null==t8?void 0:t8.flowId)||(null==W?void 0:W.flowId))?(0,l.jsx)(p.A,{color:"primary",variant:"outlined",icon:(0,l.jsx)(A.A,{}),label:"Quick Chat"}):(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"flex-start",gap:.5},children:[(0,l.jsx)(e1.A,{selectedFlowId:(null==t8?void 0:t8.flowId)||(null==W?void 0:W.flowId)||null,onSelectFlow:e=>{var t,n,l,o;if(!J){t2.warn("Cannot update flow: No conversation selected."),ec("Please select a conversation first.");return}$(e)||ee(e);let r=null!=(l=null!=(n=null==W?void 0:W.flowId)?n:null==t8?void 0:t8.flowId)?l:null;if((null!=(o=null==W||null==(t=W.messages)?void 0:t.length)?o:0)>0&&r&&e!==r){t2.debug("Flow switch on executed conversation — asking for confirmation",{flowId:e,currentFlowId:r}),eq(e);return}ng(e)},disabled:eK}),(()=>{let e=(null==t8?void 0:t8.flowId)||(null==W?void 0:W.flowId)||null;return e?(0,l.jsx)(i.A,{title:"Open this flow in the FlowBuilder",children:(0,l.jsx)(d.A,{color:"primary",onClick:()=>r.push("/flows?flow=".concat(encodeURIComponent(e))),children:(0,l.jsx)(N.A,{})})}):null})()]})}),(0,l.jsx)(e0,{usage:null==W?void 0:W.usage,contextInfo:null==W?void 0:W.contextInfo,availableNodes:ne})]}),(0,l.jsxs)(s.default,{sx:{flex:1,minHeight:0,position:"relative",display:"flex",flexDirection:"column"},children:[(0,l.jsx)(s.default,{ref:tF,onScroll:tq,sx:{flex:1,overflow:"auto",p:2},children:H?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,l.jsx)(tX.default,{size:"medium",color:"primary"})}):B?(0,l.jsx)(c.A,{severity:"error",sx:{m:2},children:B}):W?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ef.A,{messages:W.messages,pendingToolCalls:ez,pendingElicitation:e_,availableNodes:ne,conversationId:W.id,editingMessageId:null!=(t=null==eV?void 0:eV.messageId)?t:null,onToggleDisabled:e=>{if(!W)return;t2.debug("Toggling message disabled state",{messageId:e});let t=W.messages.map(t=>t.id===e?{...t,disabled:!t.disabled}:t);ni({...W,messages:t})},onSplitConversation:e=>{if(!W)return;t2.debug("Splitting conversation at message",{messageId:e});let t=W.messages.findIndex(t=>t.id===e);if(-1===t)return;let n=W.messages.slice(0,t+1),l=(0,tZ.A)(),o={id:l,title:"Split from ".concat(W.title),messages:n,flowId:W.flowId,createdAt:Date.now(),updatedAt:Date.now()},r={id:l,title:o.title,flowId:o.flowId,createdAt:o.createdAt,updatedAt:o.updatedAt};tR.current.add(l),_(e=>[r,...e].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),X(l),U(o),q(!1),G(null)},onBeginEditMessage:nP,onApproveToolCall:(e,t)=>{nU("approve",e,t)},onRejectToolCall:(e,t,n)=>{nU("reject",e,t,n)},onSubmitElicitation:nH,onCancelElicitation:nq,pendingQuestion:eL,onAnswerQuestion:nB,onDeclineQuestion:nG,onAppMessage:nA,onUpdateModelContext:nS,onRegisterAppTeardown:nD,onOpenInCanvas:nR,queuedMessages:eE(ea,W.id),queueHoldReason:function(e){return e.stopped?"Held — you stopped this run. Send again to continue.":e.hasError?"Held — the last run failed. Retry or send again to continue.":e.pendingApproval?"Held — waiting for tool approval.":e.debugPaused?"Held — paused in the debugger.":null}({running:el.has(W.id),pendingApproval:!!ez,debugPaused:eK,hasError:(null==t8?void 0:t8.status)==="error",stopped:n5})}),!et&&!eK&&W.messages.length>0&&(null==t8?void 0:t8.status)==="completed"&&(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(c.A,{icon:(0,l.jsx)(I.A,{fontSize:"inherit"}),severity:"success",variant:"filled",sx:{borderRadius:2,py:.5},children:"Conversation completed"})}),!et&&!eK&&n5&&(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(c.A,{icon:(0,l.jsx)(C.A,{fontSize:"inherit"}),severity:"info",variant:"outlined",sx:{borderRadius:2,py:.5,alignItems:"center"},action:(0,l.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,l.jsx)(S.A,{}),onClick:()=>nw(W),children:"Resume"}),children:"Conversation stopped"})}),!et&&!eK&&!ed&&!n5&&(null==t8?void 0:t8.status)==="error"&&(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(c.A,{icon:(0,l.jsx)(k.A,{fontSize:"inherit"}),severity:"error",variant:"filled",sx:{borderRadius:2,py:.5,alignItems:"center"},action:(0,l.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,l.jsx)(S.A,{}),onClick:()=>{nw(W)},children:"Retry"}),children:"Conversation ended with an error"})}),n2&&tb.length>0&&(0,l.jsx)(eG,{todos:tb}),n2&&!eK&&(0,l.jsx)(eU,{liveStats:tp,lanes:tx,onOpenLane:X,onStop:nX,stopDisabled:!J,onAttachDebugger:et&&tI===J&&!e$?nK:void 0}),!n2&&n1&&!eK&&(0,l.jsx)(eU,{liveStats:tp,lanes:tx,onOpenLane:X,awaitingApproval:!0,onStop:nX,stopDisabled:!J}),ed&&(0,l.jsx)(c.A,{severity:"error",sx:{mt:2},action:(0,l.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,l.jsx)(S.A,{}),onClick:()=>{W&&nw(W)},children:"Retry"}),children:ed})]}):(0,l.jsx)(f.default,{variant:"body1",color:"textSecondary",align:"center",sx:{mt:4},children:M.length>0?"Select a conversation or create a new one.":"Create a new conversation to start chatting."})}),(0,l.jsx)(g.A,{in:tW,unmountOnExit:!0,children:(0,l.jsx)(m.A,{size:"small",color:"primary","aria-label":"Scroll to latest messages",onClick:tB,sx:{position:"absolute",bottom:16,right:24,zIndex:2},children:(0,l.jsx)(j.A,{})})})]}),J&&(0,l.jsx)(eA,{conversationId:J,entries:nC===J?function(e){return e.order.map(t=>e.entries[t]).filter(e=>!!e)}(nI):[],activeKey:nI.activeKey,onSelectTab:nz,onCloseTab:nM,onAppMessage:nA,onUpdateModelContext:nS,onRegisterTeardown:nN},J),(0,l.jsxs)(s.default,{sx:{p:2,borderTop:1,borderColor:"divider"},children:[J&&eE(ea,J).length>0&&(0,l.jsxs)(s.default,{"data-testid":"queued-messages",sx:{mb:1,display:"flex",flexWrap:"wrap",gap:1,alignItems:"center"},children:[(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,l.jsx)(R.A,{fontSize:"inherit"})," Queued:"]}),eE(ea,J).map(e=>(0,l.jsx)(p.A,{size:"small",variant:"outlined",label:e.content.trim().slice(0,40)||(e.attachments.length?"".concat(e.attachments.length," attachment(s)"):"message"),onDelete:()=>es(t=>eN(t,J,e.id))},e.id))]}),(0,l.jsx)(ep.A,{onSendMessage:nv,disabled:H||!((null==W?void 0:W.flowId)||(null==t8?void 0:t8.flowId))||!!ez||eK,requireApproval:em,onRequireApprovalChange:t4,executeInDebugger:eD,onExecuteInDebuggerChange:eR,availableNodes:ne,flow:t9,currentNodeId:nn,nodeOverrideActive:!!eB,onSelectNode:eJ,editing:eV,onEditingContentChange:nF,onEditingNodeChange:nL,onSaveEdit:()=>{eV&&eV.content.trim()&&(nO(eV.messageId,eV.content,eV.nodeId||""),eY(null))},onCancelEdit:nW})]})]})," ",e8&&J&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.default,{onPointerDown:tn,sx:{width:"6px",flexShrink:0,cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":"Resize executed steps panel"}),(0,l.jsx)(s.default,{sx:{width:"".concat(te,"px"),minWidth:240,maxWidth:"70vw",flexShrink:0,display:"flex",flexDirection:"column",height:"100%"},children:(0,l.jsx)(tK,{flowId:(null==W?void 0:W.flowId)||(null==t8?void 0:t8.flowId)||null,flowSnapshot:null!=(n=null==eX?void 0:eX.flowSnapshot)?n:null,executedNodeIds:nt,liveActivity:tg,onClose:()=>e7(!1)})})]}),n0&&eX&&J&&!e3&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.default,{onPointerDown:tl,sx:{width:"6px",flexShrink:0,cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":"Resize debugger panel"}),(0,l.jsx)(s.default,{sx:{width:e5?"".concat(e5,"px"):"50%",minWidth:360,maxWidth:"85vw",flexShrink:0,display:"flex",flexDirection:"column",height:"100%"},children:(0,l.jsx)(tG,{debugState:eX,conversationId:J,liveActivity:tg,onStep:nJ,onStepOver:nQ,onContinue:nV,onCancel:nX,isLoading:et,breakpoints:tA,onToggleBreakpoint:nY,onClose:n$,isExpanded:e3,onToggleExpand:()=>e4(e=>!e)})})]})]})," ",n0&&eX&&J&&e3&&(0,l.jsx)(x.A,{fullScreen:!0,open:!0,onClose:()=>e4(!1),children:(0,l.jsx)(s.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,l.jsx)(tG,{debugState:eX,conversationId:J,liveActivity:tg,onStep:nJ,onStepOver:nQ,onContinue:nV,onCancel:nX,isLoading:et,breakpoints:tA,onToggleBreakpoint:nY,onClose:n$,isExpanded:e3,onToggleExpand:()=>e4(e=>!e)})})}),(0,l.jsxs)(x.A,{open:!!eH,onClose:()=>eq(null),children:[(0,l.jsx)(v.A,{children:"Switch flow?"}),(0,l.jsx)(b.A,{children:(0,l.jsxs)(y.A,{children:["This conversation has already been processed with its current flow."," ","If you switch to"," ",(0,l.jsx)("strong",{children:(null==(e=eh.find(e=>e.id===eH))?void 0:e.name)||"the selected flow"}),","," ","the conversation will continue processing from that flow's Start node again."]})}),(0,l.jsxs)(w.A,{children:[(0,l.jsx)(h.A,{onClick:()=>eq(null),children:"Cancel"}),(0,l.jsx)(h.A,{variant:"contained",onClick:()=>{eq(null),eH&&ng(eH)},children:"Switch Flow"})]})]}),(0,l.jsx)(e9,{open:nr,onClose:()=>na(!1),onStart:ns})]})},t8=(0,e8.h)("frontend/components/ClientOnly");function t7(e){let{children:t}=e,[n,r]=(0,o.useState)(!1);return((0,o.useEffect)(()=>(t8.debug("ClientOnly component mounted"),r(!0),()=>{t8.debug("ClientOnly component unmounted")}),[]),n)?(t8.debug("ClientOnly component rendering children"),(0,l.jsx)(l.Fragment,{children:t})):(t8.debug("ClientOnly component rendering null (not yet mounted)"),null)}let t9=(0,e8.h)("app/chat/page");function ne(){return t9.debug("Rendering ChatPage"),(0,l.jsx)(r.A,{maxWidth:!1,disableGutters:!0,children:(0,l.jsx)(t7,{children:(0,l.jsx)(t4,{})})})}},75870:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var l=n(95155),o=n(12115),r=n(94049),a=n(25635),s=n(4474),i=n(91871),d=n(56900),c=n(90057),u=n(96362),f=n(9226),p=n(68503);let h=e=>{let{selectedFlowId:t,onSelectFlow:n,disabled:h=!1,hideLabel:g=!1}=e,[m,x]=(0,o.useState)([]),[v,b]=(0,o.useState)(!0),[y,w]=(0,o.useState)(null),[j,A]=(0,o.useState)(!1);(0,o.useEffect)(()=>{(async()=>{b(!0),w(null);try{let e=await c.g.loadFlows();x(e)}catch(e){console.error("Error loading flows:",e),w("Failed to load flows")}finally{b(!1)}})()},[]);let S=e=>{n(e),A(!1)},I=async e=>{let t=m.find(t=>t.id===e);if(!t)return;let n=!t.favorite,l={...t,favorite:n||void 0};try{(await c.g.updateFlow(l)).success&&x(t=>t.map(t=>t.id===e?l:t))}catch(e){console.error("Error toggling flow favorite:",e)}},k=(0,p.E)("flows",m),C=e=>({key:e.id,content:(e=>(0,l.jsx)(f.A,{flow:e,selected:e.id===t,onSelect:S,onToggleFavorite:I,pickerMode:!0}))(e)}),E=k.items.map(C),T=k.groups?k.groups.map(e=>({...e,items:e.items.map(C)})):null,N=(()=>{if(!t)return"";let e=m.find(e=>e.id===t);return e?e.name:""})();return(0,l.jsxs)(r.default,{children:[!g&&(0,l.jsx)(a.default,{variant:"subtitle1",gutterBottom:!0,children:"Select Flow"}),v?(0,l.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(s.default,{size:20}),(0,l.jsx)(a.default,{variant:"body2",color:"text.secondary",children:"Loading flows..."})]}):y?(0,l.jsx)(a.default,{color:"error",variant:"body2",children:y}):0===m.length?(0,l.jsx)(a.default,{variant:"body2",color:"text.secondary",children:"No flows available. Create some flows in the Flow Builder first."}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.A,{variant:"outlined",startIcon:(0,l.jsx)(d.A,{}),onClick:()=>A(!0),disabled:h,sx:{textTransform:"none",maxWidth:"100%"},children:(0,l.jsx)(r.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t&&N||"Select a flow"})}),(0,l.jsx)(a.default,{variant:"caption",color:"text.secondary",display:"block",sx:{mt:.5},children:t?'Using "'.concat(N,'" flow for this conversation'):"Select a flow to use for this conversation"}),(0,l.jsx)(u.A,{open:j,onClose:()=>A(!1),title:"Select a flow",description:"Pick the flow this conversation will run.",skeleton:(0,l.jsx)(f.o,{}),emptyMessage:"No flows available. Create some flows in the Flow Builder first.",searchable:!0,searchPlaceholder:"Search flows…",searchTerm:k.searchTerm,onSearchChange:k.setSearchTerm,items:E,groups:T,collapsedKeys:k.collapsedKeys,onToggleGroup:k.toggleGroup})]})]})}},79415:(e,t,n)=>{Promise.resolve().then(n.bind(n,69645))},81956:(e,t,n)=>{"use strict";n.d(t,{A:()=>y});var l=n(95155),o=n(12115),r=n(36314),a=n(86973),s=n(49501),i=n(17681),d=n(21067),c=n(2778),u=n(52363),f=n(65036),p=n(9562),h=n(75912),g=n(91871),m=n(9693),x=n(91665),v=n(7517),b=n(8190);let y=e=>{let{anchorEl:t,open:n,currentFolder:y,folders:w,onClose:j,onAssign:A}=e,[S,I]=(0,o.useState)(!1),[k,C]=(0,o.useState)(""),E=e=>{A(e),j()},T=()=>{let e=k.trim();e&&(I(!1),E(e))};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(r.A,{anchorEl:t,open:n,onClose:j,children:[w.length>0&&w.map(e=>(0,l.jsxs)(a.A,{onClick:()=>E(e),selected:e===y,children:[(0,l.jsx)(s.A,{children:e===y?(0,l.jsx)(m.A,{fontSize:"small"}):(0,l.jsx)(x.A,{fontSize:"small"})}),(0,l.jsx)(i.A,{primary:e})]},e)),w.length>0&&(0,l.jsx)(d.A,{}),(0,l.jsxs)(a.A,{onClick:()=>{C(""),I(!0)},children:[(0,l.jsx)(s.A,{children:(0,l.jsx)(v.A,{fontSize:"small"})}),(0,l.jsx)(i.A,{primary:"New folder…"})]}),y&&(0,l.jsxs)(a.A,{onClick:()=>E(void 0),children:[(0,l.jsx)(s.A,{children:(0,l.jsx)(b.A,{fontSize:"small"})}),(0,l.jsx)(i.A,{primary:"Remove from folder"})]})]}),(0,l.jsxs)(c.A,{open:S,onClose:()=>I(!1),maxWidth:"xs",fullWidth:!0,children:[(0,l.jsx)(u.A,{children:"New folder"}),(0,l.jsx)(f.A,{children:(0,l.jsx)(p.A,{autoFocus:!0,margin:"dense",label:"Folder name",fullWidth:!0,value:k,onChange:e=>C(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),T())}})}),(0,l.jsxs)(h.A,{children:[(0,l.jsx)(g.A,{onClick:()=>I(!1),children:"Cancel"}),(0,l.jsx)(g.A,{variant:"contained",disabled:!k.trim(),onClick:T,children:"Create"})]})]})]})}},97104:(e,t,n)=>{"use strict";n.d(t,{Aq:()=>o,Xk:()=>a,vi:()=>r});var l=n(12115);function o(e,t){try{let n=window.localStorage.getItem(e);if(null===n)return t;return JSON.parse(n)}catch(e){return t}}function r(e,t){try{window.localStorage.setItem(e,JSON.stringify(t))}catch(e){}}function a(e,t){let[n,a]=(0,l.useState)(()=>o(e,t));return[n,(0,l.useCallback)(t=>{a(n=>{let l="function"==typeof t?t(n):t;return r(e,l),l})},[e])]}}},e=>{e.O(0,[3862,2678,4754,9244,3392,1871,981,2003,9562,488,3272,3077,8470,9581,3659,7328,6404,8551,1675,6428,5418,4555,4386,5733,9345,3772,8404,8650,6733,8441,1255,7358],()=>e(e.s=79415)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8457],{22573:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var l=n(95155);n(12115);var o=n(33567),r=n(94049),a=n(41983),s=n(25635),i=n(28548),d=n(50430),c=n(63186),u=n(91665);let f=e=>{let{label:t,count:n,expanded:f,onToggle:p,showFolderIcon:h=!1,children:g}=e,m=(0,o.A)();return(0,l.jsxs)(r.default,{sx:{mb:1.5},children:[(0,l.jsxs)(r.default,{role:"button",tabIndex:0,"aria-expanded":f,onClick:p,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),p())},sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.75,borderRadius:1,cursor:"pointer",userSelect:"none",backgroundColor:m.palette.background.default,border:"1px solid ".concat(m.palette.divider),"&:hover":{backgroundColor:m.palette.action.hover}},children:[(0,l.jsx)(a.A,{size:"small","aria-label":f?"Collapse section":"Expand section",onClick:e=>{e.stopPropagation(),p()},sx:{transition:"transform 0.2s",transform:f?"rotate(0deg)":"rotate(-90deg)"},children:(0,l.jsx)(c.A,{fontSize:"small"})}),h&&(0,l.jsx)(u.A,{fontSize:"small",sx:{color:"text.secondary"}}),(0,l.jsx)(s.default,{variant:"subtitle2",sx:{fontWeight:600},children:t}),(0,l.jsx)(i.A,{label:n,size:"small",sx:{height:20,fontSize:"0.7rem"}})]}),(0,l.jsx)(d.A,{in:f,unmountOnExit:!0,children:(0,l.jsx)(r.default,{sx:{pt:1.5},children:g})})]})}},27156:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var l=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",e.ENCRYPTION_KEY="encryption_key",e.MCP_SERVERS="mcp_servers",e.GLOBAL_ENV_VARS="global_env_vars",e.CURRENT_CONVERSATION_ID="current_conversation_id",e.SELECTED_FLOW_ID="selected_flow_id",e.LAST_PICKED_FLOW_ID="last_picked_flow_id",e.SPEECH_SETTINGS="speech_settings",e.SPOTLIGHT_SERVERS="spotlight_servers",e.PLANNED_EXECUTIONS="planned_executions",e.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",e.MCP_QUALITY_SETTINGS="mcp_quality_settings",e.RUN_RESOURCE_SETTINGS="run_resource_settings",e.KV_STORE_SETTINGS="kv_store_settings",e.PENDING_APPROVALS="pending_approvals",e.MCP_INTERNAL_OVERRIDES="mcp_internal_overrides",e.PACKAGE_INSTALLS="package_installs",e.EXPERIMENTAL_SETTINGS="experimental_settings",e.REGISTRY_ACCOUNT="registry_account",e.REGISTRY_SETTINGS="registry_settings",e.TELEMETRY_STATE="telemetry_state",e}({})},29692:(e,t,n)=>{"use strict";n.d(t,{Zg:()=>l.Z,YM:()=>i,VH:()=>s,Mj:()=>a});var l=n(27156),o=n(12115);let r=(0,n(87021).h)("utils/storage/frontend.ts");function a(e,t){r.verbose("useLocalStorage: Entering method");let[n,l]=(0,o.useState)(t),[a,s]=(0,o.useState)(!0),i=(0,o.useRef)(n);return(0,o.useEffect)(()=>{i.current=n},[n]),(0,o.useEffect)(()=>{(async()=>{r.verbose("loadValue: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),o=await n.json();n.ok&&l(o.value)}catch(t){r.warn('Error reading storage key "'.concat(e,'":'),t)}finally{s(!1)}})()},[e]),[n,(0,o.useCallback)(async t=>{r.verbose("setValue: Entering method");try{let n=t instanceof Function?t(i.current):t;if(l(n),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:n})})).ok)throw Error("Failed to save value")}catch(t){r.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),a]}let s=async(e,t)=>{r.verbose("saveItem: Entering method");try{if(!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).ok)throw Error("Failed to save item")}catch(e){throw r.error("Error saving to storage:",e),e}},i=async(e,t)=>{r.verbose("loadItem: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!n.ok)throw Error("Failed to load item");return(await n.json()).value}catch(e){return r.error("Error loading from storage:",e),t}}},38459:(e,t,n)=>{"use strict";n.d(t,{Az:()=>o,FM:()=>l,Je:()=>a,po:()=>r,yF:()=>s});let l="folder";function o(e,t){let n=[],l=new Map;for(let o of e){let{key:e,label:r}=t(o),a=l.get(e);a||(a={key:e,label:r,items:[]},l.set(e,a),n.push(a)),a.items.push(o)}return n}function r(e){let t=(null!=e?e:"").trim().charAt(0).toUpperCase();return t>="A"&&t<="Z"?{key:"letter:".concat(t),label:t}:{key:"letter:#",label:"#"}}function a(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Ungrouped",l=new Map,o=[];for(let n of e){var r;let e=null==(r=t(n))?void 0:r.trim();if(e){let t=l.get(e);t?t.push(n):l.set(e,[n])}else o.push(n)}let a=Array.from(l.keys()).sort((e,t)=>e.localeCompare(t)).map(e=>({key:"folder:".concat(e),label:e,items:l.get(e)}));return o.length>0&&a.push({key:"folder:__ungrouped__",label:n,items:o}),a}function s(e,t){let n=new Set;for(let o of e){var l;let e=null==(l=t(o))?void 0:l.trim();e&&n.add(e)}return Array.from(n).sort((e,t)=>e.localeCompare(t))}},65818:(e,t,n)=>{"use strict";n.d(t,{mO:()=>r,oO:()=>a});var l=n(38459);let o=["stdio","websocket","sse","streamable"];function r(e,t){switch(t){case"name-asc":case"name-desc":return(0,l.po)(e.name);case"status-connected":case"status-disconnected":{let t=e.status;if("connected"===t)return{key:"status:connected",label:"Connected"};if("error"===t)return{key:"status:error",label:"Error"};if("requires_authentication"===t)return{key:"status:auth",label:"Requires authentication"};return{key:"status:disconnected",label:"Disconnected"}}case"transport":{let t=e.transport||"unknown";return{key:"transport:".concat(t),label:({stdio:"Stdio",websocket:"WebSocket",sse:"SSE",streamable:"Streamable HTTP"})[t]||t}}default:return{key:"all",label:"All servers"}}}function a(e,t){let n=(e,n)=>{switch(t){case"name-asc":return e.name.localeCompare(n.name);case"name-desc":return n.name.localeCompare(e.name);case"status-connected":if("connected"===e.status&&"connected"!==n.status)return -1;if("connected"!==e.status&&"connected"===n.status)return 1;return e.name.localeCompare(n.name);case"status-disconnected":if("disconnected"===e.status&&"disconnected"!==n.status)return -1;if("disconnected"!==e.status&&"disconnected"===n.status)return 1;return e.name.localeCompare(n.name);case"transport":{var l,r;let t=o.indexOf(null!=(l=e.transport)?l:""),a=o.indexOf(null!=(r=n.transport)?r:"");if(t!==a)return t-a;return e.name.localeCompare(n.name)}default:return 0}};return[...e].sort((e,t)=>{let l=Number(!!t.favorite)-Number(!!e.favorite);return 0!==l?l:n(e,t)})}},69645:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>ne});var l=n(95155),o=n(12115),r=n(97322),a=n(20063),s=n(94049),i=n(78470),d=n(41983),c=n(22003),u=n(9562),f=n(25635),p=n(28548),h=n(91871),g=n(3339),m=n(67895),x=n(2778),v=n(52363),b=n(65036),y=n(50001),w=n(75912),j=n(22719),A=n(11096),S=n(76530),I=n(36741),k=n(60691),C=n(47419),E=n(78410),T=n(14915),N=n(55930),D=n(56900),R=n(26922),z=n(29692),_=n(23820),M=n(73707),O=n(17681),P=n(21067),F=n(56422),L=n(52641),W=n(55606),U=n(86973),H=n(41602),q=n(50430),B=n(4484),G=n(86946),J=n(19219),V=n(51611),Y=n(12140),K=n(63186),Q=n(62962),X=n(51331),Z=n(97736);function $(e){return"string"==typeof e&&e.startsWith("quickchat-")}n(77890);var ee=n(88377),et=n(38459);let en="wave:__adhoc__",el="wave:__archived__";var eo=n(97104);function er(e){let{nodes:t,childrenByParent:n,renderItem:o,expanded:r,onToggle:a,depth:i=0,visited:c,maxDepth:u=20}=e;if(!t||0===t.length||i>u)return null;let f=null!=c?c:new Set;return(0,l.jsx)(l.Fragment,{children:t.map(e=>{var t;if(f.has(e.id))return null;let c=null!=(t=n.get(e.id))?t:[],p=c.length>0&&i<u,h=!1!==r[e.id],g=new Set(f);return g.add(e.id),(0,l.jsxs)(s.default,{sx:{pl:1.5*(i>0),borderLeft:i>0?"1px dashed rgba(128,128,128,0.35)":"none"},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"flex-start"},children:[p?(0,l.jsx)(d.A,{size:"small",onClick:()=>a(e.id),"aria-label":h?"Collapse chain":"Expand chain",sx:{mt:.5,flexShrink:0},children:h?(0,l.jsx)(Q.A,{fontSize:"small"}):(0,l.jsx)(K.A,{fontSize:"small"})}):(0,l.jsx)(s.default,{sx:{width:34,flexShrink:0}}),(0,l.jsx)(s.default,{sx:{flex:1,minWidth:0},children:o(e,i)})]}),p&&(0,l.jsx)(q.A,{in:h,timeout:"auto",unmountOnExit:!0,children:(0,l.jsx)(er,{nodes:c,childrenByParent:n,renderItem:o,expanded:r,onToggle:a,depth:i+1,visited:g,maxDepth:u})})]},e.id)})})}function ea(e){var t,n;let l=new Map;for(let t of e)l.set(t.id,t);let o=new Map,r=[],a=e=>e.parentConversationId&&e.parentConversationId!==e.id?e.parentConversationId:null;for(let n of e){let e=a(n);if(e&&l.has(e)){let l=null!=(t=o.get(e))?t:[];l.push(n),o.set(e,l)}else r.push(n)}let s=new Set,i=[...r];for(;i.length;){let e=i.pop();if(!s.has(e.id))for(let t of(s.add(e.id),null!=(n=o.get(e.id))?n:[]))i.push(t)}let d=new Set(r.map(e=>e.id));for(let t of e)s.has(t.id)||d.has(t.id)||(r.push(t),d.add(t.id));return{roots:r,childrenByParent:o}}let es={group:"flujo-ui:chat-sidebar:group",status:"flujo-ui:chat-sidebar:status",flow:"flujo-ui:chat-sidebar:flow",date:"flujo-ui:chat-sidebar:date",collapsed:"flujo-ui:chat-sidebar:collapsed",searchDim:"flujo-ui:chat-sidebar:search-dim"},ei=[{value:"all",label:"Any status"},{value:"running",label:"Processing"},{value:"awaiting_tool_approval",label:"Awaiting approval"},{value:"paused_debug",label:"Paused (debug)"},{value:"completed",label:"Completed"},{value:"error",label:"Error"}],ed=[{value:"all",label:"Any time"},{value:"today",label:"Last 24h"},{value:"7d",label:"Last 7 days"},{value:"30d",label:"Last 30 days"}],ec=[{value:"none",label:"No grouping"},{value:"date",label:"Group by date"},{value:"flow",label:"Group by flow"},{value:"wave",label:"Group by wave"},{value:"chain",label:"Group by chain"}],eu=e=>{let{conversations:t,currentConversationId:n,onSelectConversation:r,onDeleteConversation:a,onBulkDelete:c,onStopConversation:g,onNewConversation:m,onQuickChat:j,onCollapse:S,flowNames:I={}}=e,[k,E]=o.useState(""),[T,N]=o.useState({open:!1,ids:[],label:""}),[D,R]=(0,eo.Xk)(es.searchDim,"title"),[z,eu]=o.useState(null),[ef,ep]=(0,eo.Xk)(es.group,"none"),[eh,eg]=(0,eo.Xk)(es.status,"all"),[em,ex]=(0,eo.Xk)(es.flow,"all"),[ev,eb]=(0,eo.Xk)(es.date,"all"),[ey,ew]=(0,eo.Xk)(es.collapsed,{}),[ej,eA]=o.useState(null);o.useEffect(()=>{if("wave"!==ef)return;let e=!1;return fetch("/api/waves").then(e=>e.ok?e.json():null).then(t=>{!e&&t&&eA(t)}).catch(()=>{}),()=>{e=!0}},[ef,t]);let eS=(0,o.useMemo)(()=>(function(e){let t=new Map;if(!(null==e?void 0:e.waves))return t;for(let l of e.waves){var n;let e=null==(n=l.rootExecutionIds)?void 0:n[0],o=e&&l.nodes.find(t=>t.executionId===e)||l.nodes[0],r=(null==o?void 0:o.name)||(null==o?void 0:o.flowName)||l.id;for(let e of l.nodes)t.set(e.executionId,{waveId:l.id,label:r})}return t})(ej),[ej]);o.useEffect(()=>{let e=k.trim();if("content"!==D||0===e.length)return void eu(null);let t=!1,n=setTimeout(()=>{fetch("/v1/chat/conversations?search=".concat(encodeURIComponent(e),"&dimension=content")).then(e=>e.ok?e.json():[]).then(e=>{t||eu(new Set(Array.isArray(e)?e.map(e=>e.id):[]))}).catch(()=>{t||eu(new Set)})},300);return()=>{t=!0,clearTimeout(n)}},[k,D]);let eI=o.useCallback(e=>{var t;return e?$(e)?{key:"flow:__quickchat__",label:"Quick Chat"}:{key:"flow:".concat(e),label:null!=(t=I[e])?t:"Unknown flow"}:{key:"flow:__none__",label:"No flow"}},[I]),ek=(0,o.useMemo)(()=>{let e=new Map;for(let n of t){let t=eI(n.flowId);e.has(t.key)||e.set(t.key,t.label)}return Array.from(e.entries()).map(e=>{let[t,n]=e;return{key:t,label:n}}).sort((e,t)=>e.label.localeCompare(t.label))},[t,eI]),eC=(0,o.useMemo)(()=>{let e=k.trim().toLowerCase(),n=Date.now(),l="today"===ev?n-864e5:"7d"===ev?n-6048e5:"30d"===ev?n-2592e6:0;return t.filter(t=>{if("all"!==eh&&t.status!==eh||"all"!==em&&eI(t.flowId).key!==em||l&&t.updatedAt<l)return!1;if(e){if("content"===D){if(!z||!z.has(t.id))return!1}else if(!"".concat(t.title," ").concat(eI(t.flowId).label).toLowerCase().includes(e))return!1}return!0}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})},[t,k,D,z,eh,em,ev,eI]),eE=(0,o.useMemo)(()=>"none"===ef?[{key:"all",label:"",items:eC}]:"wave"===ef?function(e){let t=new Set([en,el]);return[...e.filter(e=>!t.has(e.key)),...e.filter(e=>t.has(e.key))]}((0,et.Az)(eC,e=>(function(e,t){if(!e)return{key:en,label:"Ad-hoc"};let n=t.get(e);return n?{key:"wave:".concat(n.waveId),label:n.label}:{key:el,label:"Archived / no longer scheduled"}})(e.plannedExecutionId,eS))):(0,et.Az)(eC,e=>"date"===ef?(0,ee.K)(e.updatedAt):eI(e.flowId)),[eC,ef,eI,eS]),eT=(0,o.useMemo)(()=>"chain"===ef?ea(eC):{roots:[],childrenByParent:new Map},[ef,eC]),[eN,eD]=o.useState({}),eR=o.useCallback(e=>{eD(t=>({...t,[e]:!1===t[e]}))},[]),ez=(0,o.useMemo)(()=>{let e=new Map;if("wave"!==ef)return e;for(let t of eE)e.set(t.key,ea(t.items));return e},[ef,eE]),e_=+("all"!==eh)+ +("all"!==em)+ +("all"!==ev),eM=e=>{let t=!!g&&("running"===e.status||"awaiting_tool_approval"===e.status),o=eI(e.flowId),c="flow:__quickchat__"===o.key;return(0,l.jsx)(_.Ay,{disablePadding:!0,secondaryAction:(0,l.jsxs)(l.Fragment,{children:[t&&(0,l.jsx)(i.A,{title:"Stop this run",children:(0,l.jsx)(d.A,{edge:"end","aria-label":"stop run",onClick:t=>{t.stopPropagation(),g(e.id)},children:(0,l.jsx)(C.A,{color:"error"})})}),(0,l.jsx)(d.A,{edge:"end","aria-label":"delete",onClick:t=>{t.stopPropagation(),a(e.id)},children:(0,l.jsx)(B.A,{})})]}),sx:{opacity:e.id===n?1:.7},children:(0,l.jsx)(M.A,{selected:e.id===n,onClick:()=>r(e.id),sx:{pr:t?12:7},children:(0,l.jsx)(O.A,{primary:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[e.status&&(0,l.jsx)(i.A,{title:(e=>{switch(e){case"running":return"Processing";case"awaiting_tool_approval":return"Waiting for tool approval";case"paused_debug":return"Paused in debug mode";case"completed":return"Completed";case"capped":return"Landed at turn limit (summary produced)";case"error":return"Error";default:return""}})(e.status),children:(0,l.jsx)(s.default,{component:"span",sx:{width:8,height:8,borderRadius:"50%",bgcolor:(e=>{switch(e){case"running":return"primary.main";case"awaiting_tool_approval":return"warning.main";case"paused_debug":return"secondary.main";case"completed":return"success.main";case"capped":return"info.main";case"error":return"error.main";default:return"transparent"}})(e.status),display:"inline-block",flexShrink:0}})}),(0,l.jsx)(i.A,{title:e.title,enterDelay:500,children:(0,l.jsx)(f.default,{component:"span",fontWeight:e.id===n?"bold":"normal",sx:{display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",wordBreak:"break-word"},children:e.title})})]}),secondary:(0,l.jsxs)(s.default,{component:"span",sx:{display:"flex",alignItems:"center",gap:.75,mt:.5,flexWrap:"wrap"},children:["flow"!==ef&&(0,l.jsx)(i.A,{title:c?"Quick Chat (no saved flow)":"Flow: ".concat(o.label),children:(0,l.jsx)(p.A,{icon:c?(0,l.jsx)(A.A,{}):void 0,label:o.label,size:"small",variant:"outlined",color:c?"secondary":"default",sx:{maxWidth:"100%",height:20,"& .MuiChip-label":{px:.75,fontSize:"0.7rem"}}})}),(0,l.jsx)(f.default,{component:"span",variant:"caption",color:"text.secondary",children:new Date(e.updatedAt).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),secondaryTypographyProps:{component:"div"}})})},e.id)},eO=t.length,eP=eC.length;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(s.default,{sx:{p:2,display:"flex",justifyContent:"space-between",alignItems:"center",gap:1},children:[S&&(0,l.jsx)(i.A,{title:"Hide sidebar",children:(0,l.jsx)(d.A,{size:"small",onClick:S,"aria-label":"Hide conversation sidebar",children:(0,l.jsx)(J.A,{})})}),(0,l.jsx)(f.default,{variant:"h6",sx:{flex:1},noWrap:!0,children:"Conversations"}),t.length>0&&(0,l.jsx)(i.A,{title:"Delete all conversations",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",color:"error","aria-label":"Delete all conversations",onClick:()=>N({open:!0,ids:t.map(e=>e.id),label:"Delete all ".concat(t.length," conversation(s)?")}),children:(0,l.jsx)(X.A,{fontSize:"small"})})})}),eC.length>0&&eC.length<t.length&&(0,l.jsx)(i.A,{title:"Delete visible conversations (matching current filter)",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",color:"error","aria-label":"Delete visible conversations",onClick:()=>N({open:!0,ids:eC.map(e=>e.id),label:"Delete ".concat(eC.length," visible conversation(s)?")}),children:(0,l.jsx)(Z.A,{fontSize:"small"})})})}),j&&(0,l.jsx)(i.A,{title:"Quick Chat: a model + optional MCP servers, no saved flow",children:(0,l.jsx)(h.A,{variant:"outlined",color:"primary",startIcon:(0,l.jsx)(A.A,{}),onClick:j,size:"small",children:"Quick"})}),(0,l.jsx)(h.A,{variant:"contained",color:"primary",startIcon:(0,l.jsx)(G.A,{}),onClick:m,size:"small",children:"New"})]}),(0,l.jsx)(P.A,{}),(0,l.jsxs)(s.default,{sx:{px:2,pt:1.5,pb:1,display:"flex",flexDirection:"column",gap:1},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",gap:1},children:[(0,l.jsx)(u.A,{size:"small",sx:{flex:1},placeholder:"content"===D?"Search message content…":"Search title or flow…",value:k,onChange:e=>E(e.target.value),InputProps:{startAdornment:(0,l.jsx)(F.A,{position:"start",children:(0,l.jsx)(V.A,{fontSize:"small"})}),endAdornment:k?(0,l.jsx)(F.A,{position:"end",children:(0,l.jsx)(d.A,{size:"small","aria-label":"Clear search",onClick:()=>E(""),children:(0,l.jsx)(Y.A,{fontSize:"small"})})}):void 0}}),(0,l.jsx)(L.A,{size:"small",sx:{minWidth:100},children:(0,l.jsxs)(W.A,{value:D,onChange:e=>R(e.target.value),"aria-label":"Search dimension",children:[(0,l.jsx)(U.A,{value:"title",children:"Title"}),(0,l.jsx)(U.A,{value:"content",children:"Content"})]})})]}),(0,l.jsxs)(s.default,{sx:{display:"flex",flexWrap:"wrap",gap:1},children:[(0,l.jsx)(L.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsx)(W.A,{value:ef,onChange:e=>ep(e.target.value),"aria-label":"Group conversations",children:ec.map(e=>(0,l.jsx)(U.A,{value:e.value,children:e.label},e.value))})}),(0,l.jsx)(L.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsx)(W.A,{value:eh,onChange:e=>eg(e.target.value),"aria-label":"Filter by status",children:ei.map(e=>(0,l.jsx)(U.A,{value:e.value,children:e.label},e.value))})}),(0,l.jsx)(L.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsxs)(W.A,{value:ek.some(e=>e.key===em)?em:"all",onChange:e=>ex(e.target.value),"aria-label":"Filter by flow",children:[(0,l.jsx)(U.A,{value:"all",children:"Any flow"}),ek.map(e=>(0,l.jsx)(U.A,{value:e.key,children:e.label},e.key))]})}),(0,l.jsx)(L.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsx)(W.A,{value:ev,onChange:e=>eb(e.target.value),"aria-label":"Filter by date",children:ed.map(e=>(0,l.jsx)(U.A,{value:e.value,children:e.label},e.value))})})]}),(k||e_>0)&&(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",children:[eP," of ",eO]}),(0,l.jsx)(h.A,{size:"small",onClick:()=>{E(""),eg("all"),ex("all"),eb("all")},children:"Clear filters"})]})]}),(0,l.jsx)(P.A,{}),(0,l.jsx)(H.A,{sx:{overflow:"auto",flex:1},children:0===eO?(0,l.jsx)(_.Ay,{children:(0,l.jsx)(O.A,{primary:"No conversations yet",secondary:"Start a new conversation",primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}):0===eP?(0,l.jsx)(_.Ay,{children:(0,l.jsx)(O.A,{primary:"No matching conversations",secondary:"Try a different search or filter",primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}):"chain"===ef?(0,l.jsx)(er,{nodes:eT.roots,childrenByParent:eT.childrenByParent,renderItem:e=>eM(e),expanded:eN,onToggle:eR}):"none"===ef?eC.map(eM):eE.map(e=>{let t=!!ey[e.key],n="wave"===ef?ez.get(e.key):void 0;return(0,l.jsxs)(s.default,{children:[(0,l.jsxs)(M.A,{onClick:()=>(e=>{ew(t=>({...t,[e]:!t[e]}))})(e.key),sx:{py:.5,bgcolor:"action.hover"},children:[t?(0,l.jsx)(K.A,{fontSize:"small"}):(0,l.jsx)(Q.A,{fontSize:"small"}),(0,l.jsx)(f.default,{variant:"overline",sx:{ml:.5,flex:1,lineHeight:1.6},noWrap:!0,children:e.label}),(0,l.jsx)(p.A,{label:e.items.length,size:"small",sx:{height:18,"& .MuiChip-label":{px:.75,fontSize:"0.7rem"}}})]}),(0,l.jsx)(q.A,{in:!t,timeout:"auto",unmountOnExit:!0,children:n?(0,l.jsx)(er,{nodes:n.roots,childrenByParent:n.childrenByParent,renderItem:e=>eM(e),expanded:eN,onToggle:eR}):e.items.map(eM)})]},e.key)})}),(0,l.jsxs)(x.A,{open:T.open,onClose:()=>N(e=>({...e,open:!1})),"aria-labelledby":"bulk-delete-dialog-title",children:[(0,l.jsx)(v.A,{id:"bulk-delete-dialog-title",children:"Confirm deletion"}),(0,l.jsx)(b.A,{children:(0,l.jsxs)(y.A,{children:[T.label," This cannot be undone."]})}),(0,l.jsxs)(w.A,{children:[(0,l.jsx)(h.A,{onClick:()=>N(e=>({...e,open:!1})),children:"Cancel"}),(0,l.jsx)(h.A,{color:"error",onClick:async()=>{N(e=>({...e,open:!1})),await c(T.ids)},autoFocus:!0,children:"Delete"})]})]})]})};var ef=n(18342),ep=n(10915),eh=n(33567),eg=n(66177),em=n(26188),ex=n(77073),ev=n(39486),eb=n(82446),ey=n(37596),ew=n(23731);function ej(e,t){return 1===e.length&&e.every(e=>{var n;let l=null!=(n=t[e])?n:[];return l.includes("pip")&&l.includes("fullscreen")})}let eA=e=>{let{conversationId:t,entries:n,activeKey:r,onSelectTab:a,onCloseTab:c,onAppMessage:u,onUpdateModelContext:p,onRegisterTeardown:h}=e,g=(0,eh.A)(),[m,x]=(0,o.useState)(!1),[v,b]=(0,o.useState)(!1),[y,w]=(0,o.useState)({}),[j,A]=(0,o.useState)([]),S=(0,o.useMemo)(()=>new Set(n.map(e=>e.key)),[n]),I=(0,o.useMemo)(()=>j.filter(e=>S.has(e)),[j,S]),k=(0,o.useMemo)(()=>I.length>0?I:r?[r]:[],[I,r]),C=(0,o.useMemo)(()=>new Set(k),[k]),E=(0,o.useMemo)(()=>ej(k,y),[y,k]),T=Math.max(1,Math.ceil(Math.sqrt(k.length)));return((0,o.useEffect)(()=>{w(e=>{let t=Object.fromEntries(Object.entries(e).filter(e=>{let[t]=e;return S.has(t)}));return Object.keys(t).length===Object.keys(e).length?e:t})},[S]),(0,o.useEffect)(()=>{v&&!E&&b(!1)},[v,E]),0===n.length)?null:(0,l.jsxs)(s.default,{"data-testid":"dev-canvas-dock",sx:{borderTop:1,borderColor:"divider",bgcolor:"background.paper",display:"flex",flexDirection:"column",minHeight:0,...v?{position:"fixed",inset:16,zIndex:1300,borderRadius:1,boxShadow:6,border:1}:{maxHeight:"45vh"}},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5,px:1,py:.5,bgcolor:"action.hover"},children:[(0,l.jsx)(em.A,{fontSize:"small",color:"primary"}),(0,l.jsx)(f.default,{variant:"caption",sx:{fontWeight:600,mr:1},children:"Canvas"}),(0,l.jsx)(s.default,{sx:{display:"flex",gap:.5,overflowX:"auto",flex:1,minWidth:0},children:n.map(e=>{let t=e.key===r,n=I.includes(e.key);return(0,l.jsxs)(s.default,{onClick:()=>(e=>{v&&!ej([e],y)&&b(!1),a(e)})(e.key),sx:{display:"flex",alignItems:"center",gap:.5,px:1,py:.25,borderRadius:1,cursor:"pointer",whiteSpace:"nowrap",border:1,borderColor:t?"primary.main":"divider",bgcolor:t?"action.selected":"transparent"},title:"".concat(e.serverName," — ").concat(e.uri),children:[(0,l.jsx)(eg.A,{color:"primary",variant:"dot",invisible:!e.unread,children:(0,l.jsx)(f.default,{variant:"caption",sx:{fontWeight:t?600:400},children:function(e){return e.replace(/\/+$/,"").split("/").pop()||e}(e.uri)})}),(0,l.jsx)(f.default,{variant:"caption",color:"text.secondary",sx:{fontSize:"0.65rem"},children:e.serverName}),(0,l.jsx)(i.A,{title:n?"Remove from split":"Add to split view",children:(0,l.jsx)(d.A,{size:"small",sx:{p:.25},color:n?"primary":"default",onClick:t=>{t.stopPropagation(),(e=>{v&&b(!1),A(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])})(e.key)},"aria-label":"Toggle split view",children:(0,l.jsx)(ey.A,{sx:{fontSize:14}})})}),(0,l.jsx)(i.A,{title:"Close",children:(0,l.jsx)(d.A,{size:"small",sx:{p:.25},onClick:t=>{t.stopPropagation(),c(e.key)},"aria-label":"Close canvas tab",children:(0,l.jsx)(ex.A,{sx:{fontSize:14}})})})]},e.key)})}),(0,l.jsx)(i.A,{title:v?"Exit fullscreen":E?"Fullscreen":"Every visible app must declare pip and fullscreen support",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",disabled:!v&&!E,onClick:()=>b(e=>!e),"aria-label":"Toggle canvas fullscreen",children:v?(0,l.jsx)(eb.A,{fontSize:"small"}):(0,l.jsx)(ev.A,{fontSize:"small"})})})}),(0,l.jsx)(i.A,{title:m?"Expand canvas":"Collapse canvas",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>{!m&&v&&b(!1),x(e=>!e)},"aria-label":"Toggle canvas collapse",children:m?(0,l.jsx)(Q.A,{fontSize:"small"}):(0,l.jsx)(K.A,{fontSize:"small"})})})]}),(0,l.jsx)(s.default,{sx:{display:m?"none":"grid",position:"relative",gridTemplateColumns:"repeat(".concat(T,", minmax(0, 1fr))"),gap:1,p:1,flex:1,height:v?"auto":320,minHeight:0,overflow:"hidden"},children:n.map(e=>{var n;let o=!m&&C.has(e.key);return(0,l.jsx)(s.default,{sx:{display:"flex",...o?{position:"relative"}:{position:"absolute",inset:0,visibility:"hidden",pointerEvents:"none"},flexDirection:"column",minHeight:0,border:1,borderColor:"divider",borderRadius:1,overflow:"hidden",bgcolor:"dark"===g.palette.mode?"#111":"#fff"},children:(0,l.jsx)(ew.Ay,{docked:!0,visible:o,serverName:e.serverName,uri:e.uri,toolName:e.toolName,toolArgs:e.latestToolArgs,toolResultContent:e.latestResultContent,toolCancelledReason:e.latestToolCancelledReason,toolIsError:e.latestToolIsError,toolUpdateId:null!=(n=e.latestToolUpdateId)?n:e.updatedAt,onAppMessage:u,onUpdateModelContext:p,hostDisplayMode:v&&o?"fullscreen":"pip",onAvailableDisplayModes:t=>{w(n=>{var l;let o=null!=(l=n[e.key])?l:[];return o.length===t.length&&o.every((e,n)=>e===t[n])?n:{...n,[e.key]:t}})},onRequestDisplayMode:(t,n)=>((e,t,n)=>{let l=v&&C.has(e)?"fullscreen":"pip";return t===l?l:"fullscreen"===t&&1===k.length&&k[0]===e&&n.includes("pip")&&n.includes("fullscreen")?(b(!0),"fullscreen"):"pip"===t&&"fullscreen"===l&&n.includes("pip")?(b(!1),"pip"):l})(e.key,t,n),onRequestClose:()=>c(e.key),onRegisterTeardown:(e,n)=>{null==h||h(t,e,n)}})},e.key)})})]})},eS={entries:{},order:[],activeKey:null};function eI(e,t){return"".concat(e,"::").concat(t)}function ek(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16,n=arguments.length>2?arguments[2]:void 0,l=Math.max(1,Math.floor(t));if(e.order.length<=l)return{state:e,evicted:[]};let o={...e.entries},r=[...e.order],a=[];for(;r.length>l;){let e=null,t=1/0;for(let l of r){var s,i;if(l===n)continue;let r=null!=(i=null==(s=o[l])?void 0:s.lastActiveAt)?i:0;r<t&&(t=r,e=l)}if(!e)break;delete o[e],r=r.filter(t=>t!==e),a.push(e)}let d=e.activeKey;return d&&!o[d]&&(d=r.length?r[r.length-1]:null),{state:{entries:o,order:r,activeKey:d},evicted:a}}function eC(e,t){if(!e.entries[t])return e;let n={...e.entries};delete n[t];let l=e.order.filter(e=>e!==t),o=e.activeKey;if(o===t){o=null;let e=-1/0;for(let t of l){var r,a;let l=null!=(a=null==(r=n[t])?void 0:r.lastActiveAt)?a:0;l>=e&&(e=l,o=t)}}return{entries:n,order:l,activeKey:o}}function eE(e,t){var n;return null!=(n=e[t])?n:[]}function eT(e,t){if(!(t in e))return e;let n={...e};return delete n[t],n}function eN(e,t,n){let l=eE(e,t),o=l.filter(e=>e.id!==n);if(o.length===l.length)return e;let r={...e};return o.length>0?r[t]=o:delete r[t],r}var eD=n(4474),eR=n(25731),ez=n(62617),e_=n(12857),eM=n(16186);let eO={byIndex:{}};function eP(e,t,n){for(let l=0;l<t;l++)e[l]||(e[l]={laneIndex:l,laneCount:t,label:"Lane ".concat(l+1,"/").concat(t),status:"pending",lastEventAt:n})}let eF=[""," before breakfast"," under a full moon"," with expert supervision"," somewhere off the map"," according to ancient custom"," while nobody is looking"," for science"," one tiny step at a time"," against all reasonable advice"],eL=["Painting the fence","Watching the 1954 World Cup","Drying behind the ears","Attending the first moon landing","Fighting in the Thirty Years’ War","Discovering fire","Playing with the cats","Cutting down a tree","Plumbing a drain","Eating a sandwich","Committing tax fraud","Awaiting GTA 7","Going on a demonstration","Driving in the left lane","Repairing an old chair","Exploring magnetism","Teaching a goldfish algebra","Alphabetizing the spice rack","Polishing a brass telescope","Folding a fitted sheet","Training for the snail marathon","Counting the rings of Saturn","Sharpening a box of crayons","Negotiating with the squirrels","Rehearsing a dramatic entrance","Mapping an imaginary island","Baking a suspiciously round pie","Tuning a haunted piano","Watering the plastic plants","Untangling holiday lights","Building a pillow fortress","Decoding the grocery list","Interviewing a garden gnome","Organizing the sock drawer","Following a trail of breadcrumbs","Inventing a quieter kazoo","Dusting the dinosaur bones","Launching a paper airplane","Measuring the speed of gossip","Teaching robots to whistle","Calibrating the sundial","Searching for buried treasure","Painting clouds on the ceiling","Refilling the office stapler","Herding digital cats","Consulting the ancient scrolls","Testing the emergency hammock","Translating whale songs","Perfecting the secret handshake","Winding the grandfather clock","Chasing the northern lights","Sailing across a coffee cup","Planting a tiny forest","Borrowing sugar from the neighbors","Learning the penguin shuffle","Auditioning for a silent movie","Restoring a medieval tapestry","Naming every star","Packing for an expedition","Composing an elevator symphony","Inspecting the castle moat","Reading tea leaves","Assembling a model volcano","Studying the migration of sandwiches","Racing a steam locomotive","Picnicking beside a black hole","Practicing wizard etiquette","Delivering mail by pigeon","Searching the library stacks","Brewing a heroic cup of tea","Drawing moustaches on portraits","Balancing the household budget","Learning to speak dolphin","Mending a pirate sail","Surveying the ocean floor","Opening a detective agency","Carving a wooden spoon","Observing the neighborhood dragons","Crossing the Silk Road","Preparing for the robot uprising","Writing a strongly worded postcard","Spinning plates at the circus","Evicting ghosts from the attic","Charting the Bermuda Triangle","Making friends with the ravens","Designing a moon garden","Investigating the cookie jar","Practicing synchronized napping","Mining cheese on the Moon","Repairing the time machine","Conducting the dawn chorus","Waiting for paint to dry","Solving the sphinx’s riddle","Building a better mousetrap","Exploring an underwater city","Sorting the wizard’s mail","Escaping an awkward conversation","Raking leaves in a hurricane","Guarding the last doughnut","Looking busy"].flatMap(e=>eF.map(t=>"".concat(e).concat(t,"…"))),eW=e=>{let{lane:t,onOpenLane:n}=e,o=!!t.laneConversationId&&!!n,r="pending"===t.status;return(0,l.jsxs)(s.default,{onClick:o?()=>n(t.laneConversationId):void 0,sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.25,borderRadius:1,...o&&{cursor:"pointer","&:hover":{bgcolor:"action.hover",textDecoration:"underline"}}},children:["running"===t.status&&(0,l.jsx)(eD.default,{size:14,sx:{flexShrink:0}}),"completed"===t.status&&(0,l.jsx)(I.A,{sx:{fontSize:16,flexShrink:0},color:"success"}),"error"===t.status&&(0,l.jsx)(e_.A,{sx:{fontSize:16,flexShrink:0},color:"error"}),r&&(0,l.jsx)(eM.A,{sx:{fontSize:16,flexShrink:0},color:"disabled"}),(0,l.jsxs)(f.default,{variant:"caption",color:r?"text.disabled":"textSecondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[t.label,r&&" — queued","running"===t.status&&t.activity&&(0,l.jsxs)(f.default,{component:"span",variant:"caption",color:"text.disabled",children:[" \xb7 ",t.activity]})]})]})},eU=e=>{var t;let{liveStats:n,onStop:r,stopDisabled:a,awaitingApproval:i,lanes:d,onOpenLane:c,onAttachDebugger:u}=e,[p,g]=(0,o.useState)(()=>Date.now()),[m,x]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=setInterval(()=>g(Date.now()),1e3);return()=>clearInterval(e)},[]);let v=n?Math.max(0,Math.round((p-n.startedAt)/1e3)):0,b=n?Math.round((p-n.lastEventAt)/1e3):0,y=!i&&!!n&&b>=60,w=n?Math.floor(n.startedAt/1e3)%eL.length:0,j=eL[(w+Math.floor(v/5))%eL.length],A=d?Object.values(d.byIndex).sort((e,t)=>e.laneIndex-t.laneIndex):[],S=A.length>0?(e=>{let t=e.filter(e=>"running"===e.status).length,n=e.filter(e=>"pending"===e.status).length,l=e.filter(e=>"completed"===e.status).length,o=e.filter(e=>"error"===e.status).length;if(0===t&&0===n&&o>0)return{text:"".concat(o,"/").concat(e.length," lanes failed — partial results"),warning:!0};let r=[t>0?"".concat(t," running"):"",n>0?"".concat(n," queued"):"",l>0?"".concat(l," done"):"",o>0?"".concat(o," failed"):""].filter(Boolean);return{text:"".concat(e.length," lanes — ").concat(r.join(", ")),warning:o>0}})(A):null;return(0,l.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",my:2,gap:.5},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:2},children:[i?(0,l.jsx)(eR.A,{fontSize:"small",color:"warning"}):(0,l.jsx)(eD.default,{size:20,color:y?"warning":"primary"}),(0,l.jsx)(f.default,{variant:"body2",color:"textSecondary",children:i?"Waiting for tool approval":(null==n?void 0:n.activeNode)?"Running: ".concat(n.activeNode):"Working…"}),u&&!i&&(0,l.jsx)(h.A,{variant:"outlined",color:"primary",size:"small",startIcon:(0,l.jsx)(ez.A,{fontSize:"small"}),onClick:()=>{x(!0),u()},disabled:m,children:m?"Attaching…":"Attach debugger"}),(0,l.jsx)(h.A,{variant:"outlined",color:"secondary",size:"small",onClick:r,disabled:a,children:"Stop"})]}),!i&&(0,l.jsx)(f.default,{variant:"caption",color:"text.disabled",sx:{fontStyle:"italic"},"aria-live":"polite",children:j}),S&&(0,l.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",alignItems:"stretch",minWidth:280,maxWidth:520},children:[(0,l.jsx)(f.default,{variant:"caption",color:S.warning?"warning.main":"textSecondary",sx:{px:1,fontWeight:500},children:S.text}),A.map(e=>(0,l.jsx)(eW,{lane:e,onOpenLane:c},e.laneIndex))]}),!i&&(0,l.jsxs)(f.default,{variant:"caption",color:y?"warning.main":"textSecondary",children:[(null!=(t=null==n?void 0:n.totalTokens)?t:0).toLocaleString()," tokens \xb7 ",v,"s elapsed",y?" \xb7 no activity for ".concat(b,"s — may be stuck"):""]})]})};var eH=n(2300),eq=n(52005),eB=n(54121);let eG=e=>{let{todos:t}=e;if(!t||0===t.length)return null;let n=t.filter(e=>"done"===e.status).length,o=t.length>0?Math.round(n/t.length*100):0;return(0,l.jsxs)(eH.A,{variant:"outlined",sx:{mt:2,p:1.5,borderRadius:2},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:1},children:[(0,l.jsx)(f.default,{variant:"subtitle2",sx:{fontWeight:600},children:"Tasks"}),(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",children:[n," of ",t.length," done"]})]}),(0,l.jsx)(eq.A,{variant:"determinate",value:o,sx:{mb:1,borderRadius:1}}),(0,l.jsx)(s.default,{component:"ul",sx:{listStyle:"none",m:0,p:0},children:t.map(e=>(0,l.jsxs)(s.default,{component:"li",sx:{display:"flex",alignItems:"center",gap:1,py:.25},children:[function(e){switch(e){case"done":return(0,l.jsx)(I.A,{fontSize:"small",color:"success"});case"in_progress":return(0,l.jsx)(eB.A,{fontSize:"small",color:"info"});case"cancelled":return(0,l.jsx)(e_.A,{fontSize:"small",color:"disabled"});default:return(0,l.jsx)(eM.A,{fontSize:"small",color:"disabled"})}}(e.status),(0,l.jsx)(f.default,{variant:"body2",sx:{textDecoration:"done"===e.status||"cancelled"===e.status?"line-through":"none",color:"done"===e.status||"cancelled"===e.status?"text.secondary":"text.primary"},children:e.content})]},e.id))})]})};var eJ=n(88538),eV=n(16963),eY=n(2456),eK=n(64792),eQ=n(71356),eX=n(45202),eZ=n(77998);let e$=e=>e>=1e3?"".concat((e/1e3).toFixed(e>=1e5?0:1),"k"):"".concat(e),e0=e=>{var t;let{usage:n,contextInfo:r,availableNodes:a}=e,[d,c]=(0,o.useState)(null);if(!n&&!r)return null;let u=(null==n?void 0:n.byNode)?Object.entries(n.byNode):[],h=null!=(t=null==n?void 0:n.cacheReadTokens)?t:0,g=n?Math.max(0,n.promptTokens-h):0,m=n?Math.max(0,n.totalTokens-h):0,x=(null==r?void 0:r.contextWindow)&&r.contextWindow>0?Math.min(100,Math.round(r.promptTokens/r.contextWindow*100)):void 0;return(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1.5,flexShrink:0},children:[n&&m>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.A,{title:"Tokens this conversation — ".concat(g.toLocaleString()," prompt / ").concat(n.completionTokens.toLocaleString()," completion").concat(h>0?" (+".concat(h.toLocaleString()," cached reads, not counted)"):"",". Click for the per-node breakdown."),children:(0,l.jsx)(p.A,{icon:(0,l.jsx)(eZ.A,{}),label:"".concat(e$(m)," tokens"),size:"small",variant:"outlined",onClick:e=>c(e.currentTarget),sx:{cursor:"pointer"}})}),(0,l.jsx)(eJ.Ay,{open:!!d,anchorEl:d,onClose:()=>c(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:(0,l.jsxs)(s.default,{sx:{p:2,maxWidth:420},children:[(0,l.jsx)(f.default,{variant:"subtitle2",sx:{mb:1},children:"Token usage by node"}),(0,l.jsxs)(eV.A,{size:"small",children:[(0,l.jsx)(eY.A,{children:(0,l.jsxs)(eK.A,{children:[(0,l.jsx)(eQ.A,{children:"Node"}),(0,l.jsx)(eQ.A,{align:"right",children:"Prompt"}),(0,l.jsx)(eQ.A,{align:"right",children:"Completion"}),(0,l.jsx)(eQ.A,{align:"right",children:"Total"})]})}),(0,l.jsxs)(eX.A,{children:[u.map(e=>{let[t,n]=e;return(0,l.jsxs)(eK.A,{children:[(0,l.jsx)(eQ.A,{children:(0,l.jsx)(i.A,{title:t,children:(0,l.jsx)("span",{children:(e=>{var t;return(null==(t=a.find(t=>t.id===e))?void 0:t.label)||"".concat(e.substring(0,8),"…")})(t)})})}),(0,l.jsx)(eQ.A,{align:"right",children:n.promptTokens.toLocaleString()}),(0,l.jsx)(eQ.A,{align:"right",children:n.completionTokens.toLocaleString()}),(0,l.jsx)(eQ.A,{align:"right",children:n.totalTokens.toLocaleString()})]},t)}),(0,l.jsxs)(eK.A,{children:[(0,l.jsx)(eQ.A,{sx:{fontWeight:"bold"},children:"Total"}),(0,l.jsx)(eQ.A,{align:"right",sx:{fontWeight:"bold"},children:n.promptTokens.toLocaleString()}),(0,l.jsx)(eQ.A,{align:"right",sx:{fontWeight:"bold"},children:n.completionTokens.toLocaleString()}),(0,l.jsx)(eQ.A,{align:"right",sx:{fontWeight:"bold"},children:n.totalTokens.toLocaleString()})]})]})]}),h>0&&(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1},children:["Prompt totals include ",h.toLocaleString()," tokens re-read from the prompt cache. The header chip shows the fresh figure (",m.toLocaleString(),") with those cached reads excluded."]})]})})]}),r&&void 0!==x&&(0,l.jsx)(i.A,{title:"Context of the latest call".concat(r.modelDisplayName?" (".concat(r.modelDisplayName,")"):"",": ").concat(r.promptTokens.toLocaleString()," of ").concat(r.contextWindow.toLocaleString()," tokens"),children:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1,minWidth:140},children:[(0,l.jsx)(eq.A,{variant:"determinate",value:x,color:x>=90?"error":x>=70?"warning":"primary",sx:{flex:1,height:6,borderRadius:3}}),(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:[e$(r.promptTokens),"/",e$(r.contextWindow)," (",x,"%)"]})]})}),r&&void 0===x&&(0,l.jsx)(i.A,{title:"Prompt size of the latest call".concat(r.modelDisplayName?" (".concat(r.modelDisplayName,")"):"",". Set the model's Context Window in its settings to see a usage meter."),children:(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:["ctx ",e$(r.promptTokens)]})})]})};var e1=n(75870),e2=n(95436),e5=n(99944),e6=n(22822),e3=n(43076),e4=n(17897),e8=n(87021);let e7=(0,e8.h)("frontend/components/Chat/QuickChatDialog"),e9=e=>{let{open:t,onClose:n,onStart:r}=e,[a,i]=(0,o.useState)([]),[g,m]=(0,o.useState)([]),[y,j]=(0,o.useState)(!1),[A,S]=(0,o.useState)(null),[I,k]=(0,o.useState)(""),[C,E]=(0,o.useState)(""),[T,N]=(0,o.useState)({}),[D,R]=(0,o.useState)(!1),[z,_]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!t)return;let e=!1;return j(!0),S(null),(async()=>{try{let[t,n]=await Promise.all([e3.N.loadModels(),e4.S.loadServerConfigs()]);if(e)return;i(t);let l=Array.isArray(n)?n.filter(e=>!e.disabled).map(e=>e.name):[];m(l),k(e=>{var n;return e||(null==(n=t[0])?void 0:n.id)||""})}catch(t){e||(e7.warn("Failed to load models/servers for quick chat",t),S("Could not load models or servers."))}finally{e||j(!1)}})(),()=>{e=!0}},[t]),(0,o.useEffect)(()=>{t||(E(""),N({}),_(null),R(!1))},[t]);let M=(0,o.useCallback)(e=>{N(t=>{let n=t[e];return(null==n?void 0:n.selected)?{...t,[e]:{...n,selected:!1}}:{...t,[e]:{...null!=n?n:{tools:null,expanded:!1},selected:!0}}})},[]),O=(0,o.useCallback)(async e=>{N(t=>{var n;let l=null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!1};return{...t,[e]:{...l,expanded:!l.expanded}}});let t=T[e];if(!(null==t?void 0:t.available)&&!(null==t?void 0:t.loading)){N(t=>{var n;return{...t,[e]:{...null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!0},loading:!0}}});try{let{tools:t}=await e4.S.listServerTools(e),n=Array.isArray(t)?t.map(e=>e.name).filter(Boolean):[];N(t=>{var l;return{...t,[e]:{...null!=(l=t[e])?l:{selected:!1,tools:null,expanded:!0},available:n,loading:!1}}})}catch(t){e7.warn("Failed to load tools for ".concat(e),t),N(t=>{var n;return{...t,[e]:{...null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!0},available:[],loading:!1}}})}}},[T]),F=(0,o.useCallback)((e,t,n)=>{N(l=>{var o,r;let a=null!=(o=l[e])?o:{selected:!0,tools:null,expanded:!0},s=new Set(null!=(r=a.tools)?r:new Set(n));return s.has(t)?s.delete(t):s.add(t),{...l,[e]:{...a,selected:!0,tools:s}}})},[]),H=!!I&&!D&&!y,B=async()=>{if(!I)return void _("Pick a model to chat with.");R(!0),_(null);let e=g.filter(e=>{var t;return null==(t=T[e])?void 0:t.selected}).map(e=>{let t=T[e];return!t.tools||t.available&&t.tools.size===t.available.length?{name:e}:{name:e,enabledTools:[...t.tools]}});try{await r({modelId:I,servers:e,systemPrompt:C.trim()||void 0})}catch(e){e7.warn("Quick chat failed to start",e),_(e instanceof Error?e.message:"Could not start the quick chat."),R(!1)}};return(0,l.jsxs)(x.A,{open:t,onClose:D?void 0:n,maxWidth:"sm",fullWidth:!0,children:[(0,l.jsx)(v.A,{children:"Quick Chat"}),(0,l.jsxs)(b.A,{children:[(0,l.jsx)(f.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Chat with a model and, optionally, some MCP servers — no need to build and save a flow."}),A&&(0,l.jsx)(c.A,{severity:"error",sx:{mb:2},children:A}),(0,l.jsxs)(L.A,{fullWidth:!0,size:"small",sx:{mb:2},disabled:y,children:[(0,l.jsx)(e2.A,{id:"quick-chat-model-label",children:"Model"}),(0,l.jsxs)(W.A,{labelId:"quick-chat-model-label",label:"Model",value:I,onChange:e=>k(e.target.value),children:[0===a.length&&(0,l.jsx)(U.A,{value:"",disabled:!0,children:y?"Loading…":"No models configured"}),a.map(e=>(0,l.jsx)(U.A,{value:e.id,children:e.displayName||e.name},e.id))]})]}),(0,l.jsx)(u.A,{fullWidth:!0,size:"small",multiline:!0,minRows:2,maxRows:6,label:"System prompt (optional)",placeholder:"e.g. You are a concise coding assistant.",value:C,onChange:e=>E(e.target.value),sx:{mb:2}}),(0,l.jsx)(P.A,{sx:{mb:1}}),(0,l.jsx)(f.default,{variant:"subtitle2",gutterBottom:!0,children:"MCP servers (optional)"}),y?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(eD.default,{size:22})}):0===g.length?(0,l.jsx)(f.default,{variant:"body2",color:"text.secondary",children:"No connected MCP servers. You can still chat with the model alone."}):g.map(e=>{let t=T[e],n=!!(null==t?void 0:t.selected),o=null==t?void 0:t.available,r=null==t?void 0:t.tools;return(0,l.jsxs)(s.default,{sx:{mb:.5},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center"},children:[(0,l.jsx)(e5.A,{sx:{flexGrow:1,mr:0},control:(0,l.jsx)(e6.A,{size:"small",checked:n,onChange:()=>M(e)}),label:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(f.default,{variant:"body2",children:e}),n&&(0,l.jsx)(p.A,{size:"small",variant:"outlined",label:r?"".concat(r.size," tool").concat(1===r.size?"":"s"):"all tools"})]})}),(0,l.jsx)(d.A,{size:"small",onClick:()=>O(e),"aria-label":"customize ".concat(e," tools"),children:(null==t?void 0:t.expanded)?(0,l.jsx)(Q.A,{fontSize:"small"}):(0,l.jsx)(K.A,{fontSize:"small"})})]}),(0,l.jsx)(q.A,{in:!!(null==t?void 0:t.expanded),unmountOnExit:!0,children:(0,l.jsx)(s.default,{sx:{pl:4,pb:1},children:(null==t?void 0:t.loading)?(0,l.jsx)(eD.default,{size:16}):o&&o.length>0?o.map(t=>{let n=!r||r.has(t);return(0,l.jsx)(e5.A,{sx:{display:"flex"},control:(0,l.jsx)(e6.A,{size:"small",checked:n,onChange:()=>F(e,t,o)}),label:(0,l.jsx)(f.default,{variant:"caption",children:t})},t)}):(0,l.jsx)(f.default,{variant:"caption",color:"text.secondary",children:o?"No tools reported (server may be offline).":""})})})]},e)}),z&&(0,l.jsx)(c.A,{severity:"error",sx:{mt:2},children:z})]}),(0,l.jsxs)(w.A,{children:[(0,l.jsx)(h.A,{onClick:n,disabled:D,children:"Cancel"}),(0,l.jsx)(h.A,{variant:"contained",onClick:B,disabled:!H,startIcon:D?(0,l.jsx)(eD.default,{size:16,color:"inherit"}):void 0,children:D?"Starting…":"Start chat"})]})]})};var te=n(98267),tt=n(20537),tn=n(37960),tl=n(49692),to=n(54178),tr=n(11305),ta=n(48116),ts=n(22539),ti=n(90057),td=n(33420),tc=n(53911);let tu={byNode:{},byResource:{},byResourceName:{},resourceVersion:0};function tf(e,t){return"".concat(e," ").concat(t)}var tp=n(49501),th=n(59323),tg=n(72308),tm=n(6422),tx=n(48363);let tv=(0,e8.h)("frontend/components/Chat/RunResourcesPanel"),tb=e=>{let{conversationId:t,refreshToken:n}=e,[r,a]=(0,o.useState)(null),[i,d]=(0,o.useState)(null);return((0,o.useEffect)(()=>{if(!t)return;let e=!1;return fetch("/v1/chat/conversations/".concat(encodeURIComponent(t),"/resources")).then(async e=>{if(!e.ok)throw Error("HTTP ".concat(e.status));return e.json()}).then(t=>{e||(a(Array.isArray(t.resources)?t.resources:[]),d(null))}).catch(t=>{e||(tv.warn("Failed to load run resources",t),d(t instanceof Error?t.message:String(t)))}),()=>{e=!0}},[t,n]),i)?(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",children:["Run data unavailable (",i,")"]}):null===r?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",p:1},children:(0,l.jsx)(eD.default,{size:16})}):0===r.length?(0,l.jsx)(f.default,{variant:"caption",color:"text.secondary",children:"No data artifacts captured in this run yet."}):(0,l.jsx)(H.A,{dense:!0,disablePadding:!0,children:[...r].sort((e,t)=>t.createdAt-e.createdAt).map(e=>{var t;return(0,l.jsxs)(_.Ay,{disableGutters:!0,sx:{alignItems:"flex-start"},children:[(0,l.jsx)(tp.A,{sx:{minWidth:30,mt:.5},children:function(e){switch(e){case"image":return(0,l.jsx)(tg.A,{fontSize:"small",sx:{color:"#009688"}});case"audio":return(0,l.jsx)(tm.A,{fontSize:"small",sx:{color:"#009688"}});case"link":return(0,l.jsx)(tx.A,{fontSize:"small",sx:{color:"#009688"}});default:return(0,l.jsx)(th.A,{fontSize:"small",sx:{color:"#009688"}})}}(e.kind)}),(0,l.jsx)(O.A,{primary:(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap"},children:[(0,l.jsx)(f.default,{variant:"body2",sx:{fontWeight:500},children:null!=(t=e.name)?t:"".concat(e.kind,"-").concat(e.id.slice(0,8))}),e.mimeType&&(0,l.jsx)(p.A,{label:e.mimeType,size:"small",variant:"outlined",sx:{height:18,fontSize:"0.65rem"}}),(0,l.jsx)(f.default,{variant:"caption",color:"text.secondary",children:function(e){return e<1024?"".concat(e," B"):e<1048576?"".concat(Math.round(e/1024)," KB"):"".concat((e/1048576).toFixed(1)," MB")}(e.size)})]}),secondary:(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",component:"span",sx:{wordBreak:"break-all"},children:["by ",function(e){var t,n,l,o,r,a,s;let i=e.producedBy;switch(i.source){case"tool-result":return"tool ".concat(null!=(t=i.server)?t:"?","/").concat(null!=(n=i.toolName)?n:"?");case"tool-args":return"tool args ".concat(null!=(l=i.server)?l:"?","/").concat(null!=(o=i.toolName)?o:"?");case"capture":return"step ".concat(null!=(a=null!=(r=i.nodeName)?r:i.nodeId)?a:"?");case"mcp-link":return"link from ".concat(null!=(s=i.server)?s:"?");default:return"run"}}(e),e.readBy.length>0?" \xb7 read ".concat(e.readBy.length,"\xd7"):""," \xb7 ",e.uri]})})]},e.id)})})};var ty=n(14913),tw=n(57883);let tj={system:{label:"system",color:"secondary"},sent:{label:"sent",color:"success"},folded:{label:"folded",color:"warning"},"scoped-out":{label:"scoped out",color:"info"},"handoff-stripped":{label:"handoff plumbing",color:"default"}},tA={whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem",fontFamily:"inherit"},tS=e=>{let{role:t,content:n,toolCallNames:o,status:r,faded:a}=e;return(0,l.jsxs)(eH.A,{variant:"outlined",sx:{p:1,mb:.75,opacity:a?.55:1,borderStyle:a?"dashed":"solid"},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5,mb:.5,flexWrap:"wrap"},children:[(0,l.jsx)(p.A,{size:"small",label:t,color:function(e){switch(e){case"system":return"secondary";case"user":return"primary";case"assistant":return"success";case"tool":return"info";default:return"default"}}(t),variant:"outlined"}),o&&o.length>0&&(0,l.jsx)(p.A,{size:"small",variant:"outlined",label:"\uD83D\uDD27 ".concat(o.join(", ")),sx:{maxWidth:"100%"}}),r&&"sent"!==r&&"system"!==r&&(0,l.jsx)(p.A,{size:"small",color:tj[r].color,label:tj[r].label})]}),n.trim().length>0?(0,l.jsx)("pre",{style:tA,children:n}):(0,l.jsx)(f.default,{variant:"caption",color:"textSecondary",children:"(no text content)"})]})},tI=e=>{let{provenance:t}=e;return(0,l.jsxs)(s.default,{children:[(0,l.jsx)(f.default,{variant:"caption",color:"textSecondary",sx:{display:"block",mb:.5},children:"Full threaded history — greyed rows are not sent to the model."}),t.map((e,t)=>{var n,o;return(0,l.jsx)(tS,{role:e.role,content:null!=(n=e.preview)?n:"",toolCallNames:e.toolCallNames,status:e.status,faded:"sent"!==e.status&&"system"!==e.status},null!=(o=e.id)?o:"hist-".concat(t))}),t.some(e=>"sent"!==e.status&&"system"!==e.status)&&(0,l.jsx)(f.default,{variant:"caption",color:"textSecondary",sx:{display:"block",mt:1},children:"Hover a badge label to understand why a message is not on the wire: folded (outputMode), scoped out (inputMode), or handoff plumbing (tool-call strip)."})]})},tk=()=>{},tC=e=>{let{modelInput:t,conversationId:n}=e,[r,a]=(0,o.useState)("wire"),{systemMessage:i,wireMessages:d,provenance:c,counts:u,inputMode:h}=t,g=(0,o.useMemo)(()=>(d||[]).filter(e=>"system"!==e.role),[d]);return(0,l.jsxs)(s.default,{sx:{height:"100%",display:"flex",flexDirection:"column",p:1},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap",mb:1},children:[(0,l.jsx)(f.default,{variant:"caption",color:"textSecondary",children:function(e){return"".concat(e.threaded," in history → ").concat(e.sent," sent")+(e.folded?" \xb7 ".concat(e.folded," folded"):"")+(e.scopedOut?" \xb7 ".concat(e.scopedOut," scoped out"):"")+(e.handoffStripped?" \xb7 ".concat(e.handoffStripped," handoff-stripped"):"")}(u)}),h&&"full-history"!==h&&(0,l.jsx)(p.A,{size:"small",variant:"outlined",label:"inputMode: ".concat(h)})]}),(0,l.jsxs)(te.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(tt.A,{expandIcon:(0,l.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(f.default,{variant:"caption",children:(0,l.jsx)("b",{children:"System message"})})}),(0,l.jsx)(tn.A,{sx:{p:0},children:i&&i.content.trim().length>0?(0,l.jsx)(eH.A,{variant:"outlined",sx:{p:1,maxHeight:220,overflowY:"auto"},children:(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem",fontFamily:"inherit"},children:i.content})}):(0,l.jsx)(f.default,{variant:"caption",color:"textSecondary",children:"(no system message)"})})]}),(0,l.jsxs)(ty.A,{size:"small",exclusive:!0,value:r,onChange:(e,t)=>{t&&a(t)},sx:{my:1},children:[(0,l.jsx)(tw.A,{value:"wire",children:"What the model sees"}),(0,l.jsx)(tw.A,{value:"annotated",children:"Full history (annotated)"})]}),(0,l.jsx)(s.default,{sx:{flexGrow:1,overflowY:"auto",minHeight:0},children:"wire"===r?0===g.length?(0,l.jsx)(f.default,{variant:"body2",color:"textSecondary",sx:{p:1},children:"No conversation messages — the model sees only the system message."}):(0,l.jsx)(ef.A,{messages:g,conversationId:n?"debug-".concat(n):void 0,onToggleDisabled:tk,onSplitConversation:tk}):(0,l.jsx)(tI,{provenance:c})})]})},tE=(0,e8.h)("frontend/components/Chat/DebuggerCanvas"),tT={start:td.vm,process:td.Uw,finish:td.IK,mcp:td.v2,subflow:td.lA,resource:td.z9},tN={custom:tc.jY,mcpEdge:tc.oY,resourceEdge:tc.sZ},tD=["conversation","tracker","detail"],tR={conversation:"Conversation",tracker:"Execution Tracker",detail:"Detail"},tz="flujo-debugger-section-order",t_="flujo-debugger-section-visible",tM="flujo-debugger-conv-width",tO="flujo-debugger-detail-width";function tP(e,t){let n=Number(window.localStorage.getItem(e));return Number.isFinite(n)&&n>=240?n:t}let tF=(0,ta.Ay)(eH.A)(e=>{let{theme:t}=e;return{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden",padding:t.spacing(1)}}),tL=(0,ta.Ay)(s.default)(e=>{let{theme:t}=e;return{padding:t.spacing(1,2),borderBottom:"1px solid ".concat(t.palette.divider)}}),tW=(0,ta.Ay)(s.default)({flexGrow:1,display:"flex",overflow:"hidden",minHeight:0}),tU=(0,ta.Ay)(s.default)(e=>{let{theme:t}=e;return{width:"200px",flexShrink:0,borderRight:"1px solid ".concat(t.palette.divider),overflowY:"auto",padding:t.spacing(1)}}),tH=(0,ta.Ay)(s.default)({flexGrow:1,position:"relative",height:"100%"}),tq=(0,ta.Ay)(s.default)(e=>{let{theme:t}=e;return{padding:t.spacing(1,2),borderTop:"1px solid ".concat(t.palette.divider),display:"flex",gap:t.spacing(1),justifyContent:"center"}}),tB=(0,ta.Ay)(s.default)(e=>{let{theme:t}=e;return{width:"6px",flexShrink:0,cursor:"col-resize",backgroundColor:t.palette.divider,transition:"background-color 120ms",touchAction:"none","&:hover":{backgroundColor:t.palette.primary.main}}}),tG=e=>{var t,n,r,a;let{debugState:u,conversationId:p,onStep:g,onStepOver:m,onContinue:x,onCancel:v,isLoading:b,breakpoints:y,onToggleBreakpoint:w,onClose:j,isExpanded:A,onToggleExpand:S,liveActivity:I}=e,k=(0,eh.A)(),[C,E]=(0,o.useState)(u.executionTrace&&u.executionTrace.length>0?u.executionTrace.length-1:-1),[T,N]=(0,o.useState)(()=>(function(){try{let e=JSON.parse(window.localStorage.getItem(tz)||"null");if(Array.isArray(e)){let t=e.filter(e=>tD.includes(e)),n=tD.filter(e=>!t.includes(e));if(t.length+n.length===tD.length)return[...t,...n]}}catch(e){}return[...tD]})()),[R,z]=(0,o.useState)(()=>(function(){let e={conversation:!0,tracker:!0,detail:!0};try{let t=JSON.parse(window.localStorage.getItem(t_)||"null");if(t&&"object"==typeof t)for(let n of tD)"boolean"==typeof t[n]&&(e[n]=t[n])}catch(e){}return e})()),[P,F]=(0,o.useState)(()=>tP(tM,480)),[L,W]=(0,o.useState)(()=>tP(tO,320)),[U,q]=(0,o.useState)(null),[B,G]=(0,o.useState)(!0),[V,Y]=(0,o.useState)(null),[Q,X,Z]=(0,ts.ck)([]),[$,ee,et]=(0,ts.fM)([]);(0,o.useEffect)(()=>{window.localStorage.setItem(tz,JSON.stringify(T))},[T]),(0,o.useEffect)(()=>{window.localStorage.setItem(t_,JSON.stringify(R))},[R]),(0,o.useEffect)(()=>{window.localStorage.setItem(tM,String(Math.round(P)))},[P]),(0,o.useEffect)(()=>{window.localStorage.setItem(tO,String(Math.round(L)))},[L]),(0,o.useEffect)(()=>{var e;let t=(null==(e=u.executionTrace)?void 0:e.length)||0;t>0?(E(e=>Math.min(e,t-1)),C<t-1&&E(t-1)):E(-1)},[u.executionTrace]),(0,o.useEffect)(()=>{(async()=>{if(!u.flowId){Y("Flow ID is missing in debug state."),G(!1);return}G(!0),Y(null);try{tE.debug("Loading flow definition for ID: ".concat(u.flowId));let e=await ti.g.getFlow(u.flowId);if(!e)throw Error("Flow with ID ".concat(u.flowId," not found."));q(e),tE.info("Flow definition loaded: ".concat(e.name))}catch(e){tE.error("Error loading flow definition:",e),Y(e instanceof Error?e.message:"Failed to load flow definition."),q(null)}finally{G(!1)}})()},[u.flowId]),(0,o.useEffect)(()=>{if(U){tE.debug("Setting nodes and edges from flow definition");let e=U.nodes.map(e=>({...e,draggable:!1,selectable:!1,connectable:!1})),t=U.edges.map(e=>({...e,selectable:!1}));X(e),ee(t)}},[U,X,ee]);let en=(0,o.useCallback)(()=>{if(tE.debug("Previous button clicked. Current index: ".concat(C)),C>0){let e=C-1;tE.debug("Setting current step index to: ".concat(e)),E(e)}else tE.debug("Already at the first step, cannot go previous.")},[C]),el=(0,o.useCallback)(()=>{var e;if(tE.debug("Next button clicked. Current index: ".concat(C,", Trace length: ").concat(null==(e=u.executionTrace)?void 0:e.length)),u.executionTrace&&C<u.executionTrace.length-1){let e=C+1;tE.debug("Navigating to next trace step: ".concat(e)),E(e)}else tE.info("At end of trace, triggering API call for next step."),g()},[C,u.executionTrace,g]),eo=(0,o.useMemo)(()=>{if(u.executionTrace&&C>=0&&C<u.executionTrace.length)return u.executionTrace[C]},[u.executionTrace,C]),er=(0,o.useMemo)(()=>(null==eo?void 0:eo.modelInputs)&&eo.modelInputs.length>0?eo.modelInputs:(null==eo?void 0:eo.modelInput)?[eo.modelInput]:void 0,[eo]),[ea,es]=(0,o.useState)(0);(0,o.useEffect)(()=>{es(0)},[C]);let ei=er?Math.min(ea,er.length-1):0,ed=null==er?void 0:er[ei],[ec,eu]=(0,o.useState)(()=>Date.now());(0,o.useEffect)(()=>{if(!I)return;let e=()=>{let e=Date.now();return[...Object.values(I.byNode),...Object.values(I.byResource),...Object.values(I.byResourceName)].some(t=>e-t.ts<4e3)};if(!e())return;let t=setInterval(()=>{eu(Date.now()),e()||clearInterval(t)},350);return()=>clearInterval(t)},[I]);let ef=(0,o.useCallback)(e=>{var t,n;if(!I)return null;let l=I.byNode[e.id];if(l&&ec-l.ts<4e3)return l;let o=e.data;if((null!=(t=null==o?void 0:o.type)?t:e.type)!=="resource")return null;let r=null!=(n=null==o?void 0:o.properties)?n:{},a="run"===r.scope?"string"==typeof r.runName?I.byResourceName[r.runName]:void 0:"string"==typeof r.boundServer&&"string"==typeof r.uri?I.byResource[tf(r.boundServer,r.uri)]:void 0;return a&&ec-a.ts<4e3?{kind:"read"===a.kind?"resource-read":"resource-write",ts:a.ts}:null},[I,ec]),ep=(0,o.useMemo)(()=>{let e=null==eo?void 0:eo.nodeId;return Q.map(t=>{var n;let l=t.id===e,o=null==y?void 0:y.includes(t.id),r=l?null:ef(t),a=r?Math.max(.25,1-(ec-r.ts)/4e3):0,s=(null==r?void 0:r.kind)==="active"?k.palette.primary.main:"#009688";return{...t,style:{...t.style,border:l?"2px solid ".concat(k.palette.warning.main):r?"2px solid ".concat(s):o?"2px dashed ".concat(k.palette.error.main):null==(n=t.style)?void 0:n.border,boxShadow:l?"0 0 10px ".concat(k.palette.warning.light):r?"0 0 ".concat("resource-write"===r.kind?14:10,"px ").concat(s).concat(Math.round(255*a).toString(16).padStart(2,"0")):void 0}}})},[Q,eo,y,k,ef,ec]),eg=(0,o.useMemo)(()=>T.filter(e=>R[e]),[T,R]),em=(0,o.useCallback)(e=>{z(t=>({...t,[e]:!t[e]}))},[]),ey=(0,o.useCallback)((e,t)=>{N(n=>{let l=n.indexOf(e),o=l+t;if(l<0||o<0||o>=n.length)return n;let r=[...n];return[r[l],r[o]]=[r[o],r[l]],r})},[]),ew=(0,o.useCallback)((e,t,n)=>{n.preventDefault();let l=n.clientX,o="conversation"===e?P:L,r="conversation"===e?F:W,a=document.body.style.userSelect,s=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let i=e=>{r(Math.min(Math.max(o+t*(e.clientX-l),240),1100))},d=()=>{window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",d),document.body.style.userSelect=a,document.body.style.cursor=s};window.addEventListener("pointermove",i),window.addEventListener("pointerup",d)},[P,L]),ej=(0,l.jsx)(s.default,{sx:{flexGrow:1,overflow:"hidden",minHeight:0,display:"flex",flexDirection:"column"},children:eo?ed&&er?(0,l.jsxs)(s.default,{sx:{flexGrow:1,minHeight:0,display:"flex",flexDirection:"column"},children:[er.length>1&&(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"center",gap:.5,px:1,py:.5,borderBottom:"1px solid ".concat(k.palette.divider)},children:[(0,l.jsx)(i.A,{title:"Previous model call",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>es(e=>Math.max(0,Math.min(e,er.length-1)-1)),disabled:ei<=0,"aria-label":"Previous model call",children:(0,l.jsx)(J.A,{fontSize:"small"})})})}),(0,l.jsxs)(f.default,{variant:"caption",color:"textSecondary",children:["Model call ",ei+1," / ",er.length]}),(0,l.jsx)(i.A,{title:"Next model call",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>es(e=>Math.min(er.length-1,Math.min(e,er.length-1)+1)),disabled:ei>=er.length-1,"aria-label":"Next model call",children:(0,l.jsx)(tl.A,{fontSize:"small"})})})})]}),(0,l.jsx)(s.default,{sx:{flexGrow:1,minHeight:0,overflow:"hidden",display:"flex",flexDirection:"column"},children:(0,l.jsx)(tC,{modelInput:ed,conversationId:p})})]}):(0,l.jsx)(f.default,{variant:"body2",color:"textSecondary",sx:{p:2},children:"No model call for this step."}):(0,l.jsx)(f.default,{variant:"body2",color:"textSecondary",sx:{p:2},children:"Select a step from the execution tracker."})}),eA={conversation:ej,tracker:(0,l.jsxs)(s.default,{sx:{flexGrow:1,display:"flex",overflow:"hidden",minHeight:0},children:[(0,l.jsxs)(tU,{children:[(0,l.jsx)(f.default,{variant:"caption",color:"textSecondary",gutterBottom:!0,sx:{display:"block"},children:"Execution Trace"}),(0,l.jsxs)(H.A,{dense:!0,disablePadding:!0,children:[null==(t=u.executionTrace)?void 0:t.map((e,t)=>(0,l.jsx)(_.Ay,{disablePadding:!0,children:(0,l.jsx)(M.A,{selected:t===C,onClick:()=>(e=>{u.executionTrace&&e>=0&&e<u.executionTrace.length?(tE.debug("Trace step selected: ".concat(e)),E(e)):tE.warn("Invalid step index selected: ".concat(e))})(t),children:(0,l.jsx)(O.A,{primary:"".concat(e.stepIndex,": ").concat(e.nodeName||e.nodeId),secondary:e.nodeType})})},e.stepIndex)),b&&(0,l.jsx)(_.Ay,{children:(0,l.jsx)(eD.default,{size:20,sx:{margin:"auto"}})})]})]}),(0,l.jsx)(tH,{children:B?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,l.jsx)(eD.default,{})}):V?(0,l.jsx)(c.A,{severity:"error",sx:{margin:2},children:V}):(0,l.jsxs)(ts.Ln,{children:[" ",(0,l.jsx)(ts.Gc,{nodes:ep,edges:$,onNodesChange:Z,onEdgesChange:et,nodeTypes:tT,edgeTypes:tN,fitView:!0,attributionPosition:"bottom-right",nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!1,onNodeClick:(e,t)=>{e.preventDefault(),w&&w(t.id)},onEdgeClick:e=>e.preventDefault(),onPaneClick:()=>{},children:" "})]})})]}),detail:(0,l.jsxs)(s.default,{sx:{flexGrow:1,overflowY:"auto",minHeight:0,p:2},children:[eo?(0,l.jsxs)(s.default,{children:[(0,l.jsxs)(f.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Node:"})," ",eo.nodeName," (",eo.nodeId,")"]}),(0,l.jsxs)(f.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Type:"})," ",eo.nodeType]}),(0,l.jsxs)(f.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Timestamp:"})," ",new Date(eo.timestamp).toLocaleString()]}),(0,l.jsxs)(f.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Action Taken:"})," ",eo.actionTaken]}),(0,l.jsxs)(te.A,{sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(tt.A,{expandIcon:(0,l.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(f.default,{variant:"caption",children:"Prep Result"})}),(0,l.jsx)(tn.A,{sx:{p:0},children:(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(eo.prepResultSnapshot,null,2)})})]}),(0,l.jsxs)(te.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(tt.A,{expandIcon:(0,l.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsxs)(f.default,{variant:"caption",color:(null==(n=eo.execResultSnapshot)?void 0:n.success)===!1?"error":"inherit",children:["Exec Result ",(null==(r=eo.execResultSnapshot)?void 0:r.success)===!1?"(Error)":""]})}),(0,l.jsx)(tn.A,{sx:{p:0},children:(null==(a=eo.execResultSnapshot)?void 0:a.success)===!1?(0,l.jsxs)(s.default,{sx:{p:1,background:k.palette.error.light,borderRadius:1},children:[(0,l.jsxs)(f.default,{variant:"body2",color:"error",gutterBottom:!0,children:[(0,l.jsx)("b",{children:"Error:"})," ",eo.execResultSnapshot.error||"Unknown error"]}),eo.execResultSnapshot.errorDetails&&(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"150px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"4px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(eo.execResultSnapshot.errorDetails,null,2)})]}):(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(eo.execResultSnapshot,null,2)})})]}),(0,l.jsxs)(te.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(tt.A,{expandIcon:(0,l.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(f.default,{variant:"caption",children:"State Before"})}),(0,l.jsx)(tn.A,{sx:{p:0},children:(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(eo.stateBefore,null,2)})})]}),(0,l.jsxs)(te.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(tt.A,{expandIcon:(0,l.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(f.default,{variant:"caption",children:"State After"})}),(0,l.jsx)(tn.A,{sx:{p:0},children:(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(eo.stateAfter,null,2)})})]})]}):(0,l.jsx)(f.default,{variant:"body2",color:"textSecondary",children:"Select a step from the execution tracker."}),(0,l.jsxs)(te.A,{defaultExpanded:!0,sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(tt.A,{expandIcon:(0,l.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(f.default,{variant:"caption",children:"Run Data"})}),(0,l.jsx)(tn.A,{sx:{p:0},children:(0,l.jsx)(tb,{conversationId:p,refreshToken:null==I?void 0:I.resourceVersion})})]})]})};return(0,l.jsxs)(tF,{elevation:2,children:[(0,l.jsxs)(tL,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-between"},children:[(0,l.jsxs)(s.default,{children:[(0,l.jsx)(f.default,{variant:"h6",children:"Flow Debugger"}),(0,l.jsxs)(f.default,{variant:"caption",color:"textSecondary",display:"block",children:["Click a node to toggle a breakpoint",y&&y.length>0?" \xb7 ".concat(y.length," active"):""]})]}),(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,l.jsx)(i.A,{title:R.conversation?"Hide Conversation":"Show Conversation",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>em("conversation"),color:R.conversation?"primary":"default","aria-label":R.conversation?"Hide Conversation":"Show Conversation",children:(0,l.jsx)(to.A,{fontSize:"small"})})}),(0,l.jsx)(i.A,{title:R.tracker?"Hide Execution Tracker":"Show Execution Tracker",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>em("tracker"),color:R.tracker?"primary":"default","aria-label":R.tracker?"Hide Execution Tracker":"Show Execution Tracker",children:(0,l.jsx)(D.A,{fontSize:"small"})})}),(0,l.jsx)(i.A,{title:R.detail?"Hide Detail":"Show Detail",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>em("detail"),color:R.detail?"primary":"default","aria-label":R.detail?"Hide Detail":"Show Detail",children:(0,l.jsx)(tr.A,{fontSize:"small"})})}),S&&(0,l.jsx)(i.A,{title:A?"Exit full screen":"Expand to full screen",children:(0,l.jsx)(d.A,{size:"small",onClick:S,"aria-label":A?"Exit full screen":"Expand to full screen",children:A?(0,l.jsx)(eb.A,{fontSize:"small"}):(0,l.jsx)(ev.A,{fontSize:"small"})})}),j&&(0,l.jsx)(i.A,{title:"Close debugger",children:(0,l.jsx)(d.A,{size:"small",onClick:j,"aria-label":"Close debugger",children:(0,l.jsx)(ex.A,{fontSize:"small"})})})]})]}),(0,l.jsx)(tW,{children:0===eg.length?(0,l.jsx)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",p:3},children:(0,l.jsx)(f.default,{variant:"body2",color:"textSecondary",children:"All sections are hidden — use the toolbar toggles above to show a section."})}):eg.map((e,t)=>(0,l.jsxs)(o.Fragment,{children:[(e=>{let t="tracker"!==e,n="conversation"===e?P:"detail"===e?L:void 0;return(0,l.jsxs)(s.default,{sx:{...t?{width:n,flexShrink:0}:{flexGrow:1,minWidth:300},display:"flex",flexDirection:"column",overflow:"hidden",minHeight:0},children:[(e=>{let t=eg.indexOf(e);return(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",px:1,py:.5,borderBottom:"1px solid ".concat(k.palette.divider)},children:[(0,l.jsx)(f.default,{variant:"subtitle2",noWrap:!0,children:tR[e]}),(0,l.jsxs)(s.default,{sx:{display:"flex"},children:[(0,l.jsx)(i.A,{title:"Move left",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>ey(e,-1),disabled:t<=0,"aria-label":"Move ".concat(tR[e]," left"),children:(0,l.jsx)(J.A,{fontSize:"small"})})})}),(0,l.jsx)(i.A,{title:"Move right",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>ey(e,1),disabled:t<0||t>=eg.length-1,"aria-label":"Move ".concat(tR[e]," right"),children:(0,l.jsx)(tl.A,{fontSize:"small"})})})}),(0,l.jsx)(i.A,{title:"Hide section",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>em(e),"aria-label":"Hide ".concat(tR[e]),children:(0,l.jsx)(ex.A,{fontSize:"small"})})})]})]})})(e),eA[e]]},e)})(e),t<eg.length-1&&((e,t)=>{let n="tracker"!==e?e:"tracker"!==t?t:null;if(!n)return null;let o="tracker"!==e?1:-1;return(0,l.jsx)(tB,{onPointerDown:e=>ew(n,o,e),"aria-label":"Resize ".concat(tR[n]," section")},"resizer-".concat(e,"-").concat(t))})(e,eg[t+1])]},e))}),(0,l.jsxs)(tq,{children:[(0,l.jsx)(h.A,{variant:"outlined",size:"small",onClick:en,disabled:b||C<=0,children:"Previous"}),(0,l.jsx)(h.A,{variant:"contained",size:"small",onClick:el,disabled:b||-1===C,children:u.executionTrace&&C<u.executionTrace.length-1?"Next Trace Step":"Step Next"}),m&&(0,l.jsx)(h.A,{variant:"outlined",size:"small",onClick:m,disabled:b,children:"Step Over"}),(0,l.jsx)(h.A,{variant:"contained",color:"secondary",size:"small",onClick:x,disabled:b,children:"Continue"}),(0,l.jsx)(h.A,{variant:"outlined",color:"error",size:"small",onClick:v,disabled:b,children:"Stop"})]})]})},tJ=(0,e8.h)("frontend/components/Chat/ExecutedFlowPanel"),tV={start:td.vm,process:td.Uw,finish:td.IK,mcp:td.v2,subflow:td.lA,resource:td.z9,signal:td.z3},tY={custom:tc.jY,mcpEdge:tc.oY,resourceEdge:tc.sZ},tK=e=>{let{flowId:t,flowSnapshot:n,executedNodeIds:r,liveActivity:a,onClose:u}=e,p=(0,eh.A)(),[h,g]=(0,o.useState)(null),[m,x]=(0,o.useState)(!0),[v,b]=(0,o.useState)(null),[y,w,j]=(0,ts.ck)([]),[A,S,I]=(0,ts.fM)([]);(0,o.useEffect)(()=>{let e=!1;return(async()=>{x(!0),b(null);try{if(n&&Array.isArray(n.nodes)){e||g(n);return}if(!t)throw Error("No flow is associated with this conversation yet.");tJ.debug("Loading flow definition for ID: ".concat(t));let l=await ti.g.getFlow(t);if(!l)throw Error("Flow with ID ".concat(t," not found."));e||g(l)}catch(t){tJ.error("Error loading flow definition:",t),e||(b(t instanceof Error?t.message:"Failed to load flow definition."),g(null))}finally{e||x(!1)}})(),()=>{e=!0}},[t,n]),(0,o.useEffect)(()=>{h&&(w(h.nodes.map(e=>({...e,draggable:!1,selectable:!1,connectable:!1}))),S(h.edges.map(e=>({...e,selectable:!1}))))},[h,w,S]);let k=(0,o.useMemo)(()=>new Set(r),[r]),[C,E]=(0,o.useState)(()=>Date.now());(0,o.useEffect)(()=>{if(!a)return;let e=()=>Object.values(a.byNode).some(e=>Date.now()-e.ts<4e3);if(!e())return;let t=setInterval(()=>{E(Date.now()),e()||clearInterval(t)},350);return()=>clearInterval(t)},[a]);let T=(0,o.useMemo)(()=>y.map(e=>{let t=k.has(e.id),n=null==a?void 0:a.byNode[e.id],l=!!n&&C-n.ts<4e3;return{...e,style:{...e.style,opacity:t||l?1:.4,border:l?"2px solid ".concat(p.palette.primary.main):t?"2px solid ".concat(p.palette.success.main):"1px solid ".concat(p.palette.divider),boxShadow:l?"0 0 10px ".concat(p.palette.primary.light):t?"0 0 8px ".concat(p.palette.success.light):void 0}}}),[y,k,a,C,p]);return(0,l.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",height:"100%",borderLeft:1,borderColor:"divider",minWidth:0},children:[(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1,px:1.5,py:1,borderBottom:1,borderColor:"divider",flexShrink:0},children:[(0,l.jsx)(D.A,{fontSize:"small",color:"action"}),(0,l.jsx)(f.default,{variant:"subtitle2",sx:{flex:1,minWidth:0},noWrap:!0,children:"Executed Steps"}),(0,l.jsx)(i.A,{title:"Hide panel",children:(0,l.jsx)(d.A,{size:"small",onClick:u,"aria-label":"Hide executed steps panel",children:(0,l.jsx)(ex.A,{fontSize:"small"})})})]}),(0,l.jsx)(s.default,{sx:{flex:1,minHeight:0,position:"relative"},children:m?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,l.jsx)(eD.default,{})}):v?(0,l.jsx)(c.A,{severity:"info",sx:{m:2},children:v}):(0,l.jsx)(ts.Ln,{children:(0,l.jsx)(ts.Gc,{nodes:T,edges:A,onNodesChange:j,onEdgesChange:I,nodeTypes:tV,edgeTypes:tY,fitView:!0,attributionPosition:"bottom-right",nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!1})})})]})};function tQ(e){var t;return null==e||null==(t=e.nodes)?void 0:t.find(e=>{var t,n;return(null!=(n=null==e?void 0:e.type)?n:null==e||null==(t=e.data)?void 0:t.type)==="start"})}var tX=n(94929),tZ=n(74879),t$=n(29155),t0=n(63650),t1=n(49479);let t2=(0,e8.h)("frontend/components/Chat/index");function t5(e){var t,n;if(Array.isArray(e.content))return e.content;let l="string"==typeof e.content?e.content:"",o=null!=(t=e.attachments)?t:[],r=o.filter(e=>"document"===e.type&&!e.content.startsWith("data:")),a=o.filter(e=>"image"===e.type),s=o.filter(e=>"image"!==e.type&&!r.includes(e));if(r.length>0&&(l+="\n\n"+r.map(e=>"[DOCUMENT]: ".concat(e.content)).join("\n\n")),0===a.length&&0===s.length)return l;let i=[];for(let e of(l.trim()&&i.push({type:"text",text:l}),a))i.push({type:"image_url",image_url:{url:e.content}});for(let e of s)if("audio"===e.type){let t=/^data:([^;,]+);base64,([\s\S]*)$/.exec(e.content),l=null!=(n=e.mimeType)?n:null==t?void 0:t[1];t&&("audio/wav"===l||"audio/mpeg"===l)?i.push({type:"input_audio",input_audio:{data:t[2],format:"audio/mpeg"===l?"mp3":"wav"}}):i.push({type:"audio_url",audio_url:{url:e.content,mime_type:l}}),e.transcript&&i.push({type:"text",text:"[Audio transcript]: ".concat(e.transcript)})}else"video"===e.type?i.push({type:"video_url",video_url:{url:e.content,mime_type:e.mimeType}}):i.push({type:"file",file:{file_data:e.content,filename:e.originalName,mime_type:e.mimeType}});return i}let t6=/cancelled by user|execution cancelled/i,t3=e=>{var t,n;return(null==e?void 0:e.code)==="cancelled"||(null==e||null==(t=e.error)?void 0:t.code)==="cancelled"||[null==e?void 0:e.message,"string"==typeof(null==e||null==(n=e.body)?void 0:n.error)?e.body.error:void 0].some(e=>"string"==typeof e&&t6.test(e))},t4=()=>{var e,t,n;let r=(0,a.useRouter)(),[_,M]=(0,o.useState)([]),[O,P]=(0,o.useState)(!0),[F,L]=(0,o.useState)(null),[W,U]=(0,o.useState)(null),[H,q]=(0,o.useState)(!1),[B,G]=(0,o.useState)(null),[J,V]=(0,z.Mj)(z.Zg.CURRENT_CONVERSATION_ID,null),Y=(0,o.useRef)(J),K=(0,o.useRef)(new Map),Q=(0,o.useRef)(0),X=(0,o.useCallback)(e=>{let t=Q.current+1;Q.current=t;let n=Y.current;if(n===e)return void V(e);let l=n?"".concat(n,"\0"):null,o=l?[...K.current.entries()].filter(e=>{let[t]=e;return t.startsWith(l)}).map(e=>{let[,t]=e;return t}):[];if(0===o.length){Y.current=e,V(e);return}Promise.allSettled(o.map(e=>e())).then(()=>{Q.current===t&&(Y.current=e,V(e))})},[V]),[Z,ee]=(0,z.Mj)(z.Zg.LAST_PICKED_FLOW_ID,null),[et,en]=(0,o.useState)(!1),[el,eo]=(0,o.useState)(new Set),er=(0,o.useCallback)((e,t)=>{e&&eo(n=>{if(t===n.has(e))return n;let l=new Set(n);return t?l.add(e):l.delete(e),l})},[]),[ea,es]=(0,o.useState)({}),ei=(0,o.useRef)(!1),[ed,ec]=(0,o.useState)(null),[eh,eg]=(0,o.useState)([]),[em,ex]=(0,o.useState)(!1),[ev,eb]=(0,o.useState)(!1),[ey,ej]=(0,o.useState)(""),[eD,eR]=(0,o.useState)(!1),[ez,e_]=(0,o.useState)(null),[eM,eF]=(0,o.useState)(null),[eL,eW]=(0,o.useState)(null),[eH,eq]=(0,o.useState)(null),[eB,eJ]=(0,o.useState)(null),[eV,eY]=(0,o.useState)(null),[eK,eQ]=(0,o.useState)(!1),[eX,eZ]=(0,o.useState)(null),[e$,e2]=(0,o.useState)(!1),[e5,e6]=(0,o.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-debugger-width"));return Number.isFinite(e)&&e>0?e:0}),[e3,e4]=(0,o.useState)(()=>"1"===window.localStorage.getItem("flujo-debugger-expanded"));(0,o.useEffect)(()=>{window.localStorage.setItem("flujo-debugger-expanded",e3?"1":"0")},[e3]);let[e8,e7]=(0,o.useState)(()=>"1"===window.localStorage.getItem("flujo-workflow-panel-visible"));(0,o.useEffect)(()=>{window.localStorage.setItem("flujo-workflow-panel-visible",e8?"1":"0")},[e8]);let[te,tt]=(0,o.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-workflow-panel-width"));return Number.isFinite(e)&&e>0?e:320}),tn=(0,o.useCallback)(e=>{e.preventDefault();let t=e.clientX,n=0;tt(e=>(n=e,e));let l=document.body.style.userSelect,o=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let r=e=>{tt(Math.min(Math.max(n+(t-e.clientX),240),Math.round(.7*window.innerWidth)))},a=()=>{window.removeEventListener("pointermove",r),window.removeEventListener("pointerup",a),document.body.style.userSelect=l,document.body.style.cursor=o,tt(e=>(e>0&&window.localStorage.setItem("flujo-workflow-panel-width",String(Math.round(e))),e))};window.addEventListener("pointermove",r),window.addEventListener("pointerup",a)},[]),tl=(0,o.useCallback)(e=>{e.preventDefault();let t=document.body.style.userSelect,n=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let l=e=>{e6(Math.min(Math.max(window.innerWidth-e.clientX,360),Math.round(.85*window.innerWidth)))},o=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",o),document.body.style.userSelect=t,document.body.style.cursor=n,e6(e=>(e>0&&window.localStorage.setItem("flujo-debugger-width",String(Math.round(e))),e))};window.addEventListener("pointermove",l),window.addEventListener("pointerup",o)},[]),[to,tr]=(0,o.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-chat-sidebar-width"));return Number.isFinite(e)&&e>0?e:300}),[ta,ts]=(0,o.useState)(()=>"1"===window.localStorage.getItem("flujo-chat-sidebar-collapsed")),td=(0,o.useCallback)(()=>{ts(e=>{let t=!e;return window.localStorage.setItem("flujo-chat-sidebar-collapsed",t?"1":"0"),t})},[]),tc=(0,o.useCallback)(e=>{e.preventDefault();let t=document.body.style.userSelect,n=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let l=e=>{tr(Math.min(Math.max(e.clientX,220),560))},o=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",o),document.body.style.userSelect=t,document.body.style.cursor=n,tr(e=>(e>0&&window.localStorage.setItem("flujo-chat-sidebar-width",String(Math.round(e))),e))};window.addEventListener("pointermove",l),window.addEventListener("pointerup",o)},[]),[tp,th]=(0,o.useState)(null),[tg,tm]=(0,o.useState)(tu),[tx,tv]=(0,o.useState)(eO),[tb,ty]=(0,o.useState)([]),[tw,tj]=(0,o.useState)(new Set),[tA,tS]=(0,o.useState)([]),[tI,tk]=(0,o.useState)(null),tC=(0,o.useRef)(null),tE=(0,o.useRef)(null),tT=(0,o.useRef)(null),tN=(0,o.useRef)(-1),tD=(0,o.useRef)(new Map);(0,o.useEffect)(()=>{Y.current=J},[J]);let tR=(0,o.useRef)(new Set),tz=(0,o.useRef)(new Set),t_=(0,o.useRef)(new Set),[tM,tO]=(0,o.useState)(new Set),tP=(0,o.useCallback)((e,t)=>{e&&(t?t_.current.add(e):t_.current.delete(e),tO(new Set(t_.current)))},[]),tF=(0,o.useRef)(null),tL=(0,o.useRef)(!0),[tW,tU]=(0,o.useState)(!1),tH=(0,o.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"auto",t=tF.current;t&&t.scrollTo({top:t.scrollHeight,behavior:e})},[]),tq=(0,o.useCallback)(()=>{let e=tF.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight<80;tL.current=t,tU(!t)},[]),tB=(0,o.useCallback)(()=>{tL.current=!0,tU(!1),tH("smooth")},[tH]);(0,o.useEffect)(()=>{tL.current=!0,tU(!1)},[J]),(0,o.useEffect)(()=>{tL.current&&tH("auto")},[null==W?void 0:W.messages,tH]);let tJ=(0,o.useRef)(null);(0,o.useEffect)(()=>{tJ.current=tI},[tI]),(0,o.useEffect)(()=>{let e=window.location.origin+"/v1";tC.current=new t$.Ay({baseURL:e,apiKey:"FLUJO",dangerouslyAllowBrowser:!0,maxRetries:0,timeout:18e6})},[]),(0,o.useEffect)(()=>{(async()=>{t2.debug("Loading flows");try{let e=await ti.g.loadFlows();eg(e)}catch(e){t2.error("Error loading flows:",e)}})()},[]);let tV=(0,o.useCallback)(async(e,t)=>{var n;let l=null!=(n=null==t?void 0:t.silent)&&n;t2.debug("Fetching conversation list from backend",{silent:l}),l||(P(!0),L(null));let o=[],r=!1;try{for(let e of o=(await t1.O.listConversations()).filter(e=>!tz.current.has(e.id)).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))tR.current.delete(e.id);M(e=>{let t=e.filter(e=>tR.current.has(e.id)),n=t.length>0?[...t,...o].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}):o;return((e,t)=>e.length===t.length&&e.every((e,n)=>{let l=t[n];return e.id===l.id&&e.title===l.title&&e.flowId===l.flowId&&e.status===l.status&&e.plannedExecutionId===l.plannedExecutionId&&e.parentConversationId===l.parentConversationId&&e.rootConversationId===l.rootConversationId&&e.createdAt===l.createdAt&&e.updatedAt===l.updatedAt}))(e,n)?e:n}),t2.info("Fetched ".concat(o.length," conversations for the list"))}catch(e){r=!0,t2.error("Error fetching conversation list:",e),l||(L("Failed to load conversation history."),M([]))}finally{if(l||P(!1),l||r)return;let t=void 0!==e?e:Y.current,n=Y.current;if(t&&(e=>o.some(t=>t.id===e)||tR.current.has(e))(t))t!==n&&(t2.debug("Setting currentConversationId to ".concat(t," after fetch/operation.")),X(t));else if(o.length>0){let e=o[0].id;e!==n&&(t2.debug("Selecting most recent conversation ".concat(e," after fetch/operation.")),X(e))}else null===n||tR.current.has(n)||(t2.debug("No conversations available after fetch/operation, clearing selection."),X(null))}},[X]);(0,o.useEffect)(()=>{tV()},[]),(0,o.useEffect)(()=>{let e=()=>{("undefined"==typeof document||"visible"===document.visibilityState)&&tV(void 0,{silent:!0})},t=setInterval(e,5e3);return document.addEventListener("visibilitychange",e),()=>{clearInterval(t),document.removeEventListener("visibilitychange",e)}},[tV]);let tY=(0,o.useCallback)(async e=>{if(tR.current.has(e))return void t2.debug("Skipping detail fetch for client-only conversation",{conversationId:e});if(Y.current!==e){t2.debug("Detail fetch requested for non-viewed conversation; refreshing list instead",{conversationId:e}),tV(void 0,{silent:!0});return}t2.debug("Fetching detailed conversation",{conversationId:e}),q(!0),G(null);try{let t=await t1.O.getConversation(e);if(Y.current!==e)return void t2.debug("Discarding stale detailed conversation response",{fetchedId:e,currentId:Y.current});void 0===t.mcpAppContexts||tD.current.has(e)||tD.current.set(e,{...t.mcpAppContexts}),U(t),M(n=>n.map(n=>{var l;return n.id===e?{...n,title:t.title,flowId:t.flowId,updatedAt:t.updatedAt,status:null!=(l=t.status)?l:n.status}:n}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),t2.info("Fetched detailed conversation successfully",{conversationId:e})}catch(t){if(t2.error("Error fetching detailed conversation:",{conversationId:e,err:t}),Y.current!==e)return;t instanceof t1.b&&404===t.status?(G("Conversation ".concat(e," not found.")),X(null),tV()):G("Failed to load details for conversation ".concat(e,".")),U(null)}finally{Y.current===e&&q(!1)}},[tV,X]);(0,o.useEffect)(()=>{e_(null),eJ(null),J?tY(J):(U(null),q(!1),G(null))},[J,tY]),(0,o.useEffect)(()=>{if(W){var e;ex(null!=(e=W.requireApproval)&&e)}},[null==W?void 0:W.id]);let t4=(0,o.useCallback)(async e=>{if(ex(e),J)try{await t1.O.updateConversationApproval(J,e)}catch(e){t2.warn("Failed to persist requireApproval setting",{conversationId:J,err:e})}},[J]),t8=_.find(e=>e.id===J)||null,t7=(0,o.useMemo)(()=>{let e={};for(let t of eh)t.id&&(e[t.id]=t.name);return e},[eh]),t9=(0,o.useMemo)(()=>eh.find(e=>e.id===(null==W?void 0:W.flowId))||null,[eh,null==W?void 0:W.flowId]),ne=(0,o.useMemo)(()=>{var e;return(null==t9||null==(e=t9.nodes)?void 0:e.map(e=>({id:e.id,label:e.data.label||e.id})))||[]},[t9]),nt=(0,o.useMemo)(()=>{var e;return function(e){var t,n,l,o;let r=new Set;return null==(t=e.messages)||t.forEach(e=>{(null==e?void 0:e.processNodeId)&&r.add(e.processNodeId)}),null==(n=e.nodeExecutionTracker)||n.forEach(e=>{(null==e?void 0:e.nodeId)&&r.add(e.nodeId)}),null==(l=e.executionTrace)||l.forEach(e=>{(null==e?void 0:e.nodeId)&&r.add(e.nodeId)}),null==(o=e.sseVisitedIds)||o.forEach(e=>{e&&r.add(e)}),Array.from(r)}({messages:null==W?void 0:W.messages,nodeExecutionTracker:null==eX||null==(e=eX.trackingInfo)?void 0:e.nodeExecutionTracker,executionTrace:null==eX?void 0:eX.executionTrace,sseVisitedIds:tw})},[null==W?void 0:W.messages,eX,tw]);(0,o.useEffect)(()=>{tj(new Set)},[null==W?void 0:W.id]);let nn=(0,o.useMemo)(()=>{var e,t,n;let l=e=>!!e&&ne.some(t=>t.id===e);if(l(eB))return eB;if(l(null==W?void 0:W.currentNodeId))return W.currentNodeId;let o=null!=(t=null==W?void 0:W.messages)?t:[];for(let e=o.length-1;e>=0;e--){let t=o[e];if("assistant"===t.role&&l(t.processNodeId))return t.processNodeId}return null!=(n=null==(e=ne[0])?void 0:e.id)?n:null},[eB,W,ne]),nl=async e=>{var t,n,l,o;t2.debug("Attempting to create new conversation"),ec(null);let r="string"!=typeof e||$(e)?void 0:eh.find(t=>t.id===e),a=Z&&!$(Z)?eh.find(e=>e.id===Z):void 0,s=(null==(t=null!=(l=null!=(n=null!=r?r:a)?n:eh.find(e=>e.favorite))?l:eh[0])?void 0:t.id)||null;if(!s){t2.error("Cannot create conversation: No flows available or first flow has no ID."),ec("Cannot create a new conversation: No flows available.");return}let i=(0,tZ.A)(),d=Date.now(),c={id:i,title:"New Conversation",flowId:s,createdAt:d,updatedAt:d};try{t2.info("Sending request to create conversation on backend",{payload:JSON.stringify(c)});let e=await t1.O.createConversation(c);t2.info("Successfully created conversation on backend",{conversationId:e.id}),M(t=>[e,...t].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),X(e.id),U({id:e.id,title:e.title,flowId:e.flowId,createdAt:e.createdAt,updatedAt:e.updatedAt,messages:[]}),q(!1),G(null)}catch(t){t2.error("Error creating conversation on backend:",t);let e="Failed to create conversation on the server.";t instanceof t1.b?e+=" Error: ".concat((null==(o=t.body)?void 0:o.error)||t.message):t instanceof Error&&(e+=" Error: ".concat(t.message)),ec(e)}},no=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(no.current||0===eh.length)return;let e=new URLSearchParams(window.location.search).get("flow");if(!e){no.current=!0;return}no.current=!0,eh.some(t=>t.id===e)&&!$(e)&&nl(e),r.replace("/chat")},[eh]);let[nr,na]=(0,o.useState)(!1),ns=async e=>{ec(null);let t=(0,tZ.A)(),{flow:n}=await t1.O.synthesizeQuickChat({conversationId:t,modelId:e.modelId,servers:e.servers,systemPrompt:e.systemPrompt}),l=Date.now(),o=await t1.O.createConversation({id:t,title:"Quick Chat",flowId:n.id,flowSnapshot:n,createdAt:l,updatedAt:l});M(e=>[o,...e].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),X(o.id),U({id:o.id,title:o.title,flowId:o.flowId,createdAt:o.createdAt,updatedAt:o.updatedAt,messages:[]}),q(!1),G(null),na(!1)},ni=(0,o.useCallback)(e=>{t2.debug("Updating detailed conversation state locally",{conversationId:e.id});let t={...e,updatedAt:Date.now()};U(t),M(e=>e.map(e=>e.id===t.id?{...e,title:t.title,updatedAt:t.updatedAt}:e).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))},[]),nd=(0,o.useCallback)(()=>{tT.current&&(t2.debug("Closing execution event stream"),tT.current.close(),tT.current=null)},[]),nc=(0,o.useCallback)((e,t)=>{M(n=>{let l=n.findIndex(t=>t.id===e);if(-1===l||n[l].status===t)return n;let o=[...n];return o[l]={...o[l],status:t},o})},[]),nu=(0,o.useCallback)(e=>{var t,n,l,o,r;if("number"==typeof e.seq){if(e.seq<=tN.current)return;tN.current=e.seq}let a=e=>th(t=>{var n,l,o,r;return{totalTokens:null!=(l=null!=(n=e.totalTokens)?n:null==t?void 0:t.totalTokens)?l:0,activeNode:void 0!==e.activeNode?e.activeNode:null!=(o=null==t?void 0:t.activeNode)?o:null,startedAt:null!=(r=null==t?void 0:t.startedAt)?r:Date.now(),lastEventAt:Date.now()}}),s=e=>tm(t=>{let n=Date.now(),l={byNode:{...t.byNode},byResource:{...t.byResource},byResourceName:{...t.byResourceName},resourceVersion:t.resourceVersion};return e(l),function(e,t){let n=e=>{let n={};for(let[l,o]of Object.entries(e))t-o.ts<4e3&&(n[l]=o);return n};return{byNode:n(e.byNode),byResource:n(e.byResource),byResourceName:n(e.byResourceName),resourceVersion:e.resourceVersion}}(l,n)});if(null!=e.laneIndex)switch(tv(t=>(function(e,t){var n,l,o,r,a,s;let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),d=t.laneIndex,c=t.laneCount;if(null==d||null==c)return e;let u=("subflow:start"===t.type||"subflow:done"===t.type)&&1===t.depth;if(u&&"subflow:start"===t.type){let r=null==(n=t.node)?void 0:n.nodeId,a=e.ownerNodeId&&r&&e.ownerNodeId!==r?{}:{...e.byIndex};return eP(a,c,i),a[d]={laneIndex:d,laneCount:c,label:t.laneTitle||function(e,t,n){let l=e.subflowName||e.subflowId;return l?"".concat(l," ").concat(t+1,"/").concat(n):"Lane ".concat(t+1,"/").concat(n)}(t,d,c),laneConversationId:null!=(o=t.laneConversationId)?o:null==(l=a[d])?void 0:l.laneConversationId,status:"running",lastEventAt:i},{ownerNodeId:null!=r?r:e.ownerNodeId,byIndex:a}}if(u&&"subflow:done"===t.type){let n={...e.byIndex};eP(n,c,i);let l=n[d];return n[d]={...l,label:l.label&&"pending"!==l.status?l.label:t.laneTitle||l.label,laneConversationId:null!=(a=l.laneConversationId)?a:t.laneConversationId,status:"capped"===t.status?"completed":t.status,activity:void 0,lastEventAt:i},{ownerNodeId:null!=(s=e.ownerNodeId)?s:null==(r=t.node)?void 0:r.nodeId,byIndex:n}}let f=function(e){switch(e.type){case"node:enter":var t,n;return(null==(t=e.node)?void 0:t.nodeName)||(null==(n=e.node)?void 0:n.nodeId)||void 0;case"tool:call":return e.name;case"tool:progress":return e.message?"".concat(e.name," — ").concat(e.message):e.name;case"subflow:start":return"↳ ".concat(e.subflowName||e.subflowId);case"handoff":return"→ ".concat(e.toNodeId);default:return}}(t);if(void 0===f)return e;let p=e.byIndex[d];if(p&&p.activity===f&&"pending"!==p.status||p&&("completed"===p.status||"error"===p.status))return e;let h={...e.byIndex};eP(h,c,i);let g=h[d];return h[d]={...g,status:"pending"===g.status?"running":g.status,activity:f,lastEventAt:i},{ownerNodeId:e.ownerNodeId,byIndex:h}})(t,e)),e.type){case"node:enter":if(null==(t=e.node)?void 0:t.nodeId){let t=e.node.nodeId;s(e=>{e.byNode[t]={kind:"active",ts:Date.now()}}),tj(e=>e.has(t)?e:new Set(e).add(t))}a({});return;case"tool:call":case"tool:progress":case"subflow:start":case"handoff":a({});return}switch(e.type){case"run:start":th({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),tm(tu),tv(eO),ty([]),e.conversationId&&(nc(e.conversationId,"running"),tP(e.conversationId,!1));break;case"model:delta":a({}),U(t=>{var n,l,o,r,a,s,i,d,c,u,f;if(!t||t.id!==e.conversationId)return t;let p=t.messages.findIndex(t=>t.id===e.messageId),h=p>=0?t.messages[p]:{id:e.messageId,role:"assistant",content:"",timestamp:e.timestamp,processNodeId:null==(n=e.node)?void 0:n.nodeId};if("assistant"!==h.role)return t;let g=[...null!=(l=h.tool_calls)?l:[]],m=e.toolCallDelta;if(m){let t=g[m.index];g[m.index]={id:null!=(r=null!=(o=m.id)?o:null==t?void 0:t.id)?r:"pending_".concat(e.messageId,"_").concat(m.index),type:"function",function:{name:"".concat(null!=(a=null==t?void 0:t.function.name)?a:"").concat(null!=(s=m.nameDelta)?s:""),arguments:"".concat(null!=(i=null==t?void 0:t.function.arguments)?i:"").concat(null!=(d=m.argumentsDelta)?d:"")}}}let x={...h,content:"".concat("string"==typeof h.content?h.content:"").concat(null!=(c=e.delta)?c:""),...e.mediaPart?{media:[...null!=(u=h.media)?u:[],...(null!=(f=h.media)?f:[]).some(t=>{var n,l,o;return t.type===(null==(n=e.mediaPart)?void 0:n.type)&&t.url===(null==(l=e.mediaPart)?void 0:l.url)&&t.resourceUri===(null==(o=e.mediaPart)?void 0:o.resourceUri)})?[]:[e.mediaPart]]}:{},...g.length>0?{tool_calls:g}:{}},v=[...t.messages];return p>=0?v[p]=x:v.push(x),{...t,messages:v}});break;case"model:end":a({}),e.discard&&e.messageId&&U(t=>{if(!t||t.id!==e.conversationId)return t;let n=t.messages.filter(t=>t.id!==e.messageId);return n.length===t.messages.length?t:{...t,messages:n}});break;case"message":{let t=e.message;a({}),U(n=>{let l;if(!n||n.id!==e.conversationId)return n;let o=n.messages.findIndex(e=>e.id===t.id);return o>=0?(l=[...n.messages])[o]={...l[o],...t}:l=[...n.messages,t],{...n,messages:l}});break}case"usage":th(t=>{var n,l,o;return{totalTokens:(null!=(n=null==t?void 0:t.totalTokens)?n:0)+(e.totalTokens||0),activeNode:null!=(l=null==t?void 0:t.activeNode)?l:null,startedAt:null!=(o=null==t?void 0:t.startedAt)?o:Date.now(),lastEventAt:Date.now()}});break;case"node:enter":if(a({activeNode:(null==(n=e.node)?void 0:n.nodeName)||(null==(l=e.node)?void 0:l.nodeId)||null}),null==(o=e.node)?void 0:o.nodeId){let t=e.node.nodeId;s(e=>{e.byNode[t]={kind:"active",ts:Date.now()}}),tj(e=>e.has(t)?e:new Set(e).add(t))}break;case"resource:read":case"resource:write":{let t="resource:read"===e.type?"read":"write";s(n=>{var l;let o=Date.now();(null==(l=e.node)?void 0:l.nodeId)&&(n.byNode[e.node.nodeId]={kind:"read"===t?"resource-read":"resource-write",ts:o}),e.server&&e.uri&&(n.byResource[tf(e.server,e.uri)]={kind:t,ts:o}),e.name&&(n.byResourceName[e.name]={kind:t,ts:o}),"write"===t&&(n.resourceVersion=n.resourceVersion+1)}),a({});break}case"todo:update":ty(null!=(r=e.todos)?r:[]),a({});break;case"tool:call":a({activeNode:e.name});break;case"tool:progress":a({activeNode:e.message?"".concat(e.name," — ").concat(e.message):e.name});break;case"subflow:start":a({activeNode:"↳ ".concat(e.subflowName||e.subflowId)});break;case"handoff":a({activeNode:"→ ".concat(e.toNodeId)});break;case"run:awaiting_approval":e.conversationId&&e.conversationId===Y.current&&e_(e.pendingToolCalls||[]),e.conversationId&&nc(e.conversationId,"awaiting_tool_approval");break;case"run:awaiting_elicitation":e.conversationId&&e.conversationId===Y.current&&eF({elicitationId:e.elicitationId,message:e.message,requestedSchema:e.requestedSchema});break;case"run:awaiting_question":e.conversationId&&e.conversationId===Y.current&&eW({questionId:e.questionId,questions:e.questions});break;case"breakpoint:hit":case"run:paused":en(!1),e.conversationId&&(er(e.conversationId,!1),nc(e.conversationId,"paused_debug")),eQ(!0);break;case"run:done":if(e.conversationId&&(er(e.conversationId,!1),nc(e.conversationId,e.status)),e.conversationId===Y.current&&(eF(null),eW(null)),e.conversationId&&tJ.current&&e.conversationId!==tJ.current)break;th(null),tm(tu),tv(eO),en(!1),tk(null),nd(),e.conversationId&&e.conversationId===Y.current?tY(e.conversationId):tV(void 0,{silent:!0});break;case"error":ec(e.message||"Execution error");break;default:a({})}},[nd,tY,tV,er,nc,tP]),nf=(0,o.useCallback)((e,t)=>(nd(),tN.current=void 0!==t?t-1:-1,tv(eO),new Promise(n=>{let l=!1,o=()=>{l||(l=!0,n())};try{tT.current=t1.O.subscribeToEvents(e,{onEvent:nu,onOpen:o},t),setTimeout(o,1500)}catch(t){t2.error("Failed to open execution event stream",{conversationId:e,err:t}),o()}})),[nu,nd]);(0,o.useEffect)(()=>{if(J&&(null==t8?void 0:t8.status)==="running"&&tJ.current!==J){if(t_.current.has(J))return void t2.debug("Skipping re-attach to a conversation the user just stopped",{conversationId:J});t2.info("Re-attaching to in-progress run",{conversationId:J}),tJ.current=J,en(!0),tk(J),er(J,!0),th(e=>null!=e?e:{totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),nf(J,0)}},[J,null==t8?void 0:t8.status,nf]);let np=async e=>{t2.debug("Attempting to delete conversation",{conversationId:e}),ec(null),tz.current.add(e);let t=tR.current.delete(e);tJ.current===e&&(nd(),en(!1),tk(null),th(null),tv(eO)),er(e,!1),es(t=>eT(t,e));let n=_.filter(t=>t.id!==e);M(n);let l=J;J===e&&(n.length>0?(l=n[0].id,t2.debug("Deleted current conversation, selecting next most recent",{nextSelectionId:l})):(l=null,t2.debug("Deleted last conversation, clearing selection")),X(l));try{await t1.O.deleteConversation(e),t2.info("Successfully deleted conversation on backend",{conversationId:e})}catch(n){t2.error("Error deleting conversation:",{conversationId:e,err:n}),ec("Failed to delete conversation ".concat(e,". Please try again.")),tz.current.delete(e),t&&tR.current.add(e),M(_),X(J)}},nh=async e=>{if(!e.length)return;ec(null);let t=new Set(e);e.forEach(e=>tz.current.add(e));let n=Y.current;n&&t.has(n)&&tJ.current===n&&(nd(),en(!1),tk(null),th(null),tv(eO)),e.forEach(e=>{er(e,!1),es(t=>eT(t,e))}),M(e=>e.filter(e=>!t.has(e.id))),n&&t.has(n)&&X(null);try{let t=await t1.O.deleteConversations(e);t2.info("Bulk delete succeeded",{requested:e.length,...t})}catch(t){t2.error("Bulk delete failed",{err:t}),ec("Failed to delete conversations. Please try again."),e.forEach(e=>tz.current.delete(e)),M(_),X(J)}},ng=async e=>{if(t2.debug("Flow selected, attempting to update",{flowId:e,currentConversationId:J}),ec(null),!J){t2.warn("Cannot update flow: No conversation selected."),ec("Please select a conversation first.");return}W&&W.id===J&&U({...W,flowId:e,updatedAt:Date.now()}),M(t=>t.map(t=>t.id===J?{...t,flowId:e,updatedAt:Date.now()}:t).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}));try{let t=await t1.O.updateConversationFlow(J,e);t2.info("Successfully updated flowId on backend",{conversationId:J,flowId:e}),U(e=>e&&e.id===J?(t2.debug("Confirming detailedConversation update from server response",{conversationId:J,flowId:t.flowId}),{...e,flowId:t.flowId,updatedAt:t.updatedAt}):(t2.debug("Skipping detailedConversation update, ID mismatch or null state",{currentDetailedId:null==e?void 0:e.id,targetId:J}),e)),M(e=>e.map(e=>e.id===J?t:e).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))}catch(l){t2.error("Error updating flowId on backend:",{conversationId:J,flowId:e,err:l});let n="Failed to update the selected flow.";if(l instanceof t1.b){var t;n+=" Error: ".concat((null==(t=l.body)?void 0:t.error)||l.message)}else l instanceof Error&&(n+=" Error: ".concat(l.message));ec(n),U(W),M(_)}},nm=()=>{var e,t;ej(null!=(t=null!=(e=null==W?void 0:W.title)?e:null==t8?void 0:t8.title)?t:""),eb(!0)},nx=async()=>{var e,t;if(eb(!1),!J)return;let n=null!=(t=null!=(e=null==W?void 0:W.title)?e:null==t8?void 0:t8.title)?t:"",l=ey.trim().slice(0,200);if(l&&l!==n){U(e=>e&&e.id===J?{...e,title:l}:e),M(e=>e.map(e=>e.id===J?{...e,title:l}:e));try{let e=await t1.O.updateConversationTitle(J,l);U(t=>t&&t.id===J?{...t,title:e.title}:t),M(t=>t.map(t=>t.id===J?{...t,title:e.title}:t))}catch(e){t2.warn("Failed to rename conversation",{conversationId:J,err:e}),U(e=>e&&e.id===J?{...e,title:n}:e),M(e=>e.map(e=>e.id===J?{...e,title:n}:e)),ec("Failed to rename the conversation.")}}},nv=async function(e){var t;let n,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=arguments.length>2?arguments[2]:void 0;if(!e.trim()&&0===l.length)return;if(!W){t2.error("Cannot send message, detailed conversation not loaded."),ec("Cannot send message: conversation details not loaded.");return}if(!(null==o?void 0:o.fromQueue)&&el.has(W.id)){let t=W.id;if(0!==l.length||eB){let n={id:(0,tZ.A)(),content:e,attachments:l,nodeOverride:null!=eB?eB:null,timestamp:Date.now()};es(e=>({...e,[t]:[...eE(e,t),n]})),eJ(null),t2.debug("Run in progress — queued message (not steerable)",{conversationId:t,queuedId:n.id,reason:l.length>0?"attachments":"node-override"});return}{let n=(0,tZ.A)(),{delivered:l}=await t1.O.injectMessage(t,e,n);if(l){let l={id:n,role:"user",content:e,timestamp:Date.now()};ni({...W,messages:[...W.messages,l]}),t2.debug("Run in progress — injected steering message into the live run",{conversationId:t,messageId:n});return}t2.debug("Steering rejected (run no longer live) — sending as a normal turn",{conversationId:t})}}t2.debug("Sending message",{conversationId:W.id,contentLength:e.length,attachmentsCount:l.length});let r=W.messages,a=!r.some(e=>"user"===e.role),s=W.flowId,i=(null==o?void 0:o.fromQueue)?null!=(t=o.nodeOverride)?t:null:eB;if(i)n=i,(null==o?void 0:o.fromQueue)||eJ(null),t2.debug("Assigning manually picked node ID to user message: ".concat(n));else if(a){let e=tQ(eh.find(e=>e.id===s));e?(n=e.id,t2.debug("Assigning start node ID to first user message: ".concat(n))):t2.warn("Could not find start node for flow ".concat(s,". User message will not have a processNodeId."))}else if((null==t8?void 0:t8.status)==="error"){let e=tQ(eh.find(e=>e.id===s));e?(n=e.id,t2.debug("Post-error message: re-driving turn from start node ID: ".concat(n))):t2.warn("Could not find start node for post-error message in flow ".concat(s,". User message will not have a processNodeId."))}else{for(let e=r.length-1;e>=0;e--){let t=r[e];if("assistant"===t.role&&t.processNodeId){n=t.processNodeId,t2.debug("Assigning last assistant node ID to user message: ".concat(n));break}}if(!n){let e=tQ(eh.find(e=>e.id===s));e?(n=e.id,t2.debug("No prior assistant node ID found, falling back to start node ID: ".concat(n))):t2.warn("Could not find start node for fallback in flow ".concat(s,". User message will not have a processNodeId."))}}let d={id:(0,tZ.A)(),role:"user",content:e,timestamp:Date.now(),attachments:l.length>0?l:void 0,processNodeId:n},c={...W,messages:[...W.messages,d]};ni(c),c.flowId?await nw(c):(ec("Please select a flow for this conversation before sending messages"),U(W))},nb=(0,o.useCallback)((e,t)=>{t2.verbose("Handling API response data",JSON.stringify(e)),er(t,"running"===e.status);let n=tJ.current===t,l=Y.current===t;if("paused_debug"===e.status&&e.debugState)return(t2.info("API Response: Paused for debugging",{conversationId:t}),l)?(eZ(e.debugState),eQ(!0),e2(!0),en(!1),tk(null),nd(),ny(),U(n=>(null==n?void 0:n.id)===t&&e.debugState.messages&&JSON.stringify(n.messages)!==JSON.stringify(e.debugState.messages)?(t2.debug("Updating detailed conversation messages from debug state"),{...n,messages:e.debugState.messages,updatedAt:e.debugState.updatedAt}):n),M(n=>n.map(n=>{var l,o;return n.id===t?{...n,title:null!=(l=e.debugState.title)?l:n.title,flowId:null!=(o=e.debugState.flowId)?o:n.flowId,status:"paused_debug",updatedAt:e.debugState.updatedAt}:n}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))):(nc(t,"paused_debug"),n&&(en(!1),tk(null),nd(),ny())),!0;if(("completed"===e.status||"error"===e.status)&&l?(t2.info("API Response: Execution completed or errored (Status: ".concat(e.status,"). Hiding debugger panel."),{conversationId:t}),eQ(!1),eZ(null),e2(!1)):t2.debug("API Response: Status is '".concat(e.status,"'. Debugger panel visibility unchanged (currently ").concat(eK?"visible":"hidden",")."),{conversationId:t}),e.messages&&e.conversation_id===t){let n=e.messages.map((e,n)=>"number"!=typeof e.timestamp||isNaN(e.timestamp)?(t2.warn("Invalid timestamp found in message index ".concat(n," from API response. Defaulting to Date.now()."),{conversationId:t,messageId:e.id,invalidTimestamp:e.timestamp}),{...e,timestamp:Date.now()}):e);U(l=>{var o,r;let a=l;return(null==l?void 0:l.id)===t&&JSON.stringify(l.messages)!==JSON.stringify(n)&&(t2.info("API Response/Polling: Updating detailed conversation messages",{conversationId:t,newMessageCount:n.length}),a={...l,messages:n,updatedAt:e.updatedAt||l.updatedAt}),t2.debug("Polling: setDetailedConversation callback executed.",{conversationId:t,messagesChanged:a!==l,newMessageCount:null!=(r=null==a||null==(o=a.messages)?void 0:o.length)?r:"N/A"}),a})}if("awaiting_tool_approval"===e.status)t2.info("API Response/Polling: Pausing for tool approval",{conversationId:t}),l&&e_(e.pendingToolCalls||[]),n&&(en(!1),tk(null),nd(),ny());else if("completed"===e.status||"error"===e.status){if(t2.info("API Response/Polling: Stopping due to final status",{conversationId:t,status:e.status}),n&&(ny(),en(!1),tk(null),nd()),"error"===e.status){var o,r;let a=(null==(o=e.error)?void 0:o.message)||(null==(r=e.lastResponse)?void 0:r.error)||"Unknown error during execution";t6.test(a)||t_.current.has(t)?(tP(t,!0),(n||l)&&ec(null),t2.info("API Response/Polling: Execution cancelled by user",{conversationId:t})):(ec(a),t2.error("API Response/Polling: Execution resulted in error",{conversationId:t,error:e.error||e.lastResponse}))}tY(t)}else"running"!==e.status||eK?l&&e_(null):(l&&e_(null),n&&!tE.current&&en(!0));return e.conversation_id===t&&M(n=>n.map(n=>{var l,o,r;return n.id===t?{...n,title:null!=(l=e.title)?l:n.title,flowId:null!=(o=e.flowId)?o:n.flowId,status:null!=(r=e.status)?r:n.status,updatedAt:e.updatedAt||n.updatedAt}:n}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),!1},[U,e_,en,ec,eQ,eZ,M,tY,nd,er,nc,tP]),ny=()=>{tE.current&&(t2.debug("Stopping polling interval"),clearInterval(tE.current),tE.current=null)};(0,o.useEffect)(()=>()=>{nd()},[nd]);let nw=async e=>{if(!(null==e?void 0:e.id)||!e.flowId||!tC.current)return t2.error("Cannot send to completions: Missing conversation ID or flow ID.",{id:null==e?void 0:e.id,flowId:null==e?void 0:e.flowId}),ec("Cannot send message: Missing conversation ID or flow ID."),!1;e_(null),ec(null),en(!0),tk(e.id),er(e.id,!0),tP(e.id,!1);let t=tR.current.delete(e.id);th({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await nf(e.id);let n=!1;try{let t;if($(e.flowId))t="flow-Quick Chat",t2.debug("Sending quick chat to completions",{flowId:e.flowId,conversationId:e.id});else{let n=await ti.g.getFlow(e.flowId);if(!n)throw Error("Flow with ID ".concat(e.flowId," not found"));t="flow-".concat(n.name),t2.debug("Sending to chat completions",{flowId:e.flowId,flowName:n.name,conversationId:e.id})}let l=e.messages.filter(e=>{var t;return!e.disabled&&!((null!=(t=e.depth)?t:0)>0)}).map(e=>{let t=t5(e),n=e.processNodeId,l={id:e.id,timestamp:e.timestamp};return"user"===e.role?{role:"user",content:t,...l,processNodeId:n}:"assistant"===e.role?{role:"assistant",content:t,tool_calls:e.tool_calls,...l,processNodeId:n}:"system"===e.role?{role:"system",content:t,...l,processNodeId:n}:"tool"===e.role?e.tool_call_id?{role:"tool",content:t,tool_call_id:e.tool_call_id,...l,processNodeId:n}:{role:"user",content:"string"==typeof t?"Tool result: ".concat(t):t,...l,processNodeId:n}:{role:"user",content:t,...l,processNodeId:n}}),o=await tC.current.chat.completions.create({model:t,messages:l,stream:!1,metadata:(()=>{let t=tD.current.get(e.id),n={flujo:"true",requireApproval:em?"true":void 0,flujodebug:eD?"true":void 0,conversationId:e.id,mcpAppContexts:void 0===t?void 0:JSON.stringify(t)},l={};return n.flujo&&(l.flujo=n.flujo),n.requireApproval&&(l.requireApproval=n.requireApproval),n.flujodebug&&(l.flujodebug=n.flujodebug),n.conversationId&&(l.conversationId=n.conversationId),void 0!==n.mcpAppContexts&&(l.mcpAppContexts=n.mcpAppContexts),l})()});t2.debug("Chat completion initial response received",{completionId:o.id}),n=!0;let r={...o,status:o.status||"completed",conversation_id:e.id,messages:o.messages||e.messages,pendingToolCalls:o.pendingToolCalls,debugState:o.debugState,error:o.error,lastResponse:o.lastResponse,updatedAt:o.updatedAt||Date.now()},a=nb(r,e.id);a||tE.current?a&&t2.debug("Debug state handled, polling remains stopped."):t2.debug("Starting polling after initial non-debug response.")}catch(r){if(t3(r)||t_.current.has(e.id))return t2.info("Chat completion cancelled by user",{conversationId:e.id}),n=!1,er(e.id,!1),tP(e.id,!0),tJ.current===e.id&&(ny(),en(!1),tk(null),nd(),ec(null)),n;t2.error("Error calling chat completions API:",r),n=!1;let o="An error occurred while sending the message.";if(r instanceof t0.LG)o="API Error: ".concat(r.message," (Status: ").concat(r.status,")"),r.code&&(o+=" (Code: ".concat(r.code,")")),r.type&&(o+=" [Type: ".concat(r.type,"]")),t2.verbose("APIError details",JSON.stringify(r));else if(r instanceof t0.vc){o="OpenAI Error: ".concat(r.message);let e=r.error;e&&"object"==typeof e&&(e.code&&(o+=" (Code: ".concat(e.code,")")),e.type&&(o+=" [Type: ".concat(e.type,"]"))),t2.verbose("OpenAIError details",JSON.stringify(r))}else if(r instanceof t1.b){var l;o="Error: ".concat((null==(l=r.body)?void 0:l.error)||r.message),r.status&&(o+=" (Status: ".concat(r.status,")")),t2.verbose("ChatApiError details",JSON.stringify(r.body))}else r instanceof Error&&(o=r.message);ec(o),er(e.id,!1),tJ.current===e.id&&(ny(),en(!1),tk(null),nd()),t&&tR.current.add(e.id)}finally{}return n},nj=(0,o.useRef)(nv);nj.current=nv;let nA=(0,o.useCallback)(e=>!!J&&Y.current===J&&(nj.current(e),!0),[J]),nS=(0,o.useCallback)((e,t)=>{var n;if(!J||Y.current!==J)return!1;let l={...null!=(n=tD.current.get(J))?n:{}};return(void 0===t.content&&void 0===t.structuredContent?delete l[e]:l[e]=t,(0,ew.Yw)(l)>ew.uJ)?(t2.warn("Rejected oversized aggregate MCP App model context",{conversationId:J,appKey:e}),!1):(tD.current.set(J,l),!0)},[J]),[nI,nk]=(0,o.useState)(eS),[nC,nE]=(0,o.useState)(J),nT=(0,o.useRef)(new Set),nN=(0,o.useCallback)((e,t,n)=>{let l="".concat(e,"\0").concat(t);n?K.current.set(l,n):K.current.delete(l)},[]),nD=(0,o.useCallback)((e,t)=>{J&&nN(J,e,t)},[J,nN]),nR=(0,o.useCallback)(e=>{nE(Y.current),nk(t=>{let{state:n}=function(e,t){var n,l,o,r;let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:16,i=eI(t.serverName,t.uri),d=e.entries[i],c={key:i,serverName:t.serverName,uri:t.uri,toolName:null!=(n=t.toolName)?n:null==d?void 0:d.toolName,latestToolArgs:null!=(l=t.toolArgs)?l:null==d?void 0:d.latestToolArgs,latestResultContent:void 0!==t.cancelledReason?void 0:null!=(o=t.resultContent)?o:null==d?void 0:d.latestResultContent,latestToolCancelledReason:void 0!==t.cancelledReason?t.cancelledReason:void 0!==t.resultContent||null==d?void 0:d.latestToolCancelledReason,latestToolIsError:void 0!==t.cancelledReason?void 0:void 0!==t.isError?t.isError:void 0===t.resultContent&&(null==d?void 0:d.latestToolIsError),latestToolUpdateId:null!=(r=t.updateId)?r:null==d?void 0:d.latestToolUpdateId,unread:!1,lastActiveAt:a,updatedAt:a,consent:null==d?void 0:d.consent},u={...e.entries,[i]:c};return ek({entries:u,order:d?e.order:[...e.order,i],activeKey:i},s,i)}(t,e,Date.now(),Number.MAX_SAFE_INTEGER);return n})},[]),nz=(0,o.useCallback)(e=>{nk(t=>(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),l=e.entries[t];if(!l)return e;let o={...l,unread:!1,lastActiveAt:n};return{...e,entries:{...e.entries,[t]:o},activeKey:t}})(t,e))},[]),n_=(0,o.useCallback)(e=>{if(!J)return;let t=K.current.get("".concat(J,"\0").concat(e)),n=()=>{Y.current===J&&nk(t=>eC(t,e))};t?t().finally(n):n()},[J]);(0,o.useEffect)(()=>{nE(J),nk(eS)},[J]);let nM=nI.order.join("|");(0,o.useEffect)(()=>{let e=null==W?void 0:W.messages;if(!e||!W||W.id!==J||nC!==J)return;let t=new Map;for(let n of e)if("assistant"===n.role&&Array.isArray(n.tool_calls))for(let e of n.tool_calls)"function"===e.type&&e.id&&t.set(e.id,e);let n=new Map;for(let o of e){let e=o.ui;if("tool"===o.role&&(null==e?void 0:e.uri)&&(null==e?void 0:e.serverName)&&"string"==typeof o.content){var l;let r="string"==typeof o.tool_call_id?t.get(o.tool_call_id):void 0,a={serverName:e.serverName,uri:e.uri,toolName:null!=(l=e.toolName)?l:(null==r?void 0:r.type)==="function"?r.function.name:void 0,toolArgs:(null==r?void 0:r.type)==="function"?r.function.arguments:void 0,resultContent:o.content,cancelledReason:e.cancelledReason,isError:e.isError,updateId:o.id};n.set("".concat(e.serverName,"::").concat(e.uri),a)}}nk(e=>{let t=e;for(let e of t.order){let l=t.entries[e],o=n.get(e);l&&o&&(o.updateId!==l.latestToolUpdateId||o.toolArgs!==l.latestToolArgs||void 0===o.cancelledReason&&o.resultContent!==l.latestResultContent||o.cancelledReason!==l.latestToolCancelledReason||o.isError!==l.latestToolIsError)&&(t=function(e,t){var n,l,o,r;let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),s=eI(t.serverName,t.uri),i=e.entries[s];if(!i)return e;let d=e.activeKey===s,c={...i,toolName:null!=(n=t.toolName)?n:i.toolName,latestToolArgs:null!=(l=t.toolArgs)?l:i.latestToolArgs,latestResultContent:void 0!==t.cancelledReason?void 0:null!=(o=t.resultContent)?o:i.latestResultContent,latestToolCancelledReason:void 0!==t.cancelledReason?t.cancelledReason:void 0!==t.resultContent?void 0:i.latestToolCancelledReason,latestToolIsError:void 0!==t.cancelledReason?void 0:void 0!==t.isError?t.isError:void 0===t.resultContent&&i.latestToolIsError,latestToolUpdateId:null!=(r=t.updateId)?r:i.latestToolUpdateId,updatedAt:a,unread:!d,lastActiveAt:d?a:i.lastActiveAt};return{...e,entries:{...e.entries,[s]:c}}}(t,o))}return t})},[nM,nC,J,null==W?void 0:W.id,null==W?void 0:W.messages]),(0,o.useEffect)(()=>{var e;if(!J||nC!==J||nI.order.length<=16)return;let{evicted:t}=ek(nI,16,null!=(e=nI.activeKey)?e:void 0);for(let e of t){let t="".concat(J,"\0").concat(e);if(nT.current.has(t))continue;nT.current.add(t),t2.info("Canvas tab cap reached — gracefully evicting (LRU): ".concat(e));let n=K.current.get(t);(n?n():Promise.resolve()).finally(()=>{nT.current.delete(t),Y.current===J&&nk(t=>eC(t,e))})}},[nI,nC,J]);let nO=async(e,t,n)=>{if(!W)return;t2.debug("Editing message",{messageId:e,contentLength:t.length,processNodeId:n});let l=W.messages.findIndex(t=>t.id===e);if(-1===l)return;let o={...W.messages[l],content:t,timestamp:Date.now(),processNodeId:n||void 0},r=[...W.messages.slice(0,l),o],a={...W,messages:r};if(ni(a),a.flowId){let e=tD.current.get(a.id),t={flujo:"true",requireApproval:em?"true":void 0,flujodebug:eD?"true":void 0,conversationId:a.id,processNodeId:n||void 0,mcpAppContexts:void 0===e?void 0:JSON.stringify(e)};if(!tC.current)return;ec(null),en(!0),tk(a.id),er(a.id,!0),tP(a.id,!1),th({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await nf(a.id);try{let e=await ti.g.getFlow(a.flowId);if(!e)throw Error("Flow with ID ".concat(a.flowId," not found"));let n=a.messages.filter(e=>{var t;return!e.disabled&&!((null!=(t=e.depth)?t:0)>0)}).map(e=>{let t=t5(e),n={id:e.id,timestamp:e.timestamp,processNodeId:e.processNodeId};return"user"===e.role?{role:"user",content:t,...n}:"assistant"===e.role?{role:"assistant",content:t,tool_calls:e.tool_calls,...n}:"system"===e.role?{role:"system",content:t,...n}:"tool"===e.role?e.tool_call_id?{role:"tool",content:t,tool_call_id:e.tool_call_id,...n}:{role:"user",content:"string"==typeof t?"Tool result: ".concat(t):t,...n}:{role:"user",content:t,...n}}),l=await tC.current.chat.completions.create({model:"flow-".concat(e.name),messages:n,stream:!1,metadata:(()=>{let e={};return t.flujo&&(e.flujo=t.flujo),t.requireApproval&&(e.requireApproval=t.requireApproval),t.flujodebug&&(e.flujodebug=t.flujodebug),t.conversationId&&(e.conversationId=t.conversationId),t.processNodeId&&(e.processNodeId=t.processNodeId),void 0!==t.mcpAppContexts&&(e.mcpAppContexts=t.mcpAppContexts),e})()}),o={...l,status:l.status||"completed",conversation_id:a.id,messages:l.messages||a.messages,pendingToolCalls:l.pendingToolCalls,debugState:l.debugState,error:l.error,updatedAt:l.updatedAt||Date.now()};nb(o,a.id)}catch(e){t3(e)||t_.current.has(a.id)?(t2.info("Edited-message run cancelled by user",{conversationId:a.id}),tP(a.id,!0)):(t2.error("Error sending edited message:",e),ec(e instanceof Error?e.message:"Failed to send edited message")),er(a.id,!1),tJ.current===a.id&&(en(!1),tk(null),nd())}}},nP=(0,o.useCallback)(e=>{var t,n,l;let o=null==W?void 0:W.messages.find(t=>t.id===e);o&&"user"===o.role&&"string"==typeof o.content&&eY({messageId:e,content:o.content,nodeId:null!=(l=o.processNodeId)?l:null!=(n=null==(t=ne[0])?void 0:t.id)?n:null})},[W,ne]),nF=(0,o.useCallback)(e=>{eY(t=>t?{...t,content:e}:t)},[]),nL=(0,o.useCallback)(e=>{eY(t=>t?{...t,nodeId:e}:t)},[]),nW=(0,o.useCallback)(()=>eY(null),[]),nU=async(e,t,n,l)=>{if(J){t2.info("Handling tool response: ".concat(e),{conversationId:J,toolCallId:t,always:n}),e_(null),en(!0),tk(J),er(J,!0),ec(null),await nf(J);try{let o=await t1.O.respondToToolCall(J,e,t,n,l);t2.debug("Tool response successful",{conversationId:J,action:e,toolCallId:t}),nb(o,J)}catch(l){if(t3(l)||t_.current.has(J)){t2.info("Tool-response resume cancelled by user",{conversationId:J}),tP(J,!0),tJ.current===J&&en(!1),er(J,!1);return}t2.error("Error sending tool response (".concat(e,")"),{conversationId:J,toolCallId:t,err:l});let n="Failed to ".concat(e," tool call.");if(l instanceof t1.b){var o;n+=" Error: ".concat((null==(o=l.body)?void 0:o.error)||l.message)}else l instanceof Error&&(n+=" Error: ".concat(l.message));ec(n),tJ.current===J&&en(!1),er(J,!1)}}},nH=async(e,t)=>{if(J){t2.info("Submitting elicitation form",{conversationId:J,elicitationId:e}),eF(null);try{await fetch("/v1/chat/conversations/".concat(J,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"elicitation-submit",elicitationId:e,content:t})})}catch(t){t2.error("Failed to submit elicitation",{conversationId:J,elicitationId:e,err:t})}}},nq=async e=>{if(J){t2.info("Cancelling elicitation",{conversationId:J,elicitationId:e}),eF(null);try{await fetch("/v1/chat/conversations/".concat(J,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"elicitation-cancel",elicitationId:e})})}catch(t){t2.error("Failed to cancel elicitation",{conversationId:J,elicitationId:e,err:t})}}},nB=async(e,t)=>{if(J){t2.info("Answering question",{conversationId:J,questionId:e}),eW(null);try{await fetch("/v1/chat/conversations/".concat(J,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"question-answer",questionId:e,answers:t})})}catch(t){t2.error("Failed to answer question",{conversationId:J,questionId:e,err:t})}}},nG=async e=>{if(J){t2.info("Declining question",{conversationId:J,questionId:e}),eW(null);try{await fetch("/v1/chat/conversations/".concat(J,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"question-decline",questionId:e})})}catch(t){t2.error("Failed to decline question",{conversationId:J,questionId:e,err:t})}}},nJ=async()=>{if(J&&eK){t2.info("Handling debug step request",{conversationId:J}),en(!0),tk(J),er(J,!0),ec(null),await nf(J);try{let e=await t1.O.debugStep(J);nb(e,J)}catch(e){t2.error("Error during debug step API call",{conversationId:J,err:e}),ec(e instanceof Error?e.message:"Failed to execute debug step."),en(!1),er(J,!1),eQ(!1),eZ(null)}finally{}}},nV=async()=>{if(J&&eK){t2.info("Handling debug continue request",{conversationId:J}),en(!0),tk(J),er(J,!0),ec(null),eQ(!1),await nf(J);try{let e=await t1.O.debugContinue(J);nb(e,J)}catch(e){t2.error("Error during debug continue API call",{conversationId:J,err:e}),ec(e instanceof Error?e.message:"Failed to continue execution."),en(!1),er(J,!1)}finally{}}};(0,o.useEffect)(()=>{if(eX){var e;tS(null!=(e=eX.breakpoints)?e:[])}},[eX]);let nY=(0,o.useCallback)(async e=>{if(!J)return;let t=tA.includes(e)?tA.filter(t=>t!==e):[...tA,e];tS(t);try{await t1.O.setBreakpoints(J,t)}catch(e){t2.error("Failed to update breakpoints",{conversationId:J,err:e}),tS(tA)}},[tA,J]),nK=(0,o.useCallback)(async()=>{if(J){t2.info("Attaching debugger to running conversation",{conversationId:J});try{await t1.O.setBreakpoints(J,["*"])}catch(e){t2.error("Failed to attach debugger",{conversationId:J,err:e}),ec(e instanceof Error?e.message:"Failed to attach debugger.")}}},[J]),nQ=async()=>{if(!J||!eK)return;let e=null==eX?void 0:eX.currentNodeId;en(!0),tk(J),er(J,!0),ec(null),await nf(J);try{for(let o=0;o<50;o++){var t,n,l;let o=await t1.O.debugStep(J),r=null!=(l=null==o?void 0:o.status)?l:null==o||null==(t=o.debugState)?void 0:t.status,a=null==o||null==(n=o.debugState)?void 0:n.currentNodeId;if("paused_debug"!==r||a&&a!==e)return void nb(o,J)}t2.warn("Step Over hit iteration cap",{conversationId:J}),en(!1),er(J,!1)}catch(e){t2.error("Error during step over",{conversationId:J,err:e}),ec(e instanceof Error?e.message:"Failed to step over."),en(!1),er(J,!1)}},nX=async()=>{if(J){t2.info("Cancelling request",{conversationId:J}),ny(),en(!1),tk(null),er(J,!1),tP(J,!0),e2(!1),nd(),e_(null),ec(null);try{await t1.O.cancel(J),t2.debug("Cancel request sent successfully",{conversationId:J}),await tY(J)}catch(e){t2.error("Error sending cancel request",{conversationId:J,err:e}),ec("Failed to send cancel request to the server.")}}},nZ=async e=>{if(e===J)return void await nX();t2.info("Stopping background conversation",{conversationId:e}),tP(e,!0);try{await t1.O.cancel(e),er(e,!1),await tV(void 0,{silent:!0})}catch(t){t2.error("Error stopping background conversation",{conversationId:e,err:t}),ec("Failed to send cancel request to the server.")}},n$=async()=>{t2.info("Closing debugger panel",{conversationId:J}),eQ(!1),eZ(null),e2(!1),await nX()};t2.debug("Rendering Chat component",{currentConversationId:J,isHandleEditMessageDefined:!0});let n0=(e$||eK)&&!!eX&&!!J,n1=(null==t8?void 0:t8.status)==="awaiting_tool_approval"||!!ez,n2=!(n1||(null==t8?void 0:t8.status)==="paused_debug")&&(et&&tI===J||!!J&&el.has(J)||(null==t8?void 0:t8.status)==="running"),n5=!n2&&!!J&&tM.has(J);return(0,o.useEffect)(()=>{if(!J||ei.current||!W||W.id!==J)return;let e=eE(ea,J)[0];if(!e||!function(e){return!e.running&&!e.pendingApproval&&!e.debugPaused&&!e.hasError&&!e.stopped}({running:el.has(J),pendingApproval:!!ez,debugPaused:eK,hasError:(null==t8?void 0:t8.status)==="error",stopped:n5}))return;ei.current=!0;let t=setTimeout(async()=>{try{es(t=>eN(t,J,e.id)),await nv(e.content,e.attachments,{fromQueue:!0,nodeOverride:e.nodeOverride,queuedId:e.id})}catch(t){es(t=>(function(e,t,n){let l=eE(e,t).filter(e=>e.id!==n.id);return{...e,[t]:[n,...l]}})(t,J,e))}finally{ei.current=!1}},0);return()=>clearTimeout(t)},[J,W,ea,el,ez,eK,null==t8?void 0:t8.status,n5]),(0,l.jsxs)(s.default,{sx:{display:"flex",height:"calc(100vh - 64px)"},children:[ta&&(0,l.jsx)(s.default,{sx:{width:40,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",justifyContent:"center",pt:1},children:(0,l.jsx)(i.A,{title:"Show conversation sidebar",children:(0,l.jsx)(d.A,{size:"small",onClick:td,"aria-label":"Show conversation sidebar",children:(0,l.jsx)(E.A,{fontSize:"small"})})})}),!ta&&(0,l.jsx)(s.default,{sx:{width:to,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",flexDirection:"column"},children:O?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",p:2},children:(0,l.jsx)(tX.default,{size:"medium",color:"primary"})}):F?(0,l.jsx)(c.A,{severity:"error",sx:{m:2},children:F}):(0,l.jsx)(eu,{conversations:_,flowNames:t7,currentConversationId:J,onSelectConversation:X,onDeleteConversation:np,onBulkDelete:nh,onStopConversation:nZ,onNewConversation:nl,onQuickChat:()=>na(!0),onCollapse:td})}),!ta&&(0,l.jsx)(s.default,{onPointerDown:tc,sx:{width:"6px",flexShrink:0,cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":"Resize conversation sidebar"}),(0,l.jsxs)(s.default,{sx:{flex:1,height:"100%",display:"flex",minWidth:0,minHeight:0},children:[(0,l.jsxs)(s.default,{sx:{flex:1,minWidth:0,display:"flex",flexDirection:"column",height:"100%"},children:[J&&(0,l.jsx)(s.default,{sx:{px:2,pt:2,pb:1,display:"flex",alignItems:"center",gap:1,minWidth:0},children:ev?(0,l.jsx)(u.A,{value:ey,onChange:e=>ej(e.target.value),onBlur:nx,onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),nx()):"Escape"===e.key&&eb(!1)},size:"small",autoFocus:!0,fullWidth:!0,inputProps:{maxLength:200,"aria-label":"Conversation title"}}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(f.default,{variant:"h6",noWrap:!0,onClick:nm,title:(null==W?void 0:W.title)||(null==t8?void 0:t8.title)||"",sx:{flex:1,minWidth:0,cursor:"text"},children:(null==W?void 0:W.title)||(null==t8?void 0:t8.title)||"Untitled Conversation"}),(0,l.jsx)(i.A,{title:"Rename conversation",children:(0,l.jsx)(d.A,{size:"small",onClick:nm,"aria-label":"Rename conversation",children:(0,l.jsx)(T.A,{fontSize:"small"})})}),(0,l.jsx)(i.A,{title:e8?"Hide executed steps":"Show executed steps",children:(0,l.jsx)(d.A,{size:"small",color:e8?"primary":"default",onClick:()=>e7(e=>!e),"aria-label":"Toggle executed steps panel",children:(0,l.jsx)(D.A,{fontSize:"small"})})})]})}),J&&(0,l.jsxs)(s.default,{sx:{p:2,borderBottom:1,borderColor:"divider",display:"flex",alignItems:"center",gap:2},children:[(0,l.jsx)(s.default,{sx:{flex:1,minWidth:0},children:$((null==t8?void 0:t8.flowId)||(null==W?void 0:W.flowId))?(0,l.jsx)(p.A,{color:"primary",variant:"outlined",icon:(0,l.jsx)(A.A,{}),label:"Quick Chat"}):(0,l.jsxs)(s.default,{sx:{display:"flex",alignItems:"flex-start",gap:.5},children:[(0,l.jsx)(e1.A,{selectedFlowId:(null==t8?void 0:t8.flowId)||(null==W?void 0:W.flowId)||null,onSelectFlow:e=>{var t,n,l,o;if(!J){t2.warn("Cannot update flow: No conversation selected."),ec("Please select a conversation first.");return}$(e)||ee(e);let r=null!=(l=null!=(n=null==W?void 0:W.flowId)?n:null==t8?void 0:t8.flowId)?l:null;if((null!=(o=null==W||null==(t=W.messages)?void 0:t.length)?o:0)>0&&r&&e!==r){t2.debug("Flow switch on executed conversation — asking for confirmation",{flowId:e,currentFlowId:r}),eq(e);return}ng(e)},disabled:eK}),(()=>{let e=(null==t8?void 0:t8.flowId)||(null==W?void 0:W.flowId)||null;return e?(0,l.jsx)(i.A,{title:"Open this flow in the FlowBuilder",children:(0,l.jsx)(d.A,{color:"primary",onClick:()=>r.push("/flows?flow=".concat(encodeURIComponent(e))),children:(0,l.jsx)(N.A,{})})}):null})()]})}),(0,l.jsx)(e0,{usage:null==W?void 0:W.usage,contextInfo:null==W?void 0:W.contextInfo,availableNodes:ne})]}),(0,l.jsxs)(s.default,{sx:{flex:1,minHeight:0,position:"relative",display:"flex",flexDirection:"column"},children:[(0,l.jsx)(s.default,{ref:tF,onScroll:tq,sx:{flex:1,overflow:"auto",p:2},children:H?(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,l.jsx)(tX.default,{size:"medium",color:"primary"})}):B?(0,l.jsx)(c.A,{severity:"error",sx:{m:2},children:B}):W?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ef.A,{messages:W.messages,pendingToolCalls:ez,pendingElicitation:eM,availableNodes:ne,conversationId:W.id,editingMessageId:null!=(t=null==eV?void 0:eV.messageId)?t:null,onToggleDisabled:e=>{if(!W)return;t2.debug("Toggling message disabled state",{messageId:e});let t=W.messages.map(t=>t.id===e?{...t,disabled:!t.disabled}:t);ni({...W,messages:t})},onSplitConversation:e=>{if(!W)return;t2.debug("Splitting conversation at message",{messageId:e});let t=W.messages.findIndex(t=>t.id===e);if(-1===t)return;let n=W.messages.slice(0,t+1),l=(0,tZ.A)(),o={id:l,title:"Split from ".concat(W.title),messages:n,flowId:W.flowId,createdAt:Date.now(),updatedAt:Date.now()},r={id:l,title:o.title,flowId:o.flowId,createdAt:o.createdAt,updatedAt:o.updatedAt};tR.current.add(l),M(e=>[r,...e].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),X(l),U(o),q(!1),G(null)},onBeginEditMessage:nP,onApproveToolCall:(e,t)=>{nU("approve",e,t)},onRejectToolCall:(e,t,n)=>{nU("reject",e,t,n)},onSubmitElicitation:nH,onCancelElicitation:nq,pendingQuestion:eL,onAnswerQuestion:nB,onDeclineQuestion:nG,onAppMessage:nA,onUpdateModelContext:nS,onRegisterAppTeardown:nD,onOpenInCanvas:nR,queuedMessages:eE(ea,W.id),queueHoldReason:function(e){return e.stopped?"Held — you stopped this run. Send again to continue.":e.hasError?"Held — the last run failed. Retry or send again to continue.":e.pendingApproval?"Held — waiting for tool approval.":e.debugPaused?"Held — paused in the debugger.":null}({running:el.has(W.id),pendingApproval:!!ez,debugPaused:eK,hasError:(null==t8?void 0:t8.status)==="error",stopped:n5})}),!et&&!eK&&W.messages.length>0&&(null==t8?void 0:t8.status)==="completed"&&(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(c.A,{icon:(0,l.jsx)(I.A,{fontSize:"inherit"}),severity:"success",variant:"filled",sx:{borderRadius:2,py:.5},children:"Conversation completed"})}),!et&&!eK&&n5&&(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(c.A,{icon:(0,l.jsx)(C.A,{fontSize:"inherit"}),severity:"info",variant:"outlined",sx:{borderRadius:2,py:.5,alignItems:"center"},action:(0,l.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,l.jsx)(S.A,{}),onClick:()=>nw(W),children:"Resume"}),children:"Conversation stopped"})}),!et&&!eK&&!ed&&!n5&&(null==t8?void 0:t8.status)==="error"&&(0,l.jsx)(s.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(c.A,{icon:(0,l.jsx)(k.A,{fontSize:"inherit"}),severity:"error",variant:"filled",sx:{borderRadius:2,py:.5,alignItems:"center"},action:(0,l.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,l.jsx)(S.A,{}),onClick:()=>{nw(W)},children:"Retry"}),children:"Conversation ended with an error"})}),n2&&tb.length>0&&(0,l.jsx)(eG,{todos:tb}),n2&&!eK&&(0,l.jsx)(eU,{liveStats:tp,lanes:tx,onOpenLane:X,onStop:nX,stopDisabled:!J,onAttachDebugger:et&&tI===J&&!e$?nK:void 0}),!n2&&n1&&!eK&&(0,l.jsx)(eU,{liveStats:tp,lanes:tx,onOpenLane:X,awaitingApproval:!0,onStop:nX,stopDisabled:!J}),ed&&(0,l.jsx)(c.A,{severity:"error",sx:{mt:2},action:(0,l.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,l.jsx)(S.A,{}),onClick:()=>{W&&nw(W)},children:"Retry"}),children:ed})]}):(0,l.jsx)(f.default,{variant:"body1",color:"textSecondary",align:"center",sx:{mt:4},children:_.length>0?"Select a conversation or create a new one.":"Create a new conversation to start chatting."})}),(0,l.jsx)(g.A,{in:tW,unmountOnExit:!0,children:(0,l.jsx)(m.A,{size:"small",color:"primary","aria-label":"Scroll to latest messages",onClick:tB,sx:{position:"absolute",bottom:16,right:24,zIndex:2},children:(0,l.jsx)(j.A,{})})})]}),J&&(0,l.jsx)(eA,{conversationId:J,entries:nC===J?function(e){return e.order.map(t=>e.entries[t]).filter(e=>!!e)}(nI):[],activeKey:nI.activeKey,onSelectTab:nz,onCloseTab:n_,onAppMessage:nA,onUpdateModelContext:nS,onRegisterTeardown:nN},J),(0,l.jsxs)(s.default,{sx:{p:2,borderTop:1,borderColor:"divider"},children:[J&&eE(ea,J).length>0&&(0,l.jsxs)(s.default,{"data-testid":"queued-messages",sx:{mb:1,display:"flex",flexWrap:"wrap",gap:1,alignItems:"center"},children:[(0,l.jsxs)(f.default,{variant:"caption",color:"text.secondary",sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,l.jsx)(R.A,{fontSize:"inherit"})," Queued:"]}),eE(ea,J).map(e=>(0,l.jsx)(p.A,{size:"small",variant:"outlined",label:e.content.trim().slice(0,40)||(e.attachments.length?"".concat(e.attachments.length," attachment(s)"):"message"),onDelete:()=>es(t=>eN(t,J,e.id))},e.id))]}),(0,l.jsx)(ep.A,{onSendMessage:nv,disabled:H||!((null==W?void 0:W.flowId)||(null==t8?void 0:t8.flowId))||!!ez||eK,requireApproval:em,onRequireApprovalChange:t4,executeInDebugger:eD,onExecuteInDebuggerChange:eR,availableNodes:ne,flow:t9,currentNodeId:nn,nodeOverrideActive:!!eB,onSelectNode:eJ,editing:eV,onEditingContentChange:nF,onEditingNodeChange:nL,onSaveEdit:()=>{eV&&eV.content.trim()&&(nO(eV.messageId,eV.content,eV.nodeId||""),eY(null))},onCancelEdit:nW})]})]})," ",e8&&J&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.default,{onPointerDown:tn,sx:{width:"6px",flexShrink:0,cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":"Resize executed steps panel"}),(0,l.jsx)(s.default,{sx:{width:"".concat(te,"px"),minWidth:240,maxWidth:"70vw",flexShrink:0,display:"flex",flexDirection:"column",height:"100%"},children:(0,l.jsx)(tK,{flowId:(null==W?void 0:W.flowId)||(null==t8?void 0:t8.flowId)||null,flowSnapshot:null!=(n=null==eX?void 0:eX.flowSnapshot)?n:null,executedNodeIds:nt,liveActivity:tg,onClose:()=>e7(!1)})})]}),n0&&eX&&J&&!e3&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.default,{onPointerDown:tl,sx:{width:"6px",flexShrink:0,cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":"Resize debugger panel"}),(0,l.jsx)(s.default,{sx:{width:e5?"".concat(e5,"px"):"50%",minWidth:360,maxWidth:"85vw",flexShrink:0,display:"flex",flexDirection:"column",height:"100%"},children:(0,l.jsx)(tG,{debugState:eX,conversationId:J,liveActivity:tg,onStep:nJ,onStepOver:nQ,onContinue:nV,onCancel:nX,isLoading:et,breakpoints:tA,onToggleBreakpoint:nY,onClose:n$,isExpanded:e3,onToggleExpand:()=>e4(e=>!e)})})]})]})," ",n0&&eX&&J&&e3&&(0,l.jsx)(x.A,{fullScreen:!0,open:!0,onClose:()=>e4(!1),children:(0,l.jsx)(s.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,l.jsx)(tG,{debugState:eX,conversationId:J,liveActivity:tg,onStep:nJ,onStepOver:nQ,onContinue:nV,onCancel:nX,isLoading:et,breakpoints:tA,onToggleBreakpoint:nY,onClose:n$,isExpanded:e3,onToggleExpand:()=>e4(e=>!e)})})}),(0,l.jsxs)(x.A,{open:!!eH,onClose:()=>eq(null),children:[(0,l.jsx)(v.A,{children:"Switch flow?"}),(0,l.jsx)(b.A,{children:(0,l.jsxs)(y.A,{children:["This conversation has already been processed with its current flow."," ","If you switch to"," ",(0,l.jsx)("strong",{children:(null==(e=eh.find(e=>e.id===eH))?void 0:e.name)||"the selected flow"}),","," ","the conversation will continue processing from that flow's Start node again."]})}),(0,l.jsxs)(w.A,{children:[(0,l.jsx)(h.A,{onClick:()=>eq(null),children:"Cancel"}),(0,l.jsx)(h.A,{variant:"contained",onClick:()=>{eq(null),eH&&ng(eH)},children:"Switch Flow"})]})]}),(0,l.jsx)(e9,{open:nr,onClose:()=>na(!1),onStart:ns})]})},t8=(0,e8.h)("frontend/components/ClientOnly");function t7(e){let{children:t}=e,[n,r]=(0,o.useState)(!1);return((0,o.useEffect)(()=>(t8.debug("ClientOnly component mounted"),r(!0),()=>{t8.debug("ClientOnly component unmounted")}),[]),n)?(t8.debug("ClientOnly component rendering children"),(0,l.jsx)(l.Fragment,{children:t})):(t8.debug("ClientOnly component rendering null (not yet mounted)"),null)}let t9=(0,e8.h)("app/chat/page");function ne(){return t9.debug("Rendering ChatPage"),(0,l.jsx)(r.A,{maxWidth:!1,disableGutters:!0,children:(0,l.jsx)(t7,{children:(0,l.jsx)(t4,{})})})}},75870:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var l=n(95155),o=n(12115),r=n(94049),a=n(25635),s=n(4474),i=n(91871),d=n(56900),c=n(90057),u=n(96362),f=n(9226),p=n(68503);let h=e=>{let{selectedFlowId:t,onSelectFlow:n,disabled:h=!1,hideLabel:g=!1}=e,[m,x]=(0,o.useState)([]),[v,b]=(0,o.useState)(!0),[y,w]=(0,o.useState)(null),[j,A]=(0,o.useState)(!1);(0,o.useEffect)(()=>{(async()=>{b(!0),w(null);try{let e=await c.g.loadFlows();x(e)}catch(e){console.error("Error loading flows:",e),w("Failed to load flows")}finally{b(!1)}})()},[]);let S=e=>{n(e),A(!1)},I=async e=>{let t=m.find(t=>t.id===e);if(!t)return;let n=!t.favorite,l={...t,favorite:n||void 0};try{(await c.g.updateFlow(l)).success&&x(t=>t.map(t=>t.id===e?l:t))}catch(e){console.error("Error toggling flow favorite:",e)}},k=(0,p.E)("flows",m),C=e=>({key:e.id,content:(e=>(0,l.jsx)(f.A,{flow:e,selected:e.id===t,onSelect:S,onToggleFavorite:I,pickerMode:!0}))(e)}),E=k.items.map(C),T=k.groups?k.groups.map(e=>({...e,items:e.items.map(C)})):null,N=(()=>{if(!t)return"";let e=m.find(e=>e.id===t);return e?e.name:""})();return(0,l.jsxs)(r.default,{children:[!g&&(0,l.jsx)(a.default,{variant:"subtitle1",gutterBottom:!0,children:"Select Flow"}),v?(0,l.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(s.default,{size:20}),(0,l.jsx)(a.default,{variant:"body2",color:"text.secondary",children:"Loading flows..."})]}):y?(0,l.jsx)(a.default,{color:"error",variant:"body2",children:y}):0===m.length?(0,l.jsx)(a.default,{variant:"body2",color:"text.secondary",children:"No flows available. Create some flows in the Flow Builder first."}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.A,{variant:"outlined",startIcon:(0,l.jsx)(d.A,{}),onClick:()=>A(!0),disabled:h,sx:{textTransform:"none",maxWidth:"100%"},children:(0,l.jsx)(r.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t&&N||"Select a flow"})}),(0,l.jsx)(a.default,{variant:"caption",color:"text.secondary",display:"block",sx:{mt:.5},children:t?'Using "'.concat(N,'" flow for this conversation'):"Select a flow to use for this conversation"}),(0,l.jsx)(u.A,{open:j,onClose:()=>A(!1),title:"Select a flow",description:"Pick the flow this conversation will run.",skeleton:(0,l.jsx)(f.o,{}),emptyMessage:"No flows available. Create some flows in the Flow Builder first.",searchable:!0,searchPlaceholder:"Search flows…",searchTerm:k.searchTerm,onSearchChange:k.setSearchTerm,items:E,groups:T,collapsedKeys:k.collapsedKeys,onToggleGroup:k.toggleGroup})]})]})}},79415:(e,t,n)=>{Promise.resolve().then(n.bind(n,69645))},81956:(e,t,n)=>{"use strict";n.d(t,{A:()=>y});var l=n(95155),o=n(12115),r=n(36314),a=n(86973),s=n(49501),i=n(17681),d=n(21067),c=n(2778),u=n(52363),f=n(65036),p=n(9562),h=n(75912),g=n(91871),m=n(9693),x=n(91665),v=n(7517),b=n(8190);let y=e=>{let{anchorEl:t,open:n,currentFolder:y,folders:w,onClose:j,onAssign:A}=e,[S,I]=(0,o.useState)(!1),[k,C]=(0,o.useState)(""),E=e=>{A(e),j()},T=()=>{let e=k.trim();e&&(I(!1),E(e))};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(r.A,{anchorEl:t,open:n,onClose:j,children:[w.length>0&&w.map(e=>(0,l.jsxs)(a.A,{onClick:()=>E(e),selected:e===y,children:[(0,l.jsx)(s.A,{children:e===y?(0,l.jsx)(m.A,{fontSize:"small"}):(0,l.jsx)(x.A,{fontSize:"small"})}),(0,l.jsx)(i.A,{primary:e})]},e)),w.length>0&&(0,l.jsx)(d.A,{}),(0,l.jsxs)(a.A,{onClick:()=>{C(""),I(!0)},children:[(0,l.jsx)(s.A,{children:(0,l.jsx)(v.A,{fontSize:"small"})}),(0,l.jsx)(i.A,{primary:"New folder…"})]}),y&&(0,l.jsxs)(a.A,{onClick:()=>E(void 0),children:[(0,l.jsx)(s.A,{children:(0,l.jsx)(b.A,{fontSize:"small"})}),(0,l.jsx)(i.A,{primary:"Remove from folder"})]})]}),(0,l.jsxs)(c.A,{open:S,onClose:()=>I(!1),maxWidth:"xs",fullWidth:!0,children:[(0,l.jsx)(u.A,{children:"New folder"}),(0,l.jsx)(f.A,{children:(0,l.jsx)(p.A,{autoFocus:!0,margin:"dense",label:"Folder name",fullWidth:!0,value:k,onChange:e=>C(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),T())}})}),(0,l.jsxs)(h.A,{children:[(0,l.jsx)(g.A,{onClick:()=>I(!1),children:"Cancel"}),(0,l.jsx)(g.A,{variant:"contained",disabled:!k.trim(),onClick:T,children:"Create"})]})]})]})}},97104:(e,t,n)=>{"use strict";n.d(t,{Aq:()=>o,Xk:()=>a,vi:()=>r});var l=n(12115);function o(e,t){try{let n=window.localStorage.getItem(e);if(null===n)return t;return JSON.parse(n)}catch(e){return t}}function r(e,t){try{window.localStorage.setItem(e,JSON.stringify(t))}catch(e){}}function a(e,t){let[n,a]=(0,l.useState)(()=>o(e,t));return[n,(0,l.useCallback)(t=>{a(n=>{let l="function"==typeof t?t(n):t;return r(e,l),l})},[e])]}}},e=>{e.O(0,[3862,2678,4754,9244,3392,1871,981,2003,9562,488,3272,3077,8470,9581,3659,7328,6404,8551,1675,6428,5418,4555,4386,5733,9345,3772,8404,8650,9611,8441,1255,7358],()=>e(e.s=79415)),_N_E=e.O()}]);