Commit graph

5,309 commits

Author SHA1 Message Date
anovazzi1
41d18edc97 update package lock json 2023-09-26 10:46:55 -03:00
anovazzi1
b833d45fd1
Adds async processing, session management and a starter cloud setup (#921)
This PR adds the ability to use Redis as cache, Celery for task
execution, Session management, async tasks for the API and some other
improvements.

Run the following command after setting up the .env file in `./deploy`
folder:
```bash
docker compose up --exit-code-from tests tests result_backend broker celeryworker db --build
```
2023-09-26 10:34:38 -03:00
Gabriel Luiz Freitas Almeida
a85b39e048 🔥 refactor(sidebars.js): comment out "guidelines/api" section to temporarily remove it from the sidebar
ℹ️ The "guidelines/api" section is temporarily removed from the sidebar to prevent confusion and ensure consistency while it is being updated or revised.
2023-09-26 10:33:53 -03:00
Gabriel Luiz Freitas Almeida
3bb755bbeb 📚 docs(sidebars.js): add missing login and api guidelines and remove login guide from step-by-step guides
📚 docs(sidebars.js): add missing login and api guidelines to the guidelines section and remove login guide from step-by-step guides
2023-09-26 10:33:34 -03:00
Gabriel Luiz Freitas Almeida
afa66112e1 📝 docs(login.mdx): add documentation for login functionality in Langflow
The login functionality in Langflow serves to authenticate users and protect sensitive routes in the application. This commit adds documentation for the login functionality, including information about the enhanced login mechanism introduced in version 0.5. It explains the environment variables that are crucial in configuring the login settings and provides instructions on how to set them securely. It also covers the command-line interface for managing superusers and provides details on the sign-up process and profile settings for users. Screenshots are included to illustrate the sign-up page, profile settings page, and admin page.
2023-09-26 10:21:59 -03:00
Gabriel Luiz Freitas Almeida
bfdb9de879 🐛 fix(test_user.py): fix incorrect assertion in test_patch_user function 2023-09-26 10:21:39 -03:00
Cristhian Zanforlin Lousa
cc9f834178 🐛 fix(authContext.tsx): update cookie names for access token and refresh token to improve clarity and consistency
🐛 fix(api.tsx): update cookie names for access token and refresh token to match changes in authContext.tsx
2023-09-26 10:21:04 -03:00
Cristhian Zanforlin Lousa
5c57e62f55 🔄 refactor(keypairListComponent): replace Input component with Textarea component for key and value inputs
🐛 fix(keypairListComponent): fix incorrect prop name in Textarea component for value input
2023-09-26 08:19:31 -03:00
Gabriel Luiz Freitas Almeida
12a46b6936 🐛 fix(login.py): re-raise HTTPException if it is already raised to prevent overriding the original exception 2023-09-25 22:09:46 -03:00
Gabriel Luiz Freitas Almeida
c6882a0598 🐛 fix(login.py): move user authentication logic outside of try-except block to ensure proper error handling
 feat(login.py): add endpoint for auto login to improve user experience
2023-09-25 20:56:39 -03:00
Gabriel Luiz Freitas Almeida
62a4e94c71 🔧 fix(api_key.py): remove unnecessary sa_relationship_kwargs to improve code readability and maintainability
🔧 fix(user.py): add sa_relationship_kwargs to api_keys relationship to enable cascading delete when deleting a user
2023-09-25 19:58:21 -03:00
Gabriel Luiz Freitas Almeida
1e0f81c135 🐛 fix(login.py): handle exceptions in login_to_get_access_token function to provide more detailed error messages
🐛 fix(users.py): only hash password if user is a superuser to prevent regular users from changing their password
2023-09-25 19:34:17 -03:00
Gabriel Luiz Freitas Almeida
4be21db30c 🔧 chore(user.py): add optional 'username' field to UserUpdate model for better flexibility in updating user information 2023-09-25 19:14:09 -03:00
Gabriel Luiz Freitas Almeida
3a4ae5e37b 🐛 fix(users.py): prevent non-superusers from changing their password 2023-09-25 19:12:57 -03:00
Gabriel Luiz Freitas Almeida
de4262faa6 🐛 fix(endpoints.py): fix argument passed to save_uploaded_file function to correctly save the uploaded file
🐛 fix(utils.py): fix argument type in save_uploaded_file function to correctly handle UploadFile object
2023-09-25 18:59:21 -03:00
anovazzi1
c3df875f1a fix(AdminPage/index.tsx): fix off-by-one error in getUsersPage function call to correctly pass the index parameter
The getUsersPage function was being called with the incorrect index parameter. It was off by one, causing the wrong page of users to be fetched. This has been fixed by subtracting 1 from the index parameter before calling the function.
2023-09-25 18:09:14 -03:00
Gabriel Luiz Freitas Almeida
f497369a1c 🔧 chore(users.py): remove unused current_user variable in read_all_users function
🔧 chore(api_key.py): add cascade delete to user-api_key relationship to ensure API keys are deleted when user is deleted
2023-09-25 18:06:52 -03:00
Gabriel Luiz Freitas Almeida
4699027ffe 🔀 chore(docker-compose.override.yml): remove unused 'tests' service configuration
🔧 chore(docker-compose.test.yml): add 'tests' service configuration to run pytest
2023-09-25 17:55:29 -03:00
Gabriel Luiz Freitas Almeida
cf5c7b817e 🔧 chore(docker-compose.override.yml): add traefik labels to avoid conflicts with backend service
🔧 chore(docker-compose.override.yml): configure traefik labels for tests service to route traffic and set load balancer port
2023-09-25 17:47:59 -03:00
Gabriel Luiz Freitas Almeida
df81154536 🚀 chore(docker-compose.yml): add dependencies for the service to improve startup order and reliability 2023-09-25 17:08:54 -03:00
Gabriel Luiz Freitas Almeida
3486248faa 🐳 chore(docker-compose.yml): update volume names for consistency and clarity
- Rename volume `./pgadmin` to `pgadmin-data` for better naming convention and clarity.
- Rename volumes for RabbitMQ:
  - `./.docker/rabbitmq/etc/` to `rabbitmq_data` for consistency and clarity.
  - `./.docker/rabbitmq/data/` to `rabbitmq_data` for consistency and clarity.
  - `./.docker/rabbitmq/logs/` to `rabbitmq_log` for consistency and clarity.

No functional changes, only volume name updates.
2023-09-25 16:26:53 -03:00
Gabriel Luiz Freitas Almeida
2a3ba95af9 🐛 fix(users.py): update reference to settings.NEW_USER_IS_ACTIVE to settings.auth_settings.NEW_USER_IS_ACTIVE to fix incorrect attribute access 2023-09-25 16:10:29 -03:00
Gabriel Luiz Freitas Almeida
a2c7d79451 📝 docs(login.mdx): add guide for sign up and sign in functionality in Langflow
📝 docs(login.mdx): explain the purpose of login functionality and introduce enhanced login mechanism in Langflow

📝 docs(login.mdx): document the crucial environment variables for configuring the login settings in Langflow

📝 docs(login.mdx): provide information on how to disable automatic login and enforce user authentication in Langflow

📝 docs(login.mdx): explain the usage of LANGFLOW_SUPERUSER and LANGFLOW_SUPERUSER_PASSWORD environment variables for setting up a superuser in Langflow

📝 docs(login.mdx): document the usage of LANGFLOW_SECRET_KEY environment variable for encrypting the superuser's password in Langflow

📝 docs(login.mdx): explain the purpose of LANGFLOW_NEW_USER_IS_ACTIVE environment variable for automatically activating new users in Langflow

📝 docs(login.mdx): provide information on the command-line interface for managing superusers in Langflow

📝 docs(login.mdx): document the sign-up process in Langflow and provide an image of the sign-up page

📝 docs(login.mdx): explain how users can change their profile settings in Langflow and provide an image of the profile settings page

📝 docs(login.mdx): explain how the superuser can access the admin page in Langflow and provide an image of the admin page

📝 docs(superuser.mdx): add guide for superuser permissions in Langflow
2023-09-25 15:55:33 -03:00
Gabriel Luiz Freitas Almeida
be85fcc607 🔧 chore(.env.example): add configuration for new user and update OpenAI API key
🔥 refactor(docker-compose.celery.yml): remove unused celery service configuration
2023-09-25 15:55:10 -03:00
Gabriel Luiz Freitas Almeida
a5da416bc4 🔧 fix(users.py): add support for NEW_USER_IS_ACTIVE setting to determine if new users should be active by default
🔧 fix(cache/manager.py): add warning log message to inform users that RedisCache is experimental and may not work as expected
🔧 fix(settings/auth.py): add NEW_USER_IS_ACTIVE setting to determine if new users should be active by default
2023-09-25 15:54:55 -03:00
Gabriel Luiz Freitas Almeida
d8ba8f0746 🚀 feat(endpoints.py): add warning message for experimental feature to inform users about potential issues and encourage reporting 2023-09-24 00:09:53 -03:00
Gabriel Luiz Freitas Almeida
d1203b7fb7 🐛 fix(ci.yml): remove unnecessary working-directory from docker compose command to fix build and start services step in CI workflow 2023-09-23 23:47:48 -03:00
Gabriel Luiz Freitas Almeida
bc904fba69 🐛 fix(ci.yml): fix docker compose command to correctly specify the compose file before the up command 2023-09-23 23:44:02 -03:00
Gabriel Luiz Freitas Almeida
f1b14232c6 🐛 fix(ci.yml): update docker compose command to include the correct file and build the services 2023-09-23 23:42:23 -03:00
Gabriel Luiz Freitas Almeida
a2c5c1b71f 🔧 chore(ci.yml): update docker compose command to include result_backend and broker services for testing environment 2023-09-23 23:37:56 -03:00
Gabriel Luiz Freitas Almeida
ae26a55c9f 🔧 chore(ci.yml): change working directory to ./deploy to create env file in the correct location 2023-09-23 23:36:53 -03:00
Gabriel Luiz Freitas Almeida
419045f903 🔧 chore(ci.yml): add step to create .env file from secrets.ENV_FILE to provide environment variables for the build and start services step 2023-09-23 23:35:37 -03:00
Gabriel Luiz Freitas Almeida
1571e8b9ee 🔥 refactor(locustfile.py): remove unused imports and variables to improve code readability and maintainability 2023-09-23 23:30:54 -03:00
Gabriel Luiz Freitas Almeida
a75e80b0f7 🔧 refactor(endpoints.py): remove unused import of get_cache_service to improve code cleanliness and maintainability
🔧 refactor(schemas.py): make the backend field in ProcessResponse schema optional to handle cases where backend is not provided
🔧 refactor(utils.py): add type hint ignore comment to import statement for Celery to avoid type checking error
2023-09-23 23:30:45 -03:00
Gabriel Luiz Freitas Almeida
c5a6003ef5 🔧 fix(manager.py): replace logging module with loguru logger for consistent logging across the project
 feat(manager.py): add debug logs to check Celery availability and backend being used
🔧 fix(manager.py): move check_celery_availability function definition above its usage to improve code readability
 feat(manager.py): add debug logs to show task launch details and backend being used
2023-09-23 23:29:20 -03:00
Gabriel Luiz Freitas Almeida
5f3c602b29 🔥 chore(users.py): remove unused test endpoint for adding a superuser
The `add_super_user_for_testing_purposes_delete_me_before_merge_into_dev` endpoint was added for testing purposes and is no longer needed. It has been removed to clean up the codebase.
2023-09-23 23:29:10 -03:00
Gabriel Luiz Freitas Almeida
8760cf7f9a 🔧 fix(endpoints.py): import missing dependencies to improve code readability and maintainability
🔧 fix(endpoints.py): generate session ID if it is None to ensure a valid session ID is used
🔧 fix(endpoints.py): add backend information to the ProcessResponse to provide additional context
🔧 fix(schemas.py): add backend field to the ProcessResponse schema to match the changes in the endpoints.py file
2023-09-23 23:28:56 -03:00
Gabriel Luiz Freitas Almeida
befe79775b 🐛 fix(celery_app.py): add return type annotation to make_celery function to improve code readability and maintainability
🔧 chore(celeryconfig.py): update broker_url default value to use RabbitMQ instead of Redis for better performance and scalability
2023-09-23 23:28:37 -03:00
Gabriel Luiz Freitas Almeida
8c7df5e2f7 🐛 fix(utils.py): change get_celery_worker_status function to use app.control.ping() instead of i.ping() for better readability and consistency
🐛 fix(conftest.py): update LANGFLOW_REDIS_HOST and BROKER_URL environment variables to use "result_backend" instead of "queue" for better clarity and accuracy
2023-09-23 23:28:18 -03:00
Gabriel Luiz Freitas Almeida
f7ab483748 🔧 chore(.env.example): update RabbitMQ configuration and add OpenAI API key and superuser credentials
- Update RabbitMQ configuration by setting the default username and password to "langflow"
- Add OpenAI API key for integration with OpenAI services
- Add superuser credentials for the Langflow application
2023-09-23 23:27:53 -03:00
Gabriel Luiz Freitas Almeida
d6262b0b86 🔧 chore(docker-compose.override.yml): rename 'queue' service to 'result_backend' for better clarity and consistency
🔧 chore(docker-compose.yml): add 'broker' service for RabbitMQ management console
2023-09-23 23:26:25 -03:00
Gabriel Luiz Freitas Almeida
22391c46eb 🔧 chore(.gitignore): add .docker to the list of ignored files
🐛 fix(locustfile.py): remove unused import and fix incorrect variable name
 feat(locustfile.py): add support for authentication and flow creation in on_start method
2023-09-23 23:25:38 -03:00
Gabriel Luiz Freitas Almeida
8bbf25ee14 🐛 fix(frontend): update format script in package.json to include all files in subdirectories for consistent code formatting 2023-09-22 18:16:57 -03:00
Gabriel Luiz Freitas Almeida
200f5d647c fix more linting issues 2023-09-22 18:15:23 -03:00
Gabriel Luiz Freitas Almeida
99a4f01865 fix linting issues 2023-09-22 18:15:12 -03:00
Gabriel Luiz Freitas Almeida
479a808634 🔧 fix(endpoints.py): remove unused import and function call to improve code cleanliness and maintainability
🔧 fix(endpoints.py): move import statement to the top of the file for better organization and readability
🔧 fix(getters.py): change service type from DATABASE_MANAGER to DATABASE_SERVICE for consistency and clarity
🔧 fix(getters.py): change service type from CACHE_MANAGER to CACHE_SERVICE for consistency and clarity
🔧 fix(getters.py): change service type from SESSION_MANAGER to SESSION_SERVICE for consistency and clarity
🔧 fix(getters.py): change service type from TASK_MANAGER to TASK_SERVICE for consistency and clarity
🔧 fix(getters.py): remove unused function get_chat_service() to improve code cleanliness and maintainability
🔧 fix(getters.py): remove duplicate function get_settings_service() to improve code cleanliness and maintainability
🔧 fix(getters.py): remove duplicate function get_db_service() to improve code cleanliness and maintainability
🔧 fix(getters.py): remove duplicate function get_session() to improve code cleanliness and maintainability
🔧 fix(utils.py): remove unused import statement to improve code cleanliness and maintainability
🔧 fix(utils.py): remove unused function setup_superuser() to improve code cleanliness and maintainability
🔧 fix(utils.py): remove unused function teardown_superuser() to improve code cleanliness and maintainability
🔧 fix(utils.py): remove unused function teardown_services() to improve code cleanliness and maintainability
🔧 fix(utils.py): remove unused function initialize_settings_manager() to improve code cleanliness and maintainability
🔧 fix(utils.py): remove unused function initialize_session_manager() to improve code cleanliness and maintainability
🔧 fix(utils.py): remove unused function initialize_services() to improve code cleanliness and maintainability
🔧 fix(conftest.py): remove unused import statement to improve code cleanliness and maintainability
🔧 fix(conftest.py): remove unused function get_session_override() to improve code cleanliness and maintainability
🔧 fix(conftest.py): remove unused function distributed_client_fixture() to improve code cleanliness and maintainability
🔧 fix(conftest.py): remove unused function client_fixture() to improve code cleanliness and maintainability
🔧 fix(conftest.py): remove unused function test_user() to improve code cleanliness and maintainability
🔧 fix(conftest.py): remove unused function active_user

🐛 fix(test_endpoints.py): update import statements to use get_db_service instead of get_db_manager to improve code semantics
🐛 fix(test_login.py): update import statements to use get_db_service instead of get_db_manager to improve code semantics
🐛 fix(test_setup_superuser.py): update import statements to use get_db_service instead of get_db_manager to improve code semantics
🐛 fix(test_user.py): update import statements to use get_db_service instead of get_db_manager to improve code semantics
2023-09-22 18:07:55 -03:00
Gabriel Luiz Freitas Almeida
1c0f18f897 🔧 fix(__main__.py): update import statements to reflect changes in module structure
🔧 fix(endpoints.py): update import statement to reflect changes in module structure
🔧 fix(flows.py): update import statements to reflect changes in module structure
🔧 fix(login.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(custom_component.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure
🔧 fix(base.py): update import statement to reflect changes in module structure

🔧 fix(process.py): update import statement for get_session_service in langflow.processing.process module to reflect correct module location
🔧 fix(utils.py): update import statement for get_session and get_settings_service in langflow.services.auth.utils module to reflect correct module location
🔧 fix(manager.py): update import statement for ServiceType.CACHE_MANAGER in langflow.services.chat.manager module to reflect correct module location
🔧 fix(manager.py): update import statement for ServiceType.DATABASE_MANAGER in langflow.services.chat.manager module to reflect correct module location
🔧 fix(utils.py): update import statement for get_settings_service in langflow.services.database.manager module to reflect correct module location
🔧 fix(utils.py): update import statement for get_settings_service in langflow.services.database.utils module to reflect correct module location
🔧 fix(getters.py): update import statement for DatabaseManager, SettingsManager, ChatManager in langflow.services.getters module to reflect correct module location
🔧 fix(getters.py): update import statement for get_settings_manager in langflow.services.getters module to reflect correct function name change
🔧 fix(getters.py): update import statement for get_db_manager in langflow.services.getters module to reflect correct function name change
🔧 fix(getters.py): update import statement for get_chat_manager in langflow.services.getters module to reflect correct function name change
🔧 fix(getters.py): update import statement for get_settings_manager in langflow.services.getters module to reflect correct function name change
🔧 fix(getters.py): update import statement for get_db_manager in langflow.services.getters module to reflect correct function name change
🔧 fix(getters.py): update import statement for get_session in langflow.services.getters module to reflect correct function name change
🔧 fix(getters.py): update import statement for get_chat_manager in langflow.services.getters module to reflect correct function name change
🔧 fix(langfuse.py): update import statement for get_settings_service in langflow.services.plugins.langfuse module to reflect correct module location
🔧 fix(schema.py): update import statement for ServiceType.AUTH_MANAGER, ServiceType.CACHE_MANAGER, ServiceType.SETTINGS_MANAGER, ServiceType.DATABASE_MANAGER, ServiceType.CHAT_MANAGER, ServiceType.SESSION_MANAGER, ServiceType.TASK_MANAGER in langflow.services.schema module to reflect correct module location
🔧 fix
2023-09-22 14:56:16 -03:00
Gabriel Luiz Freitas Almeida
b3febf25dd Merge remote-tracking branch 'origin/dev' into celery 2023-09-22 14:50:19 -03:00
Gabriel Luiz Freitas Almeida
a658f5af89 🔧 chore(conftest.py): comment out unused monkeypatching of USE_CELERY variable to improve code readability and maintainability 2023-09-22 14:15:55 -03:00
anovazzi1
758d5ac9d3 fix(EditFlowSettingsComponent): fix issue with invalidName state not updating correctly when input value is changed 2023-09-22 14:09:44 -03:00