Commit graph

1,477 commits

Author SHA1 Message Date
Gabriel Luiz Freitas Almeida
98dfc01934 🔒 refactor(auth.py): move SECRET_KEY logic to AuthSettings class to improve code organization and reusability
🔒 refactor(base.py): remove SECRET_KEY field from Settings class since it is now handled by AuthSettings class
🔒 refactor(manager.py): pass CONFIG_DIR to AuthSettings constructor when creating an instance
2023-08-30 18:58:12 -03:00
Gabriel Luiz Freitas Almeida
3a90b07235 fix exception 2023-08-30 18:18:22 -03:00
Gabriel Luiz Freitas Almeida
1407719f2f 🐛 fix(chat.py): handle unauthorized error in chat websocket to return WS_1008_POLICY_VIOLATION status code and "Unauthorized" reason 2023-08-30 18:12:03 -03:00
Gabriel Luiz Freitas Almeida
9d7deccc53 🐛 fix(chat.py): handle and log any exception that occurs in the chat websocket to prevent unhandled errors and provide better error messages 2023-08-30 17:54:58 -03:00
Gabriel Luiz Freitas Almeida
163a7c49cd 🐛 fix(utils.py): fix TypeError when comparing offset-naive and offset-aware datetimes in get_current_user function 2023-08-30 17:51:57 -03:00
Gabriel Luiz Freitas Almeida
61f0a93cc6 🔥 refactor(manager.py): remove redundant code in connect method by removing unnecessary await websocket.accept() call 2023-08-30 17:40:22 -03:00
Gabriel Luiz Freitas Almeida
a8b9c08a9d 🐛 fix(base.py): fix issue with loading and saving secret key in Settings class
🐛 fix(utils.py): fix issue with writing secret key to file in write_secret_to_file function
2023-08-30 17:39:51 -03:00
Gabriel Luiz Freitas Almeida
eacf558e70 🐛 fix(chat.py): close websocket connection with status code 1008 and reason "Unauthorized" if user is not authenticated or inactive
🐛 fix(auth/utils.py): raise credentials_exception if token has expired
2023-08-30 17:29:07 -03:00
Gabriel Luiz Freitas Almeida
53b9565ac6 Merge remote-tracking branch 'origin/dev' into fix_secret_key 2023-08-30 16:48:04 -03:00
Gabriel Luiz Freitas Almeida
b3c2fd26a5 🐛 fix(base.py): fix import statements for read_secret_from_file and write_secret_to_file functions
🔒 chore(utils.py): add write_secret_to_file and read_secret_from_file functions to handle secret key file read/write operations
2023-08-30 16:14:27 -03:00
Gabriel Luiz Freitas Almeida
e2e890464f 🔧 fix(base.py): import set_secure_permissions function from utils module to fix NameError
🔒 feat(utils.py): add set_secure_permissions function to set secure file permissions based on the operating system
2023-08-30 15:53:32 -03:00
anovazzi1
8a772086e2 fix(api): make frontend_node field optional in ValidatePromptRequest to allow for a tweak call without a frontend_node
fix(api): handle case where frontend_node is None in post_validate_prompt to avoid attempting to update a non-existent node
2023-08-29 22:03:54 -03:00
anovazzi1
cf8df6c62b fix(users.py): update error message to be more generic and not reveal specific reason for username unavailability
fix(AdminPage/index.tsx): fix nullish assertion for create_at and updated_at properties to avoid potential errors
fix(signUpPage/index.tsx): fix error handling to correctly display error message
fix(types/components/index.ts): make id, create_at, and updated_at properties optional in UserInputType
2023-08-29 16:44:15 -03:00
anovazzi1
d73b3b0b52 fix(users.py): improve error message when trying to add a user with an already claimed username 2023-08-29 16:26:15 -03:00
Gabriel Luiz Freitas Almeida
8c77613f72 🔀 refactor(utils.py): change return type annotation of authenticate_user function from Union[User, None] to Optional[User] for clarity and consistency 2023-08-29 10:45:10 -03:00
Cristhian Zanforlin Lousa
6c03edc50a 🐛 fix(auth.py): set AUTO_LOGIN to False to disable automatic login as a super user
🐛 fix(API/index.ts): add null check for response object before checking status to prevent potential error
2023-08-28 18:22:59 -03:00
Gabriel Luiz Freitas Almeida
acd661f629 🔧 chore(__main__.py): remove unused imports and functions to improve code cleanliness and maintainability
🔧 chore(main.py): update import statement to use get_number_of_workers from __main__ module
🔧 chore(util.py): remove unused imports and functions to improve code cleanliness and maintainability
2023-08-28 18:09:26 -03:00
Gabriel Luiz Freitas Almeida
9804d58d32 🐛 fix(base.py): add *args and **kwargs to build method in Vertex class to allow for additional arguments to be passed
🐛 fix(types.py): add *args and **kwargs to build method in AgentVertex, LLMVertex, WrapperVertex, ChainVertex, and PromptVertex classes to allow for additional arguments to be passed
🐛 fix(utils.py): change return type annotation in api_key_security function from Optional[ApiKey] to Optional[User] to reflect the actual return type
2023-08-28 18:05:43 -03:00
Gabriel Luiz Freitas Almeida
099921514c 🐛 fix(endpoints.py): add missing colon after if statement condition to fix syntax error
🔒 chore(endpoints.py): fix indentation and add missing colon after if statement condition for better code readability
2023-08-28 17:56:40 -03:00
Gabriel Luiz Freitas Almeida
1b79c1bd7e 🐛 fix(types.py): pass user_id parameter to build methods in AgentVertex, LLMVertex, WrapperVertex, ChainVertex, and PromptVertex to enable user-specific functionality 2023-08-28 17:56:39 -03:00
Gabriel Luiz Freitas Almeida
ac6d2ff8b4 🔥 refactor(service.py): remove unused import and commented code in AuthManager class 2023-08-28 17:56:38 -03:00
Gabriel Luiz Freitas Almeida
31abe8d67e 🐛 fix(utils.py): fix missing return statement in api_key_security function
🔀 refactor(utils.py): refactor create_super_user function to use Optional types for username and password parameters
2023-08-28 17:56:38 -03:00
Gabriel Luiz Freitas Almeida
d9deb6fd5f 🔧 chore(util.py): add type ignore comment to import statement for multiprocess module
🐛 fix(util.py): fix condition to check if "BaseModel" is in the string representation of _type to avoid skipping BaseModel types in format_dict function
2023-08-28 17:56:37 -03:00
Gabriel Luiz Freitas Almeida
2edffd33ee 🐛 fix(endpoints.py): add missing colon after if statement condition
🔒 chore(endpoints.py): rename api_key parameter to api_key_user for clarity and consistency
🔒 chore(endpoints.py): add type hint for api_key_user parameter to indicate it is of type User
🔒 chore(endpoints.py): remove unnecessary assignment of api_key_user from api_key.user
2023-08-28 17:56:36 -03:00
Gabriel Luiz Freitas Almeida
c9fef26981
Merge branch 'dev' into login 2023-08-28 20:34:08 +00:00
Gabriel Luiz Freitas Almeida
a154955154 🔧 fix(__main__.py): import display_results function from utils.util to fix NameError
 feat(__main__.py): add migration command to run database migrations with an option to run in test mode
