flowent 0.0.0 → 0.0.4

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 (494) hide show
  1. package/README.md +70 -10
  2. package/assets/flowent-banner.png +0 -0
  3. package/backend/.python-version +1 -0
  4. package/backend/pyproject.toml +57 -0
  5. package/backend/src/flowent/__init__.py +3 -0
  6. package/backend/src/flowent/__pycache__/__init__.cpython-313.pyc +0 -0
  7. package/backend/src/flowent/__pycache__/_version.cpython-313.pyc +0 -0
  8. package/backend/src/flowent/__pycache__/access.cpython-313.pyc +0 -0
  9. package/backend/src/flowent/__pycache__/agent.cpython-313.pyc +0 -0
  10. package/backend/src/flowent/__pycache__/assistant_commands.cpython-313.pyc +0 -0
  11. package/backend/src/flowent/__pycache__/cli.cpython-313.pyc +0 -0
  12. package/backend/src/flowent/__pycache__/config.cpython-313.pyc +0 -0
  13. package/backend/src/flowent/__pycache__/events.cpython-313.pyc +0 -0
  14. package/backend/src/flowent/__pycache__/graph_runtime.cpython-313.pyc +0 -0
  15. package/backend/src/flowent/__pycache__/graph_service.cpython-313.pyc +0 -0
  16. package/backend/src/flowent/__pycache__/image_assets.cpython-313.pyc +0 -0
  17. package/backend/src/flowent/__pycache__/logging.cpython-313.pyc +0 -0
  18. package/backend/src/flowent/__pycache__/main.cpython-313.pyc +0 -0
  19. package/backend/src/flowent/__pycache__/mcp_service.cpython-313.pyc +0 -0
  20. package/backend/src/flowent/__pycache__/model_metadata.cpython-313.pyc +0 -0
  21. package/backend/src/flowent/__pycache__/network.cpython-313.pyc +0 -0
  22. package/backend/src/flowent/__pycache__/registry.cpython-313.pyc +0 -0
  23. package/backend/src/flowent/__pycache__/role_management.cpython-313.pyc +0 -0
  24. package/backend/src/flowent/__pycache__/runtime.cpython-313.pyc +0 -0
  25. package/backend/src/flowent/__pycache__/sandbox.cpython-313.pyc +0 -0
  26. package/backend/src/flowent/__pycache__/security.cpython-313.pyc +0 -0
  27. package/backend/src/flowent/__pycache__/settings.cpython-313.pyc +0 -0
  28. package/backend/src/flowent/__pycache__/settings_management.cpython-313.pyc +0 -0
  29. package/backend/src/flowent/__pycache__/state_db.cpython-313.pyc +0 -0
  30. package/backend/src/flowent/__pycache__/stats_service.cpython-313.pyc +0 -0
  31. package/backend/src/flowent/__pycache__/workspace_store.cpython-313.pyc +0 -0
  32. package/backend/src/flowent/_version.py +7 -0
  33. package/backend/src/flowent/access.py +247 -0
  34. package/backend/src/flowent/agent.py +2808 -0
  35. package/backend/src/flowent/assistant_commands.py +106 -0
  36. package/backend/src/flowent/channels/__init__.py +3 -0
  37. package/backend/src/flowent/channels/__pycache__/__init__.cpython-313.pyc +0 -0
  38. package/backend/src/flowent/channels/__pycache__/telegram.cpython-313.pyc +0 -0
  39. package/backend/src/flowent/channels/telegram.py +615 -0
  40. package/backend/src/flowent/cli.py +85 -0
  41. package/backend/src/flowent/config.py +14 -0
  42. package/backend/src/flowent/dev.py +3 -0
  43. package/backend/src/flowent/events.py +157 -0
  44. package/backend/src/flowent/graph_runtime.py +60 -0
  45. package/backend/src/flowent/graph_service.py +1346 -0
  46. package/backend/src/flowent/image_assets.py +356 -0
  47. package/backend/src/flowent/logging.py +155 -0
  48. package/backend/src/flowent/main.py +124 -0
  49. package/backend/src/flowent/mcp_service.py +1904 -0
  50. package/backend/src/flowent/model_metadata.py +98 -0
  51. package/backend/src/flowent/models/__init__.py +121 -0
  52. package/backend/src/flowent/models/__pycache__/__init__.cpython-313.pyc +0 -0
  53. package/backend/src/flowent/models/__pycache__/agent.cpython-313.pyc +0 -0
  54. package/backend/src/flowent/models/__pycache__/base.cpython-313.pyc +0 -0
  55. package/backend/src/flowent/models/__pycache__/blueprint.cpython-313.pyc +0 -0
  56. package/backend/src/flowent/models/__pycache__/content.cpython-313.pyc +0 -0
  57. package/backend/src/flowent/models/__pycache__/delta.cpython-313.pyc +0 -0
  58. package/backend/src/flowent/models/__pycache__/event.cpython-313.pyc +0 -0
  59. package/backend/src/flowent/models/__pycache__/graph.cpython-313.pyc +0 -0
  60. package/backend/src/flowent/models/__pycache__/history.cpython-313.pyc +0 -0
  61. package/backend/src/flowent/models/__pycache__/llm.cpython-313.pyc +0 -0
  62. package/backend/src/flowent/models/__pycache__/message.cpython-313.pyc +0 -0
  63. package/backend/src/flowent/models/__pycache__/tab.cpython-313.pyc +0 -0
  64. package/backend/src/flowent/models/__pycache__/todo.cpython-313.pyc +0 -0
  65. package/backend/src/flowent/models/agent.py +33 -0
  66. package/backend/src/flowent/models/base.py +24 -0
  67. package/backend/src/flowent/models/blueprint.py +176 -0
  68. package/backend/src/flowent/models/content.py +164 -0
  69. package/backend/src/flowent/models/delta.py +44 -0
  70. package/backend/src/flowent/models/event.py +51 -0
  71. package/backend/src/flowent/models/graph.py +437 -0
  72. package/backend/src/flowent/models/history.py +214 -0
  73. package/backend/src/flowent/models/llm.py +61 -0
  74. package/backend/src/flowent/models/message.py +27 -0
  75. package/backend/src/flowent/models/tab.py +48 -0
  76. package/backend/src/flowent/models/todo.py +10 -0
  77. package/backend/src/flowent/network.py +146 -0
  78. package/backend/src/flowent/prompts/__init__.py +67 -0
  79. package/backend/src/flowent/prompts/__pycache__/__init__.cpython-313.pyc +0 -0
  80. package/backend/src/flowent/prompts/__pycache__/common.cpython-313.pyc +0 -0
  81. package/backend/src/flowent/prompts/__pycache__/steward.cpython-313.pyc +0 -0
  82. package/backend/src/flowent/prompts/common.py +250 -0
  83. package/backend/src/flowent/prompts/steward.py +64 -0
  84. package/backend/src/flowent/providers/__init__.py +23 -0
  85. package/backend/src/flowent/providers/__pycache__/__init__.cpython-313.pyc +0 -0
  86. package/backend/src/flowent/providers/__pycache__/anthropic.cpython-313.pyc +0 -0
  87. package/backend/src/flowent/providers/__pycache__/base_url.cpython-313.pyc +0 -0
  88. package/backend/src/flowent/providers/__pycache__/configuration.cpython-313.pyc +0 -0
  89. package/backend/src/flowent/providers/__pycache__/content.cpython-313.pyc +0 -0
  90. package/backend/src/flowent/providers/__pycache__/errors.cpython-313.pyc +0 -0
  91. package/backend/src/flowent/providers/__pycache__/gateway.cpython-313.pyc +0 -0
  92. package/backend/src/flowent/providers/__pycache__/headers.cpython-313.pyc +0 -0
  93. package/backend/src/flowent/providers/__pycache__/management.cpython-313.pyc +0 -0
  94. package/backend/src/flowent/providers/__pycache__/openai.cpython-313.pyc +0 -0
  95. package/backend/src/flowent/providers/__pycache__/openai_responses.cpython-313.pyc +0 -0
  96. package/backend/src/flowent/providers/__pycache__/registry.cpython-313.pyc +0 -0
  97. package/backend/src/flowent/providers/__pycache__/sse.cpython-313.pyc +0 -0
  98. package/backend/src/flowent/providers/__pycache__/thinking.cpython-313.pyc +0 -0
  99. package/backend/src/flowent/providers/anthropic.py +468 -0
  100. package/backend/src/flowent/providers/base_url.py +60 -0
  101. package/backend/src/flowent/providers/configuration.py +182 -0
  102. package/backend/src/flowent/providers/content.py +122 -0
  103. package/backend/src/flowent/providers/errors.py +223 -0
  104. package/backend/src/flowent/providers/gateway.py +169 -0
  105. package/backend/src/flowent/providers/gemini.py +447 -0
  106. package/backend/src/flowent/providers/headers.py +20 -0
  107. package/backend/src/flowent/providers/management.py +96 -0
  108. package/backend/src/flowent/providers/ollama.py +293 -0
  109. package/backend/src/flowent/providers/openai.py +422 -0
  110. package/backend/src/flowent/providers/openai_responses.py +655 -0
  111. package/backend/src/flowent/providers/registry.py +144 -0
  112. package/backend/src/flowent/providers/sse.py +31 -0
  113. package/backend/src/flowent/providers/thinking.py +79 -0
  114. package/backend/src/flowent/registry.py +73 -0
  115. package/backend/src/flowent/role_management.py +255 -0
  116. package/backend/src/flowent/routes/__init__.py +30 -0
  117. package/backend/src/flowent/routes/__pycache__/__init__.cpython-313.pyc +0 -0
  118. package/backend/src/flowent/routes/__pycache__/access.cpython-313.pyc +0 -0
  119. package/backend/src/flowent/routes/__pycache__/assistant.cpython-313.pyc +0 -0
  120. package/backend/src/flowent/routes/__pycache__/image_assets.cpython-313.pyc +0 -0
  121. package/backend/src/flowent/routes/__pycache__/mcp.cpython-313.pyc +0 -0
  122. package/backend/src/flowent/routes/__pycache__/meta.cpython-313.pyc +0 -0
  123. package/backend/src/flowent/routes/__pycache__/nodes.cpython-313.pyc +0 -0
  124. package/backend/src/flowent/routes/__pycache__/prompts.cpython-313.pyc +0 -0
  125. package/backend/src/flowent/routes/__pycache__/providers_route.cpython-313.pyc +0 -0
  126. package/backend/src/flowent/routes/__pycache__/roles.cpython-313.pyc +0 -0
  127. package/backend/src/flowent/routes/__pycache__/settings.cpython-313.pyc +0 -0
  128. package/backend/src/flowent/routes/__pycache__/stats.cpython-313.pyc +0 -0
  129. package/backend/src/flowent/routes/__pycache__/tabs.cpython-313.pyc +0 -0
  130. package/backend/src/flowent/routes/__pycache__/ws.cpython-313.pyc +0 -0
  131. package/backend/src/flowent/routes/access.py +48 -0
  132. package/backend/src/flowent/routes/assistant.py +155 -0
  133. package/backend/src/flowent/routes/image_assets.py +33 -0
  134. package/backend/src/flowent/routes/mcp.py +125 -0
  135. package/backend/src/flowent/routes/meta.py +28 -0
  136. package/backend/src/flowent/routes/nodes.py +365 -0
  137. package/backend/src/flowent/routes/prompts.py +46 -0
  138. package/backend/src/flowent/routes/providers_route.py +364 -0
  139. package/backend/src/flowent/routes/roles.py +207 -0
  140. package/backend/src/flowent/routes/settings.py +324 -0
  141. package/backend/src/flowent/routes/stats.py +229 -0
  142. package/backend/src/flowent/routes/tabs.py +292 -0
  143. package/backend/src/flowent/routes/ws.py +33 -0
  144. package/backend/src/flowent/runtime.py +188 -0
  145. package/backend/src/flowent/sandbox.py +45 -0
  146. package/backend/src/flowent/security.py +42 -0
  147. package/backend/src/flowent/settings.py +2467 -0
  148. package/backend/src/flowent/settings_management.py +286 -0
  149. package/backend/src/flowent/state_db.py +120 -0
  150. package/backend/src/flowent/static/assets/AssistantPage-B3Xc08AS.js +1 -0
  151. package/backend/src/flowent/static/assets/ChannelsPage-ByLd28xk.js +1 -0
  152. package/backend/src/flowent/static/assets/HomePage-C0hAx9_l.js +3 -0
  153. package/backend/src/flowent/static/assets/McpPage-DkrYLvBv.js +7 -0
  154. package/backend/src/flowent/static/assets/PageScaffold-D4jO9ooX.js +1 -0
  155. package/backend/src/flowent/static/assets/PromptsPage-DWA7rRJd.js +1 -0
  156. package/backend/src/flowent/static/assets/ProvidersPage-PUWT8seJ.js +3 -0
  157. package/backend/src/flowent/static/assets/RolesPage-CqcclGRw.js +1 -0
  158. package/backend/src/flowent/static/assets/SettingsPage-8tS2cJgX.js +3 -0
  159. package/backend/src/flowent/static/assets/StatsPage-BX9khYzu.js +1 -0
  160. package/backend/src/flowent/static/assets/ToolsPage-9Tl9FdeD.js +1 -0
  161. package/backend/src/flowent/static/assets/WorkspaceCommandDialog-CCXxjDL8.js +1 -0
  162. package/backend/src/flowent/static/assets/WorkspacePanels-aMdJ7ZH7.js +1 -0
  163. package/backend/src/flowent/static/assets/alert-dialog-kFYVQ7oX.js +1 -0
  164. package/backend/src/flowent/static/assets/badge-74-3jsCg.js +1 -0
  165. package/backend/src/flowent/static/assets/constants-XUzFf6i1.js +1 -0
  166. package/backend/src/flowent/static/assets/datetime-m6_O_Ci9.js +1 -0
  167. package/backend/src/flowent/static/assets/dialog-BeGSweF6.js +1 -0
  168. package/backend/src/flowent/static/assets/elk-worker.min-C9JGDOE-.js +6312 -0
  169. package/backend/src/flowent/static/assets/graph-vendor-CHpVij2M.css +1 -0
  170. package/backend/src/flowent/static/assets/graph-vendor-DRq_-6fV.js +7 -0
  171. package/backend/src/flowent/static/assets/index-BHC1Vhy8.css +1 -0
  172. package/backend/src/flowent/static/assets/index-CL1ALZ3r.js +10 -0
  173. package/backend/src/flowent/static/assets/layout.worker-jMHqAFbP.js +24 -0
  174. package/backend/src/flowent/static/assets/markdown-vendor-DVdy_w12.js +29 -0
  175. package/backend/src/flowent/static/assets/modelParams-CaHd0903.js +1 -0
  176. package/backend/src/flowent/static/assets/react-vendor-mEs_JJxa.js +9 -0
  177. package/backend/src/flowent/static/assets/roles-2OLDeTc5.js +1 -0
  178. package/backend/src/flowent/static/assets/rolldown-runtime-BYbx6iT9.js +1 -0
  179. package/backend/src/flowent/static/assets/select-DL_LPeDj.js +1 -0
  180. package/backend/src/flowent/static/assets/shared-CMxbpLeQ.js +1 -0
  181. package/backend/src/flowent/static/assets/triState-DEr3NkXV.js +1 -0
  182. package/backend/src/flowent/static/assets/ui-vendor-Dg9NNnWX.js +51 -0
  183. package/backend/src/flowent/static/index.html +36 -0
  184. package/backend/src/flowent/stats_service.py +218 -0
  185. package/backend/src/flowent/tools/__init__.py +201 -0
  186. package/backend/src/flowent/tools/__pycache__/__init__.cpython-313.pyc +0 -0
  187. package/backend/src/flowent/tools/__pycache__/connect.cpython-313.pyc +0 -0
  188. package/backend/src/flowent/tools/__pycache__/contacts.cpython-313.pyc +0 -0
  189. package/backend/src/flowent/tools/__pycache__/create_agent.cpython-313.pyc +0 -0
  190. package/backend/src/flowent/tools/__pycache__/create_tab.cpython-313.pyc +0 -0
  191. package/backend/src/flowent/tools/__pycache__/delete_tab.cpython-313.pyc +0 -0
  192. package/backend/src/flowent/tools/__pycache__/edit.cpython-313.pyc +0 -0
  193. package/backend/src/flowent/tools/__pycache__/exec.cpython-313.pyc +0 -0
  194. package/backend/src/flowent/tools/__pycache__/fetch.cpython-313.pyc +0 -0
  195. package/backend/src/flowent/tools/__pycache__/idle.cpython-313.pyc +0 -0
  196. package/backend/src/flowent/tools/__pycache__/list_roles.cpython-313.pyc +0 -0
  197. package/backend/src/flowent/tools/__pycache__/list_tabs.cpython-313.pyc +0 -0
  198. package/backend/src/flowent/tools/__pycache__/list_tools.cpython-313.pyc +0 -0
  199. package/backend/src/flowent/tools/__pycache__/manage_prompts.cpython-313.pyc +0 -0
  200. package/backend/src/flowent/tools/__pycache__/manage_providers.cpython-313.pyc +0 -0
  201. package/backend/src/flowent/tools/__pycache__/manage_roles.cpython-313.pyc +0 -0
  202. package/backend/src/flowent/tools/__pycache__/manage_settings.cpython-313.pyc +0 -0
  203. package/backend/src/flowent/tools/__pycache__/mcp.cpython-313.pyc +0 -0
  204. package/backend/src/flowent/tools/__pycache__/read.cpython-313.pyc +0 -0
  205. package/backend/src/flowent/tools/__pycache__/send.cpython-313.pyc +0 -0
  206. package/backend/src/flowent/tools/__pycache__/set_permissions.cpython-313.pyc +0 -0
  207. package/backend/src/flowent/tools/__pycache__/sleep.cpython-313.pyc +0 -0
  208. package/backend/src/flowent/tools/__pycache__/todo.cpython-313.pyc +0 -0
  209. package/backend/src/flowent/tools/connect.py +156 -0
  210. package/backend/src/flowent/tools/contacts.py +22 -0
  211. package/backend/src/flowent/tools/create_agent.py +270 -0
  212. package/backend/src/flowent/tools/create_tab.py +59 -0
  213. package/backend/src/flowent/tools/delete_tab.py +39 -0
  214. package/backend/src/flowent/tools/edit.py +142 -0
  215. package/backend/src/flowent/tools/exec.py +117 -0
  216. package/backend/src/flowent/tools/fetch.py +85 -0
  217. package/backend/src/flowent/tools/idle.py +27 -0
  218. package/backend/src/flowent/tools/list_roles.py +50 -0
  219. package/backend/src/flowent/tools/list_tabs.py +96 -0
  220. package/backend/src/flowent/tools/list_tools.py +24 -0
  221. package/backend/src/flowent/tools/manage_prompts.py +102 -0
  222. package/backend/src/flowent/tools/manage_providers.py +220 -0
  223. package/backend/src/flowent/tools/manage_roles.py +275 -0
  224. package/backend/src/flowent/tools/manage_settings.py +346 -0
  225. package/backend/src/flowent/tools/mcp.py +199 -0
  226. package/backend/src/flowent/tools/read.py +152 -0
  227. package/backend/src/flowent/tools/send.py +50 -0
  228. package/backend/src/flowent/tools/set_permissions.py +84 -0
  229. package/backend/src/flowent/tools/sleep.py +41 -0
  230. package/backend/src/flowent/tools/todo.py +51 -0
  231. package/backend/src/flowent/workspace_store.py +479 -0
  232. package/backend/tests/__init__.py +0 -0
  233. package/backend/tests/__pycache__/__init__.cpython-313.pyc +0 -0
  234. package/backend/tests/__pycache__/conftest.cpython-313-pytest-9.0.3.pyc +0 -0
  235. package/backend/tests/conftest.py +6 -0
  236. package/backend/tests/integration/api/__pycache__/conftest.cpython-313-pytest-9.0.3.pyc +0 -0
  237. package/backend/tests/integration/api/__pycache__/test_access_api.cpython-313-pytest-9.0.3.pyc +0 -0
  238. package/backend/tests/integration/api/__pycache__/test_assistant_api.cpython-313-pytest-9.0.3.pyc +0 -0
  239. package/backend/tests/integration/api/__pycache__/test_frontend_mounting.cpython-313-pytest-9.0.3.pyc +0 -0
  240. package/backend/tests/integration/api/__pycache__/test_mcp_api.cpython-313-pytest-9.0.3.pyc +0 -0
  241. package/backend/tests/integration/api/__pycache__/test_meta_api.cpython-313-pytest-9.0.3.pyc +0 -0
  242. package/backend/tests/integration/api/__pycache__/test_nodes_api.cpython-313-pytest-9.0.3.pyc +0 -0
  243. package/backend/tests/integration/api/__pycache__/test_prompts_api.cpython-313-pytest-9.0.3.pyc +0 -0
  244. package/backend/tests/integration/api/__pycache__/test_roles_api.cpython-313-pytest-9.0.3.pyc +0 -0
  245. package/backend/tests/integration/api/__pycache__/test_tabs_api.cpython-313-pytest-9.0.3.pyc +0 -0
  246. package/backend/tests/integration/api/conftest.py +29 -0
  247. package/backend/tests/integration/api/test_access_api.py +182 -0
  248. package/backend/tests/integration/api/test_assistant_api.py +354 -0
  249. package/backend/tests/integration/api/test_frontend_mounting.py +61 -0
  250. package/backend/tests/integration/api/test_mcp_api.py +116 -0
  251. package/backend/tests/integration/api/test_meta_api.py +33 -0
  252. package/backend/tests/integration/api/test_nodes_api.py +486 -0
  253. package/backend/tests/integration/api/test_prompts_api.py +47 -0
  254. package/backend/tests/integration/api/test_roles_api.py +227 -0
  255. package/backend/tests/integration/api/test_tabs_api.py +501 -0
  256. package/backend/tests/unit/__pycache__/test_access.cpython-313-pytest-9.0.3.pyc +0 -0
  257. package/backend/tests/unit/__pycache__/test_cli.cpython-313-pytest-9.0.3.pyc +0 -0
  258. package/backend/tests/unit/__pycache__/test_graph_runtime.cpython-313-pytest-9.0.3.pyc +0 -0
  259. package/backend/tests/unit/__pycache__/test_network.cpython-313-pytest-9.0.3.pyc +0 -0
  260. package/backend/tests/unit/__pycache__/test_state_sqlite_storage.cpython-313-pytest-9.0.3.pyc +0 -0
  261. package/backend/tests/unit/__pycache__/test_workspace_store.cpython-313-pytest-9.0.3.pyc +0 -0
  262. package/backend/tests/unit/agent/__pycache__/test_agent_public_api.cpython-313-pytest-9.0.3.pyc +0 -0
  263. package/backend/tests/unit/agent/__pycache__/test_agent_runtime.cpython-313-pytest-9.0.3.pyc +0 -0
  264. package/backend/tests/unit/agent/test_agent_public_api.py +746 -0
  265. package/backend/tests/unit/agent/test_agent_runtime.py +2726 -0
  266. package/backend/tests/unit/channels/__pycache__/test_telegram_channel.cpython-313-pytest-9.0.3.pyc +0 -0
  267. package/backend/tests/unit/channels/test_telegram_channel.py +552 -0
  268. package/backend/tests/unit/logging/__pycache__/test_logging.cpython-313-pytest-9.0.3.pyc +0 -0
  269. package/backend/tests/unit/logging/test_logging.py +132 -0
  270. package/backend/tests/unit/prompts/__pycache__/test_prompts.cpython-313-pytest-9.0.3.pyc +0 -0
  271. package/backend/tests/unit/prompts/test_prompts.py +569 -0
  272. package/backend/tests/unit/providers/__pycache__/test_anthropic_provider.cpython-313-pytest-9.0.3.pyc +0 -0
  273. package/backend/tests/unit/providers/__pycache__/test_errors.cpython-313-pytest-9.0.3.pyc +0 -0
  274. package/backend/tests/unit/providers/__pycache__/test_extract_delta_parts.cpython-313-pytest-9.0.3.pyc +0 -0
  275. package/backend/tests/unit/providers/__pycache__/test_openai_provider.cpython-313-pytest-9.0.3.pyc +0 -0
  276. package/backend/tests/unit/providers/__pycache__/test_openai_responses.cpython-313-pytest-9.0.3.pyc +0 -0
  277. package/backend/tests/unit/providers/__pycache__/test_provider_gateway.cpython-313-pytest-9.0.3.pyc +0 -0
  278. package/backend/tests/unit/providers/__pycache__/test_think_tag_parser.cpython-313-pytest-9.0.3.pyc +0 -0
  279. package/backend/tests/unit/providers/test_anthropic_provider.py +185 -0
  280. package/backend/tests/unit/providers/test_errors.py +68 -0
  281. package/backend/tests/unit/providers/test_extract_delta_parts.py +22 -0
  282. package/backend/tests/unit/providers/test_openai_provider.py +139 -0
  283. package/backend/tests/unit/providers/test_openai_responses.py +402 -0
  284. package/backend/tests/unit/providers/test_provider_gateway.py +359 -0
  285. package/backend/tests/unit/providers/test_think_tag_parser.py +36 -0
  286. package/backend/tests/unit/routes/__pycache__/test_prompts_routes.cpython-313-pytest-9.0.3.pyc +0 -0
  287. package/backend/tests/unit/routes/__pycache__/test_providers_route.cpython-313-pytest-9.0.3.pyc +0 -0
  288. package/backend/tests/unit/routes/__pycache__/test_roles_routes.cpython-313-pytest-9.0.3.pyc +0 -0
  289. package/backend/tests/unit/routes/__pycache__/test_settings_routes.cpython-313-pytest-9.0.3.pyc +0 -0
  290. package/backend/tests/unit/routes/__pycache__/test_stats_routes.cpython-313-pytest-9.0.3.pyc +0 -0
  291. package/backend/tests/unit/routes/test_prompts_routes.py +104 -0
  292. package/backend/tests/unit/routes/test_providers_route.py +368 -0
  293. package/backend/tests/unit/routes/test_roles_routes.py +426 -0
  294. package/backend/tests/unit/routes/test_settings_routes.py +1138 -0
  295. package/backend/tests/unit/routes/test_stats_routes.py +149 -0
  296. package/backend/tests/unit/runtime/__pycache__/test_bootstrap_runtime.cpython-313-pytest-9.0.3.pyc +0 -0
  297. package/backend/tests/unit/runtime/test_bootstrap_runtime.py +1012 -0
  298. package/backend/tests/unit/sandbox/__pycache__/test_sandbox_tools.cpython-313-pytest-9.0.3.pyc +0 -0
  299. package/backend/tests/unit/sandbox/test_sandbox_tools.py +78 -0
  300. package/backend/tests/unit/security/__pycache__/test_security.cpython-313-pytest-9.0.3.pyc +0 -0
  301. package/backend/tests/unit/security/test_security.py +110 -0
  302. package/backend/tests/unit/settings/__pycache__/test_settings_roles.cpython-313-pytest-9.0.3.pyc +0 -0
  303. package/backend/tests/unit/settings/test_settings_roles.py +711 -0
  304. package/backend/tests/unit/test_access.py +45 -0
  305. package/backend/tests/unit/test_cli.py +124 -0
  306. package/backend/tests/unit/test_graph_runtime.py +72 -0
  307. package/backend/tests/unit/test_network.py +51 -0
  308. package/backend/tests/unit/test_state_sqlite_storage.py +93 -0
  309. package/backend/tests/unit/test_workspace_store.py +231 -0
  310. package/backend/tests/unit/tools/__pycache__/test_connect_tool.cpython-313-pytest-9.0.3.pyc +0 -0
  311. package/backend/tests/unit/tools/__pycache__/test_create_agent_tool.cpython-313-pytest-9.0.3.pyc +0 -0
  312. package/backend/tests/unit/tools/__pycache__/test_delete_tab_tool.cpython-313-pytest-9.0.3.pyc +0 -0
  313. package/backend/tests/unit/tools/__pycache__/test_edit_tool.cpython-313-pytest-9.0.3.pyc +0 -0
  314. package/backend/tests/unit/tools/__pycache__/test_exec_tool.cpython-313-pytest-9.0.3.pyc +0 -0
  315. package/backend/tests/unit/tools/__pycache__/test_fetch_tool.cpython-313-pytest-9.0.3.pyc +0 -0
  316. package/backend/tests/unit/tools/__pycache__/test_manage_prompts_tool.cpython-313-pytest-9.0.3.pyc +0 -0
  317. package/backend/tests/unit/tools/__pycache__/test_manage_providers_tool.cpython-313-pytest-9.0.3.pyc +0 -0
  318. package/backend/tests/unit/tools/__pycache__/test_manage_roles_tool.cpython-313-pytest-9.0.3.pyc +0 -0
  319. package/backend/tests/unit/tools/__pycache__/test_manage_settings_tool.cpython-313-pytest-9.0.3.pyc +0 -0
  320. package/backend/tests/unit/tools/__pycache__/test_read_tool.cpython-313-pytest-9.0.3.pyc +0 -0
  321. package/backend/tests/unit/tools/__pycache__/test_set_permissions_tool.cpython-313-pytest-9.0.3.pyc +0 -0
  322. package/backend/tests/unit/tools/__pycache__/test_todo_tool.cpython-313-pytest-9.0.3.pyc +0 -0
  323. package/backend/tests/unit/tools/__pycache__/test_tool_registry.cpython-313-pytest-9.0.3.pyc +0 -0
  324. package/backend/tests/unit/tools/test_connect_tool.py +229 -0
  325. package/backend/tests/unit/tools/test_create_agent_tool.py +524 -0
  326. package/backend/tests/unit/tools/test_delete_tab_tool.py +83 -0
  327. package/backend/tests/unit/tools/test_edit_tool.py +115 -0
  328. package/backend/tests/unit/tools/test_exec_tool.py +81 -0
  329. package/backend/tests/unit/tools/test_fetch_tool.py +65 -0
  330. package/backend/tests/unit/tools/test_manage_prompts_tool.py +117 -0
  331. package/backend/tests/unit/tools/test_manage_providers_tool.py +458 -0
  332. package/backend/tests/unit/tools/test_manage_roles_tool.py +411 -0
  333. package/backend/tests/unit/tools/test_manage_settings_tool.py +608 -0
  334. package/backend/tests/unit/tools/test_read_tool.py +33 -0
  335. package/backend/tests/unit/tools/test_set_permissions_tool.py +391 -0
  336. package/backend/tests/unit/tools/test_todo_tool.py +37 -0
  337. package/backend/tests/unit/tools/test_tool_registry.py +91 -0
  338. package/backend/uv.lock +1144 -0
  339. package/bin/flowent.mjs +62 -35
  340. package/dist/frontend/assets/AssistantPage-B3Xc08AS.js +1 -0
  341. package/dist/frontend/assets/ChannelsPage-ByLd28xk.js +1 -0
  342. package/dist/frontend/assets/HomePage-C0hAx9_l.js +3 -0
  343. package/dist/frontend/assets/McpPage-DkrYLvBv.js +7 -0
  344. package/dist/frontend/assets/PageScaffold-D4jO9ooX.js +1 -0
  345. package/dist/frontend/assets/PromptsPage-DWA7rRJd.js +1 -0
  346. package/dist/frontend/assets/ProvidersPage-PUWT8seJ.js +3 -0
  347. package/dist/frontend/assets/RolesPage-CqcclGRw.js +1 -0
  348. package/dist/frontend/assets/SettingsPage-8tS2cJgX.js +3 -0
  349. package/dist/frontend/assets/StatsPage-BX9khYzu.js +1 -0
  350. package/dist/frontend/assets/ToolsPage-9Tl9FdeD.js +1 -0
  351. package/dist/frontend/assets/WorkspaceCommandDialog-CCXxjDL8.js +1 -0
  352. package/dist/frontend/assets/WorkspacePanels-aMdJ7ZH7.js +1 -0
  353. package/dist/frontend/assets/alert-dialog-kFYVQ7oX.js +1 -0
  354. package/dist/frontend/assets/badge-74-3jsCg.js +1 -0
  355. package/dist/frontend/assets/constants-XUzFf6i1.js +1 -0
  356. package/dist/frontend/assets/datetime-m6_O_Ci9.js +1 -0
  357. package/dist/frontend/assets/dialog-BeGSweF6.js +1 -0
  358. package/dist/frontend/assets/elk-worker.min-C9JGDOE-.js +6312 -0
  359. package/dist/frontend/assets/graph-vendor-CHpVij2M.css +1 -0
  360. package/dist/frontend/assets/graph-vendor-DRq_-6fV.js +7 -0
  361. package/dist/frontend/assets/index-BHC1Vhy8.css +1 -0
  362. package/dist/frontend/assets/index-CL1ALZ3r.js +10 -0
  363. package/dist/frontend/assets/layout.worker-jMHqAFbP.js +24 -0
  364. package/dist/frontend/assets/markdown-vendor-DVdy_w12.js +29 -0
  365. package/dist/frontend/assets/modelParams-CaHd0903.js +1 -0
  366. package/dist/frontend/assets/react-vendor-mEs_JJxa.js +9 -0
  367. package/dist/frontend/assets/roles-2OLDeTc5.js +1 -0
  368. package/dist/frontend/assets/rolldown-runtime-BYbx6iT9.js +1 -0
  369. package/dist/frontend/assets/select-DL_LPeDj.js +1 -0
  370. package/dist/frontend/assets/shared-CMxbpLeQ.js +1 -0
  371. package/dist/frontend/assets/triState-DEr3NkXV.js +1 -0
  372. package/dist/frontend/assets/ui-vendor-Dg9NNnWX.js +51 -0
  373. package/dist/frontend/index.html +36 -0
  374. package/package.json +28 -41
  375. package/dist/.next/BUILD_ID +0 -1
  376. package/dist/.next/app-path-routes-manifest.json +0 -6
  377. package/dist/.next/build-manifest.json +0 -20
  378. package/dist/.next/package.json +0 -1
  379. package/dist/.next/prerender-manifest.json +0 -114
  380. package/dist/.next/required-server-files.json +0 -333
  381. package/dist/.next/routes-manifest.json +0 -69
  382. package/dist/.next/server/app/_global-error/page/app-paths-manifest.json +0 -3
  383. package/dist/.next/server/app/_global-error/page/build-manifest.json +0 -16
  384. package/dist/.next/server/app/_global-error/page/next-font-manifest.json +0 -6
  385. package/dist/.next/server/app/_global-error/page/react-loadable-manifest.json +0 -1
  386. package/dist/.next/server/app/_global-error/page/server-reference-manifest.json +0 -4
  387. package/dist/.next/server/app/_global-error/page.js +0 -9
  388. package/dist/.next/server/app/_global-error/page.js.map +0 -5
  389. package/dist/.next/server/app/_global-error/page.js.nft.json +0 -1
  390. package/dist/.next/server/app/_global-error/page_client-reference-manifest.js +0 -3
  391. package/dist/.next/server/app/_global-error.html +0 -1
  392. package/dist/.next/server/app/_global-error.meta +0 -15
  393. package/dist/.next/server/app/_global-error.rsc +0 -14
  394. package/dist/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +0 -5
  395. package/dist/.next/server/app/_global-error.segments/_full.segment.rsc +0 -14
  396. package/dist/.next/server/app/_global-error.segments/_head.segment.rsc +0 -5
  397. package/dist/.next/server/app/_global-error.segments/_index.segment.rsc +0 -5
  398. package/dist/.next/server/app/_global-error.segments/_tree.segment.rsc +0 -1
  399. package/dist/.next/server/app/_not-found/page/app-paths-manifest.json +0 -3
  400. package/dist/.next/server/app/_not-found/page/build-manifest.json +0 -16
  401. package/dist/.next/server/app/_not-found/page/next-font-manifest.json +0 -10
  402. package/dist/.next/server/app/_not-found/page/react-loadable-manifest.json +0 -1
  403. package/dist/.next/server/app/_not-found/page/server-reference-manifest.json +0 -4
  404. package/dist/.next/server/app/_not-found/page.js +0 -13
  405. package/dist/.next/server/app/_not-found/page.js.map +0 -5
  406. package/dist/.next/server/app/_not-found/page.js.nft.json +0 -1
  407. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +0 -3
  408. package/dist/.next/server/app/_not-found.html +0 -1
  409. package/dist/.next/server/app/_not-found.meta +0 -16
  410. package/dist/.next/server/app/_not-found.rsc +0 -16
  411. package/dist/.next/server/app/_not-found.segments/_full.segment.rsc +0 -16
  412. package/dist/.next/server/app/_not-found.segments/_head.segment.rsc +0 -6
  413. package/dist/.next/server/app/_not-found.segments/_index.segment.rsc +0 -5
  414. package/dist/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
  415. package/dist/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -5
  416. package/dist/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -2
  417. package/dist/.next/server/app/icon.svg/route/app-paths-manifest.json +0 -3
  418. package/dist/.next/server/app/icon.svg/route/build-manifest.json +0 -9
  419. package/dist/.next/server/app/icon.svg/route.js +0 -6
  420. package/dist/.next/server/app/icon.svg/route.js.map +0 -5
  421. package/dist/.next/server/app/icon.svg/route.js.nft.json +0 -1
  422. package/dist/.next/server/app/icon.svg.meta +0 -1
  423. package/dist/.next/server/app/index.html +0 -1
  424. package/dist/.next/server/app/index.meta +0 -14
  425. package/dist/.next/server/app/index.rsc +0 -15
  426. package/dist/.next/server/app/index.segments/__PAGE__.segment.rsc +0 -5
  427. package/dist/.next/server/app/index.segments/_full.segment.rsc +0 -15
  428. package/dist/.next/server/app/index.segments/_head.segment.rsc +0 -6
  429. package/dist/.next/server/app/index.segments/_index.segment.rsc +0 -5
  430. package/dist/.next/server/app/index.segments/_tree.segment.rsc +0 -3
  431. package/dist/.next/server/app/page/app-paths-manifest.json +0 -3
  432. package/dist/.next/server/app/page/build-manifest.json +0 -16
  433. package/dist/.next/server/app/page/next-font-manifest.json +0 -10
  434. package/dist/.next/server/app/page/react-loadable-manifest.json +0 -1
  435. package/dist/.next/server/app/page/server-reference-manifest.json +0 -4
  436. package/dist/.next/server/app/page.js +0 -14
  437. package/dist/.next/server/app/page.js.map +0 -5
  438. package/dist/.next/server/app/page.js.nft.json +0 -1
  439. package/dist/.next/server/app/page_client-reference-manifest.js +0 -3
  440. package/dist/.next/server/app-paths-manifest.json +0 -6
  441. package/dist/.next/server/chunks/[externals]_next_dist_0arv.vj._.js +0 -3
  442. package/dist/.next/server/chunks/[root-of-the-server]__0vcj1q1._.js +0 -13
  443. package/dist/.next/server/chunks/[turbopack]_runtime.js +0 -903
  444. package/dist/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_0-0ehc~.js +0 -3
  445. package/dist/.next/server/chunks/ssr/05w9_next_dist_0ihu0u9._.js +0 -6
  446. package/dist/.next/server/chunks/ssr/05w9_next_dist_client_components_12u3mib._.js +0 -3
  447. package/dist/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_forbidden_04fbe_..js +0 -3
  448. package/dist/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_global-error_0brpl_..js +0 -3
  449. package/dist/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_unauthorized_0~2g66g.js +0 -3
  450. package/dist/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0~cyr1_.js +0 -4
  451. package/dist/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_1105emf.js +0 -4
  452. package/dist/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_11uhyqv.js +0 -4
  453. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0.t9_75._.js +0 -33
  454. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0c0ud_z._.js +0 -3
  455. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0f9_8d4._.js +0 -3
  456. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0l5ko41._.js +0 -19
  457. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0mn6z7i._.js +0 -3
  458. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0npxxst._.js +0 -33
  459. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0qjhaca._.js +0 -3
  460. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0rwgw3s._.js +0 -3
  461. package/dist/.next/server/chunks/ssr/[turbopack]_runtime.js +0 -903
  462. package/dist/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0k77kol.js +0 -3
  463. package/dist/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0eq97pa.js +0 -3
  464. package/dist/.next/server/chunks/ssr/_next-internal_server_app_page_actions_09-gtaw.js +0 -3
  465. package/dist/.next/server/chunks/ssr/node_modules__pnpm_056~6.6._.js +0 -3
  466. package/dist/.next/server/chunks/ssr/node_modules__pnpm_0~j0k.e._.js +0 -33
  467. package/dist/.next/server/functions-config-manifest.json +0 -4
  468. package/dist/.next/server/middleware-build-manifest.js +0 -20
  469. package/dist/.next/server/middleware-manifest.json +0 -6
  470. package/dist/.next/server/next-font-manifest.js +0 -1
  471. package/dist/.next/server/next-font-manifest.json +0 -13
  472. package/dist/.next/server/pages/404.html +0 -1
  473. package/dist/.next/server/pages/500.html +0 -1
  474. package/dist/.next/server/pages-manifest.json +0 -4
  475. package/dist/.next/server/prefetch-hints.json +0 -1
  476. package/dist/.next/server/server-reference-manifest.js +0 -1
  477. package/dist/.next/server/server-reference-manifest.json +0 -5
  478. package/dist/.next/static/7FFlzRe2eS-D0Lw5oEpmC/_buildManifest.js +0 -11
  479. package/dist/.next/static/7FFlzRe2eS-D0Lw5oEpmC/_clientMiddlewareManifest.js +0 -1
  480. package/dist/.next/static/7FFlzRe2eS-D0Lw5oEpmC/_ssgManifest.js +0 -1
  481. package/dist/.next/static/chunks/01qk2~bgf76vu.js +0 -1
  482. package/dist/.next/static/chunks/03~yq9q893hmn.js +0 -1
  483. package/dist/.next/static/chunks/080queev.r2uy.js +0 -31
  484. package/dist/.next/static/chunks/0v3lyuj75aq50.js +0 -1
  485. package/dist/.next/static/chunks/10b~xdx5c-i7s.js +0 -5
  486. package/dist/.next/static/chunks/15~9l5n.~r-.4.css +0 -2
  487. package/dist/.next/static/chunks/turbopack-0m-970~qvs7sc.js +0 -1
  488. package/dist/.next/static/media/7178b3e590c64307-s.11.cyxs5p-0z~.woff2 +0 -0
  489. package/dist/.next/static/media/8a480f0b521d4e75-s.06d3mdzz5bre_.woff2 +0 -0
  490. package/dist/.next/static/media/caa3a2e1cccd8315-s.p.16t1db8_9y2o~.woff2 +0 -0
  491. package/dist/package.json +0 -87
  492. package/dist/server.js +0 -38
  493. /package/{dist/.next/server/app/icon.svg.body → backend/src/flowent/static/favicon.svg} +0 -0
  494. /package/dist/{.next/static/media/icon.0.r~afrtrocz9.svg → frontend/favicon.svg} +0 -0
