zrb 1.2.1__tar.gz → 1.3.0__tar.gz
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.
- {zrb-1.2.1 → zrb-1.3.0}/PKG-INFO +85 -18
- zrb-1.3.0/README.md +139 -0
- {zrb-1.2.1 → zrb-1.3.0}/pyproject.toml +2 -2
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/llm/llm_chat.py +68 -9
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/llm/tool/api.py +4 -2
- zrb-1.3.0/src/zrb/builtin/llm/tool/file.py +39 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/llm/tool/rag.py +37 -22
- zrb-1.3.0/src/zrb/builtin/llm/tool/web.py +100 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +28 -6
- zrb-1.3.0/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/gateway/view/content/my-module/my-entity.html +325 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +3 -1
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +18 -1
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +4 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +20 -11
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +17 -2
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +4 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +19 -11
- zrb-1.3.0/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +340 -0
- zrb-1.3.0/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +362 -0
- zrb-1.3.0/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +377 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +68 -13
- zrb-1.3.0/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +115 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +3 -1
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +6 -5
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +9 -3
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/config.py +3 -1
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/content_transformer/content_transformer.py +7 -1
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/context/context.py +8 -2
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/input/any_input.py +5 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/input/base_input.py +6 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/input/bool_input.py +2 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/input/float_input.py +2 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/input/int_input.py +2 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/input/option_input.py +2 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/input/password_input.py +2 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/input/text_input.py +11 -5
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/cli.py +1 -1
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/common_util.py +3 -3
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/task_input_api_route.py +1 -1
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task/llm_task.py +103 -16
- zrb-1.2.1/README.md +0 -72
- zrb-1.2.1/src/zrb/builtin/llm/tool/web.py +0 -74
- zrb-1.2.1/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/gateway/view/content/my-module/my-entity.html +0 -297
- zrb-1.2.1/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -311
- zrb-1.2.1/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
- zrb-1.2.1/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
- zrb-1.2.1/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -94
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/__main__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/attr/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/attr/type.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/base64.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/git.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/git_subtree.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/group.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/llm/previous-session.js +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/llm/tool/cli.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/md5.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_db_repository.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_create_my_entity.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_delete_my_entity.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_read_my_entity.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_update_my_entity.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_api_client.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_client.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_client_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_direct_client.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/script.py.mako +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/create/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/create/project-template/README.md +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/project/create/project_task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/python.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/random.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/setup/common_input.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/setup/ubuntu.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/shell/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/builtin/todo.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/callback/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/callback/any_callback.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/callback/callback.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/cmd/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/cmd/cmd_result.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/cmd/cmd_val.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/content_transformer/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/content_transformer/any_content_transformer.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/context/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/context/any_context.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/context/any_shared_context.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/context/shared_context.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/dot_dict/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/dot_dict/dot_dict.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/env/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/env/any_env.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/env/env.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/env/env_file.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/env/env_map.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/group/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/group/any_group.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/group/group.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/input/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/input/str_input.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_app.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_config/config.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_config/config_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/docs_route.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/error_page/view.html +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/home_page/view.html +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/login_api_route.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/login_page/view.html +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/logout_api_route.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/logout_page/view.html +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/static/resources/common.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/static/resources/pico.min.css +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/static/static_route.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_schema/session.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_schema/token.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_schema/user.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_util/cookie.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_util/html.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_util/token.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/runner/web_util/user.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/session/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/session/any_session.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/session/session.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/session_state_log/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/session_state_log/session_state_log.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/session_state_logger/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task/any_task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task/base_task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task/base_trigger.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task/cmd_task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task/http_check.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task/make_task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task/rsync_task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task/scaffolder.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task/scheduler.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task/task.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task/tcp_check.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task_status/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/task_status/task_status.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/attr.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/cli/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/cli/style.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/cli/subcommand.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/cmd/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/cmd/command.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/cmd/remote.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/codemod/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/codemod/modification_mode.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/codemod/modify_class.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/codemod/modify_class_parent.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/codemod/modify_class_property.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/codemod/modify_dict.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/codemod/modify_function.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/codemod/modify_function_call.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/codemod/modify_method.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/codemod/modify_module.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/cron.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/file.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/git.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/git_subtree.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/group.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/load.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/run.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/string/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/string/conversion.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/string/format.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/string/name.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/util/todo.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/xcom/__init__.py +0 -0
- {zrb-1.2.1 → zrb-1.3.0}/src/zrb/xcom/xcom.py +0 -0
{zrb-1.2.1 → zrb-1.3.0}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: zrb
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.3.0
|
4
4
|
Summary: Your Automation Powerhouse
|
5
5
|
Home-page: https://github.com/state-alchemists/zrb
|
6
6
|
License: AGPL-3.0-or-later
|
@@ -24,7 +24,7 @@ Requires-Dist: isort (>=5.13.2,<5.14.0)
|
|
24
24
|
Requires-Dist: libcst (>=1.5.0,<2.0.0)
|
25
25
|
Requires-Dist: pdfplumber (>=0.11.4,<0.12.0) ; extra == "rag"
|
26
26
|
Requires-Dist: psutil (>=6.1.1,<7.0.0)
|
27
|
-
Requires-Dist: pydantic-ai (>=0.0.
|
27
|
+
Requires-Dist: pydantic-ai (>=0.0.31,<0.0.32)
|
28
28
|
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
29
29
|
Requires-Dist: python-jose[cryptography] (>=3.4.0,<4.0.0)
|
30
30
|
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
@@ -39,29 +39,96 @@ Description-Content-Type: text/markdown
|
|
39
39
|
|
40
40
|
# 🤖 Zrb: Your Automation Powerhouse
|
41
41
|
|
42
|
-
Zrb allows you to write your automation tasks in Python
|
42
|
+
Zrb allows you to write your automation tasks in Python. For example, you can define the following script in your home directory (`/home/<your-user-name>/zrb_init.py`).
|
43
43
|
|
44
44
|
|
45
45
|
```python
|
46
|
-
|
47
|
-
from zrb import cli,
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
)
|
46
|
+
import os
|
47
|
+
from zrb import cli, LLMTask, CmdTask, StrInput
|
48
|
+
from zrb.builtin.llm.tool.file import read_source_code, write_text_file
|
49
|
+
from pydantic_ai.models.openai import OpenAIModel
|
50
|
+
|
51
|
+
|
52
|
+
CURRENT_DIR = os.getcwd()
|
53
|
+
OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1"
|
54
|
+
OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY", "")
|
55
|
+
OPENROUTER_MODEL_NAME = os.getenv(
|
56
|
+
"AGENT_MODEL_NAME", "anthropic/claude-3.7-sonnet"
|
57
|
+
)
|
58
|
+
|
59
|
+
|
60
|
+
# Defining a LLM Task to create a Plantuml script based on source code in current directory.
|
61
|
+
# User can choose the diagram type. By default it is "state diagram"
|
62
|
+
make_uml = cli.add_task(
|
63
|
+
LLMTask(
|
64
|
+
name="make-uml",
|
65
|
+
description="Creating plantuml diagram based on source code in current directory",
|
66
|
+
input=StrInput(name="diagram", default="state diagram"),
|
67
|
+
model=OpenAIModel(
|
68
|
+
OPENROUTER_MODEL_NAME,
|
69
|
+
base_url=OPENROUTER_BASE_URL,
|
70
|
+
api_key=OPENROUTER_API_KEY,
|
71
|
+
),
|
72
|
+
message=(
|
73
|
+
f"Read source code in {CURRENT_DIR}, "
|
74
|
+
"make a {ctx.input.diagram} in plantuml format. "
|
75
|
+
f"Write the script into {CURRENT_DIR}/{{ctx.input.diagram}}.uml"
|
76
|
+
),
|
77
|
+
tools=[
|
78
|
+
read_source_code,
|
79
|
+
write_text_file,
|
80
|
+
],
|
81
|
+
)
|
82
|
+
)
|
83
|
+
|
84
|
+
# Defining a Cmd Task to transform Plantuml script into a png image.
|
85
|
+
make_png = cli.add_task(
|
86
|
+
CmdTask(
|
87
|
+
name="make-png",
|
88
|
+
description="Creating png based on source code in current directory",
|
89
|
+
input=StrInput(name="diagram", default="state diagram"),
|
90
|
+
cmd="plantuml -tpng '{ctx.input.diagram}.uml'",
|
91
|
+
cwd=CURRENT_DIR,
|
92
|
+
)
|
93
|
+
)
|
94
|
+
|
95
|
+
# Making sure that make_png has make_uml as its dependency.
|
96
|
+
make_uml >> make_png
|
58
97
|
```
|
59
98
|
|
60
|
-
Once defined,
|
99
|
+
Once defined, your automation tasks are immediately accessible from the CLI. You can then invoke the tasks by invoking.
|
61
100
|
|
62
|
-
|
101
|
+
```bash
|
102
|
+
zrb make-png --diagram "state diagram"
|
103
|
+
```
|
104
|
+
|
105
|
+
Or you can invoke the tasks without parameter.
|
106
|
+
|
107
|
+
```bash
|
108
|
+
zrb make-png
|
109
|
+
```
|
110
|
+
|
111
|
+
At this point, Zrb will politely ask you to provide the diagram type.
|
112
|
+
|
113
|
+
```
|
114
|
+
diagram [state diagram]:
|
115
|
+
```
|
116
|
+
|
117
|
+
You can just press enter if you want to use the default value.
|
118
|
+
|
119
|
+
Finally, you can run Zrb as a server and make your tasks available for non technical users by invoking the following command.
|
120
|
+
|
121
|
+
```bash
|
122
|
+
zrb server start
|
123
|
+
```
|
124
|
+
|
125
|
+
You will have a nice web interface running on `http://localhost:12123`
|
126
|
+
|
127
|
+

|
128
|
+
|
129
|
+
Now, let's see how Zrb generate the state diagram. Based on the source code in your current directory, Zrb will generate a `state diagram.uml` and transform it into `state diagram.png`.
|
63
130
|
|
64
|
-
|
131
|
+

|
65
132
|
|
66
133
|
See the [getting started guide](https://github.com/state-alchemists/zrb/blob/main/docs/recipes/getting-started/README.md) for more information. Or just watch the demo:
|
67
134
|
|
zrb-1.3.0/README.md
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+

|
2
|
+
|
3
|
+
[Documentation](https://github.com/state-alchemists/zrb/blob/main/docs/README.md)
|
4
|
+
|
5
|
+
# 🤖 Zrb: Your Automation Powerhouse
|
6
|
+
|
7
|
+
Zrb allows you to write your automation tasks in Python. For example, you can define the following script in your home directory (`/home/<your-user-name>/zrb_init.py`).
|
8
|
+
|
9
|
+
|
10
|
+
```python
|
11
|
+
import os
|
12
|
+
from zrb import cli, LLMTask, CmdTask, StrInput
|
13
|
+
from zrb.builtin.llm.tool.file import read_source_code, write_text_file
|
14
|
+
from pydantic_ai.models.openai import OpenAIModel
|
15
|
+
|
16
|
+
|
17
|
+
CURRENT_DIR = os.getcwd()
|
18
|
+
OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1"
|
19
|
+
OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY", "")
|
20
|
+
OPENROUTER_MODEL_NAME = os.getenv(
|
21
|
+
"AGENT_MODEL_NAME", "anthropic/claude-3.7-sonnet"
|
22
|
+
)
|
23
|
+
|
24
|
+
|
25
|
+
# Defining a LLM Task to create a Plantuml script based on source code in current directory.
|
26
|
+
# User can choose the diagram type. By default it is "state diagram"
|
27
|
+
make_uml = cli.add_task(
|
28
|
+
LLMTask(
|
29
|
+
name="make-uml",
|
30
|
+
description="Creating plantuml diagram based on source code in current directory",
|
31
|
+
input=StrInput(name="diagram", default="state diagram"),
|
32
|
+
model=OpenAIModel(
|
33
|
+
OPENROUTER_MODEL_NAME,
|
34
|
+
base_url=OPENROUTER_BASE_URL,
|
35
|
+
api_key=OPENROUTER_API_KEY,
|
36
|
+
),
|
37
|
+
message=(
|
38
|
+
f"Read source code in {CURRENT_DIR}, "
|
39
|
+
"make a {ctx.input.diagram} in plantuml format. "
|
40
|
+
f"Write the script into {CURRENT_DIR}/{{ctx.input.diagram}}.uml"
|
41
|
+
),
|
42
|
+
tools=[
|
43
|
+
read_source_code,
|
44
|
+
write_text_file,
|
45
|
+
],
|
46
|
+
)
|
47
|
+
)
|
48
|
+
|
49
|
+
# Defining a Cmd Task to transform Plantuml script into a png image.
|
50
|
+
make_png = cli.add_task(
|
51
|
+
CmdTask(
|
52
|
+
name="make-png",
|
53
|
+
description="Creating png based on source code in current directory",
|
54
|
+
input=StrInput(name="diagram", default="state diagram"),
|
55
|
+
cmd="plantuml -tpng '{ctx.input.diagram}.uml'",
|
56
|
+
cwd=CURRENT_DIR,
|
57
|
+
)
|
58
|
+
)
|
59
|
+
|
60
|
+
# Making sure that make_png has make_uml as its dependency.
|
61
|
+
make_uml >> make_png
|
62
|
+
```
|
63
|
+
|
64
|
+
Once defined, your automation tasks are immediately accessible from the CLI. You can then invoke the tasks by invoking.
|
65
|
+
|
66
|
+
```bash
|
67
|
+
zrb make-png --diagram "state diagram"
|
68
|
+
```
|
69
|
+
|
70
|
+
Or you can invoke the tasks without parameter.
|
71
|
+
|
72
|
+
```bash
|
73
|
+
zrb make-png
|
74
|
+
```
|
75
|
+
|
76
|
+
At this point, Zrb will politely ask you to provide the diagram type.
|
77
|
+
|
78
|
+
```
|
79
|
+
diagram [state diagram]:
|
80
|
+
```
|
81
|
+
|
82
|
+
You can just press enter if you want to use the default value.
|
83
|
+
|
84
|
+
Finally, you can run Zrb as a server and make your tasks available for non technical users by invoking the following command.
|
85
|
+
|
86
|
+
```bash
|
87
|
+
zrb server start
|
88
|
+
```
|
89
|
+
|
90
|
+
You will have a nice web interface running on `http://localhost:12123`
|
91
|
+
|
92
|
+

|
93
|
+
|
94
|
+
Now, let's see how Zrb generate the state diagram. Based on the source code in your current directory, Zrb will generate a `state diagram.uml` and transform it into `state diagram.png`.
|
95
|
+
|
96
|
+

|
97
|
+
|
98
|
+
See the [getting started guide](https://github.com/state-alchemists/zrb/blob/main/docs/recipes/getting-started/README.md) for more information. Or just watch the demo:
|
99
|
+
|
100
|
+
[](https://www.youtube.com/watch?v=W7dgk96l__o)
|
101
|
+
|
102
|
+
|
103
|
+
# 🫰 Installing Zrb
|
104
|
+
|
105
|
+
You can install Zrb as a pip package by invoking the following command:
|
106
|
+
|
107
|
+
```bash
|
108
|
+
pip install --pre zrb
|
109
|
+
```
|
110
|
+
|
111
|
+
Alternatively, you can also use our installation script to install Zrb along with some prerequisites:
|
112
|
+
|
113
|
+
```bash
|
114
|
+
bash -c "$(curl -fsSL https://raw.githubusercontent.com/state-alchemists/zrb/main/install.sh)"
|
115
|
+
```
|
116
|
+
|
117
|
+
# 🐞 Bug Report + Feature Request
|
118
|
+
|
119
|
+
You can submit bug reports and feature requests by creating a new [issue](https://github.com/state-alchemists/zrb/issues) on Zrb's GitHub Repositories. When reporting a bug or requesting a feature, please be sure to:
|
120
|
+
|
121
|
+
- Include the version of Zrb you are using (i.e., `zrb version`)
|
122
|
+
- Tell us what you have tried
|
123
|
+
- Tell us what you expect
|
124
|
+
- Tell us what you get
|
125
|
+
|
126
|
+
We will also welcome your [pull requests and contributions](https://github.com/state-alchemists/zrb/pulls).
|
127
|
+
|
128
|
+
|
129
|
+
# ☕ Donation
|
130
|
+
|
131
|
+
Help Red Skull to click the donation button:
|
132
|
+
|
133
|
+
[](https://stalchmst.com/donation)
|
134
|
+
|
135
|
+
# 🎉 Fun Fact
|
136
|
+
|
137
|
+
> Madou Ring Zaruba (魔導輪ザルバ, Madōrin Zaruba) is a Madougu which supports bearers of the Garo Armor. [(Garo Wiki | Fandom)](https://garo.fandom.com/wiki/Zaruba)
|
138
|
+
|
139
|
+

|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "zrb"
|
3
|
-
version = "1.
|
3
|
+
version = "1.3.0"
|
4
4
|
description = "Your Automation Powerhouse"
|
5
5
|
authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
|
6
6
|
license = "AGPL-3.0-or-later"
|
@@ -50,7 +50,7 @@ beautifulsoup4 = "^4.12.3"
|
|
50
50
|
fastapi = {extras = ["standard"], version = "^0.115.6"}
|
51
51
|
python-jose = {extras = ["cryptography"], version = "^3.4.0"}
|
52
52
|
ulid-py = "^1.1.0"
|
53
|
-
pydantic-ai = "^0.0.
|
53
|
+
pydantic-ai = "^0.0.31"
|
54
54
|
fastembed = "^0.5.1"
|
55
55
|
psutil = "^6.1.1"
|
56
56
|
|
@@ -2,22 +2,40 @@ import json
|
|
2
2
|
import os
|
3
3
|
from typing import Any
|
4
4
|
|
5
|
+
from pydantic_ai.models import Model
|
6
|
+
|
5
7
|
from zrb.builtin.group import llm_group
|
6
8
|
from zrb.builtin.llm.tool.api import get_current_location, get_current_weather
|
7
9
|
from zrb.builtin.llm.tool.cli import run_shell_command
|
8
|
-
from zrb.builtin.llm.tool.
|
10
|
+
from zrb.builtin.llm.tool.file import (
|
11
|
+
list_file,
|
12
|
+
read_source_code,
|
13
|
+
read_text_file,
|
14
|
+
write_text_file,
|
15
|
+
)
|
16
|
+
from zrb.builtin.llm.tool.web import (
|
17
|
+
create_search_internet_tool,
|
18
|
+
open_web_page,
|
19
|
+
search_arxiv,
|
20
|
+
search_wikipedia,
|
21
|
+
)
|
9
22
|
from zrb.config import (
|
10
23
|
LLM_ALLOW_ACCESS_INTERNET,
|
24
|
+
LLM_ALLOW_ACCESS_LOCAL_FILE,
|
11
25
|
LLM_ALLOW_ACCESS_SHELL,
|
12
26
|
LLM_HISTORY_DIR,
|
13
27
|
LLM_MODEL,
|
14
28
|
LLM_SYSTEM_PROMPT,
|
29
|
+
SERP_API_KEY,
|
15
30
|
)
|
31
|
+
from zrb.context.any_context import AnyContext
|
16
32
|
from zrb.context.any_shared_context import AnySharedContext
|
33
|
+
from zrb.input.any_input import AnyInput
|
17
34
|
from zrb.input.bool_input import BoolInput
|
18
35
|
from zrb.input.str_input import StrInput
|
19
36
|
from zrb.input.text_input import TextInput
|
20
37
|
from zrb.task.llm_task import LLMTask
|
38
|
+
from zrb.util.attr import get_attr
|
21
39
|
from zrb.util.file import read_file, write_file
|
22
40
|
from zrb.util.string.conversion import to_pascal_case
|
23
41
|
|
@@ -72,23 +90,53 @@ def _write_chat_conversation(
|
|
72
90
|
write_file(last_session_file_path, current_session_name)
|
73
91
|
|
74
92
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
93
|
+
class _LLMChat(LLMTask):
|
94
|
+
|
95
|
+
_default_model: Model | str | None = None
|
96
|
+
|
97
|
+
def set_default_model(self, model: Model | str):
|
98
|
+
self._default_model = model
|
99
|
+
|
100
|
+
@property
|
101
|
+
def inputs(self) -> list[AnyInput]:
|
102
|
+
task_inputs = super().inputs
|
103
|
+
model_input_default = LLM_MODEL if self._default_model is None else "default"
|
104
|
+
return [
|
79
105
|
StrInput(
|
80
106
|
"model",
|
81
107
|
description="LLM Model",
|
82
108
|
prompt="LLM Model",
|
83
|
-
default=
|
109
|
+
default=model_input_default,
|
84
110
|
allow_positional_parsing=False,
|
111
|
+
always_prompt=False,
|
85
112
|
),
|
113
|
+
*task_inputs,
|
114
|
+
]
|
115
|
+
|
116
|
+
def _get_model(self, ctx: AnyContext) -> str | Model | None:
|
117
|
+
if ctx.input.model == "default":
|
118
|
+
if self._default_model is not None:
|
119
|
+
return self._default_model
|
120
|
+
return super()._get_model(ctx)
|
121
|
+
model = get_attr(
|
122
|
+
ctx, ctx.input.model, "ollama_chat/llama3.1", auto_render=self._render_model
|
123
|
+
)
|
124
|
+
if isinstance(model, (Model, str)) or model is None:
|
125
|
+
return model
|
126
|
+
raise ValueError("Invalid model")
|
127
|
+
|
128
|
+
|
129
|
+
llm_chat: LLMTask = llm_group.add_task(
|
130
|
+
_LLMChat(
|
131
|
+
name="llm-chat",
|
132
|
+
input=[
|
86
133
|
TextInput(
|
87
134
|
"system-prompt",
|
88
135
|
description="System prompt",
|
89
136
|
prompt="System prompt",
|
90
137
|
default=LLM_SYSTEM_PROMPT,
|
91
138
|
allow_positional_parsing=False,
|
139
|
+
always_prompt=False,
|
92
140
|
),
|
93
141
|
BoolInput(
|
94
142
|
"start-new",
|
@@ -96,6 +144,7 @@ llm_chat: LLMTask = llm_group.add_task(
|
|
96
144
|
prompt="Start new conversation (LLM will forget everything)",
|
97
145
|
default=False,
|
98
146
|
allow_positional_parsing=False,
|
147
|
+
always_prompt=False,
|
99
148
|
),
|
100
149
|
TextInput("message", description="User message", prompt="Your message"),
|
101
150
|
PreviousSessionInput(
|
@@ -104,12 +153,12 @@ llm_chat: LLMTask = llm_group.add_task(
|
|
104
153
|
prompt="Previous conversation session (can be empty)",
|
105
154
|
allow_positional_parsing=False,
|
106
155
|
allow_empty=True,
|
156
|
+
always_prompt=False,
|
107
157
|
),
|
108
158
|
],
|
109
159
|
conversation_history_reader=_read_chat_conversation,
|
110
160
|
conversation_history_writer=_write_chat_conversation,
|
111
161
|
description="Chat with LLM",
|
112
|
-
model="{ctx.input.model}",
|
113
162
|
system_prompt="{ctx.input['system-prompt']}",
|
114
163
|
message="{ctx.input.message}",
|
115
164
|
retries=0,
|
@@ -117,11 +166,21 @@ llm_chat: LLMTask = llm_group.add_task(
|
|
117
166
|
alias="chat",
|
118
167
|
)
|
119
168
|
|
169
|
+
|
170
|
+
if LLM_ALLOW_ACCESS_LOCAL_FILE:
|
171
|
+
llm_chat.add_tool(read_source_code)
|
172
|
+
llm_chat.add_tool(list_file)
|
173
|
+
llm_chat.add_tool(read_text_file)
|
174
|
+
llm_chat.add_tool(write_text_file)
|
175
|
+
|
120
176
|
if LLM_ALLOW_ACCESS_SHELL:
|
121
177
|
llm_chat.add_tool(run_shell_command)
|
122
178
|
|
123
179
|
if LLM_ALLOW_ACCESS_INTERNET:
|
124
|
-
llm_chat.add_tool(
|
125
|
-
llm_chat.add_tool(
|
180
|
+
llm_chat.add_tool(open_web_page)
|
181
|
+
llm_chat.add_tool(search_wikipedia)
|
182
|
+
llm_chat.add_tool(search_arxiv)
|
183
|
+
if SERP_API_KEY != "":
|
184
|
+
llm_chat.add_tool(create_search_internet_tool(SERP_API_KEY))
|
126
185
|
llm_chat.add_tool(get_current_location)
|
127
186
|
llm_chat.add_tool(get_current_weather)
|
@@ -1,13 +1,13 @@
|
|
1
1
|
import json
|
2
2
|
from typing import Annotated, Literal
|
3
3
|
|
4
|
-
import requests
|
5
|
-
|
6
4
|
|
7
5
|
def get_current_location() -> (
|
8
6
|
Annotated[str, "JSON string representing latitude and longitude"]
|
9
7
|
): # noqa
|
10
8
|
"""Get the user's current location."""
|
9
|
+
import requests
|
10
|
+
|
11
11
|
return json.dumps(requests.get("http://ip-api.com/json?fields=lat,lon").json())
|
12
12
|
|
13
13
|
|
@@ -17,6 +17,8 @@ def get_current_weather(
|
|
17
17
|
temperature_unit: Literal["celsius", "fahrenheit"],
|
18
18
|
) -> str:
|
19
19
|
"""Get the current weather in a given location."""
|
20
|
+
import requests
|
21
|
+
|
20
22
|
resp = requests.get(
|
21
23
|
"https://api.open-meteo.com/v1/forecast",
|
22
24
|
params={
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import os
|
2
|
+
|
3
|
+
from zrb.util.file import read_file, write_file
|
4
|
+
|
5
|
+
|
6
|
+
def list_file(
|
7
|
+
directory: str = ".",
|
8
|
+
extensions: list[str] = [".py", ".go", ".js", ".ts", ".java", ".c", ".cpp"],
|
9
|
+
) -> list[str]:
|
10
|
+
"""List all files in a directory"""
|
11
|
+
all_files: list[str] = []
|
12
|
+
for root, _, files in os.walk(directory):
|
13
|
+
for filename in files:
|
14
|
+
for extension in extensions:
|
15
|
+
if filename.lower().endswith(extension):
|
16
|
+
all_files.append(os.path.join(root, filename))
|
17
|
+
return all_files
|
18
|
+
|
19
|
+
|
20
|
+
def read_text_file(file: str) -> str:
|
21
|
+
"""Read a text file"""
|
22
|
+
return read_file(os.path.abspath(file))
|
23
|
+
|
24
|
+
|
25
|
+
def write_text_file(file: str, content: str):
|
26
|
+
"""Write a text file"""
|
27
|
+
return write_file(os.path.abspath(file), content)
|
28
|
+
|
29
|
+
|
30
|
+
def read_source_code(
|
31
|
+
directory: str = ".",
|
32
|
+
extensions: list[str] = [".py", ".go", ".js", ".ts", ".java", ".c", ".cpp"],
|
33
|
+
) -> list[str]:
|
34
|
+
"""Read source code in a directory"""
|
35
|
+
files = list_file(directory, extensions)
|
36
|
+
for index, file in enumerate(files):
|
37
|
+
content = read_text_file(file)
|
38
|
+
files[index] = f"# {file}\n```\n{content}\n```"
|
39
|
+
return files
|
@@ -1,7 +1,9 @@
|
|
1
|
+
import fnmatch
|
1
2
|
import hashlib
|
2
3
|
import json
|
3
4
|
import os
|
4
5
|
import sys
|
6
|
+
from collections.abc import Callable
|
5
7
|
|
6
8
|
import ulid
|
7
9
|
|
@@ -15,6 +17,20 @@ from zrb.util.cli.style import stylize_error, stylize_faint
|
|
15
17
|
from zrb.util.file import read_file
|
16
18
|
|
17
19
|
|
20
|
+
class RAGFileReader:
|
21
|
+
def __init__(self, glob_pattern: str, read: Callable[[str], str]):
|
22
|
+
self.glob_pattern = glob_pattern
|
23
|
+
self.read = read
|
24
|
+
|
25
|
+
def is_match(self, file_name: str):
|
26
|
+
if os.sep not in self.glob_pattern and (
|
27
|
+
os.altsep is None or os.altsep not in self.glob_pattern
|
28
|
+
):
|
29
|
+
# Pattern like "*.txt" – match only the basename.
|
30
|
+
return fnmatch.fnmatch(os.path.basename(file_name), self.glob_pattern)
|
31
|
+
return fnmatch.fnmatch(file_name, self.glob_pattern)
|
32
|
+
|
33
|
+
|
18
34
|
def create_rag_from_directory(
|
19
35
|
tool_name: str,
|
20
36
|
tool_description: str,
|
@@ -25,6 +41,7 @@ def create_rag_from_directory(
|
|
25
41
|
chunk_size: int = RAG_CHUNK_SIZE,
|
26
42
|
overlap: int = RAG_OVERLAP,
|
27
43
|
max_result_count: int = RAG_MAX_RESULT_COUNT,
|
44
|
+
file_reader: list[RAGFileReader] = [],
|
28
45
|
):
|
29
46
|
async def retrieve(query: str) -> str:
|
30
47
|
from chromadb import PersistentClient
|
@@ -36,35 +53,31 @@ def create_rag_from_directory(
|
|
36
53
|
path=vector_db_path, settings=Settings(allow_reset=True)
|
37
54
|
)
|
38
55
|
collection = client.get_or_create_collection(vector_db_collection)
|
39
|
-
|
40
56
|
# Track file changes using a hash-based approach
|
41
57
|
hash_file_path = os.path.join(vector_db_path, "file_hashes.json")
|
42
58
|
previous_hashes = _load_hashes(hash_file_path)
|
43
59
|
current_hashes = {}
|
44
|
-
|
60
|
+
# Get updated_files
|
45
61
|
updated_files = []
|
46
|
-
|
47
62
|
for root, _, files in os.walk(document_dir_path):
|
48
63
|
for file in files:
|
49
64
|
file_path = os.path.join(root, file)
|
50
65
|
file_hash = _compute_file_hash(file_path)
|
51
66
|
relative_path = os.path.relpath(file_path, document_dir_path)
|
52
67
|
current_hashes[relative_path] = file_hash
|
53
|
-
|
54
68
|
if previous_hashes.get(relative_path) != file_hash:
|
55
69
|
updated_files.append(file_path)
|
56
|
-
|
70
|
+
# Upsert updated_files to vector db
|
57
71
|
if updated_files:
|
58
72
|
print(
|
59
73
|
stylize_faint(f"Updating {len(updated_files)} changed files"),
|
60
74
|
file=sys.stderr,
|
61
75
|
)
|
62
|
-
|
63
76
|
for file_path in updated_files:
|
64
77
|
try:
|
65
78
|
relative_path = os.path.relpath(file_path, document_dir_path)
|
66
79
|
collection.delete(where={"file_path": relative_path})
|
67
|
-
content =
|
80
|
+
content = _read_txt_content(file_path, file_reader)
|
68
81
|
file_id = ulid.new().str
|
69
82
|
for i in range(0, len(content), chunk_size - overlap):
|
70
83
|
chunk = content[i : i + chunk_size]
|
@@ -92,14 +105,13 @@ def create_rag_from_directory(
|
|
92
105
|
stylize_error(f"Error processing {file_path}: {e}"),
|
93
106
|
file=sys.stderr,
|
94
107
|
)
|
95
|
-
|
96
108
|
_save_hashes(hash_file_path, current_hashes)
|
97
109
|
else:
|
98
110
|
print(
|
99
111
|
stylize_faint("No changes detected. Skipping database update."),
|
100
112
|
file=sys.stderr,
|
101
113
|
)
|
102
|
-
|
114
|
+
# Vectorize query and get related document chunks
|
103
115
|
print(stylize_faint("Vectorizing query"), file=sys.stderr)
|
104
116
|
embedding_result = list(embedding_model.embed([query]))
|
105
117
|
query_vector = embedding_result[0]
|
@@ -123,7 +135,22 @@ def _compute_file_hash(file_path: str) -> str:
|
|
123
135
|
return hash_md5.hexdigest()
|
124
136
|
|
125
137
|
|
126
|
-
def
|
138
|
+
def _load_hashes(file_path: str) -> dict:
|
139
|
+
if os.path.exists(file_path):
|
140
|
+
with open(file_path, "r") as f:
|
141
|
+
return json.load(f)
|
142
|
+
return {}
|
143
|
+
|
144
|
+
|
145
|
+
def _save_hashes(file_path: str, hashes: dict):
|
146
|
+
with open(file_path, "w") as f:
|
147
|
+
json.dump(hashes, f)
|
148
|
+
|
149
|
+
|
150
|
+
def _read_txt_content(file_path: str, file_reader: list[RAGFileReader]):
|
151
|
+
for reader in file_reader:
|
152
|
+
if reader.is_match(file_path):
|
153
|
+
return reader.read(file_path)
|
127
154
|
if file_path.lower().endswith(".pdf"):
|
128
155
|
return _read_pdf(file_path)
|
129
156
|
return read_file(file_path)
|
@@ -136,15 +163,3 @@ def _read_pdf(file_path: str) -> str:
|
|
136
163
|
return "\n".join(
|
137
164
|
page.extract_text() for page in pdf.pages if page.extract_text()
|
138
165
|
)
|
139
|
-
|
140
|
-
|
141
|
-
def _load_hashes(file_path: str) -> dict:
|
142
|
-
if os.path.exists(file_path):
|
143
|
-
with open(file_path, "r") as f:
|
144
|
-
return json.load(f)
|
145
|
-
return {}
|
146
|
-
|
147
|
-
|
148
|
-
def _save_hashes(file_path: str, hashes: dict):
|
149
|
-
with open(file_path, "w") as f:
|
150
|
-
json.dump(hashes, f)
|