flujo-ai 3.18.0 → 3.19.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 (487) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +221 -207
  3. package/.next/app-path-routes-manifest.json +4 -3
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/react-loadable-manifest.json +12 -12
  7. package/.next/server/app/_not-found/page.js +3 -3
  8. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_not-found.html +1 -1
  11. package/.next/server/app/_not-found.rsc +2 -2
  12. package/.next/server/app/api/backup/route.js +1 -1
  13. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  14. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/browse/route.js +1 -1
  16. package/.next/server/app/api/browse/route.js.nft.json +1 -1
  17. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/cwd/route.js +1 -1
  19. package/.next/server/app/api/cwd/route.js.nft.json +1 -1
  20. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/encryption/secure/route.js +1 -1
  22. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  23. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/env/route.js +2 -2
  25. package/.next/server/app/api/env/route.js.nft.json +1 -1
  26. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/flow/[id]/route.js +1 -1
  28. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  29. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/flow/compile/route.js +1 -1
  31. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  32. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/flow/generate/route.js +1 -1
  34. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  35. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/flow/improve/route.js +1 -1
  37. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  38. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
  40. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  41. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  43. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  44. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/flow/repair/route.js +1 -0
  46. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -0
  47. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -0
  48. package/.next/server/app/api/flow/route.js +1 -1
  49. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  50. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/git/route.js +4 -4
  52. package/.next/server/app/api/git/route.js.nft.json +1 -1
  53. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/init/route.js +1 -1
  55. package/.next/server/app/api/init/route.js.nft.json +1 -1
  56. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/mcp/cancel/route.js +2 -2
  61. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  62. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  64. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  65. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  67. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  68. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  70. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  71. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  73. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  74. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  76. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  77. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  79. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  80. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  82. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  83. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  85. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  86. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/mcp/servers/route.js +1 -1
  88. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  89. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  91. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  92. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  94. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  95. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/mcp-registry/route.js +2 -1
  97. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  98. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
  100. package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -1
  101. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/model/[id]/route.js +1 -1
  103. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  104. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/model/provider/route.js +2 -2
  106. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  107. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/model/route.js +1 -1
  109. package/.next/server/app/api/model/route.js.nft.json +1 -1
  110. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/model/test/route.js +2 -2
  112. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  113. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/oauth/callback/route.js +2 -2
  115. package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
  116. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/oauth/initiate/route.js +2 -2
  118. package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
  119. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/oauth/reset/route.js +2 -2
  121. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  122. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
  124. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  125. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/planned-executions/[id]/run/route.js +2 -2
  127. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  128. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/planned-executions/[id]/runs/route.js +2 -2
  130. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  131. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/planned-executions/preview-schedule/route.js +1 -1
  133. package/.next/server/app/api/planned-executions/preview-schedule/route.js.nft.json +1 -1
  134. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/planned-executions/route.js +1 -1
  136. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  137. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/restore/route.js +1 -1
  139. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  140. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/storage/route.js +1 -1
  142. package/.next/server/app/api/storage/route.js.nft.json +1 -1
  143. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/update/route.js +1 -1
  145. package/.next/server/app/api/update/route.js.nft.json +1 -1
  146. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  148. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  149. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/chat/page.js +5 -4
  151. package/.next/server/app/chat/page.js.nft.json +1 -1
  152. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  153. package/.next/server/app/chat.html +1 -1
  154. package/.next/server/app/chat.rsc +3 -3
  155. package/.next/server/app/docs/page.js +30 -6
  156. package/.next/server/app/docs/page.js.nft.json +1 -1
  157. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  158. package/.next/server/app/docs.html +1 -1
  159. package/.next/server/app/docs.rsc +3 -3
  160. package/.next/server/app/executions/page.js +3 -5
  161. package/.next/server/app/executions/page.js.nft.json +1 -1
  162. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  163. package/.next/server/app/executions.html +1 -1
  164. package/.next/server/app/executions.rsc +3 -3
  165. package/.next/server/app/flows/page.js +3 -3
  166. package/.next/server/app/flows/page.js.nft.json +1 -1
  167. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  168. package/.next/server/app/flows.html +1 -1
  169. package/.next/server/app/flows.rsc +3 -3
  170. package/.next/server/app/index.html +1 -1
  171. package/.next/server/app/index.rsc +3 -3
  172. package/.next/server/app/mcp/page.js +6 -6
  173. package/.next/server/app/mcp/page.js.nft.json +1 -1
  174. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  175. package/.next/server/app/mcp-flows/route.js +1 -5
  176. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  177. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  179. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  180. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/mcp.html +1 -1
  182. package/.next/server/app/mcp.rsc +3 -3
  183. package/.next/server/app/models/page.js +2 -3
  184. package/.next/server/app/models/page.js.nft.json +1 -1
  185. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  186. package/.next/server/app/page.js +3 -2
  187. package/.next/server/app/page.js.nft.json +1 -1
  188. package/.next/server/app/page_client-reference-manifest.js +1 -1
  189. package/.next/server/app/settings/page.js +4 -3
  190. package/.next/server/app/settings/page.js.nft.json +1 -1
  191. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  192. package/.next/server/app/settings.html +1 -1
  193. package/.next/server/app/settings.rsc +3 -3
  194. package/.next/server/app/v1/chat/completions/route.js +1 -1
  195. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  196. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  198. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  199. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  201. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  202. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  204. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  205. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  207. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  208. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  210. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  211. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +3 -3
  213. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  214. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  216. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  217. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  219. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  220. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  222. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  223. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/v1/models/route.js +2 -2
  225. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  226. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app-paths-manifest.json +4 -3
  228. package/.next/server/chunks/{2776.js → 1083.js} +2 -3
  229. package/.next/server/chunks/1119.js +1 -0
  230. package/.next/server/chunks/{7731.js → 1152.js} +2 -2
  231. package/.next/server/chunks/1197.js +2 -0
  232. package/.next/server/chunks/1373.js +1 -1
  233. package/.next/server/chunks/1491.js +1 -0
  234. package/.next/server/chunks/1746.js +1 -1
  235. package/.next/server/chunks/{8460.js → 1991.js} +1 -1
  236. package/.next/server/chunks/2194.js +1 -0
  237. package/.next/server/chunks/2246.js +1 -0
  238. package/.next/server/chunks/227.js +5 -0
  239. package/.next/server/chunks/2350.js +1 -1
  240. package/.next/server/chunks/2430.js +1 -0
  241. package/.next/server/chunks/264.js +1 -1
  242. package/.next/server/chunks/2859.js +3 -7
  243. package/.next/server/chunks/3310.js +19 -12
  244. package/.next/server/chunks/3511.js +1 -0
  245. package/.next/server/chunks/{6069.js → 3574.js} +2 -2
  246. package/.next/server/chunks/3648.js +1 -0
  247. package/.next/server/chunks/{8367.js → 38.js} +2 -2
  248. package/.next/server/chunks/3953.js +1 -0
  249. package/.next/server/chunks/4028.js +1 -0
  250. package/.next/server/chunks/4239.js +1 -0
  251. package/.next/server/chunks/4265.js +1 -0
  252. package/.next/server/chunks/4372.js +1 -0
  253. package/.next/server/chunks/{8227.js → 4456.js} +2 -2
  254. package/.next/server/chunks/4637.js +63 -0
  255. package/.next/server/chunks/4681.js +1 -1
  256. package/.next/server/chunks/4949.js +1 -0
  257. package/.next/server/chunks/5148.js +1 -0
  258. package/.next/server/chunks/5625.js +28 -0
  259. package/.next/server/chunks/{805.js → 5662.js} +2 -2
  260. package/.next/server/chunks/5708.js +57 -0
  261. package/.next/server/chunks/6088.js +52 -0
  262. package/.next/server/chunks/{9314.js → 6136.js} +3 -3
  263. package/.next/server/chunks/62.js +1 -0
  264. package/.next/server/chunks/6465.js +1 -0
  265. package/.next/server/chunks/6772.js +1 -0
  266. package/.next/server/chunks/{6201.js → 6901.js} +3 -2
  267. package/.next/server/chunks/701.js +1 -1
  268. package/.next/server/chunks/7214.js +2 -2
  269. package/.next/server/chunks/7362.js +3 -3
  270. package/.next/server/chunks/7403.js +38 -0
  271. package/.next/server/chunks/7506.js +1 -1
  272. package/.next/server/chunks/7635.js +1 -1
  273. package/.next/server/chunks/7821.js +1 -1
  274. package/.next/server/chunks/7865.js +9 -0
  275. package/.next/server/chunks/8739.js +1 -1
  276. package/.next/server/chunks/9632.js +1 -0
  277. package/.next/server/instrumentation.js.nft.json +1 -1
  278. package/.next/server/middleware-build-manifest.js +1 -1
  279. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  280. package/.next/server/pages/404.html +1 -1
  281. package/.next/server/pages/500.html +1 -1
  282. package/.next/server/server-reference-manifest.js +1 -1
  283. package/.next/server/server-reference-manifest.json +1 -1
  284. package/.next/static/chunks/1161-970b105d0ab11425.js +1 -0
  285. package/.next/static/chunks/1620-0d8ecd877f123f7b.js +1 -0
  286. package/.next/static/chunks/{2084-2463e1d781bad2a6.js → 1634-d4019c4a5cac2ed0.js} +1 -1
  287. package/.next/static/chunks/{4244-6f399c7ff9980207.js → 1711-ccf5eba61d618a1a.js} +1 -1
  288. package/.next/static/chunks/1871-14c3e63ca865d85e.js +1 -0
  289. package/.next/static/chunks/{1892-359187893bbc7f3a.js → 1892-a0f5ec7152540dc3.js} +1 -1
  290. package/.next/static/chunks/3217.058098140ec3f563.js +1 -0
  291. package/.next/static/chunks/{3272-fd8d59523f61da96.js → 3272-ab88dd195ea61b65.js} +1 -1
  292. package/.next/static/chunks/{3545.d3a512315a9fce3e.js → 3545.353a62a68d3b7fd1.js} +1 -1
  293. package/.next/static/chunks/3625-74c77250d64d1cd3.js +1 -0
  294. package/.next/static/chunks/3736-5e2b3f6cda1bb923.js +1 -0
  295. package/.next/static/chunks/3930-cc8d73c953811b97.js +1 -0
  296. package/.next/static/chunks/4365-5d0e3d01c1bc0fdc.js +1 -0
  297. package/.next/static/chunks/5134-e21bd33daaf14ecf.js +1 -0
  298. package/.next/static/chunks/5501-7d6e38c7c8cc3c5a.js +1 -0
  299. package/.next/static/chunks/5619-82fc5c3133837739.js +1 -0
  300. package/.next/static/chunks/6013-cb423bc438256acb.js +1 -0
  301. package/.next/static/chunks/6920-a83ad5c0d5a54cf3.js +1 -0
  302. package/.next/static/chunks/{7583.b6c2f8874b6b89cd.js → 7583.5355a64005f2b265.js} +1 -1
  303. package/.next/static/chunks/7687-7edf1a6e1f063b08.js +1 -0
  304. package/.next/static/chunks/7829-b843e80f32a83256.js +1 -0
  305. package/.next/static/chunks/8066-c202a83aef15143a.js +1 -0
  306. package/.next/static/chunks/{8187.15bf331f5318c00f.js → 8187.57929e3f925fe538.js} +1 -1
  307. package/.next/static/chunks/{9164-a56181e5e93cc47e.js → 9164-14dc5889cb7478c0.js} +1 -1
  308. package/.next/static/chunks/app/api/backup/{route-1691635994fcddb5.js → route-ff084c1cc278df77.js} +1 -1
  309. package/.next/static/chunks/app/api/browse/{route-1691635994fcddb5.js → route-ff084c1cc278df77.js} +1 -1
  310. package/.next/static/chunks/app/api/cwd/{route-1691635994fcddb5.js → route-ff084c1cc278df77.js} +1 -1
  311. package/.next/static/chunks/app/api/encryption/secure/{route-1691635994fcddb5.js → route-ff084c1cc278df77.js} +1 -1
  312. package/.next/static/chunks/app/api/env/route-ff084c1cc278df77.js +1 -0
  313. package/.next/static/chunks/app/api/flow/[id]/route-ff084c1cc278df77.js +1 -0
  314. package/.next/static/chunks/app/api/flow/compile/route-ff084c1cc278df77.js +1 -0
  315. package/.next/static/chunks/app/api/flow/generate/route-ff084c1cc278df77.js +1 -0
  316. package/.next/static/chunks/app/api/flow/improve/route-ff084c1cc278df77.js +1 -0
  317. package/.next/static/chunks/app/api/flow/prompt-renderer/route-ff084c1cc278df77.js +1 -0
  318. package/.next/static/chunks/app/api/flow/quick-chat/route-ff084c1cc278df77.js +1 -0
  319. package/.next/static/chunks/app/api/flow/repair/route-ff084c1cc278df77.js +1 -0
  320. package/.next/static/chunks/app/api/flow/route-ff084c1cc278df77.js +1 -0
  321. package/.next/static/chunks/app/api/git/route-ff084c1cc278df77.js +1 -0
  322. package/.next/static/chunks/app/api/init/route-ff084c1cc278df77.js +1 -0
  323. package/.next/static/chunks/app/api/local-models/capability/route-ff084c1cc278df77.js +1 -0
  324. package/.next/static/chunks/app/api/local-models/pull/route-ff084c1cc278df77.js +1 -0
  325. package/.next/static/chunks/app/api/local-models/suggest/route-ff084c1cc278df77.js +1 -0
  326. package/.next/static/chunks/app/api/mcp/cancel/route-ff084c1cc278df77.js +1 -0
  327. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-ff084c1cc278df77.js +1 -0
  328. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-ff084c1cc278df77.js +1 -0
  329. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-ff084c1cc278df77.js +1 -0
  330. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-ff084c1cc278df77.js +1 -0
  331. package/.next/static/chunks/app/api/mcp/servers/[name]/route-ff084c1cc278df77.js +1 -0
  332. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-ff084c1cc278df77.js +1 -0
  333. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-ff084c1cc278df77.js +1 -0
  334. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-ff084c1cc278df77.js +1 -0
  335. package/.next/static/chunks/app/api/mcp/servers/route-ff084c1cc278df77.js +1 -0
  336. package/.next/static/chunks/app/api/mcp/test-connection/route-ff084c1cc278df77.js +1 -0
  337. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-ff084c1cc278df77.js +1 -0
  338. package/.next/static/chunks/app/api/mcp-registry/route-ff084c1cc278df77.js +1 -0
  339. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-ff084c1cc278df77.js +1 -0
  340. package/.next/static/chunks/app/api/model/[id]/route-ff084c1cc278df77.js +1 -0
  341. package/.next/static/chunks/app/api/model/provider/route-ff084c1cc278df77.js +1 -0
  342. package/.next/static/chunks/app/api/model/route-ff084c1cc278df77.js +1 -0
  343. package/.next/static/chunks/app/api/model/test/route-ff084c1cc278df77.js +1 -0
  344. package/.next/static/chunks/app/api/oauth/callback/route-ff084c1cc278df77.js +1 -0
  345. package/.next/static/chunks/app/api/oauth/initiate/route-ff084c1cc278df77.js +1 -0
  346. package/.next/static/chunks/app/api/oauth/reset/route-ff084c1cc278df77.js +1 -0
  347. package/.next/static/chunks/app/api/planned-executions/[id]/route-ff084c1cc278df77.js +1 -0
  348. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-ff084c1cc278df77.js +1 -0
  349. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-ff084c1cc278df77.js +1 -0
  350. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-ff084c1cc278df77.js +1 -0
  351. package/.next/static/chunks/app/api/planned-executions/route-ff084c1cc278df77.js +1 -0
  352. package/.next/static/chunks/app/api/restore/route-ff084c1cc278df77.js +1 -0
  353. package/.next/static/chunks/app/api/storage/route-ff084c1cc278df77.js +1 -0
  354. package/.next/static/chunks/app/api/update/route-ff084c1cc278df77.js +1 -0
  355. package/.next/static/chunks/app/api/webhooks/[id]/route-ff084c1cc278df77.js +1 -0
  356. package/.next/static/chunks/app/chat/page-1d764d1de5ad5d2f.js +1 -0
  357. package/.next/static/chunks/app/docs/page-d670c1ec8af5cb54.js +1 -0
  358. package/.next/static/chunks/app/executions/page-109274291811d467.js +1 -0
  359. package/.next/static/chunks/app/flows/page-df8eda0e83934fb2.js +1 -0
  360. package/.next/static/chunks/app/{layout-2878f13d7e253503.js → layout-64fc0ae7efe81e3c.js} +1 -1
  361. package/.next/static/chunks/app/mcp/page-9a612d0be5a3336d.js +1 -0
  362. package/.next/static/chunks/app/mcp-flows/route-ff084c1cc278df77.js +1 -0
  363. package/.next/static/chunks/app/mcp-proxy/[server]/route-ff084c1cc278df77.js +1 -0
  364. package/.next/static/chunks/app/models/{error-2b00c98abf1e02cf.js → error-5732fbb053e182c5.js} +1 -1
  365. package/.next/static/chunks/app/models/page-616950f93a1e0027.js +1 -0
  366. package/.next/static/chunks/app/{page-6e18a8cd78b2050e.js → page-77e1ba238b0ee1d0.js} +1 -1
  367. package/.next/static/chunks/app/settings/{page-9430dfdaff87d70c.js → page-199d0ffae9ec7263.js} +1 -1
  368. package/.next/static/chunks/app/v1/chat/completions/route-ff084c1cc278df77.js +1 -0
  369. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-ff084c1cc278df77.js +1 -0
  370. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-ff084c1cc278df77.js +1 -0
  371. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-ff084c1cc278df77.js +1 -0
  372. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-ff084c1cc278df77.js +1 -0
  373. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-ff084c1cc278df77.js +1 -0
  374. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-ff084c1cc278df77.js +1 -0
  375. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-ff084c1cc278df77.js +1 -0
  376. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-ff084c1cc278df77.js +1 -0
  377. package/.next/static/chunks/app/v1/chat/conversations/route-ff084c1cc278df77.js +1 -0
  378. package/.next/static/chunks/app/v1/models/route-ff084c1cc278df77.js +1 -0
  379. package/.next/static/chunks/webpack-3e8560996ac8c1e0.js +1 -0
  380. package/.next/static/itJEX_uJ7hJ7oF-igwwK9/_buildManifest.js +1 -0
  381. package/.next/trace +7 -7
  382. package/.next/types/app/api/flow/repair/route.ts +347 -0
  383. package/.next/types/routes.d.ts +2 -1
  384. package/.next/types/validator.ts +9 -0
  385. package/README.md +1 -1
  386. package/package.json +1 -1
  387. package/.next/server/chunks/1050.js +0 -1
  388. package/.next/server/chunks/1403.js +0 -8
  389. package/.next/server/chunks/1690.js +0 -1
  390. package/.next/server/chunks/2439.js +0 -52
  391. package/.next/server/chunks/2666.js +0 -1
  392. package/.next/server/chunks/4322.js +0 -1
  393. package/.next/server/chunks/453.js +0 -1
  394. package/.next/server/chunks/5311.js +0 -1
  395. package/.next/server/chunks/6037.js +0 -41
  396. package/.next/server/chunks/6390.js +0 -28
  397. package/.next/server/chunks/6760.js +0 -1
  398. package/.next/server/chunks/6936.js +0 -37
  399. package/.next/server/chunks/7186.js +0 -2
  400. package/.next/server/chunks/7982.js +0 -1
  401. package/.next/server/chunks/8298.js +0 -1
  402. package/.next/server/chunks/8342.js +0 -1
  403. package/.next/server/chunks/906.js +0 -35
  404. package/.next/server/chunks/9687.js +0 -1
  405. package/.next/server/chunks/9880.js +0 -1
  406. package/.next/server/chunks/9938.js +0 -1
  407. package/.next/server/chunks/9957.js +0 -1
  408. package/.next/static/Fdh7zqKv38txmpLAxepeR/_buildManifest.js +0 -1
  409. package/.next/static/chunks/1374-e084b3c40554288a.js +0 -1
  410. package/.next/static/chunks/2380-5696e0dc0469f6a5.js +0 -1
  411. package/.next/static/chunks/2709-29f91a54eef90221.js +0 -1
  412. package/.next/static/chunks/3217.1a7e24fd70294370.js +0 -1
  413. package/.next/static/chunks/4105-8fddb00196bf3c6d.js +0 -1
  414. package/.next/static/chunks/4809-423a2a4a90d02f2c.js +0 -1
  415. package/.next/static/chunks/6084-68908a197e957e5f.js +0 -1
  416. package/.next/static/chunks/6509-3380826fd7c82b4e.js +0 -1
  417. package/.next/static/chunks/6582-6735fdd6b42b5c35.js +0 -1
  418. package/.next/static/chunks/690-391bc0f482a9f67c.js +0 -1
  419. package/.next/static/chunks/7290-fd5bb2c94fd7f605.js +0 -1
  420. package/.next/static/chunks/8098-297bf477152a565b.js +0 -1
  421. package/.next/static/chunks/9286-6ea909e5bf70a97e.js +0 -1
  422. package/.next/static/chunks/9562-93cc45aef3630781.js +0 -1
  423. package/.next/static/chunks/9984-1ed094ea9f5b1f17.js +0 -1
  424. package/.next/static/chunks/app/api/env/route-1691635994fcddb5.js +0 -1
  425. package/.next/static/chunks/app/api/flow/[id]/route-1691635994fcddb5.js +0 -1
  426. package/.next/static/chunks/app/api/flow/compile/route-1691635994fcddb5.js +0 -1
  427. package/.next/static/chunks/app/api/flow/generate/route-1691635994fcddb5.js +0 -1
  428. package/.next/static/chunks/app/api/flow/improve/route-1691635994fcddb5.js +0 -1
  429. package/.next/static/chunks/app/api/flow/prompt-renderer/route-1691635994fcddb5.js +0 -1
  430. package/.next/static/chunks/app/api/flow/quick-chat/route-1691635994fcddb5.js +0 -1
  431. package/.next/static/chunks/app/api/flow/route-1691635994fcddb5.js +0 -1
  432. package/.next/static/chunks/app/api/git/route-1691635994fcddb5.js +0 -1
  433. package/.next/static/chunks/app/api/init/route-1691635994fcddb5.js +0 -1
  434. package/.next/static/chunks/app/api/local-models/capability/route-1691635994fcddb5.js +0 -1
  435. package/.next/static/chunks/app/api/local-models/pull/route-1691635994fcddb5.js +0 -1
  436. package/.next/static/chunks/app/api/local-models/suggest/route-1691635994fcddb5.js +0 -1
  437. package/.next/static/chunks/app/api/mcp/cancel/route-1691635994fcddb5.js +0 -1
  438. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-1691635994fcddb5.js +0 -1
  439. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-1691635994fcddb5.js +0 -1
  440. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-1691635994fcddb5.js +0 -1
  441. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-1691635994fcddb5.js +0 -1
  442. package/.next/static/chunks/app/api/mcp/servers/[name]/route-1691635994fcddb5.js +0 -1
  443. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-1691635994fcddb5.js +0 -1
  444. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-1691635994fcddb5.js +0 -1
  445. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-1691635994fcddb5.js +0 -1
  446. package/.next/static/chunks/app/api/mcp/servers/route-1691635994fcddb5.js +0 -1
  447. package/.next/static/chunks/app/api/mcp/test-connection/route-1691635994fcddb5.js +0 -1
  448. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-1691635994fcddb5.js +0 -1
  449. package/.next/static/chunks/app/api/mcp-registry/route-1691635994fcddb5.js +0 -1
  450. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-1691635994fcddb5.js +0 -1
  451. package/.next/static/chunks/app/api/model/[id]/route-1691635994fcddb5.js +0 -1
  452. package/.next/static/chunks/app/api/model/provider/route-1691635994fcddb5.js +0 -1
  453. package/.next/static/chunks/app/api/model/route-1691635994fcddb5.js +0 -1
  454. package/.next/static/chunks/app/api/model/test/route-1691635994fcddb5.js +0 -1
  455. package/.next/static/chunks/app/api/oauth/callback/route-1691635994fcddb5.js +0 -1
  456. package/.next/static/chunks/app/api/oauth/initiate/route-1691635994fcddb5.js +0 -1
  457. package/.next/static/chunks/app/api/oauth/reset/route-1691635994fcddb5.js +0 -1
  458. package/.next/static/chunks/app/api/planned-executions/[id]/route-1691635994fcddb5.js +0 -1
  459. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-1691635994fcddb5.js +0 -1
  460. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-1691635994fcddb5.js +0 -1
  461. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-1691635994fcddb5.js +0 -1
  462. package/.next/static/chunks/app/api/planned-executions/route-1691635994fcddb5.js +0 -1
  463. package/.next/static/chunks/app/api/restore/route-1691635994fcddb5.js +0 -1
  464. package/.next/static/chunks/app/api/storage/route-1691635994fcddb5.js +0 -1
  465. package/.next/static/chunks/app/api/update/route-1691635994fcddb5.js +0 -1
  466. package/.next/static/chunks/app/api/webhooks/[id]/route-1691635994fcddb5.js +0 -1
  467. package/.next/static/chunks/app/chat/page-6486974f4a6c7b57.js +0 -1
  468. package/.next/static/chunks/app/docs/page-5da72cc6db51f238.js +0 -1
  469. package/.next/static/chunks/app/executions/page-fe19f6a1bd3fe05c.js +0 -1
  470. package/.next/static/chunks/app/flows/page-3b84093cdf2aee84.js +0 -1
  471. package/.next/static/chunks/app/mcp/page-355386ec2a542e42.js +0 -1
  472. package/.next/static/chunks/app/mcp-flows/route-1691635994fcddb5.js +0 -1
  473. package/.next/static/chunks/app/mcp-proxy/[server]/route-1691635994fcddb5.js +0 -1
  474. package/.next/static/chunks/app/models/page-20c80d398bf83fc5.js +0 -1
  475. package/.next/static/chunks/app/v1/chat/completions/route-1691635994fcddb5.js +0 -1
  476. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-1691635994fcddb5.js +0 -1
  477. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-1691635994fcddb5.js +0 -1
  478. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-1691635994fcddb5.js +0 -1
  479. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-1691635994fcddb5.js +0 -1
  480. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-1691635994fcddb5.js +0 -1
  481. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-1691635994fcddb5.js +0 -1
  482. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-1691635994fcddb5.js +0 -1
  483. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-1691635994fcddb5.js +0 -1
  484. package/.next/static/chunks/app/v1/chat/conversations/route-1691635994fcddb5.js +0 -1
  485. package/.next/static/chunks/app/v1/models/route-1691635994fcddb5.js +0 -1
  486. package/.next/static/chunks/webpack-4880945dd240d429.js +0 -1
  487. /package/.next/static/{Fdh7zqKv38txmpLAxepeR → itJEX_uJ7hJ7oF-igwwK9}/_ssgManifest.js +0 -0
