flujo-ai 3.9.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 (525) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-build-manifest.json +592 -0
  3. package/.next/app-path-routes-manifest.json +63 -0
  4. package/.next/build-manifest.json +33 -0
  5. package/.next/diagnostics/build-diagnostics.json +6 -0
  6. package/.next/diagnostics/framework.json +1 -0
  7. package/.next/export-marker.json +6 -0
  8. package/.next/images-manifest.json +58 -0
  9. package/.next/next-minimal-server.js.nft.json +1 -0
  10. package/.next/next-server.js.nft.json +1 -0
  11. package/.next/package.json +1 -0
  12. package/.next/prerender-manifest.json +205 -0
  13. package/.next/react-loadable-manifest.json +83 -0
  14. package/.next/required-server-files.json +328 -0
  15. package/.next/routes-manifest.json +305 -0
  16. package/.next/server/app/_not-found/page.js +4 -0
  17. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  18. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  19. package/.next/server/app/_not-found.html +1 -0
  20. package/.next/server/app/_not-found.meta +8 -0
  21. package/.next/server/app/_not-found.rsc +16 -0
  22. package/.next/server/app/api/backup/route.js +2 -0
  23. package/.next/server/app/api/backup/route.js.nft.json +1 -0
  24. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -0
  25. package/.next/server/app/api/browse/route.js +2 -0
  26. package/.next/server/app/api/browse/route.js.nft.json +1 -0
  27. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -0
  28. package/.next/server/app/api/cwd/route.js +2 -0
  29. package/.next/server/app/api/cwd/route.js.nft.json +1 -0
  30. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -0
  31. package/.next/server/app/api/encryption/secure/route.js +1 -0
  32. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -0
  33. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -0
  34. package/.next/server/app/api/env/route.js +2 -0
  35. package/.next/server/app/api/env/route.js.nft.json +1 -0
  36. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -0
  37. package/.next/server/app/api/flow/[id]/route.js +1 -0
  38. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -0
  39. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -0
  40. package/.next/server/app/api/flow/prompt-renderer/route.js +2 -0
  41. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -0
  42. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -0
  43. package/.next/server/app/api/flow/route.js +1 -0
  44. package/.next/server/app/api/flow/route.js.nft.json +1 -0
  45. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -0
  46. package/.next/server/app/api/git/route.js +3 -0
  47. package/.next/server/app/api/git/route.js.nft.json +1 -0
  48. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -0
  49. package/.next/server/app/api/init/route.js +1 -0
  50. package/.next/server/app/api/init/route.js.nft.json +1 -0
  51. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -0
  52. package/.next/server/app/api/mcp/cancel/route.js +2 -0
  53. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -0
  54. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -0
  55. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -0
  56. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -0
  57. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -0
  58. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -0
  59. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -0
  60. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -0
  61. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -0
  62. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -0
  63. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -0
  64. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -0
  65. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -0
  66. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -0
  67. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -0
  68. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -0
  69. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -0
  70. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -0
  71. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -0
  72. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -0
  73. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -0
  74. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -0
  75. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -0
  76. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -0
  77. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -0
  78. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -0
  79. package/.next/server/app/api/mcp/servers/route.js +1 -0
  80. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -0
  81. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -0
  82. package/.next/server/app/api/mcp/test-connection/route.js +1 -0
  83. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -0
  84. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -0
  85. package/.next/server/app/api/mcp-registry/route.js +2 -0
  86. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -0
  87. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -0
  88. package/.next/server/app/api/mcp-registry/spotlight/route.js +2 -0
  89. package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -0
  90. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -0
  91. package/.next/server/app/api/model/[id]/route.js +1 -0
  92. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -0
  93. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -0
  94. package/.next/server/app/api/model/provider/route.js +2 -0
  95. package/.next/server/app/api/model/provider/route.js.nft.json +1 -0
  96. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -0
  97. package/.next/server/app/api/model/route.js +1 -0
  98. package/.next/server/app/api/model/route.js.nft.json +1 -0
  99. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -0
  100. package/.next/server/app/api/model/test/route.js +2 -0
  101. package/.next/server/app/api/model/test/route.js.nft.json +1 -0
  102. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -0
  103. package/.next/server/app/api/oauth/callback/route.js +2 -0
  104. package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -0
  105. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -0
  106. package/.next/server/app/api/oauth/initiate/route.js +2 -0
  107. package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -0
  108. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -0
  109. package/.next/server/app/api/oauth/reset/route.js +2 -0
  110. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -0
  111. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -0
  112. package/.next/server/app/api/planned-executions/[id]/route.js +1 -0
  113. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -0
  114. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -0
  115. package/.next/server/app/api/planned-executions/[id]/run/route.js +1 -0
  116. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -0
  117. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -0
  118. package/.next/server/app/api/planned-executions/[id]/runs/route.js +1 -0
  119. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -0
  120. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -0
  121. package/.next/server/app/api/planned-executions/preview-schedule/route.js +2 -0
  122. package/.next/server/app/api/planned-executions/preview-schedule/route.js.nft.json +1 -0
  123. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -0
  124. package/.next/server/app/api/planned-executions/route.js +1 -0
  125. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -0
  126. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -0
  127. package/.next/server/app/api/restore/route.js +2 -0
  128. package/.next/server/app/api/restore/route.js.nft.json +1 -0
  129. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -0
  130. package/.next/server/app/api/storage/route.js +2 -0
  131. package/.next/server/app/api/storage/route.js.nft.json +1 -0
  132. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -0
  133. package/.next/server/app/api/update/route.js +2 -0
  134. package/.next/server/app/api/update/route.js.nft.json +1 -0
  135. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -0
  136. package/.next/server/app/api/webhooks/[id]/route.js +1 -0
  137. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -0
  138. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -0
  139. package/.next/server/app/chat/page.js +10 -0
  140. package/.next/server/app/chat/page.js.nft.json +1 -0
  141. package/.next/server/app/chat/page_client-reference-manifest.js +1 -0
  142. package/.next/server/app/chat.html +1 -0
  143. package/.next/server/app/chat.meta +7 -0
  144. package/.next/server/app/chat.rsc +20 -0
  145. package/.next/server/app/docs/page.js +2 -0
  146. package/.next/server/app/docs/page.js.nft.json +1 -0
  147. package/.next/server/app/docs/page_client-reference-manifest.js +1 -0
  148. package/.next/server/app/docs.html +1 -0
  149. package/.next/server/app/docs.meta +7 -0
  150. package/.next/server/app/docs.rsc +20 -0
  151. package/.next/server/app/executions/page.js +5 -0
  152. package/.next/server/app/executions/page.js.nft.json +1 -0
  153. package/.next/server/app/executions/page_client-reference-manifest.js +1 -0
  154. package/.next/server/app/executions.html +1 -0
  155. package/.next/server/app/executions.meta +7 -0
  156. package/.next/server/app/executions.rsc +20 -0
  157. package/.next/server/app/flows/page.js +40 -0
  158. package/.next/server/app/flows/page.js.nft.json +1 -0
  159. package/.next/server/app/flows/page_client-reference-manifest.js +1 -0
  160. package/.next/server/app/flows.html +1 -0
  161. package/.next/server/app/flows.meta +7 -0
  162. package/.next/server/app/flows.rsc +21 -0
  163. package/.next/server/app/index.html +1 -0
  164. package/.next/server/app/index.meta +7 -0
  165. package/.next/server/app/index.rsc +20 -0
  166. package/.next/server/app/mcp/page.js +50 -0
  167. package/.next/server/app/mcp/page.js.nft.json +1 -0
  168. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -0
  169. package/.next/server/app/mcp-flows/route.js +1 -0
  170. package/.next/server/app/mcp-flows/route.js.nft.json +1 -0
  171. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -0
  172. package/.next/server/app/mcp-proxy/[server]/route.js +1 -0
  173. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -0
  174. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -0
  175. package/.next/server/app/mcp.html +1 -0
  176. package/.next/server/app/mcp.meta +7 -0
  177. package/.next/server/app/mcp.rsc +20 -0
  178. package/.next/server/app/models/page.js +3 -0
  179. package/.next/server/app/models/page.js.nft.json +1 -0
  180. package/.next/server/app/models/page_client-reference-manifest.js +1 -0
  181. package/.next/server/app/page.js +2 -0
  182. package/.next/server/app/page.js.nft.json +1 -0
  183. package/.next/server/app/page_client-reference-manifest.js +1 -0
  184. package/.next/server/app/settings/page.js +46 -0
  185. package/.next/server/app/settings/page.js.nft.json +1 -0
  186. package/.next/server/app/settings/page_client-reference-manifest.js +1 -0
  187. package/.next/server/app/settings.html +1 -0
  188. package/.next/server/app/settings.meta +7 -0
  189. package/.next/server/app/settings.rsc +20 -0
  190. package/.next/server/app/v1/chat/completions/route.js +2 -0
  191. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -0
  192. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -0
  193. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +1 -0
  194. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -0
  195. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -0
  196. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -0
  197. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -0
  198. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -0
  199. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -0
  200. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -0
  201. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -0
  202. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -0
  203. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -0
  204. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -0
  205. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +1 -0
  206. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -0
  207. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -0
  208. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +11 -0
  209. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -0
  210. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -0
  211. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -0
  212. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -0
  213. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -0
  214. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -0
  215. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -0
  216. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -0
  217. package/.next/server/app/v1/chat/conversations/route.js +2 -0
  218. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -0
  219. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -0
  220. package/.next/server/app/v1/models/route.js +2 -0
  221. package/.next/server/app/v1/models/route.js.nft.json +1 -0
  222. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -0
  223. package/.next/server/app-paths-manifest.json +63 -0
  224. package/.next/server/chunks/120.js +15 -0
  225. package/.next/server/chunks/1223.js +1 -0
  226. package/.next/server/chunks/1373.js +1 -0
  227. package/.next/server/chunks/1381.js +1 -0
  228. package/.next/server/chunks/1403.js +6 -0
  229. package/.next/server/chunks/1555.js +1 -0
  230. package/.next/server/chunks/1692.js +1 -0
  231. package/.next/server/chunks/1870.js +1 -0
  232. package/.next/server/chunks/1905.js +2 -0
  233. package/.next/server/chunks/1986.js +1 -0
  234. package/.next/server/chunks/2181.js +17 -0
  235. package/.next/server/chunks/22.js +4 -0
  236. package/.next/server/chunks/2253.js +1 -0
  237. package/.next/server/chunks/232.js +1 -0
  238. package/.next/server/chunks/2471.js +1 -0
  239. package/.next/server/chunks/2666.js +1 -0
  240. package/.next/server/chunks/2695.js +95 -0
  241. package/.next/server/chunks/2776.js +3 -0
  242. package/.next/server/chunks/3736.js +1 -0
  243. package/.next/server/chunks/3984.js +9 -0
  244. package/.next/server/chunks/4239.js +1 -0
  245. package/.next/server/chunks/4322.js +1 -0
  246. package/.next/server/chunks/4706.js +1 -0
  247. package/.next/server/chunks/4729.js +6 -0
  248. package/.next/server/chunks/473.js +2 -0
  249. package/.next/server/chunks/4753.js +8 -0
  250. package/.next/server/chunks/4989.js +1 -0
  251. package/.next/server/chunks/5389.js +154 -0
  252. package/.next/server/chunks/5443.js +1 -0
  253. package/.next/server/chunks/5486.js +1 -0
  254. package/.next/server/chunks/5547.js +2 -0
  255. package/.next/server/chunks/558.js +1 -0
  256. package/.next/server/chunks/5611.js +6 -0
  257. package/.next/server/chunks/5734.js +60 -0
  258. package/.next/server/chunks/5838.js +1 -0
  259. package/.next/server/chunks/5873.js +22 -0
  260. package/.next/server/chunks/598.js +1 -0
  261. package/.next/server/chunks/6064.js +1 -0
  262. package/.next/server/chunks/62.js +1 -0
  263. package/.next/server/chunks/6283.js +2 -0
  264. package/.next/server/chunks/6390.js +28 -0
  265. package/.next/server/chunks/6542.js +1 -0
  266. package/.next/server/chunks/6637.js +2 -0
  267. package/.next/server/chunks/6760.js +1 -0
  268. package/.next/server/chunks/6936.js +35 -0
  269. package/.next/server/chunks/6996.js +62 -0
  270. package/.next/server/chunks/701.js +10 -0
  271. package/.next/server/chunks/7214.js +6 -0
  272. package/.next/server/chunks/724.js +27 -0
  273. package/.next/server/chunks/7412.js +5 -0
  274. package/.next/server/chunks/7506.js +10 -0
  275. package/.next/server/chunks/7531.js +52 -0
  276. package/.next/server/chunks/805.js +2 -0
  277. package/.next/server/chunks/812.js +2 -0
  278. package/.next/server/chunks/8298.js +1 -0
  279. package/.next/server/chunks/8312.js +5 -0
  280. package/.next/server/chunks/8445.js +82 -0
  281. package/.next/server/chunks/8460.js +1 -0
  282. package/.next/server/chunks/8693.js +1 -0
  283. package/.next/server/chunks/8739.js +2 -0
  284. package/.next/server/chunks/8938.js +8 -0
  285. package/.next/server/chunks/9042.js +1 -0
  286. package/.next/server/chunks/9188.js +1 -0
  287. package/.next/server/chunks/9273.js +4 -0
  288. package/.next/server/chunks/9314.js +12 -0
  289. package/.next/server/chunks/9343.js +5 -0
  290. package/.next/server/chunks/9406.js +95 -0
  291. package/.next/server/chunks/9938.js +1 -0
  292. package/.next/server/chunks/9989.js +1 -0
  293. package/.next/server/functions-config-manifest.json +10 -0
  294. package/.next/server/instrumentation.js +1 -0
  295. package/.next/server/instrumentation.js.nft.json +1 -0
  296. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  297. package/.next/server/middleware-build-manifest.js +1 -0
  298. package/.next/server/middleware-manifest.json +6 -0
  299. package/.next/server/middleware-react-loadable-manifest.js +1 -0
  300. package/.next/server/next-font-manifest.js +1 -0
  301. package/.next/server/next-font-manifest.json +1 -0
  302. package/.next/server/pages/404.html +1 -0
  303. package/.next/server/pages/500.html +1 -0
  304. package/.next/server/pages/_app.js +1 -0
  305. package/.next/server/pages/_app.js.nft.json +1 -0
  306. package/.next/server/pages/_document.js +1 -0
  307. package/.next/server/pages/_document.js.nft.json +1 -0
  308. package/.next/server/pages/_error.js +19 -0
  309. package/.next/server/pages/_error.js.nft.json +1 -0
  310. package/.next/server/pages-manifest.json +6 -0
  311. package/.next/server/server-reference-manifest.js +1 -0
  312. package/.next/server/server-reference-manifest.json +1 -0
  313. package/.next/server/webpack-runtime.js +1 -0
  314. package/.next/static/GbXXL_8DLT2oVwT-JdpbM/_buildManifest.js +1 -0
  315. package/.next/static/GbXXL_8DLT2oVwT-JdpbM/_ssgManifest.js +1 -0
  316. package/.next/static/chunks/1255-13d973e0759ea6d6.js +1 -0
  317. package/.next/static/chunks/1374-e084b3c40554288a.js +1 -0
  318. package/.next/static/chunks/1424-01898260211a09d0.js +1 -0
  319. package/.next/static/chunks/1646.a93085a0445ba909.js +1 -0
  320. package/.next/static/chunks/1a258343-bcffff1604e3797c.js +1 -0
  321. package/.next/static/chunks/2003-7710c23acaef11c9.js +1 -0
  322. package/.next/static/chunks/2005-f9d38c39f10c321f.js +1 -0
  323. package/.next/static/chunks/2160-4d9f132965bc2a89.js +1 -0
  324. package/.next/static/chunks/2380-2a7acfa037ec8e80.js +1 -0
  325. package/.next/static/chunks/2619-04bc32f026a0d946.js +1 -0
  326. package/.next/static/chunks/2624-b985ab3eac1139c3.js +1 -0
  327. package/.next/static/chunks/2678-c88052addfb0478a.js +1 -0
  328. package/.next/static/chunks/2720-2a926505ec98a6de.js +1 -0
  329. package/.next/static/chunks/3077-565833c67440a7fa.js +1 -0
  330. package/.next/static/chunks/3217.79ca74c918fc772c.js +1 -0
  331. package/.next/static/chunks/3235-dfcb73b8d483f8cd.js +1 -0
  332. package/.next/static/chunks/3272-fd8d59523f61da96.js +1 -0
  333. package/.next/static/chunks/3403-7c5037145e384171.js +1 -0
  334. package/.next/static/chunks/3545.c3fbe14528517a75.js +1 -0
  335. package/.next/static/chunks/3750-38474d67566af4c3.js +1 -0
  336. package/.next/static/chunks/3810-cee95063d5535307.js +1 -0
  337. package/.next/static/chunks/39-1732a0b689c7b641.js +1 -0
  338. package/.next/static/chunks/4754-5c62bb61142f82d1.js +1 -0
  339. package/.next/static/chunks/488-623d07c3fbc21e28.js +1 -0
  340. package/.next/static/chunks/4bd1b696-182b6b13bdad92e3.js +1 -0
  341. package/.next/static/chunks/5139.e4ff9cc3669129ed.js +1 -0
  342. package/.next/static/chunks/5648-2c6caf3d55f95e11.js +1 -0
  343. package/.next/static/chunks/5961-828f4f7efc3e1381.js +1 -0
  344. package/.next/static/chunks/6134-758747aabd77289d.js +8 -0
  345. package/.next/static/chunks/690-391bc0f482a9f67c.js +1 -0
  346. package/.next/static/chunks/7126-2bafddf1b09cacac.js +1 -0
  347. package/.next/static/chunks/7329-78f54f68ea2d37e2.js +1 -0
  348. package/.next/static/chunks/7396-807a034f58b57712.js +1 -0
  349. package/.next/static/chunks/7488-b58bc701d0deda00.js +1 -0
  350. package/.next/static/chunks/7539.41f0448cf9783388.js +1 -0
  351. package/.next/static/chunks/7583.8a518353bd072db9.js +1 -0
  352. package/.next/static/chunks/8187.5d6523f30e705998.js +1 -0
  353. package/.next/static/chunks/8198.cd0d3f8429c02862.js +1 -0
  354. package/.next/static/chunks/8345.76f420453fc0dee7.js +1 -0
  355. package/.next/static/chunks/8548-8e4a95334064e8b2.js +1 -0
  356. package/.next/static/chunks/8598-1b627b3d682b364a.js +1 -0
  357. package/.next/static/chunks/8862-1314a13b011c4817.js +1 -0
  358. package/.next/static/chunks/9164-81ca1a1bccdc5ed2.js +1 -0
  359. package/.next/static/chunks/9195.01a57af6d6cdf1a5.js +1 -0
  360. package/.next/static/chunks/9244-3281f7fd02003a2c.js +1 -0
  361. package/.next/static/chunks/9562-93cc45aef3630781.js +1 -0
  362. package/.next/static/chunks/9718-12d33c1a26bb002d.js +1 -0
  363. package/.next/static/chunks/app/_not-found/page-81dc485d60f94046.js +1 -0
  364. package/.next/static/chunks/app/api/backup/route-acd5b6e731d45f1a.js +1 -0
  365. package/.next/static/chunks/app/api/browse/route-acd5b6e731d45f1a.js +1 -0
  366. package/.next/static/chunks/app/api/cwd/route-acd5b6e731d45f1a.js +1 -0
  367. package/.next/static/chunks/app/api/encryption/secure/route-acd5b6e731d45f1a.js +1 -0
  368. package/.next/static/chunks/app/api/env/route-acd5b6e731d45f1a.js +1 -0
  369. package/.next/static/chunks/app/api/flow/[id]/route-acd5b6e731d45f1a.js +1 -0
  370. package/.next/static/chunks/app/api/flow/prompt-renderer/route-acd5b6e731d45f1a.js +1 -0
  371. package/.next/static/chunks/app/api/flow/route-acd5b6e731d45f1a.js +1 -0
  372. package/.next/static/chunks/app/api/git/route-acd5b6e731d45f1a.js +1 -0
  373. package/.next/static/chunks/app/api/init/route-acd5b6e731d45f1a.js +1 -0
  374. package/.next/static/chunks/app/api/mcp/cancel/route-acd5b6e731d45f1a.js +1 -0
  375. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-acd5b6e731d45f1a.js +1 -0
  376. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-acd5b6e731d45f1a.js +1 -0
  377. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-acd5b6e731d45f1a.js +1 -0
  378. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-acd5b6e731d45f1a.js +1 -0
  379. package/.next/static/chunks/app/api/mcp/servers/[name]/route-acd5b6e731d45f1a.js +1 -0
  380. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-acd5b6e731d45f1a.js +1 -0
  381. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-acd5b6e731d45f1a.js +1 -0
  382. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-acd5b6e731d45f1a.js +1 -0
  383. package/.next/static/chunks/app/api/mcp/servers/route-acd5b6e731d45f1a.js +1 -0
  384. package/.next/static/chunks/app/api/mcp/test-connection/route-acd5b6e731d45f1a.js +1 -0
  385. package/.next/static/chunks/app/api/mcp-registry/route-acd5b6e731d45f1a.js +1 -0
  386. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-acd5b6e731d45f1a.js +1 -0
  387. package/.next/static/chunks/app/api/model/[id]/route-acd5b6e731d45f1a.js +1 -0
  388. package/.next/static/chunks/app/api/model/provider/route-acd5b6e731d45f1a.js +1 -0
  389. package/.next/static/chunks/app/api/model/route-acd5b6e731d45f1a.js +1 -0
  390. package/.next/static/chunks/app/api/model/test/route-acd5b6e731d45f1a.js +1 -0
  391. package/.next/static/chunks/app/api/oauth/callback/route-acd5b6e731d45f1a.js +1 -0
  392. package/.next/static/chunks/app/api/oauth/initiate/route-acd5b6e731d45f1a.js +1 -0
  393. package/.next/static/chunks/app/api/oauth/reset/route-acd5b6e731d45f1a.js +1 -0
  394. package/.next/static/chunks/app/api/planned-executions/[id]/route-acd5b6e731d45f1a.js +1 -0
  395. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-acd5b6e731d45f1a.js +1 -0
  396. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-acd5b6e731d45f1a.js +1 -0
  397. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-acd5b6e731d45f1a.js +1 -0
  398. package/.next/static/chunks/app/api/planned-executions/route-acd5b6e731d45f1a.js +1 -0
  399. package/.next/static/chunks/app/api/restore/route-acd5b6e731d45f1a.js +1 -0
  400. package/.next/static/chunks/app/api/storage/route-acd5b6e731d45f1a.js +1 -0
  401. package/.next/static/chunks/app/api/update/route-acd5b6e731d45f1a.js +1 -0
  402. package/.next/static/chunks/app/api/webhooks/[id]/route-acd5b6e731d45f1a.js +1 -0
  403. package/.next/static/chunks/app/chat/page-019d2b836f34f40d.js +1 -0
  404. package/.next/static/chunks/app/docs/page-2a4cff7c40706a48.js +1 -0
  405. package/.next/static/chunks/app/executions/page-b46744c507a6e810.js +1 -0
  406. package/.next/static/chunks/app/flows/page-7b5c0e06951398ac.js +1 -0
  407. package/.next/static/chunks/app/layout-2878f13d7e253503.js +1 -0
  408. package/.next/static/chunks/app/mcp/page-1ca55f88a3045b5d.js +1 -0
  409. package/.next/static/chunks/app/mcp-flows/route-acd5b6e731d45f1a.js +1 -0
  410. package/.next/static/chunks/app/mcp-proxy/[server]/route-acd5b6e731d45f1a.js +1 -0
  411. package/.next/static/chunks/app/models/error-2b00c98abf1e02cf.js +1 -0
  412. package/.next/static/chunks/app/models/loading-57d1c02d0817fc47.js +1 -0
  413. package/.next/static/chunks/app/models/page-a20e6c4e1a5a0c9a.js +1 -0
  414. package/.next/static/chunks/app/page-471879d3918aeeb6.js +1 -0
  415. package/.next/static/chunks/app/settings/page-88f7e1b65a6681ec.js +1 -0
  416. package/.next/static/chunks/app/v1/chat/completions/route-acd5b6e731d45f1a.js +1 -0
  417. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-acd5b6e731d45f1a.js +1 -0
  418. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-acd5b6e731d45f1a.js +1 -0
  419. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-acd5b6e731d45f1a.js +1 -0
  420. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-acd5b6e731d45f1a.js +1 -0
  421. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-acd5b6e731d45f1a.js +1 -0
  422. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-acd5b6e731d45f1a.js +1 -0
  423. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-acd5b6e731d45f1a.js +1 -0
  424. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-acd5b6e731d45f1a.js +1 -0
  425. package/.next/static/chunks/app/v1/chat/conversations/route-acd5b6e731d45f1a.js +1 -0
  426. package/.next/static/chunks/app/v1/models/route-acd5b6e731d45f1a.js +1 -0
  427. package/.next/static/chunks/ccd63cfe-4a75b90fa4cb53ad.js +1 -0
  428. package/.next/static/chunks/framework-1548034a53843b9f.js +1 -0
  429. package/.next/static/chunks/main-app-faff38c77cb00119.js +1 -0
  430. package/.next/static/chunks/main-be8e823624954fab.js +1 -0
  431. package/.next/static/chunks/pages/_app-e8b861c87f6f033c.js +1 -0
  432. package/.next/static/chunks/pages/_error-c8f84f7bd11d43d4.js +1 -0
  433. package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  434. package/.next/static/chunks/webpack-6f17a022ac16e8bd.js +1 -0
  435. package/.next/static/css/64cb1f185b52a623.css +1 -0
  436. package/.next/static/css/d1484588c616b291.css +31 -0
  437. package/.next/static/media/013b72fa676f92e0-s.woff2 +0 -0
  438. package/.next/static/media/22a5144ee8d83bca-s.p.woff2 +0 -0
  439. package/.next/static/media/2b5b02fc7e511755-s.woff2 +0 -0
  440. package/.next/static/media/65f03d54ccadf4a8-s.woff2 +0 -0
  441. package/.next/static/media/7d4881bb7e1bf84d-s.p.woff2 +0 -0
  442. package/.next/static/media/9766a7e9e2e0ad5a-s.woff2 +0 -0
  443. package/.next/static/media/aa016aab0e6d1295-s.woff2 +0 -0
  444. package/.next/static/media/b66cf8e69499582a-s.woff2 +0 -0
  445. package/.next/static/media/b9408752a0c24fb9-s.woff2 +0 -0
  446. package/.next/static/media/e038a29029a234f2-s.woff2 +0 -0
  447. package/.next/static/media/f639721981034f88-s.woff2 +0 -0
  448. package/.next/trace +7 -0
  449. package/.next/types/app/api/backup/route.ts +347 -0
  450. package/.next/types/app/api/browse/route.ts +347 -0
  451. package/.next/types/app/api/cwd/route.ts +347 -0
  452. package/.next/types/app/api/encryption/secure/route.ts +347 -0
  453. package/.next/types/app/api/env/route.ts +347 -0
  454. package/.next/types/app/api/flow/[id]/route.ts +347 -0
  455. package/.next/types/app/api/flow/prompt-renderer/route.ts +347 -0
  456. package/.next/types/app/api/flow/route.ts +347 -0
  457. package/.next/types/app/api/git/route.ts +347 -0
  458. package/.next/types/app/api/init/route.ts +347 -0
  459. package/.next/types/app/api/mcp/cancel/route.ts +347 -0
  460. package/.next/types/app/api/mcp/servers/[name]/prompts/get/route.ts +347 -0
  461. package/.next/types/app/api/mcp/servers/[name]/prompts/route.ts +347 -0
  462. package/.next/types/app/api/mcp/servers/[name]/resources/read/route.ts +347 -0
  463. package/.next/types/app/api/mcp/servers/[name]/resources/route.ts +347 -0
  464. package/.next/types/app/api/mcp/servers/[name]/route.ts +347 -0
  465. package/.next/types/app/api/mcp/servers/[name]/status/route.ts +347 -0
  466. package/.next/types/app/api/mcp/servers/[name]/tools/[toolName]/route.ts +347 -0
  467. package/.next/types/app/api/mcp/servers/[name]/tools/route.ts +347 -0
  468. package/.next/types/app/api/mcp/servers/route.ts +347 -0
  469. package/.next/types/app/api/mcp/test-connection/route.ts +347 -0
  470. package/.next/types/app/api/mcp-registry/route.ts +347 -0
  471. package/.next/types/app/api/mcp-registry/spotlight/route.ts +347 -0
  472. package/.next/types/app/api/model/[id]/route.ts +347 -0
  473. package/.next/types/app/api/model/provider/route.ts +347 -0
  474. package/.next/types/app/api/model/route.ts +347 -0
  475. package/.next/types/app/api/model/test/route.ts +347 -0
  476. package/.next/types/app/api/oauth/callback/route.ts +347 -0
  477. package/.next/types/app/api/oauth/initiate/route.ts +347 -0
  478. package/.next/types/app/api/oauth/reset/route.ts +347 -0
  479. package/.next/types/app/api/planned-executions/[id]/route.ts +347 -0
  480. package/.next/types/app/api/planned-executions/[id]/run/route.ts +347 -0
  481. package/.next/types/app/api/planned-executions/[id]/runs/route.ts +347 -0
  482. package/.next/types/app/api/planned-executions/preview-schedule/route.ts +347 -0
  483. package/.next/types/app/api/planned-executions/route.ts +347 -0
  484. package/.next/types/app/api/restore/route.ts +347 -0
  485. package/.next/types/app/api/storage/route.ts +347 -0
  486. package/.next/types/app/api/update/route.ts +347 -0
  487. package/.next/types/app/api/webhooks/[id]/route.ts +347 -0
  488. package/.next/types/app/chat/page.ts +84 -0
  489. package/.next/types/app/docs/page.ts +84 -0
  490. package/.next/types/app/executions/page.ts +84 -0
  491. package/.next/types/app/flows/page.ts +84 -0
  492. package/.next/types/app/layout.ts +84 -0
  493. package/.next/types/app/mcp/page.ts +84 -0
  494. package/.next/types/app/mcp-flows/route.ts +347 -0
  495. package/.next/types/app/mcp-proxy/[server]/route.ts +347 -0
  496. package/.next/types/app/models/page.ts +84 -0
  497. package/.next/types/app/page.ts +84 -0
  498. package/.next/types/app/settings/page.ts +84 -0
  499. package/.next/types/app/v1/chat/completions/route.ts +347 -0
  500. package/.next/types/app/v1/chat/conversations/[conversationId]/breakpoints/route.ts +347 -0
  501. package/.next/types/app/v1/chat/conversations/[conversationId]/cancel/route.ts +347 -0
  502. package/.next/types/app/v1/chat/conversations/[conversationId]/debug/continue/route.ts +347 -0
  503. package/.next/types/app/v1/chat/conversations/[conversationId]/debug/step/route.ts +347 -0
  504. package/.next/types/app/v1/chat/conversations/[conversationId]/edit-state/route.ts +347 -0
  505. package/.next/types/app/v1/chat/conversations/[conversationId]/events/route.ts +347 -0
  506. package/.next/types/app/v1/chat/conversations/[conversationId]/respond/route.ts +347 -0
  507. package/.next/types/app/v1/chat/conversations/[conversationId]/route.ts +347 -0
  508. package/.next/types/app/v1/chat/conversations/route.ts +347 -0
  509. package/.next/types/app/v1/models/route.ts +347 -0
  510. package/.next/types/cache-life.d.ts +141 -0
  511. package/.next/types/package.json +1 -0
  512. package/.next/types/routes.d.ts +131 -0
  513. package/.next/types/validator.ts +601 -0
  514. package/LICENSE +21 -0
  515. package/README.md +372 -0
  516. package/bin/flujo.mjs +120 -0
  517. package/next.config.ts +99 -0
  518. package/package.json +91 -0
  519. package/public/favicon.ico +0 -0
  520. package/public/file.svg +1 -0
  521. package/public/globe.svg +1 -0
  522. package/public/next.svg +1 -0
  523. package/public/vercel.svg +1 -0
  524. package/public/window.svg +1 -0
  525. package/scripts/launch-next.mjs +98 -0
