flujo-ai 3.30.0 → 3.33.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 (700) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +359 -317
  3. package/.next/app-path-routes-manifest.json +15 -11
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +21 -21
  6. package/.next/react-loadable-manifest.json +28 -13
  7. package/.next/server/app/_not-found/page.js +1 -1
  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.js +1 -1
  21. package/.next/server/app/api/browse/route.js.nft.json +1 -1
  22. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/bugs/enhance/route.js +3 -3
  24. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  25. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/cwd/route.js +1 -1
  27. package/.next/server/app/api/cwd/route.js.nft.json +1 -1
  28. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/encryption/secure/route.js +1 -1
  30. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  31. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/env/route.js +2 -2
  33. package/.next/server/app/api/env/route.js.nft.json +1 -1
  34. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/flow/[id]/route.js +1 -1
  36. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  37. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js +1 -1
  39. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
  40. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/flow/[id]/versions/route.js +1 -1
  42. package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
  43. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/flow/compile/route.js +1 -1
  45. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  46. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/flow/generate/route.js +1 -1
  48. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  49. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/flow/generator/route.js +7 -0
  51. package/.next/server/app/api/flow/generator/route.js.nft.json +1 -0
  52. package/.next/server/app/api/flow/generator/route_client-reference-manifest.js +1 -0
  53. package/.next/server/app/api/flow/improve/route.js +1 -1
  54. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  55. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
  57. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  58. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  60. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  61. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/flow/repair/route.js +1 -1
  63. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  64. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/flow/route.js +1 -1
  66. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  67. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/git/route.js +1 -1
  69. package/.next/server/app/api/git/route.js.nft.json +1 -1
  70. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/init/route.js +1 -1
  72. package/.next/server/app/api/init/route.js.nft.json +1 -1
  73. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/mcp/app-sandbox/route.js +1 -1
  78. package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -1
  79. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/mcp/cancel/route.js +2 -2
  81. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  82. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/mcp/oauth-capability/route.js +1 -1
  84. package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
  85. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  87. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  88. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  90. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  91. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  93. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  94. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  96. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  97. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  99. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  100. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  102. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  103. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  105. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  106. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  108. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  109. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/mcp/servers/route.js +1 -1
  111. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  112. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  114. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  115. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  117. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  118. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/mcp-registry/route.js +2 -2
  120. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  121. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
  123. package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -1
  124. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/model/[id]/route.js +1 -1
  126. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  127. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/model/provider/route.js +2 -2
  129. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  130. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/model/route.js +1 -1
  132. package/.next/server/app/api/model/route.js.nft.json +1 -1
  133. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/model/test/route.js +2 -2
  135. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  136. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/oauth/callback/route.js +2 -2
  138. package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
  139. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/oauth/initiate/route.js +2 -2
  141. package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
  142. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/oauth/reset/route.js +2 -2
  144. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  145. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/packages/build/route.js +1 -1
  147. package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
  148. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/packages/derive-secrets/route.js +1 -1
  150. package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
  151. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/packages/install/route.js +1 -1
  153. package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
  154. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/packages/install/status/route.js +1 -1
  156. package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
  157. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/packages/installed/route.js +1 -1
  159. package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
  160. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/packages/resolve/route.js +1 -1
  162. package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
  163. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/packages/scan-targets/route.js +1 -1
  165. package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -1
  166. package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/packages/search/route.js +1 -1
  168. package/.next/server/app/api/packages/search/route.js.nft.json +1 -1
  169. package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/packages/uninstall/route.js +1 -1
  171. package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
  172. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
  174. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  175. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/planned-executions/[id]/run/route.js +2 -2
  177. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  178. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/planned-executions/[id]/runs/route.js +2 -2
  180. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  181. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/planned-executions/preview-schedule/route.js +1 -1
  183. package/.next/server/app/api/planned-executions/preview-schedule/route.js.nft.json +1 -1
  184. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  186. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  187. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/planned-executions/route.js +1 -1
  189. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  190. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/registry/auth/resend/route.js +1 -1
  192. package/.next/server/app/api/registry/auth/resend/route.js.nft.json +1 -1
  193. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/registry/auth/reset/route.js +1 -1
  195. package/.next/server/app/api/registry/auth/reset/route.js.nft.json +1 -1
  196. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/registry/auth/route.js +1 -1
  198. package/.next/server/app/api/registry/auth/route.js.nft.json +1 -1
  199. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/registry/feedback/route.js +1 -0
  201. package/.next/server/app/api/registry/feedback/route.js.nft.json +1 -0
  202. package/.next/server/app/api/registry/feedback/route_client-reference-manifest.js +1 -0
  203. package/.next/server/app/api/registry/oauth/callback/route.js +1 -1
  204. package/.next/server/app/api/registry/oauth/callback/route.js.nft.json +1 -1
  205. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/registry/oauth/initiate/route.js +1 -1
  207. package/.next/server/app/api/registry/oauth/initiate/route.js.nft.json +1 -1
  208. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/registry/packages/route.js +1 -0
  210. package/.next/server/app/api/registry/packages/route.js.nft.json +1 -0
  211. package/.next/server/app/api/registry/packages/route_client-reference-manifest.js +1 -0
  212. package/.next/server/app/api/registry/publish/route.js +1 -1
  213. package/.next/server/app/api/registry/publish/route.js.nft.json +1 -1
  214. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/registry/settings/route.js +1 -1
  216. package/.next/server/app/api/registry/settings/route.js.nft.json +1 -1
  217. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/restore/route.js +1 -1
  219. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  220. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/runs/active/route.js +2 -2
  222. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  223. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/storage/route.js +1 -1
  225. package/.next/server/app/api/storage/route.js.nft.json +1 -1
  226. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/telemetry/daily-active/route.js +1 -0
  228. package/.next/server/app/api/telemetry/daily-active/route.js.nft.json +1 -0
  229. package/.next/server/app/api/telemetry/daily-active/route_client-reference-manifest.js +1 -0
  230. package/.next/server/app/api/update/route.js +1 -1
  231. package/.next/server/app/api/update/route.js.nft.json +1 -1
  232. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/api/waves/route.js +1 -1
  234. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  235. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  237. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  238. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/chat/page.js +58 -10
  240. package/.next/server/app/chat/page.js.nft.json +1 -1
  241. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  242. package/.next/server/app/chat.html +1 -1
  243. package/.next/server/app/chat.rsc +3 -3
  244. package/.next/server/app/docs/page.js +4 -5
  245. package/.next/server/app/docs/page.js.nft.json +1 -1
  246. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  247. package/.next/server/app/docs.html +1 -1
  248. package/.next/server/app/docs.rsc +3 -3
  249. package/.next/server/app/executions/page.js +3 -2
  250. package/.next/server/app/executions/page.js.nft.json +1 -1
  251. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  252. package/.next/server/app/executions.html +1 -1
  253. package/.next/server/app/executions.rsc +3 -3
  254. package/.next/server/app/flows/page.js +3 -3
  255. package/.next/server/app/flows/page.js.nft.json +1 -1
  256. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  257. package/.next/server/app/flows.html +1 -1
  258. package/.next/server/app/flows.rsc +3 -3
  259. package/.next/server/app/index.html +1 -1
  260. package/.next/server/app/index.rsc +3 -3
  261. package/.next/server/app/mcp/page.js +56 -5
  262. package/.next/server/app/mcp/page.js.nft.json +1 -1
  263. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  264. package/.next/server/app/mcp-flows/route.js +1 -1
  265. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  266. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  268. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  269. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/mcp.html +1 -1
  271. package/.next/server/app/mcp.rsc +3 -3
  272. package/.next/server/app/models/page.js +2 -2
  273. package/.next/server/app/models/page.js.nft.json +1 -1
  274. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  275. package/.next/server/app/packages/page.js +2 -2
  276. package/.next/server/app/packages/page.js.nft.json +1 -1
  277. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  278. package/.next/server/app/packages.html +1 -1
  279. package/.next/server/app/packages.rsc +3 -3
  280. package/.next/server/app/page.js +3 -3
  281. package/.next/server/app/page.js.nft.json +1 -1
  282. package/.next/server/app/page_client-reference-manifest.js +1 -1
  283. package/.next/server/app/settings/page.js +2 -2
  284. package/.next/server/app/settings/page.js.nft.json +1 -1
  285. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  286. package/.next/server/app/settings.html +1 -1
  287. package/.next/server/app/settings.rsc +3 -3
  288. package/.next/server/app/v1/chat/completions/route.js +1 -1
  289. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  290. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  291. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  292. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  293. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  294. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  295. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  296. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  298. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  299. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  301. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  302. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  304. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  305. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  306. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +2 -2
  307. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  308. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  309. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +2 -2
  310. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -1
  311. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -1
  312. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
  313. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js.nft.json +1 -1
  314. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  316. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  317. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  318. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  319. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  320. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  321. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  322. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  323. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  324. package/.next/server/app/v1/chat/events/route.js +3 -3
  325. package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
  326. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
  327. package/.next/server/app/v1/models/route.js +2 -2
  328. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  329. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  330. package/.next/server/app/waves/page.js +3 -3
  331. package/.next/server/app/waves/page.js.nft.json +1 -1
  332. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  333. package/.next/server/app/waves.html +1 -1
  334. package/.next/server/app/waves.rsc +3 -3
  335. package/.next/server/app-paths-manifest.json +15 -11
  336. package/.next/server/chunks/1114.js +1 -1
  337. package/.next/server/chunks/1226.js +1 -1
  338. package/.next/server/chunks/1227.js +1 -0
  339. package/.next/server/chunks/1314.js +1 -1
  340. package/.next/server/chunks/1439.js +1 -0
  341. package/.next/server/chunks/1578.js +1 -1
  342. package/.next/server/chunks/1634.js +1 -1
  343. package/.next/server/chunks/166.js +5 -5
  344. package/.next/server/chunks/1664.js +2 -0
  345. package/.next/server/chunks/180.js +12 -0
  346. package/.next/server/chunks/227.js +1 -5
  347. package/.next/server/chunks/2273.js +2 -2
  348. package/.next/server/chunks/2372.js +2 -0
  349. package/.next/server/chunks/2859.js +1 -1
  350. package/.next/server/chunks/2985.js +1 -0
  351. package/.next/server/chunks/3128.js +4 -4
  352. package/.next/server/chunks/3653.js +2 -0
  353. package/.next/server/chunks/3855.js +1 -0
  354. package/.next/server/chunks/4013.js +1 -0
  355. package/.next/server/chunks/4308.js +4 -0
  356. package/.next/server/chunks/{4685.js → 4466.js} +1 -1
  357. package/.next/server/chunks/4551.js +1 -1
  358. package/.next/server/chunks/4663.js +1 -0
  359. package/.next/server/chunks/4822.js +1 -0
  360. package/.next/server/chunks/5040.js +4 -9
  361. package/.next/server/chunks/5067.js +1 -1
  362. package/.next/server/chunks/544.js +38 -37
  363. package/.next/server/chunks/5463.js +1 -1
  364. package/.next/server/chunks/5544.js +5 -5
  365. package/.next/server/chunks/5703.js +2 -0
  366. package/.next/server/chunks/5708.js +2 -3
  367. package/.next/server/chunks/6034.js +1 -1
  368. package/.next/server/chunks/6226.js +1 -1
  369. package/.next/server/chunks/{3570.js → 6747.js} +287 -253
  370. package/.next/server/chunks/6967.js +82 -0
  371. package/.next/server/chunks/701.js +1 -1
  372. package/.next/server/chunks/{5548.js → 7058.js} +2 -2
  373. package/.next/server/chunks/{4566.js → 7069.js} +3 -3
  374. package/.next/server/chunks/{2388.js → 7104.js} +1 -1
  375. package/.next/server/chunks/7506.js +1 -1
  376. package/.next/server/chunks/7519.js +1 -0
  377. package/.next/server/chunks/7628.js +1 -0
  378. package/.next/server/chunks/{3030.js → 7674.js} +1 -1
  379. package/.next/server/chunks/7821.js +1 -1
  380. package/.next/server/chunks/{2866.js → 7891.js} +2 -2
  381. package/.next/server/chunks/793.js +3 -3
  382. package/.next/server/chunks/7965.js +39 -0
  383. package/.next/server/chunks/{6404.js → 7993.js} +2 -2
  384. package/.next/server/chunks/8187.js +78 -0
  385. package/.next/server/chunks/8387.js +1 -1
  386. package/.next/server/chunks/87.js +1 -0
  387. package/.next/server/chunks/8739.js +1 -2
  388. package/.next/server/chunks/{3912.js → 9085.js} +2 -2
  389. package/.next/server/chunks/9235.js +8 -0
  390. package/.next/server/chunks/94.js +1 -1
  391. package/.next/server/chunks/9724.js +3 -3
  392. package/.next/server/chunks/9983.js +1 -1
  393. package/.next/server/functions-config-manifest.json +3 -3
  394. package/.next/server/instrumentation.js +1 -1
  395. package/.next/server/instrumentation.js.nft.json +1 -1
  396. package/.next/server/middleware-build-manifest.js +1 -1
  397. package/.next/server/middleware-manifest.json +5 -5
  398. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  399. package/.next/server/pages/404.html +1 -1
  400. package/.next/server/pages/500.html +1 -1
  401. package/.next/server/server-reference-manifest.js +1 -1
  402. package/.next/server/server-reference-manifest.json +1 -1
  403. package/.next/static/chunks/1675-773454288de4309d.js +1 -0
  404. package/.next/static/chunks/{3189-fa8ec6d719d5e72b.js → 2005-f9d38c39f10c321f.js} +1 -1
  405. package/.next/static/chunks/2318-13ef0d3048e97834.js +1 -0
  406. package/.next/static/chunks/289-98f50bfcf833d661.js +1 -0
  407. package/.next/static/chunks/3089.df88f3b16898aad7.js +1 -0
  408. package/.next/static/chunks/361.bb75b03b740930cd.js +1 -0
  409. package/.next/static/chunks/3772-20197853c04a6993.js +1 -0
  410. package/.next/static/chunks/422-61b173ba64cf0c94.js +1 -0
  411. package/.next/static/chunks/4555-c9070f8c79bccfad.js +39 -0
  412. package/.next/static/chunks/4929-150b03595474c9d8.js +1 -0
  413. package/.next/static/chunks/5733-1419095a28c1ddc3.js +1 -0
  414. package/.next/static/chunks/639-90ed75d402dc872b.js +1 -0
  415. package/.next/static/chunks/{3452-a639f121f2953f50.js → 6428-951188daa6f74b86.js} +3 -3
  416. package/.next/static/chunks/6430-8c6dac4a758119f2.js +1 -0
  417. package/.next/static/chunks/6539-118a0084e0bfae34.js +1 -0
  418. package/.next/static/chunks/6733-c9029143901e62e9.js +1 -0
  419. package/.next/static/chunks/7264-91d1fa99abcd91ad.js +1 -0
  420. package/.next/static/chunks/7328-c8a51bb8c7470d77.js +1 -0
  421. package/.next/static/chunks/7391-5a0abd837ba241f5.js +1 -0
  422. package/.next/static/chunks/8124-4a80e3201b8e51b0.js +1 -0
  423. package/.next/static/chunks/{2969.eb9ff8cd2a5034b0.js → 8345.bc5534ec13abc9ee.js} +1 -1
  424. package/.next/static/chunks/8404-bfa9203e4296f3fb.js +1 -0
  425. package/.next/static/chunks/{8405.73e8be2c8e5b55c5.js → 8405.a425f94b6b13d2be.js} +1 -1
  426. package/.next/static/chunks/8551-a28272acfda62ac9.js +1 -0
  427. package/.next/static/chunks/8650-41c2afc0eba37fb8.js +1 -0
  428. package/.next/static/chunks/{9164-840f056a0e11d979.js → 9164-de1d167d87614a6d.js} +1 -1
  429. package/.next/static/chunks/9203-786f457ecf60b49c.js +1 -0
  430. package/.next/static/chunks/9345-11d6e48d892b1862.js +8 -0
  431. package/.next/static/chunks/95-b9691d3cb15556dc.js +1 -0
  432. package/.next/static/chunks/9562-f8371be653010627.js +1 -0
  433. package/.next/static/chunks/981-dd289e60d81da0d1.js +1 -0
  434. package/.next/static/chunks/9951-566fc6b05c12209e.js +1 -0
  435. package/.next/static/chunks/app/api/approvals/[id]/route-9ea2990be4b67136.js +1 -0
  436. package/.next/static/chunks/app/api/approvals/route-9ea2990be4b67136.js +1 -0
  437. package/.next/static/chunks/app/api/backup/route-9ea2990be4b67136.js +1 -0
  438. package/.next/static/chunks/app/api/browse/route-9ea2990be4b67136.js +1 -0
  439. package/.next/static/chunks/app/api/bugs/enhance/route-9ea2990be4b67136.js +1 -0
  440. package/.next/static/chunks/app/api/cwd/route-9ea2990be4b67136.js +1 -0
  441. package/.next/static/chunks/app/api/encryption/secure/route-9ea2990be4b67136.js +1 -0
  442. package/.next/static/chunks/app/api/env/route-9ea2990be4b67136.js +1 -0
  443. package/.next/static/chunks/app/api/flow/[id]/route-9ea2990be4b67136.js +1 -0
  444. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-9ea2990be4b67136.js +1 -0
  445. package/.next/static/chunks/app/api/flow/[id]/versions/route-9ea2990be4b67136.js +1 -0
  446. package/.next/static/chunks/app/api/flow/compile/route-9ea2990be4b67136.js +1 -0
  447. package/.next/static/chunks/app/api/flow/generate/route-9ea2990be4b67136.js +1 -0
  448. package/.next/static/chunks/app/api/flow/generator/route-9ea2990be4b67136.js +1 -0
  449. package/.next/static/chunks/app/api/flow/improve/route-9ea2990be4b67136.js +1 -0
  450. package/.next/static/chunks/app/api/flow/prompt-renderer/route-9ea2990be4b67136.js +1 -0
  451. package/.next/static/chunks/app/api/flow/quick-chat/route-9ea2990be4b67136.js +1 -0
  452. package/.next/static/chunks/app/api/flow/repair/route-9ea2990be4b67136.js +1 -0
  453. package/.next/static/chunks/app/api/flow/route-9ea2990be4b67136.js +1 -0
  454. package/.next/static/chunks/app/api/git/route-9ea2990be4b67136.js +1 -0
  455. package/.next/static/chunks/app/api/init/route-9ea2990be4b67136.js +1 -0
  456. package/.next/static/chunks/app/api/local-models/capability/route-9ea2990be4b67136.js +1 -0
  457. package/.next/static/chunks/app/api/local-models/pull/route-9ea2990be4b67136.js +1 -0
  458. package/.next/static/chunks/app/api/local-models/suggest/route-9ea2990be4b67136.js +1 -0
  459. package/.next/static/chunks/app/api/mcp/app-sandbox/route-9ea2990be4b67136.js +1 -0
  460. package/.next/static/chunks/app/api/mcp/cancel/route-9ea2990be4b67136.js +1 -0
  461. package/.next/static/chunks/app/api/mcp/oauth-capability/route-9ea2990be4b67136.js +1 -0
  462. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-9ea2990be4b67136.js +1 -0
  463. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-9ea2990be4b67136.js +1 -0
  464. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-9ea2990be4b67136.js +1 -0
  465. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-9ea2990be4b67136.js +1 -0
  466. package/.next/static/chunks/app/api/mcp/servers/[name]/route-9ea2990be4b67136.js +1 -0
  467. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-9ea2990be4b67136.js +1 -0
  468. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-9ea2990be4b67136.js +1 -0
  469. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-9ea2990be4b67136.js +1 -0
  470. package/.next/static/chunks/app/api/mcp/servers/route-9ea2990be4b67136.js +1 -0
  471. package/.next/static/chunks/app/api/mcp/test-connection/route-9ea2990be4b67136.js +1 -0
  472. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-9ea2990be4b67136.js +1 -0
  473. package/.next/static/chunks/app/api/mcp-registry/route-9ea2990be4b67136.js +1 -0
  474. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-9ea2990be4b67136.js +1 -0
  475. package/.next/static/chunks/app/api/model/[id]/route-9ea2990be4b67136.js +1 -0
  476. package/.next/static/chunks/app/api/model/provider/route-9ea2990be4b67136.js +1 -0
  477. package/.next/static/chunks/app/api/model/route-9ea2990be4b67136.js +1 -0
  478. package/.next/static/chunks/app/api/model/test/route-9ea2990be4b67136.js +1 -0
  479. package/.next/static/chunks/app/api/oauth/callback/route-9ea2990be4b67136.js +1 -0
  480. package/.next/static/chunks/app/api/oauth/initiate/route-9ea2990be4b67136.js +1 -0
  481. package/.next/static/chunks/app/api/oauth/reset/route-9ea2990be4b67136.js +1 -0
  482. package/.next/static/chunks/app/api/packages/build/route-9ea2990be4b67136.js +1 -0
  483. package/.next/static/chunks/app/api/packages/derive-secrets/route-9ea2990be4b67136.js +1 -0
  484. package/.next/static/chunks/app/api/packages/install/route-9ea2990be4b67136.js +1 -0
  485. package/.next/static/chunks/app/api/packages/install/status/route-9ea2990be4b67136.js +1 -0
  486. package/.next/static/chunks/app/api/packages/installed/route-9ea2990be4b67136.js +1 -0
  487. package/.next/static/chunks/app/api/packages/resolve/route-9ea2990be4b67136.js +1 -0
  488. package/.next/static/chunks/app/api/packages/scan-targets/route-9ea2990be4b67136.js +1 -0
  489. package/.next/static/chunks/app/api/packages/search/route-9ea2990be4b67136.js +1 -0
  490. package/.next/static/chunks/app/api/packages/uninstall/route-9ea2990be4b67136.js +1 -0
  491. package/.next/static/chunks/app/api/planned-executions/[id]/route-9ea2990be4b67136.js +1 -0
  492. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-9ea2990be4b67136.js +1 -0
  493. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-9ea2990be4b67136.js +1 -0
  494. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-9ea2990be4b67136.js +1 -0
  495. package/.next/static/chunks/app/api/planned-executions/reconcile/route-9ea2990be4b67136.js +1 -0
  496. package/.next/static/chunks/app/api/planned-executions/route-9ea2990be4b67136.js +1 -0
  497. package/.next/static/chunks/app/api/registry/auth/resend/route-9ea2990be4b67136.js +1 -0
  498. package/.next/static/chunks/app/api/registry/auth/reset/route-9ea2990be4b67136.js +1 -0
  499. package/.next/static/chunks/app/api/registry/auth/route-9ea2990be4b67136.js +1 -0
  500. package/.next/static/chunks/app/api/registry/feedback/route-9ea2990be4b67136.js +1 -0
  501. package/.next/static/chunks/app/api/registry/oauth/callback/route-9ea2990be4b67136.js +1 -0
  502. package/.next/static/chunks/app/api/registry/oauth/initiate/route-9ea2990be4b67136.js +1 -0
  503. package/.next/static/chunks/app/api/registry/packages/route-9ea2990be4b67136.js +1 -0
  504. package/.next/static/chunks/app/api/registry/publish/route-9ea2990be4b67136.js +1 -0
  505. package/.next/static/chunks/app/api/registry/settings/route-9ea2990be4b67136.js +1 -0
  506. package/.next/static/chunks/app/api/restore/route-9ea2990be4b67136.js +1 -0
  507. package/.next/static/chunks/app/api/runs/active/route-9ea2990be4b67136.js +1 -0
  508. package/.next/static/chunks/app/api/storage/route-9ea2990be4b67136.js +1 -0
  509. package/.next/static/chunks/app/api/telemetry/daily-active/route-9ea2990be4b67136.js +1 -0
  510. package/.next/static/chunks/app/api/update/route-9ea2990be4b67136.js +1 -0
  511. package/.next/static/chunks/app/api/waves/route-9ea2990be4b67136.js +1 -0
  512. package/.next/static/chunks/app/api/webhooks/[id]/route-9ea2990be4b67136.js +1 -0
  513. package/.next/static/chunks/app/chat/page-1d100e5d974c919e.js +1 -0
  514. package/.next/static/chunks/app/docs/page-3b9ce48854b2147d.js +1 -0
  515. package/.next/static/chunks/app/executions/page-10ec7d58c7fbdd6f.js +1 -0
  516. package/.next/static/chunks/app/flows/page-9a78a2915268b2f8.js +1 -0
  517. package/.next/static/chunks/app/layout-38b88f3b057f4852.js +1 -0
  518. package/.next/static/chunks/app/mcp/{page-6041156fc67ef361.js → page-56b43b2f8752e9a5.js} +1 -1
  519. package/.next/static/chunks/app/mcp-flows/route-9ea2990be4b67136.js +1 -0
  520. package/.next/static/chunks/app/mcp-proxy/[server]/route-9ea2990be4b67136.js +1 -0
  521. package/.next/static/chunks/app/models/page-808c0568ebc5e2c7.js +1 -0
  522. package/.next/static/chunks/app/packages/page-af6ec89522915206.js +1 -0
  523. package/.next/static/chunks/app/page-30bf4293efa47a47.js +1 -0
  524. package/.next/static/chunks/app/settings/page-59ae1b658838f0bc.js +1 -0
  525. package/.next/static/chunks/app/v1/chat/completions/route-9ea2990be4b67136.js +1 -0
  526. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-9ea2990be4b67136.js +1 -0
  527. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-9ea2990be4b67136.js +1 -0
  528. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-9ea2990be4b67136.js +1 -0
  529. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-9ea2990be4b67136.js +1 -0
  530. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-9ea2990be4b67136.js +1 -0
  531. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-9ea2990be4b67136.js +1 -0
  532. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-9ea2990be4b67136.js +1 -0
  533. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-9ea2990be4b67136.js +1 -0
  534. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-9ea2990be4b67136.js +1 -0
  535. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-9ea2990be4b67136.js +1 -0
  536. package/.next/static/chunks/app/v1/chat/conversations/route-9ea2990be4b67136.js +1 -0
  537. package/.next/static/chunks/app/v1/chat/events/route-9ea2990be4b67136.js +1 -0
  538. package/.next/static/chunks/app/v1/models/route-9ea2990be4b67136.js +1 -0
  539. package/.next/static/chunks/app/waves/{page-3cf4b47b12662196.js → page-dc99a16141dd902b.js} +1 -1
  540. package/.next/static/chunks/webpack-dccb4f149ebdedcc.js +1 -0
  541. package/.next/static/jfb1GsjSGMjBmwfa3kM26/_buildManifest.js +1 -0
  542. package/.next/trace +10 -10
  543. package/.next/types/app/api/flow/generator/route.ts +347 -0
  544. package/.next/types/app/api/registry/feedback/route.ts +347 -0
  545. package/.next/types/app/api/registry/packages/route.ts +347 -0
  546. package/.next/types/app/api/telemetry/daily-active/route.ts +347 -0
  547. package/.next/types/routes.d.ts +5 -1
  548. package/.next/types/validator.ts +36 -0
  549. package/README.md +46 -7
  550. package/next.config.mjs +2 -2
  551. package/package.json +4 -3
  552. package/.next/server/chunks/2180.js +0 -1
  553. package/.next/server/chunks/237.js +0 -1
  554. package/.next/server/chunks/3392.js +0 -82
  555. package/.next/server/chunks/4961.js +0 -2
  556. package/.next/server/chunks/510.js +0 -1
  557. package/.next/server/chunks/5150.js +0 -1
  558. package/.next/server/chunks/5561.js +0 -1
  559. package/.next/server/chunks/5705.js +0 -1
  560. package/.next/server/chunks/5829.js +0 -1
  561. package/.next/server/chunks/694.js +0 -3
  562. package/.next/server/chunks/7579.js +0 -83
  563. package/.next/server/chunks/7724.js +0 -1
  564. package/.next/server/chunks/8034.js +0 -1
  565. package/.next/server/chunks/8037.js +0 -1
  566. package/.next/server/chunks/8192.js +0 -12
  567. package/.next/server/chunks/826.js +0 -2
  568. package/.next/server/chunks/8366.js +0 -90
  569. package/.next/server/chunks/848.js +0 -39
  570. package/.next/server/chunks/8615.js +0 -1
  571. package/.next/server/chunks/9313.js +0 -1
  572. package/.next/server/chunks/9537.js +0 -39
  573. package/.next/server/chunks/9576.js +0 -2
  574. package/.next/server/chunks/9632.js +0 -1
  575. package/.next/server/chunks/9671.js +0 -1
  576. package/.next/server/chunks/9857.js +0 -1
  577. package/.next/static/A9jP2ydtYbqx-IayWP2Sg/_buildManifest.js +0 -1
  578. package/.next/static/chunks/1496-d478bce7d7c85080.js +0 -1
  579. package/.next/static/chunks/1572-b663a83bba28a0a1.js +0 -8
  580. package/.next/static/chunks/1641-e5ff8f112da0a335.js +0 -1
  581. package/.next/static/chunks/1988-bd73f26184e930c1.js +0 -1
  582. package/.next/static/chunks/2266-d812473724cc6643.js +0 -1
  583. package/.next/static/chunks/3089.a0856f8093b90939.js +0 -1
  584. package/.next/static/chunks/3560-5bdceef09b50e1c3.js +0 -1
  585. package/.next/static/chunks/3672-cd86ace43288da79.js +0 -1
  586. package/.next/static/chunks/3711-0050bb4d345c2c9c.js +0 -1
  587. package/.next/static/chunks/4147-20897d83b3cd3978.js +0 -39
  588. package/.next/static/chunks/435-17c79f3b9f8dd38d.js +0 -1
  589. package/.next/static/chunks/469-1f043fe082d9f475.js +0 -1
  590. package/.next/static/chunks/4740-62814d07b2b7f760.js +0 -1
  591. package/.next/static/chunks/5441-cb0c31de8bce65c3.js +0 -1
  592. package/.next/static/chunks/7111-44538f8a64241b74.js +0 -1
  593. package/.next/static/chunks/812-dfe7ba07ddb7a565.js +0 -1
  594. package/.next/static/chunks/8401-0f39d91810180a88.js +0 -1
  595. package/.next/static/chunks/8404-14ef0345dc401ac5.js +0 -1
  596. package/.next/static/chunks/8678-c6c6be2672f337f6.js +0 -1
  597. package/.next/static/chunks/8834-faf121e257b517d5.js +0 -1
  598. package/.next/static/chunks/8855-f802599c4af81cca.js +0 -1
  599. package/.next/static/chunks/9562-5494feecd8c6f7a3.js +0 -1
  600. package/.next/static/chunks/app/api/approvals/[id]/route-1a4c9e7a416ccbcf.js +0 -1
  601. package/.next/static/chunks/app/api/approvals/route-1a4c9e7a416ccbcf.js +0 -1
  602. package/.next/static/chunks/app/api/backup/route-1a4c9e7a416ccbcf.js +0 -1
  603. package/.next/static/chunks/app/api/browse/route-1a4c9e7a416ccbcf.js +0 -1
  604. package/.next/static/chunks/app/api/bugs/enhance/route-1a4c9e7a416ccbcf.js +0 -1
  605. package/.next/static/chunks/app/api/cwd/route-1a4c9e7a416ccbcf.js +0 -1
  606. package/.next/static/chunks/app/api/encryption/secure/route-1a4c9e7a416ccbcf.js +0 -1
  607. package/.next/static/chunks/app/api/env/route-1a4c9e7a416ccbcf.js +0 -1
  608. package/.next/static/chunks/app/api/flow/[id]/route-1a4c9e7a416ccbcf.js +0 -1
  609. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-1a4c9e7a416ccbcf.js +0 -1
  610. package/.next/static/chunks/app/api/flow/[id]/versions/route-1a4c9e7a416ccbcf.js +0 -1
  611. package/.next/static/chunks/app/api/flow/compile/route-1a4c9e7a416ccbcf.js +0 -1
  612. package/.next/static/chunks/app/api/flow/generate/route-1a4c9e7a416ccbcf.js +0 -1
  613. package/.next/static/chunks/app/api/flow/improve/route-1a4c9e7a416ccbcf.js +0 -1
  614. package/.next/static/chunks/app/api/flow/prompt-renderer/route-1a4c9e7a416ccbcf.js +0 -1
  615. package/.next/static/chunks/app/api/flow/quick-chat/route-1a4c9e7a416ccbcf.js +0 -1
  616. package/.next/static/chunks/app/api/flow/repair/route-1a4c9e7a416ccbcf.js +0 -1
  617. package/.next/static/chunks/app/api/flow/route-1a4c9e7a416ccbcf.js +0 -1
  618. package/.next/static/chunks/app/api/git/route-1a4c9e7a416ccbcf.js +0 -1
  619. package/.next/static/chunks/app/api/init/route-1a4c9e7a416ccbcf.js +0 -1
  620. package/.next/static/chunks/app/api/local-models/capability/route-1a4c9e7a416ccbcf.js +0 -1
  621. package/.next/static/chunks/app/api/local-models/pull/route-1a4c9e7a416ccbcf.js +0 -1
  622. package/.next/static/chunks/app/api/local-models/suggest/route-1a4c9e7a416ccbcf.js +0 -1
  623. package/.next/static/chunks/app/api/mcp/app-sandbox/route-1a4c9e7a416ccbcf.js +0 -1
  624. package/.next/static/chunks/app/api/mcp/cancel/route-1a4c9e7a416ccbcf.js +0 -1
  625. package/.next/static/chunks/app/api/mcp/oauth-capability/route-1a4c9e7a416ccbcf.js +0 -1
  626. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-1a4c9e7a416ccbcf.js +0 -1
  627. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-1a4c9e7a416ccbcf.js +0 -1
  628. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-1a4c9e7a416ccbcf.js +0 -1
  629. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-1a4c9e7a416ccbcf.js +0 -1
  630. package/.next/static/chunks/app/api/mcp/servers/[name]/route-1a4c9e7a416ccbcf.js +0 -1
  631. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-1a4c9e7a416ccbcf.js +0 -1
  632. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-1a4c9e7a416ccbcf.js +0 -1
  633. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-1a4c9e7a416ccbcf.js +0 -1
  634. package/.next/static/chunks/app/api/mcp/servers/route-1a4c9e7a416ccbcf.js +0 -1
  635. package/.next/static/chunks/app/api/mcp/test-connection/route-1a4c9e7a416ccbcf.js +0 -1
  636. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-1a4c9e7a416ccbcf.js +0 -1
  637. package/.next/static/chunks/app/api/mcp-registry/route-1a4c9e7a416ccbcf.js +0 -1
  638. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-1a4c9e7a416ccbcf.js +0 -1
  639. package/.next/static/chunks/app/api/model/[id]/route-1a4c9e7a416ccbcf.js +0 -1
  640. package/.next/static/chunks/app/api/model/provider/route-1a4c9e7a416ccbcf.js +0 -1
  641. package/.next/static/chunks/app/api/model/route-1a4c9e7a416ccbcf.js +0 -1
  642. package/.next/static/chunks/app/api/model/test/route-1a4c9e7a416ccbcf.js +0 -1
  643. package/.next/static/chunks/app/api/oauth/callback/route-1a4c9e7a416ccbcf.js +0 -1
  644. package/.next/static/chunks/app/api/oauth/initiate/route-1a4c9e7a416ccbcf.js +0 -1
  645. package/.next/static/chunks/app/api/oauth/reset/route-1a4c9e7a416ccbcf.js +0 -1
  646. package/.next/static/chunks/app/api/packages/build/route-1a4c9e7a416ccbcf.js +0 -1
  647. package/.next/static/chunks/app/api/packages/derive-secrets/route-1a4c9e7a416ccbcf.js +0 -1
  648. package/.next/static/chunks/app/api/packages/install/route-1a4c9e7a416ccbcf.js +0 -1
  649. package/.next/static/chunks/app/api/packages/install/status/route-1a4c9e7a416ccbcf.js +0 -1
  650. package/.next/static/chunks/app/api/packages/installed/route-1a4c9e7a416ccbcf.js +0 -1
  651. package/.next/static/chunks/app/api/packages/resolve/route-1a4c9e7a416ccbcf.js +0 -1
  652. package/.next/static/chunks/app/api/packages/scan-targets/route-1a4c9e7a416ccbcf.js +0 -1
  653. package/.next/static/chunks/app/api/packages/search/route-1a4c9e7a416ccbcf.js +0 -1
  654. package/.next/static/chunks/app/api/packages/uninstall/route-1a4c9e7a416ccbcf.js +0 -1
  655. package/.next/static/chunks/app/api/planned-executions/[id]/route-1a4c9e7a416ccbcf.js +0 -1
  656. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-1a4c9e7a416ccbcf.js +0 -1
  657. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-1a4c9e7a416ccbcf.js +0 -1
  658. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-1a4c9e7a416ccbcf.js +0 -1
  659. package/.next/static/chunks/app/api/planned-executions/reconcile/route-1a4c9e7a416ccbcf.js +0 -1
  660. package/.next/static/chunks/app/api/planned-executions/route-1a4c9e7a416ccbcf.js +0 -1
  661. package/.next/static/chunks/app/api/registry/auth/resend/route-1a4c9e7a416ccbcf.js +0 -1
  662. package/.next/static/chunks/app/api/registry/auth/reset/route-1a4c9e7a416ccbcf.js +0 -1
  663. package/.next/static/chunks/app/api/registry/auth/route-1a4c9e7a416ccbcf.js +0 -1
  664. package/.next/static/chunks/app/api/registry/oauth/callback/route-1a4c9e7a416ccbcf.js +0 -1
  665. package/.next/static/chunks/app/api/registry/oauth/initiate/route-1a4c9e7a416ccbcf.js +0 -1
  666. package/.next/static/chunks/app/api/registry/publish/route-1a4c9e7a416ccbcf.js +0 -1
  667. package/.next/static/chunks/app/api/registry/settings/route-1a4c9e7a416ccbcf.js +0 -1
  668. package/.next/static/chunks/app/api/restore/route-1a4c9e7a416ccbcf.js +0 -1
  669. package/.next/static/chunks/app/api/runs/active/route-1a4c9e7a416ccbcf.js +0 -1
  670. package/.next/static/chunks/app/api/storage/route-1a4c9e7a416ccbcf.js +0 -1
  671. package/.next/static/chunks/app/api/update/route-1a4c9e7a416ccbcf.js +0 -1
  672. package/.next/static/chunks/app/api/waves/route-1a4c9e7a416ccbcf.js +0 -1
  673. package/.next/static/chunks/app/api/webhooks/[id]/route-1a4c9e7a416ccbcf.js +0 -1
  674. package/.next/static/chunks/app/chat/page-558edb21321a32d0.js +0 -1
  675. package/.next/static/chunks/app/docs/page-fc30f613607b8a26.js +0 -1
  676. package/.next/static/chunks/app/executions/page-e71689c7256af1e8.js +0 -1
  677. package/.next/static/chunks/app/flows/page-e90e8d7b4c1bd1c8.js +0 -1
  678. package/.next/static/chunks/app/layout-038b35b382eef11d.js +0 -1
  679. package/.next/static/chunks/app/mcp-flows/route-1a4c9e7a416ccbcf.js +0 -1
  680. package/.next/static/chunks/app/mcp-proxy/[server]/route-1a4c9e7a416ccbcf.js +0 -1
  681. package/.next/static/chunks/app/models/page-d16f2721e7a93b43.js +0 -1
  682. package/.next/static/chunks/app/packages/page-c6b0e7aa95bc1064.js +0 -1
  683. package/.next/static/chunks/app/page-5c7fccd019942d46.js +0 -1
  684. package/.next/static/chunks/app/settings/page-fb336bb049bab72a.js +0 -1
  685. package/.next/static/chunks/app/v1/chat/completions/route-1a4c9e7a416ccbcf.js +0 -1
  686. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-1a4c9e7a416ccbcf.js +0 -1
  687. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-1a4c9e7a416ccbcf.js +0 -1
  688. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-1a4c9e7a416ccbcf.js +0 -1
  689. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-1a4c9e7a416ccbcf.js +0 -1
  690. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-1a4c9e7a416ccbcf.js +0 -1
  691. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-1a4c9e7a416ccbcf.js +0 -1
  692. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-1a4c9e7a416ccbcf.js +0 -1
  693. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-1a4c9e7a416ccbcf.js +0 -1
  694. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-1a4c9e7a416ccbcf.js +0 -1
  695. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-1a4c9e7a416ccbcf.js +0 -1
  696. package/.next/static/chunks/app/v1/chat/conversations/route-1a4c9e7a416ccbcf.js +0 -1
  697. package/.next/static/chunks/app/v1/chat/events/route-1a4c9e7a416ccbcf.js +0 -1
  698. package/.next/static/chunks/app/v1/models/route-1a4c9e7a416ccbcf.js +0 -1
  699. package/.next/static/chunks/webpack-2d8e0c13c0b865fe.js +0 -1
  700. /package/.next/static/{A9jP2ydtYbqx-IayWP2Sg → jfb1GsjSGMjBmwfa3kM26}/_ssgManifest.js +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";exports.id=3912,exports.ids=[1925,3629,3912,4306,6793,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()},3534:(a,b,c)=>{c.r(b),c.d(b,{"400f9ef83b77b4fa18eef936c40907123810309034":()=>d.V,"603b08e3f479805caab0c86a5988dc208d2bb8d300":()=>d.resolveGlobalVars,"60c1cb1fb6ec50cadfd68292dc2b7c6cc8e1d8a86f":()=>d.G});var d=c(73456)},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,"603b08e3f479805caab0c86a5988dc208d2bb8d300",null),(0,d.A)(l,"400f9ef83b77b4fa18eef936c40907123810309034",null),(0,d.A)(m,"60c1cb1fb6ec50cadfd68292dc2b7c6cc8e1d8a86f",null)},75879:(a,b,c)=>{Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},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