@@ -0,0 +1,36 @@
1
+ <!doctype html>
2
+ <html lang="en" class="dark">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>Flowent</title>
8
+ <meta name="description" content="Flowent application" />
9
+ <script>
10
+ (() => {
11
+ try {
12
+ const storedTheme = window.localStorage.getItem("flowent-theme");
13
+ const theme = storedTheme === "light" ? "light" : "dark";
14
+ const root = document.documentElement;
15
+ root.classList.toggle("dark", theme === "dark");
16
+ root.classList.toggle("light", theme === "light");
17
+ root.style.colorScheme = theme;
18
+ } catch {
19
+ document.documentElement.classList.add("dark");
20
+ document.documentElement.style.colorScheme = "dark";
21
+ }
22
+ })();
23
+ </script>
24
+ <script type="module" crossorigin src="/assets/index-CL1ALZ3r.js"></script>
25
+ <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-BYbx6iT9.js">
26
+ <link rel="modulepreload" crossorigin href="/assets/shared-CMxbpLeQ.js">
27
+ <link rel="modulepreload" crossorigin href="/assets/graph-vendor-DRq_-6fV.js">
28
+ <link rel="modulepreload" crossorigin href="/assets/react-vendor-mEs_JJxa.js">
29
+ <link rel="modulepreload" crossorigin href="/assets/ui-vendor-Dg9NNnWX.js">
30
+ <link rel="stylesheet" crossorigin href="/assets/graph-vendor-CHpVij2M.css">
31
+ <link rel="stylesheet" crossorigin href="/assets/index-BHC1Vhy8.css">
32
+ </head>
33
+ <body class="min-h-dvh bg-background text-foreground">
34
+ <div id="root"></div>
35
+ </body>
36
+ </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flowent",
3
- "version": "0.0.0",
3
+ "version": "0.0.4",
4
4
  "description": "A workflow orchestration platform for multi-agent collaboration.",
