flujo-ai 3.33.0 → 3.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (549) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +292 -285
  3. package/.next/app-path-routes-manifest.json +20 -19
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +21 -21
  6. package/.next/react-loadable-manifest.json +3 -3
  7. package/.next/routes-manifest.json +9 -0
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_not-found.html +1 -1
  10. package/.next/server/app/_not-found.rsc +2 -2
  11. package/.next/server/app/api/approvals/[id]/route.js +1 -1
  12. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  13. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/approvals/route.js +2 -2
  15. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  16. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/backup/route.js +1 -1
  18. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  19. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/bugs/enhance/route.js +1 -1
  22. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  23. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/encryption/secure/route.js +1 -1
  26. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  27. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/env/route.js +2 -2
  29. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  31. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
  33. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
  35. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/flow/compile/route.js +1 -1
  37. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  38. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/flow/generate/route.js +1 -1
  40. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  41. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/flow/generator/route.js +25 -4
  43. package/.next/server/app/api/flow/generator/route.js.nft.json +1 -1
  44. package/.next/server/app/api/flow/generator/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/flow/improve/route.js +1 -1
  46. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  47. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/flow/prompt-renderer/route.js +1 -1
  49. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  50. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  52. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/flow/repair/route.js +1 -1
  54. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  55. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  57. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/init/route.js +1 -1
  60. package/.next/server/app/api/init/route.js.nft.json +1 -1
  61. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/mcp/cancel/route.js +1 -1
  67. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  68. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
  70. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  72. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  74. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  76. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  78. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  80. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  82. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  84. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.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.nft.json +1 -1
  88. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  90. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  92. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/mcp-registry/route.js +1 -1
  94. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  95. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
  97. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  99. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/model/provider/route.js +1 -1
  101. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  102. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/model/route.js.nft.json +1 -1
  104. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/model/test/route.js +1 -1
  106. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  107. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/oauth/callback/route.js +1 -1
  109. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/oauth/initiate/route.js +1 -1
  111. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/oauth/reset/route.js +1 -1
  113. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  114. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/packages/build/route.js +1 -1
  116. package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
  117. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
  119. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
  121. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
  123. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
  125. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/packages/resolve/route.js +1 -1
  127. package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
  128. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -1
  130. package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/packages/search/route.js +1 -1
  132. package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
  134. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/planned-executions/[id]/route.js +1 -1
  136. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  137. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/planned-executions/[id]/run/route.js +1 -1
  139. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  140. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/planned-executions/[id]/runs/route.js +1 -1
  142. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  143. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  146. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  147. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/planned-executions/route.js +1 -1
  149. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  150. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/registry/feedback/route.js +1 -1
  155. package/.next/server/app/api/registry/feedback/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/registry/packages/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/restore/route.js +1 -1
  162. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  163. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/runs/active/route.js +1 -1
  165. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  166. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/storage/route.js +1 -1
  168. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/telemetry/daily-active/route.js +1 -1
  170. package/.next/server/app/api/telemetry/daily-active/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/update/route.js +1 -1
  172. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/waves/route.js +1 -1
  174. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  175. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  177. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  178. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/chat/page.js +2 -2
  180. package/.next/server/app/chat/page.js.nft.json +1 -1
  181. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  182. package/.next/server/app/chat.html +1 -1
  183. package/.next/server/app/chat.rsc +3 -3
  184. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  185. package/.next/server/app/docs.html +1 -1
  186. package/.next/server/app/docs.rsc +2 -2
  187. package/.next/server/app/executions/page.js +2 -2
  188. package/.next/server/app/executions/page.js.nft.json +1 -1
  189. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  190. package/.next/server/app/executions.html +1 -1
  191. package/.next/server/app/executions.rsc +3 -3
  192. package/.next/server/app/flows/page.js +3 -3
  193. package/.next/server/app/flows/page.js.nft.json +1 -1
  194. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  195. package/.next/server/app/flows.html +1 -1
  196. package/.next/server/app/flows.rsc +3 -3
  197. package/.next/server/app/index.html +1 -1
  198. package/.next/server/app/index.rsc +3 -3
  199. package/.next/server/app/mcp/page.js +1 -1
  200. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  201. package/.next/server/app/mcp-flows/route.js +1 -1
  202. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  203. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  205. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  206. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/mcp.html +1 -1
  208. package/.next/server/app/mcp.rsc +3 -3
  209. package/.next/server/app/models/page.js +1 -1
  210. package/.next/server/app/models/page.js.nft.json +1 -1
  211. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  212. package/.next/server/app/packages/page.js +1 -1
  213. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  214. package/.next/server/app/packages.html +1 -1
  215. package/.next/server/app/packages.rsc +3 -3
  216. package/.next/server/app/page.js +4 -2
  217. package/.next/server/app/page_client-reference-manifest.js +1 -1
  218. package/.next/server/app/settings/page.js +1 -1
  219. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  220. package/.next/server/app/settings.html +1 -1
  221. package/.next/server/app/settings.rsc +3 -3
  222. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  223. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  225. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  226. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  228. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  229. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  230. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  231. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  232. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  234. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  235. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  237. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  238. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +1 -1
  240. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  241. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +1 -1
  243. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -1
  244. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -1
  245. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route.js +1 -0
  246. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route.js.nft.json +1 -0
  247. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route_client-reference-manifest.js +1 -0
  248. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
  249. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  251. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  252. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +1 -1
  254. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  255. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  256. package/.next/server/app/v1/chat/conversations/route.js +1 -1
  257. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  258. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/v1/chat/events/route.js +1 -1
  260. package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
  261. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/v1/models/route.js +1 -1
  263. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  264. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  265. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  266. package/.next/server/app/waves.html +1 -1
  267. package/.next/server/app/waves.rsc +2 -2
  268. package/.next/server/app-paths-manifest.json +20 -19
  269. package/.next/server/chunks/1114.js +1 -1
  270. package/.next/server/chunks/1226.js +1 -1
  271. package/.next/server/chunks/1227.js +1 -1
  272. package/.next/server/chunks/166.js +5 -5
  273. package/.next/server/chunks/1664.js +1 -1
  274. package/.next/server/chunks/1805.js +1 -1
  275. package/.next/server/chunks/227.js +1 -1
  276. package/.next/server/chunks/2273.js +2 -2
  277. package/.next/server/chunks/2372.js +1 -1
  278. package/.next/server/chunks/2859.js +1 -1
  279. package/.next/server/chunks/3717.js +1 -0
  280. package/.next/server/chunks/3935.js +4 -0
  281. package/.next/server/chunks/4265.js +1 -1
  282. package/.next/server/chunks/4466.js +1 -1
  283. package/.next/server/chunks/4551.js +1 -1
  284. package/.next/server/chunks/4771.js +2 -2
  285. package/.next/server/chunks/4822.js +1 -1
  286. package/.next/server/chunks/5096.js +1 -1
  287. package/.next/server/chunks/519.js +2 -0
  288. package/.next/server/chunks/5285.js +1 -0
  289. package/.next/server/chunks/5309.js +78 -0
  290. package/.next/server/chunks/544.js +16 -16
  291. package/.next/server/chunks/5463.js +1 -1
  292. package/.next/server/chunks/5544.js +4 -4
  293. package/.next/server/chunks/5703.js +2 -2
  294. package/.next/server/chunks/{5708.js → 6041.js} +1 -1
  295. package/.next/server/chunks/6226.js +1 -1
  296. package/.next/server/chunks/6747.js +72 -43
  297. package/.next/server/chunks/701.js +1 -1
  298. package/.next/server/chunks/7069.js +4 -4
  299. package/.next/server/chunks/7506.js +1 -1
  300. package/.next/server/chunks/7628.js +1 -1
  301. package/.next/server/chunks/7630.js +11 -0
  302. package/.next/server/chunks/7891.js +1 -1
  303. package/.next/server/chunks/7993.js +1 -1
  304. package/.next/server/chunks/8284.js +42 -0
  305. package/.next/server/chunks/8387.js +1 -1
  306. package/.next/server/chunks/8645.js +1 -1
  307. package/.next/server/chunks/8739.js +1 -1
  308. package/.next/server/chunks/9085.js +1 -1
  309. package/.next/server/chunks/9235.js +26 -5
  310. package/.next/server/chunks/9285.js +1 -1
  311. package/.next/server/functions-config-manifest.json +1 -1
  312. package/.next/server/instrumentation.js.nft.json +1 -1
  313. package/.next/server/middleware-build-manifest.js +1 -1
  314. package/.next/server/middleware-manifest.json +1 -1
  315. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  316. package/.next/server/pages/404.html +1 -1
  317. package/.next/server/pages/500.html +1 -1
  318. package/.next/server/server-reference-manifest.js +1 -1
  319. package/.next/server/server-reference-manifest.json +1 -1
  320. package/.next/static/chunks/2005.4eea65c00d9a29cd.js +1 -0
  321. package/.next/static/chunks/3429-34fb1a84aed96703.js +1 -0
  322. package/.next/static/chunks/{2005-f9d38c39f10c321f.js → 4386-e9621d3c94969a68.js} +1 -1
  323. package/.next/static/chunks/4919-6c8a48e3cc642349.js +1 -0
  324. package/.next/static/chunks/7561-2b366ddcbc3cc0ec.js +1 -0
  325. package/.next/static/chunks/8404-5aa8ea49197b98b8.js +1 -0
  326. package/.next/static/chunks/{8650-41c2afc0eba37fb8.js → 8650-aa22dbf7b37348f0.js} +1 -1
  327. package/.next/static/chunks/9611-9867e6e8e65172ec.js +1 -0
  328. package/.next/static/chunks/app/api/approvals/[id]/{route-9ea2990be4b67136.js → route-b9c783850b4c2acf.js} +1 -1
  329. package/.next/static/chunks/app/api/approvals/{route-9ea2990be4b67136.js → route-b9c783850b4c2acf.js} +1 -1
  330. package/.next/static/chunks/app/api/backup/{route-9ea2990be4b67136.js → route-b9c783850b4c2acf.js} +1 -1
  331. package/.next/static/chunks/app/api/browse/{route-9ea2990be4b67136.js → route-b9c783850b4c2acf.js} +1 -1
  332. package/.next/static/chunks/app/api/bugs/enhance/route-b9c783850b4c2acf.js +1 -0
  333. package/.next/static/chunks/app/api/cwd/route-b9c783850b4c2acf.js +1 -0
  334. package/.next/static/chunks/app/api/encryption/secure/route-b9c783850b4c2acf.js +1 -0
  335. package/.next/static/chunks/app/api/env/route-b9c783850b4c2acf.js +1 -0
  336. package/.next/static/chunks/app/api/flow/[id]/route-b9c783850b4c2acf.js +1 -0
  337. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-b9c783850b4c2acf.js +1 -0
  338. package/.next/static/chunks/app/api/flow/[id]/versions/route-b9c783850b4c2acf.js +1 -0
  339. package/.next/static/chunks/app/api/flow/compile/route-b9c783850b4c2acf.js +1 -0
  340. package/.next/static/chunks/app/api/flow/generate/route-b9c783850b4c2acf.js +1 -0
  341. package/.next/static/chunks/app/api/flow/generator/route-b9c783850b4c2acf.js +1 -0
  342. package/.next/static/chunks/app/api/flow/improve/route-b9c783850b4c2acf.js +1 -0
  343. package/.next/static/chunks/app/api/flow/prompt-renderer/route-b9c783850b4c2acf.js +1 -0
  344. package/.next/static/chunks/app/api/flow/quick-chat/route-b9c783850b4c2acf.js +1 -0
  345. package/.next/static/chunks/app/api/flow/repair/route-b9c783850b4c2acf.js +1 -0
  346. package/.next/static/chunks/app/api/flow/route-b9c783850b4c2acf.js +1 -0
  347. package/.next/static/chunks/app/api/git/route-b9c783850b4c2acf.js +1 -0
  348. package/.next/static/chunks/app/api/init/route-b9c783850b4c2acf.js +1 -0
  349. package/.next/static/chunks/app/api/local-models/capability/route-b9c783850b4c2acf.js +1 -0
  350. package/.next/static/chunks/app/api/local-models/pull/route-b9c783850b4c2acf.js +1 -0
  351. package/.next/static/chunks/app/api/local-models/suggest/route-b9c783850b4c2acf.js +1 -0
  352. package/.next/static/chunks/app/api/mcp/app-sandbox/route-b9c783850b4c2acf.js +1 -0
  353. package/.next/static/chunks/app/api/mcp/cancel/route-b9c783850b4c2acf.js +1 -0
  354. package/.next/static/chunks/app/api/mcp/oauth-capability/route-b9c783850b4c2acf.js +1 -0
  355. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-b9c783850b4c2acf.js +1 -0
  356. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-b9c783850b4c2acf.js +1 -0
  357. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-b9c783850b4c2acf.js +1 -0
  358. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-b9c783850b4c2acf.js +1 -0
  359. package/.next/static/chunks/app/api/mcp/servers/[name]/route-b9c783850b4c2acf.js +1 -0
  360. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-b9c783850b4c2acf.js +1 -0
  361. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-b9c783850b4c2acf.js +1 -0
  362. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-b9c783850b4c2acf.js +1 -0
  363. package/.next/static/chunks/app/api/mcp/servers/route-b9c783850b4c2acf.js +1 -0
  364. package/.next/static/chunks/app/api/mcp/test-connection/route-b9c783850b4c2acf.js +1 -0
  365. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-b9c783850b4c2acf.js +1 -0
  366. package/.next/static/chunks/app/api/mcp-registry/route-b9c783850b4c2acf.js +1 -0
  367. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-b9c783850b4c2acf.js +1 -0
  368. package/.next/static/chunks/app/api/model/[id]/route-b9c783850b4c2acf.js +1 -0
  369. package/.next/static/chunks/app/api/model/provider/route-b9c783850b4c2acf.js +1 -0
  370. package/.next/static/chunks/app/api/model/route-b9c783850b4c2acf.js +1 -0
  371. package/.next/static/chunks/app/api/model/test/route-b9c783850b4c2acf.js +1 -0
  372. package/.next/static/chunks/app/api/oauth/callback/route-b9c783850b4c2acf.js +1 -0
  373. package/.next/static/chunks/app/api/oauth/initiate/route-b9c783850b4c2acf.js +1 -0
  374. package/.next/static/chunks/app/api/oauth/reset/route-b9c783850b4c2acf.js +1 -0
  375. package/.next/static/chunks/app/api/packages/build/route-b9c783850b4c2acf.js +1 -0
  376. package/.next/static/chunks/app/api/packages/derive-secrets/route-b9c783850b4c2acf.js +1 -0
  377. package/.next/static/chunks/app/api/packages/install/route-b9c783850b4c2acf.js +1 -0
  378. package/.next/static/chunks/app/api/packages/install/status/route-b9c783850b4c2acf.js +1 -0
  379. package/.next/static/chunks/app/api/packages/installed/route-b9c783850b4c2acf.js +1 -0
  380. package/.next/static/chunks/app/api/packages/resolve/route-b9c783850b4c2acf.js +1 -0
  381. package/.next/static/chunks/app/api/packages/scan-targets/route-b9c783850b4c2acf.js +1 -0
  382. package/.next/static/chunks/app/api/packages/search/route-b9c783850b4c2acf.js +1 -0
  383. package/.next/static/chunks/app/api/packages/uninstall/route-b9c783850b4c2acf.js +1 -0
  384. package/.next/static/chunks/app/api/planned-executions/[id]/route-b9c783850b4c2acf.js +1 -0
  385. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-b9c783850b4c2acf.js +1 -0
  386. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-b9c783850b4c2acf.js +1 -0
  387. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-b9c783850b4c2acf.js +1 -0
  388. package/.next/static/chunks/app/api/planned-executions/reconcile/route-b9c783850b4c2acf.js +1 -0
  389. package/.next/static/chunks/app/api/planned-executions/route-b9c783850b4c2acf.js +1 -0
  390. package/.next/static/chunks/app/api/registry/auth/resend/route-b9c783850b4c2acf.js +1 -0
  391. package/.next/static/chunks/app/api/registry/auth/reset/route-b9c783850b4c2acf.js +1 -0
  392. package/.next/static/chunks/app/api/registry/auth/route-b9c783850b4c2acf.js +1 -0
  393. package/.next/static/chunks/app/api/registry/feedback/route-b9c783850b4c2acf.js +1 -0
  394. package/.next/static/chunks/app/api/registry/oauth/callback/route-b9c783850b4c2acf.js +1 -0
  395. package/.next/static/chunks/app/api/registry/oauth/initiate/route-b9c783850b4c2acf.js +1 -0
  396. package/.next/static/chunks/app/api/registry/packages/route-b9c783850b4c2acf.js +1 -0
  397. package/.next/static/chunks/app/api/registry/publish/route-b9c783850b4c2acf.js +1 -0
  398. package/.next/static/chunks/app/api/registry/settings/route-b9c783850b4c2acf.js +1 -0
  399. package/.next/static/chunks/app/api/restore/route-b9c783850b4c2acf.js +1 -0
  400. package/.next/static/chunks/app/api/runs/active/route-b9c783850b4c2acf.js +1 -0
  401. package/.next/static/chunks/app/api/storage/route-b9c783850b4c2acf.js +1 -0
  402. package/.next/static/chunks/app/api/telemetry/daily-active/route-b9c783850b4c2acf.js +1 -0
  403. package/.next/static/chunks/app/api/update/route-b9c783850b4c2acf.js +1 -0
  404. package/.next/static/chunks/app/api/waves/route-b9c783850b4c2acf.js +1 -0
  405. package/.next/static/chunks/app/api/webhooks/[id]/route-b9c783850b4c2acf.js +1 -0
  406. package/.next/static/chunks/app/chat/{page-1d100e5d974c919e.js → page-e37bbc561f40ce60.js} +1 -1
  407. package/.next/static/chunks/app/executions/page-8296fd69c439ccee.js +1 -0
  408. package/.next/static/chunks/app/flows/page-e52c8943555e38dd.js +1 -0
  409. package/.next/static/chunks/app/{layout-38b88f3b057f4852.js → layout-abed1f211e03152f.js} +1 -1
  410. package/.next/static/chunks/app/mcp/page-1648e6fde0c41461.js +1 -0
  411. package/.next/static/chunks/app/mcp-flows/route-b9c783850b4c2acf.js +1 -0
  412. package/.next/static/chunks/app/mcp-proxy/[server]/route-b9c783850b4c2acf.js +1 -0
  413. package/.next/static/chunks/app/models/page-595597042e227970.js +1 -0
  414. package/.next/static/chunks/app/packages/page-f1a22789a6c0e0b6.js +1 -0
  415. package/.next/static/chunks/app/page-2f9da78a4891731a.js +1 -0
  416. package/.next/static/chunks/app/settings/page-f35e939032b0277d.js +1 -0
  417. package/.next/static/chunks/app/v1/chat/completions/route-b9c783850b4c2acf.js +1 -0
  418. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-b9c783850b4c2acf.js +1 -0
  419. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-b9c783850b4c2acf.js +1 -0
  420. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-b9c783850b4c2acf.js +1 -0
  421. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-b9c783850b4c2acf.js +1 -0
  422. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-b9c783850b4c2acf.js +1 -0
  423. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-b9c783850b4c2acf.js +1 -0
  424. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-b9c783850b4c2acf.js +1 -0
  425. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route-b9c783850b4c2acf.js +1 -0
  426. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-b9c783850b4c2acf.js +1 -0
  427. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-b9c783850b4c2acf.js +1 -0
  428. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-b9c783850b4c2acf.js +1 -0
  429. package/.next/static/chunks/app/v1/chat/conversations/route-b9c783850b4c2acf.js +1 -0
  430. package/.next/static/chunks/app/v1/chat/events/route-b9c783850b4c2acf.js +1 -0
  431. package/.next/static/chunks/app/v1/models/route-b9c783850b4c2acf.js +1 -0
  432. package/.next/static/chunks/{webpack-dccb4f149ebdedcc.js → webpack-9d09d53b271f49e2.js} +1 -1
  433. package/.next/trace +10 -10
  434. package/.next/types/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route.ts +347 -0
  435. package/.next/types/routes.d.ts +2 -1
  436. package/.next/types/validator.ts +9 -0
  437. package/README.md +47 -47
  438. package/package.json +5 -5
  439. package/.next/server/chunks/2985.js +0 -1
  440. package/.next/server/chunks/4308.js +0 -4
  441. package/.next/server/chunks/4366.js +0 -2
  442. package/.next/server/chunks/5040.js +0 -48
  443. package/.next/server/chunks/8187.js +0 -78
  444. package/.next/server/chunks/8851.js +0 -1
  445. package/.next/static/chunks/289-98f50bfcf833d661.js +0 -1
  446. package/.next/static/chunks/3089.df88f3b16898aad7.js +0 -1
  447. package/.next/static/chunks/6733-c9029143901e62e9.js +0 -1
  448. package/.next/static/chunks/8041-05830e887c133085.js +0 -1
  449. package/.next/static/chunks/8404-bfa9203e4296f3fb.js +0 -1
  450. package/.next/static/chunks/95-b9691d3cb15556dc.js +0 -1
  451. package/.next/static/chunks/app/api/bugs/enhance/route-9ea2990be4b67136.js +0 -1
  452. package/.next/static/chunks/app/api/cwd/route-9ea2990be4b67136.js +0 -1
  453. package/.next/static/chunks/app/api/encryption/secure/route-9ea2990be4b67136.js +0 -1
  454. package/.next/static/chunks/app/api/env/route-9ea2990be4b67136.js +0 -1
  455. package/.next/static/chunks/app/api/flow/[id]/route-9ea2990be4b67136.js +0 -1
  456. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-9ea2990be4b67136.js +0 -1
  457. package/.next/static/chunks/app/api/flow/[id]/versions/route-9ea2990be4b67136.js +0 -1
  458. package/.next/static/chunks/app/api/flow/compile/route-9ea2990be4b67136.js +0 -1
  459. package/.next/static/chunks/app/api/flow/generate/route-9ea2990be4b67136.js +0 -1
  460. package/.next/static/chunks/app/api/flow/generator/route-9ea2990be4b67136.js +0 -1
  461. package/.next/static/chunks/app/api/flow/improve/route-9ea2990be4b67136.js +0 -1
  462. package/.next/static/chunks/app/api/flow/prompt-renderer/route-9ea2990be4b67136.js +0 -1
  463. package/.next/static/chunks/app/api/flow/quick-chat/route-9ea2990be4b67136.js +0 -1
  464. package/.next/static/chunks/app/api/flow/repair/route-9ea2990be4b67136.js +0 -1
  465. package/.next/static/chunks/app/api/flow/route-9ea2990be4b67136.js +0 -1
  466. package/.next/static/chunks/app/api/git/route-9ea2990be4b67136.js +0 -1
  467. package/.next/static/chunks/app/api/init/route-9ea2990be4b67136.js +0 -1
  468. package/.next/static/chunks/app/api/local-models/capability/route-9ea2990be4b67136.js +0 -1
  469. package/.next/static/chunks/app/api/local-models/pull/route-9ea2990be4b67136.js +0 -1
  470. package/.next/static/chunks/app/api/local-models/suggest/route-9ea2990be4b67136.js +0 -1
  471. package/.next/static/chunks/app/api/mcp/app-sandbox/route-9ea2990be4b67136.js +0 -1
  472. package/.next/static/chunks/app/api/mcp/cancel/route-9ea2990be4b67136.js +0 -1
  473. package/.next/static/chunks/app/api/mcp/oauth-capability/route-9ea2990be4b67136.js +0 -1
  474. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-9ea2990be4b67136.js +0 -1
  475. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-9ea2990be4b67136.js +0 -1
  476. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-9ea2990be4b67136.js +0 -1
  477. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-9ea2990be4b67136.js +0 -1
  478. package/.next/static/chunks/app/api/mcp/servers/[name]/route-9ea2990be4b67136.js +0 -1
  479. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-9ea2990be4b67136.js +0 -1
  480. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-9ea2990be4b67136.js +0 -1
  481. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-9ea2990be4b67136.js +0 -1
  482. package/.next/static/chunks/app/api/mcp/servers/route-9ea2990be4b67136.js +0 -1
  483. package/.next/static/chunks/app/api/mcp/test-connection/route-9ea2990be4b67136.js +0 -1
  484. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-9ea2990be4b67136.js +0 -1
  485. package/.next/static/chunks/app/api/mcp-registry/route-9ea2990be4b67136.js +0 -1
  486. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-9ea2990be4b67136.js +0 -1
  487. package/.next/static/chunks/app/api/model/[id]/route-9ea2990be4b67136.js +0 -1
  488. package/.next/static/chunks/app/api/model/provider/route-9ea2990be4b67136.js +0 -1
  489. package/.next/static/chunks/app/api/model/route-9ea2990be4b67136.js +0 -1
  490. package/.next/static/chunks/app/api/model/test/route-9ea2990be4b67136.js +0 -1
  491. package/.next/static/chunks/app/api/oauth/callback/route-9ea2990be4b67136.js +0 -1
  492. package/.next/static/chunks/app/api/oauth/initiate/route-9ea2990be4b67136.js +0 -1
  493. package/.next/static/chunks/app/api/oauth/reset/route-9ea2990be4b67136.js +0 -1
  494. package/.next/static/chunks/app/api/packages/build/route-9ea2990be4b67136.js +0 -1
  495. package/.next/static/chunks/app/api/packages/derive-secrets/route-9ea2990be4b67136.js +0 -1
  496. package/.next/static/chunks/app/api/packages/install/route-9ea2990be4b67136.js +0 -1
  497. package/.next/static/chunks/app/api/packages/install/status/route-9ea2990be4b67136.js +0 -1
  498. package/.next/static/chunks/app/api/packages/installed/route-9ea2990be4b67136.js +0 -1
  499. package/.next/static/chunks/app/api/packages/resolve/route-9ea2990be4b67136.js +0 -1
  500. package/.next/static/chunks/app/api/packages/scan-targets/route-9ea2990be4b67136.js +0 -1
  501. package/.next/static/chunks/app/api/packages/search/route-9ea2990be4b67136.js +0 -1
  502. package/.next/static/chunks/app/api/packages/uninstall/route-9ea2990be4b67136.js +0 -1
  503. package/.next/static/chunks/app/api/planned-executions/[id]/route-9ea2990be4b67136.js +0 -1
  504. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-9ea2990be4b67136.js +0 -1
  505. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-9ea2990be4b67136.js +0 -1
  506. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-9ea2990be4b67136.js +0 -1
  507. package/.next/static/chunks/app/api/planned-executions/reconcile/route-9ea2990be4b67136.js +0 -1
  508. package/.next/static/chunks/app/api/planned-executions/route-9ea2990be4b67136.js +0 -1
  509. package/.next/static/chunks/app/api/registry/auth/resend/route-9ea2990be4b67136.js +0 -1
  510. package/.next/static/chunks/app/api/registry/auth/reset/route-9ea2990be4b67136.js +0 -1
  511. package/.next/static/chunks/app/api/registry/auth/route-9ea2990be4b67136.js +0 -1
  512. package/.next/static/chunks/app/api/registry/feedback/route-9ea2990be4b67136.js +0 -1
  513. package/.next/static/chunks/app/api/registry/oauth/callback/route-9ea2990be4b67136.js +0 -1
  514. package/.next/static/chunks/app/api/registry/oauth/initiate/route-9ea2990be4b67136.js +0 -1
  515. package/.next/static/chunks/app/api/registry/packages/route-9ea2990be4b67136.js +0 -1
  516. package/.next/static/chunks/app/api/registry/publish/route-9ea2990be4b67136.js +0 -1
  517. package/.next/static/chunks/app/api/registry/settings/route-9ea2990be4b67136.js +0 -1
  518. package/.next/static/chunks/app/api/restore/route-9ea2990be4b67136.js +0 -1
  519. package/.next/static/chunks/app/api/runs/active/route-9ea2990be4b67136.js +0 -1
  520. package/.next/static/chunks/app/api/storage/route-9ea2990be4b67136.js +0 -1
  521. package/.next/static/chunks/app/api/telemetry/daily-active/route-9ea2990be4b67136.js +0 -1
  522. package/.next/static/chunks/app/api/update/route-9ea2990be4b67136.js +0 -1
  523. package/.next/static/chunks/app/api/waves/route-9ea2990be4b67136.js +0 -1
  524. package/.next/static/chunks/app/api/webhooks/[id]/route-9ea2990be4b67136.js +0 -1
  525. package/.next/static/chunks/app/executions/page-10ec7d58c7fbdd6f.js +0 -1
  526. package/.next/static/chunks/app/flows/page-9a78a2915268b2f8.js +0 -1
  527. package/.next/static/chunks/app/mcp/page-56b43b2f8752e9a5.js +0 -1
  528. package/.next/static/chunks/app/mcp-flows/route-9ea2990be4b67136.js +0 -1
  529. package/.next/static/chunks/app/mcp-proxy/[server]/route-9ea2990be4b67136.js +0 -1
  530. package/.next/static/chunks/app/models/page-808c0568ebc5e2c7.js +0 -1
  531. package/.next/static/chunks/app/packages/page-af6ec89522915206.js +0 -1
  532. package/.next/static/chunks/app/page-30bf4293efa47a47.js +0 -1
  533. package/.next/static/chunks/app/settings/page-59ae1b658838f0bc.js +0 -1
  534. package/.next/static/chunks/app/v1/chat/completions/route-9ea2990be4b67136.js +0 -1
  535. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-9ea2990be4b67136.js +0 -1
  536. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-9ea2990be4b67136.js +0 -1
  537. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-9ea2990be4b67136.js +0 -1
  538. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-9ea2990be4b67136.js +0 -1
  539. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-9ea2990be4b67136.js +0 -1
  540. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-9ea2990be4b67136.js +0 -1
  541. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-9ea2990be4b67136.js +0 -1
  542. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-9ea2990be4b67136.js +0 -1
  543. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-9ea2990be4b67136.js +0 -1
  544. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-9ea2990be4b67136.js +0 -1
  545. package/.next/static/chunks/app/v1/chat/conversations/route-9ea2990be4b67136.js +0 -1
  546. package/.next/static/chunks/app/v1/chat/events/route-9ea2990be4b67136.js +0 -1
  547. package/.next/static/chunks/app/v1/models/route-9ea2990be4b67136.js +0 -1
  548. /package/.next/static/{jfb1GsjSGMjBmwfa3kM26 → hbjnLG9RCje2AApS9TzP8}/_buildManifest.js +0 -0
  549. /package/.next/static/{jfb1GsjSGMjBmwfa3kM26 → hbjnLG9RCje2AApS9TzP8}/_ssgManifest.js +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";exports.id=8645,exports.ids=[1925,4306,8645],exports.modules={1925:(a,b,c)=>{c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()},24991:(a,b,c)=>{c.d(b,{SA:()=>M,MH:()=>O,M2:()=>J,HV:()=>L,$Z:()=>P,Xd:()=>F});var d=c(50846),e=c(93868),f=c(25113);function g(a,b,c){if("string"!=typeof c)return;let d=c.trim();0!==d.length&&a.push({location:b,text:d})}function h(a){let b=[];for(let c of a.flows??[])b.push(...function(a){let b=[];for(let d of(g(b,`flow:${a.id}.description`,a.description),a.nodes??[])){var c=a.id;let e=d.id,f=`flow:${c}.node:${e}`;g(b,`${f}.description`,d.data?.description),d.data?.properties&&"object"==typeof d.data.properties&&function a(b,c,d,e,f=0){if(!(f>12)&&null!=d){if("string"==typeof d)return void g(b,c,d);if("object"==typeof d&&!e.has(d)){if(e.add(d),Array.isArray(d))return void d.forEach((d,g)=>a(b,`${c}[${g}]`,d,e,f+1));for(let[g,h]of Object.entries(d))a(b,`${c}.${g}`,h,e,f+1)}}}(b,`${f}.properties`,d.data.properties,new WeakSet)}return b}(c));for(let c of a.models??[])b.push(...function(a){let b=[],c=`model:${a.id}`;return g(b,`${c}.baseUrl`,a.baseUrl),g(b,`${c}.promptTemplate`,a.promptTemplate),g(b,`${c}.displayName`,a.displayName),g(b,`${c}.description`,a.description),g(b,`${c}.name`,a.name),b}(c));for(let c of a.plannedExecutions??[])b.push(...function(a){let b=[],c=`plannedExecution:${a.id}`;return g(b,`${c}.name`,a.name),g(b,`${c}.prompt`,a.prompt),b}(c));return b}var i=c(1925);let j=["path","repo","token","email","url-cred","name","other"];function k(a,b){return`sp_${function(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b^a.charCodeAt(c);return(b>>>0).toString(16).padStart(8,"0")}(`${a}\0${b}`)}`}function l(a,b){let c=`${a}_${b}`.toUpperCase().replace(/[^A-Z0-9_.-]+/g,"_").replace(/^[_.-]+|[_.-]+$/g,"")||`${a}_SECRET`;return e.IE.test(c)?c:`${a}_SECRET`}let m=["/usr/","/bin/","/sbin/","/lib/","/lib64/","/etc/","/var/","/opt/","/proc/","/sys/","/dev/","/tmp/","/run/","/boot/","/mnt/","/srv/","/node_modules/"],n=["c:\\windows","c:\\program files","c:\\programdata"],o=/[.,;:!?)\]}'"/\\]$/;function p(a){if(!a)return 0;let b=new Map;for(let c of a)b.set(c,(b.get(c)??0)+1);let c=0;for(let d of b.values()){let b=d/a.length;c-=b*Math.log2(b)}return c}let q=[{re:/\bhttps?:\/\/[^/\s:@]+:[^/\s:@]+@[^\s"'<>]+/gi,kind:"url-cred",priority:1,rationale:"URL with embedded credentials",confidence:"high"},{re:/\bBearer\s+([A-Za-z0-9._~+/=-]{16,})/gi,kind:"token",priority:2,rationale:"Bearer token",confidence:"high",group:1},{re:/(?:https?:\/\/)?(?:www\.)?(?:github\.com|gitlab\.com|bitbucket\.org)[/:]([A-Za-z0-9](?:[A-Za-z0-9._-]{0,38})\/[A-Za-z0-9](?:[A-Za-z0-9._-]{0,99}?))(?=(?:\.git)?(?![A-Za-z0-9._/-]))/gi,kind:"repo",priority:3,rationale:"owner/repo slug in a VCS URL",confidence:"high",group:1},{re:/\bgit@[A-Za-z0-9.-]+:([A-Za-z0-9](?:[A-Za-z0-9._-]{0,38})\/[A-Za-z0-9](?:[A-Za-z0-9._-]{0,99}?))(?=(?:\.git)?(?![A-Za-z0-9._/-]))/gi,kind:"repo",priority:3,rationale:"owner/repo slug in a git SSH URL",confidence:"high",group:1},{re:/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,kind:"email",priority:4,rationale:"Email address",confidence:"medium"},{re:/\b[A-Za-z]:\\[^\s"'<>|?*]+/g,kind:"path",priority:5,rationale:"Windows absolute file path",confidence:"medium"},{re:/(?<![A-Za-z0-9._~:/])\/[A-Za-z0-9._-]+(?:\/[A-Za-z0-9._-]+)+/g,kind:"path",priority:6,rationale:"POSIX absolute file path",confidence:"medium"}],r={re:/(?<![A-Za-z0-9._/-])[A-Za-z0-9](?:[A-Za-z0-9._-]{0,38})\/[A-Za-z0-9](?:[A-Za-z0-9._-]{0,99})(?![A-Za-z0-9._/-])/g,kind:"repo",priority:8,rationale:"owner/repo-shaped slug (opt-in, low confidence)",confidence:"low"},s=new Set(["and/or","input/output","read/write","client/server","tcp/ip","files/folders","yes/no","true/false","on/off","src/utils","a/b"]),t=/(?<![A-Za-z0-9_-])([A-Za-z][A-Za-z0-9_-]{1,64})\s*[:=]\s*("[^"]{4,}"|'[^']{4,}'|[^\s"']{6,})/g;function u(a){return new RegExp(e.HQ.source).test(a)}let v={path:"PATH",repo:"REPO",token:"TOKEN",email:"EMAIL","url-cred":"URL",name:"NAME",other:"SECRET"};function w(a,b){let c=b;if("path"===a){let a=b.split(/[\\/]/).filter(Boolean);c=a[a.length-1]||b}else"email"===a?c=b.split("@")[0]||b:"repo"===a?c=b.replace(/\//g,"_"):"url-cred"===a?c=b.replace(/^https?:\/\//i,"").split(/[/:@]/)[0]||b:"token"===a&&(c=b.slice(0,8));return l(v[a],c)}function x(a,b={}){let c=b.entropyThreshold??4,d=!0===b.enableEntropy,e=!0===b.enableRepoSlug?[...q,r]:q,f=[],g=new Set;for(let b of a)for(let a of function(a){let b=[...a].sort((a,b)=>a.priority-b.priority||b.end-b.start-(a.end-a.start)||a.start-b.start),c=[];for(let a of b)c.some(b=>a.start<b.end&&b.start<a.end)||c.push(a);return c.sort((a,b)=>a.start-b.start)}([...function(a,b){let c=[];for(let d of b){let b,e=new RegExp(d.re.source,d.re.flags);for(;null!==(b=e.exec(a));){let a=d.group??0,f=b[a];if(!f){e.lastIndex===b.index&&e.lastIndex++;continue}let g=b.index+(a>0?b[0].indexOf(f):0);if("path"===d.kind&&(f=function(a){let b=a;for(;b.length>1&&o.test(b);)b=b.slice(0,-1);return b}(f)),"path"===d.kind&&function(a){let b=a.toLowerCase();return!!(b.includes("node_modules/")||b.includes("node_modules\\"))||(/^[a-z]:\\/.test(b)?n.some(a=>b.startsWith(a)):m.some(a=>b.startsWith(a)))}(f)||"repo"===d.kind&&"low"===d.confidence&&s.has(f.toLowerCase())){e.lastIndex===b.index&&e.lastIndex++;continue}c.push({start:g,end:g+f.length,value:f,kind:d.kind,priority:d.priority,rationale:d.rationale,confidence:d.confidence}),e.lastIndex===b.index&&e.lastIndex++}}return c}(b.text,e),...function(a){let b,c=[],d=new RegExp(t.source,t.flags);for(;null!==(b=d.exec(a));){let a=b[1],d=b[2];if(!(0,i.xc)(a)||((d.startsWith('"')&&d.endsWith('"')||d.startsWith("'")&&d.endsWith("'"))&&(d=d.slice(1,-1)),!d||u(d)))continue;let e=b.index+b[0].indexOf(d,a.length);c.push({start:e,end:e+d.length,value:d,kind:"token",priority:2,rationale:`Value assigned to secret-like key "${a}"`,confidence:"high"})}return c}(b.text),...d?function(a,b){let c,d=[],e=/[A-Za-z0-9._~+/=-]{20,}/g;for(;null!==(c=e.exec(a));){let a=c[0];(function(a,b){if(a.length<24)return!1;let c=/[A-Za-z]/.test(a),d=/[0-9]/.test(a);return!!c&&!!d&&p(a)>=b})(a,b)&&d.push({start:c.index,end:c.index+a.length,value:a,kind:"token",priority:7,rationale:`High-entropy string (${p(a).toFixed(2)} bits/char)`,confidence:"low"})}return d}(b.text,c):[]].filter(a=>!u(a.value)))){let c=`${b.location}\0${a.value}`;g.has(c)||(g.add(c),f.push({id:k(b.location,a.value),location:b.location,excerpt:a.value,kind:a.kind,source:"heuristic",confidence:a.confidence,suggestedSecretName:w(a.kind,a.value),rationale:a.rationale}))}return f}async function y(a,b){let c,d=[];if(0===a.length)return{proposals:[],warnings:d};let e=b.maxTargets??200,f=b.maxCharsPerTarget??2e3,g=a.slice(0,e).map(a=>({location:a.location,text:a.text.length>f?a.text.slice(0,f):a.text})),h=new Map(a.map(a=>[a.location,a]));try{c=await b.completion({modelIdentifier:b.modelIdentifier,temperature:0,messages:[{role:"system",content:'You are a security assistant helping to package a workflow for sharing.\nYou are given a JSON array of content slices, each { "location", "text" }.\nIdentify substrings that are SECRETS or INSTANCE-SPECIFIC values that should\nNOT be shared verbatim: absolute file paths, owner/repo slugs, API tokens or\nkeys, credential-bearing URLs, email addresses, and similar.\n\nReturn ONLY a JSON array (no prose, no markdown fences). Each element:\n{ "location": string (echo the slice location exactly),\n "excerpt": string (the EXACT substring, copied verbatim from that slice text),\n "kind": one of "path"|"repo"|"token"|"email"|"url-cred"|"name"|"other",\n "suggestedSecretName": UPPER_SNAKE identifier,\n "suggestedDescription": short human description,\n "rationale": one short sentence }.\nDo NOT invent excerpts that are not present in the given text. If nothing\nqualifies, return [].'},{role:"user",content:JSON.stringify(g)}]})}catch(a){return d.push(`Model-driven pass failed: ${a instanceof Error?a.message:String(a)}`),{proposals:[],warnings:d}}if(!c?.success)return d.push(`Model-driven pass returned an error: ${c?.error?.message??"unknown error"}`),{proposals:[],warnings:d};let i=c.completion?.choices?.[0]?.message?.content??"",m=function(a){if("string"!=typeof a)return null;let b=a.trim(),c=/^```(?:json)?\s*([\s\S]*?)\s*```$/i.exec(b);c&&(b=c[1].trim());let d=a=>{try{let b=JSON.parse(a);return Array.isArray(b)?b:null}catch{return null}},e=d(b);if(e)return e;let f=b.indexOf("["),g=b.lastIndexOf("]");return f>=0&&g>f?d(b.slice(f,g+1)):null}("string"==typeof i?i:"");if(!m)return d.push("Model-driven pass returned no parseable JSON; ignoring its output."),{proposals:[],warnings:d};let n=[],o=new Set;for(let a of m){let b=function(a,b){var c;if(!a||"object"!=typeof a)return null;let d="string"==typeof a.location?a.location:"",e="string"==typeof a.excerpt?a.excerpt.trim():"";if(!d||!e)return null;let f=b.get(d);if(!f||!f.text.includes(e))return null;let g="string"==typeof(c=a.kind)&&j.includes(c)?c:"other",h="string"==typeof a.suggestedSecretName&&a.suggestedSecretName.trim()?l("SECRET",a.suggestedSecretName):w(g,e);return{id:k(d,e),location:d,excerpt:e,kind:g,source:"model",suggestedSecretName:h,suggestedDescription:"string"==typeof a.suggestedDescription?a.suggestedDescription.slice(0,200):void 0,rationale:"string"==typeof a.rationale?a.rationale.slice(0,200):void 0}}(a,h);if(!b)continue;let c=`${b.location} ${b.excerpt}`;o.has(c)||(o.add(c),n.push(b))}return{proposals:n,warnings:d}}async function z(a,b={}){let c=h(a),d=[],e=x(c,b),f=[];if(b.model){let a=await y(c,{modelIdentifier:b.model.modelIdentifier,completion:b.model.completion});f=a.proposals,d.push(...a.warnings)}return{proposals:function(a,b){let c=new Map,d=a=>`${a.location}\0${a.excerpt}`;for(let b of a)c.set(d(b),b);for(let a of b){let b=d(a);c.has(b)||c.set(b,a)}return Array.from(c.values())}(e,f),warnings:d}}function A(a,b){if("string"==typeof a)return b(a);if(Array.isArray(a))return a.map(a=>A(a,b));if(a&&"object"==typeof a){let c={};for(let[d,e]of Object.entries(a))c[d]=A(e,b);return c}return a}let B=(0,d.h)("backend/services/packages/buildPackage"),C=/\$\{global:([A-Za-z0-9_.-]+)\}/g;function D(a){return"object"==typeof a&&null!==a&&a.metadata?.isSecret===!0}function E(a){return a?Object.entries(a).map(([a,b])=>{let c=D(b)?null:e.mQ.exec(("string"==typeof b?b:b&&"object"==typeof b&&!b.metadata?.isSecret&&"string"==typeof b.value?b.value:void 0)??"");return{name:a,isSecret:D(b),...c?{globalVar:c[1]}:{}}}):[]}function F(a,b){let c=new Map(b.map(a=>[a.name,a])),d=[],e=[];for(let b of a){let a=c.get(b);if(!a){e.push(`MCP server "${b}" was not found.`);continue}let f=function(a){let b=a.source;if(!b||"local"===b.type)return null;switch(b.type){case"github":return{sourceType:"github",ref:b.ref?`${b.repositoryUrl}@${b.ref}`:b.repositoryUrl,name:a.name};case"registry":return{sourceType:"registry",ref:b.registryName,name:a.name};case"marketplace":return{sourceType:"marketplace",ref:b.id,name:a.name};case"remote":return{sourceType:"remote",url:a.serverUrl??a.websocketUrl,name:a.name};default:return null}}(a);if(!f){e.push(`MCP server "${b}" is a local server and cannot be packaged. Re-install it from GitHub, the registry, the marketplace, or as a remote server, then try again.`);continue}let g=E(a.headers);d.push({name:a.name,transport:a.transport,...a.disabled?{disabled:!0}:{},...a.autoApprove&&a.autoApprove.length?{autoApprove:a.autoApprove}:{},...a.folder?{folder:a.folder}:{},installOrigin:f,envDeclarations:E(a.env),...g.length?{headerDeclarations:g}:{}})}return{packaged:d,errors:e}}function G(a,b){let c=`${a}_${b}`.toUpperCase().replace(/[^A-Z0-9_.-]+/g,"_").replace(/^_+|_+$/g,"")||`${a}_SECRET`;return e.IE.test(c)?c:`${a}_SECRET`}function H(a){let b=(a.ApiKey??"").trim();if(!b)return{ref:{kind:"none"}};let c=e.mQ.exec(b);if(c)return{ref:{kind:"global",var:c[1]}};let d=G("MODEL",a.displayName||a.name||a.id);return{ref:{kind:"secret",secret:d},secret:{name:d,description:`API key for model "${a.displayName||a.name}"`,required:!0}}}function I(a){let b=[],c=new Set,d=(a,d)=>{for(let e of d??[]){if(!e.isSecret||e.secretRef)continue;let d=G("MCP",`${a}_${e.name}`);e.secretRef=d,c.has(d)||(c.add(d),b.push({name:d,description:`Secret "${e.name}" for MCP server "${a}"`,required:!0}))}};for(let b of a)d(b.name,b.envDeclarations),d(b.name,b.headerDeclarations);return b}function J(a,b){let c=new Map(b.models.map(a=>[a.id,a])),d=[],e=new Set,f=a=>{a&&!e.has(a.name)&&(e.add(a.name),d.push(a))};for(let b of a.modelIds){let a=c.get(b);a&&f(H(a).secret)}for(let c of I(F(a.mcpServerNames,b.mcpServers).packaged))f(c);return d}async function K(){let{flowService:a}=await c.e(7821).then(c.bind(c,87821)),{modelService:b}=await Promise.all([c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(6793)]).then(c.bind(c,20433)),{loadServerConfigs:d}=await Promise.all([c.e(4322),c.e(1805)]).then(c.bind(c,74186)),{getSchedulerService:e}=await Promise.all([c.e(3736),c.e(9794),c.e(4771),c.e(9174)]).then(c.bind(c,4771)),[f,g,h,i]=await Promise.all([a.loadFlows(),b.loadModels(),d(),e().list()]);return{flows:f,models:g,mcpServers:Array.isArray(h)?h:[],plannedExecutions:i.map(a=>a.execution)}}async function L(a){let b=await K();return{resolved:function(a,b){let c=new Map(b.flows.map(a=>[a.id,a])),d=new Map(b.models.map(a=>[a.id,a])),e=new Map(b.mcpServers.map(a=>[a.name,a])),g=new Map(b.plannedExecutions.map(a=>[a.id,a])),h=new Set,i=new Set(a.modelIds??[]),j=new Set(a.mcpServerNames??[]),k=new Set(a.plannedExecutionIds??[]),l=[],m=[],n=new Set(a.flowIds??[]),o=new Set(a.modelIds??[]),p=new Set(a.mcpServerNames??[]);for(let a of k){let b=g.get(a);if(!b){m.push(`Planned execution "${a}" was not found and will be skipped.`);continue}!b.flowId||n.has(b.flowId)||h.has(b.flowId)||l.push({type:"flow",id:b.flowId,reason:`used by planned execution "${b.name}"`}),b.flowId&&n.add(b.flowId)}let q=new Set,r=Array.from(n);for(;r.length>0;){let a=r.shift();if(q.has(a))continue;q.add(a);let b=c.get(a);if(!b){m.push(`Referenced flow "${a}" was not found and will be skipped.`);continue}h.add(a);let g=(0,f.Xw)(b);for(let d of g.flowIds??[])q.has(d)||r.push(d),!n.has(d)&&d!==a&&(c.has(d)?l.some(a=>"flow"===a.type&&a.id===d)||l.push({type:"flow",id:d,reason:`subflow of "${b.name}"`}):m.push(`Flow "${b.name}" references missing subflow "${d}".`));for(let a of g.modelIds??[]){if(!d.has(a)){m.push(`Flow "${b.name}" references missing model "${a}".`);continue}!i.has(a)&&(i.add(a),o.has(a)||l.push({type:"model",id:a,reason:`used by flow "${b.name}"`}))}for(let a of g.mcpServerNames??[]){if(!e.has(a)){m.push(`Flow "${b.name}" references missing MCP server "${a}".`);continue}!j.has(a)&&(j.add(a),p.has(a)||l.push({type:"mcpServer",id:a,reason:`used by flow "${b.name}"`}))}}return{flowIds:Array.from(h),modelIds:Array.from(i),mcpServerNames:Array.from(j),plannedExecutionIds:Array.from(k),autoAdded:l,warnings:m}}(a,b),entities:b}}async function M(a,b,c=[]){B.info(`Building package "${b.name}" v${b.version}`);let{resolved:d,entities:g}=await L(a);return function(a,b,c,d=[]){let g=[],i=[...a.warnings],j=new Map(b.flows.map(a=>[a.id,a])),k=new Map(b.models.map(a=>[a.id,a])),l=new Map(b.plannedExecutions.map(a=>[a.id,a])),m=F(a.mcpServerNames,b.mcpServers);g.push(...m.errors);let n=[],o=new Set,p=a=>{a&&!o.has(a.name)&&(o.add(a.name),n.push(a))},q=a.modelIds.map(a=>k.get(a)).filter(a=>!!a),r=a.flowIds.map(a=>j.get(a)).filter(a=>!!a),s=a.plannedExecutionIds.map(a=>l.get(a)).filter(a=>!!a),t=q,u=function(a){let b=new Set,c=a=>"string"==typeof a?a.replace(C,(a,c)=>(b.add(c),`{{secret.${c}}}`)):Array.isArray(a)?a.map(c):a&&"object"==typeof a?Object.fromEntries(Object.entries(a).map(([a,b])=>[a,c(b)])):a;return{flows:a.map(a=>c(a)),secrets:Array.from(b,a=>({name:a,description:`Global variable ${a} referenced by a packaged flow`,required:!0}))}}(r),v=u.flows,w=s;for(let a of u.secrets)p(a);if(d.length>0){let a=function(a,b){let c=[],d=b.filter(a=>!!a.excerpt&&(!!e.IE.test(a.secretName)||(c.push(`Skipped substitution with invalid secret name "${a.secretName}".`),!1))).sort((a,b)=>b.excerpt.length-a.excerpt.length),f=a=>{let b=a;for(let a of d)b.includes(a.excerpt)&&(b=b.split(a.excerpt).join(`{{secret.${a.secretName}}}`));return b},g={flows:a.flows.map(a=>A(a,f)),models:a.models.map(a=>A(a,f)),plannedExecutions:a.plannedExecutions.map(a=>A(a,f))},h=[],i=new Set;for(let a of d)i.has(a.secretName)||(i.add(a.secretName),h.push({name:a.secretName,description:a.description?f(a.description):`Derived secret ${a.secretName}`,required:!0}));return{entities:g,secrets:h,warnings:c}}({flows:v,models:q,plannedExecutions:s},d);for(let b of(t=a.entities.models,v=a.entities.flows,w=a.entities.plannedExecutions,i.push(...a.warnings),a.secrets))p(b)}let y=t.map(a=>{let{ref:b,secret:c}=H(a);return p(c),{model:a,apiKeyRef:b}});for(let a of I(m.packaged))p(a);let z=new Set;for(let{apiKeyRef:a}of y)"global"===a.kind&&z.add(a.var);for(let a of m.packaged)for(let b of[...a.envDeclarations,...a.headerDeclarations??[]])b.globalVar&&z.add(b.globalVar);if(g.length>0)return{ok:!1,resolved:a,errors:g,warnings:i};try{let{json:b,package:e}=(0,f.Zp)({id:c.id,name:c.name,version:c.version,description:c.description,author:c.author,publisher:c.publisher,tags:c.tags,...z.size>0?{requiredGlobals:Array.from(z)}:{},secrets:n,models:y,mcpServers:m.packaged,flows:v,plannedExecutions:w}),j=(0,f.$j)(e);return j.warnings?.length&&i.push(...j.warnings),d.length>0&&i.push(...function(a,b={}){return x(h(a),b).map(a=>`Possible secret left in package at ${a.location}: "${a.excerpt}" (${a.kind}).`)}({flows:v,models:t,plannedExecutions:w})),{ok:!0,json:b,package:e,resolved:a,errors:g,warnings:i}}catch(b){return g.push(b instanceof Error?b.message:String(b)),{ok:!1,resolved:a,errors:g,warnings:i}}}(d,g,b,c.filter(a=>a.excerpt&&a.suggestedSecretName).map(a=>({excerpt:a.excerpt,secretName:a.suggestedSecretName,description:a.suggestedDescription})))}function N(a,b){let c=new Set(a.flowIds),d=new Set(a.modelIds),e=new Set(a.plannedExecutionIds);return{flows:b.flows.filter(a=>c.has(a.id)),models:b.models.filter(a=>d.has(a.id)),plannedExecutions:b.plannedExecutions.filter(a=>e.has(a.id))}}async function O(a,b={}){let{resolved:d,entities:e}=await L(a),f=N(d,e),g={entropyThreshold:b.entropyThreshold,enableEntropy:b.enableEntropy,enableRepoSlug:b.enableRepoSlug};if(b.modelIdentifier){let{modelService:a}=await Promise.all([c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(6793)]).then(c.bind(c,20433));g.model={modelIdentifier:b.modelIdentifier,completion:async b=>await a.generateChatCompletion({modelIdentifier:b.modelIdentifier,messages:b.messages,temperature:b.temperature})}}return z(f,g)}async function P(a){let{resolved:b,entities:c}=await L(a),d=h(N(b,c)),e=new Set,f=[];for(let a of d){if(e.has(a.text))continue;e.add(a.text);let b=a.location.split(":")[0]||"other";f.push({source:b,location:a.location,text:a.text})}return f.sort((a,b)=>b.text.length-a.text.length),f}},51669:(a,b)=>{function c(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
1
+ "use strict";exports.id=8645,exports.ids=[1925,4306,8645],exports.modules={1925:(a,b,c)=>{c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()},24991:(a,b,c)=>{c.d(b,{SA:()=>Q,MH:()=>S,lJ:()=>G,M2:()=>N,HV:()=>P,$Z:()=>T,Xd:()=>I});var d=c(50846),e=c(93868),f=c(25113),g=c(22084);function h(a,b,c){if("string"!=typeof c)return;let d=c.trim();0!==d.length&&a.push({location:b,text:d})}function i(a){let b=[];for(let c of a.flows??[])b.push(...function(a){let b=[];for(let d of(h(b,`flow:${a.id}.description`,a.description),a.nodes??[])){var c=a.id;let e=d.id,f=`flow:${c}.node:${e}`;h(b,`${f}.description`,d.data?.description),d.data?.properties&&"object"==typeof d.data.properties&&function a(b,c,d,e,f=0){if(!(f>12)&&null!=d){if("string"==typeof d)return void h(b,c,d);if("object"==typeof d&&!e.has(d)){if(e.add(d),Array.isArray(d))return void d.forEach((d,g)=>a(b,`${c}[${g}]`,d,e,f+1));for(let[g,h]of Object.entries(d))a(b,`${c}.${g}`,h,e,f+1)}}}(b,`${f}.properties`,d.data.properties,new WeakSet)}return b}(c));for(let c of a.models??[])b.push(...function(a){let b=[],c=`model:${a.id}`;return h(b,`${c}.baseUrl`,a.baseUrl),h(b,`${c}.promptTemplate`,a.promptTemplate),h(b,`${c}.displayName`,a.displayName),h(b,`${c}.description`,a.description),h(b,`${c}.name`,a.name),b}(c));for(let c of a.plannedExecutions??[])b.push(...function(a){let b=[],c=`plannedExecution:${a.id}`;return h(b,`${c}.name`,a.name),h(b,`${c}.prompt`,a.prompt),b}(c));return b}var j=c(1925);let k=["path","repo","token","email","url-cred","name","other"];function l(a,b){return`sp_${function(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b^a.charCodeAt(c);return(b>>>0).toString(16).padStart(8,"0")}(`${a}\0${b}`)}`}function m(a,b){let c=`${a}_${b}`.toUpperCase().replace(/[^A-Z0-9_.-]+/g,"_").replace(/^[_.-]+|[_.-]+$/g,"")||`${a}_SECRET`;return e.IE.test(c)?c:`${a}_SECRET`}let n=["/usr/","/bin/","/sbin/","/lib/","/lib64/","/etc/","/var/","/opt/","/proc/","/sys/","/dev/","/tmp/","/run/","/boot/","/mnt/","/srv/","/node_modules/"],o=["c:\\windows","c:\\program files","c:\\programdata"],p=/[.,;:!?)\]}'"/\\]$/;function q(a){if(!a)return 0;let b=new Map;for(let c of a)b.set(c,(b.get(c)??0)+1);let c=0;for(let d of b.values()){let b=d/a.length;c-=b*Math.log2(b)}return c}let r=[{re:/\bhttps?:\/\/[^/\s:@]+:[^/\s:@]+@[^\s"'<>]+/gi,kind:"url-cred",priority:1,rationale:"URL with embedded credentials",confidence:"high"},{re:/\bBearer\s+([A-Za-z0-9._~+/=-]{16,})/gi,kind:"token",priority:2,rationale:"Bearer token",confidence:"high",group:1},{re:/(?:https?:\/\/)?(?:www\.)?(?:github\.com|gitlab\.com|bitbucket\.org)[/:]([A-Za-z0-9](?:[A-Za-z0-9._-]{0,38})\/[A-Za-z0-9](?:[A-Za-z0-9._-]{0,99}?))(?=(?:\.git)?(?![A-Za-z0-9._/-]))/gi,kind:"repo",priority:3,rationale:"owner/repo slug in a VCS URL",confidence:"high",group:1},{re:/\bgit@[A-Za-z0-9.-]+:([A-Za-z0-9](?:[A-Za-z0-9._-]{0,38})\/[A-Za-z0-9](?:[A-Za-z0-9._-]{0,99}?))(?=(?:\.git)?(?![A-Za-z0-9._/-]))/gi,kind:"repo",priority:3,rationale:"owner/repo slug in a git SSH URL",confidence:"high",group:1},{re:/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,kind:"email",priority:4,rationale:"Email address",confidence:"medium"},{re:/\b[A-Za-z]:\\[^\s"'<>|?*]+/g,kind:"path",priority:5,rationale:"Windows absolute file path",confidence:"medium"},{re:/(?<![A-Za-z0-9._~:/])\/[A-Za-z0-9._-]+(?:\/[A-Za-z0-9._-]+)+/g,kind:"path",priority:6,rationale:"POSIX absolute file path",confidence:"medium"}],s={re:/(?<![A-Za-z0-9._/-])[A-Za-z0-9](?:[A-Za-z0-9._-]{0,38})\/[A-Za-z0-9](?:[A-Za-z0-9._-]{0,99})(?![A-Za-z0-9._/-])/g,kind:"repo",priority:8,rationale:"owner/repo-shaped slug (opt-in, low confidence)",confidence:"low"},t=new Set(["and/or","input/output","read/write","client/server","tcp/ip","files/folders","yes/no","true/false","on/off","src/utils","a/b"]),u=/(?<![A-Za-z0-9_-])([A-Za-z][A-Za-z0-9_-]{1,64})\s*[:=]\s*("[^"]{4,}"|'[^']{4,}'|[^\s"']{6,})/g;function v(a){return new RegExp(e.HQ.source).test(a)}let w={path:"PATH",repo:"REPO",token:"TOKEN",email:"EMAIL","url-cred":"URL",name:"NAME",other:"SECRET"};function x(a,b){let c=b;if("path"===a){let a=b.split(/[\\/]/).filter(Boolean);c=a[a.length-1]||b}else"email"===a?c=b.split("@")[0]||b:"repo"===a?c=b.replace(/\//g,"_"):"url-cred"===a?c=b.replace(/^https?:\/\//i,"").split(/[/:@]/)[0]||b:"token"===a&&(c=b.slice(0,8));return m(w[a],c)}function y(a,b={}){let c=b.entropyThreshold??4,d=!0===b.enableEntropy,e=!0===b.enableRepoSlug?[...r,s]:r,f=[],g=new Set;for(let b of a)for(let a of function(a){let b=[...a].sort((a,b)=>a.priority-b.priority||b.end-b.start-(a.end-a.start)||a.start-b.start),c=[];for(let a of b)c.some(b=>a.start<b.end&&b.start<a.end)||c.push(a);return c.sort((a,b)=>a.start-b.start)}([...function(a,b){let c=[];for(let d of b){let b,e=new RegExp(d.re.source,d.re.flags);for(;null!==(b=e.exec(a));){let a=d.group??0,f=b[a];if(!f){e.lastIndex===b.index&&e.lastIndex++;continue}let g=b.index+(a>0?b[0].indexOf(f):0);if("path"===d.kind&&(f=function(a){let b=a;for(;b.length>1&&p.test(b);)b=b.slice(0,-1);return b}(f)),"path"===d.kind&&function(a){let b=a.toLowerCase();return!!(b.includes("node_modules/")||b.includes("node_modules\\"))||(/^[a-z]:\\/.test(b)?o.some(a=>b.startsWith(a)):n.some(a=>b.startsWith(a)))}(f)||"repo"===d.kind&&"low"===d.confidence&&t.has(f.toLowerCase())){e.lastIndex===b.index&&e.lastIndex++;continue}c.push({start:g,end:g+f.length,value:f,kind:d.kind,priority:d.priority,rationale:d.rationale,confidence:d.confidence}),e.lastIndex===b.index&&e.lastIndex++}}return c}(b.text,e),...function(a){let b,c=[],d=new RegExp(u.source,u.flags);for(;null!==(b=d.exec(a));){let a=b[1],d=b[2];if(!(0,j.xc)(a)||((d.startsWith('"')&&d.endsWith('"')||d.startsWith("'")&&d.endsWith("'"))&&(d=d.slice(1,-1)),!d||v(d)))continue;let e=b.index+b[0].indexOf(d,a.length);c.push({start:e,end:e+d.length,value:d,kind:"token",priority:2,rationale:`Value assigned to secret-like key "${a}"`,confidence:"high"})}return c}(b.text),...d?function(a,b){let c,d=[],e=/[A-Za-z0-9._~+/=-]{20,}/g;for(;null!==(c=e.exec(a));){let a=c[0];(function(a,b){if(a.length<24)return!1;let c=/[A-Za-z]/.test(a),d=/[0-9]/.test(a);return!!c&&!!d&&q(a)>=b})(a,b)&&d.push({start:c.index,end:c.index+a.length,value:a,kind:"token",priority:7,rationale:`High-entropy string (${q(a).toFixed(2)} bits/char)`,confidence:"low"})}return d}(b.text,c):[]].filter(a=>!v(a.value)))){let c=`${b.location}\0${a.value}`;g.has(c)||(g.add(c),f.push({id:l(b.location,a.value),location:b.location,excerpt:a.value,kind:a.kind,source:"heuristic",confidence:a.confidence,suggestedSecretName:x(a.kind,a.value),rationale:a.rationale}))}return f}async function z(a,b){let c,d=[];if(0===a.length)return{proposals:[],warnings:d};let e=b.maxTargets??200,f=b.maxCharsPerTarget??2e3,g=a.slice(0,e).map(a=>({location:a.location,text:a.text.length>f?a.text.slice(0,f):a.text})),h=new Map(a.map(a=>[a.location,a]));try{c=await b.completion({modelIdentifier:b.modelIdentifier,temperature:0,messages:[{role:"system",content:'You are a security assistant helping to package a workflow for sharing.\nYou are given a JSON array of content slices, each { "location", "text" }.\nIdentify substrings that are SECRETS or INSTANCE-SPECIFIC values that should\nNOT be shared verbatim: absolute file paths, owner/repo slugs, API tokens or\nkeys, credential-bearing URLs, email addresses, and similar.\n\nReturn ONLY a JSON array (no prose, no markdown fences). Each element:\n{ "location": string (echo the slice location exactly),\n "excerpt": string (the EXACT substring, copied verbatim from that slice text),\n "kind": one of "path"|"repo"|"token"|"email"|"url-cred"|"name"|"other",\n "suggestedSecretName": UPPER_SNAKE identifier,\n "suggestedDescription": short human description,\n "rationale": one short sentence }.\nDo NOT invent excerpts that are not present in the given text. If nothing\nqualifies, return [].'},{role:"user",content:JSON.stringify(g)}]})}catch(a){return d.push(`Model-driven pass failed: ${a instanceof Error?a.message:String(a)}`),{proposals:[],warnings:d}}if(!c?.success)return d.push(`Model-driven pass returned an error: ${c?.error?.message??"unknown error"}`),{proposals:[],warnings:d};let i=c.completion?.choices?.[0]?.message?.content??"",j=function(a){if("string"!=typeof a)return null;let b=a.trim(),c=/^```(?:json)?\s*([\s\S]*?)\s*```$/i.exec(b);c&&(b=c[1].trim());let d=a=>{try{let b=JSON.parse(a);return Array.isArray(b)?b:null}catch{return null}},e=d(b);if(e)return e;let f=b.indexOf("["),g=b.lastIndexOf("]");return f>=0&&g>f?d(b.slice(f,g+1)):null}("string"==typeof i?i:"");if(!j)return d.push("Model-driven pass returned no parseable JSON; ignoring its output."),{proposals:[],warnings:d};let n=[],o=new Set;for(let a of j){let b=function(a,b){var c;if(!a||"object"!=typeof a)return null;let d="string"==typeof a.location?a.location:"",e="string"==typeof a.excerpt?a.excerpt.trim():"";if(!d||!e)return null;let f=b.get(d);if(!f||!f.text.includes(e))return null;let g="string"==typeof(c=a.kind)&&k.includes(c)?c:"other",h="string"==typeof a.suggestedSecretName&&a.suggestedSecretName.trim()?m("SECRET",a.suggestedSecretName):x(g,e);return{id:l(d,e),location:d,excerpt:e,kind:g,source:"model",suggestedSecretName:h,suggestedDescription:"string"==typeof a.suggestedDescription?a.suggestedDescription.slice(0,200):void 0,rationale:"string"==typeof a.rationale?a.rationale.slice(0,200):void 0}}(a,h);if(!b)continue;let c=`${b.location} ${b.excerpt}`;o.has(c)||(o.add(c),n.push(b))}return{proposals:n,warnings:d}}async function A(a,b={}){let c=i(a),d=[],e=y(c,b),f=[];if(b.model){let a=await z(c,{modelIdentifier:b.model.modelIdentifier,completion:b.model.completion});f=a.proposals,d.push(...a.warnings)}return{proposals:function(a,b){let c=new Map,d=a=>`${a.location}\0${a.excerpt}`;for(let b of a)c.set(d(b),b);for(let a of b){let b=d(a);c.has(b)||c.set(b,a)}return Array.from(c.values())}(e,f),warnings:d}}function B(a,b){if("string"==typeof a)return b(a);if(Array.isArray(a))return a.map(a=>B(a,b));if(a&&"object"==typeof a){let c={};for(let[d,e]of Object.entries(a))c[d]=B(e,b);return c}return a}var C=c(38844);let D=(0,d.h)("backend/services/packages/buildPackage"),E=/\$\{global:([A-Za-z0-9_.-]+)\}/g;function F(a,b=new Set){if("string"==typeof a){let c=RegExp(E.source,"g");for(let d of a.matchAll(c))b.add(d[1]);return b}if(Array.isArray(a)){for(let c of a)F(c,b);return b}if(a&&"object"==typeof a)for(let c of Object.values(a))F(c,b);return b}function G(a,b){let c=new Set,d=new Set(a.flowIds),e=new Set(a.modelIds),f=new Set(a.plannedExecutionIds);for(let a of b.flows)d.has(a.id)&&F(a,c);for(let a of b.models)e.has(a.id)&&F(a,c);for(let a of b.plannedExecutions)f.has(a.id)&&F(a,c);for(let d of I(a.mcpServerNames,b.mcpServers).packaged){for(let a of[...d.envDeclarations,...d.headerDeclarations??[]])a.globalVar&&c.add(a.globalVar),a.globalTemplate&&F(a.globalTemplate,c);for(let a of d.argTemplates??[])F(a.value,c)}return Array.from(c,a=>({name:a,description:`Global variable ${a} required by this package`,required:!0,isSecret:b.globalVariables?.[a]?.isSecret===!0}))}function H(a,b){return a?Object.entries(a).map(([a,c])=>{let d="object"==typeof c&&null!==c&&"boolean"==typeof c.metadata?.isSecret,f=("string"==typeof c?c:c&&"object"==typeof c&&"string"==typeof c.value?c.value:void 0)??"",g=e.mQ.exec(f),h=F(f);return{name:a,isSecret:d?"object"==typeof c&&null!==c&&c.metadata?.isSecret===!0:b(a),...g?{globalVar:g[1]}:{},...!g&&h.size>0?{globalTemplate:f}:{}}}):[]}function I(a,b){let c=new Map(b.map(a=>[a.name,a])),d=[],e=[];for(let b of a){let a=c.get(b);if(!a){e.push(`MCP server "${b}" was not found.`);continue}let f=function(a){let b=a.source;if(!b||"local"===b.type)return null;switch(b.type){case"github":return{sourceType:"github",ref:b.ref?`${b.repositoryUrl}@${b.ref}`:b.repositoryUrl,name:a.name};case"registry":return{sourceType:"registry",ref:b.registryName,name:a.name};case"marketplace":return{sourceType:"marketplace",ref:b.id,name:a.name};case"remote":return{sourceType:"remote",url:a.serverUrl??a.websocketUrl,name:a.name};default:return null}}(a);if(!f){e.push(`MCP server "${b}" is a local server and cannot be packaged. Re-install it from GitHub, the registry, the marketplace, or as a remote server, then try again.`);continue}let g=H(a.headers,j.Hm),h="stdio"===a.transport&&Array.isArray(a.args)?a.args.flatMap((a,b)=>"string"==typeof a&&F(a).size>0?[{index:b,value:a}]:[]):[];d.push({name:a.name,transport:a.transport,...a.disabled?{disabled:!0}:{},...a.autoApprove&&a.autoApprove.length?{autoApprove:a.autoApprove}:{},...a.folder?{folder:a.folder}:{},installOrigin:f,envDeclarations:H(a.env,j.xc),...g.length?{headerDeclarations:g}:{},...h.length?{argTemplates:h}:{}})}return{packaged:d,errors:e}}function J(a,b){let c=`${a}_${b}`.toUpperCase().replace(/[^A-Z0-9_.-]+/g,"_").replace(/^_+|_+$/g,"")||`${a}_SECRET`;return e.IE.test(c)?c:`${a}_SECRET`}function K(a){let b=(a.ApiKey??"").trim();if(!b)return{ref:{kind:"none"}};let c=e.mQ.exec(b);if(c)return{ref:{kind:"global",var:c[1]}};let d=J("MODEL",a.displayName||a.name||a.id);return{ref:{kind:"secret",secret:d},secret:{name:d,description:`API key for model "${a.displayName||a.name}"`,required:!0}}}function L(a){let b=[],c=new Set,d=(a,d)=>{for(let e of d??[]){if(!e.isSecret||e.secretRef||e.globalVar||e.globalTemplate)continue;let d=J("MCP",`${a}_${e.name}`);e.secretRef=d,c.has(d)||(c.add(d),b.push({name:d,description:`Secret "${e.name}" for MCP server "${a}"`,required:!0}))}};for(let b of a)d(b.name,b.envDeclarations),d(b.name,b.headerDeclarations);return b}function M(a,b,c){let d=b.map(({ApiKey:a,...b})=>b),e=c.map(a=>{if(a.trigger?.type!=="webhook")return a;let{token:b,...c}=a.trigger;return{...a,trigger:c}});return(0,g.D)({flows:a,models:d,plannedExecutions:e}).map(a=>({name:a,description:`Secret "${a}" referenced by packaged content`,required:!0}))}function N(a,b){let c=new Map(b.flows.map(a=>[a.id,a])),d=new Map(b.models.map(a=>[a.id,a])),e=new Map(b.plannedExecutions.map(a=>[a.id,a])),f=[],g=new Set,h=a=>{a&&!g.has(a.name)&&(g.add(a.name),f.push(a))};for(let b of a.modelIds){let a=d.get(b);a&&h(K(a).secret)}for(let c of L(I(a.mcpServerNames,b.mcpServers).packaged))h(c);let i=a.flowIds.map(a=>c.get(a)).filter(a=>!!a);for(let b of M(i,a.modelIds.map(a=>d.get(a)).filter(a=>!!a),a.plannedExecutionIds.map(a=>e.get(a)).filter(a=>!!a)))h(b);return f}async function O(){let{flowService:a}=await c.e(7821).then(c.bind(c,87821)),{modelService:b}=await Promise.all([c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(6793)]).then(c.bind(c,20433)),{loadServerConfigs:d}=await Promise.all([c.e(4322),c.e(1805)]).then(c.bind(c,74186)),{getSchedulerService:e}=await Promise.all([c.e(3736),c.e(9794),c.e(4771),c.e(9174)]).then(c.bind(c,4771)),{loadItem:f}=await Promise.resolve().then(c.bind(c,92372)),[g,h,i,j,k]=await Promise.all([a.loadFlows(),b.loadModels(),d(),e().list(),f(C.Z.GLOBAL_ENV_VARS,{})]),l=Array.isArray(i)?i:[];return{flows:g,models:h,mcpServers:l,plannedExecutions:j.map(a=>a.execution),globalVariables:Object.fromEntries(Object.entries(k).map(([a,b])=>[a,{isSecret:"object"==typeof b&&null!==b&&b.metadata?.isSecret===!0||"string"==typeof b&&(b.startsWith("encrypted:")||b.startsWith("encrypted_failed:"))}]))}}async function P(a){let b=await O();return{resolved:function(a,b){let c=new Map(b.flows.map(a=>[a.id,a])),d=new Map(b.models.map(a=>[a.id,a])),e=new Map(b.mcpServers.map(a=>[a.name,a])),g=new Map(b.plannedExecutions.map(a=>[a.id,a])),h=new Set,i=new Set(a.modelIds??[]),j=new Set(a.mcpServerNames??[]),k=new Set(a.plannedExecutionIds??[]),l=[],m=[],n=new Set(a.flowIds??[]),o=new Set(a.modelIds??[]),p=new Set(a.mcpServerNames??[]);for(let a of k){let b=g.get(a);if(!b){m.push(`Planned execution "${a}" was not found and will be skipped.`);continue}!b.flowId||n.has(b.flowId)||h.has(b.flowId)||l.push({type:"flow",id:b.flowId,reason:`used by planned execution "${b.name}"`}),b.flowId&&n.add(b.flowId)}let q=new Set,r=Array.from(n);for(;r.length>0;){let a=r.shift();if(q.has(a))continue;q.add(a);let b=c.get(a);if(!b){m.push(`Referenced flow "${a}" was not found and will be skipped.`);continue}h.add(a);let g=(0,f.Xw)(b);for(let d of g.flowIds??[])q.has(d)||r.push(d),!n.has(d)&&d!==a&&(c.has(d)?l.some(a=>"flow"===a.type&&a.id===d)||l.push({type:"flow",id:d,reason:`subflow of "${b.name}"`}):m.push(`Flow "${b.name}" references missing subflow "${d}".`));for(let a of g.modelIds??[]){if(!d.has(a)){m.push(`Flow "${b.name}" references missing model "${a}".`);continue}!i.has(a)&&(i.add(a),o.has(a)||l.push({type:"model",id:a,reason:`used by flow "${b.name}"`}))}for(let a of g.mcpServerNames??[]){if(!e.has(a)){m.push(`Flow "${b.name}" references missing MCP server "${a}".`);continue}!j.has(a)&&(j.add(a),p.has(a)||l.push({type:"mcpServer",id:a,reason:`used by flow "${b.name}"`}))}}return{flowIds:Array.from(h),modelIds:Array.from(i),mcpServerNames:Array.from(j),plannedExecutionIds:Array.from(k),autoAdded:l,warnings:m}}(a,b),entities:b}}async function Q(a,b,c=[],d=[],g=[]){D.info(`Building package "${b.name}" v${b.version}`);let{resolved:h,entities:j}=await P(a);return function(a,b,c,d=[],g=[],h=[]){let j=[],k=[...a.warnings],l=new Map(b.flows.map(a=>[a.id,a])),m=new Map(b.models.map(a=>[a.id,a])),n=new Map(b.plannedExecutions.map(a=>[a.id,a])),o=I(a.mcpServerNames,b.mcpServers);j.push(...o.errors);let p=new Set(h),q=[],r=new Set,s=a=>{a&&!r.has(a.name)&&(r.add(a.name),q.push(a))},t=a.modelIds.map(a=>m.get(a)).filter(a=>!!a),u=a.flowIds.map(a=>l.get(a)).filter(a=>!!a),v=a.plannedExecutionIds.map(a=>n.get(a)).filter(a=>!!a),w=t,x=u,z=v;if(d.length>0){let a=function(a,b){let c=[],d=b.filter(a=>!!a.excerpt&&(!!e.IE.test(a.secretName)||(c.push(`Skipped substitution with invalid secret name "${a.secretName}".`),!1))).sort((a,b)=>b.excerpt.length-a.excerpt.length),f=a=>{let b=a;for(let a of d)b.includes(a.excerpt)&&(b=b.split(a.excerpt).join(`{{secret.${a.secretName}}}`));return b},g={flows:a.flows.map(a=>B(a,f)),models:a.models.map(a=>B(a,f)),plannedExecutions:a.plannedExecutions.map(a=>B(a,f))},h=[],i=new Set;for(let a of d)i.has(a.secretName)||(i.add(a.secretName),h.push({name:a.secretName,description:a.description?f(a.description):`Derived secret ${a.secretName}`,required:!0}));return{entities:g,secrets:h,warnings:c}}({flows:x,models:t,plannedExecutions:v},d);for(let b of(w=a.entities.models,x=a.entities.flows,z=a.entities.plannedExecutions,k.push(...a.warnings),a.secrets))s(b)}let A=w.map(a=>{var b;let{ref:c,secret:d}=(b=K(a),b.secret&&p.has(b.secret.name)?{ref:{kind:"none"}}:b);return s(d),{model:a,apiKeyRef:c}});for(let a of L(o.packaged))s(a);for(let a of o.packaged)for(let b of[...a.envDeclarations,...a.headerDeclarations??[]])b.secretRef&&p.has(b.secretRef)&&delete b.secretRef;let C=M(x,w,z),D=new Set(C.map(a=>a.name));for(let a=q.length-1;a>=0;a-=1)p.has(q[a].name)&&!D.has(q[a].name)&&(r.delete(q[a].name),q.splice(a,1));for(let a of C)s(a);let E=new Set;for(let{apiKeyRef:a}of A)"global"===a.kind&&E.add(a.var);for(let a of o.packaged){for(let b of[...a.envDeclarations,...a.headerDeclarations??[]])b.globalVar&&E.add(b.globalVar),b.globalTemplate&&F(b.globalTemplate,E);for(let b of a.argTemplates??[])F(b.value,E)}let H=function(a,b){let c=new Map(b.map(a=>[a.name,a]));return a.map(a=>{let b=c.get(a.name);return b?{...a,description:b.description?.trim()||a.description,required:!1!==b.required,isSecret:!0===b.isSecret}:a})}(G(a,b),g);if(j.length>0)return{ok:!1,resolved:a,errors:j,warnings:k};try{let{json:b,package:e}=(0,f.Zp)({id:c.id,name:c.name,version:c.version,description:c.description,author:c.author,publisher:c.publisher,tags:c.tags,...E.size>0?{requiredGlobals:Array.from(E)}:{},...H.length>0?{globals:H}:{},secrets:q,models:A,mcpServers:o.packaged,flows:x,plannedExecutions:z}),g=(0,f.$j)(e);return g.warnings?.length&&k.push(...g.warnings),d.length>0&&k.push(...function(a,b={}){return y(i(a),b).map(a=>`Possible secret left in package at ${a.location}: "${a.excerpt}" (${a.kind}).`)}({flows:x,models:w,plannedExecutions:z})),{ok:!0,json:b,package:e,resolved:a,errors:j,warnings:k}}catch(b){return j.push(b instanceof Error?b.message:String(b)),{ok:!1,resolved:a,errors:j,warnings:k}}}(h,j,b,c.filter(a=>a.excerpt&&a.suggestedSecretName).map(a=>({excerpt:a.excerpt,secretName:a.suggestedSecretName,description:a.suggestedDescription})),d,g)}function R(a,b){let c=new Set(a.flowIds),d=new Set(a.modelIds),e=new Set(a.plannedExecutionIds);return{flows:b.flows.filter(a=>c.has(a.id)),models:b.models.filter(a=>d.has(a.id)),plannedExecutions:b.plannedExecutions.filter(a=>e.has(a.id))}}async function S(a,b={}){let{resolved:d,entities:e}=await P(a),f=R(d,e),g={entropyThreshold:b.entropyThreshold,enableEntropy:b.enableEntropy,enableRepoSlug:b.enableRepoSlug};if(b.modelIdentifier){let{modelService:a}=await Promise.all([c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(6793)]).then(c.bind(c,20433));g.model={modelIdentifier:b.modelIdentifier,completion:async b=>await a.generateChatCompletion({modelIdentifier:b.modelIdentifier,messages:b.messages,temperature:b.temperature})}}return A(f,g)}async function T(a){let{resolved:b,entities:c}=await P(a),d=i(R(b,c)),e=new Set,f=[];for(let a of d){if(e.has(a.text))continue;e.add(a.text);let b=a.location.split(":")[0]||"other";f.push({source:b,location:a.location,text:a.text})}return f.sort((a,b)=>b.text.length-a.text.length),f}},51669:(a,b)=>{function c(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
2
  Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},68633:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{decryptActionBoundArgs:function(){return s},encryptActionBoundArgs:function(){return r}}),c(77925);let d=c(97954),e=c(27825),f=c(47686),g=c(77533),h=c(63033),i=c(26906),j=function(a){return a&&a.__esModule?a:{default:a}}(c(74515)),k=new TextEncoder,l=new TextDecoder,m=void 0,n=void 0;async function o(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=atob(b),e=d.slice(0,16),f=d.slice(16),h=l.decode(await (0,g.decrypt)(c,(0,g.stringToUint8Array)(e),(0,g.stringToUint8Array)(f)));if(!h.startsWith(a))throw Object.defineProperty(Error("Invalid Server Action payload: failed to decrypt."),"__NEXT_ERROR_CODE",{value:"E191",enumerable:!1,configurable:!0});return h.slice(a.length)}async function p(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=new Uint8Array(16);h.workUnitAsyncStorage.exit(()=>crypto.getRandomValues(d));let e=(0,g.arrayBufferToString)(d.buffer),f=await (0,g.encrypt)(c,d,k.encode(a+b));return btoa(e+(0,g.arrayBufferToString)(f))}var q=function(a){return a[a.Ready=0]="Ready",a[a.Pending=1]="Pending",a[a.Complete=2]="Complete",a}(q||{});let r=j.default.cache(async function a(b,...c){let e=h.workUnitAsyncStorage.getStore(),j=e?(0,h.getCacheSignal)(e):void 0,{clientModules:k}=(0,g.getClientReferenceManifestForRsc)(),l=Error();Error.captureStackTrace(l,a);let n=!1,o=e?(0,i.createHangingInputAbortSignal)(e):void 0,q=0;function r(){0===q&&(q=1,null==j||j.beginRead())}function s(){1===q&&(null==j||j.endRead()),q=2}o&&j&&o.addEventListener("abort",r,{once:!0});let t=await (0,f.streamToString)((0,d.renderToReadableStream)(c,k,{filterStackFrame:m,signal:o,onError(a){(null==o||!o.aborted)&&(n||(n=!0,l.message=a instanceof Error?a.message:String(a)))}}),o);if(n)throw s(),l;if(!e)return p(b,t);r();let u=(0,h.getPrerenderResumeDataCache)(e),v=(0,h.getRenderResumeDataCache)(e),w=b+t,x=(null==u?void 0:u.encryptedBoundArgs.get(w))??(null==v?void 0:v.encryptedBoundArgs.get(w));if(x)return x;let y=await p(b,t);return s(),null==u||u.encryptedBoundArgs.set(w,y),y});async function s(a,b){let c,d=await b,f=h.workUnitAsyncStorage.getStore();if(f){let b=(0,h.getCacheSignal)(f),e=(0,h.getPrerenderResumeDataCache)(f),g=(0,h.getRenderResumeDataCache)(f);(c=(null==e?void 0:e.decryptedBoundArgs.get(d))??(null==g?void 0:g.decryptedBoundArgs.get(d)))||(null==b||b.beginRead(),c=await o(a,d),null==b||b.endRead(),null==e||e.decryptedBoundArgs.set(d,c))}else c=await o(a,d);let{edgeRscModuleMapping:i,rscModuleMapping:j}=(0,g.getClientReferenceManifestForRsc)();return await (0,e.createFromReadableStream)(new ReadableStream({start(a){switch(a.enqueue(k.encode(c)),null==f?void 0:f.type){case"prerender":case"prerender-runtime":f.renderSignal.aborted?a.close():f.renderSignal.addEventListener("abort",()=>a.close(),{once:!0});break;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case void 0:return a.close()}}}),{findSourceMapURL:n,serverConsumerManifest:{moduleLoading:null,moduleMap:j,serverModuleMap:(0,g.getServerModuleMap)()}})}},75879:(a,b,c)=>{Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)}};