🔧 fix(util.py): import console from __main__ module to fix NameError
 feat(util.py): add display_results function to display migration results in a table format
2023-08-28 16:22:56 -03:00
Gabriel Luiz Freitas Almeida
5f2a949ec5 🔧 fix(manager.py): import missing dependencies to resolve NameError and improve code readability
 feat(manager.py): add method run_migrations_test() to check if all models are in the database and up to date with all columns
 feat(manager.py): add method check_table() to check if a table exists and if all expected columns are present
🔧 fix(utils.py): import missing dependencies to resolve NameError and improve code readability
 feat(utils.py): add dataclasses Result and TableResults to store check results for tables and columns
2023-08-28 16:22:55 -03:00
Gabriel Luiz Freitas Almeida
bdd04004b3 🔀 chore(utils.py): add type hints to the get_db_manager() function for better code readability and maintainability 2023-08-28 16:22:54 -03:00
Gabriel Luiz Freitas Almeida
137954de6b 🐛 fix(__main__.py): rename serve command to run command for better semantics and clarity
🔧 chore(test_cli.py): update test to use the new run command instead of serve command
 feat(test_cli.py): add test for creating a superuser with the superuser command
2023-08-28 15:47:57 -03:00
Gabriel Luiz Freitas Almeida
ecf54acb7c 🔧 fix(adds_tables.py): set default values for 'total_uses' and 'is_active' columns to improve data consistency and simplify code 2023-08-28 15:30:42 -03:00
Gabriel Luiz Freitas Almeida
9604ace084 🔥 chore(adds_tables.py): remove 'flowstyle' table and related indices if it exists during upgrade to ensure data consistency
🔥 chore(adds_tables.py): remove 'flowstyle' table and related indices if it exists during downgrade to ensure data consistency
2023-08-28 14:45:30 -03:00
Gabriel Luiz Freitas Almeida
4320b127d3 🐛 fix(utils.py): handle exception when running migrations to ignore "already exists" error and prevent unnecessary error logging and raising of RuntimeError 2023-08-28 14:43:58 -03:00
Gabriel Luiz Freitas Almeida
58317a3891 🔧 chore(adds_tables.py): add comment explaining the reason for dropping '_alembic_tmp_flow' table before creating indices 2023-08-28 11:54:13 -03:00
Gabriel Luiz Freitas Almeida
49d6054517 🔧 fix(adds_tables.py): fix foreign key creation for 'flow' table when 'user' table exists
 feat(adds_tables.py): add support for creating 'user_id' column in 'flow' table if it does not exist