@@ -0,0 +1,9 @@
1
+ "use strict";exports.id=7865,exports.ids=[7865],exports.modules={8193:(a,b,c)=>{c.d(b,{s:()=>r});var d=c(50846),e=c(38611),f=c(75312),g=c(83964),h=c(78975),i=c(20433),j=c(41561),k=c(24423),l=c(23514),m=c(77213),n=c(14214),o=c(76813),p=c(32524);let q=(0,d.h)("backend/flow/execution/handlers/ModelHandler");class r{static async resolveToolUiLink(a,b){let c=function(a){if(a&&"object"==typeof a){for(let b of[a.ui,a["io.modelcontextprotocol/ui"]])if(b&&"object"==typeof b){let a=b.resourceUri;if("string"==typeof a&&a.trim().toLowerCase().startsWith("ui://"))return a}}}(b?._meta);if(c)try{let b=await l.mcpService.loadServerConfigs();if(!Array.isArray(b))return;let d=b.find(b=>b.name===a);if(!d?.enableMcpApps)return;return{uri:c,serverName:a}}catch(b){q.warn(`resolveToolUiLink: failed to check MCP Apps opt-in for ${a}`,b);return}}static extractProviderErrorDetails(a,b){let c=b||a?.message||"Provider returned an unspecified error in the response body.";b&&"string"==typeof a?.message&&a.message&&a.message!==b&&(c=`${b} - ${a.message}`);let d=a?.metadata;if(d){let a;if("string"==typeof d.raw)try{let b=JSON.parse(d.raw);a=b?.error?.message||b?.message||d.raw}catch{a=d.raw}else d.raw&&"object"==typeof d.raw&&(a=d.raw.error?.message||d.raw.message);let b=[];d.provider_name&&b.push(String(d.provider_name)),a&&b.push(a),b.length>0&&(c=`${c} (upstream: ${b.join(": ")})`)}return"string"==typeof a?.origin&&a.origin&&(c=`${c} (origin: ${a.origin})`),{message:c,code:a?.code,type:a?.type,param:a?.param,retryAfter:d?.retry_after_seconds!=null?String(d.retry_after_seconds):void 0,providerError:a}}static persistStreamedMessage(a,b){try{let{FlowExecutor:d}=c(77865),e=d.conversationStates.get(a);if(!e||!Array.isArray(e.messages))return;!function(a,b){let c=a.findIndex(a=>a.id===b.id);c>=0?a[c]=b:a.push(b)}(e.messages,b),e.updatedAt=Date.now()}catch(b){q.warn(`Failed to fold streamed message into conversation ${a}`,{err:b})}}static async callModel(a){let b,{modelId:c,prompt:d,messages:e,wireMessages:f,tools:g,nodeName:h,nodeId:k,toolNameMap:l,maxTurns:m,conversationId:s,requireToolApproval:t}=a;try{let a=await i.modelService.getModel(c);a&&(a.displayName||a.name,a.name,b=a.maxTurns)}catch(a){q.warn(`Failed to fetch model information for prefix: ${a instanceof Error?a.message:String(a)}`)}let u=function(a,b,c=j.m){return"number"==typeof a&&Number.isFinite(a)&&a>0?a:"number"==typeof b&&Number.isFinite(b)&&b>0?b:c}(m,b);q.info("callModel - Single execution",{modelId:c,messagesCount:e.length,toolsCount:g?.length||0,nodeName:h,nodeId:k}),q.verbose("callModel input",a);let v=s?n.$.emitterFor(s):void 0,w=t&&v&&s?async a=>{let b={id:a.id,type:"function",function:{name:a.name,arguments:JSON.stringify(a.args??{})}};return new Promise(a=>{(0,o.sf)(s,b,a),v({type:"run:awaiting_approval",pendingToolCalls:(0,o.Rt)(s)})})}:void 0,x=v?a=>{let b=k?{...a,processNodeId:k}:a;v({type:"message",message:b,node:k?{nodeId:k}:void 0}),s&&r.persistStreamedMessage(s,b)}:void 0,y=await this.generateCompletion(c,d,f??e,g,{toolNameMap:l,maxTurns:u,requestToolApproval:w,onTranscriptMessage:x});if(!y.success)return q.verbose("callModel error response",y),{success:!1,error:y.error};let z=y.value,A=z.content||"",B=[...e],C=function(a){if(!a)return;let b=a.prompt_tokens_details?.cached_tokens;return{promptTokens:a.prompt_tokens??0,completionTokens:a.completion_tokens??0,totalTokens:a.total_tokens??0,...null!=b?{cacheReadTokens:b}:{}}}(z.fullResponse?.usage);if(z.transcript&&z.transcript.length>0){let a=Date.now(),b=z.transcript;b.forEach((c,d)=>{let e=d===b.length-1;B.push({...c,id:c.id??(0,p.A)(),timestamp:c.timestamp??a+d,processNodeId:k,...e&&C?{usage:C}:{}})})}else{let a={id:(0,p.A)(),role:"assistant",content:A,tool_calls:z.fullResponse?.choices?.[0]?.message?.tool_calls,timestamp:Date.now(),processNodeId:k,...C?{usage:C}:{}};B.push(a)}let D=z.fullResponse?.choices?.[0]?.message?.tool_calls?.map(a=>{try{return{name:a.function.name,args:JSON.parse(a.function.arguments),id:a.id,result:""}}catch(b){return q.warn(`Failed to parse tool arguments for call ${a.id}`,{args:a.function.arguments,error:b}),{name:a.function.name,args:{},id:a.id,result:""}}}).filter(Boolean),E={success:!0,value:{content:A,messages:B,fullResponse:z.fullResponse,toolCalls:D}};return q.verbose("callModel single step result",E),E}static async generateCompletion(a,b,d,f,j){q.verbose("generateCompletion input",{modelId:a,prompt:b,messages:d,tools:f});try{let b,h=await i.modelService.getModel(a);if(!h)return{success:!1,error:(0,e.M5)("model_not_found",`Model not found: ${a}`,a)};let l=h.temperature?parseFloat(h.temperature):0,m=await i.modelService.resolveAndDecryptApiKey(h.ApiKey);if(!m)return{success:!1,error:(0,e.M5)("api_key_error","Failed to resolve or decrypt API key",a)};q.verbose(`decrypted api key ${m}`),q.verbose(` baseurl ${h.baseUrl}`);let n=(0,g.ae)(d);if(f&&f.length>0){let{ToolHandler:a}=c(14159);b=f.map(b=>"function"===b.type&&b.function.parameters?{...b,function:{...b.function,parameters:a.sanitizeSchema(b.function.parameters)}}:b)}let o=(0,k.getCompletionAdapter)(h);q.debug("calling chatcompletion"),q.verbose("calling chatcompletion now with ADAPTER",h.adapter||"openai"),q.verbose("calling chatcompletion now with MODEL",h.name),q.verbose("calling chatcompletion now with TEMP",l),q.verbose("calling chatcompletion now with MESSAGES",n),q.verbose("calling chatcompletion now with TOOLS",b),q.debug("[ModelHandler.generateCompletion] Sending request via adapter",{adapter:h.adapter||"openai",model:h.name});let{completion:p,transcript:s}=await o.createCompletion({model:h,apiKey:m,messages:n,tools:b,temperature:l,toolNameMap:j?.toolNameMap,maxTurns:j?.maxTurns,requestToolApproval:j?.requestToolApproval,onTranscriptMessage:j?.onTranscriptMessage});if(q.debug("[ModelHandler.generateCompletion] Received raw response from OpenAI API",{response:p}),q.verbose("chatcompletion returned"),q.verbose("chatcompletion returned",p),p&&"object"==typeof p&&"error"in p&&p.error){q.warn("API call returned successfully but contained an error object:",JSON.stringify(p.error));let b=p.error,c=r.extractProviderErrorDetails(b),d={success:!1,error:(0,e.M5)("api_error",c.message,a,void 0,{code:c.code,type:c.type,param:c.param,retryAfter:c.retryAfter,providerError:c.providerError})};return q.verbose("generateCompletion returning error from response body",d),d}let t=p?.choices?.[0];if(!t)return q.error("API response missing choices array or first choice.",{response:p}),{success:!1,error:(0,e.M5)("api_error","Invalid response structure from API: Missing choices.",a,void 0,{rawResponse:p})};let u={success:!0,value:{content:t.message?.content||"",messages:[...d],fullResponse:p,transcript:s}};return q.verbose("generateCompletion success result",u),u}catch(c){if(q.error("[ModelHandler.generateCompletion] Caught error during OpenAI API call",{rawError:c}),q.error("--- Error during openai.chat.completions.create ---"),c instanceof Error?(q.error(`Error Name: ${c.name}`),q.error(`Error Message: ${c.message}`),q.error(`Error Stack: ${c.stack}`)):q.error("Caught non-Error object:",c),c instanceof h.Ay.APIError&&(q.error(`API Error Status: ${c.status}`),q.error(`API Error Type: ${c.type}`),q.error(`API Error Code: ${c.code}`),q.error(`API Error Param: ${c.param}`),q.error(`API Error Headers: ${JSON.stringify(c.headers)}`)),q.error("--- End Error Details ---"),c instanceof h.Ay.APIError){let b=c.error,d=r.extractProviderErrorDetails(b,c.message),f=c.headers||{},g=f["retry-after"]??f["Retry-After"],h=void 0!==g?String(g):d.retryAfter,i=f["x-ratelimit-reset"]??f["x-ratelimit-reset-requests"],j={success:!1,error:(0,e.M5)("api_error",d.message,a,void 0,{status:c.status,type:d.type??c.type,code:d.code??c.code,param:d.param??c.param,retryAfter:h,rateLimitReset:void 0!==i?String(i):void 0,providerError:d.providerError,stack:c.stack})};return q.verbose("generateCompletion API error",j),j}let b={success:!1,error:(0,e.M5)("unknown_error",c instanceof Error?c.message:String(c),a,void 0,{stack:c instanceof Error?c.stack:void 0})};return q.verbose("generateCompletion unknown error",b),b}}static async processToolCalls(a){let{toolCalls:b,toolNameMap:c,emit:d}=a;if(q.verbose("processToolCalls input",a),!b||0===b.length){let a={success:!0,value:{toolCallMessages:[],processedToolCalls:[]}};return q.verbose("processToolCalls empty result",a),a}try{let a=[],e=[];for(let g of b){let{id:b,function:{name:h,arguments:i}}=g;try{let g=JSON.parse(i);if(q.info("trying to call tool",h),h.startsWith("handoff_to_")||"handoff"===h){q.info(`Processing handoff tool: ${h}`);let c={handoff:!0,args:g},d=JSON.stringify(c);a.push({id:(0,p.A)(),role:"tool",tool_call_id:b,content:d,timestamp:Date.now()}),e.push({name:h,args:g,id:b,result:d});continue}let j=(0,f.ud)(h,c);if(!j)throw q.error("invalid tool format",h),Error(`Invalid tool name format: ${h}`);let k=j.server,n=j.tool;d?.({type:"tool:call",toolCallId:b,name:h,args:i});let o=j.timeout??m.aI,s=await l.mcpService.callTool(k,n,g,o,a=>d?.({type:"tool:progress",toolCallId:b,name:h,progress:a.progress,total:a.total,message:a.message})),t=s.success?JSON.stringify(s.data):`Error: ${s.error}`;d?.({type:"tool:result",toolCallId:b,name:h,result:t.length>500?`${t.slice(0,500)}…`:t,isError:!s.success});let u=s.success?await r.resolveToolUiLink(k,s.data):void 0;a.push({id:(0,p.A)(),role:"tool",tool_call_id:b,content:t,timestamp:Date.now(),...u?{ui:u}:{}}),e.push({name:h,args:g,id:b,result:t})}catch(f){let c=`Error: ${f instanceof Error?f.message:"Unknown error"}`;d?.({type:"tool:result",toolCallId:b,name:h,result:c,isError:!0}),a.push({id:(0,p.A)(),role:"tool",tool_call_id:b,content:c,timestamp:Date.now()}),e.push({name:h,args:{},id:b,result:c})}}let g={success:!0,value:{toolCallMessages:a,processedToolCalls:e}};return q.verbose("processToolCalls success result",g),g}catch(b){let a={success:!1,error:(0,e.Po)("tool_processing_failed",b instanceof Error?b.message:String(b),"unknown")};return q.verbose("processToolCalls error result",a),a}}static hasToolCalls(a){return!!(a.fullResponse?.choices?.[0]?.message?.tool_calls&&a.fullResponse.choices[0].message.tool_calls.length>0)}}},14159:(a,b,c)=>{c.r(b),c.d(b,{ToolHandler:()=>i});var d=c(50846),e=c(38611),f=c(23514),g=c(75312);let h=(0,d.h)("backend/flow/execution/handlers/ToolHandler");class i{static sanitizeSchema(a){if(!a||"object"!=typeof a)return a;let b=JSON.parse(JSON.stringify(a));return"string"===b.type&&b.format&&"enum"!==b.format&&"date-time"!==b.format&&(b.description||(b.description=""),b.description+=` (format: ${b.format})`,delete b.format),b.properties&&Object.keys(b.properties).forEach(a=>{b.properties[a]=i.sanitizeSchema(b.properties[a])}),b.items&&(b.items=i.sanitizeSchema(b.items)),["oneOf","anyOf","allOf"].forEach(a=>{Array.isArray(b[a])&&(b[a]=b[a].map(a=>i.sanitizeSchema(a)))}),b}static prepareTools(a){let{availableTools:b}=a;if(h.verbose("prepareTools input",JSON.stringify(a)),!b||0===b.length){let a={success:!0,value:{tools:[]}};return h.verbose("prepareTools empty result",JSON.stringify(a)),a}try{for(let a of b){if(!a.name)return{success:!1,error:(0,e.Po)("invalid_tool","Tool missing required 'name' property","unknown")};if(!a.inputSchema)return{success:!1,error:(0,e.Po)("invalid_tool",`Tool '${a.name}' missing required 'inputSchema' property`,a.name)}}let a=[...b].sort((a,b)=>a.name<b.name?-1:+(a.name>b.name)).map(a=>({type:"function",function:{name:a.name,description:a.description||`Tool: ${a.name}`,parameters:i.sanitizeSchema(a.inputSchema)}})),c={success:!0,value:{tools:a}};return h.verbose("prepareTools success result",JSON.stringify(c)),c}catch(b){let a={success:!1,error:(0,e.Po)("tool_preparation_failed",b instanceof Error?b.message:String(b),"unknown")};return h.verbose("prepareTools error result",JSON.stringify(a)),a}}static async processMCPNodes(a){let{mcpNodes:b}=a;if(h.verbose("processMCPNodes input",JSON.stringify(a)),!b||0===b.length){let a={success:!0,value:{availableTools:[]}};return h.verbose("processMCPNodes empty result",JSON.stringify(a)),a}try{let a=[];for(let c of b){let b=c.properties;if(b&&b.boundServer){let d=b.boundServer,h=b.enabledTools||[],i=b.toolTimeout;f.mcpService.setNodeRoots(d,c.id,b.roots);let j=await f.mcpService.connectServer(d);if(!j.success)return{success:!1,error:(0,e.Fp)("server_connection_failed",`Failed to connect to MCP server '${d}': ${j.error}`,d,"connect")};let k=await f.mcpService.listServerTools(d);if(k.error)return{success:!1,error:(0,e.Fp)("list_tools_failed",`Failed to list tools for MCP server '${d}': ${k.error}`,d,"listTools")};for(let b of(k.tools||[]).filter(a=>h.includes(a.name)).map(a=>({originalName:a.name,server:d,name:(0,g.Y6)(d,a.name),timeout:i,description:a.description,inputSchema:a.inputSchema})))a.some(a=>a.name===b.name)||a.push(b)}}let c={success:!0,value:{availableTools:a}};return h.verbose("processMCPNodes success result",JSON.stringify(c)),c}catch(b){let a={success:!1,error:(0,e.Fp)("mcp_processing_failed",b instanceof Error?b.message:String(b),"unknown","processMCPNodes")};return h.verbose("processMCPNodes error result",JSON.stringify(a)),a}}}},14214:(a,b,c)=>{c.d(b,{$:()=>i});var d=c(94735),e=c(60184);let f=(0,c(50846).h)("backend/execution/flow/engine/ExecutionEventBus");class g{getChannel(a){let b=this.channels.get(a);if(!b){let c=new d.EventEmitter;c.setMaxListeners(0),b={emitter:c,seq:0,buffer:[]},this.channels.set(a,b)}return b}cancelCleanup(a){let b=this.cleanupTimers.get(a);b&&(clearTimeout(b),this.cleanupTimers.delete(a))}scheduleCleanup(a,b){this.cancelCleanup(a);let c=setTimeout(()=>{this.cleanupTimers.delete(a);let c=this.channels.get(a);c&&c.seq===b&&(c.emitter.listenerCount("event")>0||this.channels.delete(a))},3e5);"function"==typeof c.unref&&c.unref(),this.cleanupTimers.set(a,c)}emit(a,b){let c=this.getChannel(a),d={...b,conversationId:a,seq:c.seq++,timestamp:Date.now()};return c.buffer.push(d),c.buffer.length>1e3&&c.buffer.shift(),c.emitter.emit("event",d),(0,e.LB)(d),"run:done"===d.type?this.scheduleCleanup(a,c.seq):this.cancelCleanup(a),d}emitterFor(a){return b=>{try{this.emit(a,b)}catch(b){f.warn(`Failed to emit execution event for ${a}`,{err:b})}}}getBufferedSince(a,b){let c=this.channels.get(a);return c?c.buffer.filter(a=>a.seq>=b):[]}currentSeq(a){return this.channels.get(a)?.seq??0}subscribe(a,b){let c=this.getChannel(a);return c.emitter.on("event",b),()=>{c.emitter.off("event",b)}}constructor(){this.channels=new Map,this.cleanupTimers=new Map}}let h=globalThis,i=h.__flujoExecutionEventBus??(h.__flujoExecutionEventBus=new g)},35205:(a,b,c)=>{c.d(b,{t:()=>s,p:()=>r});var d=c(87821),e=c(20433),f=c(23514),g=c(50846),h=c(67490);function i(a,b){let c=a.replace(/\s+/g," ").trim();if(c.length<=b)return c;let d=c.slice(0,b),e=d.lastIndexOf(" ");return`${(e>.6*b?d.slice(0,e):d).trimEnd()}…`}function j(a,b,c){let d=" ".repeat(b);if(a.userDescription&&a.userDescription.trim())return void c.push(`${d}${i(a.userDescription,200)}`);if("subflow"===a.type){if(a.subflowMissing)return void c.push(`${d}Runs a subflow (referenced flow not found).`);if(a.subflowDetailsUnavailable){let b=a.subflowName?` "${a.subflowName}"`:"";c.push(`${d}Runs a subflow${b} (contents summarised when the flow runs).`);return}if(c.push(`${d}Runs the subflow "${a.subflowName??"unknown"}", which contains:`),a.depthCapReached)return void c.push(`${d} (nested subflows omitted — recursion depth limit reached)`);let e=a.children??[];if(0===e.length)return void c.push(`${d} (no process or subflow steps)`);for(let a of e.slice(0,10))c.push(`${d} - ${a.label}:`),j(a,b+2,c);return void(e.length>10&&c.push(`${d} - …and ${e.length-10} more step(s)`))}if(a.modelName&&c.push(`${d}Model: ${a.modelName}`),a.promptSummary&&c.push(`${d}Role: ${i(a.promptSummary,200)}`),a.servers&&a.servers.length>0)for(let b of a.servers)if(b.connected&&b.tools&&b.tools.length>0){let a=b.tools.slice(0,10),e=b.tools.length-a.length,f=e>0?`, +${e} more`:"";c.push(`${d}Tools (${b.name}): ${a.join(", ")}${f}`)}else c.push(`${d}Tools (${b.name}): server not connected`)}let k=(0,g.h)("backend/execution/flow/buildHandoffDescription");function l(){return{modelNames:new Map,serverConnected:new Map,flows:new Map}}async function m(a,b){if(!a)return;if(b.modelNames.has(a))return b.modelNames.get(a);let c=a;try{let b=await e.modelService.getModel(a);b&&(c=b.displayName&&b.displayName.trim()||b.name||a)}catch(b){k.debug("resolveModelName failed; using raw id",{modelId:a,err:b})}return b.modelNames.set(a,c),c}async function n(a,b){if(b.serverConnected.has(a))return b.serverConnected.get(a);let c=!1;try{let b=await f.mcpService.getServerStatus(a);c=b?.status==="connected"}catch(b){k.debug("getServerStatus failed; treating server as offline",{server:a,err:b})}return b.serverConnected.set(a,c),c}async function o(a,b){if(b.flows.has(a))return b.flows.get(a);let c=null;try{c=await d.flowService.getFlow(a)}catch(b){k.debug("getFlow failed while summarising subflow",{flowId:a,err:b})}return b.flows.set(a,c),c}async function p(a,b){let c=Array.isArray(a.mcpNodes)?a.mcpNodes:[],d=[],e=new Set;for(let a of c){let c=a?.properties?.boundServer;if(!c||e.has(c))continue;e.add(c);let f=await n(c,b),g=Array.isArray(a?.properties?.enabledTools)?a.properties.enabledTools:[];d.push({name:c,connected:f,tools:f?g:void 0})}return d}async function q(a,b,c,d){let e=a.data?.type||a.type||"unknown",f=a.data?.label||"Unknown Node",g=a.data?.properties||{},i=a.data?.description,j={label:f,type:e,userDescription:i};if(i&&i.trim())return j;if("subflow"===e){let a=g.subflowId;if(!a)return j.subflowMissing=!0,j;if(b+1>h.A||d.has(a)){j.depthCapReached=!0;let b=await o(a,c);return j.subflowName=b?.name,j}let e=await o(a,c);if(!e)return j.subflowMissing=!0,j;j.subflowName=e.name;let f=new Set(d);f.add(a);let i=(e.nodes||[]).filter(a=>a.data?.type==="process"||a.data?.type==="subflow"||"process"===a.type||"subflow"===a.type);for(let a of(j.children=[],i))j.children.push(await q(a,b+1,c,f));return j}j.modelName=await m(g.boundModel,c);let k=g.promptTemplate;return"string"==typeof k&&k.trim()&&(j.promptSummary=k),j.servers=await p(g,c),j}async function r(a){try{let b=await q(a,0,l(),new Set);return function(a){if(a.userDescription&&a.userDescription.trim())return i(a.userDescription,1500);let b=`Hand off execution to ${a.label} (${a.type}).`,c=[];j(a,0,c);let d=c.join("\n").trim(),e=d?`${b}
2
+ ${d}`:b;if(e.length<=1500)return e;let f=1500-b.length-2;return f<=0?b:`${b}
3
+ ${i(d,f)}`}(b)}catch(d){let b=a.data?.label||"Unknown Node",c=a.data?.type||a.type||"unknown";return k.warn("buildHandoffDescription failed; falling back to basic description",{label:b,type:c,err:d}),`Hand off execution to ${b} (${c})`}}async function s(a){try{let b=l(),c=new Set([a.id]),d=(a.nodes||[]).filter(a=>a.data?.type==="process"||a.data?.type==="subflow"||"process"===a.type||"subflow"===a.type),e=[];for(let a of d)e.push(await q(a,1,b,c));return function(a,b,c){let d=`Runs the FLUJO flow "${a}".`,e=[],f=b.slice(0,10);if(f.length>0){for(let a of(e.push("Steps:"),f))e.push(` - ${a.label}:`),j(a,2,e);b.length>10&&e.push(` - …and ${b.length-10} more step(s)`)}let g=e.join("\n").trim(),h=g?`${d}
4
+ ${g}`:d;if(h.length<=1500)return h;let k=1500-d.length-2;return k<=0?d:`${d}
5
+ ${i(g,k)}`}(a.name,e)}catch(b){return k.warn("buildFlowToolDescription failed; falling back to basic description",{flow:a?.name,err:b}),`Runs the FLUJO flow "${a?.name??"unknown"}".`}}},38611:(a,b,c)=>{c.d(b,{Fp:()=>f,M5:()=>d,Po:()=>e});let d=(a,b,c,d,e)=>({type:"model",code:a,message:b,modelId:c,requestId:d,details:e}),e=(a,b,c,d,e)=>({type:"tool",code:a,message:b,toolName:c,toolArgs:d,details:e}),f=(a,b,c,d,e)=>({type:"mcp",code:a,message:b,serverName:c,operation:d,details:e})},41527:(a,b,c)=>{c.d(b,{S$:()=>e,T9:()=>f,qW:()=>h});let d=/\$\{var:([^}]+)\}/g;function e(a,b){if("string"!=typeof a||0===a.length||!d.test(a))return a;let c=b??{};return a.replace(d,(a,b)=>{let d=b.trim(),e=c[d];return"string"==typeof e?e:(console.warn(`[resolveRunVars] unknown variable "${d}"; substituting empty string`),"")})}function f(a){let b;if("string"!=typeof a||0===a.length)return[];let c=new Set;for(d.lastIndex=0;null!==(b=d.exec(a));){let a=b[1].trim();a&&c.add(a)}return[...c]}let g=/^[A-Za-z_][\w-]*$/;function h(a){return"string"==typeof a&&g.test(a)}},45131:(a,b,c)=>{c.d(b,{C:()=>e,F9:()=>i,PP:()=>h,wM:()=>f});let d=["contains","regex","equals"];function e(a){return"string"==typeof a&&d.includes(a)}function f(a){try{return new RegExp(a),!0}catch{return!1}}function g(a){return"string"==typeof a?a:Array.isArray(a)?a.map(a=>"string"==typeof a?a:a&&"object"==typeof a&&"text"in a&&"string"==typeof a.text?a.text:"").join(""):""}function h(a,b="last-assistant"){if(!Array.isArray(a)||0===a.length)return null;if("last-message"===b)return g(a[a.length-1]?.content);for(let b=a.length-1;b>=0;b--)if(a[b]?.role==="assistant")return g(a[b]?.content);return null}function i(a,b){let c;if(!a)return!1;let d="string"==typeof b?b:"",e="string"==typeof a.value?a.value:String(a.value??"");switch(a.kind){case"contains":c=a.ignoreCase?d.toLowerCase().includes(e.toLowerCase()):d.includes(e);break;case"equals":c=a.ignoreCase?d.toLowerCase()===e.toLowerCase():d===e;break;case"regex":{let b;try{b=new RegExp(e,a.ignoreCase?"i":void 0)}catch(a){return console.warn("[edgeConditions] invalid regex predicate; treating as no-match",e,a),!1}c=b.test(d);break}default:return console.warn("[edgeConditions] unknown condition kind; treating as no-match",a.kind),!1}return a.negate?!c:c}},60184:(a,b,c)=>{c.d(b,{$b:()=>z,D$:()=>r,LB:()=>q,Os:()=>t,RU:()=>u,UG:()=>x,cc:()=>v,jM:()=>y,u8:()=>s});var d=c(29021),e=c(33873),f=c.n(e),g=c(50846),h=c(43326);let i=(0,g.h)("backend/execution/flow/conversationLog"),j=new Set(["run:start","run:done","node:enter","node:exit","handoff","message","message:removed","tool:call","tool:result","usage","subflow:start","subflow:done","error"]),k=/^[A-Za-z0-9_-]+$/,l=f().join((0,h.ok)(),"db","conversation-logs");function m(a){return f().join(l,`${a}.jsonl`)}let n=new Map;function o(a,b){let c=(n.get(a)??Promise.resolve()).catch(()=>{}).then(async()=>{await d.promises.mkdir(l,{recursive:!0}),await d.promises.appendFile(m(a),b)});return n.set(a,c),c.finally(()=>{n.get(a)===c&&n.delete(a)})}function p(a){return`${JSON.stringify(a)}
6
+ `}function q(a){if(j.has(a.type)){if(!k.test(a.conversationId))return void i.warn("Refusing to log event for unsafe conversation id",{conversationId:a.conversationId});(function(a){try{let{FlowExecutor:b}=c(77865),d=b.conversationStates.get(a);if(!d)return!1;return!d.ephemeral}catch(b){return i.warn(`Could not resolve persistence policy for ${a}; not persisting.`,{err:b}),!1}})(a.conversationId)&&o(a.conversationId,p(a)).catch(b=>i.warn(`Failed to append event to conversation log ${a.conversationId}`,{err:b}))}}async function r(a,b){if(0===b.length||a.ephemeral)return;let c=a.conversationId;if(!c||!k.test(c))return;let d=b.map(a=>p({...a,conversationId:c,seq:-1,timestamp:Date.now()})).join("");try{await o(c,d)}catch(a){i.warn(`Failed to append ${b.length} event(s) to conversation log ${c}`,{err:a})}}function s(a){let b=n.get(a);return b?b.then(()=>void 0,()=>void 0):Promise.resolve()}async function t(a){let b;if(!k.test(a))return;try{b=await d.promises.readFile(m(a),"utf-8")}catch(b){if("ENOENT"===b.code)return;i.error(`Error reading conversation log ${a}:`,b);return}let c=[],e=0;for(let a of b.split("\n"))if(0!==a.trim().length)try{c.push(JSON.parse(a))}catch{e++}return e>0&&i.warn(`Skipped ${e} unparseable line(s) in conversation log ${a} (truncated append?)`),c}async function u(a){if(k.test(a))try{await d.promises.unlink(m(a))}catch(b){"ENOENT"!==b.code&&i.warn(`Error deleting conversation log ${a}:`,b)}}function v(a){let b=[],c=new Map;for(let d of a)if("message"===d.type){let a=d.message;if(!a||!a.id||"system"===a.role)continue;let e=d.depth??0,f=e>0?{...a,depth:e}:{...a},g=c.get(a.id);void 0!==g?b[g]=f:(c.set(a.id,b.length),b.push(f))}else if("message:removed"===d.type){let a=c.get(d.messageId);if(void 0===a)continue;for(let[e,f]of(b.splice(a,1),c.delete(d.messageId),c))f>a&&c.set(e,f-1)}return b}function w(a){return JSON.stringify([a.role,a.content,a.tool_calls??null,a.disabled??!1,a.processNodeId??null])}async function x(a,b){if(a.ephemeral)return;let c=a.conversationId;if(!c||!k.test(c))return;let d=(a.messages??[]).filter(a=>"system"!==a.role&&!!a.id),e=await A(c)?b.filter(a=>"system"!==a.role&&!!a.id):[],f=new Map(e.map(a=>[a.id,a])),g=new Set(d.map(a=>a.id)),h=[];for(let a of d){let b=f.get(a.id);b&&w(b)===w(a)||h.push({type:"message",message:a})}for(let a of e)g.has(a.id)||h.push({type:"message:removed",messageId:a.id});await r(a,h)}async function y(a){if(a.ephemeral)return!1;let b=a.conversationId;if(!b||!k.test(b))return!1;let c=await t(b);if(!c)return!1;let d=v(c).filter(a=>!((a.depth??0)>0)),e=(a.messages??[]).filter(a=>"system"!==a.role&&!!a.id).map(a=>a.id);if(d.length<=e.length)return!1;let f=new Set(d.map(a=>a.id));return!!e.every(a=>f.has(a))&&(i.info(`Recovered ${d.length-e.length} message(s) from the conversation log for ${b} (snapshot was behind).`),a.messages=d,!0)}async function z(a){if(a.ephemeral)return;let b=a.conversationId;if(!b||!k.test(b))return;let c=await t(b);if(!c)return;let e=v(c).filter(a=>!((a.depth??0)>0)),f=(a.messages??[]).filter(a=>"system"!==a.role&&!!a.id);if(e.length>=f.length)return;let g=new Set(f.map(a=>a.id));if(!e.every(a=>g.has(a.id)))return;let h=f.map(a=>p({type:"message",message:a,conversationId:b,seq:-1,timestamp:Date.now()})).join("");try{await function(a,b){let c=(n.get(a)??Promise.resolve()).catch(()=>{}).then(async()=>{await d.promises.mkdir(l,{recursive:!0}),await d.promises.writeFile(m(a),b)});return n.set(a,c),c.finally(()=>{n.get(a)===c&&n.delete(a)})}(b,h),i.info(`Rebuilt truncated conversation log for ${b} from snapshot (${e.length} → ${f.length} message(s)); issue #49 self-heal.`)}catch(a){i.warn(`Failed to rebuild truncated conversation log ${b}`,{err:a})}return f}async function A(a){if(!k.test(a))return!1;try{return await d.promises.access(m(a)),!0}catch{return!1}}},67490:(a,b,c)=>{c.d(b,{A:()=>d});let d=8},75312:(a,b,c)=>{c.d(b,{$9:()=>g,Y6:()=>e,ud:()=>f});let d="_-_-_";function e(a,b){let c=function(a){let b=0x811c9dc5;for(let c=0;c<a.length;c++)b^=a.charCodeAt(c),b=Math.imul(b,0x1000193);return(b>>>0).toString(36)}(`${a}\0${b}`),d=64-(5+c.length),e=b.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,Math.max(0,d));return`mcp_${e}_${c}`}function f(a,b){if(b&&b[a])return b[a];if(a.includes(d)){let b=a.split(d);if(3===b.length)return{server:b[1],tool:b[2]}}return null}function g(a,b){return!!b&&!!b[a]||a.includes(d)}},76813:(a,b,c)=>{c.d(b,{J:()=>g,Rt:()=>h,sf:()=>f});let d=globalThis,e=d.__flujoToolApprovals??(d.__flujoToolApprovals=new Map);function f(a,b,c){let d=e.get(a);d||(d=new Map,e.set(a,d)),d.set(b.id,{toolCall:b,resolve:c})}function g(a,b,c){let d=e.get(a),f=d?.get(b);return!!d&&!!f&&(d.delete(b),0===d.size&&e.delete(a),f.resolve(c),!0)}function h(a){let b=e.get(a);return b?Array.from(b.values(),a=>a.toolCall):[]}},77865:(a,b,c)=>{c.r(b),c.d(b,{FlowExecutor:()=>V});var d=c(50846),e=c(99978),f=c(91373),g=c.n(f),h=c(13516),i=c(87821);let j=(0,d.h)("backend/execution/flow/pocketflow"),k="default";class l{constructor(){j.debug("BaseNode constructor called"),this.flow_params={},this.node_params={},this.successors=new Map}setParams(a,b){j.debug("setParams called with params",{params:a}),j.verbose("setParams input",{params:a,node_params:b}),this.flow_params=a,b&&(this.node_params=b),j.debug("setParams finished. flow_params count",{flow_params:this.flow_params?.length,node_params:this.node_params?.length}),j.verbose("setParams result",{flow_params:this.flow_params,node_params:this.node_params})}clone(){j.debug("clone called");let a=this._clone();return j.verbose("_clone result",{newNode:a}),a.flow_params=g()(this.flow_params),j.verbose("Cloned flow_params",{flow_params:a.flow_params}),a.node_params=g()(this.node_params),j.verbose("Cloned node_params",{node_params:a.node_params}),a.successors=new Map(this.successors),j.verbose("Cloned successors",{successors:a.successors}),j.verbose("clone finished"),a}addSuccessor(a,b=k){if(j.verbose(`addSuccessor called with action: ${b}`),this.successors.has(b))throw j.error(`Action ${b} already exists`),Error(`Action ${b} already exists`);this.successors.set(b,a),j.debug("addSuccessor finished. Successors",{successors:this.successors})}getSuccessor(a){if(j.debug(`getSuccessor called with name: ${a}`),!this.successors.has(a))return void j.error(`Successor ${a} not found`);let b=this.successors.get(a).clone();return j.debug("getSuccessor finished. Returning successor",{successor:b}),b}async execWrapper(a,b){j.debug("execWrapper called with prepResult",{prepResult:a}),j.verbose("execWrapper input",{prepResult:a,node_params:b});let c=await this.execCore(a,b);return j.debug("execWrapper finished. Result",{result:c}),j.verbose("execWrapper result",c),c}async run(a){j.debug("run called with sharedState",{sharedState:a}),j.debug("Current flow_params at start of run",{flow_params:this.flow_params}),j.verbose("run input",{sharedState:a,flow_params:this.flow_params,node_params:this.node_params});let b=await this.prep(a,this.node_params);j.verbose("run prepResult",b);let c=await this.execWrapper(b,this.node_params);j.verbose("run execResult",c);let d=await this.post(b,c,a,this.node_params);return j.debug("action",{action:d}),j.debug(`run finished. Returning action: ${d}`),j.verbose("run action result",{action:d,prepResult:b,execResult:c}),{action:d,prepResult:b,execResult:c}}}class m extends l{constructor(a){j.debug("Flow constructor called with start",{start:a}),super(),this.start=a}_clone(){j.debug("Flow _clone called");let a=new m(this.start);return j.debug("Flow _clone finished. Returning",{newFlow:a}),a}async getStartNode(){j.debug("getStartNode called");let a=this.start.clone();return j.debug("getStartNode finished. Returning",{clonedStart:a}),a}async execCore(a){throw j.error("Flow node does not support direct execution"),j.verbose("Flow execCore error",{error:"Flow node does not support direct execution"}),Error("Flow node does not support direct execution")}async prep(a,b){return j.debug("Flow prep called with sharedState",{sharedState:a}),j.verbose("Flow prep input",{sharedState:a,node_params:b}),j.debug("Flow prep finished. Returning empty object"),j.verbose("Flow prep result",{}),{}}async post(a,b,c,d){return j.debug("Flow post called with prepResult, execResult, and sharedState",{prepResult:a,execResult:b,sharedState:c}),j.verbose("Flow post input",{prepResult:a,execResult:b,node_params:d}),j.debug("Flow post finished. Returning DEFAULT_ACTION"),j.verbose("Flow post result",{action:k}),k}}let n=(0,d.h)("execution/nodes/StartNode.ts");class o extends l{async prep(a,b){n.info("prep() started");let c=b?.properties?.promptTemplate||"";n.info("Extracted promptTemplate",{promptTemplateLength:c.length,promptTemplatePreview:c.length>100?c.substring(0,100)+"...":c});let d={nodeId:b?.id||"",nodeType:"start",systemPrompt:c};return n.info("prep() completed"),d}async execCore(a,b){n.info("execCore() started"),n.verbose("execCore() prepResult",JSON.stringify(a));let c={success:!0};return n.verbose("execCore() execResult",JSON.stringify(c)),n.info("execCore() completed"),c}async post(a,b,c,d){if(n.info("post() started"),n.verbose("post() inputs",JSON.stringify({prepResult:a,execResult:b,nodeParams:d})),h.G.ENABLE_EXECUTION_TRACKER&&Array.isArray(c.trackingInfo.nodeExecutionTracker)&&(c.trackingInfo.nodeExecutionTracker.push({nodeType:"StartNode",nodeId:d?.id||"unknown",nodeName:d?.properties?.name||"Start Node",timestamp:new Date().toISOString()}),n.info("Added StartNode tracking information")),a.systemPrompt){let b={role:"system",content:a.systemPrompt,id:crypto.randomUUID(),timestamp:Date.now()};c.messages.some(a=>"system"===a.role)||(c.messages.push(b),n.debug("Added system message",{contentLength:"string"==typeof b.content?b.content.length:"non-string content",contentPreview:"string"==typeof b.content&&b.content.length>50?b.content.substring(0,50)+"...":b.content}))}n.info("Successors object:",{hasSuccessors:!!this.successors,isMap:this.successors instanceof Map,type:typeof this.successors});let e=this.successors instanceof Map?Array.from(this.successors.keys()):Object.keys(this.successors||{});if(n.info("Actions:",{actionsCount:e.length,actions:e}),e.length>0){let a=e[0];return n.info(`post() completed, returning action: ${a}`),a}return n.info("post() completed, returning default action"),"default"}_clone(){return new o}}var p=c(60724),q=c(14159),r=c(8193),s=c(83964),t=c(35205);let u="handoff_to_";var v=c(45131),w=c(41527),x=c(32524);let y=(0,d.h)("backend/flow/execution/nodes/ProcessNode");class z extends l{async generateHandoffTools(a){y.info("Generating handoff tools");let b=(this.successors instanceof Map?Array.from(this.successors.keys()):Object.keys(this.successors||{})).filter(a=>!a.includes("-mcpEdge")&&!a.endsWith("mcpEdge")&&!a.includes("-mcp"));y.debug("Found standard actions for handoff tools",{actionsCount:b.length,actions:b});let c=[],d=new Set;for(let a of b){let b=this.successors instanceof Map?this.successors.get(a):this.successors[a];if(!b){y.warn(`Target node not found for edge ${a}`);continue}let e=b.node_params?.id||"unknown";d.has(e)||(d.add(e),c.push({id:e,label:b.node_params?.label||"Unknown Node",type:b.node_params?.type||"unknown"}))}let e=function(a){let b=new Set,c=new Map;for(let d of a){if(c.has(d.id))continue;let a=function(a,b){let c=(a&&a.trim()||b&&b.trim()||"node").toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"");return c.length>48&&(c=c.slice(0,48).replace(/_+$/g,"")),c||(c=b&&b.trim().toLowerCase().replace(/[^a-z0-9]+/g,"_")||"node"),c||"node"}(d.label,d.type),e=`${u}${a}`;if(b.has(e)){let c=2;for(;b.has(`${u}${a}_${c}`);)c++;e=`${u}${a}_${c}`}b.add(e),c.set(d.id,e)}return c}(c);a.handoffNameMap=a.handoffNameMap||{};let f=null;try{let b=await i.flowService.getFlow(a.flowId);b&&(f=new Map(b.nodes.map(a=>[a.id,a])))}catch(a){y.warn("Could not load flow for handoff descriptions; using basic descriptions",{err:a})}let g=[];for(let b of c){let c=e.get(b.id)||`handoff_to_${b.id}`;a.handoffNameMap[c]=b.id;let d=f?.get(b.id),h=d?await (0,t.p)(d):`Hand off execution to ${b.label} (${b.type})`,i=d?.data?.properties,j="subflow"===b.type&&i?.inputMode==="isolated"&&i?.allowCallerPrompt===!0;g.push({name:c,description:j?`${h}
7
+
8
+ Optionally pass a "prompt" argument to instruct the target subflow; omit it to use its default prompt.`:h,inputSchema:j?{type:"object",properties:{prompt:{type:"string",description:"Instruction/prompt to run the target subflow with (isolated mode). Optional; omitted falls back to the subflow's default prompt."}},required:[]}:{type:"object",properties:{},required:[]}}),y.debug("Created handoff tool",{toolName:c,targetNodeId:b.id,targetNodeLabel:b.label})}return y.info("Generated handoff tools",{toolsCount:g.length}),g}async prep(a,b){y.info("prep() started");let c=b?.id,d=a.flowId,e=b?.properties?.boundModel,f=b?.properties?.excludeModelPrompt||!1,g=b?.properties?.excludeStartNodePrompt||!1,h=b?.properties?.excludeSystemPrompt||!1;if(y.debug("Extracted properties",{nodeId:c,flowId:d,boundModel:e,excludeModelPrompt:f,excludeStartNodePrompt:g,excludeSystemPrompt:h}),!c||!d)throw y.error("Missing required node or flow ID",{nodeId:c,flowId:d}),Error("Process node requires node ID and flow ID");if(!e)throw y.error("Missing bound model"),Error("Process node requires a bound model");y.info("Using promptRenderer to build the complete prompt");let j=await p.h.renderPrompt(d,c,{renderMode:"rendered",includeConversationHistory:!1,excludeModelPrompt:f,excludeStartNodePrompt:g,excludeSystemPrompt:h}),k=(0,w.S$)(j,a.variables);y.debug("Prompt rendered successfully",{completePromptLength:k.length,completePromptPreview:k.length>100?k.substring(0,100)+"...":k}),a.currentNodeId=c;let l=[];if(a.mcpContext&&a.mcpContext.availableTools&&a.mcpContext.availableTools.length>0)y.info("Using MCP tools from shared state",{toolsCount:a.mcpContext.availableTools.length}),l=a.mcpContext.availableTools;else{let a=b?.properties?.mcpNodes||[];if(a.length>0){y.info("No MCP tools found in shared state, processing MCP nodes",{mcpNodesCount:a.length});let b=await q.ToolHandler.processMCPNodes({mcpNodes:a});if(!b.success)throw y.error("Failed to process MCP nodes",{error:b.error}),Error(`Failed to process MCP nodes: ${b.error.message}`);l=b.value.availableTools}}for(let b of(l=[...l,...await this.generateHandoffTools(a)],a.toolNameMap=a.toolNameMap||{},l))b.server&&b.originalName&&(a.toolNameMap[b.name]={server:b.server,tool:b.originalName,timeout:b.timeout});let m={nodeId:c,nodeType:"process",currentPrompt:k,boundModel:e,availableTools:l,messages:[],conversationId:a.conversationId,requireToolApproval:a.requireApproval??!1},n={id:(0,x.A)(),role:"system",content:k,timestamp:Date.now()};y.info("Added system message from prompt template",{contentLength:k.length,contentPreview:k.length>100?k.substring(0,100)+"...":k}),m.messages=(0,s.Ui)(a.messages,n);let o=b?.properties?.inputMode??"full-history",r=m.messages;try{let a=await i.flowService.getFlow(d),b=new Set((a?.nodes??[]).filter(a=>"process"===a.type&&a.data?.properties?.outputMode==="latest-message").map(a=>a.id));r=(0,s.Qv)(m.messages,b)}catch(a){y.warn("Could not resolve outputMode collapse set; sending the full wire view",{err:a})}if("full-history"!==o||r!==m.messages){let c=b?.properties?.isolatedPrompt;m.wireMessages=(0,s.ij)(r,o,void 0!==c?(0,w.S$)(c,a.variables):c)}return y.info("Assembled node context",{systemMessageCount:1,totalMessageCount:m.messages.length,inputMode:o,wireMessageCount:m.wireMessages?.length}),y.info("prep() completed",{completePromptLength:k.length,boundModel:e,hasTools:!!m.availableTools?.length,toolsCount:m.availableTools?.length||0,messagesCount:m.messages.length}),m}async execCore(a,b){y.info("execCore() started",{boundModel:a.boundModel,promptLength:a.currentPrompt?.length,messagesCount:a.messages?.length||0}),y.debug("execCore() prepResult",a);try{let c,d;if(a.availableTools&&a.availableTools.length>0){let b=q.ToolHandler.prepareTools({availableTools:a.availableTools});if(!b.success)throw y.error("Failed to prepare tools",{error:b.error}),Error(`Failed to prepare tools: ${b.error.message}`);d=b.value.tools}let e={};for(let b of a.availableTools??[])b.server&&b.originalName&&(e[b.name]={server:b.server,tool:b.originalName,timeout:b.timeout});let f=b?.label||b?.properties?.name||"Process Node",g=a.messages&&a.messages.length>0?a.messages[a.messages.length-1]:null;y.debug(`[ProcessNode ${a.nodeId}] Calling ModelHandler.callModel`,{modelId:a.boundModel,messageCount:a.messages?.length||0,toolCount:d?.length||0,lastMessageType:g?.role,lastMessageToolCallId:g?.role==="tool"?g.tool_call_id:void 0,lastMessageContentPreview:"string"==typeof g?.content?g.content.substring(0,100)+"...":"(non-string content)"});try{(c=await r.s.callModel({modelId:a.boundModel,prompt:a.currentPrompt,messages:a.messages,wireMessages:a.wireMessages,tools:d,iteration:1,maxIterations:1,maxTurns:b?.properties?.maxTurns,nodeName:f,nodeId:a.nodeId,toolNameMap:e,conversationId:a.conversationId,requireToolApproval:a.requireToolApproval})).success?y.debug(`[ProcessNode ${a.nodeId}] ModelHandler.callModel returned successfully`,{success:!0,hasContent:!!c.value?.content,contentLength:c.value?.content?.length||0,toolCallsCount:c.value?.toolCalls?.length||0}):y.warn(`[ProcessNode ${a.nodeId}] ModelHandler.callModel returned failure state unexpectedly here`,{success:!1,error:c.error})}catch(b){throw y.error(`[ProcessNode ${a.nodeId}] Error calling ModelHandler.callModel`,{error:b}),b}finally{y.debug(`[ProcessNode ${a.nodeId}] Finished attempt to call ModelHandler.callModel`)}if(!c||!c.success){let a=c?.error||{message:"Unknown model execution error after call attempt."};y.error("Model execution error after call attempt",{error:a});let b=Error(`Model execution failed: ${c.error.message}`);throw b.isModelError=!0,b.details={message:c.error.message,type:c.error.type,code:c.error.code,..."model"===c.error.type?{modelId:c.error.modelId}:{},param:"string"==typeof c.error.details?.param?c.error.details.param:void 0,status:"number"==typeof c.error.details?.status?c.error.details.status:void 0,...c.error.details},y.error("Throwing critical model error to abort flow execution",{error:c.error.message,type:c.error.type,code:c.error.code}),b}let h=c.value,i={success:!0,content:h.content||"",messages:h.messages,fullResponse:h.fullResponse,toolCalls:h.toolCalls};return h.toolCalls&&h.toolCalls.length>0&&y.info("Tool calls found in model response",{toolCallsCount:h.toolCalls.length,toolNames:h.toolCalls.map(a=>a.name).join(", ")}),y.info("execCore() completed",{responseLength:i.content?.length||0,messagesCount:i.messages?.length||0,hasToolCalls:!!i.toolCalls?.length}),y.verbose("execCore() execResult",i),i}catch(b){if(b&&"object"==typeof b&&("isCriticalToolError"in b||"isModelError"in b)){let a=b instanceof Error?b.message:String(b);throw y.error("Critical error detected - propagating to abort flow:",{error:a,isModelError:"isModelError"in b,isCriticalToolError:"isCriticalToolError"in b}),b}let a={success:!1,error:b instanceof Error?b.message:String(b),errorDetails:b instanceof Error?{message:b.message,name:b.name,stack:b.stack}:{message:String(b)}};return y.error("execCore() failed",{error:a.error,errorDetails:a.errorDetails}),y.verbose("execCore() errorResult",a),a}}processHandoffToolCalls(a,b){if(!a||0===a.length)return!1;y.info("Processing tool calls for handoff requests",{toolCallsCount:a.length});let c=(this.successors instanceof Map?Array.from(this.successors.keys()):Object.keys(this.successors||{})).filter(a=>!a.includes("-mcpEdge")&&!a.endsWith("mcpEdge")&&!a.includes("-mcp"));for(let d of a){let{name:a}=d;if(a.startsWith("handoff_to_")){let d=b.handoffNameMap?.[a]||a.replace("handoff_to_","");for(let e of c){let c=this.successors instanceof Map?this.successors.get(e):this.successors[e];if(c&&c.node_params?.id===d)return b.handoffRequested={edgeId:e,targetNodeId:d},y.info(`Handoff requested to node ${d}`,{edgeId:e,toolName:a}),!0}}}return!1}orderedControlEdges(a){let b=a?.orderedOutgoingEdges;return Array.isArray(b)&&b.length>0?b:(this.successors instanceof Map?Array.from(this.successors.keys()):Object.keys(this.successors||{})).filter(a=>!a.includes("-mcpEdge")&&!a.endsWith("mcpEdge")&&!a.includes("-mcp"))}async post(a,b,c,d){if(y.debug(`[ProcessNode ${d?.id}] post() method started.`),y.info("post() started",{execResultSuccess:b.success,execResultContentLength:b.content?.length||0,messagesCount:b.messages?.length||0,toolCallsCount:b.toolCalls?.length||0}),!b.success)return c.lastResponse={success:!1,error:b.error,errorDetails:b.errorDetails},Array.isArray(c.trackingInfo.nodeExecutionTracker),y.warn(`Execution failed for node ${d?.id}. Returning ERROR_ACTION.`),e.O;c.lastResponse=b.content||"";let f=d?.properties?.captureVariable?.trim();if(b.success&&f&&(c.variables=c.variables??{},c.variables[f]=b.content??"",y.info("Captured node output into run variable",{captureVariable:f,nodeId:d?.id})),b.messages&&b.messages.length>0&&(c.messages=b.messages.filter(a=>"system"!==a.role),y.info("Updated messages in sharedState (system prompt excluded)",{messagesCount:c.messages.length})),h.G.ENABLE_EXECUTION_TRACKER&&Array.isArray(c.trackingInfo.nodeExecutionTracker)&&(c.trackingInfo.nodeExecutionTracker.push({nodeType:"ProcessNode",nodeId:d?.id||"unknown",nodeName:d?.properties?.name||"Process Node",modelDisplayName:a.modelDisplayName||"Unknown Model",modelTechnicalName:a.boundModel||"unknown",allowedTools:d?.properties?.allowedTools?.join(", "),timestamp:new Date().toISOString()}),y.info("Added ProcessNode tracking information",{modelDisplayName:a.modelDisplayName,modelTechnicalName:a.boundModel})),this.processHandoffToolCalls(b.toolCalls,c)&&c.handoffRequested){let a=c.handoffRequested.edgeId;return y.info(`Handoff requested via tool call, returning edge ID: ${a}`),a}let g=b.toolCalls?.filter(a=>!a.name.startsWith("handoff_to_"));if(g&&g.length>0)return y.info("Non-handoff tool calls detected, returning TOOL_CALL_ACTION"),e.Jp;let i=d?.edgeConditions;if(i&&Object.keys(i).length>0){let a=this.orderedControlEdges(d);for(let b of a){let a=i[b];if(!a)continue;let d=(0,v.PP)(c.messages,a.target);if((0,v.F9)(a,d))return y.info("Deterministic edge condition matched; routing",{edgeId:b,kind:a.kind}),b}let b=a.find(a=>!i[a]);if(b)return y.info("No edge condition matched; routing to bare fallback edge",{edgeId:b}),b;y.info("Conditioned node: no predicate matched and no bare fallback; terminating")}return y.info("No tool calls or handoff requested, returning FINAL_RESPONSE_ACTION"),e.g4}_clone(){return new z}}var A=c(38611),B=c(23514);let C=(0,d.h)("backend/flow/execution/handlers/MCPHandler");class D{static async executeMCP(a){let{mcpServer:b,enabledTools:c,nodeId:d,nodeRoots:e}=a;C.verbose("executeMCP input",JSON.stringify(a));try{d&&B.mcpService.setNodeRoots(b,d,e);let a=await B.mcpService.getServerStatus(b);if("connected"!==a.status){let a=await B.mcpService.connectServer(b);if(!a.success){let c={success:!1,error:(0,A.Fp)("server_connection_failed",`Failed to connect to MCP server: ${a.error}`,b,"connect")};return C.verbose("executeMCP connection error",JSON.stringify(c)),c}}let f=await B.mcpService.listServerTools(b);if(f.error){let a={success:!1,error:(0,A.Fp)("list_tools_failed",`Failed to list tools for server: ${f.error}`,b,"listTools")};return C.verbose("executeMCP list tools error",JSON.stringify(a)),a}let g={success:!0,value:{server:b,tools:f.tools||[],enabledTools:c}};return C.verbose("executeMCP success result",JSON.stringify(g)),g}catch(c){let a={success:!1,error:(0,A.Fp)("mcp_execution_failed",c instanceof Error?c.message:String(c),b,"executeMCP")};return C.verbose("executeMCP execution error",JSON.stringify(a)),a}}}var E=c(75312);let F=(0,d.h)("backend/flow/execution/nodes/MCPNode");class G extends l{async prep(a,b){F.info("prep() started");let c=b?.id||"",d=b?.properties?.boundServer,e=b?.properties?.enabledTools||[],f=b?.properties?.roots||[];if(!d)throw F.error("Missing bound server"),Error("MCP node requires a bound server");return F.info("prep() completed",{mcpServer:d,enabledToolsCount:e.length,nodeRootsCount:f.length}),{nodeId:c,nodeType:"mcp",mcpServer:d,enabledTools:e,nodeRoots:f}}async execCore(a,b){F.info("execCore() started",{mcpServer:a.mcpServer}),F.verbose("execCore() prepResult",JSON.stringify(a));try{let b=await D.executeMCP({mcpServer:a.mcpServer,enabledTools:a.enabledTools,nodeId:a.nodeId,nodeRoots:a.nodeRoots});if(!b.success)throw F.error("MCP execution failed",{error:b.error}),Error(`MCP execution failed: ${b.error.message}`);let c={success:!0,server:b.value.server,tools:b.value.tools,enabledTools:b.value.enabledTools};return F.info("execCore() completed",{server:c.server,toolsCount:c.tools?.length||0,enabledToolsCount:c.enabledTools?.length||0}),F.verbose("execCore() execResult",JSON.stringify(c)),c}catch(b){let a={success:!1,error:b instanceof Error?b.message:String(b)};return F.error("execCore() failed",{error:a.error}),F.verbose("execCore() errorResult",JSON.stringify(a)),a}}async post(a,b,c,d){if(F.info("post() started",{server:b.server,toolsCount:b.tools?.length||0,enabledToolsCount:b.enabledTools?.length||0}),F.verbose("post() inputs",JSON.stringify({prepResult:a,execResult:b,nodeParams:d})),h.G.ENABLE_EXECUTION_TRACKER&&Array.isArray(c.trackingInfo.nodeExecutionTracker)&&(c.trackingInfo.nodeExecutionTracker.push({nodeType:"MCPNode",nodeId:d?.id||"unknown",nodeName:d?.properties?.name||"MCP Node",timestamp:new Date().toISOString()}),F.info("Added MCPNode tracking information")),b.success&&b.server&&b.tools){let a=d?.properties?.toolTimeout,e=b.tools.filter(a=>b.enabledTools?.includes(a.name)).map(c=>({...c,originalName:c.name,server:b.server,name:(0,E.Y6)(b.server,c.name),timeout:a}));if(c.mcpContext){let a=[...c.mcpContext.availableTools||[]];for(let b of e)a.some(a=>a.name===b.name)||a.push(b);c.mcpContext.availableTools=a}else c.mcpContext={server:b.server,availableTools:e};for(let a of(c.toolNameMap=c.toolNameMap||{},e))c.toolNameMap[a.name]={server:b.server,tool:a.originalName,timeout:a.timeout};let f=e.map(a=>a.name);F.info("Stored MCP context in shared state",{server:b.server,availableToolsCount:e.length,availableToolNames:f.length>10?f.slice(0,10).join(", ")+"...":f.join(", "),totalToolsCount:c.mcpContext.availableTools.length})}F.info("post() completed"),F.info("Successors object:",{hasSuccessors:!!this.successors,isMap:this.successors instanceof Map,type:typeof this.successors});let e=this.successors instanceof Map?Array.from(this.successors.keys()):Object.keys(this.successors||{});if(F.info("Actions:",{actionsCount:e.length,actions:e}),e.length>0){let a=e[0];return F.info(`Returning action: ${a}`),a}return"default"}_clone(){return new G}}let H=(0,d.h)("backend/flow/execution/nodes/FinishNode");class I extends l{async prep(a,b){H.debug("prep() started");let c={nodeId:b?.id||"",nodeType:"finish",messages:a.messages};return H.debug("prep() completed",{messagesCount:c.messages.length,hasSystemPrompt:c.messages.some(a=>"system"===a.role)}),c}async execCore(a,b){H.debug("execCore() started",{messagesCount:a.messages.length}),H.verbose("execCore() prepResult",JSON.stringify(a));let c={success:!0};return H.verbose("execCore() execResult",JSON.stringify(c)),H.info("execCore() completed"),c}async post(a,b,c,d){H.info("post() started",{messagesCount:a.messages.length}),H.verbose("post() inputs",JSON.stringify({prepResult:a,execResult:b,nodeParams:d})),h.G.ENABLE_EXECUTION_TRACKER&&Array.isArray(c.trackingInfo.nodeExecutionTracker)&&(c.trackingInfo.nodeExecutionTracker.push({nodeType:"FinishNode",nodeId:d?.id||"unknown",nodeName:d?.properties?.name||"Finish Node",timestamp:new Date().toISOString()}),H.info("Added FinishNode tracking information"));let f=a.messages[a.messages.length-1];f&&"assistant"===f.role&&f.content&&("string"==typeof f.content?c.lastResponse=f.content:c.lastResponse={content:f.content,role:f.role}),H.info("Successors object:",{hasSuccessors:!!this.successors,isMap:this.successors instanceof Map,type:typeof this.successors});let g=this.successors instanceof Map?Array.from(this.successors.keys()):Object.keys(this.successors||{});if(H.info("Actions:",{actionsCount:g.length,actions:g}),g.length>0){let a=g[0];return H.info(`post() completed, returning action: ${a}`),a}return H.info("post() completed, returning FINAL_RESPONSE_ACTION"),e.g4}_clone(){return new I}}let J=(0,d.h)("backend/execution/flow/nodes/SubflowNode");function K(a){for(let b=a.length-1;b>=0;b--)if("user"===a[b].role)return[a[b]];return a}function L(a,b,c,d,e,f){if(!a||!b)return;let g=f?{laneIndex:f.index,laneCount:f.count}:{};return b=>{let f=(b.depth??0)+1;return"run:start"===b.type?void a({type:"subflow:start",node:c,subflowId:d,subflowName:e,depth:f,...g}):"run:done"===b.type?void a({type:"subflow:done",node:c,subflowId:d,status:b.status,depth:f,...g}):"message"===b.type?void a({...b,depth:f,message:{...b.message,depth:f},...g}):void a({...b,depth:f,...g})}}class M extends l{async prep(a,b){let d=b?.properties?.subflowId,e=(b?.properties?.parallelSubflowIds??[]).filter(a=>"string"==typeof a&&""!==a.trim()),f=b?.properties?.mapOverList===!0,g=b?.properties?.itemSplit==="lines"?"lines":"json-array",h=b?.properties?.sequential===!0,i=b?.properties?.promptTemplate?.trim(),j=b?.properties?.inputMode??(i?"isolated":"full-history"),k=b?.properties?.outputMode!=="final-only",l={nodeId:b?.id||"",nodeType:"subflow",subflowId:d,depth:(a.runDepth??0)+1,parentRunId:a.conversationId,showSteps:k,emit:a.emit,nodeName:b?.properties?.name};if("isolated"===j){let c=b?.properties?.allowCallerPrompt===!0,d=a.handoffInput;d&&d.targetNodeId===b?.id?(a.handoffInput=void 0,c&&d.prompt.trim()?(l.inputText=d.prompt,J.info("Using caller-supplied prompt for isolated subflow",{nodeId:b?.id})):l.inputText=i??""):l.inputText=i??""}else{let b=function(a){let b=[];for(let d of a){var c;if("system"===d.role||"tool"===d.role||"assistant"===d.role&&Array.isArray(d.tool_calls)&&d.tool_calls.length>0||!("string"==typeof(c=d.content)?c.trim().length>0:!!Array.isArray(c)&&c.length>0))continue;let{processNodeId:a,...e}=d;b.push({...e})}return b}(a.messages);l.messages="latest-message"===j?K(b):b}if(void 0!==l.inputText&&(l.inputText=(0,w.S$)(l.inputText,a.variables)),f&&e.length>0&&J.warn("SubflowNode sets both mapOverList and parallelSubflowIds; ignoring mapOverList (fan-out precedence)",{nodeId:b?.id}),e.length>0){let a=e.map(a=>({subflowId:a}));try{let{flowService:b}=await Promise.resolve().then(c.bind(c,87821));await Promise.all(a.map(async a=>{try{let c=await b.getFlow(a.subflowId);c?.name&&(a.subflowName=c.name)}catch{}}))}catch{}l.lanes=a,l.concurrencyLimit=Math.max(1,b?.properties?.concurrencyLimit??4),l.joinSeparator=b?.properties?.joinSeparator??"\n\n",l.errorStrategy=b?.properties?.errorStrategy??"collect-all"}else if(f&&d){var m;let a,e=function(a,b){let c;if("lines"===b)return a.split(/\r?\n/).map(a=>a.trim()).filter(a=>a.length>0);try{c=JSON.parse(a)}catch{return[]}return Array.isArray(c)?c.map(a=>"string"==typeof a?a:JSON.stringify(a)):[]}((void 0!==l.inputText?l.inputText:"string"==typeof(m=K(l.messages??[])[0]?.content)?m:Array.isArray(m)?m.map(a=>"string"==typeof a?a:"string"==typeof a?.text?a.text:"").join(""):"")??"",g);try{let{flowService:b}=await Promise.resolve().then(c.bind(c,87821)),e=await b.getFlow(d);e?.name&&(a=e.name)}catch{}l.lanes=e.map((b,c)=>({subflowId:d,subflowName:a,input:{prompt:b},itemIndex:c,itemCount:e.length})),l.mapOverList=!0,l.concurrencyLimit=h?1:Math.max(1,b?.properties?.concurrencyLimit??4),l.joinSeparator=b?.properties?.joinSeparator??"\n\n",l.errorStrategy=b?.properties?.errorStrategy??"collect-all"}else if(d)try{let{flowService:a}=await Promise.resolve().then(c.bind(c,87821)),b=await a.getFlow(d);b?.name&&(l.subflowName=b.name)}catch{}return J.info("prep() completed",{subflowId:d,depth:l.depth,mode:j,historyCount:l.messages?.length,laneCount:l.lanes?.length,showSteps:k}),l}async execCore(a,b){let{runFlow:d}=await Promise.all([c.e(4681),c.e(7214)]).then(c.bind(c,57214)),e={nodeId:a.nodeId,nodeName:a.nodeName,nodeType:"subflow"},f=a.messages?{messages:a.messages}:{prompt:a.inputText??""};if(a.lanes&&a.lanes.length>0)return this.execParallel(a,d,e,f);if(a.mapOverList)return J.info("execCore() map-over-list resolved no items → nothing to map",{subflowId:a.subflowId}),{success:!0,outputText:"",subStatus:"completed",lanes:[]};if(!a.subflowId)return{success:!1,error:"Subflow node has no flow selected (subflowId is empty)."};let g=L(a.emit,a.showSteps,e,a.subflowId,a.subflowName);J.info("execCore() running subflow",{subflowId:a.subflowId,depth:a.depth,showSteps:a.showSteps,foldingEvents:!!g});let h=await d({flowId:a.subflowId,...f,mode:"ephemeral",flujo:!0,requireApproval:!1,debug:!1,depth:a.depth,parentRunId:a.parentRunId,...g?{emit:g}:{}});return"error"===h.status?{success:!1,error:h.error?.message||"Subflow execution failed",errorDetails:h.error?.details,subStatus:h.status}:{success:!0,outputText:h.outputText,subStatus:h.status}}async execParallel(a,b,c,d){let e=a.lanes??[],f=e.length,g=Math.max(1,a.concurrencyLimit??4),h=a.joinSeparator??"\n\n",i=a.errorStrategy??"collect-all";J.info("execCore() running parallel subflows",{laneCount:f,concurrencyLimit:g,errorStrategy:i,depth:a.depth});let j=Array(f),k=0,l=!1,m=async g=>{let h=e[g],k=L(a.emit,a.showSteps,c,h.subflowId,h.subflowName,{index:h.itemIndex??g,count:h.itemCount??f});try{let c=await b({flowId:h.subflowId,...h.input??d,mode:"ephemeral",flujo:!0,requireApproval:!1,debug:!1,depth:a.depth,parentRunId:a.parentRunId,...k?{emit:k}:{}});j[g]="error"===c.status?{subflowId:h.subflowId,success:!1,error:c.error?.message||"Subflow execution failed"}:{subflowId:h.subflowId,success:!0,outputText:c.outputText}}catch(a){j[g]={subflowId:h.subflowId,success:!1,error:a instanceof Error?a.message:String(a)}}j[g].success||"fail-fast"!==i||(l=!0)},n=async()=>{for(;;){if(l)return;let a=k++;if(a>=f)return;await m(a)}},o=Math.min(g,f);await Promise.all(Array.from({length:o},()=>n()));let p=j.filter(a=>void 0!==a),q=p.filter(a=>a.success),r=p.filter(a=>!a.success),s=r.length>0;if("fail-fast"===i&&s){let a=p.find(a=>!a.success);return{success:!1,error:a?.error||"A parallel subflow lane failed",subStatus:"error",lanes:p}}if(0===q.length)return{success:!1,error:"All parallel subflows failed",subStatus:"error",lanes:p};let t=q.map(a=>a.outputText??"").join(h);if(s){let a=r.map(a=>`- ${a.subflowId}: ${a.error??"unknown error"}`).join("\n");t+=`${h}[${r.length} parallel subflow(s) failed:
9
+ ${a}]`}return{success:!0,outputText:t,subStatus:"completed",lanes:p,partial:s}}async post(a,b,c,d){if(h.G.ENABLE_EXECUTION_TRACKER&&Array.isArray(c.trackingInfo.nodeExecutionTracker)&&c.trackingInfo.nodeExecutionTracker.push({nodeType:"SubflowNode",nodeId:d?.id||"unknown",nodeName:d?.properties?.name||"Subflow Node",timestamp:new Date().toISOString()}),!b.success)return J.error("Subflow failed",{subflowId:a.subflowId,error:b.error}),c.lastResponse={success:!1,error:b.error||"Subflow execution failed",errorDetails:b.errorDetails},e.O;let f=b.outputText??"",g={role:"assistant",content:f,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:d?.id};c.messages.push(g),c.lastResponse=f;let i=d?.properties?.captureVariable?.trim();i&&(c.variables=c.variables??{},c.variables[i]=f,J.info("Captured subflow output into run variable",{captureVariable:i,nodeId:d?.id}));let j=this.successors instanceof Map?Array.from(this.successors.keys()):Object.keys(this.successors||{});if(j.length>0){let a=j[0];return J.info(`post() completed, handing off via action: ${a}`),a}return J.info("post() completed, no successor → FINAL_RESPONSE_ACTION"),e.g4}_clone(){return new M}}let N=(0,d.h)("backend/flow/execution/FlowConverter");class O{static convert(a){N.info("Converting React Flow to Pocket Flow",{flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length}),N.verbose("convert input",JSON.stringify({flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length}));let b=new Map;for(let c of a.nodes){N.debug(`Creating node: ${c.id} (${c.type})`);let a=this.createNode(c);b.set(c.id,a)}for(let c of a.edges){N.debug(`Connecting edge: ${c.id} (${c.source} -> ${c.target})`);let a=b.get(c.source),d=b.get(c.target);if(a&&d)if(c.data?.edgeType==="mcp"){let b,e;N.info(`Handling MCP connection: ${c.id} (${c.source} -> ${c.target})`),a instanceof z?(b=a,e=d):d instanceof z&&(b=d,e=a),b&&e?(b.node_params.properties||(b.node_params.properties={}),b.node_params.properties.mcpNodes||(b.node_params.properties.mcpNodes=[]),b.node_params.properties.mcpNodes.push({id:e.node_params.id,properties:e.node_params.properties}),N.info("Stored MCP node in Process node properties",{processNodeId:b.node_params.id,mcpNodeId:e.node_params.id})):N.warn(`Invalid MCP connection: ${c.id}. Could not find Process and MCP nodes.`,{sourceNodeType:a.constructor.name,targetNodeType:d.constructor.name})}else{let b=c.id||"default";a.addSuccessor(d,b),a.node_params.orderedOutgoingEdges=a.node_params.orderedOutgoingEdges||[],a.node_params.orderedOutgoingEdges.push(b);let e=c.data?.condition;if(e&&"object"==typeof e&&(a.node_params.edgeConditions=a.node_params.edgeConditions||{},a.node_params.edgeConditions[b]=e,N.info("Retained edge condition for routing",{edgeId:b,source:c.source})),c.data?.bidirectional){let e=`${b}__reverse`;d.addSuccessor(a,e),d.node_params.orderedOutgoingEdges=d.node_params.orderedOutgoingEdges||[],d.node_params.orderedOutgoingEdges.push(e),N.info(`Connected nodes (bidirectional): ${c.target} -> ${c.source} with action: ${e}`)}N.info(`Connected nodes: ${c.source} -> ${c.target} with action: ${b}`),a.successors instanceof Map?N.debug("Source node successors after connection:",{sourceNodeId:c.source,successorsCount:a.successors.size,successorsKeys:Array.from(a.successors.keys()),hasTargetNode:a.successors.has(b)}):N.warn("Source node successors is not a Map:",{sourceNodeId:c.source,successorsType:typeof a.successors})}else N.warn(`Failed to connect edge: ${c.id}`,{sourceExists:!!a,targetExists:!!d})}let c=a.nodes.find(a=>"start"===a.type);if(!c)throw N.error("No start node found in flow"),Error("Flow must have a start node");N.debug(`Found start node: ${c.id}`);let d=b.get(c.id);if(!d)throw N.error(`Failed to retrieve start node from map: ${c.id}`),Error("Failed to create start node");let e=new m(d);return N.debug("Created Pocket Flow with start node"),N.info("Flow conversion completed successfully",{nodeCount:b.size}),N.verbose("convert result",JSON.stringify({flowStartNodeId:e.node_params?.id||"unknown",nodesCount:b.size})),e}static createNode(a){let b,c;switch(N.debug(`Creating node of type: ${a.type}`,{nodeId:a.id,label:a.data.label}),N.verbose("createNode input",JSON.stringify({nodeId:a.id,nodeType:a.type,label:a.data.label,properties:a.data.properties})),a.type){case"start":b=new o,c={id:a.id,label:a.data.label,type:"start",properties:a.data.properties||{name:a.data.label}};break;case"process":b=new z,c={id:a.id,label:a.data.label,type:"process",properties:a.data.properties||{name:a.data.label}};break;case"mcp":b=new G,c={id:a.id,label:a.data.label,type:"mcp",properties:a.data.properties||{name:a.data.label}};break;case"finish":b=new I,c={id:a.id,label:a.data.label,type:"finish",properties:a.data.properties||{name:a.data.label}};break;case"subflow":b=new M,c={id:a.id,label:a.data.label,type:"subflow",properties:a.data.properties||{name:a.data.label}};break;default:throw N.error(`Unknown node type: ${a.type}`,{nodeId:a.id}),Error(`Unknown node type: ${a.type}`)}return b.setParams({},c),N.debug("Node created and parameters set",{nodeId:a.id,type:a.type,propertiesKeys:Object.keys(c.properties||{})}),N.verbose("createNode result",JSON.stringify({nodeId:a.id,nodeType:a.type,nodeParams:c})),b}}let P=(0,d.h)("backend/execution/flow/engine/PocketflowEngine");class Q{clearCache(a){a?this.pocketFlowCache.delete(a):this.pocketFlowCache.clear()}async resolveFlowDefinition(a){let b=a.flowId;if(this.pocketFlowCache.has(b))return P.debug(`Using cached Pocket Flow for flowId: ${b}`),this.pocketFlowCache.get(b).clone();let c=a.flowSnapshot;if(c)P.verbose(`Resolving flow ${b} from an in-memory quick-chat snapshot.`);else if(P.verbose(`Loading and converting flow for flowId: ${b}`),!(c=await i.flowService.getFlow(b)??void 0))throw P.error(`Flow not found for flowId: ${b}`),Error(`Flow not found: ${b}`);P.info(`Found flow: ${c.name}`,{flowId:c.id,nodeCount:c.nodes.length,edgeCount:c.edges.length});let d=O.convert(c);return this.pocketFlowCache.set(b,d),P.verbose(`Flow ${b} converted and cached.`),d.clone()}async findNodeById(a,b){P.verbose(`Searching for node ${b} in flow ${a.node_params?.id}`);let c=await a.getStartNode(),d=[c],e=new Set,f=c.node_params?.id;for(f?e.add(f):P.warn("Start node is missing an ID in its parameters.");d.length>0;){let a=d.shift();if(a.node_params?.id===b)return P.verbose(`Found node ${b}`),a;if(a.successors instanceof Map)for(let b of a.successors.values()){let a=b.node_params?.id;"string"==typeof a&&a.length>0&&!e.has(a)&&(e.add(a),d.push(b.clone()))}}P.warn(`Node ${b} not found in flow.`)}async resolveNode(a){let b,{conversationId:c,currentNodeId:d}=a,e=await this.resolveFlowDefinition(a);if(d)(b=await this.findNodeById(e,d))?P.info(`Resuming conversation ${c} at node ${d}`):(P.warn(`Resuming conversation ${c}, but node ${d} not found. Starting from beginning.`),b=await e.getStartNode());else{let d=a.messages.length>0?a.messages[a.messages.length-1]:null;d?.processNodeId?(P.info(`Found processNodeId ${d.processNodeId} in last message. Attempting to resume from this node.`),(b=await this.findNodeById(e,d.processNodeId))?P.info(`Resuming conversation ${c} from node ${d.processNodeId} based on last message.`):(P.warn(`Could not find node ${d.processNodeId} from last message. Starting from beginning.`),b=await e.getStartNode())):(b=await e.getStartNode(),P.info(`Starting conversation ${c} from the beginning.`))}if(!b)throw Error("Execution error: Cannot find starting node.");let f=b.node_params?.id;if("string"!=typeof f||0===f.length)throw Error(`Execution error: Node ${b.constructor.name} is missing an ID.`);return{handle:b,id:f,type:b.node_params?.type||"unknown",name:b.node_params?.label||"Unknown Node"}}async resolveHandoff(a,b){let{currentNodeId:c}=a;if(!c||!b)return{isSuccessorEdge:!1,targetNodeId:null};let d=await this.resolveFlowDefinition(a),e=await this.findNodeById(d,c);if(!e||!e.successors.has(b))return{isSuccessorEdge:!1,targetNodeId:null};let f=e.getSuccessor(b),g=f?.node_params?.id,h=f?.node_params?.type;return{isSuccessorEdge:!0,targetNodeId:"string"==typeof g&&g.length>0?g:null,targetNodeType:"string"==typeof h?h:null}}async runNode(a,b,c){let d=a.handle;c&&(b.emit=c);try{P.debug(`[PocketflowEngine] Calling run() on node ${a.id} (${a.type})`);let c=await d.run(b);return P.debug(`[PocketflowEngine] Node ${a.id} returned action: "${c.action}"`),{action:c.action,prepResult:c.prepResult,execResult:c.execResult}}finally{delete b.emit}}constructor(){this.pocketFlowCache=new Map}}let R=(0,d.h)("backend/execution/flow/FlowExecutor"),S=["messages","availableTools","fullResponse","emit"];function T(a){let{messages:b,executionTrace:c,emit:d,mcpContext:e,...f}=a,h=g()(f);return h.messageCount=b?.length??0,e&&(h.mcpContext={server:e.server,availableTools:[]}),h}function U(a){if(!a||"object"!=typeof a)return a;let b=g()(a);for(let a of S)a in b&&delete b[a];return b}class V{static get conversationStates(){return global.__flujo_conversation_states||(global.__flujo_conversation_states=new Map),global.__flujo_conversation_states}static get engine(){return global.__flujo_flow_engine||(global.__flujo_flow_engine=new Q),global.__flujo_flow_engine}static set engine(a){global.__flujo_flow_engine=a}static clearFlowCache(a){this.engine.clearCache(a)}static resolveHandoff(a,b){return this.engine.resolveHandoff(a,b)}static async peekNextNodeId(a){try{return(await this.engine.resolveNode(a)).id}catch{return null}}static async executeStep(a,b){let c,d,f,{conversationId:g,flowId:i,currentNodeId:j}=a;if("string"!=typeof g||0===g.length)return R.error("executeStep called without a valid conversationId in sharedState."),a.lastResponse={success:!1,error:"Internal error: Missing conversationId."},{sharedState:a,action:e.O};R.debug(`executeStep called for conversation ${g}`,{flowId:i,currentNodeId:j});let k=h.G.ENABLE_EXECUTION_TRACKER||!!a.debugMode,l=j;try{let e=await this.engine.resolveNode(a);l=e.id,a.currentNodeId=e.id,R.info(`Executing step for node ${e.id} (${e.type}) in conversation ${g}`),k&&!a.executionTrace&&(a.executionTrace=[]),c=T(a),b?.({type:"node:enter",node:{nodeId:e.id,nodeName:e.name,nodeType:e.type}});let h=await this.engine.runNode(e,a,b),i=h.action;d=h.prepResult,f=h.execResult,b?.({type:"node:exit",node:{nodeId:e.id,nodeName:e.name,nodeType:e.type},action:i}),R.debug(`Node ${e.id} finished with action: ${i} for conversation ${g}`);let j=T(a);if(k&&a.executionTrace){let b=a.executionTrace.length,h={stepIndex:b,nodeId:e.id,nodeType:e.type,nodeName:e.name,timestamp:new Date().toISOString(),actionTaken:i,stateBefore:c,stateAfter:j,prepResultSnapshot:U(d),execResultSnapshot:U(f)};a.executionTrace.push(h),R.verbose(`Appended step ${b} to execution trace for conversation ${g}`)}return this.conversationStates.set(g,a),R.debug(`[FlowExecutor] Returning from executeStep for node ${e.id} with action: "${i}"`),{sharedState:a,action:i}}catch(i){let f=l||"unknown node";R.error(`Error during node execution step for ${f} in conversation ${g}`,{error:i});let h=i?.details;if(a.lastResponse={success:!1,error:i instanceof Error?i.message:String(i),errorDetails:i instanceof Error?{name:i.name,message:i.message,stack:i.stack,...h&&"object"==typeof h?h:{}}:{message:String(i)}},a.currentNodeId=l,b?.({type:"error",node:l?{nodeId:l}:void 0,message:i instanceof Error?i.message:String(i)}),k&&a.executionTrace){let b=a.executionTrace.length,h={stepIndex:b,nodeId:f,nodeType:"unknown",nodeName:"Unknown Node",timestamp:new Date().toISOString(),actionTaken:e.O,stateBefore:c??T(a),stateAfter:T(a),prepResultSnapshot:d?U(d):null,execResultSnapshot:{success:!1,error:a.lastResponse}};a.executionTrace.push(h),R.verbose(`Appended ERROR step ${b} to execution trace for conversation ${g}`)}return this.conversationStates.set(g,a),{sharedState:a,action:e.O}}}}},83964:(a,b,c)=>{function d(a){return"assistant"===a.role&&Array.isArray(a.tool_calls)&&a.tool_calls.length>0}function e(a){let b=a.length-1;for(;b>=0;b--){let c=a[b];if(!("tool"===c.role||d(c)))break}let c=a.slice(b+1);return c.some(d)?c:[]}function f(a,b,c){if(!b||"full-history"===b)return a;let d=a.filter(a=>"system"===a.role);if("isolated"===b)return[...d,{role:"user",content:c??"",id:"isolated-input",timestamp:0},...e(a)];let f=-1;for(let b=a.length-1;b>=0;b--)if("user"===a[b].role){f=b;break}return -1===f?a:[...d,...a.slice(f)]}function g(a){return a.tool_calls.some(a=>"function"===a.type&&i(a.function.name))}function h(a,b){if(0===b.size)return a;let c=a.length-e(a).length,f=Array(c).fill(!1);for(let b=0;b<c;){let e=a[b].processNodeId,h=b;for(;h<c&&a[h].processNodeId===e;)h++;let i=!1;if(e)for(let c=b;c<h;c++){let b=a[c];if("assistant"===b.role&&k(b)&&(!d(b)||g(b))){i=!0;break}}for(let a=b;a<h;a++)f[a]=i;b=h}let h=new Set,i=[],j=!1;for(let e=0;e<a.length;e++){let l=a[e];if(e<c){if(d(l)&&l.processNodeId&&b.has(l.processNodeId)&&f[e]){for(let a of l.tool_calls)h.add(a.id);if(j=!0,g(l)&&k(l)){let{tool_calls:a,...b}=l;i.push(b)}continue}if("tool"===l.role&&l.tool_call_id&&h.has(l.tool_call_id)){j=!0;continue}}i.push(l)}return j?i:a}function i(a){return"handoff"===a||a.startsWith("handoff_to_")}function j(a,b){return[b,...a.filter(a=>"system"!==a.role)]}function k(a){return"string"==typeof a.content?a.content.trim().length>0:!!Array.isArray(a.content)&&a.content.length>0}function l(a){return(function(a){let b=new Set;for(let c of a)if("assistant"===c.role&&Array.isArray(c.tool_calls))for(let a of c.tool_calls)"function"===a.type&&i(a.function.name)&&b.add(a.id);let c=[];for(let d of a)if(("user"!==d.role||"string"!=typeof d.content||"The handoff was successful. Continue"!==d.content.trim())&&!("tool"===d.role&&d.tool_call_id&&b.has(d.tool_call_id))){if("assistant"===d.role&&Array.isArray(d.tool_calls)&&d.tool_calls.some(a=>"function"===a.type&&i(a.function.name))){let a=d.tool_calls.filter(a=>!("function"===a.type&&i(a.function.name)));if(a.length>0)c.push({...d,tool_calls:a});else if(k(d)){let{tool_calls:a,...b}=d;c.push(b)}continue}c.push(d)}return c})(a).map(({id:a,timestamp:b,disabled:c,processNodeId:d,depth:e,usage:f,...g})=>g)}c.d(b,{Qv:()=>h,Ui:()=>j,ae:()=>l,ij:()=>f})},99978:(a,b,c)=>{c.d(b,{E5:()=>g,Jp:()=>d,O:()=>f,g4:()=>e});let d="TOOL_CALL",e="FINAL_RESPONSE",f="ERROR",g="STAY_ON_NODE"}};
@@ -1,2 +1,2 @@
1
- "use strict";exports.id=8739,exports.ids=[8739],exports.modules={13516:(a,b,c)=>{c.d(b,{G:()=>d});let d={LOG_LEVEL:3,INCLUDE_TOOL_CALLS_IN_RESPONSE:!0,ENABLE_EXECUTION_TRACKER:!1}},43326:(a,b,c)=>{c.d(b,{JC:()=>f,Ne:()=>j,Sx:()=>h,ok:()=>g,v0:()=>i});var d=c(33873),e=c.n(d);function f(){return process.cwd()}function g(){let a=process.env.FLUJO_DATA_DIR;return a&&a.trim().length>0?e().resolve(a):f()}function h(){let a=process.env.FLUJO_OLLAMA_URL;return(a&&a.trim().length>0?a.trim():"http://localhost:11434").replace(/\/+$/,"")}function i(){let a=process.env.FLUJO_OLLAMA;return"1"===a||"true"===a||"yes"===a}function j(){return process.env.FLUJO_CONTAINER?"container":process.env.FLUJO_NPM?"npm":"git"}},46480:(a,b,c)=>{c.d(b,{Z:()=>d});var d=function(a){return a.MODELS="models",a.FLOWS="flows",a.CHAT_HISTORY="history",a.THEME="theme",a.ENCRYPTION_KEY="encryption_key",a.MCP_SERVERS="mcp_servers",a.GLOBAL_ENV_VARS="global_env_vars",a.CURRENT_CONVERSATION_ID="current_conversation_id",a.SELECTED_FLOW_ID="selected_flow_id",a.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",a}({})},50846:(a,b,c)=>{c.d(b,{h:()=>i});var d=c(13516);let e={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},f="number"==typeof d.G.LOG_LEVEL?d.G.LOG_LEVEL:e.ERROR;function g(a,b=0){if(b>6)return String(a);if(!(a instanceof Error))return a;let c={name:a.name,message:a.message};for(let d of Object.getOwnPropertyNames(a)){if("name"===d||"message"===d)continue;let e=a[d];"function"!=typeof e&&("stack"===d?c.stack=e:"cause"===d?c.cause=g(e,b+1):"errors"===d&&Array.isArray(e)?c.errors=e.map(a=>g(a,b+1)):c[d]=e)}return c}function h(a,b,c,d,h){if(a>=("number"==typeof h?h:f)){if("function"==typeof d)try{d=d()}catch{d="[lazy log data threw]"}let f=new Date().toISOString(),h=`[${f}] [${b}]`,i=`${h} ${c}`;if(void 0!==d)if(d instanceof Error||"object"==typeof d)try{let a=d instanceof Error?g(d):d,b=JSON.stringify(a,(a,b)=>b instanceof Error?g(b):b,2);i+=`:
1
+ "use strict";exports.id=8739,exports.ids=[8739],exports.modules={13516:(a,b,c)=>{c.d(b,{G:()=>d});let d={LOG_LEVEL:3,INCLUDE_TOOL_CALLS_IN_RESPONSE:!0,ENABLE_EXECUTION_TRACKER:!1}},43326:(a,b,c)=>{c.d(b,{JC:()=>f,Ne:()=>j,Sx:()=>h,ok:()=>g,v0:()=>i});var d=c(33873),e=c.n(d);function f(){return process.cwd()}function g(){let a=process.env.FLUJO_DATA_DIR;return a&&a.trim().length>0?e().resolve(a):f()}function h(){let a=process.env.FLUJO_OLLAMA_URL;return(a&&a.trim().length>0?a.trim():"http://localhost:11434").replace(/\/+$/,"")}function i(){let a=process.env.FLUJO_OLLAMA;return"1"===a||"true"===a||"yes"===a}function j(){return process.env.FLUJO_CONTAINER?"container":process.env.FLUJO_NPM?"npm":"git"}},46480:(a,b,c)=>{c.d(b,{Z:()=>d});var d=function(a){return a.MODELS="models",a.FLOWS="flows",a.CHAT_HISTORY="history",a.THEME="theme",a.ENCRYPTION_KEY="encryption_key",a.MCP_SERVERS="mcp_servers",a.GLOBAL_ENV_VARS="global_env_vars",a.CURRENT_CONVERSATION_ID="current_conversation_id",a.SELECTED_FLOW_ID="selected_flow_id",a.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",a.MCP_QUALITY_SETTINGS="mcp_quality_settings",a}({})},50846:(a,b,c)=>{c.d(b,{h:()=>i});var d=c(13516);let e={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},f="number"==typeof d.G.LOG_LEVEL?d.G.LOG_LEVEL:e.ERROR;function g(a,b=0){if(b>6)return String(a);if(!(a instanceof Error))return a;let c={name:a.name,message:a.message};for(let d of Object.getOwnPropertyNames(a)){if("name"===d||"message"===d)continue;let e=a[d];"function"!=typeof e&&("stack"===d?c.stack=e:"cause"===d?c.cause=g(e,b+1):"errors"===d&&Array.isArray(e)?c.errors=e.map(a=>g(a,b+1)):c[d]=e)}return c}function h(a,b,c,d,h){if(a>=("number"==typeof h?h:f)){if("function"==typeof d)try{d=d()}catch{d="[lazy log data threw]"}let f=new Date().toISOString(),h=`[${f}] [${b}]`,i=`${h} ${c}`;if(void 0!==d)if(d instanceof Error||"object"==typeof d)try{let a=d instanceof Error?g(d):d,b=JSON.stringify(a,(a,b)=>b instanceof Error?g(b):b,2);i+=`:
2
2
  ${b}`}catch(a){i+=": [Object cannot be stringified]"}else i+=`: ${d}`;switch(a){case e.VERBOSE:console.debug(`[VERBOSE] ${i}`);break;case e.DEBUG:console.debug(i);break;case e.INFO:console.info(i);break;case e.WARN:console.warn(i);break;case e.ERROR:console.error(i);break;default:console.log(i)}}}function i(a,b){let c,d=((c=a.replace(/^src\//,"")).startsWith("/")&&(c=c.substring(1)),c);return{verbose:(a,c)=>{h(e.VERBOSE,d,a,c,b)},debug:(a,c)=>{h(e.DEBUG,d,a,c,b)},info:(a,c)=>{h(e.INFO,d,a,c,b)},warn:(a,c)=>{h(e.WARN,d,a,c,b)},error:(a,c)=>{h(e.ERROR,d,a,c,b)}}}},58739:(a,b,c)=>{c.r(b),c.d(b,{EncryptionLockedError:()=>o,authenticate:()=>G,changeEncryptionPassword:()=>B,decryptWithPassword:()=>E,encryptWithPassword:()=>D,getEncryptionType:()=>L,initializeDefaultEncryption:()=>w,initializeEncryption:()=>x,isEncryptionInitialized:()=>I,isEncryptionLocked:()=>K,isUserEncryptionEnabled:()=>J,logout:()=>H,migrateToUserEncryption:()=>A,verifyPassword:()=>F});var d=c(58862),e=c.n(d),f=c(92372),g=c(46480),h=c(50846),i=c(32524);let j=(0,h.h)("utils/encryption/session"),k=global.__flujo_encryption_sessions??(global.__flujo_encryption_sessions=new Map);function l(){let a=Date.now(),b=0;for(let[c,d]of k.entries())a-d.createdAt>72e5&&(k.delete(c),b++);b>0&&j.info(`Cleaned up ${b} expired encryption sessions`)}let m=null,n=(0,h.h)("utils/encryption/secure");class o extends Error{constructor(a="Encryption is locked: user password required to access secrets"){super(a),this.name="EncryptionLockedError",Object.setPrototypeOf(this,o.prototype)}}let p="data_encryption_key",q="data_encryption_iv",r="data_encryption_salt",s="encryption_version",t="encryption_type";var u=function(a){return a.DEFAULT="default",a.USER="user",a}(u||{});function v(){let a=e().enc.Utf8.parse("flujo_fixed_salt_v1");return e().PBKDF2("FLUJO~",a,{keySize:8,iterations:1e5})}async function w(){n.debug("initializeDefaultEncryption: Entering method");try{if(await I())return!0;let a=v(),b=e().lib.WordArray.random(8),c=e().lib.WordArray.random(16),d=e().AES.encrypt(b.toString(),a,{iv:c,mode:e().mode.CBC,padding:e().pad.Pkcs7}),h=e().enc.Utf8.parse("flujo_fixed_salt_v1"),i={[p]:d.toString(),[q]:c.toString(),[r]:h.toString(),[s]:1,[t]:"default"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,i),!0}catch(a){return n.error("initializeDefaultEncryption: Failed to initialize default encryption:",a),!1}}async function x(a){n.debug("initializeEncryption: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(b&&"default"===b[t])return await A(a);let c=e().lib.WordArray.random(16),d=e().PBKDF2(a,c,{keySize:8,iterations:1e5}),h=e().lib.WordArray.random(8),i=e().lib.WordArray.random(16),j=e().AES.encrypt(h.toString(),d,{iv:i,mode:e().mode.CBC,padding:e().pad.Pkcs7}),k={[p]:j.toString(),[q]:i.toString(),[r]:c.toString(),[s]:1,[t]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,k),!0}catch(a){return n.error("initializeEncryption: Failed to initialize encryption:",a),!1}}async function y(){n.debug("getDefaultDEK: Entering method");try{let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!a){if(!await w())return n.error("getDefaultDEK: Failed to initialize default encryption"),null;return await y()}if("default"!==a[t])return n.error("getDefaultDEK: Not using default encryption"),null;let b=a[p],c=e().enc.Hex.parse(a[q]),d=v(),h=e().AES.decrypt(b,d,{iv:c,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!h.toString())return n.error("getDefaultDEK: Failed to decrypt DEK with default key"),null;return e().enc.Hex.parse(h.toString())}catch(a){return n.error("getDefaultDEK: Failed to get default DEK:",a),null}}async function z(a){n.debug("getUserDEK: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!b)return n.error("getUserDEK: No encryption metadata found"),null;if("user"!==b[t])return n.error("getUserDEK: Not using user encryption"),null;let c=b[p],d=e().enc.Hex.parse(b[q]),h=e().enc.Hex.parse(b[r]),i=e().PBKDF2(a,h,{keySize:8,iterations:1e5}),j=e().AES.decrypt(c,i,{iv:d,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!j.toString())return n.error("getUserDEK: Failed to decrypt DEK with provided password"),null;return e().enc.Hex.parse(j.toString())}catch(a){return n.error("getUserDEK: Failed to get user DEK:",a),null}}async function A(a){n.debug("migrateToUserEncryption: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(b&&"user"===b[t])return!0;let c=await y();if(!c)return n.error("migrateToUserEncryption: Failed to get default DEK for migration"),!1;let d=e().lib.WordArray.random(16),h=e().PBKDF2(a,d,{keySize:8,iterations:1e5}),i=e().lib.WordArray.random(16),j=e().AES.encrypt(c.toString(e().enc.Utf8),h,{iv:i,mode:e().mode.CBC,padding:e().pad.Pkcs7}),k={[p]:j.toString(),[q]:i.toString(),[r]:d.toString(),[s]:b?b[s]:1,[t]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,k),!0}catch(a){return n.error("migrateToUserEncryption: Failed to migrate to user encryption:",a),!1}}async function B(a,b){n.debug("changeEncryptionPassword: Entering method");try{let c=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!c)return n.error("changeEncryptionPassword: No encryption metadata found"),!1;if("default"===c[t])return await A(b);let d=c[p],h=e().enc.Hex.parse(c[q]),i=e().enc.Hex.parse(c[r]),j=e().PBKDF2(a,i,{keySize:8,iterations:1e5}),k=e().AES.decrypt(d,j,{iv:h,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!k.toString())return n.error("changeEncryptionPassword: Failed to decrypt DEK with old password"),!1;let l=e().lib.WordArray.random(16),m=e().PBKDF2(b,l,{keySize:8,iterations:1e5}),o=e().lib.WordArray.random(16),u=e().AES.encrypt(k.toString(e().enc.Utf8),m,{iv:o,mode:e().mode.CBC,padding:e().pad.Pkcs7}),v={[p]:u.toString(),[q]:o.toString(),[r]:l.toString(),[s]:c[s],[t]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,v),!0}catch(a){return n.error("changeEncryptionPassword: Failed to change encryption password:",a),!1}}async function C(a,b=!1){n.debug("getDEK: Entering method");try{if(b&&a){n.debug("getDEK: Using session token");let b=function(a){let b=k.get(a);if(!b)return j.warn(`Session not found: ${a}`),null;let c=Date.now();return c-b.createdAt>72e5?(j.warn(`Session expired: ${a}`),k.delete(a),null):(b.lastUsed=c,b.dek)}(a);if(b)return e().enc.Hex.parse(b);n.warn("getDEK: Invalid or expired session token, falling back to default encryption")}let c=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!c){if(n.info("getDEK: No encryption metadata found, initializing default encryption"),!await w())return n.error("getDEK: Failed to initialize default encryption"),null;return await C(a,b)}if("user"!==c[t])return await y();{let c=global.__flujo_server_dek??null;if(c)return n.debug("getDEK: Using server unlock state for user encryption"),e().enc.Hex.parse(c);if(a&&!b){let b=await z(a);if(b)return b;n.warn("getDEK: Provided password did not yield a valid user DEK")}throw n.warn("getDEK: User encryption is locked (no unlock state or valid credential)"),new o}}catch(a){if(a instanceof o)throw a;n.error("getDEK: Failed to get DEK:",a);try{if(n.warn("getDEK: Attempting to initialize default encryption as error recovery"),await w())return await y()}catch(a){n.error("getDEK: Failed to initialize default encryption as error recovery:",a)}return null}}async function D(a,b,c=!1){n.debug("encryptWithPassword: Entering method");try{let d=await C(b,c);if(!d)return null;let f=e().lib.WordArray.random(16),g=e().AES.encrypt(a,d,{iv:f,mode:e().mode.CBC,padding:e().pad.Pkcs7});return f.toString()+":"+g.toString()}catch(a){if(a instanceof o)throw a;return n.error("encryptWithPassword: Failed to encrypt data:",a),null}}async function E(a,b,c=!1){n.debug("decryptWithPassword: Entering method");try{let d=await C(b,c);if(!d)return null;let f=a.split(":");if(2!==f.length)return n.error("decryptWithPassword: Invalid ciphertext format"),null;let g=e().enc.Hex.parse(f[0]),h=f[1];return e().AES.decrypt(h,d,{iv:g,mode:e().mode.CBC,padding:e().pad.Pkcs7}).toString(e().enc.Utf8)}catch(a){if(a instanceof o)throw a;return n.error("decryptWithPassword: Failed to decrypt data:",a),null}}async function F(a){n.debug("verifyPassword: Entering method");let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!b||"user"!==b[t])return{valid:!1};{let b=await z(a);if(null!==b){var c;return c=b.toString(),global.__flujo_server_dek=c,j.info("Server encryption unlocked"),{valid:!0,token:function(a){let b=(0,i.A)(),c=Date.now();return k.set(b,{token:b,dek:a,createdAt:c,lastUsed:c}),j.info(`Created encryption session: ${b}`),!m&&(m=setInterval(l,36e5)).unref&&m.unref(),b}(b.toString())}}return{valid:!1}}}async function G(a){n.debug("authenticate: Entering method");let b=await F(a);return b.valid&&b.token||null}async function H(a){n.debug("logout: Entering method");try{return k.has(a)&&(k.delete(a),j.info(`Invalidated encryption session: ${a}`)),!0}catch(a){return n.error("logout: Failed to invalidate session:",a),!1}}async function I(){return n.debug("isEncryptionInitialized: Entering method"),null!==await (0,f.YM)(g.Z.ENCRYPTION_KEY,null)}async function J(){n.debug("isUserEncryptionEnabled: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return null!=a&&"user"===a[t]}async function K(){return await J()&&!global.__flujo_server_dek}async function L(){n.debug("getEncryptionType: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return a?a[t]||"default":null}},92372:(a,b,c)=>{c.d(b,{EI:()=>B,N2:()=>u,Pv:()=>o,VH:()=>s,Vt:()=>A,YM:()=>t,bB:()=>C,ln:()=>w,pL:()=>D,w5:()=>E});var d=c(29021),e=c(33873),f=c.n(e),g=c(46480),h=c(50846),i=c(43326);let j=(0,h.h)("utils/storage/backend"),k=f().join((0,i.ok)(),"db"),l=f().join((0,i.ok)(),".next","storage"),m=a=>f().join(k,`${a}.json`);async function n(){try{await d.promises.access(k),j.verbose(`Storage directory exists: ${k}`)}catch{j.debug(`Creating storage directory: ${k}`),await d.promises.mkdir(k,{recursive:!0})}try{await d.promises.access(l),j.warn(`Old storage directory found: ${l}. This may cause data inconsistency issues.`)}catch{}}async function o(){for(let a of(j.debug("Verifying storage system initialization"),await n(),Object.values(g.Z)))try{let b=m(a),c=!1;try{await d.promises.access(b),c=!0}catch{}j.debug(`Storage check: ${a} - ${c?"File exists":"File does not exist yet"}`);let e=f().join(l,`${a}.json`);try{await d.promises.access(e),c?j.warn(`Found ${a} in both old and new storage locations. This may cause data inconsistency.`):j.warn(`Found ${a} in old storage location but not in new location. This may cause data loss.`)}catch{}}catch(b){j.error(`Storage verification failed for ${a}:`,b)}j.debug("Storage verification completed")}let p=new Map,q=0;async function r(a,b){let c=f().dirname(a);await d.promises.mkdir(c,{recursive:!0});let e=`${a}.tmp.${process.pid}.${++q}`;try{await d.promises.writeFile(e,b),await d.promises.rename(e,a)}catch(a){try{await d.promises.unlink(e)}catch{}throw a}}async function s(a,b){let c=m(a),d=(p.get(a)??Promise.resolve()).catch(()=>{}).then(()=>r(c,JSON.stringify(b,null,2)));p.set(a,d);try{await d,j.verbose(`Successfully saved item to: ${c}`)}catch(b){throw j.error(`Error saving item with key "${a}" to ${c}:`,b),b}finally{p.get(a)===d&&p.delete(a)}}async function t(a,b){try{await n();let c=m(a),e=await d.promises.readFile(c,"utf-8");if(0===e.trim().length)return j.warn(`Item with key "${a}" at ${c} is empty; treating as missing and returning default.`),b;try{let a=JSON.parse(e);return j.verbose(`Successfully loaded item from: ${c}`),a}catch(b){j.error(`CRITICAL: Failed to parse JSON from ${c}:`,b);let a=`${c}.corrupted.${Date.now()}.bak`;try{await d.promises.writeFile(a,e),j.info(`Created backup of corrupted file at: ${a}`)}catch(a){j.error("Failed to create backup of corrupted file:",a)}throw Error(`Failed to parse JSON from ${c}. A backup has been created at ${a}. Original error: ${b.message}`)}}catch(c){if("ENOENT"===c.code)return j.verbose(`Item with key "${a}" not found at ${m(a)}, returning default.`),b;throw j.error(`CRITICAL: Error loading item with key "${a}" from ${m(a)}:`,c),c}}async function u(a){let b=m(a);try{await d.promises.unlink(b),j.verbose(`Successfully cleared item: ${b}`)}catch(c){"ENOENT"!==c.code?j.warn(`Error clearing item with key "${a}" at ${b}:`,c):j.verbose(`Item with key "${a}" not found at ${b}, nothing to clear.`)}}let v=/^[A-Za-z0-9_-]{1,64}$/;function w(a){if("string"!=typeof a||!v.test(a))throw Error(`Unsafe collection item id: ${JSON.stringify(a)}`)}let x=a=>f().join(k,a),y=(a,b)=>f().join(x(a),`${b}.json`);function z(a,b){let c=(p.get(a)??Promise.resolve()).catch(()=>{}).then(b);return p.set(a,c),c.catch(()=>{}).finally(()=>{p.get(a)===c&&p.delete(a)}),c}async function A(a,b,c){w(b);let d=y(a,b);try{await z(`${a}/${b}`,()=>r(d,JSON.stringify(c,null,2))),j.verbose(`Successfully saved collection item: ${d}`)}catch(c){throw j.error(`Error saving collection item "${a}/${b}" to ${d}:`,c),c}}async function B(a,b,c){w(b);let e=y(a,b);try{let f=await d.promises.readFile(e,"utf-8");if(0===f.trim().length)return j.warn(`Collection item "${a}/${b}" at ${e} is empty; treating as missing.`),c;try{return JSON.parse(f)}catch(b){j.error(`CRITICAL: Failed to parse JSON from ${e}:`,b);let a=`${e}.corrupted.${Date.now()}.bak`;try{await d.promises.writeFile(a,f),j.info(`Created backup of corrupted file at: ${a}`)}catch(a){j.error("Failed to create backup of corrupted file:",a)}throw Error(`Failed to parse JSON from ${e}. A backup has been created at ${a}. Original error: ${b.message}`)}}catch(d){if("ENOENT"===d.code)return j.verbose(`Collection item "${a}/${b}" not found at ${e}, returning default.`),c;throw j.error(`CRITICAL: Error loading collection item "${a}/${b}" from ${e}:`,d),d}}async function C(a,b){w(b);let c=y(a,b);await z(`${a}/${b}`,async()=>{try{await d.promises.unlink(c),j.verbose(`Successfully deleted collection item: ${c}`)}catch(d){if("ENOENT"!==d.code)throw d;j.verbose(`Collection item "${a}/${b}" not found at ${c}, nothing to delete.`)}})}async function D(a){let b,c=x(a);try{b=await d.promises.readdir(c)}catch(a){if("ENOENT"===a.code)return[];throw a}let e=[];for(let a of b){if(!a.endsWith(".json")||a.includes(".tmp.")||a.includes(".corrupted.")||a.endsWith(".bak"))continue;let b=f().join(c,a);try{let a=await d.promises.readFile(b,"utf-8");if(0===a.trim().length){j.warn(`Collection item file ${b} is empty; skipping.`);continue}e.push(JSON.parse(a))}catch(a){j.error(`Failed to read collection item ${b}; skipping.`,a)}}return e}async function E(a,b,c){let e,f,g=m(a);try{e=await d.promises.readFile(g,"utf-8")}catch(a){if("ENOENT"===a.code)return 0;throw a}if(0===e.trim().length)return await d.promises.rename(g,`${g}.migrated-${Date.now()}.bak`),0;try{f=JSON.parse(e)}catch(b){return j.error(`Migration: legacy ${a}.json is not valid JSON; leaving it in place.`,b),0}if(!Array.isArray(f))return j.error(`Migration: legacy ${a}.json is not an array; leaving it in place.`),0;for(let a of(await d.promises.mkdir(x(b),{recursive:!0}),f)){let e;try{e=c(a),w(e)}catch(a){j.error(`Migration: skipping ${b} item with invalid/unsafe id`,a);continue}let f=y(b,e);try{await d.promises.access(f),j.debug(`Migration: ${b}/${e} already exists; keeping the existing file.`);continue}catch{}await r(f,JSON.stringify(a,null,2))}return await d.promises.rename(g,`${g}.migrated-${Date.now()}.bak`),j.info(`Migration: moved ${f.length} ${b} item(s) from ${a}.json to per-item storage.`),f.length}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=9632,exports.ids=[9632],exports.modules={49938:(a,b,c)=>{c.d(b,{rX:()=>f}),c(21124);var d=c(38301);c(9718),(0,c(19815).h)("frontend/contexts/StorageContext");let e=(0,d.createContext)({setKey:async()=>{},changeKey:async()=>!1,verifyKey:async()=>!1,isEncryptionInitialized:async()=>!1,globalEnvVars:{},setGlobalEnvVars:async()=>{},deleteGlobalEnvVar:async()=>{},encryptValue:async()=>null,decryptValue:async()=>null,isUserEncryptionEnabled:async()=>!1,isLoading:!0,settings:{speech:{enabled:!0},update:{checkOnStartup:!1}},settingsHydrated:!1,updateSettings:async()=>{}}),f=()=>(0,d.useContext)(e)},82571:(a,b,c)=>{c.d(b,{Hm:()=>f,xc:()=>e,yo:()=>g});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase(),g=a=>{if(!a)return a;if(a.includes("_-_-_")){let b=a.split("_-_-_");return 3===b.length?b[2]:a}let b=/^mcp_(.+)_[0-9a-z]+$/.exec(a);if(b&&b[1])return b[1];let c=a.indexOf("__");return c>0&&c+2<a.length?a.slice(c+2):a}}};
@@ -1 +1 @@
1
- {"version":1,"files":["../../node_modules/next/dist/client/components/app-router-headers.js","../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../node_modules/next/dist/lib/client-and-server-references.js","../../node_modules/next/dist/lib/constants.js","../../node_modules/next/dist/lib/interop-default.js","../../node_modules/next/dist/lib/is-error.js","../../node_modules/next/dist/lib/semver-noop.js","../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../node_modules/next/dist/server/app-render/async-local-storage.js","../../node_modules/next/dist/server/app-render/cache-signal.js","../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../node_modules/next/dist/server/lib/lru-cache.js","../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../node_modules/next/dist/server/lib/trace/constants.js","../../node_modules/next/dist/server/lib/trace/tracer.js","../../node_modules/next/dist/server/load-manifest.external.js","../../node_modules/next/dist/server/response-cache/types.js","../../node_modules/next/dist/shared/lib/deep-freeze.js","../../node_modules/next/dist/shared/lib/invariant-error.js","../../node_modules/next/dist/shared/lib/is-plain-object.js","../../node_modules/next/dist/shared/lib/is-thenable.js","../../node_modules/next/dist/shared/lib/server-reference-info.js","../../node_modules/next/package.json","../package.json","chunks/1870.js","chunks/232.js","chunks/3304.js","chunks/6037.js","chunks/6936.js","chunks/701.js","chunks/7362.js","chunks/7412.js","chunks/8938.js","chunks/9273.js","chunks/9406.js","webpack-runtime.js"]}
1
+ {"version":1,"files":["../../node_modules/next/dist/client/components/app-router-headers.js","../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../node_modules/next/dist/lib/client-and-server-references.js","../../node_modules/next/dist/lib/constants.js","../../node_modules/next/dist/lib/interop-default.js","../../node_modules/next/dist/lib/is-error.js","../../node_modules/next/dist/lib/semver-noop.js","../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../node_modules/next/dist/server/app-render/async-local-storage.js","../../node_modules/next/dist/server/app-render/cache-signal.js","../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../node_modules/next/dist/server/lib/lru-cache.js","../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../node_modules/next/dist/server/lib/trace/constants.js","../../node_modules/next/dist/server/lib/trace/tracer.js","../../node_modules/next/dist/server/load-manifest.external.js","../../node_modules/next/dist/server/response-cache/types.js","../../node_modules/next/dist/shared/lib/deep-freeze.js","../../node_modules/next/dist/shared/lib/invariant-error.js","../../node_modules/next/dist/shared/lib/is-plain-object.js","../../node_modules/next/dist/shared/lib/is-thenable.js","../../node_modules/next/dist/shared/lib/server-reference-info.js","../../node_modules/next/package.json","../package.json","chunks/1870.js","chunks/232.js","chunks/3304.js","chunks/4637.js","chunks/701.js","chunks/7362.js","chunks/7403.js","chunks/7412.js","chunks/8938.js","chunks/9273.js","chunks/9406.js","webpack-runtime.js"]}
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-4880945dd240d429.js","static/chunks/4bd1b696-182b6b13bdad92e3.js","static/chunks/1255-13d973e0759ea6d6.js","static/chunks/main-app-faff38c77cb00119.js"],rootMainFilesTree:{},pages:{"/_app":["static/chunks/webpack-4880945dd240d429.js","static/chunks/framework-1548034a53843b9f.js","static/chunks/main-be8e823624954fab.js","static/chunks/pages/_app-e8b861c87f6f033c.js"],"/_error":["static/chunks/webpack-4880945dd240d429.js","static/chunks/framework-1548034a53843b9f.js","static/chunks/main-be8e823624954fab.js","static/chunks/pages/_error-c8f84f7bd11d43d4.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-3e8560996ac8c1e0.js","static/chunks/4bd1b696-182b6b13bdad92e3.js","static/chunks/1255-13d973e0759ea6d6.js","static/chunks/main-app-faff38c77cb00119.js"],rootMainFilesTree:{},pages:{"/_app":["static/chunks/webpack-3e8560996ac8c1e0.js","static/chunks/framework-1548034a53843b9f.js","static/chunks/main-be8e823624954fab.js","static/chunks/pages/_app-e8b861c87f6f033c.js"],"/_error":["static/chunks/webpack-3e8560996ac8c1e0.js","static/chunks/framework-1548034a53843b9f.js","static/chunks/main-be8e823624954fab.js","static/chunks/pages/_error-c8f84f7bd11d43d4.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
@@ -1 +1 @@
1
- self.__REACT_LOADABLE_MANIFEST='{"..\\\\node_modules\\\\next\\\\dist\\\\client\\\\index.js -> ../pages/_app":{"id":45139,"files":["static/chunks/5139.e4ff9cc3669129ed.js"]},"..\\\\node_modules\\\\next\\\\dist\\\\client\\\\index.js -> ../pages/_error":{"id":31646,"files":["static/chunks/1646.a93085a0445ba909.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ../contexts/StorageContext":{"id":9164,"files":["static/chunks/9164-a56181e5e93cc47e.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ../contexts/ThemeContext":{"id":26796,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/8598-1b627b3d682b364a.js","static/chunks/7583.b6c2f8874b6b89cd.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ../contexts/TourContext":{"id":69195,"files":["static/chunks/9164-a56181e5e93cc47e.js","static/chunks/9195.294887f083b1a11b.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ./EncryptionAuthDialog":{"id":23217,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/4754-5c62bb61142f82d1.js","static/chunks/9244-3281f7fd02003a2c.js","static/chunks/8548-8e4a95334064e8b2.js","static/chunks/690-391bc0f482a9f67c.js","static/chunks/9562-93cc45aef3630781.js","static/chunks/2003-7710c23acaef11c9.js","static/chunks/3272-fd8d59523f61da96.js","static/chunks/9164-a56181e5e93cc47e.js","static/chunks/3217.1a7e24fd70294370.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ./Navigation":{"id":48187,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/4754-5c62bb61142f82d1.js","static/chunks/9244-3281f7fd02003a2c.js","static/chunks/8548-8e4a95334064e8b2.js","static/chunks/8598-1b627b3d682b364a.js","static/chunks/2619-04bc32f026a0d946.js","static/chunks/7539.41f0448cf9783388.js","static/chunks/8187.15bf331f5318c00f.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ./Tour/TourOverlay":{"id":83545,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/4754-5c62bb61142f82d1.js","static/chunks/9244-3281f7fd02003a2c.js","static/chunks/8548-8e4a95334064e8b2.js","static/chunks/690-391bc0f482a9f67c.js","static/chunks/2005-f9d38c39f10c321f.js","static/chunks/8345.76f420453fc0dee7.js","static/chunks/9164-a56181e5e93cc47e.js","static/chunks/3545.d3a512315a9fce3e.js"]},"frontend\\\\components\\\\mcp\\\\MCPServerManager\\\\ServerCard.tsx -> @/frontend/utils/oauth":{"id":68198,"files":["static/chunks/8198.cd0d3f8429c02862.js"]}}';
1
+ self.__REACT_LOADABLE_MANIFEST='{"..\\\\node_modules\\\\next\\\\dist\\\\client\\\\index.js -> ../pages/_app":{"id":45139,"files":["static/chunks/5139.e4ff9cc3669129ed.js"]},"..\\\\node_modules\\\\next\\\\dist\\\\client\\\\index.js -> ../pages/_error":{"id":31646,"files":["static/chunks/1646.a93085a0445ba909.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ../contexts/StorageContext":{"id":9164,"files":["static/chunks/9164-14dc5889cb7478c0.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ../contexts/ThemeContext":{"id":26796,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/8598-1b627b3d682b364a.js","static/chunks/7583.5355a64005f2b265.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ../contexts/TourContext":{"id":69195,"files":["static/chunks/9164-14dc5889cb7478c0.js","static/chunks/9195.294887f083b1a11b.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ./EncryptionAuthDialog":{"id":23217,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/4754-5c62bb61142f82d1.js","static/chunks/9244-3281f7fd02003a2c.js","static/chunks/8548-8e4a95334064e8b2.js","static/chunks/1871-14c3e63ca865d85e.js","static/chunks/5501-7d6e38c7c8cc3c5a.js","static/chunks/2003-7710c23acaef11c9.js","static/chunks/3272-ab88dd195ea61b65.js","static/chunks/9164-14dc5889cb7478c0.js","static/chunks/3217.058098140ec3f563.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ./Navigation":{"id":48187,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/4754-5c62bb61142f82d1.js","static/chunks/9244-3281f7fd02003a2c.js","static/chunks/8548-8e4a95334064e8b2.js","static/chunks/8598-1b627b3d682b364a.js","static/chunks/2619-04bc32f026a0d946.js","static/chunks/7539.41f0448cf9783388.js","static/chunks/8187.57929e3f925fe538.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ./Tour/TourOverlay":{"id":83545,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/4754-5c62bb61142f82d1.js","static/chunks/9244-3281f7fd02003a2c.js","static/chunks/8548-8e4a95334064e8b2.js","static/chunks/1871-14c3e63ca865d85e.js","static/chunks/2005-f9d38c39f10c321f.js","static/chunks/8345.76f420453fc0dee7.js","static/chunks/9164-14dc5889cb7478c0.js","static/chunks/3545.353a62a68d3b7fd1.js"]},"frontend\\\\components\\\\mcp\\\\MCPServerManager\\\\ServerCard.tsx -> @/frontend/utils/oauth":{"id":68198,"files":["static/chunks/8198.cd0d3f8429c02862.js"]}}';
@@ -1 +1 @@
1
- <!DOCTYPE html><!--Fdh7zqKv38txmpLAxepeR--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/d1484588c616b291.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-4880945dd240d429.js"/><script src="/_next/static/chunks/4bd1b696-182b6b13bdad92e3.js" async=""></script><script src="/_next/static/chunks/1255-13d973e0759ea6d6.js" async=""></script><script src="/_next/static/chunks/main-app-faff38c77cb00119.js" async=""></script><script src="/_next/static/chunks/app/layout-2878f13d7e253503.js" async=""></script><meta name="robots" content="noindex"/><title>FLUJO</title><meta name="description" content="A browser-based application for managing models, MCP servers, flows and chat interactions"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_246ccd __variable_c29908 antialiased"><div hidden=""><!--$--><!--/$--></div><!--$--><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div>Loading theme...</div><!--/$--><!--/$--><script src="/_next/static/chunks/webpack-4880945dd240d429.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[72403,[\"7177\",\"static/chunks/app/layout-2878f13d7e253503.js\"],\"default\"]\n3:I[9766,[],\"\"]\n4:I[98924,[],\"\"]\n5:I[24431,[],\"OutletBoundary\"]\n7:I[15278,[],\"AsyncMetadataOutlet\"]\n9:I[24431,[],\"ViewportBoundary\"]\nb:I[24431,[],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[57150,[],\"\"]\n:HL[\"/_next/static/css/d1484588c616b291.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"Fdh7zqKv38txmpLAxepeR\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/d1484588c616b291.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_246ccd __variable_c29908 antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],null],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"FLUJO\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A browser-based application for managing models, MCP servers, flows and chat interactions\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--itJEX_uJ7hJ7oF_igwwK9--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/d1484588c616b291.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-3e8560996ac8c1e0.js"/><script src="/_next/static/chunks/4bd1b696-182b6b13bdad92e3.js" async=""></script><script src="/_next/static/chunks/1255-13d973e0759ea6d6.js" async=""></script><script src="/_next/static/chunks/main-app-faff38c77cb00119.js" async=""></script><script src="/_next/static/chunks/app/layout-64fc0ae7efe81e3c.js" async=""></script><meta name="robots" content="noindex"/><title>FLUJO</title><meta name="description" content="A browser-based application for managing models, MCP servers, flows and chat interactions"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_246ccd __variable_c29908 antialiased"><div hidden=""><!--$--><!--/$--></div><!--$--><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div>Loading theme...</div><!--/$--><!--/$--><script src="/_next/static/chunks/webpack-3e8560996ac8c1e0.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[72403,[\"7177\",\"static/chunks/app/layout-64fc0ae7efe81e3c.js\"],\"default\"]\n3:I[9766,[],\"\"]\n4:I[98924,[],\"\"]\n5:I[24431,[],\"OutletBoundary\"]\n7:I[15278,[],\"AsyncMetadataOutlet\"]\n9:I[24431,[],\"ViewportBoundary\"]\nb:I[24431,[],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[57150,[],\"\"]\n:HL[\"/_next/static/css/d1484588c616b291.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"itJEX_uJ7hJ7oF-igwwK9\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/d1484588c616b291.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_246ccd __variable_c29908 antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],null],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"FLUJO\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A browser-based application for managing models, MCP servers, flows and chat interactions\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-4880945dd240d429.js" defer=""></script><script src="/_next/static/chunks/framework-1548034a53843b9f.js" defer=""></script><script src="/_next/static/chunks/main-be8e823624954fab.js" defer=""></script><script src="/_next/static/chunks/pages/_app-e8b861c87f6f033c.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c8f84f7bd11d43d4.js" defer=""></script><script src="/_next/static/Fdh7zqKv38txmpLAxepeR/_buildManifest.js" defer=""></script><script src="/_next/static/Fdh7zqKv38txmpLAxepeR/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"Fdh7zqKv38txmpLAxepeR","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-3e8560996ac8c1e0.js" defer=""></script><script src="/_next/static/chunks/framework-1548034a53843b9f.js" defer=""></script><script src="/_next/static/chunks/main-be8e823624954fab.js" defer=""></script><script src="/_next/static/chunks/pages/_app-e8b861c87f6f033c.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c8f84f7bd11d43d4.js" defer=""></script><script src="/_next/static/itJEX_uJ7hJ7oF-igwwK9/_buildManifest.js" defer=""></script><script src="/_next/static/itJEX_uJ7hJ7oF-igwwK9/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"itJEX_uJ7hJ7oF-igwwK9","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\"node\":{\"40520b537d1d43f510acbccd60e3e7d42ce215c157\":{\"workers\":{\"app/api/backup/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/encryption/secure/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/env/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/[id]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/compile/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/generate/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/improve/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/prompt-renderer/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/quick-chat/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/init/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/cancel/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/prompts/get/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/prompts/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/resources/read/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/resources/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/status/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/tools/[toolName]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/tools/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/test-connection/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/model/[id]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/model/provider/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/model/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/model/test/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/oauth/callback/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/oauth/initiate/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/oauth/reset/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/planned-executions/[id]/run/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/planned-executions/[id]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/planned-executions/[id]/runs/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/planned-executions/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/restore/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/webhooks/[id]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/completions/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/breakpoints/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/cancel/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/debug/continue/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/debug/step/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/edit-state/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/respond/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/models/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/test-connection/stream/route\":{\"moduleId\":\"947\",\"async\":false},\"app/mcp-proxy/[server]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/mcp-flows/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/events/route\":{\"moduleId\":\"947\",\"async\":false},\"app/models/page\":{\"moduleId\":\"947\",\"async\":false},\"app/mcp/page\":{\"moduleId\":\"9047\",\"async\":false},\"app/settings/page\":{\"moduleId\":\"9047\",\"async\":false}},\"layer\":{\"app/api/backup/route\":\"rsc\",\"app/api/encryption/secure/route\":\"rsc\",\"app/api/env/route\":\"rsc\",\"app/api/flow/[id]/route\":\"rsc\",\"app/api/flow/compile/route\":\"rsc\",\"app/api/flow/generate/route\":\"rsc\",\"app/api/flow/improve/route\":\"rsc\",\"app/api/flow/prompt-renderer/route\":\"rsc\",\"app/api/flow/quick-chat/route\":\"rsc\",\"app/api/flow/route\":\"rsc\",\"app/api/init/route\":\"rsc\",\"app/api/mcp/cancel/route\":\"rsc\",\"app/api/mcp/servers/[name]/prompts/get/route\":\"rsc\",\"app/api/mcp/servers/[name]/prompts/route\":\"rsc\",\"app/api/mcp/servers/[name]/resources/read/route\":\"rsc\",\"app/api/mcp/servers/[name]/resources/route\":\"rsc\",\"app/api/mcp/servers/[name]/route\":\"rsc\",\"app/api/mcp/servers/[name]/status/route\":\"rsc\",\"app/api/mcp/servers/[name]/tools/[toolName]/route\":\"rsc\",\"app/api/mcp/servers/[name]/tools/route\":\"rsc\",\"app/api/mcp/servers/route\":\"rsc\",\"app/api/mcp/test-connection/route\":\"rsc\",\"app/api/model/[id]/route\":\"rsc\",\"app/api/model/provider/route\":\"rsc\",\"app/api/model/route\":\"rsc\",\"app/api/model/test/route\":\"rsc\",\"app/api/oauth/callback/route\":\"rsc\",\"app/api/oauth/initiate/route\":\"rsc\",\"app/api/oauth/reset/route\":\"rsc\",\"app/api/planned-executions/[id]/run/route\":\"rsc\",\"app/api/planned-executions/[id]/route\":\"rsc\",\"app/api/planned-executions/[id]/runs/route\":\"rsc\",\"app/api/planned-executions/route\":\"rsc\",\"app/api/restore/route\":\"rsc\",\"app/api/webhooks/[id]/route\":\"rsc\",\"app/v1/chat/completions/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/breakpoints/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/cancel/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/debug/continue/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/debug/step/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/edit-state/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/respond/route\":\"rsc\",\"app/v1/models/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/route\":\"rsc\",\"app/v1/chat/conversations/route\":\"rsc\",\"app/api/mcp/test-connection/stream/route\":\"rsc\",\"app/mcp-proxy/[server]/route\":\"rsc\",\"app/mcp-flows/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/events/route\":\"rsc\",\"app/models/page\":\"rsc\",\"app/mcp/page\":\"action-browser\",\"app/settings/page\":\"action-browser\"},\"filename\":\"../C:\\\\Users\\\\MarioAndreschak\\\\Documents\\\\GitHub\\\\FLUJO\\\\src\\\\backend\\\\utils\\\\resolveGlobalVars.ts\",\"exportedName\":\"resolveGlobalVars\"},\"60de87c4c5950c080550cb766970e88ae9c9a0ca25\":{\"workers\":{\"app/api/backup/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/encryption/secure/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/env/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/[id]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/compile/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/generate/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/improve/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/prompt-renderer/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/quick-chat/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/flow/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/init/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/cancel/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/prompts/get/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/prompts/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/resources/read/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/resources/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/status/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/tools/[toolName]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/[name]/tools/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/servers/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/test-connection/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/model/[id]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/model/provider/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/model/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/model/test/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/oauth/callback/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/oauth/initiate/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/oauth/reset/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/planned-executions/[id]/run/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/planned-executions/[id]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/planned-executions/[id]/runs/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/planned-executions/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/restore/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/webhooks/[id]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/completions/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/breakpoints/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/cancel/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/debug/continue/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/debug/step/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/edit-state/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/respond/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/models/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/route\":{\"moduleId\":\"947\",\"async\":false},\"app/api/mcp/test-connection/stream/route\":{\"moduleId\":\"947\",\"async\":false},\"app/mcp-proxy/[server]/route\":{\"moduleId\":\"947\",\"async\":false},\"app/mcp-flows/route\":{\"moduleId\":\"947\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/events/route\":{\"moduleId\":\"947\",\"async\":false},\"app/models/page\":{\"moduleId\":\"947\",\"async\":false},\"app/mcp/page\":{\"moduleId\":\"9047\",\"async\":false},\"app/settings/page\":{\"moduleId\":\"9047\",\"async\":false}},\"layer\":{\"app/api/backup/route\":\"rsc\",\"app/api/encryption/secure/route\":\"rsc\",\"app/api/env/route\":\"rsc\",\"app/api/flow/[id]/route\":\"rsc\",\"app/api/flow/compile/route\":\"rsc\",\"app/api/flow/generate/route\":\"rsc\",\"app/api/flow/improve/route\":\"rsc\",\"app/api/flow/prompt-renderer/route\":\"rsc\",\"app/api/flow/quick-chat/route\":\"rsc\",\"app/api/flow/route\":\"rsc\",\"app/api/init/route\":\"rsc\",\"app/api/mcp/cancel/route\":\"rsc\",\"app/api/mcp/servers/[name]/prompts/get/route\":\"rsc\",\"app/api/mcp/servers/[name]/prompts/route\":\"rsc\",\"app/api/mcp/servers/[name]/resources/read/route\":\"rsc\",\"app/api/mcp/servers/[name]/resources/route\":\"rsc\",\"app/api/mcp/servers/[name]/route\":\"rsc\",\"app/api/mcp/servers/[name]/status/route\":\"rsc\",\"app/api/mcp/servers/[name]/tools/[toolName]/route\":\"rsc\",\"app/api/mcp/servers/[name]/tools/route\":\"rsc\",\"app/api/mcp/servers/route\":\"rsc\",\"app/api/mcp/test-connection/route\":\"rsc\",\"app/api/model/[id]/route\":\"rsc\",\"app/api/model/provider/route\":\"rsc\",\"app/api/model/route\":\"rsc\",\"app/api/model/test/route\":\"rsc\",\"app/api/oauth/callback/route\":\"rsc\",\"app/api/oauth/initiate/route\":\"rsc\",\"app/api/oauth/reset/route\":\"rsc\",\"app/api/planned-executions/[id]/run/route\":\"rsc\",\"app/api/planned-executions/[id]/route\":\"rsc\",\"app/api/planned-executions/[id]/runs/route\":\"rsc\",\"app/api/planned-executions/route\":\"rsc\",\"app/api/restore/route\":\"rsc\",\"app/api/webhooks/[id]/route\":\"rsc\",\"app/v1/chat/completions/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/breakpoints/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/cancel/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/debug/continue/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/debug/step/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/edit-state/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/respond/route\":\"rsc\",\"app/v1/models/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/route\":\"rsc\",\"app/v1/chat/conversations/route\":\"rsc\",\"app/api/mcp/test-connection/stream/route\":\"rsc\",\"app/mcp-proxy/[server]/route\":\"rsc\",\"app/mcp-flows/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/events/route\":\"rsc\",\"app/models/page\":\"rsc\",\"app/mcp/page\":\"action-browser\",\"app/settings/page\":\"action-browser\"},\"filename\":\"../C:\\\\Users\\\\MarioAndreschak\\\\Documents\\\\GitHub\\\\FLUJO\\\\src\\\\backend\\\\utils\\\\resolveGlobalVars.ts\",\"exportedName\":\"resolveAndDecryptApiKey\"}},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"
1
+ self.__RSC_SERVER_MANIFEST="{\"node\":{\"40ec842092ea232b6d4aa599a380d422184da5e1ca\":{\"workers\":{\"app/api/backup/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/encryption/secure/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/env/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/[id]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/compile/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/generate/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/improve/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/prompt-renderer/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/quick-chat/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/repair/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/init/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp-registry/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/cancel/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/prompts/get/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/prompts/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/resources/read/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/resources/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/status/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/tools/[toolName]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/tools/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/test-connection/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/model/[id]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/model/provider/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/model/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/model/test/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/oauth/callback/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/oauth/initiate/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/oauth/reset/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/planned-executions/[id]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/planned-executions/[id]/run/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/planned-executions/[id]/runs/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/planned-executions/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/restore/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/webhooks/[id]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/completions/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/breakpoints/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/cancel/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/debug/continue/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/debug/step/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/edit-state/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/respond/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/models/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/test-connection/stream/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/mcp-flows/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/mcp-proxy/[server]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/events/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/models/page\":{\"moduleId\":\"37426\",\"async\":false},\"app/mcp/page\":{\"moduleId\":\"44774\",\"async\":false},\"app/settings/page\":{\"moduleId\":\"44774\",\"async\":false}},\"layer\":{\"app/api/backup/route\":\"rsc\",\"app/api/encryption/secure/route\":\"rsc\",\"app/api/env/route\":\"rsc\",\"app/api/flow/[id]/route\":\"rsc\",\"app/api/flow/compile/route\":\"rsc\",\"app/api/flow/generate/route\":\"rsc\",\"app/api/flow/improve/route\":\"rsc\",\"app/api/flow/prompt-renderer/route\":\"rsc\",\"app/api/flow/quick-chat/route\":\"rsc\",\"app/api/flow/repair/route\":\"rsc\",\"app/api/flow/route\":\"rsc\",\"app/api/init/route\":\"rsc\",\"app/api/mcp-registry/route\":\"rsc\",\"app/api/mcp/cancel/route\":\"rsc\",\"app/api/mcp/servers/[name]/prompts/get/route\":\"rsc\",\"app/api/mcp/servers/[name]/prompts/route\":\"rsc\",\"app/api/mcp/servers/[name]/resources/read/route\":\"rsc\",\"app/api/mcp/servers/[name]/resources/route\":\"rsc\",\"app/api/mcp/servers/[name]/route\":\"rsc\",\"app/api/mcp/servers/[name]/status/route\":\"rsc\",\"app/api/mcp/servers/[name]/tools/[toolName]/route\":\"rsc\",\"app/api/mcp/servers/[name]/tools/route\":\"rsc\",\"app/api/mcp/servers/route\":\"rsc\",\"app/api/mcp/test-connection/route\":\"rsc\",\"app/api/model/[id]/route\":\"rsc\",\"app/api/model/provider/route\":\"rsc\",\"app/api/model/route\":\"rsc\",\"app/api/model/test/route\":\"rsc\",\"app/api/oauth/callback/route\":\"rsc\",\"app/api/oauth/initiate/route\":\"rsc\",\"app/api/oauth/reset/route\":\"rsc\",\"app/api/planned-executions/[id]/route\":\"rsc\",\"app/api/planned-executions/[id]/run/route\":\"rsc\",\"app/api/planned-executions/[id]/runs/route\":\"rsc\",\"app/api/planned-executions/route\":\"rsc\",\"app/api/restore/route\":\"rsc\",\"app/api/webhooks/[id]/route\":\"rsc\",\"app/v1/chat/completions/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/breakpoints/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/cancel/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/debug/continue/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/debug/step/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/edit-state/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/respond/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/route\":\"rsc\",\"app/v1/chat/conversations/route\":\"rsc\",\"app/v1/models/route\":\"rsc\",\"app/api/mcp/test-connection/stream/route\":\"rsc\",\"app/mcp-flows/route\":\"rsc\",\"app/mcp-proxy/[server]/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/events/route\":\"rsc\",\"app/models/page\":\"rsc\",\"app/mcp/page\":\"action-browser\",\"app/settings/page\":\"action-browser\"},\"filename\":\"../C:\\\\Users\\\\MarioAndreschak\\\\Documents\\\\GitHub\\\\FLUJO\\\\src\\\\backend\\\\utils\\\\resolveGlobalVars.ts\",\"exportedName\":\"resolveGlobalVars\"},\"602ea7ca289a8eaa1000fb321a71e292e6c766b6bb\":{\"workers\":{\"app/api/backup/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/encryption/secure/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/env/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/[id]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/compile/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/generate/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/improve/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/prompt-renderer/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/quick-chat/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/repair/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/flow/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/init/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp-registry/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/cancel/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/prompts/get/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/prompts/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/resources/read/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/resources/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/status/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/tools/[toolName]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/[name]/tools/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/servers/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/test-connection/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/model/[id]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/model/provider/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/model/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/model/test/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/oauth/callback/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/oauth/initiate/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/oauth/reset/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/planned-executions/[id]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/planned-executions/[id]/run/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/planned-executions/[id]/runs/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/planned-executions/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/restore/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/webhooks/[id]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/completions/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/breakpoints/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/cancel/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/debug/continue/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/debug/step/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/edit-state/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/respond/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/models/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/api/mcp/test-connection/stream/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/mcp-flows/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/mcp-proxy/[server]/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/v1/chat/conversations/[conversationId]/events/route\":{\"moduleId\":\"37426\",\"async\":false},\"app/models/page\":{\"moduleId\":\"37426\",\"async\":false},\"app/mcp/page\":{\"moduleId\":\"44774\",\"async\":false},\"app/settings/page\":{\"moduleId\":\"44774\",\"async\":false}},\"layer\":{\"app/api/backup/route\":\"rsc\",\"app/api/encryption/secure/route\":\"rsc\",\"app/api/env/route\":\"rsc\",\"app/api/flow/[id]/route\":\"rsc\",\"app/api/flow/compile/route\":\"rsc\",\"app/api/flow/generate/route\":\"rsc\",\"app/api/flow/improve/route\":\"rsc\",\"app/api/flow/prompt-renderer/route\":\"rsc\",\"app/api/flow/quick-chat/route\":\"rsc\",\"app/api/flow/repair/route\":\"rsc\",\"app/api/flow/route\":\"rsc\",\"app/api/init/route\":\"rsc\",\"app/api/mcp-registry/route\":\"rsc\",\"app/api/mcp/cancel/route\":\"rsc\",\"app/api/mcp/servers/[name]/prompts/get/route\":\"rsc\",\"app/api/mcp/servers/[name]/prompts/route\":\"rsc\",\"app/api/mcp/servers/[name]/resources/read/route\":\"rsc\",\"app/api/mcp/servers/[name]/resources/route\":\"rsc\",\"app/api/mcp/servers/[name]/route\":\"rsc\",\"app/api/mcp/servers/[name]/status/route\":\"rsc\",\"app/api/mcp/servers/[name]/tools/[toolName]/route\":\"rsc\",\"app/api/mcp/servers/[name]/tools/route\":\"rsc\",\"app/api/mcp/servers/route\":\"rsc\",\"app/api/mcp/test-connection/route\":\"rsc\",\"app/api/model/[id]/route\":\"rsc\",\"app/api/model/provider/route\":\"rsc\",\"app/api/model/route\":\"rsc\",\"app/api/model/test/route\":\"rsc\",\"app/api/oauth/callback/route\":\"rsc\",\"app/api/oauth/initiate/route\":\"rsc\",\"app/api/oauth/reset/route\":\"rsc\",\"app/api/planned-executions/[id]/route\":\"rsc\",\"app/api/planned-executions/[id]/run/route\":\"rsc\",\"app/api/planned-executions/[id]/runs/route\":\"rsc\",\"app/api/planned-executions/route\":\"rsc\",\"app/api/restore/route\":\"rsc\",\"app/api/webhooks/[id]/route\":\"rsc\",\"app/v1/chat/completions/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/breakpoints/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/cancel/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/debug/continue/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/debug/step/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/edit-state/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/respond/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/route\":\"rsc\",\"app/v1/chat/conversations/route\":\"rsc\",\"app/v1/models/route\":\"rsc\",\"app/api/mcp/test-connection/stream/route\":\"rsc\",\"app/mcp-flows/route\":\"rsc\",\"app/mcp-proxy/[server]/route\":\"rsc\",\"app/v1/chat/conversations/[conversationId]/events/route\":\"rsc\",\"app/models/page\":\"rsc\",\"app/mcp/page\":\"action-browser\",\"app/settings/page\":\"action-browser\"},\"filename\":\"../C:\\\\Users\\\\MarioAndreschak\\\\Documents\\\\GitHub\\\\FLUJO\\\\src\\\\backend\\\\utils\\\\resolveGlobalVars.ts\",\"exportedName\":\"resolveAndDecryptApiKey\"}},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"