@@ -1 +1 @@
1
- "use strict";exports.id=8739,exports.ids=[8739],exports.modules={58739:(a,b,c)=>{c.r(b),c.d(b,{EncryptionLockedError:()=>o,authenticate:()=>H,changeEncryptionPassword:()=>C,decryptWithPassword:()=>F,encryptWithPassword:()=>E,getEncryptionType:()=>M,initializeDefaultEncryption:()=>x,initializeEncryption:()=>y,isEncryptionInitialized:()=>J,isEncryptionLocked:()=>L,isUserEncryptionEnabled:()=>K,logout:()=>I,migrateToUserEncryption:()=>B,verifyPassword:()=>G});var d=c(58862),e=c.n(d),f=c(92372),g=c(38844),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})}function w(a){let b;try{b=a.toString(e().enc.Utf8)}catch{return null}return RegExp("^[0-9a-f]{16}$").test(b)?b:null}async function x(){n.debug("initializeDefaultEncryption: Entering method");try{if(await J())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 y(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 B(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 z(){n.debug("getDefaultDEK: Entering method");try{let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!a){if(!await x())return n.error("getDefaultDEK: Failed to initialize default encryption"),null;return await z()}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(!w(h))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 A(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(!w(j))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 B(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 z();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 C(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 B(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(!w(k))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 D(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 x())return n.error("getDEK: Failed to initialize default encryption"),null;return await D(a,b)}if("user"!==c[t])return await z();{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 A(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 x())return await z()}catch(a){n.error("getDEK: Failed to initialize default encryption as error recovery:",a)}return null}}async function E(a,b,c=!1){n.debug("encryptWithPassword: Entering method");try{let d=await D(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 F(a,b,c=!1){n.debug("decryptWithPassword: Entering method");try{let d=await D(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 G(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 A(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 H(a){n.debug("authenticate: Entering method");let b=await G(a);return b.valid&&b.token||null}async function I(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 J(){return n.debug("isEncryptionInitialized: Entering method"),null!==await (0,f.YM)(g.Z.ENCRYPTION_KEY,null)}async function K(){n.debug("isUserEncryptionEnabled: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return null!=a&&"user"===a[t]}async function L(){return await K()&&!global.__flujo_server_dek}async function M(){n.debug("getEncryptionType: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return a?a[t]||"default":null}}};
1
+ "use strict";exports.id=8739,exports.ids=[8739],exports.modules={58739:(a,b,c)=>{c.r(b),c.d(b,{EncryptionLockedError:()=>o,authenticate:()=>H,changeEncryptionPassword:()=>C,decryptWithPassword:()=>F,encryptWithPassword:()=>E,getEncryptionType:()=>M,initializeDefaultEncryption:()=>x,initializeEncryption:()=>y,isEncryptionInitialized:()=>J,isEncryptionLocked:()=>L,isUserEncryptionEnabled:()=>K,logout:()=>I,migrateToUserEncryption:()=>B,verifyPassword:()=>G});var d=c(58862),e=c.n(d),f=c(92372),g=c(38844),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})}function w(a){let b;try{b=a.toString(e().enc.Utf8)}catch{return null}return RegExp("^[0-9a-f]{16}$").test(b)?b:null}async function x(){n.debug("initializeDefaultEncryption: Entering method");try{if(await J())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 y(a){n.debug("initializeEncryption: Entering method");try{let b=await (0,f.loadItem)(g.Z.ENCRYPTION_KEY,null);if(b&&"default"===b[t])return await B(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 z(){n.debug("getDefaultDEK: Entering method");try{let a=await (0,f.loadItem)(g.Z.ENCRYPTION_KEY,null);if(!a){if(!await x())return n.error("getDefaultDEK: Failed to initialize default encryption"),null;return await z()}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(!w(h))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 A(a){n.debug("getUserDEK: Entering method");try{let b=await (0,f.loadItem)(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(!w(j))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 B(a){n.debug("migrateToUserEncryption: Entering method");try{let b=await (0,f.loadItem)(g.Z.ENCRYPTION_KEY,null);if(b&&"user"===b[t])return!0;let c=await z();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 C(a,b){n.debug("changeEncryptionPassword: Entering method");try{let c=await (0,f.loadItem)(g.Z.ENCRYPTION_KEY,null);if(!c)return n.error("changeEncryptionPassword: No encryption metadata found"),!1;if("default"===c[t])return await B(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(!w(k))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 D(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.loadItem)(g.Z.ENCRYPTION_KEY,null);if(!c){if(n.info("getDEK: No encryption metadata found, initializing default encryption"),!await x())return n.error("getDEK: Failed to initialize default encryption"),null;return await D(a,b)}if("user"!==c[t])return await z();{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 A(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 x())return await z()}catch(a){n.error("getDEK: Failed to initialize default encryption as error recovery:",a)}return null}}async function E(a,b,c=!1){n.debug("encryptWithPassword: Entering method");try{let d=await D(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 F(a,b,c=!1){n.debug("decryptWithPassword: Entering method");try{let d=await D(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 G(a){n.debug("verifyPassword: Entering method");let b=await (0,f.loadItem)(g.Z.ENCRYPTION_KEY,null);if(!b||"user"!==b[t])return{valid:!1};{let b=await A(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 H(a){n.debug("authenticate: Entering method");let b=await G(a);return b.valid&&b.token||null}async function I(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 J(){return n.debug("isEncryptionInitialized: Entering method"),null!==await (0,f.loadItem)(g.Z.ENCRYPTION_KEY,null)}async function K(){n.debug("isUserEncryptionEnabled: Entering method");let a=await (0,f.loadItem)(g.Z.ENCRYPTION_KEY,null);return null!=a&&"user"===a[t]}async function L(){return await K()&&!global.__flujo_server_dek}async function M(){n.debug("getEncryptionType: Entering method");let a=await (0,f.loadItem)(g.Z.ENCRYPTION_KEY,null);return a?a[t]||"default":null}}};
@@ -1,2 +1,2 @@
1
1
  "use strict";exports.id=9085,exports.ids=[1925,3629,4306,6793,9085,9174],exports.modules={1925:(a,b,c)=>{c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()},51669:(a,b)=>{function c(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},56793:(a,b,c)=>{c.d(b,{eh:()=>g,ru:()=>e});let d=(0,c(50846).h)("backend/services/scheduler/flowRunEventBus");function e(a){return"signal"===a.kind}class f{publish(a){if(0===this.listeners.size)return;let b=e(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(d.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){d.warn("A flow-run event listener threw:",a)}}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function g(){return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new f),global.__flujo_flow_run_event_bus}},68633:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{decryptActionBoundArgs:function(){return s},encryptActionBoundArgs:function(){return r}}),c(77925);let d=c(97954),e=c(27825),f=c(47686),g=c(77533),h=c(63033),i=c(26906),j=function(a){return a&&a.__esModule?a:{default:a}}(c(74515)),k=new TextEncoder,l=new TextDecoder,m=void 0,n=void 0;async function o(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=atob(b),e=d.slice(0,16),f=d.slice(16),h=l.decode(await (0,g.decrypt)(c,(0,g.stringToUint8Array)(e),(0,g.stringToUint8Array)(f)));if(!h.startsWith(a))throw Object.defineProperty(Error("Invalid Server Action payload: failed to decrypt."),"__NEXT_ERROR_CODE",{value:"E191",enumerable:!1,configurable:!0});return h.slice(a.length)}async function p(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=new Uint8Array(16);h.workUnitAsyncStorage.exit(()=>crypto.getRandomValues(d));let e=(0,g.arrayBufferToString)(d.buffer),f=await (0,g.encrypt)(c,d,k.encode(a+b));return btoa(e+(0,g.arrayBufferToString)(f))}var q=function(a){return a[a.Ready=0]="Ready",a[a.Pending=1]="Pending",a[a.Complete=2]="Complete",a}(q||{});let r=j.default.cache(async function a(b,...c){let e=h.workUnitAsyncStorage.getStore(),j=e?(0,h.getCacheSignal)(e):void 0,{clientModules:k}=(0,g.getClientReferenceManifestForRsc)(),l=Error();Error.captureStackTrace(l,a);let n=!1,o=e?(0,i.createHangingInputAbortSignal)(e):void 0,q=0;function r(){0===q&&(q=1,null==j||j.beginRead())}function s(){1===q&&(null==j||j.endRead()),q=2}o&&j&&o.addEventListener("abort",r,{once:!0});let t=await (0,f.streamToString)((0,d.renderToReadableStream)(c,k,{filterStackFrame:m,signal:o,onError(a){(null==o||!o.aborted)&&(n||(n=!0,l.message=a instanceof Error?a.message:String(a)))}}),o);if(n)throw s(),l;if(!e)return p(b,t);r();let u=(0,h.getPrerenderResumeDataCache)(e),v=(0,h.getRenderResumeDataCache)(e),w=b+t,x=(null==u?void 0:u.encryptedBoundArgs.get(w))??(null==v?void 0:v.encryptedBoundArgs.get(w));if(x)return x;let y=await p(b,t);return s(),null==u||u.encryptedBoundArgs.set(w,y),y});async function s(a,b){let c,d=await b,f=h.workUnitAsyncStorage.getStore();if(f){let b=(0,h.getCacheSignal)(f),e=(0,h.getPrerenderResumeDataCache)(f),g=(0,h.getRenderResumeDataCache)(f);(c=(null==e?void 0:e.decryptedBoundArgs.get(d))??(null==g?void 0:g.decryptedBoundArgs.get(d)))||(null==b||b.beginRead(),c=await o(a,d),null==b||b.endRead(),null==e||e.decryptedBoundArgs.set(d,c))}else c=await o(a,d);let{edgeRscModuleMapping:i,rscModuleMapping:j}=(0,g.getClientReferenceManifestForRsc)();return await (0,e.createFromReadableStream)(new ReadableStream({start(a){switch(a.enqueue(k.encode(c)),null==f?void 0:f.type){case"prerender":case"prerender-runtime":f.renderSignal.aborted?a.close():f.renderSignal.addEventListener("abort",()=>a.close(),{once:!0});break;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case void 0:return a.close()}}}),{findSourceMapURL:n,serverConsumerManifest:{moduleLoading:null,moduleMap:j,serverModuleMap:(0,g.getServerModuleMap)()}})}},73456:(a,b,c)=>{c.d(b,{G:()=>m,V:()=>l,resolveGlobalVars:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(38844),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a,b={}){j.debug("Entering resolveGlobalVars method");let c=!1!==b.resolveSecrets,d=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),e=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(d);j.debug(`Loaded ${Object.keys(d).length} global environment variables (${e?"new":"old"} format)`);let i={},l=new Set;if(e)for(let[a,b]of Object.entries(d))i[a]=b.value,b.metadata.isSecret&&l.add(a);else i={...d};let m=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let d=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==i[b]){let e=i[b];if(!c&&(l.has(b)||e.startsWith("encrypted:")||e.startsWith("encrypted_failed:"))){j.debug(`Keeping secret global variable unresolved: ${b}`);continue}if(e.startsWith("encrypted:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),d=d.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return d},n=async a=>{if("string"==typeof a)return await m(a);if(Array.isArray(a))return await Promise.all(a.map(a=>n(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await n(d);return b}return a},o=await n(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(o,null,2)),j.debug("Completed global variable resolution"),o}async function l(a){return k(a,{resolveSecrets:!1})}async function m(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),m(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l,m]),(0,d.A)(k,"605caa1e030009a4bc7e820854ff481d3e0295325d",null),(0,d.A)(l,"4003ce37366709f5add0c98a6e32e47a1006fd7c7d",null),(0,d.A)(m,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987",null)},75879:(a,b,c)=>{Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},91959:(a,b,c)=>{c.r(b),c.d(b,{"4003ce37366709f5add0c98a6e32e47a1006fd7c7d":()=>d.V,"605caa1e030009a4bc7e820854ff481d3e0295325d":()=>d.resolveGlobalVars,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987":()=>d.G});var d=c(73456)},92675:(a,b,c)=>{c.d(b,{De:()=>m,E1:()=>j,Zl:()=>i,bZ:()=>k,xI:()=>l});var d=c(50846),e=c(49680),f=c(20433);let g=(0,d.h)("app/api/model/model-adapter");function h(a){let b={...a};return b.ApiKey&&!b.ApiKey.startsWith("${global:")&&(b.ApiKey=e.RJ),b}async function i(){g.debug("loadModels: Delegating to backend service");let a=await f.modelService.listModels();return a.success&&a.models&&(a.models=a.models.map(h)),a}async function j(a){g.debug(`getModel: Delegating to backend service for model ID: ${a}`);try{let b=await f.modelService.getModel(a);if(!b)return{success:!1,error:`Model not found: ${a}`};return{success:!0,model:h(b)}}catch(b){return g.error(`getModel: Error getting model ${a}:`,b),{success:!1,error:b instanceof Error?b.message:"Failed to get model"}}}async function k(a){g.debug("addModel: Delegating to backend service");let b=await f.modelService.addModel(a);return b.success&&b.model&&(b.model=h(b.model)),b}async function l(a){g.debug("updateModel: Delegating to backend service");let b=await f.modelService.updateModel(a);return b.success&&b.model&&(b.model=h(b.model)),b}async function m(a){return g.debug("deleteModel: Delegating to backend service"),f.modelService.deleteModel(a)}}};
2
+ Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},56793:(a,b,c)=>{c.d(b,{eh:()=>g,ru:()=>e});let d=(0,c(50846).h)("backend/services/scheduler/flowRunEventBus");function e(a){return"signal"===a.kind}class f{publish(a){if(0===this.listeners.size)return;let b=e(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(d.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){d.warn("A flow-run event listener threw:",a)}}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function g(){return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new f),global.__flujo_flow_run_event_bus}},68633:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{decryptActionBoundArgs:function(){return s},encryptActionBoundArgs:function(){return r}}),c(77925);let d=c(97954),e=c(27825),f=c(47686),g=c(77533),h=c(63033),i=c(26906),j=function(a){return a&&a.__esModule?a:{default:a}}(c(74515)),k=new TextEncoder,l=new TextDecoder,m=void 0,n=void 0;async function o(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=atob(b),e=d.slice(0,16),f=d.slice(16),h=l.decode(await (0,g.decrypt)(c,(0,g.stringToUint8Array)(e),(0,g.stringToUint8Array)(f)));if(!h.startsWith(a))throw Object.defineProperty(Error("Invalid Server Action payload: failed to decrypt."),"__NEXT_ERROR_CODE",{value:"E191",enumerable:!1,configurable:!0});return h.slice(a.length)}async function p(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=new Uint8Array(16);h.workUnitAsyncStorage.exit(()=>crypto.getRandomValues(d));let e=(0,g.arrayBufferToString)(d.buffer),f=await (0,g.encrypt)(c,d,k.encode(a+b));return btoa(e+(0,g.arrayBufferToString)(f))}var q=function(a){return a[a.Ready=0]="Ready",a[a.Pending=1]="Pending",a[a.Complete=2]="Complete",a}(q||{});let r=j.default.cache(async function a(b,...c){let e=h.workUnitAsyncStorage.getStore(),j=e?(0,h.getCacheSignal)(e):void 0,{clientModules:k}=(0,g.getClientReferenceManifestForRsc)(),l=Error();Error.captureStackTrace(l,a);let n=!1,o=e?(0,i.createHangingInputAbortSignal)(e):void 0,q=0;function r(){0===q&&(q=1,null==j||j.beginRead())}function s(){1===q&&(null==j||j.endRead()),q=2}o&&j&&o.addEventListener("abort",r,{once:!0});let t=await (0,f.streamToString)((0,d.renderToReadableStream)(c,k,{filterStackFrame:m,signal:o,onError(a){(null==o||!o.aborted)&&(n||(n=!0,l.message=a instanceof Error?a.message:String(a)))}}),o);if(n)throw s(),l;if(!e)return p(b,t);r();let u=(0,h.getPrerenderResumeDataCache)(e),v=(0,h.getRenderResumeDataCache)(e),w=b+t,x=(null==u?void 0:u.encryptedBoundArgs.get(w))??(null==v?void 0:v.encryptedBoundArgs.get(w));if(x)return x;let y=await p(b,t);return s(),null==u||u.encryptedBoundArgs.set(w,y),y});async function s(a,b){let c,d=await b,f=h.workUnitAsyncStorage.getStore();if(f){let b=(0,h.getCacheSignal)(f),e=(0,h.getPrerenderResumeDataCache)(f),g=(0,h.getRenderResumeDataCache)(f);(c=(null==e?void 0:e.decryptedBoundArgs.get(d))??(null==g?void 0:g.decryptedBoundArgs.get(d)))||(null==b||b.beginRead(),c=await o(a,d),null==b||b.endRead(),null==e||e.decryptedBoundArgs.set(d,c))}else c=await o(a,d);let{edgeRscModuleMapping:i,rscModuleMapping:j}=(0,g.getClientReferenceManifestForRsc)();return await (0,e.createFromReadableStream)(new ReadableStream({start(a){switch(a.enqueue(k.encode(c)),null==f?void 0:f.type){case"prerender":case"prerender-runtime":f.renderSignal.aborted?a.close():f.renderSignal.addEventListener("abort",()=>a.close(),{once:!0});break;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case void 0:return a.close()}}}),{findSourceMapURL:n,serverConsumerManifest:{moduleLoading:null,moduleMap:j,serverModuleMap:(0,g.getServerModuleMap)()}})}},73456:(a,b,c)=>{c.d(b,{G:()=>m,V:()=>l,resolveGlobalVars:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(38844),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a,b={}){j.debug("Entering resolveGlobalVars method");let c=!1!==b.resolveSecrets,d=await (0,f.loadItem)(g.Z.GLOBAL_ENV_VARS,{}),e=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(d);j.debug(`Loaded ${Object.keys(d).length} global environment variables (${e?"new":"old"} format)`);let i={},l=new Set;if(e)for(let[a,b]of Object.entries(d))i[a]=b.value,b.metadata.isSecret&&l.add(a);else i={...d};let m=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let d=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==i[b]){let e=i[b];if(!c&&(l.has(b)||e.startsWith("encrypted:")||e.startsWith("encrypted_failed:"))){j.debug(`Keeping secret global variable unresolved: ${b}`);continue}if(e.startsWith("encrypted:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),d=d.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return d},n=async a=>{if("string"==typeof a)return await m(a);if(Array.isArray(a))return await Promise.all(a.map(a=>n(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await n(d);return b}return a},o=await n(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(o,null,2)),j.debug("Completed global variable resolution"),o}async function l(a){return k(a,{resolveSecrets:!1})}async function m(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),m(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l,m]),(0,d.A)(k,"605caa1e030009a4bc7e820854ff481d3e0295325d",null),(0,d.A)(l,"4003ce37366709f5add0c98a6e32e47a1006fd7c7d",null),(0,d.A)(m,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987",null)},75879:(a,b,c)=>{Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},91959:(a,b,c)=>{c.r(b),c.d(b,{"4003ce37366709f5add0c98a6e32e47a1006fd7c7d":()=>d.V,"605caa1e030009a4bc7e820854ff481d3e0295325d":()=>d.resolveGlobalVars,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987":()=>d.G});var d=c(73456)},92675:(a,b,c)=>{c.d(b,{De:()=>m,E1:()=>j,Zl:()=>i,bZ:()=>k,xI:()=>l});var d=c(50846),e=c(49680),f=c(20433);let g=(0,d.h)("app/api/model/model-adapter");function h(a){let b={...a};return b.ApiKey&&!b.ApiKey.startsWith("${global:")&&(b.ApiKey=e.RJ),b}async function i(){g.debug("loadModels: Delegating to backend service");let a=await f.modelService.listModels();return a.success&&a.models&&(a.models=a.models.map(h)),a}async function j(a){g.debug(`getModel: Delegating to backend service for model ID: ${a}`);try{let b=await f.modelService.getModel(a);if(!b)return{success:!1,error:`Model not found: ${a}`};return{success:!0,model:h(b)}}catch(b){return g.error(`getModel: Error getting model ${a}:`,b),{success:!1,error:b instanceof Error?b.message:"Failed to get model"}}}async function k(a){g.debug("addModel: Delegating to backend service");let b=await f.modelService.addModel(a);return b.success&&b.model&&(b.model=h(b.model)),b}async function l(a){g.debug("updateModel: Delegating to backend service");let b=await f.modelService.updateModel(a);return b.success&&b.model&&(b.model=h(b.model)),b}async function m(a){return g.debug("deleteModel: Delegating to backend service"),f.modelService.deleteModel(a)}}};
@@ -1,8 +1,29 @@
1
- exports.id=9235,exports.ids=[1925,3629,4306,6793,9174,9235],exports.modules={1925:(a,b,c)=>{"use strict";c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()},8491:(a,b,c)=>{"use strict";c.d(b,{Cc:()=>l,HQ:()=>k,V2:()=>j});var d=c(81226),e=c(87821);let f="system-flow-generator",g="flow-generator",h=`You are FLUJO's guided Flow Generator.
1
+ exports.id=9235,exports.ids=[1925,3629,4306,6793,9174,9235],exports.modules={1925:(a,b,c)=>{"use strict";c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()},8491:(a,b,c)=>{"use strict";c.d(b,{Cc:()=>r,HQ:()=>q,V2:()=>p});var d=c(81226),e=c(87821),f=c(97630);let g="system-flow-generator",h="flow-generator",i=["list_flow_building_blocks","get_flow_authoring_guide","draft_generated_flow","search_mcp_marketplace"],j=["install_mcp_server","install_best_mcp_server"],k=[...i,...j],l=`You are the experimental, completely Flow-based FLUJO Flow Generator.
2
2
 
3
- Help the user design a workflow through a short conversation. Ask only for missing information that materially changes the design: the goal, required output, or external capability. Ask at most one concise question at a time.
3
+ Every user turn is an instruction to CREATE or REVISE an unsaved Flow draft. You must produce a draft on every turn. Never stop at advice, a design discussion, a promise to build later, or a clarifying question. When details are missing, make sensible reversible assumptions and continue.
4
4
 
5
- Before drafting, call list_flow_building_blocks so every model, tool, and existing-flow reference is real. Use the default simple authoring profile. Do not ask the user about input modes, output modes, resources, variables, KV, fan-out, concurrency, prompt exclusions, or graph wiring; the compiler owns those defaults.
5
+ This Flow is the editable expression of the production generator:
6
+ 1. Flow Architect performs the production generator's model-driven authoring and capability-discovery stage.
7
+ 2. Generation Compiler invokes the SAME deterministic hardening pipeline used by the production generator.
6
8
 
7
- When the request is sufficiently clear, call draft_flow with a SimpleFlowSpec. Never call create_flow: the user must review the unsaved draft in the builder. After draft_flow returns, briefly summarize the proposed steps and invite the user to open the draft or request a revision. For a revision, call draft_flow again with a complete replacement SimpleFlowSpec.`;function i(){let a=(0,d.dM)({name:"Flow_Generator",description:"Editable guided flow used by the Generate Flow chat. FLUJO seeds it once and never overwrites your changes.",nodes:[{key:"start",type:"start",label:"Start",prompt:h},{key:"designer",type:"process",label:"Flow Designer",description:"Clarifies the request and proposes an unsaved guided draft.",maxTurns:16,inputMode:"full-history",outputMode:"latest-message",servers:[{name:"flujo",tools:["list_flow_building_blocks","get_flow_authoring_guide","draft_flow"]}]},{key:"finish",type:"finish",label:"Finish"}],edges:[{from:"start",to:"designer"},{from:"designer",to:"finish"}]},{servers:[{name:"flujo"}],serverTools:{flujo:["list_flow_building_blocks","get_flow_authoring_guide","draft_flow"]}});if(!a.flow)throw Error("Bundled Flow Generator could not be compiled");a.flow.id=f,a.flow.name="Flow Generator",a.flow.folder="System",a.flow.permissionRules=[{action:"list_flow_building_blocks",resource:"*",effect:"allow"},{action:"get_flow_authoring_guide",resource:"*",effect:"allow"},{action:"draft_flow",resource:"*",effect:"allow"}];let b=a.flow.nodes.find(a=>"process"===a.type);if(!b)throw Error("Bundled Flow Generator has no designer process");return b.data.properties={...b.data.properties??{},systemRole:g,systemFlowVersion:1},a.flow}async function j(){let a=await e.flowService.getFlow(f);if(a)return a;let b=i(),c=await e.flowService.saveFlow(b);if(!c.success)throw Error(c.error??"Failed to seed the Flow Generator");return b}async function k(){let a=i(),b=await e.flowService.saveFlow(a);if(!b.success)throw Error(b.error??"Failed to restore the Flow Generator");return a}async function l(a,b){let c=JSON.parse(JSON.stringify(await j()));c.id=`quickchat-flow-generator-${a}`,c.name="Flow Generator Session",delete c.createdAt,delete c.updatedAt;let d=c.nodes.find(a=>"process"===a.type&&a.data?.properties?.systemRole===g);if(!d)throw Error("The editable Flow Generator has no process marked as the flow-generator role. Restore the default generator or add that role back.");return d.data.properties={...d.data.properties??{},boundModel:b},c}},51669:(a,b)=>{"use strict";function c(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
8
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},53119:(a,b,c)=>{"use strict";c.d(b,{x:()=>k,m:()=>l});let d=["https://registry.modelcontextprotocol.io/?q=ai.keenable%2Fweb-search","https://registry.modelcontextprotocol.io/v0.1/servers/io.github.mario-andreschak%2Fmcp-abap-adt/versions",{url:"https://registry.modelcontextprotocol.io/v0.1/servers/io.github.microsoft%2Fplaywright-mcp/versions",env:{PLAYWRIGHT_MCP_BROWSER:"msedge"}}];function e(a){return"string"==typeof a?{url:a}:a}var f=c(38844),g=c(92372),h=c(25250),i=c(8665);let j=(0,c(50846).h)("backend/services/spotlight");async function k(){return(0,g.YM)(f.Z.SPOTLIGHT_SERVERS,null)}function l(){return global.__flujo_spotlight_refresh||(global.__flujo_spotlight_refresh=m().finally(()=>{global.__flujo_spotlight_refresh=void 0})),global.__flujo_spotlight_refresh}async function m(){let a=d.map(e);j.info(`Refreshing spotlight servers (${a.length} entries)`);let b=[];for(let c of a){let{url:a,env:d}=c,e=(0,h.XQ)(a);if(!e){j.warn(`Unrecognized spotlight URL format: ${a}`),b.push({url:a,env:d,error:"Unrecognized spotlight URL format"});continue}try{let c=await (0,i.Ws)(new URL(i.jD+e),15e3),f=(0,h.zz)(c);f?b.push({url:a,env:d,result:f}):(j.warn(`Spotlight URL resolved to no server: ${a}`),b.push({url:a,env:d,error:"No matching server found in the registry"}))}catch(e){let c=e instanceof Error?e.message:"Unknown error";j.warn(`Failed to resolve spotlight URL ${a}: ${c}`),b.push({url:a,env:d,error:c})}await new Promise(a=>setTimeout(a,250))}let c={updatedAt:new Date().toISOString(),entries:b},l=await k();if(l){for(let a of c.entries)if(!a.result){let b=l.entries.find(b=>b.url===a.url&&b.result);b?.result&&(a.result=b.result)}}await (0,g.VH)(f.Z.SPOTLIGHT_SERVERS,c);let m=c.entries.filter(a=>a.result).length;return j.info(`Spotlight refresh complete: ${m}/${c.entries.length} entries resolved`),c}},56793:(a,b,c)=>{"use strict";c.d(b,{eh:()=>g,ru:()=>e});let d=(0,c(50846).h)("backend/services/scheduler/flowRunEventBus");function e(a){return"signal"===a.kind}class f{publish(a){if(0===this.listeners.size)return;let b=e(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(d.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){d.warn("A flow-run event listener threw:",a)}}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function g(){return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new f),global.__flujo_flow_run_event_bus}},68633:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{decryptActionBoundArgs:function(){return s},encryptActionBoundArgs:function(){return r}}),c(77925);let d=c(97954),e=c(27825),f=c(47686),g=c(77533),h=c(63033),i=c(26906),j=function(a){return a&&a.__esModule?a:{default:a}}(c(74515)),k=new TextEncoder,l=new TextDecoder,m=void 0,n=void 0;async function o(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=atob(b),e=d.slice(0,16),f=d.slice(16),h=l.decode(await (0,g.decrypt)(c,(0,g.stringToUint8Array)(e),(0,g.stringToUint8Array)(f)));if(!h.startsWith(a))throw Object.defineProperty(Error("Invalid Server Action payload: failed to decrypt."),"__NEXT_ERROR_CODE",{value:"E191",enumerable:!1,configurable:!0});return h.slice(a.length)}async function p(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=new Uint8Array(16);h.workUnitAsyncStorage.exit(()=>crypto.getRandomValues(d));let e=(0,g.arrayBufferToString)(d.buffer),f=await (0,g.encrypt)(c,d,k.encode(a+b));return btoa(e+(0,g.arrayBufferToString)(f))}var q=function(a){return a[a.Ready=0]="Ready",a[a.Pending=1]="Pending",a[a.Complete=2]="Complete",a}(q||{});let r=j.default.cache(async function a(b,...c){let e=h.workUnitAsyncStorage.getStore(),j=e?(0,h.getCacheSignal)(e):void 0,{clientModules:k}=(0,g.getClientReferenceManifestForRsc)(),l=Error();Error.captureStackTrace(l,a);let n=!1,o=e?(0,i.createHangingInputAbortSignal)(e):void 0,q=0;function r(){0===q&&(q=1,null==j||j.beginRead())}function s(){1===q&&(null==j||j.endRead()),q=2}o&&j&&o.addEventListener("abort",r,{once:!0});let t=await (0,f.streamToString)((0,d.renderToReadableStream)(c,k,{filterStackFrame:m,signal:o,onError(a){(null==o||!o.aborted)&&(n||(n=!0,l.message=a instanceof Error?a.message:String(a)))}}),o);if(n)throw s(),l;if(!e)return p(b,t);r();let u=(0,h.getPrerenderResumeDataCache)(e),v=(0,h.getRenderResumeDataCache)(e),w=b+t,x=(null==u?void 0:u.encryptedBoundArgs.get(w))??(null==v?void 0:v.encryptedBoundArgs.get(w));if(x)return x;let y=await p(b,t);return s(),null==u||u.encryptedBoundArgs.set(w,y),y});async function s(a,b){let c,d=await b,f=h.workUnitAsyncStorage.getStore();if(f){let b=(0,h.getCacheSignal)(f),e=(0,h.getPrerenderResumeDataCache)(f),g=(0,h.getRenderResumeDataCache)(f);(c=(null==e?void 0:e.decryptedBoundArgs.get(d))??(null==g?void 0:g.decryptedBoundArgs.get(d)))||(null==b||b.beginRead(),c=await o(a,d),null==b||b.endRead(),null==e||e.decryptedBoundArgs.set(d,c))}else c=await o(a,d);let{edgeRscModuleMapping:i,rscModuleMapping:j}=(0,g.getClientReferenceManifestForRsc)();return await (0,e.createFromReadableStream)(new ReadableStream({start(a){switch(a.enqueue(k.encode(c)),null==f?void 0:f.type){case"prerender":case"prerender-runtime":f.renderSignal.aborted?a.close():f.renderSignal.addEventListener("abort",()=>a.close(),{once:!0});break;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case void 0:return a.close()}}}),{findSourceMapURL:n,serverConsumerManifest:{moduleLoading:null,moduleMap:j,serverModuleMap:(0,g.getServerModuleMap)()}})}},72937:(a,b,c)=>{"use strict";c.d(b,{H:()=>n,t:()=>q});var d=c(73736),e=c(92372),f=c(60453),g=c(61539),h=c(53119),i=c(4771),j=c(58739),k=c(50846),l=c(8491);let m=(0,k.h)("backend/init");function n(){return global.__flujo_init_promise||(global.__flujo_init_promise=o().catch(a=>{throw global.__flujo_init_promise=void 0,a})),global.__flujo_init_promise}async function o(){if(await (0,e.Pv)(),await (0,l.V2)(),(0,h.m)().catch(a=>m.warn("Spotlight refresh failed at startup:",a)),await (0,j.isEncryptionLocked)())return void m.info("Encryption locked — deferring MCP/scheduler startup until unlock");await p()}function p(){return global.__flujo_secret_services_promise||(global.__flujo_secret_services_promise=(async()=>{m.info("Initializing MCP servers"),await f.mcpService.startEnabledServers().catch(a=>{m.error("Failed to start enabled servers:",a)}),await (0,i.getSchedulerService)().start().catch(a=>m.error("Failed to start scheduler:",a));try{global.__flujo_retention_cron||(global.__flujo_retention_cron=new d.l4("0 * * * *",{unref:!0},()=>{(0,g.wc)().catch(a=>m.warn("Run-resource retention sweep failed:",a))}),m.info("Armed run-resource retention sweep (hourly)"))}catch(a){m.error("Failed to arm run-resource retention sweep:",a)}})()),global.__flujo_secret_services_promise}async function q(){await (0,j.isUserEncryptionEnabled)()&&(m.info("Encryption unlocked — starting deferred MCP/scheduler startup"),await p())}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>m,V:()=>l,resolveGlobalVars:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(38844),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a,b={}){j.debug("Entering resolveGlobalVars method");let c=!1!==b.resolveSecrets,d=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),e=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(d);j.debug(`Loaded ${Object.keys(d).length} global environment variables (${e?"new":"old"} format)`);let i={},l=new Set;if(e)for(let[a,b]of Object.entries(d))i[a]=b.value,b.metadata.isSecret&&l.add(a);else i={...d};let m=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let d=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==i[b]){let e=i[b];if(!c&&(l.has(b)||e.startsWith("encrypted:")||e.startsWith("encrypted_failed:"))){j.debug(`Keeping secret global variable unresolved: ${b}`);continue}if(e.startsWith("encrypted:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),d=d.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return d},n=async a=>{if("string"==typeof a)return await m(a);if(Array.isArray(a))return await Promise.all(a.map(a=>n(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await n(d);return b}return a},o=await n(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(o,null,2)),j.debug("Completed global variable resolution"),o}async function l(a){return k(a,{resolveSecrets:!1})}async function m(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),m(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l,m]),(0,d.A)(k,"605caa1e030009a4bc7e820854ff481d3e0295325d",null),(0,d.A)(l,"4003ce37366709f5add0c98a6e32e47a1006fd7c7d",null),(0,d.A)(m,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987",null)},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},91959:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"4003ce37366709f5add0c98a6e32e47a1006fd7c7d":()=>d.V,"605caa1e030009a4bc7e820854ff481d3e0295325d":()=>d.resolveGlobalVars,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987":()=>d.G});var d=c(73456)},96487:()=>{}};
9
+ Prefer a small, clear root Flow, but create inline subflowSpec / parallelSubflowSpecs when a task has self-contained phases. New nested subflows are enabled by default, bounded to ${f.Jt} nesting levels and six generated flows total. Never call create_flow: the result must remain unsaved until the user opens it in the builder.
10
+
11
+ ${f.Mr}`,m=`You are the Flow Architect stage.
12
+
13
+ On EVERY visit:
14
+ 1. Call list_flow_building_blocks before authoring so every model, MCP server/tool, and existing-flow reference is real.
15
+ 2. Call get_flow_authoring_guide with profile "advanced".
16
+ 3. Read the newest user instruction. If the transcript already contains a prior draft_generated_flow call/result, treat this as a revision: start from its returned hardened "spec", preserve everything not requested to change, and emit a complete replacement specification.
17
+ 4. If a required external capability is missing, search the MCP marketplace. Install only when the run's MCP installation policy explicitly permits it and installation tools are actually available.
18
+ 5. Return ONLY one complete advanced FlowSpec JSON object as your final response—no prose or Markdown fences.
19
+
20
+ Use inline subflowSpec / parallelSubflowSpecs for newly-created subflows. Do not emit generateSubflow because the deterministic compiler cannot expand it. Do not merely explain what you would build.`,n=`You are the Generation Compiler and repair stage.
21
+
22
+ Find the newest complete advanced FlowSpec JSON produced by the Flow Architect. Call draft_generated_flow with that complete specification. This tool is not a generic compiler: it executes the exact deterministic post-model pipeline shared with FLUJO's production generator—scratchpad guard, forgiving structural repair, bounded nested compilation, generated input/output defaults, and whole-bundle validation.
23
+
24
+ If the first result contains validation errors, repair the COMPLETE returned spec using its issues and call draft_generated_flow one more time, matching the production generator's default single repair round. Never call create_flow or substitute generic draft_flow. Never finish with only prose, a promise, or JSON that was not submitted to draft_generated_flow.
25
+
26
+ After a usable draft_generated_flow result exists, respond with only a short factual summary. The tool result—not your prose—is the authoritative unsaved draft returned to the UI.`;function o(){let a=(0,d.dM)({name:"Flow_Generator",description:"Experimental editable multi-stage Flow Generator: architecture, capability discovery, validation, repair, and unsaved drafting.",nodes:[{key:"start",type:"start",label:"Start",prompt:l},{key:"architect",type:"process",label:"Flow Architect",description:"Inventories real building blocks and authors a complete advanced FlowSpec.",prompt:m,maxTurns:12,inputMode:"full-history",outputMode:"latest-message",servers:[{name:"flujo",tools:["list_flow_building_blocks","get_flow_authoring_guide","search_mcp_marketplace",...j]}]},{key:"compiler",type:"process",label:"Generation Compiler",description:"Runs the production generator hardening pipeline and one bounded repair round.",prompt:n,maxTurns:16,inputMode:"full-history",outputMode:"latest-message",servers:[{name:"flujo",tools:["draft_generated_flow"]}]},{key:"finish",type:"finish",label:"Finish"}],edges:[{from:"start",to:"architect"},{from:"architect",to:"compiler"},{from:"compiler",to:"finish"}]},{servers:[{name:"flujo"}],serverTools:{flujo:[...k]}});if(!a.flow)throw Error("Bundled Flow Generator could not be compiled");a.flow.id=g,a.flow.name="Experimental Flow Generator",a.flow.folder="System";let b=new Set(j);for(let c of a.flow.nodes.filter(a=>"mcp"===a.type)){let a=c.data?.properties?.enabledTools;Array.isArray(a)&&(c.data.properties={...c.data.properties??{},enabledTools:a.filter(a=>!b.has(String(a)))})}a.flow.permissionRules=i.map(a=>({action:a,resource:"*",effect:"allow"}));let c=a.flow.nodes.filter(a=>"process"===a.type);if(2!==c.length)throw Error("Bundled Flow Generator must contain architect and compiler stages");return c.forEach((a,b)=>{a.data.properties={...a.data.properties??{},systemRole:h,systemStage:0===b?"architect":"compiler",systemFlowVersion:3}}),a.flow}async function p(){let a=await e.flowService.getFlow(g),b=a?.nodes.filter(a=>"process"===a.type).map(a=>Number(a.data?.properties?.systemFlowVersion??0)).find(a=>a>0);if(a&&1!==b&&2!==b)return a;let c=o(),d=await e.flowService.saveFlow(c);if(!d.success)throw Error(d.error??"Failed to seed the Flow Generator");return c}async function q(){let a=o(),b=await e.flowService.saveFlow(a);if(!b.success)throw Error(b.error??"Failed to restore the Flow Generator");return a}async function r(a,b,c){let d=JSON.parse(JSON.stringify(await p()));d.id=`quickchat-flow-generator-${a}`,d.name="Flow Generator Session",delete d.createdAt,delete d.updatedAt;let e=d.nodes.filter(a=>"process"===a.type&&a.data?.properties?.systemRole===h);if(e.length<2)throw Error("The editable Flow Generator is missing its architect/compiler stages. Restore the default generator or add the flow-generator roles back.");for(let a of e)a.data.properties={...a.data.properties??{},boundModel:b};let f=c?.allowInstall===!0,g=new Set(j);if(f){for(let a of d.nodes.filter(a=>"mcp"===a.type)){let b=Array.isArray(a.data?.properties?.enabledTools)?a.data.properties.enabledTools.map(String):[];a.data.properties={...a.data.properties??{},enabledTools:[...new Set([...b,...j])]}}let a=new Set((d.permissionRules??[]).map(a=>a.action));d.permissionRules=[...d.permissionRules??[],...j.filter(b=>!a.has(b)).map(a=>({action:a,resource:"*",effect:"allow"}))]}else{for(let a of d.nodes.filter(a=>"mcp"===a.type)){let b=a.data?.properties?.enabledTools;Array.isArray(b)&&(a.data.properties={...a.data.properties??{},enabledTools:b.filter(a=>!g.has(String(a)))})}d.permissionRules=(d.permissionRules??[]).filter(a=>!g.has(a.action))}let i=d.nodes.find(a=>"start"===a.type);return i&&(i.data.properties={...i.data.properties??{},promptTemplate:`${String(i.data.properties?.promptTemplate??"")}
27
+
28
+ ${f?"MCP INSTALLATION POLICY FOR THIS RUN: explicitly opted in. Marketplace search and install tools may be used; consent/audit enforcement still applies.":"MCP INSTALLATION POLICY FOR THIS RUN: NOT opted in. Marketplace search is allowed for recommendations, but installation tools have been removed. Do not install or reference an unconfigured server in the draft."}`}),d}},51669:(a,b)=>{"use strict";function c(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
29
+ Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},53119:(a,b,c)=>{"use strict";c.d(b,{x:()=>k,m:()=>l});let d=["https://registry.modelcontextprotocol.io/?q=ai.keenable%2Fweb-search","https://registry.modelcontextprotocol.io/v0.1/servers/io.github.mario-andreschak%2Fmcp-abap-adt/versions",{url:"https://registry.modelcontextprotocol.io/v0.1/servers/io.github.microsoft%2Fplaywright-mcp/versions",env:{PLAYWRIGHT_MCP_BROWSER:"msedge"}}];function e(a){return"string"==typeof a?{url:a}:a}var f=c(38844),g=c(92372),h=c(25250),i=c(8665);let j=(0,c(50846).h)("backend/services/spotlight");async function k(){return(0,g.loadItem)(f.Z.SPOTLIGHT_SERVERS,null)}function l(){return global.__flujo_spotlight_refresh||(global.__flujo_spotlight_refresh=m().finally(()=>{global.__flujo_spotlight_refresh=void 0})),global.__flujo_spotlight_refresh}async function m(){let a=d.map(e);j.info(`Refreshing spotlight servers (${a.length} entries)`);let b=[];for(let c of a){let{url:a,env:d}=c,e=(0,h.XQ)(a);if(!e){j.warn(`Unrecognized spotlight URL format: ${a}`),b.push({url:a,env:d,error:"Unrecognized spotlight URL format"});continue}try{let c=await (0,i.Ws)(new URL(i.jD+e),15e3),f=(0,h.zz)(c);f?b.push({url:a,env:d,result:f}):(j.warn(`Spotlight URL resolved to no server: ${a}`),b.push({url:a,env:d,error:"No matching server found in the registry"}))}catch(e){let c=e instanceof Error?e.message:"Unknown error";j.warn(`Failed to resolve spotlight URL ${a}: ${c}`),b.push({url:a,env:d,error:c})}await new Promise(a=>setTimeout(a,250))}let c={updatedAt:new Date().toISOString(),entries:b},l=await k();if(l){for(let a of c.entries)if(!a.result){let b=l.entries.find(b=>b.url===a.url&&b.result);b?.result&&(a.result=b.result)}}await (0,g.VH)(f.Z.SPOTLIGHT_SERVERS,c);let m=c.entries.filter(a=>a.result).length;return j.info(`Spotlight refresh complete: ${m}/${c.entries.length} entries resolved`),c}},56793:(a,b,c)=>{"use strict";c.d(b,{eh:()=>g,ru:()=>e});let d=(0,c(50846).h)("backend/services/scheduler/flowRunEventBus");function e(a){return"signal"===a.kind}class f{publish(a){if(0===this.listeners.size)return;let b=e(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(d.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){d.warn("A flow-run event listener threw:",a)}}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function g(){return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new f),global.__flujo_flow_run_event_bus}},68633:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{decryptActionBoundArgs:function(){return s},encryptActionBoundArgs:function(){return r}}),c(77925);let d=c(97954),e=c(27825),f=c(47686),g=c(77533),h=c(63033),i=c(26906),j=function(a){return a&&a.__esModule?a:{default:a}}(c(74515)),k=new TextEncoder,l=new TextDecoder,m=void 0,n=void 0;async function o(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=atob(b),e=d.slice(0,16),f=d.slice(16),h=l.decode(await (0,g.decrypt)(c,(0,g.stringToUint8Array)(e),(0,g.stringToUint8Array)(f)));if(!h.startsWith(a))throw Object.defineProperty(Error("Invalid Server Action payload: failed to decrypt."),"__NEXT_ERROR_CODE",{value:"E191",enumerable:!1,configurable:!0});return h.slice(a.length)}async function p(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=new Uint8Array(16);h.workUnitAsyncStorage.exit(()=>crypto.getRandomValues(d));let e=(0,g.arrayBufferToString)(d.buffer),f=await (0,g.encrypt)(c,d,k.encode(a+b));return btoa(e+(0,g.arrayBufferToString)(f))}var q=function(a){return a[a.Ready=0]="Ready",a[a.Pending=1]="Pending",a[a.Complete=2]="Complete",a}(q||{});let r=j.default.cache(async function a(b,...c){let e=h.workUnitAsyncStorage.getStore(),j=e?(0,h.getCacheSignal)(e):void 0,{clientModules:k}=(0,g.getClientReferenceManifestForRsc)(),l=Error();Error.captureStackTrace(l,a);let n=!1,o=e?(0,i.createHangingInputAbortSignal)(e):void 0,q=0;function r(){0===q&&(q=1,null==j||j.beginRead())}function s(){1===q&&(null==j||j.endRead()),q=2}o&&j&&o.addEventListener("abort",r,{once:!0});let t=await (0,f.streamToString)((0,d.renderToReadableStream)(c,k,{filterStackFrame:m,signal:o,onError(a){(null==o||!o.aborted)&&(n||(n=!0,l.message=a instanceof Error?a.message:String(a)))}}),o);if(n)throw s(),l;if(!e)return p(b,t);r();let u=(0,h.getPrerenderResumeDataCache)(e),v=(0,h.getRenderResumeDataCache)(e),w=b+t,x=(null==u?void 0:u.encryptedBoundArgs.get(w))??(null==v?void 0:v.encryptedBoundArgs.get(w));if(x)return x;let y=await p(b,t);return s(),null==u||u.encryptedBoundArgs.set(w,y),y});async function s(a,b){let c,d=await b,f=h.workUnitAsyncStorage.getStore();if(f){let b=(0,h.getCacheSignal)(f),e=(0,h.getPrerenderResumeDataCache)(f),g=(0,h.getRenderResumeDataCache)(f);(c=(null==e?void 0:e.decryptedBoundArgs.get(d))??(null==g?void 0:g.decryptedBoundArgs.get(d)))||(null==b||b.beginRead(),c=await o(a,d),null==b||b.endRead(),null==e||e.decryptedBoundArgs.set(d,c))}else c=await o(a,d);let{edgeRscModuleMapping:i,rscModuleMapping:j}=(0,g.getClientReferenceManifestForRsc)();return await (0,e.createFromReadableStream)(new ReadableStream({start(a){switch(a.enqueue(k.encode(c)),null==f?void 0:f.type){case"prerender":case"prerender-runtime":f.renderSignal.aborted?a.close():f.renderSignal.addEventListener("abort",()=>a.close(),{once:!0});break;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case void 0:return a.close()}}}),{findSourceMapURL:n,serverConsumerManifest:{moduleLoading:null,moduleMap:j,serverModuleMap:(0,g.getServerModuleMap)()}})}},72937:(a,b,c)=>{"use strict";c.d(b,{H:()=>n,t:()=>q});var d=c(73736),e=c(92372),f=c(60453),g=c(61539),h=c(53119),i=c(4771),j=c(58739),k=c(50846),l=c(8491);let m=(0,k.h)("backend/init");function n(){return global.__flujo_init_promise||(global.__flujo_init_promise=o().catch(a=>{throw global.__flujo_init_promise=void 0,a})),global.__flujo_init_promise}async function o(){if(await (0,e.Pv)(),await (0,l.V2)(),(0,h.m)().catch(a=>m.warn("Spotlight refresh failed at startup:",a)),await (0,j.isEncryptionLocked)())return void m.info("Encryption locked — deferring MCP/scheduler startup until unlock");await p()}function p(){return global.__flujo_secret_services_promise||(global.__flujo_secret_services_promise=(async()=>{m.info("Initializing MCP servers"),await f.mcpService.startEnabledServers().catch(a=>{m.error("Failed to start enabled servers:",a)}),await (0,i.getSchedulerService)().start().catch(a=>m.error("Failed to start scheduler:",a));try{global.__flujo_retention_cron||(global.__flujo_retention_cron=new d.l4("0 * * * *",{unref:!0},()=>{(0,g.wc)().catch(a=>m.warn("Run-resource retention sweep failed:",a))}),m.info("Armed run-resource retention sweep (hourly)"))}catch(a){m.error("Failed to arm run-resource retention sweep:",a)}})()),global.__flujo_secret_services_promise}async function q(){await (0,j.isUserEncryptionEnabled)()&&(m.info("Encryption unlocked — starting deferred MCP/scheduler startup"),await p())}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>m,V:()=>l,resolveGlobalVars:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(38844),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a,b={}){j.debug("Entering resolveGlobalVars method");let c=!1!==b.resolveSecrets,d=await (0,f.loadItem)(g.Z.GLOBAL_ENV_VARS,{}),e=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(d);j.debug(`Loaded ${Object.keys(d).length} global environment variables (${e?"new":"old"} format)`);let i={},l=new Set;if(e)for(let[a,b]of Object.entries(d))i[a]=b.value,b.metadata.isSecret&&l.add(a);else i={...d};let m=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let d=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==i[b]){let e=i[b];if(!c&&(l.has(b)||e.startsWith("encrypted:")||e.startsWith("encrypted_failed:"))){j.debug(`Keeping secret global variable unresolved: ${b}`);continue}if(e.startsWith("encrypted:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),d=d.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return d},n=async a=>{if("string"==typeof a)return await m(a);if(Array.isArray(a))return await Promise.all(a.map(a=>n(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await n(d);return b}return a},o=await n(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(o,null,2)),j.debug("Completed global variable resolution"),o}async function l(a){return k(a,{resolveSecrets:!1})}async function m(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),m(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l,m]),(0,d.A)(k,"605caa1e030009a4bc7e820854ff481d3e0295325d",null),(0,d.A)(l,"4003ce37366709f5add0c98a6e32e47a1006fd7c7d",null),(0,d.A)(m,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987",null)},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},91959:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"4003ce37366709f5add0c98a6e32e47a1006fd7c7d":()=>d.V,"605caa1e030009a4bc7e820854ff481d3e0295325d":()=>d.resolveGlobalVars,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987":()=>d.G});var d=c(73456)},96487:()=>{}};
@@ -1 +1 @@
1
- "use strict";exports.id=9285,exports.ids=[9285],exports.modules={39285:(a,b,c)=>{c.d(b,{S6:()=>j,TG:()=>m,nN:()=>k,putPendingApproval:()=>l});var d=c(92372),e=c(38844);let f=(0,c(50846).h)("backend/services/scheduler/pendingApprovals"),g=e.Z.PENDING_APPROVALS,h=Promise.resolve();async function i(){try{let a=await (0,d.YM)(g,{});return a&&"object"==typeof a?a:{}}catch(a){return f.error("Failed to load pending approvals:",a),{}}}async function j(){return Object.values(await i()).sort((a,b)=>a.createdAt.localeCompare(b.createdAt))}async function k(a){return(await i())[a]??null}async function l(a){let b=h.catch(()=>{}).then(async()=>{let b=await i();b[a.approvalId]=a,await (0,d.VH)(g,b)});h=b,await b}async function m(a){let b=h.catch(()=>{}).then(async()=>{let b=await i();a in b&&(delete b[a],await (0,d.VH)(g,b))});h=b,await b}}};
1
+ "use strict";exports.id=9285,exports.ids=[9285],exports.modules={39285:(a,b,c)=>{c.d(b,{S6:()=>j,TG:()=>m,nN:()=>k,putPendingApproval:()=>l});var d=c(92372),e=c(38844);let f=(0,c(50846).h)("backend/services/scheduler/pendingApprovals"),g=e.Z.PENDING_APPROVALS,h=Promise.resolve();async function i(){try{let a=await (0,d.loadItem)(g,{});return a&&"object"==typeof a?a:{}}catch(a){return f.error("Failed to load pending approvals:",a),{}}}async function j(){return Object.values(await i()).sort((a,b)=>a.createdAt.localeCompare(b.createdAt))}async function k(a){return(await i())[a]??null}async function l(a){let b=h.catch(()=>{}).then(async()=>{let b=await i();b[a.approvalId]=a,await (0,d.VH)(g,b)});h=b,await b}async function m(a){let b=h.catch(()=>{}).then(async()=>{let b=await i();a in b&&(delete b[a],await (0,d.VH)(g,b))});h=b,await b}}};
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "version": 1,
3
3
  "functions": {
4
- "/api/local-models/pull": {},
5
4
  "/api/local-models/capability": {},
6
5
  "/api/local-models/suggest": {},
6
+ "/api/local-models/pull": {},
7
7
  "/api/mcp/oauth-capability": {},
8
8
  "/api/mcp/test-connection/stream": {},
9
9
  "/api/update": {
@@ -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/1114.js","chunks/166.js","chunks/1870.js","chunks/232.js","chunks/4436.js","chunks/4551.js","chunks/6432.js","chunks/6747.js","chunks/701.js","chunks/7032.js","chunks/7412.js","chunks/8092.js","chunks/8165.js","chunks/8187.js","chunks/8938.js","chunks/9273.js","chunks/94.js","chunks/9406.js","chunks/9724.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/1114.js","chunks/166.js","chunks/1870.js","chunks/232.js","chunks/4436.js","chunks/4551.js","chunks/5309.js","chunks/6432.js","chunks/6747.js","chunks/701.js","chunks/7032.js","chunks/7412.js","chunks/8092.js","chunks/8165.js","chunks/8938.js","chunks/9273.js","chunks/94.js","chunks/9406.js","chunks/9724.js","webpack-runtime.js"]}
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-dccb4f149ebdedcc.js","static/chunks/4bd1b696-182b6b13bdad92e3.js","static/chunks/1255-13d973e0759ea6d6.js","static/chunks/main-app-2de821d2899bb841.js"],rootMainFilesTree:{},pages:{"/_app":["static/chunks/webpack-dccb4f149ebdedcc.js","static/chunks/framework-1548034a53843b9f.js","static/chunks/main-9bda5041078d2b6a.js","static/chunks/pages/_app-e8b861c87f6f033c.js"],"/_error":["static/chunks/webpack-dccb4f149ebdedcc.js","static/chunks/framework-1548034a53843b9f.js","static/chunks/main-9bda5041078d2b6a.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-9d09d53b271f49e2.js","static/chunks/4bd1b696-182b6b13bdad92e3.js","static/chunks/1255-13d973e0759ea6d6.js","static/chunks/main-app-2de821d2899bb841.js"],rootMainFilesTree:{},pages:{"/_app":["static/chunks/webpack-9d09d53b271f49e2.js","static/chunks/framework-1548034a53843b9f.js","static/chunks/main-9bda5041078d2b6a.js","static/chunks/pages/_app-e8b861c87f6f033c.js"],"/_error":["static/chunks/webpack-9d09d53b271f49e2.js","static/chunks/framework-1548034a53843b9f.js","static/chunks/main-9bda5041078d2b6a.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"];
@@ -22,7 +22,7 @@
22
22
  "wasm": [],
23
23
  "assets": [],
24
24
  "env": {
25
- "__NEXT_BUILD_ID": "jfb1GsjSGMjBmwfa3kM26",
25
+ "__NEXT_BUILD_ID": "hbjnLG9RCje2AApS9TzP8",
26
26
  "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "VdE9c1sIalXQuPGJWNUKWkO72EvzBDr46ha1orwzXsI=",
27
27
  "__NEXT_PREVIEW_MODE_ID": "504c0a6b911be0b2ac15baec6309fb29",
28
28
  "__NEXT_PREVIEW_MODE_SIGNING_KEY": "b670417ac233807e27ba2d9a4769bc7d7929b5e35e11a7191bd88b0c3f73e503",
@@ -1 +1 @@
1
- self.__REACT_LOADABLE_MANIFEST='{"..\\\\node_modules\\\\@modelcontextprotocol\\\\ext-apps\\\\dist\\\\src\\\\app-bridge.js -> zod/v4":{"id":63910,"files":["static/chunks/3910.5c6885d7a5bd753e.js"]},"..\\\\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-de1d167d87614a6d.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ../contexts/ThemeContext":{"id":26796,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/8598-1b627b3d682b364a.js","static/chunks/8405.a425f94b6b13d2be.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ../contexts/TourContext":{"id":69195,"files":["static/chunks/9164-de1d167d87614a6d.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/3392-6dd9ad3be66a7ce9.js","static/chunks/1871-14c3e63ca865d85e.js","static/chunks/981-dd289e60d81da0d1.js","static/chunks/2003-f826c607d609d1fa.js","static/chunks/9562-f8371be653010627.js","static/chunks/3272-fd8d59523f61da96.js","static/chunks/9164-de1d167d87614a6d.js","static/chunks/3217.260785c2198d1e9d.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ./Navigation":{"id":93089,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/4754-5c62bb61142f82d1.js","static/chunks/9244-3281f7fd02003a2c.js","static/chunks/3392-6dd9ad3be66a7ce9.js","static/chunks/1871-14c3e63ca865d85e.js","static/chunks/981-dd289e60d81da0d1.js","static/chunks/2003-f826c607d609d1fa.js","static/chunks/9562-f8371be653010627.js","static/chunks/3272-fd8d59523f61da96.js","static/chunks/8470-72cf748472d4d501.js","static/chunks/9581-6d2523fd68a5e3c4.js","static/chunks/8598-1b627b3d682b364a.js","static/chunks/4523-a540747aa2ed34e8.js","static/chunks/454.5fc2f8eef98483e3.js","static/chunks/9164-de1d167d87614a6d.js","static/chunks/3089.df88f3b16898aad7.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ./TelemetryNotice":{"id":361,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/4754-5c62bb61142f82d1.js","static/chunks/9244-3281f7fd02003a2c.js","static/chunks/3392-6dd9ad3be66a7ce9.js","static/chunks/1871-14c3e63ca865d85e.js","static/chunks/981-dd289e60d81da0d1.js","static/chunks/2003-f826c607d609d1fa.js","static/chunks/422-61b173ba64cf0c94.js","static/chunks/9164-de1d167d87614a6d.js","static/chunks/361.bb75b03b740930cd.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/3392-6dd9ad3be66a7ce9.js","static/chunks/1871-14c3e63ca865d85e.js","static/chunks/2005-f9d38c39f10c321f.js","static/chunks/8345.bc5534ec13abc9ee.js","static/chunks/9164-de1d167d87614a6d.js","static/chunks/3545.353a62a68d3b7fd1.js"]},"frontend\\\\components\\\\mcp\\\\MCPServerManager\\\\ServerCard.tsx -> @/frontend/utils/oauth":{"id":68198,"files":["static/chunks/8198.cd0d3f8429c02862.js"]},"frontend\\\\components\\\\mcp\\\\MCPServerManager\\\\index.tsx -> @/frontend/utils/oauth":{"id":68198,"files":["static/chunks/8198.cd0d3f8429c02862.js"]}}';
1
+ self.__REACT_LOADABLE_MANIFEST='{"..\\\\node_modules\\\\@modelcontextprotocol\\\\ext-apps\\\\dist\\\\src\\\\app-bridge.js -> zod/v4":{"id":63910,"files":["static/chunks/3910.5c6885d7a5bd753e.js"]},"..\\\\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-de1d167d87614a6d.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ../contexts/ThemeContext":{"id":26796,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/8598-1b627b3d682b364a.js","static/chunks/8405.a425f94b6b13d2be.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ../contexts/TourContext":{"id":69195,"files":["static/chunks/9164-de1d167d87614a6d.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/3392-6dd9ad3be66a7ce9.js","static/chunks/1871-14c3e63ca865d85e.js","static/chunks/981-dd289e60d81da0d1.js","static/chunks/2003-f826c607d609d1fa.js","static/chunks/9562-f8371be653010627.js","static/chunks/3272-fd8d59523f61da96.js","static/chunks/9164-de1d167d87614a6d.js","static/chunks/3217.260785c2198d1e9d.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ./Navigation":{"id":32005,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/4754-5c62bb61142f82d1.js","static/chunks/9244-3281f7fd02003a2c.js","static/chunks/3392-6dd9ad3be66a7ce9.js","static/chunks/1871-14c3e63ca865d85e.js","static/chunks/981-dd289e60d81da0d1.js","static/chunks/2003-f826c607d609d1fa.js","static/chunks/9562-f8371be653010627.js","static/chunks/3272-fd8d59523f61da96.js","static/chunks/8470-72cf748472d4d501.js","static/chunks/9581-6d2523fd68a5e3c4.js","static/chunks/8598-1b627b3d682b364a.js","static/chunks/4523-a540747aa2ed34e8.js","static/chunks/454.5fc2f8eef98483e3.js","static/chunks/9164-de1d167d87614a6d.js","static/chunks/2005.4eea65c00d9a29cd.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ./TelemetryNotice":{"id":361,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/4754-5c62bb61142f82d1.js","static/chunks/9244-3281f7fd02003a2c.js","static/chunks/3392-6dd9ad3be66a7ce9.js","static/chunks/1871-14c3e63ca865d85e.js","static/chunks/981-dd289e60d81da0d1.js","static/chunks/2003-f826c607d609d1fa.js","static/chunks/422-61b173ba64cf0c94.js","static/chunks/9164-de1d167d87614a6d.js","static/chunks/361.bb75b03b740930cd.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/3392-6dd9ad3be66a7ce9.js","static/chunks/1871-14c3e63ca865d85e.js","static/chunks/4386-e9621d3c94969a68.js","static/chunks/8345.bc5534ec13abc9ee.js","static/chunks/9164-de1d167d87614a6d.js","static/chunks/3545.353a62a68d3b7fd1.js"]},"frontend\\\\components\\\\mcp\\\\MCPServerManager\\\\ServerCard.tsx -> @/frontend/utils/oauth":{"id":68198,"files":["static/chunks/8198.cd0d3f8429c02862.js"]},"frontend\\\\components\\\\mcp\\\\MCPServerManager\\\\index.tsx -> @/frontend/utils/oauth":{"id":68198,"files":["static/chunks/8198.cd0d3f8429c02862.js"]}}';
@@ -1 +1 @@
1
- <!DOCTYPE html><!--jfb1GsjSGMjBmwfa3kM26--><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/b496025c9cd768cc.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/599369d853c61df7.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/30253fcfa8035221.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-dccb4f149ebdedcc.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-2de821d2899bb841.js" async=""></script><script src="/_next/static/chunks/app/layout-38b88f3b057f4852.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-dccb4f149ebdedcc.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-38b88f3b057f4852.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/b496025c9cd768cc.css\",\"style\"]\n:HL[\"/_next/static/css/599369d853c61df7.css\",\"style\"]\n:HL[\"/_next/static/css/30253fcfa8035221.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"jfb1GsjSGMjBmwfa3kM26\",\"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/b496025c9cd768cc.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/599369d853c61df7.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/30253fcfa8035221.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><!--hbjnLG9RCje2AApS9TzP8--><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/b496025c9cd768cc.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/599369d853c61df7.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/30253fcfa8035221.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9d09d53b271f49e2.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-2de821d2899bb841.js" async=""></script><script src="/_next/static/chunks/app/layout-abed1f211e03152f.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-9d09d53b271f49e2.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-abed1f211e03152f.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/b496025c9cd768cc.css\",\"style\"]\n:HL[\"/_next/static/css/599369d853c61df7.css\",\"style\"]\n:HL[\"/_next/static/css/30253fcfa8035221.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"hbjnLG9RCje2AApS9TzP8\",\"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/b496025c9cd768cc.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/599369d853c61df7.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/30253fcfa8035221.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-dccb4f149ebdedcc.js" defer=""></script><script src="/_next/static/chunks/framework-1548034a53843b9f.js" defer=""></script><script src="/_next/static/chunks/main-9bda5041078d2b6a.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/jfb1GsjSGMjBmwfa3kM26/_buildManifest.js" defer=""></script><script src="/_next/static/jfb1GsjSGMjBmwfa3kM26/_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":"jfb1GsjSGMjBmwfa3kM26","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-9d09d53b271f49e2.js" defer=""></script><script src="/_next/static/chunks/framework-1548034a53843b9f.js" defer=""></script><script src="/_next/static/chunks/main-9bda5041078d2b6a.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/hbjnLG9RCje2AApS9TzP8/_buildManifest.js" defer=""></script><script src="/_next/static/hbjnLG9RCje2AApS9TzP8/_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":"hbjnLG9RCje2AApS9TzP8","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>