package/README.md ADDED
@@ -0,0 +1,372 @@
1
+ [![Verified on MseeP](https://mseep.ai/badge.svg)](https://mseep.ai/app/3f62578d-605f-474c-9472-c5e40df60ee0)
2
+
3
+ # DISCLAIMER
4
+ FLUJO is still an early preview!
5
+
6
+ ## ⚡ Quick Install (Windows)
7
+
8
+ Install everything (Git, Node.js, Python, uv), clone FLUJO, build it, and optionally start it with a single PowerShell command:
9
+
10
+ Press start, type powershell, press Enter, copy & paste the command below and press Enter again.
11
+
12
+ ```powershell
13
+ irm https://raw.githubusercontent.com/mario-andreschak/FLUJO/main/scripts/install.ps1 | iex
14
+ ```
15
+
16
+ Prefer to set it up manually? See [Getting Started](#-getting-started). To remove FLUJO later, see [Uninstalling](#uninstalling-windows).
17
+
18
+ ## A few words in advance
19
+
20
+ For *anything* that you struggle with (MCP Installation, Application Issues, Usability Issues, Feedback): **PLEASE LET ME KNOW!**
21
+ -> Create a Github Issue or write on Discord (https://discord.gg/KPyrjTSSat) and I will look into it! Maybe a response will take a day, but I will try to get back to each and every one of you.
22
+
23
+ ### FLUJO animated Short #1 — "A sad song about MCP"
24
+
25
+ [![FLUJO animated short: A sad song about MCP](https://github.com/user-attachments/assets/e83cf81d-e5db-451c-9599-77dcdbe4ba2c)](https://www.youtube.com/watch?v=boOS9XHQdZc)
26
+
27
+ # FLUJO
28
+
29
+ [![MIT License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
30
+ [![Version](https://img.shields.io/badge/version-3.9.0-green.svg)](package.json)
31
+
32
+ FLUJO is an open-source, local-first platform for building **MCP-powered AI workflows**. It brings together model management, Model-Context-Protocol (MCP) servers, a visual flow builder, and a chat interface in one app — so you can wire models and tools together, run them headlessly on triggers, and expose the result to other apps, without giving up control of your keys and data.
33
+
34
+ ![FLUJO Overview](docs/images/readme/home.png)
35
+
36
+ FLUJO is powered by the [PocketFlow Framework](https://the-pocket-world.github.io/Pocket-Flow-Framework/) and built with Cline, Claude Code and a lot of LOVE.
37
+
38
+ ## 🌟 Key Features
39
+
40
+ ### 🔑 Secure Environment & API Key Management
41
+
42
+ - **Encrypted at rest**: API keys and other secrets are encrypted in local storage, with an optional custom encryption password for extra protection
43
+ - **Never sent to the browser**: secrets stay server-side — the frontend only ever sees a masked placeholder, even in your own DevTools
44
+ - **Global variables, bound anywhere**: define a key once (e.g. `openrouter_key`) and bind it into any model or MCP server config instead of pasting it repeatedly
45
+ - **Backup & restore** your encrypted store from the Settings page
46
+
47
+ ![Settings — Global Environment Variables](docs/images/readme/settings.png)
48
+
49
+ ### 🤖 Model Management
50
+
51
+ - **Multiple providers**: OpenAI, Anthropic (native or OpenAI-compatible), Google Gemini, X.ai (Grok), OpenRouter, and local models via Ollama
52
+ - **Claude Subscription**: use your Claude Pro/Max plan directly (via the Claude Agent SDK) instead of a metered API key
53
+ - **Per-model system prompts** and tunable parameters, reused across any flow
54
+
55
+ ![Model Configuration](docs/images/readme/models.png)
56
+ ![Model Configuration Modal](docs/images/readme/model-edit.png)
57
+
58
+ ### 🔌 MCP Server Integration
59
+
60
+ - **Install from anywhere**: the **Marketplace** tab searches the official [MCP Registry](https://registry.modelcontextprotocol.io) and installs with one click; **Spotlight** curates servers verified to work well with FLUJO; or install manually from a GitHub repo / local folder
61
+ - **Full MCP capability support**: tools, resources, prompts, roots (workspace folders), and sampling (let a server borrow one of your models under a trust policy you control)
62
+ - **Tool inspection & testing**: browse and call a server's tools, resources, and prompts straight from its detail view
63
+ - **FLUJO as an MCP proxy**: re-expose any server you've configured in FLUJO to other MCP clients (Claude Desktop, Cursor, Cline, …) over Streamable HTTP — configure a server once, use it everywhere
64
+
65
+ ![MCP Marketplace](docs/images/readme/mcp-marketplace.png)
66
+
67
+ Configuring a server is a guided, three-step form (define it → install & build → define how to run it) with a one-click connection test before you save:
68
+
69
+ ![MCP Server Configuration](docs/images/readme/mcp-server-setup.png)
70
+
71
+ Every connected server gets a detail view to browse and test its tools, resources, and prompts directly:
72
+
73
+ ![MCP Tool Tester](docs/images/readme/mcp-tool-tester.png)
74
+
75
+ ### 🔄 Visual Flow Builder
76
+
77
+ - **Drag-and-drop orchestration**: connect Start, Process (LLM), MCP, Subflow, and Finish nodes into a graph
78
+ - **Branching & handoff**: let a model hand off to another node/agent based on the conversation, build loops, or fan out into multiple specialists
79
+ - **Subflows**: call another flow as a single step, with its own isolated state — reuse a flow like a function
80
+ - **Per-node tool & prompt scoping**: decide exactly which tools, resources, and system-prompt fragments each node can see
81
+
82
+ ![Flow Builder](docs/images/readme/flow-builder.png)
83
+ ![Branching prompt configuration](docs/images/readme/flow-branching-config.png)
84
+
85
+ #### Branching & handoff
86
+
87
+ Connect one node to several successors, then tell the model when to use each handoff tool from the "Agent Tools" tab of its Process Node:
88
+
89
+ ![Branching](https://github.com/user-attachments/assets/73be3153-5dea-4729-bf10-40657b2a12c4)
90
+ ![Branching handoff tools](https://github.com/user-attachments/assets/d3bc188f-8a7a-4fb0-830c-e4d85a9a37bf)
91
+
92
+ #### Loops
93
+
94
+ Connect a node back to a previous one the same way to build a loop:
95
+
96
+ ![Loops](https://github.com/user-attachments/assets/3c026812-a895-4c3a-a37d-fe51550b273b)
97
+
98
+ #### Orchestration & Subflows
99
+
100
+ Combine multiple handoffs and loops to build an orchestrator, or drop in a **Subflow** node to run another flow as a single, reusable step with its own isolated state:
101
+
102
+ ![Orchestration](https://github.com/user-attachments/assets/0a3abfe9-8e83-49ea-a8da-bede3bed31e3)
103
+ ![Subflow configuration](docs/images/readme/flow-subflow-config.png)
104
+
105
+ ### 💬 Chat Interface
106
+
107
+ - **Live execution view**: watch a run progress node-by-node in real time, with token usage and a context-window meter per conversation
108
+ - **Visual debugger**: set breakpoints, step through a run node-by-node, and inspect state before/after each step
109
+ - **Human-in-the-loop tool approval**: optionally require approval before any tool call executes, for any provider (including Claude Subscription's agentic tool use)
110
+ - **File & audio attachments**, message editing, and conversation branching
111
+
112
+ ![Chat Interface](docs/images/readme/chat-handoff.png)
113
+
114
+ Step through a run node-by-node with the visual debugger, inspecting prep/exec state at every stop:
115
+
116
+ ![Visual Debugger](docs/images/readme/chat-debugger.png)
117
+
118
+ ### ⏱️ Planned Executions (Automation)
119
+
120
+ Run your flows automatically — on a schedule or when something happens — without opening the chat. FLUJO just needs to be running for triggers to fire.
121
+
122
+ - **Schedule**: cron-style recurring runs (with second-level precision and catch-up for missed runs)
123
+ - **Webhook**: trigger a flow via an authenticated HTTP call
124
+ - **File watch**: fire when files change under a folder
125
+ - **MCP tool polling**: periodically call a tool and fire on change, on new items, or let a model/checker-flow decide
126
+ - **URL watch**: fire when a fetched page's content changes
127
+
128
+ ![Planned Executions](docs/images/readme/planned-executions.png)
129
+ ![New Planned Execution](docs/images/readme/planned-execution-new.png)
130
+
131
+ Run history is kept per trigger, with the full output of every run one click away:
132
+
133
+ ![Planned Execution Run Detail](docs/images/readme/planned-execution-detail.png)
134
+
135
+ As an example, a "watch a tool" trigger polling a WhatsApp MCP server can turn FLUJO into an autonomous auto-responder:
136
+
137
+ ![WhatsApp auto-reply demo](docs/images/readme/whatsapp-demo.png)
138
+
139
+ ### 🔄 External Tool Integration
140
+
141
+ - **OpenAI-compatible endpoint**: point Cline, Roo Code, Cursor, or any OpenAI-SDK client at `http://localhost:4200/v1`, use any API key value, and pick a model named `flow-<your-flow-name>`
142
+ - **FLUJO as an MCP server (proxy)**: point an external MCP client at `http://localhost:4200/mcp-proxy/<server-name>` to reuse a server you configured once in FLUJO (localhost-only in the current version)
143
+
144
+ > **Note:** FLUJO does not expose an Ollama-compatible *server* endpoint — use the OpenAI-compatible provider above to consume flows from other apps. (Connecting FLUJO *to* a local Ollama instance as a model provider is a separate, supported feature.)
145
+
146
+ ### 📖 Built-in API Documentation
147
+
148
+ A searchable `/docs` page inside the app documents every REST endpoint FLUJO exposes (chat, conversations, models, flows, MCP, planned executions, env/encryption, backups) — useful when integrating FLUJO into your own tooling.
149
+
150
+ ![API Documentation](docs/images/readme/docs.png)
151
+
152
+ ## 🚀 Getting Started
153
+
154
+ ### Manual installation:
155
+ ### Prerequisites
156
+
157
+ - Node.js (v18 or higher)
158
+ - claude code (optional, if you want to use Anthropic Subscription)
159
+ - python (optional, if you want to use python-based MCP servers)
160
+ - pip (optional, if you want to use python-based MCP servers that build with pip)
161
+ - uv and/or yarn (optional, if you prefer these over npm or pip)
162
+
163
+ ### Installation
164
+
165
+ 1. Clone the repository:
166
+ ```bash
167
+ git clone https://github.com/mario-andreschak/FLUJO.git
168
+ cd FLUJO
169
+ ```
170
+
171
+ 2. Install dependencies:
172
+ ```bash
173
+ npm install
174
+ # or
175
+ yarn install
176
+ ```
177
+
178
+ 3. Start the development server:
179
+ ```bash
180
+ npm run dev
181
+ # or
182
+ yarn dev
183
+ ```
184
+
185
+ 4. Open your browser and navigate to:
186
+ ```
187
+ http://localhost:4200
188
+ ```
189
+
190
+ 5. FLUJO feels and works best if you run it compiled:
191
+ ```bash
192
+ npm run build
193
+ npm start
194
+ ```
195
+
196
+ ### Run with Docker
197
+
198
+ On any machine with Docker, start FLUJO with one command:
199
+
200
+ ```bash
201
+ docker compose up
202
+ ```
203
+
204
+ Then open http://localhost:4200.
205
+
206
+ - **Your data persists** in the named volumes `flujo-db` (flows, encrypted keys,
207
+ MCP configs, chat history) and `flujo-mcp-servers` (installed MCP server clones),
208
+ so it survives `docker compose down` / `up`.
209
+ - **Updating**: pull a newer image instead of the in-app updater —
210
+ `docker compose pull && docker compose up -d`. FLUJO detects it is running in a
211
+ container and shows this in the update settings.
212
+ - **Private/corporate CA** for HTTPS MCP servers: mount your CA file and set
213
+ `FLUJO_EXTRA_CA_CERTS` to its path (see the commented `environment:` block in
214
+ `docker-compose.yml`).
215
+ - **Claude Subscription** in-container: generate a token on your host with
216
+ `claude setup-token` and pass it as `CLAUDE_CODE_OAUTH_TOKEN`.
217
+ - **fileWatch triggers**: bind-mount the host folder you want to watch into the
218
+ container (see the commented volume example in `docker-compose.yml`).
219
+
220
+ > ⚠️ **Security:** FLUJO has no authentication layer and its git API runs
221
+ > commands on the server, so the port is bound to **localhost only** by default.
222
+ > Do **not** expose it on `0.0.0.0` / publish it publicly unless it sits behind
223
+ > your own authenticating reverse proxy on a trusted network.
224
+
225
+ ### Run via npx (npm package)
226
+
227
+ ```bash
228
+ npx flujo-ai
229
+ ```
230
+
231
+ This runs a prebuilt FLUJO with no git clone or local build. Your data lives in
232
+ `~/.flujo` by default (override with `FLUJO_DATA_DIR`); the port defaults to 4200
233
+ (`--port` / `FLUJO_PORT`), and the browser opens automatically unless you pass
234
+ `--no-open`. MCP servers may still need `git`, `python`/`uv`, or Node on your
235
+ `PATH`. To update, just rerun with `npx flujo-ai@latest`. (The npm package is
236
+ `flujo-ai` — the name `flujo` is blocked by npm's similarity rules — but the
237
+ installed command is still `flujo`.)
238
+
239
+ ### One-line install (Windows)
240
+
241
+ On a fresh Windows machine you can install everything (Git, Node.js, Python, uv),
242
+ clone FLUJO, build it, and optionally start it with a single PowerShell command:
243
+
244
+ ```powershell
245
+ irm https://raw.githubusercontent.com/mario-andreschak/FLUJO/main/scripts/install.ps1 | iex
246
+ ```
247
+
248
+ By default FLUJO is installed into `%LOCALAPPDATA%\FLUJO`. To customise the install
249
+ without the interactive prompt, set environment variables first, e.g.:
250
+
251
+ ```powershell
252
+ $env:FLUJO_DIR = "D:\Apps\FLUJO"; $env:FLUJO_START = "1"; irm https://raw.githubusercontent.com/mario-andreschak/FLUJO/main/scripts/install.ps1 | iex
253
+ ```
254
+
255
+ See [`scripts/install.ps1`](scripts/install.ps1) for all options.
256
+
257
+ ### Uninstalling (Windows)
258
+
259
+ To remove FLUJO, run the uninstaller:
260
+
261
+ ```powershell
262
+ irm https://raw.githubusercontent.com/mario-andreschak/FLUJO/main/scripts/uninstall.ps1 | iex
263
+ ```
264
+
265
+ or, from inside your install folder:
266
+
267
+ ```powershell
268
+ powershell -ExecutionPolicy Bypass -File scripts\uninstall.ps1
269
+ ```
270
+
271
+ It asks, per prerequisite (Git, Node.js, Python, uv), whether to remove it — defaulting
272
+ to **yes** for ones FLUJO installed and **no** for ones that were already on your system
273
+ — then removes the `flujo` command and the FLUJO folder.
274
+
275
+ > ⚠️ **This permanently deletes your data.** All flows, encrypted API keys, MCP server
276
+ > configs and chat history live in `<install>\db\` and are removed with the folder. Use
277
+ > FLUJO's built-in backup/export first if you want to keep them.
278
+
279
+ Installs created before this feature have no manifest; the uninstaller then defaults every
280
+ prerequisite to **keep** (it can't tell which FLUJO installed). Re-running the installer
281
+ once writes the manifest for future uninstalls. See
282
+ [`scripts/uninstall.ps1`](scripts/uninstall.ps1) for details.
283
+
284
+ ## 📖 Usage
285
+
286
+ ### Setting up often used API keys
287
+
288
+ 1. Navigate to Settings
289
+ 2. Save your API Keys globally to secure them
290
+
291
+ ![Settings — Global Environment Variables](docs/images/readme/settings.png)
292
+
293
+ ### Setting Up Models
294
+
295
+ 1. Navigate to the Models page
296
+ 2. Click "Add Model" to create a new model configuration
297
+ 3. Configure your model with name, provider, API key, and system prompt
298
+ 4. Save your configuration
299
+
300
+ ### Managing MCP Servers
301
+
302
+ 1. Go to the MCP page
303
+ 2. Click "Add Server"
304
+ 3. Pick a tab: **Spotlight** (curated, one click), **Marketplace** (search the official MCP Registry), **GitHub** (install from a repo), **Local Server**, **Remote**, or **Reference Servers**
305
+ 4. Configure server settings and environment variables
306
+ 5. Start and manage your server, or open its card to browse/test its tools, resources, and prompts
307
+
308
+ ### Creating Workflows
309
+
310
+ 1. Visit the Flows page
311
+ 2. Click "Create Flow" to start a new workflow
312
+ 3. Add processing nodes and connect them
313
+ 4. Configure each node with models and tools
314
+ 5. Save your flow
315
+
316
+ ![Flow Dashboard](docs/images/readme/flows-dashboard.png)
317
+
318
+ For branching, loops, and subflows, see [Orchestration & Subflows](#orchestration--subflows) above.
319
+
320
+ ### Automating Flows (Planned Executions)
321
+
322
+ 1. Go to the Executions page
323
+ 2. Click "Add" and choose a trigger: Schedule, Webhook, File Watch, MCP Tool Polling, or URL Watch
324
+ 3. Pick the flow to run and configure the trigger-specific options
325
+ 4. Save — FLUJO fires the trigger and runs the flow in the background while it's running, and shows the run history on the same page
326
+
327
+ ### Using the Chat Interface
328
+
329
+ 1. Go to the Chat page
330
+ 2. Select a flow to interact with
331
+ 3. Start chatting with your configured workflow — enable "Execute in Debugger" or "Require Tool Approvals" from the input bar if you want more control over the run
332
+
333
+ ## 📄 License
334
+
335
+ FLUJO is licensed under the [MIT License](LICENSE).
336
+
337
+ ## 🚀 Roadmap
338
+
339
+ Most of the original roadmap has shipped: MCP resources/prompts/roots/sampling, the MCP Marketplace & Spotlight, subflows, the visual debugger, and Planned Executions (scheduled/triggered headless runs) are all in. The main thing left on the list is **AI-assisted flow generation** — describe what you want and have FLUJO draft the flow for you.
340
+
341
+ Beyond that, ideas we're keeping an eye on:
342
+ - Real-time voice input/output
343
+ - Deeper MCP roots support (checkpoints/restore)
344
+ - Edge-device-friendly builds
345
+
346
+ Have a feature request? Open a GitHub issue or drop it on Discord — see [above](#a-few-words-in-advance).
347
+
348
+ ## 🤝 Contributing
349
+
350
+ Contributions are welcome! Feel free to open issues or submit pull requests.
351
+
352
+ 1. Fork the repository
353
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
354
+ 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
355
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
356
+ 5. Open a Pull Request
357
+
358
+ ## 📬 Contact
359
+
360
+ - GitHub: [mario-andreschak](https://github.com/mario-andreschak)
361
+ - LinkedIn: https://www.linkedin.com/in/mario-andreschak-674033299/
362
+
363
+ ## Notes:
364
+ - You can add ~FLUJO=HTML, ~FLUJO=MARKDOWN, ~FLUJO=JSON, ~FLUJO=TEXT in your message to format the response, this will give varying results in different tools where you integrate FLUJO.
365
+ - You can add ~FLUJOEXPAND=1 or ~FLUJODEBUG=1 somewhere in your message to show more details
366
+ - in config/features.ts you can change the Logging-level for the whole application
367
+ ---
368
+
369
+ FLUJO - Empowering your AI workflows with open-source orchestration.
370
+
371
+ ## Ecosystem
372
+ [![MseeP.ai Security Assessment Badge](https://mseep.net/pr/mario-andreschak-flujo-badge.png)](https://mseep.ai/app/mario-andreschak-flujo)
package/bin/flujo.mjs ADDED
@@ -0,0 +1,120 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * `flujo` / `npx flujo-ai` entry point (issue #59).
4
+ *
5
+ * Runs a *prebuilt* FLUJO out of the installed npm package — no git clone, no
6
+ * local `next build`. It:
7
+ * 1. Puts user data in ~/.flujo by default (FLUJO_DATA_DIR override honored),
8
+ * so nothing is written into the read-only package install dir.
9
+ * 2. Marks the install mode as 'npm' (FLUJO_NPM=1) so the update route/UI show
10
+ * "reinstall the package" instead of a broken git-pull button.
11
+ * 3. Applies the exact same TLS/CA env handling as `npm start` by reusing
12
+ * buildLaunchEnv() from scripts/launch-next.mjs (single source of truth).
13
+ * 4. Starts Next's own `next start` from the package's bundled node_modules,
14
+ * with cwd = package root so the packaged `.next` build is found.
15
+ *
16
+ * Flags: --port <n> / FLUJO_PORT (default 4200); --no-open to suppress the
17
+ * browser auto-open.
18
+ */
19
+ import process from 'node:process';
20
+ import path from 'node:path';
21
+ import os from 'node:os';
22
+ import fs from 'node:fs';
23
+ import { spawn } from 'node:child_process';
24
+ import { fileURLToPath, pathToFileURL } from 'node:url';
25
+ import { createRequire } from 'node:module';
26
+
27
+ const require = createRequire(import.meta.url);
28
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
29
+ // Package root is the parent of bin/ — where package.json and the built .next live.
30
+ const packageRoot = path.resolve(__dirname, '..');
31
+
32
+ // --- args -----------------------------------------------------------------
33
+ const argv = process.argv.slice(2);
34
+ const noOpen = argv.includes('--no-open');
35
+
36
+ function readPort() {
37
+ const idx = argv.findIndex((a) => a === '--port' || a === '-p');
38
+ if (idx !== -1 && argv[idx + 1]) {
39
+ return argv[idx + 1];
40
+ }
41
+ const eq = argv.find((a) => a.startsWith('--port='));
42
+ if (eq) {
43
+ return eq.slice('--port='.length);
44
+ }
45
+ return process.env.FLUJO_PORT || '4200';
46
+ }
47
+ const port = readPort();
48
+
49
+ // --- data dir --------------------------------------------------------------
50
+ // Default writable data location for a packaged install. A git checkout keeps
51
+ // data in the repo; the npm package keeps it in the user's home so upgrades
52
+ // (reinstalls) never touch it.
53
+ if (!process.env.FLUJO_DATA_DIR || process.env.FLUJO_DATA_DIR.trim().length === 0) {
54
+ process.env.FLUJO_DATA_DIR = path.join(os.homedir(), '.flujo');
55
+ }
56
+ try {
57
+ fs.mkdirSync(process.env.FLUJO_DATA_DIR, { recursive: true });
58
+ } catch (error) {
59
+ console.error(`[FLUJO] Could not create data directory ${process.env.FLUJO_DATA_DIR}:`, error);
60
+ process.exit(1);
61
+ }
62
+
63
+ // Tell the running server it was installed via npm so it reports the right update mode.
64
+ process.env.FLUJO_NPM = '1';
65
+
66
+ // --- build env (TLS/CA), reusing the launcher's single source of truth ------
67
+ const { buildLaunchEnv } = await import(pathToFileURL(path.join(packageRoot, 'scripts', 'launch-next.mjs')).href);
68
+ const env = buildLaunchEnv(process.env);
69
+
70
+ // --- resolve Next's own CLI from the package's bundled node_modules ---------
71
+ // Never rely on a `next` on the user's PATH — run the exact version this package
72
+ // was built against.
73
+ let nextBin;
74
+ try {
75
+ nextBin = require.resolve('next/dist/bin/next');
76
+ } catch (error) {
77
+ console.error('[FLUJO] Could not locate the bundled Next.js binary. The package install may be corrupt.', error);
78
+ process.exit(1);
79
+ }
80
+
81
+ const url = `http://localhost:${port}`;
82
+ console.log(`[FLUJO] Starting on ${url}`);
83
+ console.log(`[FLUJO] Data directory: ${process.env.FLUJO_DATA_DIR}`);
84
+
85
+ const child = spawn(process.execPath, [nextBin, 'start', '-p', String(port)], {
86
+ stdio: 'inherit',
87
+ cwd: packageRoot,
88
+ env,
89
+ });
90
+
91
+ child.on('error', (error) => {
92
+ console.error('[FLUJO] Failed to launch:', error);
93
+ process.exit(1);
94
+ });
95
+
96
+ child.on('exit', (code, signal) => {
97
+ if (signal) {
98
+ process.kill(process.pid, signal);
99
+ } else {
100
+ process.exit(code ?? 0);
101
+ }
102
+ });
103
+
104
+ // --- browser auto-open (best-effort) ---------------------------------------
105
+ if (!noOpen) {
106
+ const openCommand =
107
+ process.platform === 'win32' ? { cmd: 'cmd', args: ['/c', 'start', '""', url] }
108
+ : process.platform === 'darwin' ? { cmd: 'open', args: [url] }
109
+ : { cmd: 'xdg-open', args: [url] };
110
+ // Give `next start` a moment to bind the port before opening the browser.
111
+ setTimeout(() => {
112
+ try {
113
+ const opener = spawn(openCommand.cmd, openCommand.args, { stdio: 'ignore', detached: true });
114
+ opener.on('error', () => { /* no browser / headless — ignore */ });
115
+ opener.unref();
116
+ } catch {
117
+ /* best-effort only */
118
+ }
119
+ }, 2000);
120
+ }
package/next.config.ts ADDED
@@ -0,0 +1,99 @@
1
+ import type { NextConfig } from "next";
2
+ import path from 'path';
3
+
4
+ const nextConfig: NextConfig = {
5
+ /* config options here */
6
+ // Pin the workspace root to this project. Without this, a stray
7
+ // package-lock.json in a parent dir (e.g. the user's home folder) makes
8
+ // Next infer the wrong root and install/resolve deps like typescript in the
9
+ // wrong place, breaking `next build`.
10
+ outputFileTracingRoot: __dirname,
11
+ typescript: {
12
+ // Ignore all TypeScript errors during build
13
+ ignoreBuildErrors: true,
14
+ },
15
+ eslint: {
16
+ // Ignore all ESLint errors during build
17
+ ignoreDuringBuilds: true,
18
+ },
19
+ transpilePackages: [
20
+ '@mui/material',
21
+ '@mui/icons-material',
22
+ '@mui/system',
23
+ '@mui/utils',
24
+ '@emotion/react',
25
+ '@emotion/styled'
26
+ ],
27
+ // Increase the webpack chunk loading timeout and configure other performance settings
28
+ webpack: (config, { dev, isServer }) => {
29
+ // Only apply these settings in development mode
30
+ if (dev && !isServer) {
31
+ // Increase chunk loading timeout to 60 seconds (60000ms)
32
+ config.output = {
33
+ ...config.output,
34
+ chunkLoadTimeout: 60000,
35
+ };
36
+
37
+ // Optimize for development performance
38
+ config.optimization = {
39
+ ...config.optimization,
40
+ runtimeChunk: 'single',
41
+ splitChunks: {
42
+ chunks: 'all',
43
+ cacheGroups: {
44
+ vendors: {
45
+ test: /[\\/]node_modules[\\/](?!.*\.css$)/, // Exclude CSS files from vendors chunk
46
+ name: 'vendors',
47
+ priority: -10,
48
+ reuseExistingChunk: true,
49
+ },
50
+ styles: {
51
+ name: 'styles',
52
+ test: /\.css$/,
53
+ chunks: 'all',
54
+ enforce: true,
55
+ priority: 20,
56
+ },
57
+ },
58
+ },
59
+ };
60
+
61
+ // Configure watchOptions for better file watching
62
+ config.watchOptions = {
63
+ ...config.watchOptions,
64
+ poll: 1000, // Check for changes every second
65
+ aggregateTimeout: 300, // Delay before rebuilding
66
+ };
67
+ }
68
+
69
+ // Exclude node binary files from being processed by webpack
70
+ config.externals = [...(config.externals || []),
71
+ {
72
+ sharp: 'commonjs sharp',
73
+ 'node-gyp-build': 'commonjs node-gyp-build'
74
+ }
75
+ ];
76
+
77
+ // Handle binary modules properly
78
+ config.module = {
79
+ ...config.module,
80
+ rules: [
81
+ ...(config.module?.rules || []),
82
+ {
83
+ test: /\.node$/,
84
+ use: 'node-loader',
85
+ },
86
+ ],
87
+ };
88
+
89
+ // Enable WebAssembly
90
+ config.experiments = {
91
+ ...config.experiments,
92
+ asyncWebAssembly: true,
93
+ };
94
+
95
+ return config;
96
+ },
97
+ };
98
+
99
+ export default nextConfig;
package/package.json ADDED
@@ -0,0 +1,91 @@
1
+ {
2
+ "name": "flujo-ai",
3
+ "version": "3.9.0",
4
+ "bin": {
5
+ "flujo": "bin/flujo.mjs"
6
+ },
7
+ "files": [
8
+ ".next/**/*",
9
+ "!.next/cache/**",
10
+ "public/**/*",
11
+ "scripts/launch-next.mjs",
12
+ "bin/**/*",
13
+ "next.config.ts",
14
+ "next.config.mjs"
15
+ ],
16
+ "scripts": {
17
+ "dev": "node scripts/launch-next.mjs dev -p 4200",
18
+ "turbo": "node scripts/launch-next.mjs dev --turbopack -p 4200",
19
+ "build": "next build",
20
+ "start": "node scripts/launch-next.mjs start -p 4200",
21
+ "lint": "next lint",
22
+ "test": "jest",
23
+ "test:watch": "jest --watch",
24
+ "prepublishOnly": "npm run build",
25
+ "version": "node scripts/sync-version.mjs && git add -A src README.md",
26
+ "release": "npm version minor -m \"Bump version to %s\" && npm publish"
27
+ },
28
+ "dependencies": {
29
+ "@anthropic-ai/claude-agent-sdk": "^0.3.186",
30
+ "@anthropic-ai/sdk": "^0.105.0",
31
+ "@emotion/react": "^11.14.0",
32
+ "@emotion/styled": "^11.14.0",
33
+ "@google/genai": "^2.9.0",
34
+ "@isomorphic-git/lightning-fs": "^4.6.0",
35
+ "@modelcontextprotocol/sdk": "^1.29.0",
36
+ "@mui/icons-material": "^6.4.5",
37
+ "@mui/material": "^6.4.5",
38
+ "@uiw/react-md-editor": "^4.0.5",
39
+ "@xyflow/react": "^12.4.4",
40
+ "axios": "^1.8.4",
41
+ "chokidar": "^4.0.3",
42
+ "croner": "^10.0.1",
43
+ "crypto-js": "^4.2.0",
44
+ "fetch-to-node": "^2.1.0",
45
+ "isomorphic-git": "^1.29.0",
46
+ "jszip": "^3.10.1",
47
+ "lodash": "^4.17.21",
48
+ "mcp-remote": "^0.1.18",
49
+ "next": "^15.5.20",
50
+ "node-fetch": "^3.3.2",
51
+ "openai": "^4.86.2",
52
+ "react": "^19.0.0",
53
+ "react-dom": "^19.0.0",
54
+ "react-markdown": "^10.1.0",
55
+ "remark-gfm": "^4.0.1",
56
+ "simple-git": "^3.36.0",
57
+ "slate": "^0.112.0",
58
+ "slate-history": "^0.110.3",
59
+ "slate-react": "^0.112.1",
60
+ "uuid": "^11.1.0",
61
+ "zod": "^4.4.3"
62
+ },
63
+ "overrides": {
64
+ "zod": "$zod"
65
+ },
66
+ "devDependencies": {
67
+ "@eslint/eslintrc": "^3",
68
+ "@types/crypto-js": "^4.2.2",
69
+ "@types/jest": "^29.5.14",
70
+ "@types/lodash": "^4.17.16",
71
+ "@types/node": "20.17.30",
72
+ "@types/react": "19.1.0",
73
+ "@types/react-dom": "^19",
74
+ "@types/uuid": "^10.0.0",
75
+ "@typescript-eslint/parser": "^8.26.1",
76
+ "buffer": "^6.0.3",
77
+ "eslint": "^9",
78
+ "eslint-config-next": "15.1.7",
79
+ "eslint-import-resolver-typescript": "^3.8.4",
80
+ "eslint-plugin-import": "^2.31.0",
81
+ "jest": "^29.7.0",
82
+ "node-loader": "^2.1.0",
83
+ "postcss": "^8",
84
+ "postcss-flexbugs-fixes": "^5.0.2",
85
+ "postcss-preset-env": "^10.1.5",
86
+ "process": "^0.11.10",
87
+ "typescript": "5.8.3",
88
+ "wait-on": "^8.0.2",
89
+ "webpack": "^5.98.0"
90
+ }
91
+ }
Binary file
@@ -0,0 +1 @@
1
+ <svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>