🔧 fix(adds_tables.py): fix index creation for 'flow' table when 'user_id' column exists
2023-08-28 11:53:24 -03:00
Gabriel Luiz Freitas Almeida
2a53ac2688 🐛 fix(util.py): handle IndentationError when parsing class source code and log an error message 2023-08-28 11:18:16 -03:00
Gabriel Luiz Freitas Almeida
4d08d511e9 🐛 fix(manager.py): fix typo in logger.warn to logger.warning
 feat(manager.py): add check_schema_health method to DatabaseManager to verify the integrity of the database schema
🐛 fix(utils.py): add error handling when checking schema health in initialize_database method
2023-08-28 11:18:01 -03:00
Gabriel Luiz Freitas Almeida
0aa8a25e3f 🔧 chore(util.py): remove unnecessary check for "BaseModel" in _type variable
The check for "BaseModel" in the _type variable is unnecessary and can be safely removed.
2023-08-28 11:17:44 -03:00
Gabriel Luiz Freitas Almeida
f922214d2a 🐛 fix(endpoints.py): add check for missing api_key and raise HTTPException with status code 401 and detail message "Invalid API Key"
🐛 fix(crud.py): remove unnecessary return statement and update_total_uses function call if api_key_object is None
2023-08-28 11:17:34 -03:00
Gabriel Luiz Freitas Almeida
2d22737c31 🐛 fix(adds_tables.py): create "user" and "apikey" tables only if they don't exist to prevent duplicate table creation
 feat(adds_tables.py): add unique index on "username" column in "user" table for faster username lookups
 feat(adds_tables.py): add unique index on "api_key" column in "apikey" table for faster API key lookups
 feat(adds_tables.py): add index on "name" column in "apikey" table for faster name lookups
 feat(adds_tables.py): add index on "user_id" column in "apikey" table for faster user ID lookups