+ "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)}}};
@@ -0,0 +1,8 @@
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.
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.
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.
6
+
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:()=>{}};
@@ -1 +1 @@
1
- "use strict";exports.id=94,exports.ids=[94],exports.modules={50094:(a,b,c)=>{c.d(b,{filesystemCallTool:()=>O,filesystemToolDefinitions:()=>t});var d=c(33873),e=c.n(d),f=c(29021),g=c(55511),h=c(4984),i=c.n(h),j=c(18230),k=c(85510),l=c(94749),m=c(48092),n=c(65858),o=c(19724);let p=(0,j.h)("backend/services/mcp/internal/filesystemTools");function q(a){return{content:[{type:"text",text:JSON.stringify(a,null,2)}],structuredContent:a}}function r(a){return{content:[{type:"text",text:JSON.stringify({error:a},null,2)}],isError:!0}}function s(a,b){let c="string"==typeof a?a.trim():"";if(!c)throw Error('Provide "path".');let d=(0,k.getDataDir)(),f=e().isAbsolute(c)?e().resolve(c):e().resolve(d,c),g=(0,n.bz)(f);if(g.denied)throw Error(`Path "${f}" is within a protected location (${g.matchedRoot}) and is blocked by the FLUJO built-in server protected-path policy. Set ${n.wp}=1 to override (operator only).`);if(0===b.length||!b.some(a=>(0,m.F)(a,f)))throw Error(`Path "${f}" is outside the configured filesystem roots.`);return f}function t(){let a={type:"string",description:"File or directory path. Relative paths resolve against the FLUJO data directory; absolute paths are used as-is."};return[{name:"read_file",description:'Read a text file and return its content. Optionally read only a line range with "from"/"to" (1-based, inclusive). For large files (> 100 KB) read WHOLE (no "from"/"to"), a "pattern" is REQUIRED: the server greps the file and returns only matching lines (with a little surrounding context) so you can follow up with targeted "from"/"to" reads. Pass pattern "*" to force-read the entire large file anyway. Returns { path, from, to, totalLines, content, truncated, contentHash, matches? }. Pass the returned contentHash back as "expectedHash" on a follow-up edit_file/write_file to guard against the file changing in between (TOCTOU).',inputSchema:{type:"object",properties:{path:a,from:{type:"number",description:"Optional 1-based first line to return (inclusive)."},to:{type:"number",description:"Optional 1-based last line to return (inclusive)."},pattern:{type:"string",description:'Case-insensitive substring to grep for. Required to read a large file whole without a "from"/"to" range; matching lines (plus context) are returned instead of the full body. Use "*" to read the whole large file anyway.'}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},from:{type:"number"},to:{type:"number"},totalLines:{type:"number"},truncated:{type:"boolean"},content:{type:"string"},contentHash:{type:"string",description:'SHA-256 (hex) of the raw file content. Pass this back as "expectedHash" to edit_file/write_file to guard against the file changing between read and write (TOCTOU).'},matches:{type:"array",items:{type:"object",properties:{line:{type:"number"},text:{type:"string"}},required:["line","text"]}}},required:["path","from","to","totalLines","truncated","content"]}},{name:"write_file",description:'Create or write a text file (parent directories are created). "mode": "overwrite" (default) replaces the whole file, or a line range when "startLine"/"endLine" (1-based inclusive) are given; "append" adds content at the end; "insert" inserts content before "startLine". Optionally pass "expectedHash" (the contentHash from a prior read_file) to reject the write if the file changed on disk since it was read (TOCTOU guard); ignored for a whole-file overwrite. Returns { path, bytesWritten, mode, ... }.',_meta:{ui:{resourceUri:"ui://devcanvas/diff"}},inputSchema:{type:"object",properties:{path:a,content:{type:"string",description:"The content to write/insert/append."},mode:{type:"string",enum:["overwrite","append","insert"],description:'Write mode (default "overwrite").'},startLine:{type:"number",description:'For "insert": line to insert before. For "overwrite": first line of the range to replace (1-based).'},endLine:{type:"number",description:'For "overwrite": last line (inclusive, 1-based) of the range to replace.'},expectedHash:{type:"string",description:"Optional SHA-256 (contentHash from read_file). For append/insert/range-overwrite modes, the write is rejected if the file no longer hashes to this value (TOCTOU guard)."}},required:["path","content"]},outputSchema:{type:"object",properties:{path:{type:"string"},bytesWritten:{type:"number"},mode:{type:"string"},startLine:{type:"number"},endLine:{type:"number"},linesReplaced:{type:"number"},linesInserted:{type:"number"}},required:["path","bytesWritten","mode"]}},{name:"edit_file",description:'Edit a text file two ways (mutually exclusive): (1) "edits": [{ oldText, newText, startLine?, endLine? }] literal find/replace — each replaces the unique occurrence of oldText. startLine/endLine are an optional disambiguation HINT (if exactly one match starts in that range it wins); a wrong/missing range still works as long as oldText is unique in the file. Include enough surrounding context to make oldText unique. Or (2) "diff": a unified diff string ("@@ -a,b +c,d @@" hunks) applied atomically — hunks are relocated to where their context actually matches, so slightly-off @@ line numbers still apply, and CRLF files are handled. Fails with no partial write only when text is missing/ambiguous or a hunk context is not found. Optionally pass "expectedHash" (the contentHash from a prior read_file) to reject the edit if the file changed on disk since it was read (TOCTOU guard). Returns { path, editsApplied|applied, diff:{added,removed} }.',_meta:{ui:{resourceUri:"ui://devcanvas/diff"}},inputSchema:{type:"object",properties:{path:a,edits:{type:"array",description:"List of literal { oldText, newText } edits applied in order (optionally scoped with startLine/endLine).",items:{type:"object",properties:{oldText:{type:"string",description:"Exact text to find."},newText:{type:"string",description:"Replacement text."},startLine:{type:"number",description:"Optional 1-based first line to scope this edit to."},endLine:{type:"number",description:"Optional 1-based last line (inclusive) to scope this edit to."}},required:["oldText","newText"]}},diff:{type:"string",description:'A unified diff to apply atomically. Mutually exclusive with "edits".'},startLine:{type:"number",description:"Optional default 1-based first line to scope all literal edits to."},endLine:{type:"number",description:"Optional default 1-based last line (inclusive) to scope all literal edits to."},expectedHash:{type:"string",description:"Optional SHA-256 (contentHash from read_file). If provided and the freshly-read file no longer hashes to it, the edit is rejected with no changes written (TOCTOU guard)."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},mode:{type:"string"},editsApplied:{type:"number"},applied:{type:"boolean"},diff:{type:"object",properties:{added:{type:"number"},removed:{type:"number"}},required:["added","removed"]}},required:["path","diff"]}},{name:"list_dir",description:'List the entries of a directory. Returns { path, entries: [{ name, type, size }] } where type is "file" | "directory" | "other".',inputSchema:{type:"object",properties:{path:a},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},entries:{type:"array",items:{type:"object",properties:{name:{type:"string"},type:{type:"string"},size:{type:"number"}},required:["name","type","size"]}}},required:["path","entries"]}},{name:"file_browser_ui",description:'Open an interactive file browser in the chat so the USER can pick a file. This returns IMMEDIATELY without a selection — the browser is shown to the user and the file they choose arrives afterwards as a follow-up user message (e.g. "Selected file: <path>"). After calling this tool you MUST stop and wait for that message; do not guess a path or continue until the user has selected.',_meta:{ui:{resourceUri:"ui://filesystem/browser"}},inputSchema:{type:"object",properties:{path:{...a,description:"Optional starting directory for the browser (defaults to the FLUJO data directory)."}},required:[]}},{name:"dir_tree",description:"Return a recursive, depth-limited directory tree as nested JSON. Returns { path, depth, tree }.",inputSchema:{type:"object",properties:{path:a,depth:{type:"number",description:"Maximum recursion depth (default 3, max 10)."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},depth:{type:"number"},truncated:{type:"boolean"},tree:{type:"array"}},required:["path","depth","tree"]}},{name:"search",description:'Search a directory tree. Match file/dir NAMES against "namePattern" (substring, case-insensitive) and/or file CONTENT against "content" (substring, case-insensitive). Content search DOES look inside every text file, returning each matching line with its 1-based line number; likely-binary and very large files are skipped for speed. Returns { matches: [{ path, line?, text? }], truncated }.',inputSchema:{type:"object",properties:{path:a,namePattern:{type:"string",description:"Optional case-insensitive substring to match against entry names."},content:{type:"string",description:"Optional case-insensitive substring to match inside text files."}},required:["path"]},outputSchema:{type:"object",properties:{matches:{type:"array",items:{type:"object",properties:{path:{type:"string"},line:{type:"number"},text:{type:"string"}},required:["path"]}},truncated:{type:"boolean"}},required:["matches","truncated"]}},{name:"get_file_info",description:"Stat a path. Returns { path, type, size, isFile, isDirectory, createdAt, modifiedAt }.",inputSchema:{type:"object",properties:{path:a},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},type:{type:"string"},size:{type:"number"},isFile:{type:"boolean"},isDirectory:{type:"boolean"},createdAt:{type:"string"},modifiedAt:{type:"string"}},required:["path","type","size","isFile","isDirectory","createdAt","modifiedAt"]}},{name:"create_directory",description:"Create a directory (recursively). Succeeds if it already exists. Returns { path, created }.",inputSchema:{type:"object",properties:{path:a},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},created:{type:"boolean"}},required:["path","created"]}},{name:"move",description:'Move or rename a file/directory from "source" to "destination". Returns { source, destination }.',inputSchema:{type:"object",properties:{source:{type:"string",description:"Existing path to move."},destination:{type:"string",description:"Target path."}},required:["source","destination"]},outputSchema:{type:"object",properties:{source:{type:"string"},destination:{type:"string"}},required:["source","destination"]}},{name:"delete",description:'Delete a file or directory. Pass "recursive": true to remove a non-empty directory. Returns { path, deleted }.',inputSchema:{type:"object",properties:{path:a,recursive:{type:"boolean",description:"Remove directories and their contents recursively."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},deleted:{type:"boolean"}},required:["path","deleted"]}},{name:"get_allowed_directories",description:"Returns the list of directories that this filesystem MCP server is currently allowed to access. The list is the merged result of server-level roots (configured via FLUJO MCP settings), MCP-node-level roots (set in the FlowBuilder), and the FLUJO_FS_ROOTS environment variable ceiling. When no roots are configured at all, returns the FLUJO data directory as the default (so the file browser is usable out of the box).",inputSchema:{type:"object",properties:{},required:[]},outputSchema:{type:"object",properties:{directories:{type:"array",items:{type:"string"},description:"Absolute paths of all allowed directories."}},required:["directories"]}}]}function u(a){return a.replace(/\r\n?/g,"\n").split("\n")}function v(a){return a.includes("\r\n")?"\r\n":"\n"}function w(a){return(0,g.createHash)("sha256").update(a,"utf8").digest("hex")}function x(a){return a.startsWith("\uFEFF")?{bom:"\uFEFF",body:a.slice(1)}:{bom:"",body:a}}let y="File changed after permission approval. Read it again before editing. No changes written.";function z(a){let b=Math.min(a.length,8e3);for(let c=0;c<b;c++)if(0===a[c])return!0;return!1}async function A(a,b,c){let d=b.toLowerCase(),e=[],g=!1,h=(0,f.createReadStream)(a,{encoding:"utf8"}),j=i().createInterface({input:h,crlfDelay:1/0}),k=0;try{for await(let a of j)if(k++,a.toLowerCase().includes(d)&&(e.push({line:k,text:a.slice(0,400)}),e.length>=c)){g=!0;break}}finally{j.close(),h.destroy()}return{matches:e,truncated:g}}async function B(a,b){let c=s(a.path,b),d="number"==typeof a.from||"number"==typeof a.to,e="string"==typeof a.pattern?a.pattern.trim():"",g=0;try{g=(await f.promises.stat(c)).size}catch{}if(g>1e5&&!d&&!e)return r(`File is large (${g} bytes > 100000 threshold). Reading it whole would flood the context. Provide a "pattern" to grep for (matching lines + context are returned, then read targeted ranges with "from"/"to"), or pass pattern "*" to read the whole file anyway.`);if(e&&"*"!==e&&!d){let a=await f.promises.readFile(c);if(z(a))return r(`File appears to be binary; cannot grep for a pattern: ${c}`);let b=a.toString("utf8"),d=u(b),h=d.length,i=e.toLowerCase(),j=[];for(let a=0;a<d.length&&(!d[a].toLowerCase().includes(i)||(j.push({line:a+1,text:d[a].slice(0,400)}),!(j.length>=200)));a++);let k=j.length>=200,l=new Set;for(let a of j)for(let b=a.line-2;b<=a.line+2;b++)b>=1&&b<=h&&l.add(b);let m=[...l].sort((a,b)=>a-b),n=[],p=0;for(let a of m)p&&a>p+1&&n.push("…"),n.push(`${a}: ${d[a-1]}`),p=a;let s=n.join("\n");return s.length>2e5&&(s=s.slice(0,2e5)+"\n…[truncated]"),(0,o.Wk)(c,"read",g),q({path:c,from:1,to:h,totalLines:h,truncated:k,content:j.length?s:`(no lines matched pattern ${JSON.stringify(e)})`,matches:j,contentHash:w(b)})}let h=await f.promises.readFile(c,"utf8"),i=u(h),j=i.length,k="number"==typeof a.from?Math.max(1,Math.floor(a.from)):1,l="number"==typeof a.to?Math.floor(a.to):j;l<k&&([k,l]=[l,k]),l=Math.min(l,j);let m=d?i.slice(k-1,l).join("\n"):h,n=!1;return m.length>2e5&&(m=m.slice(0,2e5)+"\n…[truncated]",n=!0),(0,o.Wk)(c,"read",g),q({path:c,from:d?k:1,to:d?l:j,totalLines:j,truncated:n,content:m,contentHash:w(h)})}async function C(a,b){let c=s(a.path,b),d="string"==typeof a.content?a.content:"",g="append"===a.mode||"insert"===a.mode?a.mode:"overwrite",h="number"==typeof a.startLine||"number"==typeof a.endLine;if(await f.promises.mkdir(e().dirname(c),{recursive:!0}),(0,o.Wk)(c,"write"),"overwrite"===g&&!h)return await f.promises.writeFile(c,d,"utf8"),q({path:c,bytesWritten:Buffer.byteLength(d,"utf8"),mode:"overwrite"});let i="";try{i=await f.promises.readFile(c,"utf8")}catch{i=""}let j="string"==typeof a.expectedHash?a.expectedHash:void 0;if(j&&w(i)!==j)return r(y);let{bom:k,body:l}=x(i);if("append"===g){let a=!l.length||l.endsWith("\n")||l.endsWith("\r\n")?"":v(l),b=k+l+a+d;return await f.promises.writeFile(c,b,"utf8"),q({path:c,bytesWritten:Buffer.byteLength(b,"utf8"),mode:"append"})}let m=v(l),n=l.length?l.split(/\r?\n/):[],p=d.split(/\r?\n/),t=n.length;if("insert"===g){let b="number"==typeof a.startLine?Math.max(1,Math.floor(a.startLine)):t+1,d=Math.min(b-1,t);n.splice(d,0,...p);let e=k+n.join(m);return await f.promises.writeFile(c,e,"utf8"),q({path:c,bytesWritten:Buffer.byteLength(e,"utf8"),mode:"insert",startLine:b,linesInserted:p.length})}let u="number"==typeof a.startLine?Math.max(1,Math.floor(a.startLine)):1,z="number"==typeof a.endLine?Math.floor(a.endLine):u;z<u&&([u,z]=[z,u]);let A=Math.max(0,(z=Math.min(z,t))-u+1);n.splice(u-1,A,...p);let B=k+n.join(m);return await f.promises.writeFile(c,B,"utf8"),q({path:c,bytesWritten:Buffer.byteLength(B,"utf8"),mode:"overwrite",startLine:u,endLine:z,linesReplaced:A})}async function D(a,b){let c=s(a.path,b),d="string"==typeof a.diff&&a.diff.trim().length>0,e=Array.isArray(a.edits)&&a.edits.length>0;if(d&&e)return r('Provide either "diff" or "edits", not both.');let g=await f.promises.readFile(c,"utf8"),h="string"==typeof a.expectedHash?a.expectedHash:void 0;if(h&&w(g)!==h)return r(y);let{bom:i,body:j}=x(g);if(d){let b,d=v(j),e=j.replace(/\r\n?/g,"\n");try{b=function(a,b){let c=a.split("\n"),d=b.split(/\r?\n/),e=/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/,f=[],g=null;for(let a=0;a<d.length;a++){let b=d[a];if(void 0===b)break;let c=e.exec(b);if(c){g={oldStart:parseInt(c[1],10),ops:[]},f.push(g);continue}if(b.startsWith("--- ")||b.startsWith("+++ ")){g=null;continue}if(!g)continue;let h=b.length?b[0]:" ",i=b.length?b.slice(1):"";if(" "===h||"-"===h||"+"===h)g.ops.push({tag:h,body:i});else if("\\"===h);else throw Error(`unexpected diff line: ${JSON.stringify(b)}`)}if(0===f.length)throw Error("no unified-diff hunks (@@ ... @@) found");let h=[],i=0,j=0,k=0;for(let a of f){let b=function(a,b,c,d){if(0===b.length)return Math.min(Math.max(c,d),a.length);let e=a.length-b.length,f=c=>{if(c<d||c>e)return!1;for(let d=0;d<b.length;d++)if(a[c+d]!==b[d])return!1;return!0},g=Math.max(d,c);if(f(g))return g;let h=Math.max(g-d,e-g);for(let a=1;a<=h;a++){if(f(g-a))return g-a;if(f(g+a))return g+a}throw Error(`could not locate hunk near line ${c+1}; its context/removed lines do not match the file. First expected line: ${JSON.stringify(b[0])}`)}(c,a.ops.filter(a=>" "===a.tag||"-"===a.tag).map(a=>a.body),Math.max(0,a.oldStart-1),i);if(b<i)throw Error("overlapping or out-of-order hunks");for(;i<b;)h.push(c[i]),i++;for(let b of a.ops)" "===b.tag?(h.push(c[i]),i++):"-"===b.tag?(i++,k++):(h.push(b.body),j++)}for(;i<c.length;)h.push(c[i]),i++;return{result:h.join("\n"),added:j,removed:k}}(e,a.diff)}catch(a){return r(`Diff apply failed: ${a instanceof Error?a.message:String(a)}. No changes written.`)}let g=i+("\r\n"===d?b.result.replace(/\n/g,"\r\n"):b.result);return await f.promises.writeFile(c,g,"utf8"),(0,o.Wk)(c,"write"),q({path:c,applied:!0,mode:"diff",diff:{added:b.added,removed:b.removed}})}let k=Array.isArray(a.edits)?a.edits:[];if(0===k.length)return r('Provide a non-empty "edits" array of { oldText, newText } or a "diff" string.');let l="number"==typeof a.startLine?a.startLine:void 0,m="number"==typeof a.endLine?a.endLine:void 0,n=v(j),p=j.replace(/\r\n?/g,"\n"),t=0;for(let a of k){let b="string"==typeof a.oldText?a.oldText.replace(/\r\n?/g,"\n"):"",d="string"==typeof a.newText?a.newText.replace(/\r\n?/g,"\n"):"";if(!b)return r(`Edit #${t+1} has an empty "oldText".`);let e="number"==typeof a.startLine?a.startLine:l,f="number"==typeof a.endLine?a.endLine:m,g=void 0!==e||void 0!==f,h=[];for(let a=p.indexOf(b);-1!==a;a=p.indexOf(b,a+1))h.push(a);if(0===h.length)return r(`Edit #${t+1}: "oldText" not found in ${c}. No changes written.`);let i=-1;if(g){let{lo:a,hi:b}=function(a,b,c){if(void 0===b&&void 0===c)return{lo:0,hi:a.length};let d=a.split("\n"),e=Math.max(1,Math.floor(b??1)),f=Math.min(d.length,Math.floor(c??d.length)),g=0;for(let a=0;a<e-1&&a<d.length;a++)g+=d[a].length+1;let h=g;for(let a=e-1;a<f&&a<d.length;a++)h+=d[a].length+ +(a<d.length-1);return{lo:g,hi:Math.max(g,h)}}(p,e,f),c=h.filter(c=>c>=a&&c<b);1===c.length&&(i=c[0])}if(-1===i)if(1!==h.length)return r(`Edit #${t+1}: "oldText" is ambiguous (appears ${h.length} times); add more surrounding context or a tighter startLine/endLine so exactly one occurrence is in range. No changes written.`);else i=h[0];p=p.slice(0,i)+d+p.slice(i+b.length),t+=1}let z=function(a,b){let c=u(a),d=u(b),e=new Map;for(let a of d)e.set(a,(e.get(a)??0)+1);let f=new Map;for(let a of c)f.set(a,(f.get(a)??0)+1);let g=0;for(let[a,b]of f)g+=Math.max(0,b-(e.get(a)??0));let h=0;for(let[a,b]of e)h+=Math.max(0,b-(f.get(a)??0));return{added:h,removed:g}}(j,p),A=i+("\r\n"===n?p.replace(/\n/g,"\r\n"):p);return await f.promises.writeFile(c,A,"utf8"),(0,o.Wk)(c,"write"),q({path:c,mode:"edits",editsApplied:t,diff:z})}async function E(a){try{let b=await f.promises.lstat(a);if(b.isFile())return"file";if(b.isDirectory())return"directory";return"other"}catch{return"other"}}async function F(a,b){let c=s(a.path,b),d=await f.promises.readdir(c),g=await Promise.all(d.map(async a=>{let b=e().join(c,a),d=await E(b),g=0;try{g=(await f.promises.stat(b)).size}catch{}return{name:a,type:d,size:g}}));return g.sort((a,b)=>a.type===b.type?a.name.localeCompare(b.name):"directory"===a.type?-1:1),q({path:c,entries:g})}async function G(a,b){let c=s(a.path,b),d=Math.min("number"==typeof a.depth?Math.max(1,Math.floor(a.depth)):3,10),g=0,h=!1;async function i(a,b){let c;if(b>d||h)return[];try{c=await f.promises.readdir(a)}catch{return[]}c.sort((a,b)=>a.localeCompare(b));let j=[];for(let f of c){if(++g>5e3){h=!0;break}let c=e().join(a,f),k=await E(c),l={name:f,type:k};"directory"===k&&b<d&&(l.children=await i(c,b+1)),j.push(l)}return j}let j=await i(c,1);return q({path:c,depth:d,truncated:h,tree:j})}async function H(a,b,c){let d;try{d=await f.promises.stat(a)}catch{return[]}if(!d.isFile()||d.size>5e6)return[];try{let b=await f.promises.open(a,"r");try{let a=Buffer.alloc(Math.min(8e3,d.size));if(a.length&&await b.read(a,0,a.length,0),z(a))return[]}finally{await b.close()}}catch{return[]}let{matches:e}=await A(a,b,Math.max(1,c));return e.map(b=>({path:a,line:b.line,text:b.text}))}async function I(a,b){let c=s(a.path,b),d="string"==typeof a.namePattern?a.namePattern.toLowerCase():"",g="string"==typeof a.content?a.content:"";if(!d&&!g)return r('Provide "namePattern" and/or "content" to search for.');let h=[],i=!1,j=[];async function k(a){let b;if(!i){try{b=await f.promises.readdir(a)}catch{return}for(let c of b){if(i)return;let b=e().join(a,c),f=await E(b);if(d&&c.toLowerCase().includes(d)&&(h.push({path:b}),h.length>=1e3)){i=!0;return}"directory"===f?await k(b):"file"===f&&g&&j.push(b)}}}if(await k(c),g&&!i)for(let a=0;a<j.length&&!i;a+=16){let b=j.slice(a,a+16);for(let a of(await Promise.all(b.map(a=>H(a,g,1e3))))){for(let b of a)if(h.push(b),h.length>=1e3){i=!0;break}if(i)break}}return q({matches:h,truncated:i})}async function J(a,b){let c=s(a.path,b),d=await f.promises.stat(c);return q({path:c,type:d.isFile()?"file":d.isDirectory()?"directory":"other",size:d.size,isFile:d.isFile(),isDirectory:d.isDirectory(),createdAt:d.birthtime.toISOString(),modifiedAt:d.mtime.toISOString()})}async function K(a,b){let c=s(a.path,b);return await f.promises.mkdir(c,{recursive:!0}),q({path:c,created:!0})}async function L(a,b){let c=s(a.source,b),d=s(a.destination,b);return await f.promises.mkdir(e().dirname(d),{recursive:!0}),await f.promises.rename(c,d),q({source:c,destination:d})}async function M(a,b){let c=s(a.path,b),d=!0===a.recursive;return await f.promises.rm(c,{recursive:d,force:!1}),q({path:c,deleted:!0})}async function N(a){return q({directories:a})}async function O(a,b,c){try{if("file_browser_ui"===a)return function(a,b=!1){return{content:[{type:"text",text:a}],...b?{isError:!0}:{}}}("File browser shown to the user. Waiting for them to select a file — their choice will arrive as a follow-up message. Do not proceed until then.");let d=await (0,m.loadEffectiveRoots)(l.K3,"FLUJO_FS_ROOTS",c);switch(a){case"read_file":return await B(b,d);case"write_file":return await C(b,d);case"edit_file":return await D(b,d);case"list_dir":return await F(b,d);case"dir_tree":return await G(b,d);case"search":return await I(b,d);case"get_file_info":return await J(b,d);case"create_directory":return await K(b,d);case"move":return await L(b,d);case"delete":return await M(b,d);case"get_allowed_directories":return await N(d);default:return r(`Unknown tool on the built-in filesystem server: ${a}`)}}catch(c){let b=c instanceof Error?c.message:String(c);return p.warn("filesystemCallTool failed",{toolName:a,err:c}),{isError:!0,content:[{type:"text",text:JSON.stringify({error:b})}],structuredContent:{error:b}}}}},65858:(a,b,c)=>{c.d(b,{bz:()=>m,wp:()=>j});var d=c(33873),e=c.n(d),f=c(21820),g=c.n(f),h=c(85510),i=c(48092);let j="FLUJO_ALLOW_PROTECTED_PATHS",k=null;function l(a,...b){return e().resolve(a,...b)}function m(a){let b=e().resolve(a);if((function(){let a=[];try{a.push(e().resolve((0,h.getDataDir)()))}catch{}try{a.push(e().resolve(g().tmpdir()))}catch{}return a})().some(a=>(0,i.F)(a,b)))return{denied:!1};for(let a of function(){var a;let b="string"==typeof(a=process.env[j])&&/^(1|true|yes|on)$/i.test(a.trim()),c=(0,h.getHomeDir)(),d=`${b?"off":"on"}::${c}`;if(k&&k.key===d)return k.paths;let f=b?[]:function(a){let b=[];if("win32"===process.platform)for(let c of["AppData","Downloads","Desktop","Documents","Pictures","Music","Videos","OneDrive"])b.push(l(a,c));else if("darwin"===process.platform){for(let c of["Downloads","Desktop","Documents","Pictures","Music","Movies"])b.push(l(a,c));for(let c of["Library/Mail","Library/Messages","Library/Safari","Library/Cookies","Library/Calendars","Library/Application Support/AddressBook","Library/Application Support/com.apple.TCC","Library/PersonalizationPortrait","Library/Metadata/CoreSpotlight","Library/Suggestions"])b.push(l(a,c));for(let a of["/.Spotlight-V100","/.fseventsd","/.DocumentRevisions-V100"])b.push(e().resolve(a))}else for(let c of["Documents","Downloads","Desktop",".ssh",".gnupg",".aws",".config"])b.push(l(a,c));return Array.from(new Set(b))}(c);return k={key:d,paths:f},f}())if((0,i.F)(a,b))return{denied:!0,matchedRoot:a};return{denied:!1}}}};
1
+ "use strict";exports.id=94,exports.ids=[94],exports.modules={50094:(a,b,c)=>{c.d(b,{filesystemCallTool:()=>R,filesystemToolDefinitions:()=>w});var d=c(33873),e=c.n(d),f=c(29021),g=c(55511),h=c(4984),i=c.n(h),j=c(18230),k=c(85510),l=c(94749),m=c(48092),n=c(65858),o=c(19724);let p=(0,j.h)("backend/services/mcp/internal/filesystemTools"),q={readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},r={readOnlyHint:!1,destructiveHint:!1,openWorldHint:!1},s={readOnlyHint:!1,destructiveHint:!0,openWorldHint:!1};function t(a){return{content:[{type:"text",text:JSON.stringify(a,null,2)}],structuredContent:a}}function u(a){return{content:[{type:"text",text:JSON.stringify({error:a},null,2)}],isError:!0}}async function v(a,b){let c="string"==typeof a?a.trim():"";if(!c)throw Error('Provide "path".');let d=(0,k.getDataDir)(),f=e().isAbsolute(c)?e().resolve(c):e().resolve(d,c);if(await (0,n.cd)()){let a=(0,n.bz)(f);if(a.denied)throw Error(`Path "${f}" is within a protected location (${a.matchedRoot}) and is blocked by the FLUJO built-in server protected-path policy. Disable "Protect sensitive home-directory paths" in Experimental Features or set ${n.wp}=1 to override.`)}if(0===b.length||!b.some(a=>(0,m.F)(a,f)))throw Error(`Path "${f}" is outside the configured filesystem roots.`);return f}function w(){let a={type:"string",description:"File or directory path. Relative paths resolve against the FLUJO data directory; absolute paths are used as-is."};return[{name:"read_file",annotations:q,description:'Read a text file and return its content. Optionally read only a line range with "from"/"to" (1-based, inclusive). For large files (> 100 KB) read WHOLE (no "from"/"to"), a "pattern" is REQUIRED: the server greps the file and returns only matching lines (with a little surrounding context) so you can follow up with targeted "from"/"to" reads. Pass pattern "*" to force-read the entire large file anyway. Returns { path, from, to, totalLines, content, truncated, contentHash, matches? }. Pass the returned contentHash back as "expectedHash" on a follow-up edit_file/write_file to guard against the file changing in between (TOCTOU).',inputSchema:{type:"object",properties:{path:a,from:{type:"number",description:"Optional 1-based first line to return (inclusive)."},to:{type:"number",description:"Optional 1-based last line to return (inclusive)."},pattern:{type:"string",description:'Case-insensitive substring to grep for. Required to read a large file whole without a "from"/"to" range; matching lines (plus context) are returned instead of the full body. Use "*" to read the whole large file anyway.'}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},from:{type:"number"},to:{type:"number"},totalLines:{type:"number"},truncated:{type:"boolean"},content:{type:"string"},contentHash:{type:"string",description:'SHA-256 (hex) of the raw file content. Pass this back as "expectedHash" to edit_file/write_file to guard against the file changing between read and write (TOCTOU).'},matches:{type:"array",items:{type:"object",properties:{line:{type:"number"},text:{type:"string"}},required:["line","text"]}}},required:["path","from","to","totalLines","truncated","content"]}},{name:"write_file",annotations:s,description:'Create or write a text file (parent directories are created). "mode": "overwrite" (default) replaces the whole file, or a line range when "startLine"/"endLine" (1-based inclusive) are given; "append" adds content at the end; "insert" inserts content before "startLine". Optionally pass "expectedHash" (the contentHash from a prior read_file) to reject the write if the file changed on disk since it was read (TOCTOU guard); ignored for a whole-file overwrite. Returns { path, bytesWritten, mode, ... }.',_meta:{ui:{resourceUri:"ui://devcanvas/diff"}},inputSchema:{type:"object",properties:{path:a,content:{type:"string",description:"The content to write/insert/append."},mode:{type:"string",enum:["overwrite","append","insert"],description:'Write mode (default "overwrite").'},startLine:{type:"number",description:'For "insert": line to insert before. For "overwrite": first line of the range to replace (1-based).'},endLine:{type:"number",description:'For "overwrite": last line (inclusive, 1-based) of the range to replace.'},expectedHash:{type:"string",description:"Optional SHA-256 (contentHash from read_file). For append/insert/range-overwrite modes, the write is rejected if the file no longer hashes to this value (TOCTOU guard)."}},required:["path","content"]},outputSchema:{type:"object",properties:{path:{type:"string"},bytesWritten:{type:"number"},mode:{type:"string"},startLine:{type:"number"},endLine:{type:"number"},linesReplaced:{type:"number"},linesInserted:{type:"number"}},required:["path","bytesWritten","mode"]}},{name:"edit_file",annotations:s,description:'Edit a text file two ways (mutually exclusive): (1) "edits": [{ oldText, newText, startLine?, endLine? }] literal find/replace — each replaces the unique occurrence of oldText. startLine/endLine are an optional disambiguation HINT (if exactly one match starts in that range it wins); a wrong/missing range still works as long as oldText is unique in the file. Include enough surrounding context to make oldText unique. Or (2) "diff": a unified diff string ("@@ -a,b +c,d @@" hunks) applied atomically — hunks are relocated to where their context actually matches, so slightly-off @@ line numbers still apply, and CRLF files are handled. Fails with no partial write only when text is missing/ambiguous or a hunk context is not found. Optionally pass "expectedHash" (the contentHash from a prior read_file) to reject the edit if the file changed on disk since it was read (TOCTOU guard). Returns { path, editsApplied|applied, diff:{added,removed} }.',_meta:{ui:{resourceUri:"ui://devcanvas/diff"}},inputSchema:{type:"object",properties:{path:a,edits:{type:"array",description:"List of literal { oldText, newText } edits applied in order (optionally scoped with startLine/endLine).",items:{type:"object",properties:{oldText:{type:"string",description:"Exact text to find."},newText:{type:"string",description:"Replacement text."},startLine:{type:"number",description:"Optional 1-based first line to scope this edit to."},endLine:{type:"number",description:"Optional 1-based last line (inclusive) to scope this edit to."}},required:["oldText","newText"]}},diff:{type:"string",description:'A unified diff to apply atomically. Mutually exclusive with "edits".'},startLine:{type:"number",description:"Optional default 1-based first line to scope all literal edits to."},endLine:{type:"number",description:"Optional default 1-based last line (inclusive) to scope all literal edits to."},expectedHash:{type:"string",description:"Optional SHA-256 (contentHash from read_file). If provided and the freshly-read file no longer hashes to it, the edit is rejected with no changes written (TOCTOU guard)."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},mode:{type:"string"},editsApplied:{type:"number"},applied:{type:"boolean"},diff:{type:"object",properties:{added:{type:"number"},removed:{type:"number"}},required:["added","removed"]}},required:["path","diff"]}},{name:"list_dir",annotations:q,description:'List the entries of a directory. Returns { path, entries: [{ name, type, size }] } where type is "file" | "directory" | "other".',inputSchema:{type:"object",properties:{path:a},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},entries:{type:"array",items:{type:"object",properties:{name:{type:"string"},type:{type:"string"},size:{type:"number"}},required:["name","type","size"]}}},required:["path","entries"]}},{name:"file_browser_ui",annotations:q,description:'Open an interactive file browser in the chat so the USER can pick a file. This returns IMMEDIATELY without a selection — the browser is shown to the user and the file they choose arrives afterwards as a follow-up user message (e.g. "Selected file: <path>"). After calling this tool you MUST stop and wait for that message; do not guess a path or continue until the user has selected.',_meta:{ui:{resourceUri:"ui://filesystem/browser"}},inputSchema:{type:"object",properties:{path:{...a,description:"Optional starting directory for the browser (defaults to the FLUJO data directory)."}},required:[]}},{name:"dir_tree",annotations:q,description:"Return a recursive, depth-limited directory tree as nested JSON. Returns { path, depth, tree }.",inputSchema:{type:"object",properties:{path:a,depth:{type:"number",description:"Maximum recursion depth (default 3, max 10)."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},depth:{type:"number"},truncated:{type:"boolean"},tree:{type:"array"}},required:["path","depth","tree"]}},{name:"search",annotations:q,description:'Search a directory tree. Match file/dir NAMES against "namePattern" (substring, case-insensitive) and/or file CONTENT against "content" (substring, case-insensitive). Content search DOES look inside every text file, returning each matching line with its 1-based line number; likely-binary and very large files are skipped for speed. Returns { matches: [{ path, line?, text? }], truncated }.',inputSchema:{type:"object",properties:{path:a,namePattern:{type:"string",description:"Optional case-insensitive substring to match against entry names."},content:{type:"string",description:"Optional case-insensitive substring to match inside text files."}},required:["path"]},outputSchema:{type:"object",properties:{matches:{type:"array",items:{type:"object",properties:{path:{type:"string"},line:{type:"number"},text:{type:"string"}},required:["path"]}},truncated:{type:"boolean"}},required:["matches","truncated"]}},{name:"get_file_info",annotations:q,description:"Stat a path. Returns { path, type, size, isFile, isDirectory, createdAt, modifiedAt }.",inputSchema:{type:"object",properties:{path:a},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},type:{type:"string"},size:{type:"number"},isFile:{type:"boolean"},isDirectory:{type:"boolean"},createdAt:{type:"string"},modifiedAt:{type:"string"}},required:["path","type","size","isFile","isDirectory","createdAt","modifiedAt"]}},{name:"create_directory",annotations:r,description:"Create a directory (recursively). Succeeds if it already exists. Returns { path, created }.",inputSchema:{type:"object",properties:{path:a},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},created:{type:"boolean"}},required:["path","created"]}},{name:"move",annotations:s,description:'Move or rename a file/directory from "source" to "destination". Returns { source, destination }.',inputSchema:{type:"object",properties:{source:{type:"string",description:"Existing path to move."},destination:{type:"string",description:"Target path."}},required:["source","destination"]},outputSchema:{type:"object",properties:{source:{type:"string"},destination:{type:"string"}},required:["source","destination"]}},{name:"delete",annotations:s,description:'Delete a file or directory. Pass "recursive": true to remove a non-empty directory. Returns { path, deleted }.',inputSchema:{type:"object",properties:{path:a,recursive:{type:"boolean",description:"Remove directories and their contents recursively."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},deleted:{type:"boolean"}},required:["path","deleted"]}},{name:"get_allowed_directories",annotations:q,description:"Returns the list of directories that this filesystem MCP server is currently allowed to access. The list is the merged result of server-level roots (configured via FLUJO MCP settings), MCP-node-level roots (set in the FlowBuilder), and the FLUJO_FS_ROOTS environment variable ceiling. When no roots are configured at all, returns the FLUJO data directory as the default (so the file browser is usable out of the box).",inputSchema:{type:"object",properties:{},required:[]},outputSchema:{type:"object",properties:{directories:{type:"array",items:{type:"string"},description:"Absolute paths of all allowed directories."}},required:["directories"]}}]}function x(a){return a.replace(/\r\n?/g,"\n").split("\n")}function y(a){return a.includes("\r\n")?"\r\n":"\n"}function z(a){return(0,g.createHash)("sha256").update(a,"utf8").digest("hex")}function A(a){return a.startsWith("\uFEFF")?{bom:"\uFEFF",body:a.slice(1)}:{bom:"",body:a}}let B="File changed after permission approval. Read it again before editing. No changes written.";function C(a){let b=Math.min(a.length,8e3);for(let c=0;c<b;c++)if(0===a[c])return!0;return!1}async function D(a,b,c){let d=b.toLowerCase(),e=[],g=!1,h=(0,f.createReadStream)(a,{encoding:"utf8"}),j=i().createInterface({input:h,crlfDelay:1/0}),k=0;try{for await(let a of j)if(k++,a.toLowerCase().includes(d)&&(e.push({line:k,text:a.slice(0,400)}),e.length>=c)){g=!0;break}}finally{j.close(),h.destroy()}return{matches:e,truncated:g}}async function E(a,b){let c=await v(a.path,b),d="number"==typeof a.from||"number"==typeof a.to,e="string"==typeof a.pattern?a.pattern.trim():"",g=0;try{g=(await f.promises.stat(c)).size}catch{}if(g>1e5&&!d&&!e)return u(`File is large (${g} bytes > 100000 threshold). Reading it whole would flood the context. Provide a "pattern" to grep for (matching lines + context are returned, then read targeted ranges with "from"/"to"), or pass pattern "*" to read the whole file anyway.`);if(e&&"*"!==e&&!d){let a=await f.promises.readFile(c);if(C(a))return u(`File appears to be binary; cannot grep for a pattern: ${c}`);let b=a.toString("utf8"),d=x(b),h=d.length,i=e.toLowerCase(),j=[];for(let a=0;a<d.length&&(!d[a].toLowerCase().includes(i)||(j.push({line:a+1,text:d[a].slice(0,400)}),!(j.length>=200)));a++);let k=j.length>=200,l=new Set;for(let a of j)for(let b=a.line-2;b<=a.line+2;b++)b>=1&&b<=h&&l.add(b);let m=[...l].sort((a,b)=>a-b),n=[],p=0;for(let a of m)p&&a>p+1&&n.push("…"),n.push(`${a}: ${d[a-1]}`),p=a;let q=n.join("\n");return q.length>2e5&&(q=q.slice(0,2e5)+"\n…[truncated]"),(0,o.Wk)(c,"read",g),t({path:c,from:1,to:h,totalLines:h,truncated:k,content:j.length?q:`(no lines matched pattern ${JSON.stringify(e)})`,matches:j,contentHash:z(b)})}let h=await f.promises.readFile(c,"utf8"),i=x(h),j=i.length,k="number"==typeof a.from?Math.max(1,Math.floor(a.from)):1,l="number"==typeof a.to?Math.floor(a.to):j;l<k&&([k,l]=[l,k]),l=Math.min(l,j);let m=d?i.slice(k-1,l).join("\n"):h,n=!1;return m.length>2e5&&(m=m.slice(0,2e5)+"\n…[truncated]",n=!0),(0,o.Wk)(c,"read",g),t({path:c,from:d?k:1,to:d?l:j,totalLines:j,truncated:n,content:m,contentHash:z(h)})}async function F(a,b){let c=await v(a.path,b),d="string"==typeof a.content?a.content:"",g="append"===a.mode||"insert"===a.mode?a.mode:"overwrite",h="number"==typeof a.startLine||"number"==typeof a.endLine;if(await f.promises.mkdir(e().dirname(c),{recursive:!0}),(0,o.Wk)(c,"write"),"overwrite"===g&&!h)return await f.promises.writeFile(c,d,"utf8"),t({path:c,bytesWritten:Buffer.byteLength(d,"utf8"),mode:"overwrite"});let i="";try{i=await f.promises.readFile(c,"utf8")}catch{i=""}let j="string"==typeof a.expectedHash?a.expectedHash:void 0;if(j&&z(i)!==j)return u(B);let{bom:k,body:l}=A(i);if("append"===g){let a=!l.length||l.endsWith("\n")||l.endsWith("\r\n")?"":y(l),b=k+l+a+d;return await f.promises.writeFile(c,b,"utf8"),t({path:c,bytesWritten:Buffer.byteLength(b,"utf8"),mode:"append"})}let m=y(l),n=l.length?l.split(/\r?\n/):[],p=d.split(/\r?\n/),q=n.length;if("insert"===g){let b="number"==typeof a.startLine?Math.max(1,Math.floor(a.startLine)):q+1,d=Math.min(b-1,q);n.splice(d,0,...p);let e=k+n.join(m);return await f.promises.writeFile(c,e,"utf8"),t({path:c,bytesWritten:Buffer.byteLength(e,"utf8"),mode:"insert",startLine:b,linesInserted:p.length})}let r="number"==typeof a.startLine?Math.max(1,Math.floor(a.startLine)):1,s="number"==typeof a.endLine?Math.floor(a.endLine):r;s<r&&([r,s]=[s,r]);let w=Math.max(0,(s=Math.min(s,q))-r+1);n.splice(r-1,w,...p);let x=k+n.join(m);return await f.promises.writeFile(c,x,"utf8"),t({path:c,bytesWritten:Buffer.byteLength(x,"utf8"),mode:"overwrite",startLine:r,endLine:s,linesReplaced:w})}async function G(a,b){let c=await v(a.path,b),d="string"==typeof a.diff&&a.diff.trim().length>0,e=Array.isArray(a.edits)&&a.edits.length>0;if(d&&e)return u('Provide either "diff" or "edits", not both.');let g=await f.promises.readFile(c,"utf8"),h="string"==typeof a.expectedHash?a.expectedHash:void 0;if(h&&z(g)!==h)return u(B);let{bom:i,body:j}=A(g);if(d){let b,d=y(j),e=j.replace(/\r\n?/g,"\n");try{b=function(a,b){let c=a.split("\n"),d=b.split(/\r?\n/),e=/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/,f=[],g=null;for(let a=0;a<d.length;a++){let b=d[a];if(void 0===b)break;let c=e.exec(b);if(c){g={oldStart:parseInt(c[1],10),ops:[]},f.push(g);continue}if(b.startsWith("--- ")||b.startsWith("+++ ")){g=null;continue}if(!g)continue;let h=b.length?b[0]:" ",i=b.length?b.slice(1):"";if(" "===h||"-"===h||"+"===h)g.ops.push({tag:h,body:i});else if("\\"===h);else throw Error(`unexpected diff line: ${JSON.stringify(b)}`)}if(0===f.length)throw Error("no unified-diff hunks (@@ ... @@) found");let h=[],i=0,j=0,k=0;for(let a of f){let b=function(a,b,c,d){if(0===b.length)return Math.min(Math.max(c,d),a.length);let e=a.length-b.length,f=c=>{if(c<d||c>e)return!1;for(let d=0;d<b.length;d++)if(a[c+d]!==b[d])return!1;return!0},g=Math.max(d,c);if(f(g))return g;let h=Math.max(g-d,e-g);for(let a=1;a<=h;a++){if(f(g-a))return g-a;if(f(g+a))return g+a}throw Error(`could not locate hunk near line ${c+1}; its context/removed lines do not match the file. First expected line: ${JSON.stringify(b[0])}`)}(c,a.ops.filter(a=>" "===a.tag||"-"===a.tag).map(a=>a.body),Math.max(0,a.oldStart-1),i);if(b<i)throw Error("overlapping or out-of-order hunks");for(;i<b;)h.push(c[i]),i++;for(let b of a.ops)" "===b.tag?(h.push(c[i]),i++):"-"===b.tag?(i++,k++):(h.push(b.body),j++)}for(;i<c.length;)h.push(c[i]),i++;return{result:h.join("\n"),added:j,removed:k}}(e,a.diff)}catch(a){return u(`Diff apply failed: ${a instanceof Error?a.message:String(a)}. No changes written.`)}let g=i+("\r\n"===d?b.result.replace(/\n/g,"\r\n"):b.result);return await f.promises.writeFile(c,g,"utf8"),(0,o.Wk)(c,"write"),t({path:c,applied:!0,mode:"diff",diff:{added:b.added,removed:b.removed}})}let k=Array.isArray(a.edits)?a.edits:[];if(0===k.length)return u('Provide a non-empty "edits" array of { oldText, newText } or a "diff" string.');let l="number"==typeof a.startLine?a.startLine:void 0,m="number"==typeof a.endLine?a.endLine:void 0,n=y(j),p=j.replace(/\r\n?/g,"\n"),q=0;for(let a of k){let b="string"==typeof a.oldText?a.oldText.replace(/\r\n?/g,"\n"):"",d="string"==typeof a.newText?a.newText.replace(/\r\n?/g,"\n"):"";if(!b)return u(`Edit #${q+1} has an empty "oldText".`);let e="number"==typeof a.startLine?a.startLine:l,f="number"==typeof a.endLine?a.endLine:m,g=void 0!==e||void 0!==f,h=[];for(let a=p.indexOf(b);-1!==a;a=p.indexOf(b,a+1))h.push(a);if(0===h.length)return u(`Edit #${q+1}: "oldText" not found in ${c}. No changes written.`);let i=-1;if(g){let{lo:a,hi:b}=function(a,b,c){if(void 0===b&&void 0===c)return{lo:0,hi:a.length};let d=a.split("\n"),e=Math.max(1,Math.floor(b??1)),f=Math.min(d.length,Math.floor(c??d.length)),g=0;for(let a=0;a<e-1&&a<d.length;a++)g+=d[a].length+1;let h=g;for(let a=e-1;a<f&&a<d.length;a++)h+=d[a].length+ +(a<d.length-1);return{lo:g,hi:Math.max(g,h)}}(p,e,f),c=h.filter(c=>c>=a&&c<b);1===c.length&&(i=c[0])}if(-1===i)if(1!==h.length)return u(`Edit #${q+1}: "oldText" is ambiguous (appears ${h.length} times); add more surrounding context or a tighter startLine/endLine so exactly one occurrence is in range. No changes written.`);else i=h[0];p=p.slice(0,i)+d+p.slice(i+b.length),q+=1}let r=function(a,b){let c=x(a),d=x(b),e=new Map;for(let a of d)e.set(a,(e.get(a)??0)+1);let f=new Map;for(let a of c)f.set(a,(f.get(a)??0)+1);let g=0;for(let[a,b]of f)g+=Math.max(0,b-(e.get(a)??0));let h=0;for(let[a,b]of e)h+=Math.max(0,b-(f.get(a)??0));return{added:h,removed:g}}(j,p),s=i+("\r\n"===n?p.replace(/\n/g,"\r\n"):p);return await f.promises.writeFile(c,s,"utf8"),(0,o.Wk)(c,"write"),t({path:c,mode:"edits",editsApplied:q,diff:r})}async function H(a){try{let b=await f.promises.lstat(a);if(b.isFile())return"file";if(b.isDirectory())return"directory";return"other"}catch{return"other"}}async function I(a,b){let c=await v(a.path,b),d=await f.promises.readdir(c),g=await Promise.all(d.map(async a=>{let b=e().join(c,a),d=await H(b),g=0;try{g=(await f.promises.stat(b)).size}catch{}return{name:a,type:d,size:g}}));return g.sort((a,b)=>a.type===b.type?a.name.localeCompare(b.name):"directory"===a.type?-1:1),t({path:c,entries:g})}async function J(a,b){let c=await v(a.path,b),d=Math.min("number"==typeof a.depth?Math.max(1,Math.floor(a.depth)):3,10),g=0,h=!1;async function i(a,b){let c;if(b>d||h)return[];try{c=await f.promises.readdir(a)}catch{return[]}c.sort((a,b)=>a.localeCompare(b));let j=[];for(let f of c){if(++g>5e3){h=!0;break}let c=e().join(a,f),k=await H(c),l={name:f,type:k};"directory"===k&&b<d&&(l.children=await i(c,b+1)),j.push(l)}return j}let j=await i(c,1);return t({path:c,depth:d,truncated:h,tree:j})}async function K(a,b,c){let d;try{d=await f.promises.stat(a)}catch{return[]}if(!d.isFile()||d.size>5e6)return[];try{let b=await f.promises.open(a,"r");try{let a=Buffer.alloc(Math.min(8e3,d.size));if(a.length&&await b.read(a,0,a.length,0),C(a))return[]}finally{await b.close()}}catch{return[]}let{matches:e}=await D(a,b,Math.max(1,c));return e.map(b=>({path:a,line:b.line,text:b.text}))}async function L(a,b){let c=await v(a.path,b),d="string"==typeof a.namePattern?a.namePattern.toLowerCase():"",g="string"==typeof a.content?a.content:"";if(!d&&!g)return u('Provide "namePattern" and/or "content" to search for.');let h=[],i=!1,j=[];async function k(a){let b;if(!i){try{b=await f.promises.readdir(a)}catch{return}for(let c of b){if(i)return;let b=e().join(a,c),f=await H(b);if(d&&c.toLowerCase().includes(d)&&(h.push({path:b}),h.length>=1e3)){i=!0;return}"directory"===f?await k(b):"file"===f&&g&&j.push(b)}}}if(await k(c),g&&!i)for(let a=0;a<j.length&&!i;a+=16){let b=j.slice(a,a+16);for(let a of(await Promise.all(b.map(a=>K(a,g,1e3))))){for(let b of a)if(h.push(b),h.length>=1e3){i=!0;break}if(i)break}}return t({matches:h,truncated:i})}async function M(a,b){let c=await v(a.path,b),d=await f.promises.stat(c);return t({path:c,type:d.isFile()?"file":d.isDirectory()?"directory":"other",size:d.size,isFile:d.isFile(),isDirectory:d.isDirectory(),createdAt:d.birthtime.toISOString(),modifiedAt:d.mtime.toISOString()})}async function N(a,b){let c=await v(a.path,b);return await f.promises.mkdir(c,{recursive:!0}),t({path:c,created:!0})}async function O(a,b){let c=await v(a.source,b),d=await v(a.destination,b);return await f.promises.mkdir(e().dirname(d),{recursive:!0}),await f.promises.rename(c,d),t({source:c,destination:d})}async function P(a,b){let c=await v(a.path,b),d=!0===a.recursive;return await f.promises.rm(c,{recursive:d,force:!1}),t({path:c,deleted:!0})}async function Q(a){return t({directories:a})}async function R(a,b,c){try{if("file_browser_ui"===a)return function(a,b=!1){return{content:[{type:"text",text:a}],...b?{isError:!0}:{}}}("File browser shown to the user. Waiting for them to select a file — their choice will arrive as a follow-up message. Do not proceed until then.");let d=await (0,m.loadEffectiveRoots)(l.K3,"FLUJO_FS_ROOTS",c);switch(a){case"read_file":return await E(b,d);case"write_file":return await F(b,d);case"edit_file":return await G(b,d);case"list_dir":return await I(b,d);case"dir_tree":return await J(b,d);case"search":return await L(b,d);case"get_file_info":return await M(b,d);case"create_directory":return await N(b,d);case"move":return await O(b,d);case"delete":return await P(b,d);case"get_allowed_directories":return await Q(d);default:return u(`Unknown tool on the built-in filesystem server: ${a}`)}}catch(c){let b=c instanceof Error?c.message:String(c);return p.warn("filesystemCallTool failed",{toolName:a,err:c}),{isError:!0,content:[{type:"text",text:JSON.stringify({error:b})}],structuredContent:{error:b}}}}},65858:(a,b,c)=>{c.d(b,{bz:()=>q,cd:()=>n,wp:()=>m});var d=c(33873),e=c.n(d),f=c(21820),g=c.n(f),h=c(85510),i=c(79111),j=c(31296),k=c(48092);function l(a){return"string"==typeof a&&/^(1|true|yes|on)$/i.test(a.trim())}let m="FLUJO_ALLOW_PROTECTED_PATHS";async function n(){if(l(process.env[m]))return!1;try{let a=await (0,i.YM)(j.Z.SPEECH_SETTINGS,void 0);return a?.experimental?.protectedPathsEnabled===!0}catch{return!1}}let o=null;function p(a,...b){return e().resolve(a,...b)}function q(a){let b=e().resolve(a);if((function(){let a=[];try{a.push(e().resolve((0,h.getDataDir)()))}catch{}try{a.push(e().resolve(g().tmpdir()))}catch{}return a})().some(a=>(0,k.F)(a,b)))return{denied:!1};for(let a of function(){let a=l(process.env[m]),b=(0,h.getHomeDir)(),c=`${a?"off":"on"}::${b}`;if(o&&o.key===c)return o.paths;let d=a?[]:function(a){let b=[];if("win32"===process.platform)for(let c of["AppData","Downloads","Desktop","Documents","Pictures","Music","Videos","OneDrive"])b.push(p(a,c));else if("darwin"===process.platform){for(let c of["Downloads","Desktop","Documents","Pictures","Music","Movies"])b.push(p(a,c));for(let c of["Library/Mail","Library/Messages","Library/Safari","Library/Cookies","Library/Calendars","Library/Application Support/AddressBook","Library/Application Support/com.apple.TCC","Library/PersonalizationPortrait","Library/Metadata/CoreSpotlight","Library/Suggestions"])b.push(p(a,c));for(let a of["/.Spotlight-V100","/.fseventsd","/.DocumentRevisions-V100"])b.push(e().resolve(a))}else for(let c of["Documents","Downloads","Desktop",".ssh",".gnupg",".aws",".config"])b.push(p(a,c));return Array.from(new Set(b))}(b);return o={key:c,paths:d},d}())if((0,k.F)(a,b))return{denied:!0,matchedRoot:a};return{denied:!1}}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=9724,exports.ids=[8092,9724],exports.modules={19724:(a,b,c)=>{c.d(b,{Wk:()=>p,filesystemListResources:()=>s,filesystemReadResource:()=>u,isFilesystemAppUri:()=>t,isTouchedFileUri:()=>q,readTouchedFileResource:()=>r});var d=c(33873),e=c.n(d),f=c(29021),g=c(90848),h=c(18230),i=c(94749),j=c(48092);let k=(0,h.h)("backend/services/mcp/internal/filesystemResources"),l="ui://filesystem/browser",m="ui://devcanvas/diff",n="text/html;profile=mcp-app",o=new Map;function p(a,b,c){try{if("string"!=typeof a||!a)return;let d=function(a){let b=a.replace(/\\/g,"/");return b.startsWith("/")?`file://${b}`:`file:///${b}`}(a),e=o.get(d);for(o.delete(d),o.set(d,{uri:d,filePath:a,op:b,size:c??e?.size,at:Date.now()});o.size>200;){let a=o.keys().next().value;if(void 0===a)break;o.delete(a)}}catch(a){k.debug("recordTouchedFile ignored error",a)}}function q(a){return o.has(a)}async function r(a){let b=o.get(a);if(!b)return{success:!1,error:`Not a tracked filesystem resource: ${a}`,statusCode:404};let c=[];try{c=await (0,j.loadEffectiveRoots)(i.K3,"FLUJO_FS_ROOTS")}catch(a){k.warn("readTouchedFileResource: could not load roots",a)}if(0===c.length||!c.some(a=>(0,j.F)(a,b.filePath)))return{success:!1,error:`Path "${b.filePath}" is outside the configured filesystem roots.`,statusCode:403};try{let c=await f.promises.readFile(b.filePath,"utf8");return c.length>2e5&&(c=c.slice(0,2e5)+"\n…[truncated]"),{success:!0,data:{contents:[{uri:a,mimeType:"text/plain",text:c}]}}}catch(a){return{success:!1,error:`Could not read tracked file: ${a instanceof Error?a.message:String(a)}`,statusCode:500}}}function s(){return{resources:[{uri:l,name:"filesystem_browser",mimeType:n,description:"Interactive file browser (navigate, preview, upload, download) for the filesystem server."},{uri:m,name:"devcanvas_diff",mimeType:n,description:"Docked diff canvas that shows file writes/edits live as they happen (pip display mode)."},...[...o.values()].reverse().map(a=>({uri:a.uri,name:e().basename(a.filePath),mimeType:"text/plain",description:`${"write"===a.op?"Written":"Read"} by the filesystem server: ${a.filePath}`,..."number"==typeof a.size?{size:a.size}:{}}))]}}function t(a){return a===l||a===m}function u(a){if(!t(a))return{success:!1,error:`Not a filesystem app URI: ${a}`,statusCode:404};let b=a===m?w:v;return{success:!0,data:{contents:[{uri:a,mimeType:n,text:b,_meta:{ui:{csp:{},permissions:{}}}}]}}}let v=`<!doctype html>
1
+ "use strict";exports.id=9724,exports.ids=[8092,9724],exports.modules={19724:(a,b,c)=>{c.d(b,{Wk:()=>p,filesystemListResources:()=>s,filesystemReadResource:()=>u,isFilesystemAppUri:()=>t,isTouchedFileUri:()=>q,readTouchedFileResource:()=>r});var d=c(33873),e=c.n(d),f=c(29021),g=c(18230),h=c(48254),i=c(94749),j=c(48092);let k=(0,g.h)("backend/services/mcp/internal/filesystemResources"),l="ui://filesystem/browser",m="ui://devcanvas/diff",n="text/html;profile=mcp-app",o=new Map;function p(a,b,c){try{if("string"!=typeof a||!a)return;let d=function(a){let b=a.replace(/\\/g,"/");return b.startsWith("/")?`file://${b}`:`file:///${b}`}(a),e=o.get(d);for(o.delete(d),o.set(d,{uri:d,filePath:a,op:b,size:c??e?.size,at:Date.now()});o.size>200;){let a=o.keys().next().value;if(void 0===a)break;o.delete(a)}}catch(a){k.debug("recordTouchedFile ignored error",a)}}function q(a){return o.has(a)}async function r(a){let b=o.get(a);if(!b)return{success:!1,error:`Not a tracked filesystem resource: ${a}`,statusCode:404};let c=[];try{c=await (0,j.loadEffectiveRoots)(i.K3,"FLUJO_FS_ROOTS")}catch(a){k.warn("readTouchedFileResource: could not load roots",a)}if(0===c.length||!c.some(a=>(0,j.F)(a,b.filePath)))return{success:!1,error:`Path "${b.filePath}" is outside the configured filesystem roots.`,statusCode:403};try{let c=await f.promises.readFile(b.filePath,"utf8");return c.length>2e5&&(c=c.slice(0,2e5)+"\n…[truncated]"),{success:!0,data:{contents:[{uri:a,mimeType:"text/plain",text:c}]}}}catch(a){return{success:!1,error:`Could not read tracked file: ${a instanceof Error?a.message:String(a)}`,statusCode:500}}}function s(){return{resources:[{uri:l,name:"filesystem_browser",mimeType:n,description:"Interactive file browser (navigate, preview, upload, download) for the filesystem server."},{uri:m,name:"devcanvas_diff",mimeType:n,description:"Docked diff canvas that shows file writes/edits live as they happen (pip display mode)."},...[...o.values()].reverse().map(a=>({uri:a.uri,name:e().basename(a.filePath),mimeType:"text/plain",description:`${"write"===a.op?"Written":"Read"} by the filesystem server: ${a.filePath}`,..."number"==typeof a.size?{size:a.size}:{}}))]}}function t(a){return a===l||a===m}function u(a){if(!t(a))return{success:!1,error:`Not a filesystem app URI: ${a}`,statusCode:404};let b=a===m?w:v;return{success:!0,data:{contents:[{uri:a,mimeType:n,text:b,_meta:{ui:{csp:{},permissions:{}}}}]}}}let v=`<!doctype html>
2
2
  <html>
3
3
  <head>
4
4
  <meta charset="utf-8" />
@@ -252,7 +252,7 @@
252
252
  rpc("ui/initialize", {
253
253
  appInfo: { name: "filesystem-browser", version: "1.0.0" },
254
254
  appCapabilities: { availableDisplayModes: ["inline", "fullscreen"] },
255
- protocolVersion: "${g.aE}"
255
+ protocolVersion: "${h.GJ}"
256
256
  }).then(function (result) {
257
257
  applyTheme(result && result.hostContext);
258
258
  notify("ui/notifications/initialized", {});
@@ -391,7 +391,7 @@
391
391
  rpc("ui/initialize", {
392
392
  appInfo: { name: "devcanvas-diff", version: "1.0.0" },
393
393
  appCapabilities: { availableDisplayModes: ["inline", "fullscreen", "pip"] },
394
- protocolVersion: "${g.aE}"
394
+ protocolVersion: "${h.GJ}"
395
395
  }).then(function (result) {
396
396
  applyTheme(result && result.hostContext);
397
397
  notify("ui/notifications/initialized", {});
@@ -1,2 +1,2 @@
1
1
  exports.id=9983,exports.ids=[9983],exports.modules={9718:(a,b,c)=>{"use strict";c.d(b,{Zg:()=>d.Z,Mj:()=>g});var d=c(60418),e=c(38301);let f=(0,c(19815).h)("utils/storage/frontend.ts");function g(a,b){f.verbose("useLocalStorage: Entering method");let[c,d]=(0,e.useState)(b),[g,h]=(0,e.useState)(!0),i=(0,e.useRef)(c);return[c,(0,e.useCallback)(async b=>{f.verbose("setValue: Entering method");try{let c=b instanceof Function?b(i.current):b;if(d(c),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:a,value:c})})).ok)throw Error("Failed to save value")}catch(b){f.warn(`Error setting storage key "${a}":`,b)}},[a]),g]}},19815:(a,b,c)=>{"use strict";c.d(b,{h:()=>i});let d={LOG_LEVEL:3},e={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},f="number"==typeof d.LOG_LEVEL?d.LOG_LEVEL:e.ERROR;function g(a,b=0){if(b>6)return String(a);if(!(a instanceof Error))return a;let c={name:a.name,message:a.message};for(let d of Object.getOwnPropertyNames(a)){if("name"===d||"message"===d)continue;let e=a[d];"function"!=typeof e&&("stack"===d?c.stack=e:"cause"===d?c.cause=g(e,b+1):"errors"===d&&Array.isArray(e)?c.errors=e.map(a=>g(a,b+1)):c[d]=e)}return c}function h(a,b,c,d,h){if(a>=("number"==typeof h?h:f)){if("function"==typeof d)try{d=d()}catch{d="[lazy log data threw]"}let f=new Date().toISOString(),h=`[${f}] [${b}]`,i=`${h} ${c}`;if(void 0!==d)if(d instanceof Error||"object"==typeof d)try{let a=d instanceof Error?g(d):d,b=JSON.stringify(a,(a,b)=>b instanceof Error?g(b):b,2);i+=`:
2
- ${b}`}catch(a){i+=": [Object cannot be stringified]"}else i+=`: ${d}`;switch(a){case e.VERBOSE:console.debug(`[VERBOSE] ${i}`);break;case e.DEBUG:console.debug(i);break;case e.INFO:console.info(i);break;case e.WARN:console.warn(i);break;case e.ERROR:console.error(i);break;default:console.log(i)}}}function i(a,b){let c,d=((c=a.replace(/^src\//,"")).startsWith("/")&&(c=c.substring(1)),c);return{verbose:(a,c)=>{h(e.VERBOSE,d,a,c,b)},debug:(a,c)=>{h(e.DEBUG,d,a,c,b)},info:(a,c)=>{h(e.INFO,d,a,c,b)},warn:(a,c)=>{h(e.WARN,d,a,c,b)},error:(a,c)=>{h(e.ERROR,d,a,c,b)}}}},41306:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call the default export of \"C:\\\\Users\\\\Moe\\\\Documents\\\\GitHub\\\\FLUJO\\\\src\\\\frontend\\\\components\\\\AppWrapper.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\AppWrapper.tsx","default")},46152:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,54160,23)),Promise.resolve().then(c.t.bind(c,31603,23)),Promise.resolve().then(c.t.bind(c,68495,23)),Promise.resolve().then(c.t.bind(c,75170,23)),Promise.resolve().then(c.t.bind(c,55145,23)),Promise.resolve().then(c.t.bind(c,78922,23)),Promise.resolve().then(c.t.bind(c,29234,23)),Promise.resolve().then(c.t.bind(c,34644,23)),Promise.resolve().then(c.bind(c,82146))},49428:(a,b,c)=>{"use strict";c.d(b,{default:()=>p});var d=c(21124),e=c(38301),f=c.n(e),g=c(13973);let h=(0,c(19815).h)("frontend/components/AppWrapper"),i=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ../contexts/ThemeContext"]},ssr:!1,loading:()=>(0,d.jsx)("div",{children:"Loading theme..."})}),j=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ../contexts/StorageContext"]},ssr:!1,loading:()=>(0,d.jsx)("div",{children:"Loading storage..."})}),k=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./Navigation"]},ssr:!1,loading:()=>(0,d.jsx)("div",{children:"Loading navigation..."})}),l=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./EncryptionAuthDialog"]},ssr:!1,loading:()=>null}),m=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ../contexts/TourContext"]},ssr:!1,loading:()=>null}),n=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./Tour/TourOverlay"]},ssr:!1,loading:()=>null});class o extends f().Component{constructor(a){super(a),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(a){h.error("AppWrapper error boundary caught an error:",a)}render(){return this.state.hasError?(0,d.jsxs)("div",{style:{padding:"20px",textAlign:"center"},children:[(0,d.jsx)("h2",{children:"Something went wrong loading the application."}),(0,d.jsx)("p",{children:"Please try refreshing the page."}),(0,d.jsx)("button",{onClick:()=>window.location.reload(),style:{padding:"8px 16px",background:"#3498DB",color:"white",border:"none",borderRadius:"4px",cursor:"pointer",marginTop:"10px"},children:"Refresh"})]}):this.props.children}}function p({children:a}){return h.debug("Rendering AppWrapper"),(0,d.jsx)(o,{children:(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)("div",{children:"Loading application..."}),children:(0,d.jsx)(i,{children:(0,d.jsx)(j,{children:(0,d.jsxs)(m,{children:[(0,d.jsxs)(e.Suspense,{fallback:(0,d.jsx)("div",{children:"Loading navigation..."}),children:[(0,d.jsx)(k,{}),(0,d.jsx)(l,{})]}),(0,d.jsx)("main",{children:a}),(0,d.jsx)(n,{})]})})})})})}},51472:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>n,metadata:()=>l,viewport:()=>m});var d=c(75338),e=c(94294),f=c.n(e),g=c(81464),h=c.n(g);c(61135);var i=c(50846),j=c(41306);let k=(0,i.h)("app/layout"),l={title:"FLUJO",description:"A browser-based application for managing models, MCP servers, flows and chat interactions"},m={width:"device-width",initialScale:1};function n({children:a}){return k.debug("Rendering RootLayout"),(0,d.jsx)("html",{lang:"en",children:(0,d.jsx)("body",{className:`${f().variable} ${h().variable} antialiased`,children:(0,d.jsx)(j.default,{children:a})})})}},58569:(a,b,c)=>{Promise.resolve().then(c.bind(c,49428))},60418:(a,b,c)=>{"use strict";c.d(b,{Z:()=>d});var d=function(a){return a.MODELS="models",a.FLOWS="flows",a.CHAT_HISTORY="history",a.THEME="theme",a.ENCRYPTION_KEY="encryption_key",a.MCP_SERVERS="mcp_servers",a.GLOBAL_ENV_VARS="global_env_vars",a.CURRENT_CONVERSATION_ID="current_conversation_id",a.SELECTED_FLOW_ID="selected_flow_id",a.LAST_PICKED_FLOW_ID="last_picked_flow_id",a.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",a.MCP_QUALITY_SETTINGS="mcp_quality_settings",a.RUN_RESOURCE_SETTINGS="run_resource_settings",a.KV_STORE_SETTINGS="kv_store_settings",a.PENDING_APPROVALS="pending_approvals",a.MCP_INTERNAL_OVERRIDES="mcp_internal_overrides",a.PACKAGE_INSTALLS="package_installs",a.EXPERIMENTAL_SETTINGS="experimental_settings",a.REGISTRY_ACCOUNT="registry_account",a.REGISTRY_SETTINGS="registry_settings",a}({})},61135:()=>{},68297:(a,b,c)=>{Promise.resolve().then(c.bind(c,41306))},82600:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81170,23)),Promise.resolve().then(c.t.bind(c,23597,23)),Promise.resolve().then(c.t.bind(c,36893,23)),Promise.resolve().then(c.t.bind(c,89748,23)),Promise.resolve().then(c.t.bind(c,6060,23)),Promise.resolve().then(c.t.bind(c,7184,23)),Promise.resolve().then(c.t.bind(c,69576,23)),Promise.resolve().then(c.t.bind(c,73041,23)),Promise.resolve().then(c.t.bind(c,51384,23))}};
2
+ ${b}`}catch(a){i+=": [Object cannot be stringified]"}else i+=`: ${d}`;switch(a){case e.VERBOSE:console.debug(`[VERBOSE] ${i}`);break;case e.DEBUG:console.debug(i);break;case e.INFO:console.info(i);break;case e.WARN:console.warn(i);break;case e.ERROR:console.error(i);break;default:console.log(i)}}}function i(a,b){let c,d=((c=a.replace(/^src\//,"")).startsWith("/")&&(c=c.substring(1)),c);return{verbose:(a,c)=>{h(e.VERBOSE,d,a,c,b)},debug:(a,c)=>{h(e.DEBUG,d,a,c,b)},info:(a,c)=>{h(e.INFO,d,a,c,b)},warn:(a,c)=>{h(e.WARN,d,a,c,b)},error:(a,c)=>{h(e.ERROR,d,a,c,b)}}}},41306:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call the default export of \"C:\\\\Users\\\\Moe\\\\Documents\\\\GitHub\\\\FLUJO\\\\src\\\\frontend\\\\components\\\\AppWrapper.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\AppWrapper.tsx","default")},46152:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,54160,23)),Promise.resolve().then(c.t.bind(c,31603,23)),Promise.resolve().then(c.t.bind(c,68495,23)),Promise.resolve().then(c.t.bind(c,75170,23)),Promise.resolve().then(c.t.bind(c,55145,23)),Promise.resolve().then(c.t.bind(c,78922,23)),Promise.resolve().then(c.t.bind(c,29234,23)),Promise.resolve().then(c.t.bind(c,34644,23)),Promise.resolve().then(c.bind(c,82146))},49428:(a,b,c)=>{"use strict";c.d(b,{default:()=>q});var d=c(21124),e=c(38301),f=c.n(e),g=c(13973);let h=(0,c(19815).h)("frontend/components/AppWrapper"),i=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ../contexts/ThemeContext"]},ssr:!1,loading:()=>(0,d.jsx)("div",{children:"Loading theme..."})}),j=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ../contexts/StorageContext"]},ssr:!1,loading:()=>(0,d.jsx)("div",{children:"Loading storage..."})}),k=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./Navigation"]},ssr:!1,loading:()=>(0,d.jsx)("div",{children:"Loading navigation..."})}),l=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./EncryptionAuthDialog"]},ssr:!1,loading:()=>null}),m=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ../contexts/TourContext"]},ssr:!1,loading:()=>null}),n=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./Tour/TourOverlay"]},ssr:!1,loading:()=>null}),o=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./TelemetryNotice"]},ssr:!1,loading:()=>null});class p extends f().Component{constructor(a){super(a),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(a){h.error("AppWrapper error boundary caught an error:",a)}render(){return this.state.hasError?(0,d.jsxs)("div",{style:{padding:"20px",textAlign:"center"},children:[(0,d.jsx)("h2",{children:"Something went wrong loading the application."}),(0,d.jsx)("p",{children:"Please try refreshing the page."}),(0,d.jsx)("button",{onClick:()=>window.location.reload(),style:{padding:"8px 16px",background:"#3498DB",color:"white",border:"none",borderRadius:"4px",cursor:"pointer",marginTop:"10px"},children:"Refresh"})]}):this.props.children}}function q({children:a}){return h.debug("Rendering AppWrapper"),(0,d.jsx)(p,{children:(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)("div",{children:"Loading application..."}),children:(0,d.jsx)(i,{children:(0,d.jsx)(j,{children:(0,d.jsxs)(m,{children:[(0,d.jsxs)(e.Suspense,{fallback:(0,d.jsx)("div",{children:"Loading navigation..."}),children:[(0,d.jsx)(k,{}),(0,d.jsx)(l,{}),(0,d.jsx)(o,{})]}),(0,d.jsx)("main",{children:a}),(0,d.jsx)(n,{})]})})})})})}},51472:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>n,metadata:()=>l,viewport:()=>m});var d=c(75338),e=c(94294),f=c.n(e),g=c(81464),h=c.n(g);c(61135);var i=c(50846),j=c(41306);let k=(0,i.h)("app/layout"),l={title:"FLUJO",description:"A browser-based application for managing models, MCP servers, flows and chat interactions"},m={width:"device-width",initialScale:1};function n({children:a}){return k.debug("Rendering RootLayout"),(0,d.jsx)("html",{lang:"en",children:(0,d.jsx)("body",{className:`${f().variable} ${h().variable} antialiased`,children:(0,d.jsx)(j.default,{children:a})})})}},58569:(a,b,c)=>{Promise.resolve().then(c.bind(c,49428))},60418:(a,b,c)=>{"use strict";c.d(b,{Z:()=>d});var d=function(a){return a.MODELS="models",a.FLOWS="flows",a.CHAT_HISTORY="history",a.THEME="theme",a.ENCRYPTION_KEY="encryption_key",a.MCP_SERVERS="mcp_servers",a.GLOBAL_ENV_VARS="global_env_vars",a.CURRENT_CONVERSATION_ID="current_conversation_id",a.SELECTED_FLOW_ID="selected_flow_id",a.LAST_PICKED_FLOW_ID="last_picked_flow_id",a.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",a.MCP_QUALITY_SETTINGS="mcp_quality_settings",a.RUN_RESOURCE_SETTINGS="run_resource_settings",a.KV_STORE_SETTINGS="kv_store_settings",a.PENDING_APPROVALS="pending_approvals",a.MCP_INTERNAL_OVERRIDES="mcp_internal_overrides",a.PACKAGE_INSTALLS="package_installs",a.EXPERIMENTAL_SETTINGS="experimental_settings",a.REGISTRY_ACCOUNT="registry_account",a.REGISTRY_SETTINGS="registry_settings",a.TELEMETRY_STATE="telemetry_state",a}({})},61135:()=>{},68297:(a,b,c)=>{Promise.resolve().then(c.bind(c,41306))},82600:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81170,23)),Promise.resolve().then(c.t.bind(c,23597,23)),Promise.resolve().then(c.t.bind(c,36893,23)),Promise.resolve().then(c.t.bind(c,89748,23)),Promise.resolve().then(c.t.bind(c,6060,23)),Promise.resolve().then(c.t.bind(c,7184,23)),Promise.resolve().then(c.t.bind(c,69576,23)),Promise.resolve().then(c.t.bind(c,73041,23)),Promise.resolve().then(c.t.bind(c,51384,23))}};
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "version": 1,
3
3
  "functions": {
4
- "/api/local-models/capability": {},
5
4
  "/api/local-models/pull": {},
5
+ "/api/local-models/capability": {},
6
6
  "/api/local-models/suggest": {},
7
7
  "/api/mcp/oauth-capability": {},
8
8
  "/api/mcp/test-connection/stream": {},
9
9
  "/api/update": {
10
10
  "maxDuration": 600
11
11
  },
12
- "/mcp-proxy/[server]": {},
13
- "/mcp-flows": {}
12
+ "/mcp-flows": {},
13
+ "/mcp-proxy/[server]": {}
14
14
  }
15
15
  }
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=6183,a.ids=[6183],a.modules={1708:a=>{a.exports=require("node:process")},4573:a=>{a.exports=require("node:buffer")},4984:a=>{a.exports=require("readline")},8086:a=>{a.exports=require("module")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11723:a=>{a.exports=require("querystring")},11997:a=>{a.exports=require("punycode")},12412:a=>{a.exports=require("assert")},19771:a=>{a.exports=require("process")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},34631:a=>{a.exports=require("tls")},37067:a=>{a.exports=require("node:http")},37830:a=>{a.exports=require("node:stream/web")},38522:a=>{a.exports=require("node:zlib")},44708:a=>{a.exports=require("node:https")},45957:(a,b,c)=>{async function d(){await c.e(3570).then(c.bind(c,83570))}c.r(b),c.d(b,{register:()=>d})},46466:a=>{a.exports=require("node:stream/promises")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73496:a=>{a.exports=require("http2")},73566:a=>{a.exports=require("worker_threads")},74075:a=>{a.exports=require("zlib")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},79428:a=>{a.exports=require("buffer")},79551:a=>{a.exports=require("url")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80481:a=>{a.exports=require("node:readline")},81630:a=>{a.exports=require("http")},83997:a=>{a.exports=require("tty")},84297:a=>{a.exports=require("async_hooks")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")},98995:a=>{a.exports=require("node:module")}};var b=require("./webpack-runtime.js");b.C(a);var c=b(b.s=45957);module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=6183,a.ids=[6183],a.modules={1708:a=>{a.exports=require("node:process")},4573:a=>{a.exports=require("node:buffer")},4984:a=>{a.exports=require("readline")},8086:a=>{a.exports=require("module")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11723:a=>{a.exports=require("querystring")},11997:a=>{a.exports=require("punycode")},12412:a=>{a.exports=require("assert")},19771:a=>{a.exports=require("process")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},34631:a=>{a.exports=require("tls")},37067:a=>{a.exports=require("node:http")},37830:a=>{a.exports=require("node:stream/web")},38522:a=>{a.exports=require("node:zlib")},44708:a=>{a.exports=require("node:https")},45957:(a,b,c)=>{async function d(){await c.e(6747).then(c.bind(c,39128))}c.r(b),c.d(b,{register:()=>d})},46466:a=>{a.exports=require("node:stream/promises")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73496:a=>{a.exports=require("http2")},73566:a=>{a.exports=require("worker_threads")},74075:a=>{a.exports=require("zlib")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},79428:a=>{a.exports=require("buffer")},79551:a=>{a.exports=require("url")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80481:a=>{a.exports=require("node:readline")},81630:a=>{a.exports=require("http")},83997:a=>{a.exports=require("tty")},84297:a=>{a.exports=require("async_hooks")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")},98995:a=>{a.exports=require("node:module")}};var b=require("./webpack-runtime.js");b.C(a);var c=b(b.s=45957);module.exports=c})();
@@ -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/3570.js","chunks/4436.js","chunks/4551.js","chunks/5829.js","chunks/6432.js","chunks/701.js","chunks/7032.js","chunks/7412.js","chunks/7579.js","chunks/8092.js","chunks/8165.js","chunks/848.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/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 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-2d8e0c13c0b865fe.js","static/chunks/4bd1b696-182b6b13bdad92e3.js","static/chunks/1255-13d973e0759ea6d6.js","static/chunks/main-app-2de821d2899bb841.js"],rootMainFilesTree:{},pages:{"/_app":["static/chunks/webpack-2d8e0c13c0b865fe.js","static/chunks/framework-1548034a53843b9f.js","static/chunks/main-9bda5041078d2b6a.js","static/chunks/pages/_app-e8b861c87f6f033c.js"],"/_error":["static/chunks/webpack-2d8e0c13c0b865fe.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-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"];
@@ -22,11 +22,11 @@
22
22
  "wasm": [],
23
23
  "assets": [],
24
24
  "env": {
25
- "__NEXT_BUILD_ID": "A9jP2ydtYbqx-IayWP2Sg",
26
- "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "WipY2wqCj7jcOnM/w7hzkm1vZp+L2RxWCfXFxhqu01A=",
27
- "__NEXT_PREVIEW_MODE_ID": "09ce06347e36a1c467f28421af5e6164",
28
- "__NEXT_PREVIEW_MODE_SIGNING_KEY": "ed43ccd14c50a748a4aba5cd731bc503fc7a54fb8b2a9fcabbb98c4ffb09abb8",
29
- "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "6a35a80a5039fda288c46e7a5600db4d30b9802a6e34312371e0608eac882e39"
25
+ "__NEXT_BUILD_ID": "jfb1GsjSGMjBmwfa3kM26",
26
+ "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "VdE9c1sIalXQuPGJWNUKWkO72EvzBDr46ha1orwzXsI=",
27
+ "__NEXT_PREVIEW_MODE_ID": "504c0a6b911be0b2ac15baec6309fb29",
28
+ "__NEXT_PREVIEW_MODE_SIGNING_KEY": "b670417ac233807e27ba2d9a4769bc7d7929b5e35e11a7191bd88b0c3f73e503",
29
+ "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "d0665e9b7ed6cc2ef76dbe478c2d72483a2d618e0d2c853962db0a4132976351"
30
30
  }
31
31
  }
32
32
  },
@@ -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-840f056a0e11d979.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ../contexts/ThemeContext":{"id":26796,"files":["static/chunks/2678-c88052addfb0478a.js","static/chunks/8598-1b627b3d682b364a.js","static/chunks/8405.73e8be2c8e5b55c5.js"]},"frontend\\\\components\\\\AppWrapper.tsx -> ../contexts/TourContext":{"id":69195,"files":["static/chunks/9164-840f056a0e11d979.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/7111-44538f8a64241b74.js","static/chunks/2003-f826c607d609d1fa.js","static/chunks/9562-5494feecd8c6f7a3.js","static/chunks/3272-fd8d59523f61da96.js","static/chunks/9164-840f056a0e11d979.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/7111-44538f8a64241b74.js","static/chunks/2003-f826c607d609d1fa.js","static/chunks/9562-5494feecd8c6f7a3.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-840f056a0e11d979.js","static/chunks/3089.a0856f8093b90939.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/3189-fa8ec6d719d5e72b.js","static/chunks/2969.eb9ff8cd2a5034b0.js","static/chunks/9164-840f056a0e11d979.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":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 +1 @@
1
- <!DOCTYPE html><!--A9jP2ydtYbqx_IayWP2Sg--><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-2d8e0c13c0b865fe.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-038b35b382eef11d.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-2d8e0c13c0b865fe.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-038b35b382eef11d.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\":\"A9jP2ydtYbqx-IayWP2Sg\",\"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><!--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 +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-2d8e0c13c0b865fe.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/A9jP2ydtYbqx-IayWP2Sg/_buildManifest.js" defer=""></script><script src="/_next/static/A9jP2ydtYbqx-IayWP2Sg/_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":"A9jP2ydtYbqx-IayWP2Sg","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-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>