5
5
  "author": "ImFeH2 <i@feh2.im>",
6
6
  "license": "Apache-2.0",
@@ -9,6 +9,8 @@
9
9
  "flowent": "bin/flowent.mjs"
10
10
  },
11
11
  "files": [
12
+ "assets/",
13
+ "backend/",
12
14
  "bin/",
13
15
  "dist/",
14
16
  "README.md",
@@ -25,63 +27,48 @@
25
27
  "engines": {
26
28
  "node": ">=20.9.0"
27
29
  },
28
- "packageManager": "pnpm@10.29.3",
30
+ "packageManager": "pnpm@10.33.2",
29
31
  "publishConfig": {
30
32
  "access": "public"
31
33
  },
32
34
  "scripts": {
33
- "dev": "next dev",
34
- "build": "next build",
35
+ "dev": "concurrently -k -n frontend,backend -c cyan,magenta \"pnpm dev:frontend\" \"pnpm dev:backend\"",
36
+ "dev:frontend": "pnpm --dir frontend dev",
37
+ "dev:backend": "uv run --project backend uvicorn flowent.main:app --reload --host 0.0.0.0 --port 6874",
38
+ "build": "pnpm build:frontend && pnpm build:backend",
39
+ "build:frontend": "pnpm --dir frontend build",
40
+ "build:backend": "node scripts/prepare-python-package.mjs && uv build --project backend",
35
41
  "build:npm": "pnpm build && node scripts/prepare-npm-package.mjs",
36
- "start": "next start",
37
- "format": "prettier --write .",
38
- "format:check": "prettier --check .",
39
- "lint": "eslint",
40
- "typecheck": "next typegen && tsc --noEmit",
41
- "test": "vitest run",
42
- "test:watch": "vitest",
42
+ "start": "uv run --project backend flowent",
43
+ "format": "prettier --write . && uv run --project backend ruff format",
44
+ "format:check": "prettier --check . && uv run --project backend ruff format --check",
45
+ "lint": "pnpm lint:frontend && pnpm lint:backend",
46
+ "lint:frontend": "pnpm --dir frontend lint",
47
+ "lint:backend": "uv run --project backend ruff check && uv run --project backend mypy --config-file backend/pyproject.toml backend/src",
48
+ "typecheck": "pnpm --dir frontend typecheck",
49
+ "test": "pnpm test:frontend && pnpm test:backend",
50
+ "test:frontend": "pnpm --dir frontend test",
51
+ "test:backend": "uv run --project backend pytest",
52
+ "test:watch": "pnpm --dir frontend test:watch",
43
53
  "release": "release-it --dry-run",
44
54
  "release:exec": "release-it",
45
55
  "prepack": "pnpm build:npm",
46
56
  "prepare": "husky"
47
57
  },
48
58
  "lint-staged": {
49
- "*.{js,jsx,ts,tsx,mjs,mts}": [
50
- "eslint --fix",
51
- "prettier --write"
59
+ "*.{js,jsx,ts,tsx,mjs,mts}": "prettier --write",
60
+ "*.py": [
61
+ "uv run --project backend ruff format",
62
+ "uv run --project backend ruff check --fix"
52
63
  ],
53
64
  "*.{css,json,jsonc,md,mdx,yml,yaml}": "prettier --write"
54
65
  },
55
- "dependencies": {
56
- "clsx": "^2.1.1",
57
- "framer-motion": "^12.38.0",
58
- "lucide-react": "^1.11.0",
59
- "next": "16.2.4",
60
- "react": "19.2.4",
61
- "react-dom": "19.2.4",
62
- "tailwind-merge": "^3.5.0"
63
- },
64
66
  "devDependencies": {
65
- "@tailwindcss/postcss": "^4",
66
- "@testing-library/dom": "^10.4.1",
67
- "@testing-library/jest-dom": "^6.9.1",
68
- "@testing-library/react": "^16.3.2",
69
- "@types/node": "^20",
70
- "@types/react": "^19",
71
- "@types/react-dom": "^19",
72
- "@vitejs/plugin-react": "^6.0.1",
73
- "eslint": "^9",
74
- "eslint-config-next": "16.2.4",
67
+ "@release-it/bumper": "^7.0.5",
68
+ "concurrently": "^9.2.1",
75
69
  "husky": "^9.1.7",
76
- "jsdom": "^29.0.2",
77
70
  "lint-staged": "^16.4.0",
78
71
  "prettier": "^3.8.3",
79
- "release-it": "^20.0.1",
80
- "shadcn": "^4.5.0",
81
- "tailwindcss": "^4",
82
- "tailwindcss-animate": "^1.0.7",
83
- "tw-animate-css": "^1.4.0",
84
- "typescript": "^5",
85
- "vitest": "^4.1.5"
72
+ "release-it": "^20.0.1"
86
73
  }
87
74
  }
@@ -1 +0,0 @@
1
- 7FFlzRe2eS-D0Lw5oEpmC
@@ -1,6 +0,0 @@
1
- {
2
- "/_global-error/page": "/_global-error",
3
- "/_not-found/page": "/_not-found",
4
- "/icon.svg/route": "/icon.svg",
5
- "/page": "/"
6
- }
@@ -1,20 +0,0 @@
1
- {
2
- "pages": {
3
- "/_app": []
4
- },
5
- "devFiles": [],
6
- "polyfillFiles": [
7
- "static/chunks/03~yq9q893hmn.js"
8
- ],
9
- "lowPriorityFiles": [
10
- "static/7FFlzRe2eS-D0Lw5oEpmC/_buildManifest.js",
11
- "static/7FFlzRe2eS-D0Lw5oEpmC/_ssgManifest.js",
12
- "static/7FFlzRe2eS-D0Lw5oEpmC/_clientMiddlewareManifest.js"
13
- ],
14
- "rootMainFiles": [
15
- "static/chunks/080queev.r2uy.js",
16
- "static/chunks/10b~xdx5c-i7s.js",
17
- "static/chunks/0v3lyuj75aq50.js",
18
- "static/chunks/turbopack-0m-970~qvs7sc.js"
19
- ]
20
- }
@@ -1 +0,0 @@
1
- {"type": "commonjs"}
@@ -1,114 +0,0 @@
1
- {
2
- "version": 4,
3
- "routes": {
4
- "/": {
5
- "experimentalBypassFor": [
6
- {
7
- "type": "header",
8
- "key": "next-action"
9
- },
10
- {
11
- "type": "header",
12
- "key": "content-type",
13
- "value": "multipart/form-data;.*"
14
- }
15
- ],
16
- "initialRevalidateSeconds": false,
17
- "srcRoute": "/",
18
- "dataRoute": "/index.rsc",
19
- "allowHeader": [
20
- "host",
21
- "x-matched-path",
22
- "x-prerender-revalidate",
23
- "x-prerender-revalidate-if-generated",
24
- "x-next-revalidated-tags",
25
- "x-next-revalidate-tag-token"
26
- ]
27
- },
28
- "/_global-error": {
29
- "experimentalBypassFor": [
30
- {
31
- "type": "header",
32
- "key": "next-action"
33
- },
34
- {
35
- "type": "header",
36
- "key": "content-type",
37
- "value": "multipart/form-data;.*"
38
- }
39
- ],
40
- "initialRevalidateSeconds": false,
41
- "srcRoute": "/_global-error",
42
- "dataRoute": "/_global-error.rsc",
43
- "allowHeader": [
44
- "host",
45
- "x-matched-path",
46
- "x-prerender-revalidate",
47
- "x-prerender-revalidate-if-generated",
48
- "x-next-revalidated-tags",
49
- "x-next-revalidate-tag-token"
50
- ]
51
- },
52
- "/_not-found": {
53
- "initialStatus": 404,
54
- "experimentalBypassFor": [
55
- {
56
- "type": "header",
57
- "key": "next-action"
58
- },
59
- {
60
- "type": "header",
61
- "key": "content-type",
62
- "value": "multipart/form-data;.*"
63
- }
64
- ],
65
- "initialRevalidateSeconds": false,
66
- "srcRoute": "/_not-found",
67
- "dataRoute": "/_not-found.rsc",
68
- "allowHeader": [
69
- "host",
70
- "x-matched-path",
71
- "x-prerender-revalidate",
72
- "x-prerender-revalidate-if-generated",
73
- "x-next-revalidated-tags",
74
- "x-next-revalidate-tag-token"
75
- ]
76
- },
77
- "/icon.svg": {
78
- "initialHeaders": {
79
- "cache-control": "public, max-age=0, must-revalidate",
80
- "content-type": "image/svg+xml",
81
- "x-next-cache-tags": "_N_T_/layout,_N_T_/icon.svg/layout,_N_T_/icon.svg/route,_N_T_/icon.svg"
82
- },
83
- "experimentalBypassFor": [
84
- {
85
- "type": "header",
86
- "key": "next-action"
87
- },
88
- {
89
- "type": "header",
90
- "key": "content-type",
91
- "value": "multipart/form-data;.*"
92
- }
93
- ],
94
- "initialRevalidateSeconds": false,
95
- "srcRoute": "/icon.svg",
96
- "dataRoute": null,
97
- "allowHeader": [
98
- "host",
99
- "x-matched-path",
100
- "x-prerender-revalidate",
101
- "x-prerender-revalidate-if-generated",
102
- "x-next-revalidated-tags",
103
- "x-next-revalidate-tag-token"
104
- ]
105
- }
106
- },
107
- "dynamicRoutes": {},
108
- "notFoundRoutes": [],
109
- "preview": {
110
- "previewModeId": "ba0d340f6571800d70493ab21edfd4c2",
111
- "previewModeSigningKey": "1e9ed2190c75447354d2fb44d6dc86fac395442468dd19ce9f06ba1054915199",
112
- "previewModeEncryptionKey": "c046bd96b983c54026d1cb167c5e0cda1810da348fc98a1d3bf60719a44cd662"
113
- }
114
- }
@@ -1,333 +0,0 @@
1
- {
2
- "version": 1,
3
- "config": {
4
- "env": {},
5
- "webpack": null,
6
- "typescript": {
7
- "ignoreBuildErrors": false
8
- },
9
- "typedRoutes": false,
10
- "distDir": ".next",
11
- "cleanDistDir": true,
12
- "assetPrefix": "",
13
- "cacheMaxMemorySize": 52428800,
14
- "configOrigin": "next.config.ts",
15
- "useFileSystemPublicRoutes": true,
16
- "generateEtags": true,
17
- "pageExtensions": [
18
- "tsx",
19
- "ts",
20
- "jsx",
21
- "js"
22
- ],
23
- "poweredByHeader": true,
24
- "compress": true,
25
- "images": {
26
- "deviceSizes": [
27
- 640,
28
- 750,
29
- 828,
30
- 1080,
31
- 1200,
32
- 1920,
33
- 2048,
34
- 3840
35
- ],
36
- "imageSizes": [
37
- 32,
38
- 48,
39
- 64,
40
- 96,
41
- 128,
42
- 256,
43
- 384
44
- ],
45
- "path": "/_next/image",
46
- "loader": "default",
47
- "loaderFile": "",
48
- "domains": [],
49
- "disableStaticImages": false,
50
- "minimumCacheTTL": 14400,
51
- "formats": [
52
- "image/webp"
53
- ],
54
- "maximumRedirects": 3,
55
- "maximumResponseBody": 50000000,
56
- "dangerouslyAllowLocalIP": false,
57
- "dangerouslyAllowSVG": false,
58
- "contentSecurityPolicy": "script-src 'none'; frame-src 'none'; sandbox;",
59
- "contentDispositionType": "attachment",
60
- "localPatterns": [
61
- {
62
- "pathname": "**",
63
- "search": ""
64
- }
65
- ],
66
- "remotePatterns": [],
67
- "qualities": [
68
- 75
69
- ],
70
- "unoptimized": false,
71
- "customCacheHandler": false
72
- },
73
- "devIndicators": {
74
- "position": "bottom-left"
75
- },
76
- "onDemandEntries": {
77
- "maxInactiveAge": 60000,
78
- "pagesBufferLength": 5
79
- },
80
- "basePath": "",
81
- "sassOptions": {},
82
- "trailingSlash": false,
83
- "i18n": null,
84
- "productionBrowserSourceMaps": false,
85
- "excludeDefaultMomentLocales": true,
86
- "reactProductionProfiling": false,
87
- "reactStrictMode": null,
88
- "reactMaxHeadersLength": 6000,
89
- "httpAgentOptions": {
90
- "keepAlive": true
91
- },
92
- "logging": {
93
- "serverFunctions": true,
94
- "browserToTerminal": "warn"
95
- },
96
- "compiler": {},
97
- "expireTime": 31536000,
98
- "staticPageGenerationTimeout": 60,
99
- "output": "standalone",
100
- "modularizeImports": {
101
- "@mui/icons-material": {
102
- "transform": "@mui/icons-material/{{member}}"
103
- },
104
- "lodash": {
105
- "transform": "lodash/{{member}}"
106
- }
107
- },
108
- "outputFileTracingRoot": "/project/flowent",
109
- "cacheComponents": false,
110
- "cacheLife": {
111
- "default": {
112
- "stale": 300,
113
- "revalidate": 900,
114
- "expire": 4294967294
115
- },
116
- "seconds": {
117
- "stale": 30,
118
- "revalidate": 1,
119
- "expire": 60
120
- },
121
- "minutes": {
122
- "stale": 300,
123
- "revalidate": 60,
124
- "expire": 3600
125
- },
126
- "hours": {
127
- "stale": 300,
128
- "revalidate": 3600,
129
- "expire": 86400
130
- },
131
- "days": {
132
- "stale": 300,
133
- "revalidate": 86400,
134
- "expire": 604800
135
- },
136
- "weeks": {
137
- "stale": 300,
138
- "revalidate": 604800,
139
- "expire": 2592000
140
- },
141
- "max": {
142
- "stale": 300,
143
- "revalidate": 2592000,
144
- "expire": 31536000
145
- }
146
- },
147
- "cacheHandlers": {},
148
- "experimental": {
149
- "appNewScrollHandler": false,
150
- "useSkewCookie": false,
151
- "cssChunking": true,
152
- "multiZoneDraftMode": false,
153
- "appNavFailHandling": false,
154
- "prerenderEarlyExit": true,
155
- "serverMinification": true,
156
- "linkNoTouchStart": false,
157
- "caseSensitiveRoutes": false,
158
- "cachedNavigations": false,
159
- "partialFallbacks": false,
160
- "dynamicOnHover": false,
161
- "varyParams": false,
162
- "prefetchInlining": false,
163
- "preloadEntriesOnStart": true,
164
- "clientRouterFilter": true,
165
- "clientRouterFilterRedirects": false,
166
- "fetchCacheKeyPrefix": "",
167
- "proxyPrefetch": "flexible",
168
- "optimisticClientCache": true,
169
- "manualClientBasePath": false,
170
- "cpus": 15,
171
- "memoryBasedWorkersCount": false,
172
- "imgOptConcurrency": null,
173
- "imgOptTimeoutInSeconds": 7,
174
- "imgOptMaxInputPixels": 268402689,
175
- "imgOptSequentialRead": null,
176
- "imgOptSkipMetadata": null,
177
- "isrFlushToDisk": true,
178
- "workerThreads": false,
179
- "optimizeCss": false,
180
- "nextScriptWorkers": false,
181
- "scrollRestoration": false,
182
- "externalDir": false,
183
- "disableOptimizedLoading": false,
184
- "gzipSize": true,
185
- "craCompat": false,
186
- "esmExternals": true,
187
- "fullySpecified": false,
188
- "swcTraceProfiling": false,
189
- "forceSwcTransforms": false,
190
- "largePageDataBytes": 128000,
191
- "typedEnv": false,
192
- "parallelServerCompiles": false,
193
- "parallelServerBuildTraces": false,
194
- "ppr": false,
195
- "authInterrupts": false,
196
- "webpackMemoryOptimizations": false,
197
- "optimizeServerReact": true,
198
- "strictRouteTypes": false,
199
- "viewTransition": false,
200
- "removeUncaughtErrorAndRejectionListeners": false,
201
- "validateRSCRequestHeaders": false,
202
- "staleTimes": {
203
- "dynamic": 0,
204
- "static": 300
205
- },
206
- "reactDebugChannel": true,
207
- "serverComponentsHmrCache": true,
208
- "staticGenerationMaxConcurrency": 8,
209
- "staticGenerationMinPagesPerWorker": 25,
210
- "transitionIndicator": false,
211
- "gestureTransition": false,
212
- "inlineCss": false,
213
- "useCache": false,
214
- "globalNotFound": false,
215
- "browserDebugInfoInTerminal": "warn",
216
- "lockDistDir": true,
217
- "proxyClientMaxBodySize": 10485760,
218
- "hideLogsAfterAbort": false,
219
- "mcpServer": true,
220
- "turbopackFileSystemCacheForDev": true,
221
- "turbopackFileSystemCacheForBuild": false,
222
- "turbopackInferModuleSideEffects": true,
223
- "turbopackPluginRuntimeStrategy": "childProcesses",
224
- "optimizePackageImports": [
225
- "lucide-react",
226
- "date-fns",
227
- "lodash-es",
228
- "ramda",
229
- "antd",
230
- "react-bootstrap",
231
- "ahooks",
232
- "@ant-design/icons",
233
- "@headlessui/react",
234
- "@headlessui-float/react",
235
- "@heroicons/react/20/solid",
236
- "@heroicons/react/24/solid",
237
- "@heroicons/react/24/outline",
238
- "@visx/visx",
239
- "@tremor/react",
240
- "rxjs",
241
- "@mui/material",
242
- "@mui/icons-material",
243
- "recharts",
244
- "react-use",
245
- "effect",
246
- "@effect/schema",
247
- "@effect/platform",
248
- "@effect/platform-node",
249
- "@effect/platform-browser",
250
- "@effect/platform-bun",
251
- "@effect/sql",
252
- "@effect/sql-mssql",
253
- "@effect/sql-mysql2",
254
- "@effect/sql-pg",
255
- "@effect/sql-sqlite-node",
256
- "@effect/sql-sqlite-bun",
257
- "@effect/sql-sqlite-wasm",
258
- "@effect/sql-sqlite-react-native",
259
- "@effect/rpc",
260
- "@effect/rpc-http",
261
- "@effect/typeclass",
262
- "@effect/experimental",
263
- "@effect/opentelemetry",
264
- "@material-ui/core",
265
- "@material-ui/icons",
266
- "@tabler/icons-react",
267
- "mui-core",
268
- "react-icons/ai",
269
- "react-icons/bi",
270
- "react-icons/bs",
271
- "react-icons/cg",
272
- "react-icons/ci",
273
- "react-icons/di",
274
- "react-icons/fa",
275
- "react-icons/fa6",
276
- "react-icons/fc",
277
- "react-icons/fi",
278
- "react-icons/gi",
279
- "react-icons/go",
280
- "react-icons/gr",
281
- "react-icons/hi",
282
- "react-icons/hi2",
283
- "react-icons/im",
284
- "react-icons/io",
285
- "react-icons/io5",
286
- "react-icons/lia",
287
- "react-icons/lib",
288
- "react-icons/lu",
289
- "react-icons/md",
290
- "react-icons/pi",
291
- "react-icons/ri",
292
- "react-icons/rx",
293
- "react-icons/si",
294
- "react-icons/sl",
295
- "react-icons/tb",
296
- "react-icons/tfi",
297
- "react-icons/ti",
298
- "react-icons/vsc",
299
- "react-icons/wi"
300
- ],
301
- "trustHostHeader": false,
302
- "isExperimentalCompile": false
303
- },
304
- "htmlLimitedBots": "[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight",
305
- "bundlePagesRouterDependencies": false,
306
- "configFileName": "next.config.ts",
307
- "turbopack": {
308
- "root": "/project/flowent"
309
- },
310
- "distDirRoot": ".next"
311
- },
312
- "appDir": "/project/flowent",
313
- "relativeAppDir": "",
314
- "files": [
315
- ".next/routes-manifest.json",
316
- ".next/server/pages-manifest.json",
317
- ".next/build-manifest.json",
318
- ".next/prerender-manifest.json",
319
- ".next/server/functions-config-manifest.json",
320
- ".next/server/middleware-manifest.json",
321
- ".next/server/middleware-build-manifest.js",
322
- ".next/server/app-paths-manifest.json",
323
- ".next/app-path-routes-manifest.json",
324
- ".next/server/server-reference-manifest.js",
325
- ".next/server/server-reference-manifest.json",
326
- ".next/server/prefetch-hints.json",
327
- ".next/BUILD_ID",
328
- ".next/server/next-font-manifest.js",
329
- ".next/server/next-font-manifest.json",
330
- ".next/required-server-files.json"
331
- ],
332
- "ignore": []
333
- }