2023-08-28 11:17:12 -03:00
Gabriel Luiz Freitas Almeida
59a08cd645 🔧 chore(crud.py): change return type of check_key function from bool to Optional[ApiKey] to provide more information about the API key
🔧 chore(crud.py): rename api_key variable to api_key_object in check_key function for better clarity
🔧 chore(crud.py): change return value of check_key function from True to api_key_object.user to provide the associated user with the API key
2023-08-28 07:01:01 -03:00
Gabriel Luiz Freitas Almeida
ed9796e473 🐛 fix(api_key.py): change variable name from 'e' to 'exc' for better readability and semantics
🐛 fix(endpoints.py): add 'api_key' parameter to 'process_flow' function to fix missing dependency error
🐛 fix(endpoints.py): add exception chaining to HTTPException in 'process_flow' function for better error handling
🐛 fix(utils.py): change return type of 'api_key_security' function to Optional[ApiKey] for better type hinting
🐛 fix(utils.py): change variable name from 'e' to 'exc' for better readability and semantics
2023-08-28 07:00:45 -03:00
Gabriel Luiz Freitas Almeida
4bc4a39e5e 🔒 chore(api_key.py): refactor mask_api_key validator to improve readability and maintainability
🔒 chore(api_key.py): update api_key field in ApiKeyRead model to remove index=True and unique=True constraints
2023-08-28 06:48:38 -03:00
Gabriel Luiz Freitas Almeida
5605b2aa44 🔥 refactor(alembic): remove flowstyles table migration
🔥 refactor(alembic): remove add_flow_table migration

 feat(alembic): add adds_tables migration to create user and apikey tables

🔥 chore(alembic): remove unnecessary alembic migration files

The following alembic migration files were removed:
- `5512e39b4012_add_apikey_table.py`
- `6384181fb7e8_update_api_key.py`
- `d3749cf7ac7e_update_all_tables.py`

These files are no longer needed as they are no longer relevant to the current state of the database schema. Removing them helps to keep the project's codebase clean and organized.
2023-08-27 20:04:15 -03:00
Gabriel Luiz Freitas Almeida
d06ea50674 🐛 fix(env.py): enable batch rendering for migrations to improve performance 2023-08-27 19:55:32 -03:00
Gabriel Luiz Freitas Almeida
19653858be 🔧 chore(utils.py): refactor create_super_user function to accept optional username and password parameters for flexibility
🔒 fix(utils.py): use the provided username and password parameters if available when creating the super user, instead of relying solely on the settings manager
2023-08-27 19:55:20 -03:00
Gabriel Luiz Freitas Almeida
7d3a3db7e3 🔧 chore(__main__.py): refactor imports to improve readability and maintainability
 feat(__main__.py): add 'superuser' command to create a superuser with provided username and password
2023-08-27 19:55:09 -03:00
Gabriel Luiz Freitas Almeida
a700ab1f71 🐛 fix(endpoints.py): handle specific exceptions when processing flow to provide more informative error messages 2023-08-27 19:16:30 -03:00
Gabriel Luiz Freitas Almeida
7c2bbad5ab 🐛 fix(api_key.py): fix delete_api_key_route URL path by removing double slashes 2023-08-26 17:40:02 -03:00
Gabriel Luiz Freitas Almeida
e850c0cbc6 🔧 fix(api_key/crud.py): remove unused import statement for get_password_hash function
 feat(api_key/crud.py): prepend 'lf-' to generated API key for better identification and readability
 feat(api_key/crud.py): add check_key function to validate API key and update total uses and last used at timestamp
2023-08-26 17:39:22 -03:00
Gabriel Luiz Freitas Almeida
9c77cc1875 🔧 fix(endpoints.py): update import statement for get_current_active_user function to match the new location
🔧 fix(endpoints.py): update import statement for api_key_security function to match the new location
🔧 fix(endpoints.py): update dependencies argument in router.post calls to use a list instead of multiple lines for better readability
🔧 fix(endpoints.py): remove valid argument from process_flow function as it is no longer needed
🔧 fix(api_key.py): remove hashed_api_key field as it is no longer used
🔧 fix(api_key.py): add total_uses field to track the number of times the API key has been used
🔧 fix(api_key.py): add is_active field to track the status of the API key
2023-08-26 17:39:08 -03:00