flujo-ai 3.23.0 → 3.26.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 (397) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +205 -186
  3. package/.next/app-path-routes-manifest.json +2 -2
  4. package/.next/build-manifest.json +7 -7
  5. package/.next/react-loadable-manifest.json +25 -20
  6. package/.next/routes-manifest.json +19 -1
  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 +3 -3
  10. package/.next/server/app/api/approvals/[id]/route.js +1 -1
  11. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  12. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/approvals/route.js +1 -1
  14. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  15. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/backup/route.js +1 -1
  17. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  18. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/browse/route.js +1 -1
  20. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/bugs/enhance/route.js +2 -2
  22. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  23. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/cwd/route.js +1 -1
  25. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/encryption/secure/route.js +1 -1
  27. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  28. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/env/route.js +1 -1
  30. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  32. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/flow/compile/route.js +1 -1
  34. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  35. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/flow/generate/route.js +1 -1
  37. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  38. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/flow/improve/route.js +1 -1
  40. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  41. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/flow/prompt-renderer/route.js +1 -1
  43. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  44. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  46. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  47. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/flow/repair/route.js +1 -1
  49. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  50. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  52. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/git/route.js +1 -1
  54. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/init/route.js +1 -1
  56. package/.next/server/app/api/init/route.js.nft.json +1 -1
  57. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/mcp/cancel/route.js +1 -1
  62. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  63. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  65. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  66. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  68. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  69. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  71. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  72. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  74. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  75. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  77. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  78. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  80. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  81. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  83. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  84. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  86. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  87. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/mcp/servers/route.js +1 -1
  89. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  90. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  92. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  93. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  95. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  96. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/mcp-registry/route.js +1 -1
  98. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  99. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/model/[id]/route.js +1 -1
  102. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  103. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/model/provider/route.js +1 -1
  105. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  106. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/model/route.js +1 -1
  108. package/.next/server/app/api/model/route.js.nft.json +1 -1
  109. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/model/test/route.js +1 -1
  111. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  112. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/oauth/reset/route.js +1 -1
  116. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  117. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  119. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  121. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  123. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  126. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  127. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/planned-executions/route.js +1 -1
  129. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  130. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/restore/route.js +1 -1
  132. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  133. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/runs/active/route.js +1 -1
  135. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  136. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/update/route.js +1 -1
  139. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/waves/route.js +1 -1
  141. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  142. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  144. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  145. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/chat/page.js +10 -10
  147. package/.next/server/app/chat/page.js.nft.json +1 -1
  148. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  149. package/.next/server/app/chat.html +1 -1
  150. package/.next/server/app/chat.rsc +4 -4
  151. package/.next/server/app/docs/page.js +11 -8
  152. package/.next/server/app/docs/page.js.nft.json +1 -1
  153. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  154. package/.next/server/app/docs.html +1 -1
  155. package/.next/server/app/docs.rsc +4 -4
  156. package/.next/server/app/executions/page.js +3 -3
  157. package/.next/server/app/executions/page.js.nft.json +1 -1
  158. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  159. package/.next/server/app/executions.html +1 -1
  160. package/.next/server/app/executions.rsc +4 -4
  161. package/.next/server/app/flows/page.js +3 -3
  162. package/.next/server/app/flows/page.js.nft.json +1 -1
  163. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  164. package/.next/server/app/flows.html +1 -1
  165. package/.next/server/app/flows.rsc +4 -4
  166. package/.next/server/app/index.html +1 -1
  167. package/.next/server/app/index.rsc +4 -4
  168. package/.next/server/app/mcp/page.js +5 -5
  169. package/.next/server/app/mcp/page.js.nft.json +1 -1
  170. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  171. package/.next/server/app/mcp-flows/route.js +1 -1
  172. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  173. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  175. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  176. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/mcp.html +1 -1
  178. package/.next/server/app/mcp.rsc +4 -4
  179. package/.next/server/app/models/page.js +2 -2
  180. package/.next/server/app/models/page.js.nft.json +1 -1
  181. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  182. package/.next/server/app/page.js +2 -2
  183. package/.next/server/app/page_client-reference-manifest.js +1 -1
  184. package/.next/server/app/settings/page.js +2 -57
  185. package/.next/server/app/settings/page.js.nft.json +1 -1
  186. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  187. package/.next/server/app/settings.html +1 -1
  188. package/.next/server/app/settings.rsc +4 -4
  189. package/.next/server/app/v1/chat/completions/route.js +1 -1
  190. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  191. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  193. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  194. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  196. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  197. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  199. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  200. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  202. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  203. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  205. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  206. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +1 -1
  208. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  209. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  212. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  213. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  215. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  216. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  218. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  219. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/v1/models/route.js +1 -1
  221. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  222. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/waves/page.js +3 -3
  224. package/.next/server/app/waves/page.js.nft.json +1 -1
  225. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  226. package/.next/server/app/waves.html +1 -1
  227. package/.next/server/app/waves.rsc +4 -4
  228. package/.next/server/app-paths-manifest.json +2 -2
  229. package/.next/server/chunks/1083.js +1 -1
  230. package/.next/server/chunks/1114.js +1 -0
  231. package/.next/server/chunks/1197.js +2 -2
  232. package/.next/server/chunks/1226.js +1 -1
  233. package/.next/server/chunks/166.js +5 -0
  234. package/.next/server/chunks/2373.js +1 -0
  235. package/.next/server/chunks/2859.js +1 -3
  236. package/.next/server/chunks/289.js +1 -1
  237. package/.next/server/chunks/3030.js +1 -1
  238. package/.next/server/chunks/3298.js +2 -0
  239. package/.next/server/chunks/3312.js +1 -0
  240. package/.next/server/chunks/3774.js +1 -1
  241. package/.next/server/chunks/3823.js +9 -8
  242. package/.next/server/chunks/3855.js +1 -0
  243. package/.next/server/chunks/3924.js +52 -0
  244. package/.next/server/chunks/4545.js +21 -0
  245. package/.next/server/chunks/4561.js +9 -8
  246. package/.next/server/chunks/4578.js +1 -0
  247. package/.next/server/chunks/4671.js +1 -1
  248. package/.next/server/chunks/4677.js +37 -0
  249. package/.next/server/chunks/4771.js +2 -2
  250. package/.next/server/chunks/4793.js +2 -0
  251. package/.next/server/chunks/4836.js +1 -0
  252. package/.next/server/chunks/5311.js +1 -1
  253. package/.next/server/chunks/5463.js +1 -0
  254. package/.next/server/chunks/5544.js +5 -0
  255. package/.next/server/chunks/5708.js +11 -8
  256. package/.next/server/chunks/584.js +1 -0
  257. package/.next/server/chunks/62.js +1 -1
  258. package/.next/server/chunks/6240.js +1 -0
  259. package/.next/server/chunks/6306.js +1 -0
  260. package/.next/server/chunks/{3928.js → 6745.js} +1 -1
  261. package/.next/server/chunks/6908.js +2 -2
  262. package/.next/server/chunks/701.js +1 -1
  263. package/.next/server/chunks/7214.js +6 -0
  264. package/.next/server/chunks/7362.js +11 -7
  265. package/.next/server/chunks/7463.js +6 -0
  266. package/.next/server/chunks/7506.js +1 -1
  267. package/.next/server/chunks/7579.js +82 -0
  268. package/.next/server/chunks/7821.js +1 -1
  269. package/.next/server/chunks/8216.js +1 -0
  270. package/.next/server/chunks/8387.js +1 -0
  271. package/.next/server/chunks/856.js +5 -0
  272. package/.next/server/chunks/8652.js +1 -1
  273. package/.next/server/chunks/8739.js +2 -2
  274. package/.next/server/chunks/9165.js +1 -0
  275. package/.next/server/chunks/94.js +1 -0
  276. package/.next/server/chunks/9427.js +1 -0
  277. package/.next/server/edge-instrumentation.js +2 -0
  278. package/.next/server/edge-instrumentation.js.map +1 -0
  279. package/.next/server/edge-runtime-webpack.js +2 -0
  280. package/.next/server/edge-runtime-webpack.js.map +1 -0
  281. package/.next/server/instrumentation.js.nft.json +1 -1
  282. package/.next/server/middleware-build-manifest.js +1 -1
  283. package/.next/server/middleware-manifest.json +33 -2
  284. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  285. package/.next/server/pages/404.html +1 -1
  286. package/.next/server/pages/500.html +1 -1
  287. package/.next/server/server-reference-manifest.js +1 -1
  288. package/.next/server/server-reference-manifest.json +1 -1
  289. package/.next/server/src/middleware.js +14 -0
  290. package/.next/server/src/middleware.js.map +1 -0
  291. package/.next/static/chunks/1675-773454288de4309d.js +1 -0
  292. package/.next/static/chunks/1731-6e45fb529f9044a3.js +1 -0
  293. package/.next/static/chunks/1871-14c3e63ca865d85e.js +1 -0
  294. package/.next/static/chunks/2003-7710c23acaef11c9.js +1 -0
  295. package/.next/static/chunks/2318-76fcb6c769b1a569.js +1 -0
  296. package/.next/static/chunks/2566-6e2b9d9349814789.js +1 -0
  297. package/.next/static/chunks/2734-59fbe2f62a59df86.js +1 -0
  298. package/.next/static/chunks/3089.6b4e21e1faa304e2.js +1 -0
  299. package/.next/static/chunks/3109-11bdec9bdfd996c3.js +1 -0
  300. package/.next/static/chunks/3217.f728df99ab5da33c.js +1 -0
  301. package/.next/static/chunks/333-5f3c5be57c80c48c.js +1 -0
  302. package/.next/static/chunks/3333-b7b3e5758a568013.js +1 -0
  303. package/.next/static/chunks/3556-3b6f7c99b015b752.js +1 -0
  304. package/.next/static/chunks/{6730-c330b55cd0fe4f47.js → 4003-3b3768446ae333df.js} +1 -1
  305. package/.next/static/chunks/4523-a540747aa2ed34e8.js +1 -0
  306. package/.next/static/chunks/4635-0fe310d3be64e71e.js +1 -0
  307. package/.next/static/chunks/4690-ec7d397cfacedac3.js +1 -0
  308. package/.next/static/chunks/4775-cb9c0be621363a08.js +8 -0
  309. package/.next/static/chunks/5336-81da1080de29ebfc.js +1 -0
  310. package/.next/static/chunks/5512.d01d565f73109a1a.js +1 -0
  311. package/.next/static/chunks/6691-117567b2b40cd9f4.js +1 -0
  312. package/.next/static/chunks/7274-1184563607f2b5f5.js +1 -0
  313. package/.next/static/chunks/8166-e75acdc559b34fcd.js +1 -0
  314. package/.next/static/chunks/8345.fbc0af16acce7256.js +1 -0
  315. package/.next/static/chunks/8405.e728bc83a7c9fed6.js +1 -0
  316. package/.next/static/chunks/8470-72cf748472d4d501.js +1 -0
  317. package/.next/static/chunks/8607-5787e42775fc3acb.js +1 -0
  318. package/.next/static/chunks/8610-660d5088bc1dd7a7.js +1 -0
  319. package/.next/static/chunks/8834-faf121e257b517d5.js +1 -0
  320. package/.next/static/chunks/8989-401559d9f3bc80a0.js +1 -0
  321. package/.next/static/chunks/{9164-d9f1abba780231e0.js → 9164-829ab5b085ec06d6.js} +1 -1
  322. package/.next/static/chunks/9240-d0a51f4d504f34b1.js +1 -0
  323. package/.next/static/chunks/9562-b7922ceb400ec536.js +1 -0
  324. package/.next/static/chunks/9704-6b7415964d7c042a.js +1 -0
  325. package/.next/static/chunks/app/chat/page-04ad1fad78048afb.js +1 -0
  326. package/.next/static/chunks/app/docs/page-5475c616764dbb18.js +1 -0
  327. package/.next/static/chunks/app/executions/page-c18708ed96d228ec.js +1 -0
  328. package/.next/static/chunks/app/flows/page-f7e44aa545bcc56e.js +1 -0
  329. package/.next/static/chunks/app/layout-e6fbae80e0f456a6.js +1 -0
  330. package/.next/static/chunks/app/mcp/page-3638fbee04a3a6ea.js +1 -0
  331. package/.next/static/chunks/app/models/error-5732fbb053e182c5.js +1 -0
  332. package/.next/static/chunks/app/models/page-e690a986047b1e62.js +1 -0
  333. package/.next/static/chunks/app/{page-a859e4dbd180df98.js → page-0a95c40a65dbd2eb.js} +1 -1
  334. package/.next/static/chunks/app/settings/page-3ef9b95187e18a5a.js +1 -0
  335. package/.next/static/chunks/app/waves/page-c9a307e2236423a4.js +1 -0
  336. package/.next/static/chunks/{main-be8e823624954fab.js → main-9bda5041078d2b6a.js} +1 -1
  337. package/.next/static/chunks/webpack-a6844e1074885c2f.js +1 -0
  338. package/.next/static/css/40f9bef305b11bf5.css +1 -0
  339. package/.next/trace +10 -8
  340. package/README.md +31 -1
  341. package/next.config.mjs +139 -119
  342. package/package.json +1 -1
  343. package/.next/server/chunks/1119.js +0 -1
  344. package/.next/server/chunks/1439.js +0 -1
  345. package/.next/server/chunks/1556.js +0 -52
  346. package/.next/server/chunks/1910.js +0 -37
  347. package/.next/server/chunks/1999.js +0 -1
  348. package/.next/server/chunks/2246.js +0 -1
  349. package/.next/server/chunks/264.js +0 -17
  350. package/.next/server/chunks/2823.js +0 -6
  351. package/.next/server/chunks/3286.js +0 -6
  352. package/.next/server/chunks/4637.js +0 -81
  353. package/.next/server/chunks/6644.js +0 -1
  354. package/.next/server/chunks/7427.js +0 -1
  355. package/.next/server/chunks/7769.js +0 -6
  356. package/.next/server/chunks/8357.js +0 -1
  357. package/.next/server/chunks/8518.js +0 -2
  358. package/.next/static/chunks/1620-0d8ecd877f123f7b.js +0 -1
  359. package/.next/static/chunks/1871-dd8c10ed9d37100b.js +0 -1
  360. package/.next/static/chunks/1983-242862b3dc022a26.js +0 -1
  361. package/.next/static/chunks/2003-460f30484998c05d.js +0 -1
  362. package/.next/static/chunks/2619-04bc32f026a0d946.js +0 -1
  363. package/.next/static/chunks/3217.058098140ec3f563.js +0 -1
  364. package/.next/static/chunks/3736-5e2b3f6cda1bb923.js +0 -1
  365. package/.next/static/chunks/4207-41abb9622eb4b4f8.js +0 -1
  366. package/.next/static/chunks/4812-4a9aceb49632a973.js +0 -1
  367. package/.next/static/chunks/5501-f5b093c8dfd74196.js +0 -1
  368. package/.next/static/chunks/5545-2ab6e5d749e103cd.js +0 -1
  369. package/.next/static/chunks/6016.8201fa15ab6aa90e.js +0 -1
  370. package/.next/static/chunks/6288-a285bbbd701e0dbf.js +0 -1
  371. package/.next/static/chunks/6731-c230e88cf0032609.js +0 -1
  372. package/.next/static/chunks/6920-a83ad5c0d5a54cf3.js +0 -1
  373. package/.next/static/chunks/7430-6e78aaeac66988a9.js +0 -1
  374. package/.next/static/chunks/7583.7af90b94e3c263f2.js +0 -1
  375. package/.next/static/chunks/7687-7edf1a6e1f063b08.js +0 -1
  376. package/.next/static/chunks/8083.16fda2c7f6d10d0c.js +0 -1
  377. package/.next/static/chunks/8480-229fd353b68b570f.js +0 -1
  378. package/.next/static/chunks/8548-8e4a95334064e8b2.js +0 -1
  379. package/.next/static/chunks/8834-bda798efab40c60a.js +0 -1
  380. package/.next/static/chunks/9181-8d8ecd3f641b7209.js +0 -8
  381. package/.next/static/chunks/9356-99ba407b60b9dfe9.js +0 -1
  382. package/.next/static/chunks/9451-680fa09f81f18806.js +0 -1
  383. package/.next/static/chunks/9659-a279e3aaba407251.js +0 -1
  384. package/.next/static/chunks/app/chat/page-ea6752144d35c892.js +0 -1
  385. package/.next/static/chunks/app/docs/page-935b0386917b91bb.js +0 -1
  386. package/.next/static/chunks/app/executions/page-d72027b0179e8fa2.js +0 -1
  387. package/.next/static/chunks/app/flows/page-1844e86dd43fa285.js +0 -1
  388. package/.next/static/chunks/app/layout-2ebf01d97702a18a.js +0 -1
  389. package/.next/static/chunks/app/mcp/page-b6866f49f76a6801.js +0 -1
  390. package/.next/static/chunks/app/models/error-a3183f168e8a9b04.js +0 -1
  391. package/.next/static/chunks/app/models/page-5a13ea6ff5ac1b9c.js +0 -1
  392. package/.next/static/chunks/app/settings/page-7a68583660508ffd.js +0 -1
  393. package/.next/static/chunks/app/waves/page-ec33cf79f6103a9e.js +0 -1
  394. package/.next/static/chunks/webpack-f4a471ab560eb19e.js +0 -1
  395. package/.next/static/css/39393a79f7cb0dee.css +0 -1
  396. /package/.next/static/{WRUzIBdypUJvv0xAct8qc → Il6IDWxf3CN0dv-P6QQrp}/_buildManifest.js +0 -0
  397. /package/.next/static/{WRUzIBdypUJvv0xAct8qc → Il6IDWxf3CN0dv-P6QQrp}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- "use strict";exports.id=7427,exports.ids=[7427],exports.modules={21570:(a,b,c)=>{c.d(b,{A:()=>p});var d=c(21124);c(38301);var e=c(40512),f=c(83899),g=c(81637),h=c(79515),i=c(44079),j=c(91059),k=c(52327),l=c(19925),m=c(68730),n=c(30137),o=c(24330);let p=({open:a,onClose:b,title:c,description:p,maxWidth:q="md",...r})=>(0,d.jsxs)(e.A,{open:a,onClose:b,maxWidth:q,fullWidth:!0,children:[(0,d.jsx)(f.A,{component:"div",children:(0,d.jsxs)(g.default,{display:"flex",alignItems:"center",justifyContent:"space-between",children:[(0,d.jsx)(h.default,{variant:"h6",children:c}),(0,d.jsx)(i.A,{edge:"end",color:"inherit",onClick:b,"aria-label":"close",children:(0,d.jsx)(n.A,{})})]})}),(0,d.jsx)(j.A,{}),(0,d.jsxs)(k.A,{sx:{p:3},children:[p&&(0,d.jsx)(h.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:p}),(0,d.jsx)(o.A,{...r})]}),(0,d.jsx)(l.A,{children:(0,d.jsx)(m.A,{onClick:b,children:"Cancel"})})]})},24330:(a,b,c)=>{c.d(b,{A:()=>o});var d=c(21124),e=c(38301),f=c(82666),g=c(81637),h=c(37674),i=c(67101),j=c(8521),k=c(79515),l=c(40973),m=c(59737);let n={xs:12,sm:6,md:4},o=({isLoading:a=!1,error:b=null,emptyMessage:c="Nothing to choose from.",loadingMessage:o="Loading…",skeleton:p,skeletonCount:q=4,columns:r=n,items:s,searchable:t=!1,searchPlaceholder:u="Search…",searchTerm:v,onSearchChange:w,groups:x,collapsedKeys:y,onToggleGroup:z})=>{let A={...n,...r},[B,C]=(0,e.useState)(""),D=void 0!==v,E=D?v:B,[F,G]=(0,e.useState)(new Set),H=y??F,I=a=>(0,d.jsx)(f.Ay,{container:!0,spacing:2,alignItems:"stretch",children:a.map(a=>(0,d.jsx)(f.Ay,{item:!0,xs:A.xs,sm:A.sm,md:A.md,lg:A.lg,sx:{display:"flex"},children:(0,d.jsx)(g.default,{sx:{width:"100%"},children:a.content})},a.key))}),J=t?(0,d.jsx)(h.A,{placeholder:u,variant:"outlined",size:"small",fullWidth:!0,value:E,onChange:a=>(a=>{w?.(a),D||C(a)})(a.target.value),sx:{mb:2},InputProps:{startAdornment:(0,d.jsx)(i.A,{position:"start",children:(0,d.jsx)(l.A,{fontSize:"small"})})}}):null,K=a=>(0,d.jsxs)(g.default,{children:[J,a]});if(a)return K(p?(0,d.jsx)(f.Ay,{container:!0,spacing:2,children:Array.from({length:q}).map((a,b)=>(0,d.jsx)(f.Ay,{item:!0,xs:A.xs,sm:A.sm,md:A.md,lg:A.lg,children:p},`skeleton-${b}`))}):(0,d.jsxs)(g.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2},children:[(0,d.jsx)(j.default,{size:20}),(0,d.jsx)(k.default,{variant:"body2",color:"text.secondary",children:o})]}));if(b)return K((0,d.jsx)(k.default,{color:"error",variant:"body2",sx:{py:2},children:b}));let L=D?"":E.trim().toLowerCase(),M=a=>!L||(a.searchText??"").toLowerCase().includes(L),N=(0,d.jsx)(k.default,{variant:"body2",color:"text.secondary",sx:{py:2},children:c});if(x){let a=x.map(a=>({...a,items:a.items.filter(M)})).filter(a=>a.items.length>0);return K(0===a.length?N:(0,d.jsx)(d.Fragment,{children:a.map(a=>(0,d.jsx)(m.A,{label:a.label,count:a.items.length,expanded:!H.has(a.key),onToggle:()=>(a=>{if(z)return void z(a);G(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})})(a.key),children:I(a.items)},a.key))}))}let O=(s??[]).filter(M);return K(0===O.length?N:I(O))}},32640:(a,b,c)=>{c.d(b,{Lg:()=>g,eZ:()=>i,fC:()=>f,h5:()=>j});var d=c(76133),e=c(7329);let f={"name-asc":"Name (A-Z)","name-desc":"Name (Z-A)",provider:"Provider","context-desc":"Context (largest)","context-asc":"Context (smallest)"},g=a=>a.displayName||a.name||"",h=a=>(0,d.T_)(a.provider,a.adapter).label;function i(a,b){switch(b){case"provider":{let b=h(a);return{key:`provider:${b}`,label:b}}case"context-asc":case"context-desc":var c;return"number"!=typeof(c=a.contextWindow)||Number.isNaN(c)?{key:"ctx:unknown",label:"Unknown context"}:c<=8e3?{key:"ctx:<=8k",label:"≤ 8K tokens"}:c<=32e3?{key:"ctx:8k-32k",label:"8K–32K tokens"}:c<=128e3?{key:"ctx:32k-128k",label:"32K–128K tokens"}:c<=1e6?{key:"ctx:128k-1m",label:"128K–1M tokens"}:{key:"ctx:>1m",label:"> 1M tokens"};default:return(0,e.po)(g(a))}}function j(a,b){return[...a].sort((a,c)=>{switch(b){case"name-asc":return g(a).localeCompare(g(c));case"name-desc":return g(c).localeCompare(g(a));case"provider":return h(a).localeCompare(h(c))||g(a).localeCompare(g(c));case"context-desc":case"context-asc":{let d="number"!=typeof a.contextWindow||Number.isNaN(a.contextWindow)?void 0:a.contextWindow,e="number"!=typeof c.contextWindow||Number.isNaN(c.contextWindow)?void 0:c.contextWindow;if(void 0===d&&void 0===e)return g(a).localeCompare(g(c));if(void 0===d)return 1;if(void 0===e)return -1;let f="context-desc"===b?e-d:d-e;return 0!==f?f:g(a).localeCompare(g(c))}default:return 0}})}},45231:(a,b,c)=>{c.d(b,{E:()=>k});var d=c(38301),e=c(2560),f=c(7329),g=c(32640),h=c(61160),i=c(66675);let j={models:{defaultSort:"name-asc",sort:(a,b)=>(0,g.h5)(a,b),deriveSortGroup:(a,b)=>(0,g.eZ)(a,b),getFolder:a=>a.folder,getSearchText:a=>`${(0,g.Lg)(a)} ${a.name??""}`},mcp:{defaultSort:"name-asc",sort:(a,b)=>(0,h.rI)(a,b),deriveSortGroup:(a,b)=>(0,h.mO)(a,b),getFolder:a=>a.folder,getSearchText:a=>`${a.name??""} ${a.rootPath??a.path??""}`},flows:{defaultSort:"name-asc",sort:(a,b)=>(0,i.NP)(a,b),deriveSortGroup:(a,b)=>(0,i.ts)(a,b),getFolder:a=>a.folder,getSearchText:a=>a.name??""}};function k(a,b){let c=j[a],[g,h]=(0,d.useState)(""),[i]=(0,e.Xk)(`flujo-ui:${a}:sort`,c.defaultSort),[k]=(0,e.Xk)(`flujo-ui:${a}:group`,"none"),[l,m]=(0,e.Xk)(`flujo-ui:${a}:collapsed`,[]),n=(0,d.useMemo)(()=>new Set(l),[l]),o=(0,d.useMemo)(()=>{let a=g.trim().toLowerCase(),d=a?b.filter(b=>c.getSearchText(b).toLowerCase().includes(a)):b;return c.sort([...d],i)},[b,g,i,c]),p=(0,d.useMemo)(()=>"folder"===k?(0,f.Je)(o,a=>c.getFolder(a)):"sort"===k?(0,f.Az)(o,a=>c.deriveSortGroup(a,i)):null,[k,o,i,c]);return{searchTerm:g,setSearchTerm:h,sortOption:i,groupMode:k,items:o,groups:p,collapsedKeys:n,toggleGroup:(0,d.useCallback)(a=>{m(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a])},[m])}}},63281:(a,b,c)=>{c.d(b,{g:()=>g});var d=c(2117);let e=(0,c(19815).h)("frontend/services/flow/index");class f{async loadFlows(){e.debug("loadFlows: Entering method");try{if(this.flowsCache)return e.debug("loadFlows: Using cached flows",{count:this.flowsCache.length}),this.flowsCache;let a=await fetch("/api/flow");if(!a.ok){let b=await a.json();throw Error(b.error||"Failed to load flows")}let b=await a.json();return e.debug("loadFlows: Loaded flows from API",{count:b.length}),this.flowsCache=b,b}catch(a){return e.warn("loadFlows: Failed to load flows:",a),[]}}async getFlow(a){e.debug("getFlow: Entering method",{flowId:a});try{if(this.flowsCache){let b=this.flowsCache.find(b=>b.id===a);if(b)return e.debug("getFlow: Using cached flow",{flowId:a}),b}let b=await fetch(`/api/flow/${encodeURIComponent(a)}`);if(!b.ok){if(404===b.status)return e.debug(`getFlow: Flow ${a} not found`),null;let c=await b.json();throw Error(c.error||`Failed to get flow: ${a}`)}let c=await b.json();return e.debug("getFlow: Retrieved flow from API",{flowId:a}),c}catch(b){return e.warn(`getFlow: Failed to get flow ${a}:`,b),null}}async addFlow(a){e.debug("addFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch("/api/flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to add flow"}}let c=await b.json();return this.flowsCache&&this.flowsCache.push(c),e.debug("addFlow: Flow added successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("addFlow: Failed to add flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to add flow"}}}async generateFlow(a,b,c){e.debug("generateFlow: Entering method",{modelId:b,allowInstall:c?.allowInstall,allowSubflows:c?.allowSubflows,maxDepth:c?.maxDepth});try{let d=await fetch("/api/flow/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:a,modelId:b,allowInstall:c?.allowInstall===!0,allowSubflows:c?.allowSubflows===!0,..."number"==typeof c?.maxDepth?{maxDepth:c.maxDepth}:{}})}),f=await d.json().catch(()=>null);if(!d.ok)return{success:!1,error:f?.error||"Failed to generate flow"};let g=Array.isArray(f.flows)&&f.flows.length>0?f.flows:[{flow:f.flow,validation:f.validation}];return e.debug("generateFlow: Draft generated",{flowId:f.flow?.id,flowCount:g.length,attempts:f.attempts,errorCount:f.validation?.errorCount,installedServers:f.installedServers?.length??0}),{success:!0,flow:f.flow,validation:f.validation,flows:g,rootFlowId:f.rootFlowId??f.flow?.id,attempts:f.attempts,installedServers:f.installedServers??[]}}catch(a){return e.warn("generateFlow: Failed to generate flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to generate flow"}}}async improveFlow(a,b,c,d){e.debug("improveFlow: Entering method",{flowId:a?.id,modelId:c,allowInstall:d?.allowInstall});try{let f=await fetch("/api/flow/improve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({flow:a,description:b,modelId:c,allowInstall:d?.allowInstall===!0})}),g=await f.json().catch(()=>null);if(!f.ok)return{success:!1,error:g?.error||"Failed to improve flow"};return e.debug("improveFlow: Draft revised",{flowId:g.flow?.id,attempts:g.attempts,errorCount:g.validation?.errorCount,installedServers:g.installedServers?.length??0}),{success:!0,flow:g.flow,validation:g.validation,attempts:g.attempts,installedServers:g.installedServers??[]}}catch(a){return e.warn("improveFlow: Failed to improve flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to improve flow"}}}async updateFlow(a){e.debug("updateFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch(`/api/flow/${encodeURIComponent(a.id)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to update flow"}}let c=await b.json();if(this.flowsCache){let b=this.flowsCache.findIndex(b=>b.id===a.id);b>=0?this.flowsCache[b]=c:this.flowsCache.push(c)}return e.debug("updateFlow: Flow updated successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("updateFlow: Failed to update flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to update flow"}}}async deleteFlow(a){e.debug("deleteFlow: Entering method",{flowId:a});try{let b=await fetch(`/api/flow/${encodeURIComponent(a)}`,{method:"DELETE"});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to delete flow"}}return this.flowsCache&&(this.flowsCache=this.flowsCache.filter(b=>b.id!==a)),e.debug("deleteFlow: Flow deleted successfully",{flowId:a}),{success:!0}}catch(a){return e.warn("deleteFlow: Failed to delete flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to delete flow"}}}createNode(a,b){return e.debug("createNode: Entering method",{type:a,position:b}),{id:(0,d.A)(),type:a,position:b,data:{label:`${"mcp"===a?"MCP":a.charAt(0).toUpperCase()+a.slice(1)} Node`,type:a,properties:{}}}}createStartNode(){return{id:(0,d.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}}}createNewFlow(a="NewFlow"){e.debug("createNewFlow: Entering method",{name:a});let b=Date.now();return{id:(0,d.A)(),name:a,createdAt:b,updatedAt:b,nodes:[this.createStartNode()],edges:[]}}createHistoryEntry(a,b){return e.debug("createHistoryEntry: Entering method"),{nodes:[...a],edges:[...b]}}generateSampleFlow(a="Sample Flow"){return e.debug("generateSampleFlow: Entering method",{name:a}),{id:(0,d.A)(),name:a,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]}}constructor(){this.flowsCache=null}}let g=new f},63908:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess")},66675:(a,b,c)=>{c.d(b,{NP:()=>h,ts:()=>f});var d=c(7329);function e(a){return a.updatedAt??a.createdAt??0}function f(a,b){switch(b){case"name-asc":case"name-desc":return(0,d.po)(a.name);case"most-nodes":case"least-nodes":var c;return 0===(c=a.nodes.length)?{key:"nodes:0",label:"0 nodes"}:c<=2?{key:"nodes:1-2",label:"1–2 nodes"}:c<=5?{key:"nodes:3-5",label:"3–5 nodes"}:c<=10?{key:"nodes:6-10",label:"6–10 nodes"}:{key:"nodes:11+",label:"11+ nodes"};case"newest":case"oldest":return function(a,b=Date.now()){if(!a)return{key:"recency:unknown",label:"No date"};let c=b-a;return c<864e5?{key:"recency:today",label:"Today"}:c<6048e5?{key:"recency:week",label:"This week"}:c<2592e6?{key:"recency:month",label:"This month"}:{key:"recency:older",label:"Older"}}(e(a));default:return{key:"all",label:"All flows"}}}function g(a,b){return a.name.localeCompare(b.name)||a.id.localeCompare(b.id)}function h(a,b){let c=(a,c)=>{switch(b){case"name-asc":return a.name.localeCompare(c.name);case"name-desc":return c.name.localeCompare(a.name);case"most-nodes":return c.nodes.length-a.nodes.length;case"least-nodes":return a.nodes.length-c.nodes.length;case"newest":{let b=e(c)-e(a);return 0!==b?b:g(a,c)}case"oldest":{let b=e(a)-e(c);return 0!==b?b:g(a,c)}default:return 0}};return[...a].sort((a,b)=>{let d=Number(!!b.favorite)-Number(!!a.favorite);return 0!==d?d:c(a,b)})}},76133:(a,b,c)=>{c.d(b,{T_:()=>e,xx:()=>d});let d=[{id:"openai",label:"OpenAI",provider:"openai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0},{id:"openrouter",label:"OpenRouter",provider:"openrouter",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://openrouter.ai/api/v1",showBaseUrl:!0},{id:"requesty",label:"Requesty",provider:"requesty",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://router.requesty.ai/v1",showBaseUrl:!0},{id:"xai",label:"X.ai",provider:"xai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.x.ai/v1",showBaseUrl:!0},{id:"ollama",label:"Ollama",provider:"ollama",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"http://localhost:11434/v1",showBaseUrl:!0},{id:"litellm",label:"LiteLLM",provider:"litellm",adapter:"openai",sdkLabel:"OpenAI SDK (via LiteLLM Proxy)",baseUrl:"http://localhost:4000/v1",showBaseUrl:!0},{id:"gemini-openai",label:"Gemini (OpenAI Format)",provider:"gemini",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai/",showBaseUrl:!0},{id:"gemini-native",label:"Gemini (Native)",provider:"gemini",adapter:"gemini",sdkLabel:"GenAI SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash"]},{id:"anthropic-openai",label:"Anthropic (OpenAI Format)",provider:"anthropic",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.anthropic.com/v1/",showBaseUrl:!0},{id:"anthropic-native",label:"Anthropic (Native)",provider:"anthropic",adapter:"anthropic",sdkLabel:"Anthropic SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["claude-opus-4-8","claude-sonnet-4-6","claude-haiku-4-5-20251001","claude-fable-5"]},{id:"claude-subscription",label:"Claude Subscription",provider:"claude-subscription",adapter:"claude-cli",sdkLabel:"Claude CLI",baseUrl:"",showBaseUrl:!1,defaultModels:["opus","sonnet","haiku","fable"]}];function e(a,b){let c=a||"openai",e=b||"openai";return d.find(a=>a.provider===c&&a.adapter===e)||d.find(a=>a.provider===c)||d[0]}}};
@@ -1,6 +0,0 @@
1
- "use strict";exports.id=7769,exports.ids=[7769],exports.modules={38291:(a,b,c)=>{c.d(b,{n:()=>g});var d=c(92372),e=c(75028);let f=(0,c(50846).h)("backend/execution/flow/persistConversationState");async function g(a,b){let c="conversations/",g=String(a).startsWith(c)?String(a).slice(c.length):String(a);return((0,d.ln)(g),null!=b.conversationId&&(0,d.ln)(b.conversationId),b.ephemeral)?(f.debug(`Refusing to persist ephemeral state (key ${a}); ephemeral runs never reach the conversations store.`),Promise.resolve()):(0,e.isConversationDeleted)(b.conversationId)?(f.info(`Refusing to persist state for deleted conversation ${b.conversationId} (key ${a}).`),Promise.resolve()):(0,d.VH)(a,{...b,executionTrace:void 0,emit:void 0})}},44681:(a,b,c)=>{c.d(b,{Q:()=>j,validateFlowForRun:()=>k});var d=c(50846),e=c(87821),f=c(20433),g=c(61397),h=c(84671);let i=(0,d.h)("backend/execution/flow/validateFlowForRun");async function j(a){let b,c;try{b=await f.modelService.loadModels()}catch(a){i.warn("validateFlowObjectForRun: could not load models; skipping model checks",a)}try{let a=await g.mcpService.loadServerConfigs();Array.isArray(a)&&(c=a.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})))}catch(a){i.warn("validateFlowObjectForRun: could not load servers; skipping server checks",a)}return(0,h.nC)(a,{models:b,servers:c})}async function k(a){let b=await e.flowService.getFlow(a);return b?j(b):(i.warn(`validateFlowForRun: flow ${a} could not be loaded; skipping pre-run checks`),{issues:[],errorCount:0,warningCount:0,isRunnable:!0})}},47769:(a,b,c)=>{c.d(b,{runFlow:()=>x});var d=c(50846),e=c(23823),f=c(38291),g=c(60184),h=c(14214),i=c(56793),j=c(99978),k=c(32642),l=c(75312),m=c(87821),n=c(92372),o=c(13516),p=c(44681),q=c(67490),r=c(75028);function s(a){let b=(a??"").replace(/\s+/g," ").trim();if(!b)return"New Conversation";let c=b,d=!1,e=c.split(" ");if(e.length>10&&(c=e.slice(0,10).join(" "),d=!0),c.length>60){let a=c.slice(0,60),b=a.lastIndexOf(" ");c=(b>0?a.slice(0,b):a).trimEnd(),d=!0}return d?`${c}…`:c}let t=(0,d.h)("backend/execution/flow/runFlow");m.flowService.getFlowByName||(m.flowService.getFlowByName=async a=>(await m.flowService.loadFlows()).find(b=>b.name===a)||null,t.info("Added getFlowByName method directly to flowService instance."));let u=m.flowService,v=f.n;async function w(a,b,c){try{let d,e=a.flowId;if(!e)return;try{d=(await m.flowService.getFlow(e))?.name??void 0}catch{}let f="api"===a.source?"api":"chat",g=c&&c.length>4096?`${c.slice(0,4096)}…`:c;(0,i.eh)().publish({flowId:e,flowName:d,executionId:a.plannedExecutionId,runId:a.conversationId||"",conversationId:a.conversationId||"",status:b,outputText:g,firedBy:f,chainDepth:a.chainDepth??0,timestamp:new Date().toISOString()})}catch(a){t.warn("Failed to publish runFlow flow-run event:",a)}}async function x(a){let b,c,d,f=Date.now(),i=a.flujo??!0,m=a.requireApproval??!1,x=a.debug??!1,y=a.continueDebug??!1,z=a.userTurn??!1,A="ephemeral"===a.mode,B=a.messages??(void 0!==a.prompt?[{role:"user",content:a.prompt}]:[]),C={model:a.modelName,messages:B,processNodeId:a.processNodeId};t.info("runFlow invoked",{flowId:a.flowId,model:a.modelName,messageCount:B.length,mode:A?"ephemeral":"conversation",flujo:i,requireApproval:m,flujodebug:x,conversationId:a.conversationId});let D=a.conversationId||crypto.randomUUID(),E=`conversations/${D}`,F="new";if(t.info(`Effective Conversation ID for this run: ${D}`,{providedId:a.conversationId}),e.FlowExecutor.conversationStates.has(D))c=e.FlowExecutor.conversationStates.get(D),t.info(`Resuming conversation ${D} from memory`,{currentNodeId:c.currentNodeId}),F="memory";else if(!A)try{(c=await (0,n.YM)(E,void 0))?(t.info(`Loaded conversation state from storage: ${D}`),F="storage",await (0,g.jM)(c),e.FlowExecutor.conversationStates.set(D,c)):t.info(`No state found in storage for conversation: ${D}. Will create new state.`)}catch(a){t.warn(`Error loading conversation state from storage for ${D}:`,a)}if(c?((b=c).conversationId!==D&&(t.warn(`Loaded state's internal conversationId (${b.conversationId}) differs from effectiveConvId (${D}). Using effectiveConvId.`),b.conversationId=D),"new"!==F&&("completed"===b.status||"error"===b.status||void 0===b.status)&&(t.info(`Resuming completed/errored/fresh conversation ${D}. Resetting status to 'running'.`),b.status="running",b.lastResponse=void 0,b.isCancelled=!1,"storage"===F&&e.FlowExecutor.conversationStates.set(D,b)),C.processNodeId&&"new"!==F&&(t.info(`Edit detected: Resetting currentNodeId for conversation ${D} to provided processNodeId: ${C.processNodeId}`),b.currentNodeId=C.processNodeId,b.status="running",b.lastResponse=void 0,b.pendingToolCalls=void 0,b.handoffRequested=void 0,b.isCancelled=!1,b.trackingInfo={executionId:crypto.randomUUID(),startTime:Date.now(),nodeExecutionTracker:[]},o.G.ENABLE_EXECUTION_TRACKER&&b.executionTrace&&(b.executionTrace=[]),e.FlowExecutor.conversationStates.set(D,b),t.verbose(`State updated in memory with reset currentNodeId: ${b.currentNodeId}`))):(t.info(`Creating new conversation state object for ID: ${D}`),b={trackingInfo:{executionId:crypto.randomUUID(),startTime:Date.now(),nodeExecutionTracker:(o.G.ENABLE_EXECUTION_TRACKER,[])},messages:[],flowId:"",conversationId:D,currentNodeId:void 0,status:"running",title:"New Conversation",createdAt:Date.now(),updatedAt:Date.now(),debugMode:x,executionTrace:x&&o.G.ENABLE_EXECUTION_TRACKER?[]:void 0,variables:{}}),a.variables&&"object"==typeof a.variables)for(let[c,d]of(b.variables=b.variables??{},Object.entries(a.variables)))null!=d&&(b.variables[c]="string"==typeof d?d:String(d));if(b.requireApproval=m,a.source&&(b.source=a.source),a.plannedExecutionId&&(b.plannedExecutionId=a.plannedExecutionId),A&&(b.ephemeral=!0),a.parentRunId&&(b.parentRunId=a.parentRunId),b.runDepth=a.depth??b.runDepth??0,b.chainDepth=a.chainDepth??b.chainDepth??0,b.onApprovalRequired=a.onApprovalRequired??b.onApprovalRequired??"auto",b.runDepth>q.A)return t.error(`runFlow aborted: subflow depth ${b.runDepth} exceeds max ${q.A}`),b.status="error",{status:"error",conversationId:D,outputText:"",messages:b.messages,error:{message:`Subflow recursion limit (${q.A}) exceeded`,statusCode:500},finalAction:j.O,sharedState:b};let G=[...b.messages??[]];if("new"===F){a.flowDefinition&&(b.flowSnapshot=a.flowDefinition,b.flowId=a.flowDefinition.id);let c=a.flowDefinition?a.flowDefinition.id:a.flowId;if(!c&&C.model){let a=C.model.substring(5),d=await u.getFlowByName(a);if(!d)return t.error(`Flow not found: ${a}`),{status:"error",conversationId:D,outputText:"",messages:b.messages,flowNotFound:{name:a},error:{message:`Flow not found: ${a}`,statusCode:400},finalAction:j.O,sharedState:b};c=d.id}if(!c)return t.error("No flow specified for run (neither flowId nor model provided)."),{status:"error",conversationId:D,outputText:"",messages:b.messages,error:{message:"No flow specified (provide flowId or model).",statusCode:400},finalAction:j.O,sharedState:b};b.flowId=c;let d=(C.messages||[]).filter(a=>!(a.depth>0)).map(a=>({...a,id:a.id||crypto.randomUUID(),timestamp:a.timestamp||Date.now(),processNodeId:a.processNodeId||void 0}));b.messages=d;try{if(b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=s(a.content),t.verbose(`Updated conversation title for ${D} during init to: ${b.title}`))}await v(E,b),t.debug(`Saved initial state for new conversation ${D}.`)}catch(a){t.error(`Failed to save initial state for new conversation ${D}:`,a)}e.FlowExecutor.conversationStates.set(D,b)}else C.messages&&C.messages.length>0&&(b.messages=C.messages.filter(a=>!(a.depth>0)).map(a=>({...a,id:a.id||crypto.randomUUID(),timestamp:a.timestamp||Date.now(),processNodeId:a.processNodeId||void 0})),t.info(`Updated conversation ${b.conversationId} with ${b.messages.length} messages from request`)),(z||void 0===b.debugMode)&&(b.debugMode=x),z&&(b.debugPendingToolCalls=void 0),b.debugMode&&o.G.ENABLE_EXECUTION_TRACKER&&!b.executionTrace&&(b.executionTrace=[]);try{await (0,g.UG)(b,G)}catch(a){t.warn(`Conversation-log reconcile failed for ${D}; continuing`,a)}if(z&&"new"!==F&&!C.processNodeId){let a=b.messages.length>0?b.messages[b.messages.length-1]:void 0;a?.role==="user"&&a.processNodeId&&a.processNodeId!==b.currentNodeId&&(t.info(`New user turn for ${D}: directing execution to node ${a.processNodeId} (was ${b.currentNodeId}).`),b.currentNodeId=a.processNodeId,e.FlowExecutor.conversationStates.set(D,b))}z&&b.flowId&&(e.FlowExecutor.clearFlowCache(b.flowId),t.debug(`Cleared compiled-flow cache for ${b.flowId} at start of user turn ${D}.`));let H=!1,I=0,J=a.emit??h.$.emitterFor(D),K=new Set(b.messages.map(a=>a.id).filter(a=>!!a)),L=a=>{if(!a.usage)return;let c=b.usage??{promptTokens:0,completionTokens:0,totalTokens:0,costUsd:0,byNode:{}};c.promptTokens+=a.usage.promptTokens,c.completionTokens+=a.usage.completionTokens,c.totalTokens+=a.usage.totalTokens;let d=a.usage.cacheReadTokens??0;d&&(c.cacheReadTokens=(c.cacheReadTokens??0)+d);let e=a.processNodeId||"unknown",f=c.byNode[e]??{promptTokens:0,completionTokens:0,totalTokens:0,costUsd:0};f.promptTokens+=a.usage.promptTokens,f.completionTokens+=a.usage.completionTokens,f.totalTokens+=a.usage.totalTokens,d&&(f.cacheReadTokens=(f.cacheReadTokens??0)+d),c.byNode[e]=f,b.usage=c,J({type:"usage",node:a.processNodeId?{nodeId:a.processNodeId}:void 0,promptTokens:a.usage.promptTokens,completionTokens:a.usage.completionTokens,totalTokens:a.usage.totalTokens,costUsd:0,...d?{cacheReadTokens:d}:{}})},M=()=>{for(let a of b.messages)a.id||(a.id=crypto.randomUUID()),K.has(a.id)||(K.add(a.id),"system"!==a.role&&(J({type:"message",message:a,node:a.processNodeId?{nodeId:a.processNodeId}:void 0}),L(a)))};if(J({type:"run:start",flowId:b.flowId}),(z||"new"===F)&&b.flowId)try{let a=b.flowSnapshot?await (0,p.Q)(b.flowSnapshot):await (0,p.validateFlowForRun)(b.flowId);if(!a.isRunnable){let c=a.issues.filter(a=>"error"===a.severity),e=`This flow can't run yet — please fix the following before running:
2
- `+c.map(a=>`• ${a.message}`).join("\n");t.warn(`Pre-run validation blocked flow ${b.flowId} for conv ${D}`,{errorCount:c.length,codes:c.map(a=>a.code)}),b.lastResponse={success:!1,error:e,errorDetails:{message:e,type:"invalid_request_error",code:"flow_invalid",status:400}},d=j.O,H=!0}}catch(a){t.warn(`Pre-run validation could not complete for ${b.flowId}; proceeding`,a)}let N=()=>!!b.isCancelled||!!(0,r.isCancelledByAncestry)(b.parentRunId,e.FlowExecutor.conversationStates)&&(b.isCancelled=!0,!0),O=!!b.debugMode&&!y,P=()=>{b.status="paused_debug",J({type:"run:paused",reason:"debug",node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0})};try{if(!H)for(;;){if(I++,t.debug(`--- Starting Execution Step ${I} for Conv ${D} ---`),I>150){t.warn(`Max internal iterations (150) reached for conv ${D}. Breaking loop.`),d!==j.O&&(b.lastResponse={success:!1,error:"Maximum internal iterations (150) reached."},d=j.O);break}if(N()){t.info(`Cancellation flag detected for conv ${D}. Terminating execution.`),b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=j.O;break}if(b.debugPendingToolCalls&&b.debugPendingToolCalls.length>0){let a=b.debugPendingToolCalls;b.debugPendingToolCalls=void 0,t.info(`[Debug Step] Executing ${a.length} pending tool call(s) for conv ${D}.`);let c=await k.s.processToolCalls({toolCalls:a,toolNameMap:b.toolNameMap,emit:J,conversationId:b.ephemeral?void 0:b.conversationId,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:N});if(!c.success){t.error(`Debug tool processing failed for conv ${D}`,{error:c.error}),b.lastResponse={success:!1,error:"Tool processing failed",errorDetails:c.error},d=j.O;break}let f=c.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...f),e.FlowExecutor.conversationStates.set(D,b),M();try{b.updatedAt=Date.now(),await v(E,b)}catch(a){t.error(`Failed to save state after debug tool execution for conv ${D}:`,a)}if(O){t.info(`[Debug Step] Paused after tool execution for conv ${D}.`),P();break}continue}if(!O&&b.breakpoints&&b.breakpoints.length>0){let a=await e.FlowExecutor.peekNextNodeId(b);if(a&&b.breakpoints.includes(a)&&b.lastBreakNodeId!==a){t.info(`Breakpoint hit at node ${a} for conv ${D}. Pausing.`),b.status="paused_debug",b.debugMode=!0,b.lastBreakNodeId=a,J({type:"breakpoint:hit",node:{nodeId:a}}),J({type:"run:paused",reason:"breakpoint",node:{nodeId:a}});try{b.updatedAt=Date.now(),await v(E,b)}catch(a){t.error(`Failed to save state on breakpoint for conv ${D}:`,a)}break}a&&b.lastBreakNodeId&&a!==b.lastBreakNodeId&&(b.lastBreakNodeId=void 0)}if(b.messages.length>0){let a=b.messages.slice(-3);t.verbose(`Message history before step ${I}`,a)}else t.verbose(`No messages in history before step ${I}`);let a=await e.FlowExecutor.executeStep(b,J);if(b=a.sharedState,d=a.action,M(),b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=s(a.content),t.verbose(`Updated conversation title for ${D} after step ${I} to: ${b.title}`))}if(t.info(`Step ${I} completed for conv ${D}. Action: ${d}`,{currentNodeId:b.currentNodeId}),t.verbose(`Shared state after step ${I}`,b),t.debug(`[Action Handling] Step ${I}: Received action "${d}" for conv ${D}`),d===j.O){t.info(`[Action Handling] Step ${I}: Handling ERROR_ACTION for conv ${D}`),t.error(`Error action received during step ${I} for conv ${D}`,{error:b.lastResponse});break}if(d===j.g4){t.info(`[Action Handling] Step ${I}: Handling FINAL_RESPONSE_ACTION for conv ${D}`),t.info(`Final response action received at step ${I} for conv ${D}`),b.status="completed",t.info(`Setting conversation status to 'completed' for conv ${D}`);break}if(d===j.Jp){t.info(`[Action Handling] Step ${I}: Handling TOOL_CALL_ACTION for conv ${D}`),t.info(`Tool call action received at step ${I} for conv ${D}`);let a=b.messages.length>0?b.messages[b.messages.length-1]:null;if(a?.role==="assistant"&&a.tool_calls)if(i){if(m&&"fail"===b.onApprovalRequired){let c=a.tool_calls[0],e=c&&"function"===c.type?c.function.name:"unknown";t.info(`[flujo=true, onApprovalRequired=fail] Failing fast for tool "${e}" (conv ${D})`),b.status="error",b.pendingToolCalls=a.tool_calls,b.lastResponse={success:!1,error:`Headless run requires approval for tool "${e}" but no approver is available (approvalPolicy: fail).`,errorDetails:{message:`Headless run requires approval for tool "${e}" but no approver is available (approvalPolicy: fail).`,type:"approval_required",name:e}},d=j.O;break}if(m){t.info(`[flujo=true, requireApproval=true] Pausing execution for tool approval for conv ${D}`),b.status="awaiting_tool_approval",b.pendingToolCalls=a.tool_calls,b.lastResponse=void 0,e.FlowExecutor.conversationStates.set(D,b);try{if(b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=s(a.content),t.verbose(`Updated conversation title for ${D} before pausing to: ${b.title}`))}await v(E,b),t.verbose(`Saved state before pausing for approval for conv ${D}`)}catch(a){t.error(`Failed to save state before pausing for approval for conv ${D}:`,a)}J({type:"run:awaiting_approval",pendingToolCalls:a.tool_calls});break}if(O){t.info(`[Debug Step] Paused before executing ${a.tool_calls.length} tool call(s) for conv ${D}.`),b.debugPendingToolCalls=a.tool_calls,e.FlowExecutor.conversationStates.set(D,b);try{b.updatedAt=Date.now(),await v(E,b)}catch(a){t.error(`Failed to save state before debug tool pause for conv ${D}:`,a)}P();break}{t.info(`[flujo=true, requireApproval=false] Processing ${a.tool_calls.length} tools internally for conv ${D}`);let c=await k.s.processToolCalls({toolCalls:a.tool_calls,toolNameMap:b.toolNameMap,emit:J,conversationId:b.ephemeral?void 0:b.conversationId,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:N});if(!c.success){t.error(`Internal tool processing failed for conv ${D}`,{error:c.error}),b.lastResponse={success:!1,error:"Tool processing failed",errorDetails:c.error},d=j.O;break}t.info(`Adding ${c.value.toolCallMessages.length} tool result messages for conv ${D}`);let f=c.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...f),e.FlowExecutor.conversationStates.set(D,b),M(),t.info(`Continuing loop for conv ${D} after internal tool processing (no approval needed).`);continue}}else{t.info(`[flujo=false] Tool call action received for conv ${D}. Checking tool types.`);let c=a.tool_calls||[],f=[],g=[];if(c.forEach(a=>{"function"===a.type&&(0,l.$9)(a.function.name,b.toolNameMap)?(t.verbose("tool is internal:",a.function.name),f.push(a)):(t.verbose("tool is external:",a.function.name),g.push(a))}),f.length>0){t.info(`[flujo=false] Processing ${f.length} internal tools for conv ${D}. External tools (${g.length}) will be ignored this step.`);let a=await k.s.processToolCalls({toolCalls:f,toolNameMap:b.toolNameMap,emit:J,conversationId:b.ephemeral?void 0:b.conversationId,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:N});if(!a.success){t.error(`[flujo=false] Internal tool processing failed for conv ${D}`,{error:a.error}),b.lastResponse={success:!1,error:"Internal tool processing failed",errorDetails:a.error},d=j.O;break}t.info(`Adding ${a.value.toolCallMessages.length} internal tool result messages for conv ${D}`);let c=a.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...c),e.FlowExecutor.conversationStates.set(D,b),t.info(`Continuing loop for conv ${D} after internal tool processing (flujo=false).`);continue}if(g.length>0){t.info(`[flujo=false] Found ${g.length} external tools for conv ${D}. Wrapping in XML and returning.`);let a=[];for(let b of g)if("function"===b.type)try{let c=JSON.parse(b.function.arguments||"{}"),d="";for(let a in c){let b=String(c[a]).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;");d+=`
3
- <${a}>${b}</${a}>`}a.push(`<${b.function.name}>${d}
4
- </${b.function.name}>`)}catch(c){t.error(`[flujo=false] Failed to parse arguments for external tool ${b.function.name}`,{args:b.function.arguments,error:c,convId:D}),a.push(`<${b.function.name}>
5
- <error>Failed to parse arguments: ${c instanceof Error?c.message:String(c)}</error>
6
- </${b.function.name}>`)}b.lastResponse={_flujo_xml_tools:a.join("\n\n")},d=j.g4,t.info(`[flujo=false] Prepared XML for external tools. Exiting loop for conv ${D}.`);break}t.warn(`[flujo=false] TOOL_CALL_ACTION received for conv ${D} but no tools found after classification. Treating as final.`),d=j.g4;break}t.warn(`TOOL_CALL_ACTION received for conv ${D} but no tool_calls found in last message. Treating as final.`),d=j.g4;break}let c=await e.FlowExecutor.resolveHandoff(b,d);if(c.isSuccessorEdge){t.info(`[Action Handling] Step ${I}: Handling Handoff Action (Edge ID) for conv ${D}`),t.info(`Handoff action received for conv ${D}. Edge: ${d}`);let a=c.targetNodeId;if("string"==typeof a&&a.length>0){let c,f=b.messages.length>0?b.messages[b.messages.length-1]:null;if(f?.role==="assistant"&&f.tool_calls){let e=f.tool_calls.find(a=>"function"===a.type&&("handoff"===a.function.name||a.function.name.startsWith("handoff_to_")));if(e){if(c=e.id,t.debug(`Found handoff tool call ID: ${c} for edge ${d}`),"function"===e.type)try{let c=JSON.parse(e.function.arguments||"{}"),d="string"==typeof c?.prompt?c.prompt.trim():"",f=Array.isArray(c?.parallelFlows)?c.parallelFlows.filter(a=>"string"==typeof a&&""!==a.trim()):void 0,g=c?.concurrencyLimit,h="number"==typeof g&&g>=1?Math.floor(g):void 0;(d||f&&f.length>0)&&(b.handoffInput={targetNodeId:a,prompt:d,...f&&f.length>0?{parallelFlows:f}:{},...void 0!==h?{concurrencyLimit:h}:{}},t.info(`Captured caller handoff input for node ${a}`,{promptChars:d.length,fanoutCount:f?.length??0}))}catch(a){t.warn(`Could not parse handoff tool-call arguments for edge ${d}; ignoring caller input`,{parseError:a})}let f={id:crypto.randomUUID(),role:"tool",tool_call_id:c,content:JSON.stringify({status:"Handoff processed",targetNodeId:a}),timestamp:Date.now(),processNodeId:b.currentNodeId};b.messages.push(f),t.info(`Appended tool result message for handoff tool call ${c}`)}else t.warn(`Handoff action received for edge ${d}, but could not find corresponding handoff tool call in last assistant message.`)}else t.warn(`Handoff action received for edge ${d}, but the last message was not an assistant message with tool calls.`);M();let g=b.currentNodeId;if(b.currentNodeId=a,b.handoffRequested=void 0,J({type:"handoff",from:g?{nodeId:g}:void 0,toNodeId:a,edgeId:d}),t.info(`Transitioning conv ${D} to node ${b.currentNodeId}`),e.FlowExecutor.conversationStates.set(D,b),O){t.info(`[Debug Step] Paused after handoff to node ${b.currentNodeId} for conv ${D}.`),P();break}t.info(`Continuing loop for conv ${D} after handoff.`);continue}t.error(`Handoff failed for conv ${D}: Successor node for edge ${d} has invalid ID.`),b.lastResponse={success:!1,error:`Handoff failed: Target node for edge ${d} has invalid ID.`},d=j.O;break}if(d===j.E5){t.info(`[Action Handling] Step ${I}: Handling STAY_ON_NODE_ACTION for conv ${D}`),t.info(`Stay on node action received for conv ${D} at step ${I}`);break}t.warn(`Unrecognized action '${d}' received at step ${I} for conv ${D}. Treating as final response.`),d=j.g4;break}}catch(a){if(t.error(`Unhandled error during execution loop for conv ${D}`,{loopError:a}),d!==j.O&&N()&&(b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=j.O),d!==j.O){let c=a?.details;b.lastResponse={success:!1,error:a instanceof Error?a.message:String(a),errorDetails:a instanceof Error?{name:a.name,message:a.message,stack:a.stack,...c&&"object"==typeof c?c:{}}:void 0},d=j.O}}d!==j.O&&N()&&(t.info(`Cancellation flag set at run end for conv ${D}; reporting cancelled instead of '${b.status}'.`),b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=j.O),d===j.O&&"error"!==b.status&&(b.status="error");let Q=Date.now()-f,R=b.status||(d===j.g4?"completed":d===j.O?"error":"running");if(t.info(`Execution finished for conv ${D}. Final Action: ${d}, Final Status: ${R}`,{duration:`${Q}ms`}),M(),("completed"===R||"error"===R)&&(J({type:"run:done",status:R}),"schedule"!==b.source&&(b.runDepth??0)===0)){let a=b.messages[b.messages.length-1],c=a&&"assistant"===a.role&&"string"==typeof a.content?a.content:void 0;w(b,R,c)}try{if(b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=s(a.content),t.verbose(`Updated conversation title for ${D} before final return to: ${b.title}`))}await v(E,b),t.debug(`Saved final state for conversation ${D} before returning.`)}catch(a){t.error(`Failed to save final state for conversation ${D}:`,a)}(0,r.isConversationDeleted)(D)?e.FlowExecutor.conversationStates.delete(D):e.FlowExecutor.conversationStates.set(D,b);let S=()=>{A&&("completed"===b.status||"error"===b.status)&&e.FlowExecutor.conversationStates.delete(D)},T={conversationId:b.conversationId||D,messages:b.messages,usage:b.usage,finalAction:d,sharedState:b};if("paused_debug"===b.status)return t.info(`Returning paused debug state for conv ${D}`),{...T,status:"paused_debug",outputText:"",pendingToolCalls:b.pendingToolCalls};if("error"===b.status||d===j.O){let a,c="Unknown error during execution",d=500;if("object"==typeof b.lastResponse&&null!==b.lastResponse)if("success"in b.lastResponse&&!1===b.lastResponse.success&&"error"in b.lastResponse&&"string"==typeof b.lastResponse.error){if(c=b.lastResponse.error,"errorDetails"in b.lastResponse&&"object"==typeof b.lastResponse.errorDetails&&null!==b.lastResponse.errorDetails){let e=b.lastResponse.errorDetails;(a={message:"string"==typeof e.message?e.message:c,type:"string"==typeof e.type?e.type:void 0,code:"string"==typeof e.code?e.code:void 0,param:"string"==typeof e.param?e.param:void 0,status:"number"==typeof e.status?e.status:void 0,stack:"string"==typeof e.stack?e.stack:void 0,name:"string"==typeof e.name?e.name:void 0}).status&&(d=a.status)}}else try{c=`Unexpected error state object: ${JSON.stringify(b.lastResponse)}`}catch{c="Unexpected error state object (unserializable)"}else"string"==typeof b.lastResponse&&(c=b.lastResponse);return a?a.message=a.message||c:a={message:c},t.error(`Returning error result for conv ${D}`,{errorMessage:c,errorDetails:a,statusCode:d}),"error"!==b.status&&(b.status="error"),S(),{...T,status:"error",outputText:"",error:{message:c,details:a,statusCode:d}}}let U=b.messages.length>0?b.messages[b.messages.length-1]:null,V="",W="";"object"==typeof b.lastResponse&&null!==b.lastResponse&&"_flujo_xml_tools"in b.lastResponse?(W=b.lastResponse._flujo_xml_tools,V=U?.role==="assistant"&&"string"==typeof U.content?U.content:"",V+=(V?"\n\n":"")+W,b.lastResponse=V):V="string"==typeof b.lastResponse?b.lastResponse:U?.role==="assistant"&&"string"==typeof U.content?U.content:d!==j.Jp||i?"Processing complete.":"";let X=W?void 0:U?.role==="assistant"?U.tool_calls:void 0;return t.info(`Returning success result for conv ${D}`,{action:d,status:b.status,flujo:i,requireApproval:m,flujodebug:x}),S(),{...T,status:b.status||(d===j.g4?"completed":"running"),outputText:V,toolCalls:X,pendingToolCalls:b.pendingToolCalls}}}};