zrb 1.4.2__tar.gz → 1.4.3__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.4.2 → zrb-1.4.3}/PKG-INFO +64 -40
- {zrb-1.4.2 → zrb-1.4.3}/README.md +57 -37
- {zrb-1.4.2 → zrb-1.4.3}/pyproject.toml +6 -2
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/llm/tool/api.py +1 -1
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/llm/tool/file.py +2 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/llm/tool/rag.py +28 -10
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/llm/tool/web.py +55 -15
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/config.py +4 -4
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/llm_config.py +12 -5
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task/llm_task.py +29 -14
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/__main__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/attr/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/attr/type.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/base64.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/git.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/git_subtree.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/group.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/llm/llm_chat.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/llm/previous-session.js +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/llm/tool/cli.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/md5.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/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 -0
- {zrb-1.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/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.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/create/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/create/project-template/README.md +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/project/create/project_task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/python.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/random.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/setup/common_input.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/setup/ubuntu.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/shell/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/builtin/todo.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/callback/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/callback/any_callback.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/callback/callback.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/cmd/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/cmd/cmd_result.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/cmd/cmd_val.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/content_transformer/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/content_transformer/any_content_transformer.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/content_transformer/content_transformer.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/context/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/context/any_context.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/context/any_shared_context.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/context/context.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/context/shared_context.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/dot_dict/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/dot_dict/dot_dict.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/env/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/env/any_env.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/env/env.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/env/env_file.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/env/env_map.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/group/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/group/any_group.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/group/group.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/input/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/input/any_input.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/input/base_input.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/input/bool_input.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/input/float_input.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/input/int_input.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/input/option_input.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/input/password_input.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/input/str_input.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/input/text_input.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/cli.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/common_util.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_app.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_config/config.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_config/config_factory.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/docs_route.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/error_page/view.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/home_page/view.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/login_api_route.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/login_page/view.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/logout_api_route.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/logout_page/view.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/common.css +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/pico.min.css +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/static/static_route.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_schema/session.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_schema/token.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_schema/user.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_util/cookie.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_util/html.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_util/token.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/runner/web_util/user.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/session/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/session/any_session.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/session/session.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/session_state_log/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/session_state_log/session_state_log.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/session_state_logger/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task/any_task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task/base_task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task/base_trigger.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task/cmd_task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task/http_check.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task/make_task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task/rsync_task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task/scaffolder.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task/scheduler.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task/task.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task/tcp_check.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task_status/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/task_status/task_status.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/attr.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/cli/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/cli/style.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/cli/subcommand.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/cmd/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/cmd/command.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/cmd/remote.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/codemod/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/codemod/modification_mode.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/codemod/modify_class.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/codemod/modify_class_parent.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/codemod/modify_class_property.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/codemod/modify_dict.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/codemod/modify_function.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/codemod/modify_function_call.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/codemod/modify_method.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/codemod/modify_module.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/cron.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/file.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/git.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/git_subtree.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/group.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/load.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/run.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/string/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/string/conversion.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/string/format.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/string/name.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/util/todo.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/xcom/__init__.py +0 -0
- {zrb-1.4.2 → zrb-1.4.3}/src/zrb/xcom/xcom.py +0 -0
{zrb-1.4.2 → zrb-1.4.3}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: zrb
|
3
|
-
Version: 1.4.
|
3
|
+
Version: 1.4.3
|
4
4
|
Summary: Your Automation Powerhouse
|
5
5
|
Home-page: https://github.com/state-alchemists/zrb
|
6
6
|
License: AGPL-3.0-or-later
|
@@ -13,16 +13,20 @@ Classifier: Programming Language :: Python :: 3
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.10
|
14
14
|
Classifier: Programming Language :: Python :: 3.11
|
15
15
|
Classifier: Programming Language :: Python :: 3.12
|
16
|
+
Provides-Extra: all
|
17
|
+
Provides-Extra: playwright
|
16
18
|
Provides-Extra: rag
|
17
19
|
Requires-Dist: autopep8 (>=2.0.4,<3.0.0)
|
18
20
|
Requires-Dist: beautifulsoup4 (>=4.12.3,<5.0.0)
|
19
21
|
Requires-Dist: black (>=24.10.0,<24.11.0)
|
20
|
-
Requires-Dist: chromadb (>=0.5.20,<0.6.0) ; extra == "rag"
|
22
|
+
Requires-Dist: chromadb (>=0.5.20,<0.6.0) ; extra == "rag" or extra == "all"
|
21
23
|
Requires-Dist: fastapi[standard] (>=0.115.6,<0.116.0)
|
22
24
|
Requires-Dist: fastembed (>=0.5.1,<0.6.0)
|
23
25
|
Requires-Dist: isort (>=5.13.2,<5.14.0)
|
24
26
|
Requires-Dist: libcst (>=1.5.0,<2.0.0)
|
25
|
-
Requires-Dist:
|
27
|
+
Requires-Dist: openai (>=1.10.0,<2.0.0) ; extra == "rag" or extra == "all"
|
28
|
+
Requires-Dist: pdfplumber (>=0.11.4,<0.12.0) ; extra == "rag" or extra == "all"
|
29
|
+
Requires-Dist: playwright (>=1.43.0,<2.0.0) ; extra == "playwright" or extra == "all"
|
26
30
|
Requires-Dist: psutil (>=6.1.1,<7.0.0)
|
27
31
|
Requires-Dist: pydantic-ai (>=0.0.42,<0.0.43)
|
28
32
|
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
@@ -79,40 +83,48 @@ bash -c "$(curl -fsSL https://raw.githubusercontent.com/state-alchemists/zrb/mai
|
|
79
83
|
|
80
84
|
```
|
81
85
|
|
82
|
-
# 🍲 Quick Start
|
86
|
+
# 🍲 Quick Start: Build Your First Automation Workflow
|
83
87
|
|
84
|
-
|
88
|
+
Zrb empowers you to create custom automation tasks using Python. This guide shows you how to define two simple tasks: one to generate a PlantUML script from your source code and another to convert that script into a PNG image.
|
85
89
|
|
90
|
+
## 1. Create Your Task Definition File
|
91
|
+
|
92
|
+
Place a file named `zrb_init.py` in a directory that's accessible from your projects. Zrb will automatically search for this file by starting in your current directory and then moving upward (i.e., checking parent directories) until it finds one. This means if you place your `zrb_init.py` in your home directory (e.g., `/home/<your-user-name>/zrb_init.py`), the tasks defined there will be available for any project.
|
93
|
+
|
94
|
+
Add the following content to your zrb_init.py:
|
86
95
|
|
87
96
|
```python
|
88
97
|
import os
|
89
|
-
from zrb import cli,
|
90
|
-
from zrb.builtin.llm.tool.file import
|
98
|
+
from zrb import cli, LLMTask, CmdTask, StrInput, Group
|
99
|
+
from zrb.builtin.llm.tool.file import (
|
100
|
+
read_text_file, list_files, write_text_file
|
101
|
+
)
|
91
102
|
|
92
103
|
CURRENT_DIR = os.getcwd()
|
93
104
|
|
94
|
-
#
|
105
|
+
# Create a group for UML-related tasks
|
95
106
|
uml_group = cli.add_group(Group(name="uml", description="UML related tasks"))
|
96
107
|
|
97
|
-
# Generate
|
108
|
+
# Task 1: Generate a PlantUML script from your source code
|
98
109
|
make_uml_script = uml_group.add_task(
|
99
110
|
LLMTask(
|
100
111
|
name="make-script",
|
101
112
|
description="Creating plantuml diagram based on source code in current directory",
|
102
113
|
input=StrInput(name="diagram", default="state diagram"),
|
103
114
|
message=(
|
104
|
-
f"Read
|
115
|
+
f"Read all necessary files in {CURRENT_DIR}, "
|
105
116
|
"make a {ctx.input.diagram} in plantuml format. "
|
106
117
|
f"Write the script into {CURRENT_DIR}/{{ctx.input.diagram}}.uml"
|
107
118
|
),
|
108
119
|
tools=[
|
109
|
-
|
120
|
+
list_files,
|
121
|
+
read_text_file,
|
110
122
|
write_text_file,
|
111
123
|
],
|
112
124
|
)
|
113
125
|
)
|
114
126
|
|
115
|
-
#
|
127
|
+
# Task 2: Convert the PlantUML script into a PNG image
|
116
128
|
make_uml_image = uml_group.add_task(
|
117
129
|
CmdTask(
|
118
130
|
name="make-image",
|
@@ -123,63 +135,75 @@ make_uml_image = uml_group.add_task(
|
|
123
135
|
)
|
124
136
|
)
|
125
137
|
|
126
|
-
#
|
138
|
+
# Set up the dependency: the image task runs after the script is created
|
127
139
|
make_uml_script >> make_uml_image
|
128
140
|
```
|
129
141
|
|
130
|
-
|
142
|
+
**What This Does**
|
131
143
|
|
132
|
-
|
144
|
+
- **Task 1 – make-script**:
|
133
145
|
|
134
|
-
|
146
|
+
Uses an LLM to read all files in your current directory and generate a PlantUML script (e.g., `state diagram.uml`).
|
135
147
|
|
136
|
-
|
148
|
+
- **Task 2 – make-image**:
|
137
149
|
|
138
|
-
|
150
|
+
Executes a command that converts the PlantUML script into a PNG image (e.g., `state diagram.png`). This task will run only after the script has been generated.
|
139
151
|
|
140
|
-
Now, go to your project and create a state diagram:
|
141
152
|
|
142
|
-
|
143
|
-
git clone git@github.com:jjinux/gotetris.git
|
144
|
-
cd gotetris
|
145
|
-
zrb uml make-image --diagram "state diagram"
|
146
|
-
```
|
153
|
+
## 2. Run Your Tasks
|
147
154
|
|
148
|
-
|
155
|
+
After setting up your tasks, you can execute them from any project. For example:
|
149
156
|
|
150
|
-
|
151
|
-
zrb uml make-image
|
152
|
-
```
|
157
|
+
- Clone/Create a Project:
|
153
158
|
|
154
|
-
|
159
|
+
```bash
|
160
|
+
git clone git@github.com:jjinux/gotetris.git
|
161
|
+
cd gotetris
|
162
|
+
```
|
155
163
|
|
156
|
-
|
157
|
-
|
158
|
-
```
|
164
|
+
- Create a state diagram:
|
165
|
+
|
166
|
+
```bash
|
167
|
+
zrb uml make-image --diagram "state diagram"
|
168
|
+
```
|
169
|
+
|
170
|
+
- Or use the interactive mode:
|
159
171
|
|
160
|
-
|
172
|
+
```bash
|
173
|
+
zrb uml make-image
|
174
|
+
```
|
161
175
|
|
162
|
-
|
176
|
+
Zrb will prompt:
|
177
|
+
|
178
|
+
```bash
|
179
|
+
diagram [state diagram]:
|
180
|
+
```
|
181
|
+
|
182
|
+
Press **Enter** to use the default value
|
183
|
+
|
184
|
+

|
185
|
+
|
186
|
+
|
187
|
+
## 3. Try Out the Web UI
|
188
|
+
|
189
|
+
You can also serve your tasks through a user-friendly web interface:
|
163
190
|
|
164
191
|
```bash
|
165
192
|
zrb server start
|
166
193
|
```
|
167
194
|
|
168
|
-
|
195
|
+
Then open your browser and visit `http://localhost:21213`
|
169
196
|
|
170
197
|

|
171
198
|
|
172
|
-
Now, let's see how things work in detail. First, Zrb generates a `state diagram.uml` in your current directory, it then transform the UML script into a PNG image `state diagram.png`.
|
173
|
-
|
174
|
-

|
175
|
-
|
176
199
|
|
177
200
|
# 🎥 Demo & Documentation
|
178
201
|
|
179
202
|
- **Step by step guide:** [Getting started with Zrb](https://github.com/state-alchemists/zrb/blob/main/docs/recipes/getting-started/README.md).
|
180
203
|
- **Full documentation:** [Zrb Documentation](https://github.com/state-alchemists/zrb/blob/main/docs/README.md)
|
181
204
|
- **Video demo:**
|
182
|
-
|
205
|
+
|
206
|
+
[](https://www.youtube.com/watch?v=W7dgk96l__o)
|
183
207
|
|
184
208
|
|
185
209
|
# 🤝 Join the Community
|
@@ -44,40 +44,48 @@ bash -c "$(curl -fsSL https://raw.githubusercontent.com/state-alchemists/zrb/mai
|
|
44
44
|
|
45
45
|
```
|
46
46
|
|
47
|
-
# 🍲 Quick Start
|
47
|
+
# 🍲 Quick Start: Build Your First Automation Workflow
|
48
48
|
|
49
|
-
|
49
|
+
Zrb empowers you to create custom automation tasks using Python. This guide shows you how to define two simple tasks: one to generate a PlantUML script from your source code and another to convert that script into a PNG image.
|
50
50
|
|
51
|
+
## 1. Create Your Task Definition File
|
52
|
+
|
53
|
+
Place a file named `zrb_init.py` in a directory that's accessible from your projects. Zrb will automatically search for this file by starting in your current directory and then moving upward (i.e., checking parent directories) until it finds one. This means if you place your `zrb_init.py` in your home directory (e.g., `/home/<your-user-name>/zrb_init.py`), the tasks defined there will be available for any project.
|
54
|
+
|
55
|
+
Add the following content to your zrb_init.py:
|
51
56
|
|
52
57
|
```python
|
53
58
|
import os
|
54
|
-
from zrb import cli,
|
55
|
-
from zrb.builtin.llm.tool.file import
|
59
|
+
from zrb import cli, LLMTask, CmdTask, StrInput, Group
|
60
|
+
from zrb.builtin.llm.tool.file import (
|
61
|
+
read_text_file, list_files, write_text_file
|
62
|
+
)
|
56
63
|
|
57
64
|
CURRENT_DIR = os.getcwd()
|
58
65
|
|
59
|
-
#
|
66
|
+
# Create a group for UML-related tasks
|
60
67
|
uml_group = cli.add_group(Group(name="uml", description="UML related tasks"))
|
61
68
|
|
62
|
-
# Generate
|
69
|
+
# Task 1: Generate a PlantUML script from your source code
|
63
70
|
make_uml_script = uml_group.add_task(
|
64
71
|
LLMTask(
|
65
72
|
name="make-script",
|
66
73
|
description="Creating plantuml diagram based on source code in current directory",
|
67
74
|
input=StrInput(name="diagram", default="state diagram"),
|
68
75
|
message=(
|
69
|
-
f"Read
|
76
|
+
f"Read all necessary files in {CURRENT_DIR}, "
|
70
77
|
"make a {ctx.input.diagram} in plantuml format. "
|
71
78
|
f"Write the script into {CURRENT_DIR}/{{ctx.input.diagram}}.uml"
|
72
79
|
),
|
73
80
|
tools=[
|
74
|
-
|
81
|
+
list_files,
|
82
|
+
read_text_file,
|
75
83
|
write_text_file,
|
76
84
|
],
|
77
85
|
)
|
78
86
|
)
|
79
87
|
|
80
|
-
#
|
88
|
+
# Task 2: Convert the PlantUML script into a PNG image
|
81
89
|
make_uml_image = uml_group.add_task(
|
82
90
|
CmdTask(
|
83
91
|
name="make-image",
|
@@ -88,63 +96,75 @@ make_uml_image = uml_group.add_task(
|
|
88
96
|
)
|
89
97
|
)
|
90
98
|
|
91
|
-
#
|
99
|
+
# Set up the dependency: the image task runs after the script is created
|
92
100
|
make_uml_script >> make_uml_image
|
93
101
|
```
|
94
102
|
|
95
|
-
|
103
|
+
**What This Does**
|
96
104
|
|
97
|
-
|
105
|
+
- **Task 1 – make-script**:
|
98
106
|
|
99
|
-
|
107
|
+
Uses an LLM to read all files in your current directory and generate a PlantUML script (e.g., `state diagram.uml`).
|
100
108
|
|
101
|
-
|
109
|
+
- **Task 2 – make-image**:
|
102
110
|
|
103
|
-
|
111
|
+
Executes a command that converts the PlantUML script into a PNG image (e.g., `state diagram.png`). This task will run only after the script has been generated.
|
104
112
|
|
105
|
-
Now, go to your project and create a state diagram:
|
106
113
|
|
107
|
-
|
108
|
-
git clone git@github.com:jjinux/gotetris.git
|
109
|
-
cd gotetris
|
110
|
-
zrb uml make-image --diagram "state diagram"
|
111
|
-
```
|
114
|
+
## 2. Run Your Tasks
|
112
115
|
|
113
|
-
|
116
|
+
After setting up your tasks, you can execute them from any project. For example:
|
114
117
|
|
115
|
-
|
116
|
-
zrb uml make-image
|
117
|
-
```
|
118
|
+
- Clone/Create a Project:
|
118
119
|
|
119
|
-
|
120
|
+
```bash
|
121
|
+
git clone git@github.com:jjinux/gotetris.git
|
122
|
+
cd gotetris
|
123
|
+
```
|
120
124
|
|
121
|
-
|
122
|
-
|
123
|
-
```
|
125
|
+
- Create a state diagram:
|
126
|
+
|
127
|
+
```bash
|
128
|
+
zrb uml make-image --diagram "state diagram"
|
129
|
+
```
|
130
|
+
|
131
|
+
- Or use the interactive mode:
|
124
132
|
|
125
|
-
|
133
|
+
```bash
|
134
|
+
zrb uml make-image
|
135
|
+
```
|
126
136
|
|
127
|
-
|
137
|
+
Zrb will prompt:
|
138
|
+
|
139
|
+
```bash
|
140
|
+
diagram [state diagram]:
|
141
|
+
```
|
142
|
+
|
143
|
+
Press **Enter** to use the default value
|
144
|
+
|
145
|
+

|
146
|
+
|
147
|
+
|
148
|
+
## 3. Try Out the Web UI
|
149
|
+
|
150
|
+
You can also serve your tasks through a user-friendly web interface:
|
128
151
|
|
129
152
|
```bash
|
130
153
|
zrb server start
|
131
154
|
```
|
132
155
|
|
133
|
-
|
156
|
+
Then open your browser and visit `http://localhost:21213`
|
134
157
|
|
135
158
|

|
136
159
|
|
137
|
-
Now, let's see how things work in detail. First, Zrb generates a `state diagram.uml` in your current directory, it then transform the UML script into a PNG image `state diagram.png`.
|
138
|
-
|
139
|
-

|
140
|
-
|
141
160
|
|
142
161
|
# 🎥 Demo & Documentation
|
143
162
|
|
144
163
|
- **Step by step guide:** [Getting started with Zrb](https://github.com/state-alchemists/zrb/blob/main/docs/recipes/getting-started/README.md).
|
145
164
|
- **Full documentation:** [Zrb Documentation](https://github.com/state-alchemists/zrb/blob/main/docs/README.md)
|
146
165
|
- **Video demo:**
|
147
|
-
|
166
|
+
|
167
|
+
[](https://www.youtube.com/watch?v=W7dgk96l__o)
|
148
168
|
|
149
169
|
|
150
170
|
# 🤝 Join the Community
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "zrb"
|
3
|
-
version = "1.4.
|
3
|
+
version = "1.4.3"
|
4
4
|
description = "Your Automation Powerhouse"
|
5
5
|
authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
|
6
6
|
license = "AGPL-3.0-or-later"
|
@@ -52,11 +52,15 @@ python-jose = {extras = ["cryptography"], version = "^3.4.0"}
|
|
52
52
|
ulid-py = "^1.1.0"
|
53
53
|
pydantic-ai = "^0.0.42"
|
54
54
|
fastembed = "^0.5.1"
|
55
|
+
openai = {version = "^1.10.0", optional = true}
|
56
|
+
playwright = {version = "^1.43.0", optional = true}
|
55
57
|
psutil = "^6.1.1"
|
56
58
|
|
57
59
|
[tool.poetry.extras]
|
58
60
|
# poetry install -E rag
|
59
|
-
rag = ["chromadb", "pdfplumber"]
|
61
|
+
rag = ["chromadb", "pdfplumber", "openai"]
|
62
|
+
playwright = ["playwright"]
|
63
|
+
all = ["chromadb", "pdfplumber", "openai", "playwright"]
|
60
64
|
|
61
65
|
[tool.poetry.group.dev.dependencies]
|
62
66
|
alembic = "^1.14.0" # FastApp dependencies
|
@@ -5,7 +5,7 @@ from typing import Annotated, Literal
|
|
5
5
|
def get_current_location() -> (
|
6
6
|
Annotated[str, "JSON string representing latitude and longitude"]
|
7
7
|
): # noqa
|
8
|
-
"""Get the user's current location."""
|
8
|
+
"""Get the user's current location. This function take no argument."""
|
9
9
|
import requests
|
10
10
|
|
11
11
|
return json.dumps(requests.get("http://ip-api.com/json?fields=lat,lon").json())
|
@@ -93,6 +93,7 @@ def list_files(
|
|
93
93
|
"""List all files in a directory that match any of the included glob patterns
|
94
94
|
and do not reside in any directory matching an excluded pattern.
|
95
95
|
Patterns are evaluated using glob-style matching.
|
96
|
+
included_patterns and excluded_patterns already has sane default values.
|
96
97
|
"""
|
97
98
|
all_files: list[str] = []
|
98
99
|
for root, dirs, files in os.walk(directory):
|
@@ -144,6 +145,7 @@ def read_all_files(
|
|
144
145
|
"""Read all files in a directory that match any of the included glob patterns
|
145
146
|
and do not match any of the excluded glob patterns.
|
146
147
|
Patterns are evaluated using glob-style matching.
|
148
|
+
included_patterns and excluded_patterns already has sane default values.
|
147
149
|
"""
|
148
150
|
files = list_files(directory, included_patterns, excluded_patterns)
|
149
151
|
for index, file in enumerate(files):
|
@@ -9,6 +9,8 @@ import ulid
|
|
9
9
|
|
10
10
|
from zrb.config import (
|
11
11
|
RAG_CHUNK_SIZE,
|
12
|
+
RAG_EMBEDDING_API_KEY,
|
13
|
+
RAG_EMBEDDING_BASE_URL,
|
12
14
|
RAG_EMBEDDING_MODEL,
|
13
15
|
RAG_MAX_RESULT_COUNT,
|
14
16
|
RAG_OVERLAP,
|
@@ -35,24 +37,34 @@ def create_rag_from_directory(
|
|
35
37
|
tool_name: str,
|
36
38
|
tool_description: str,
|
37
39
|
document_dir_path: str = "./documents",
|
38
|
-
model: str = RAG_EMBEDDING_MODEL,
|
39
40
|
vector_db_path: str = "./chroma",
|
40
41
|
vector_db_collection: str = "documents",
|
41
42
|
chunk_size: int = RAG_CHUNK_SIZE,
|
42
43
|
overlap: int = RAG_OVERLAP,
|
43
44
|
max_result_count: int = RAG_MAX_RESULT_COUNT,
|
44
45
|
file_reader: list[RAGFileReader] = [],
|
46
|
+
openai_api_key: str = RAG_EMBEDDING_API_KEY,
|
47
|
+
openai_base_url: str = RAG_EMBEDDING_BASE_URL,
|
48
|
+
openai_embedding_model: str = RAG_EMBEDDING_MODEL,
|
45
49
|
):
|
46
50
|
async def retrieve(query: str) -> str:
|
47
51
|
from chromadb import PersistentClient
|
48
52
|
from chromadb.config import Settings
|
49
|
-
from
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
+
from openai import OpenAI
|
54
|
+
|
55
|
+
# Initialize OpenAI client with custom URL if provided
|
56
|
+
client_args = {}
|
57
|
+
if openai_api_key:
|
58
|
+
client_args["api_key"] = openai_api_key
|
59
|
+
if openai_base_url:
|
60
|
+
client_args["base_url"] = openai_base_url
|
61
|
+
# Initialize OpenAI client for embeddings
|
62
|
+
openai_client = OpenAI(**client_args)
|
63
|
+
# Initialize ChromaDB client
|
64
|
+
chroma_client = PersistentClient(
|
53
65
|
path=vector_db_path, settings=Settings(allow_reset=True)
|
54
66
|
)
|
55
|
-
collection =
|
67
|
+
collection = chroma_client.get_or_create_collection(vector_db_collection)
|
56
68
|
# Track file changes using a hash-based approach
|
57
69
|
hash_file_path = os.path.join(vector_db_path, "file_hashes.json")
|
58
70
|
previous_hashes = _load_hashes(hash_file_path)
|
@@ -89,8 +101,11 @@ def create_rag_from_directory(
|
|
89
101
|
),
|
90
102
|
file=sys.stderr,
|
91
103
|
)
|
92
|
-
|
93
|
-
|
104
|
+
# Get embeddings using OpenAI
|
105
|
+
embedding_response = openai_client.embeddings.create(
|
106
|
+
input=chunk, model=openai_embedding_model
|
107
|
+
)
|
108
|
+
vector = embedding_response.data[0].embedding
|
94
109
|
collection.upsert(
|
95
110
|
ids=[chunk_id],
|
96
111
|
embeddings=[vector],
|
@@ -113,8 +128,11 @@ def create_rag_from_directory(
|
|
113
128
|
)
|
114
129
|
# Vectorize query and get related document chunks
|
115
130
|
print(stylize_faint("Vectorizing query"), file=sys.stderr)
|
116
|
-
|
117
|
-
|
131
|
+
# Get embeddings using OpenAI
|
132
|
+
embedding_response = openai_client.embeddings.create(
|
133
|
+
input=query, model=openai_embedding_model
|
134
|
+
)
|
135
|
+
query_vector = embedding_response.data[0].embedding
|
118
136
|
print(stylize_faint("Searching documents"), file=sys.stderr)
|
119
137
|
results = collection.query(
|
120
138
|
query_embeddings=query_vector,
|
@@ -3,21 +3,61 @@ from collections.abc import Callable
|
|
3
3
|
from typing import Annotated
|
4
4
|
|
5
5
|
|
6
|
-
def open_web_page(url: str) -> str:
|
7
|
-
"""Get content from a web page."""
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
6
|
+
async def open_web_page(url: str) -> str:
|
7
|
+
"""Get content from a web page using a headless browser."""
|
8
|
+
|
9
|
+
async def get_page_content(page_url: str):
|
10
|
+
try:
|
11
|
+
from playwright.async_api import async_playwright
|
12
|
+
|
13
|
+
async with async_playwright() as p:
|
14
|
+
browser = await p.chromium.launch(headless=True)
|
15
|
+
page = await browser.new_page()
|
16
|
+
# Set user agent to mimic a regular browser
|
17
|
+
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
|
18
|
+
user_agent += "AppleWebKit/537.36 (KHTML, like Gecko) "
|
19
|
+
user_agent += "Chrome/91.0.4472.124 Safari/537.36"
|
20
|
+
await page.set_extra_http_headers({"User-Agent": user_agent})
|
21
|
+
try:
|
22
|
+
# Navigate to the URL with a timeout of 30 seconds
|
23
|
+
await page.goto(page_url, wait_until="networkidle", timeout=30000)
|
24
|
+
# Wait for the content to load
|
25
|
+
await page.wait_for_load_state("domcontentloaded")
|
26
|
+
# Get the page content
|
27
|
+
content = await page.content()
|
28
|
+
# Extract all links from the page
|
29
|
+
links = await page.eval_on_selector_all(
|
30
|
+
"a[href]",
|
31
|
+
"""
|
32
|
+
(elements) => elements.map(el => {
|
33
|
+
const href = el.getAttribute('href');
|
34
|
+
if (href && !href.startsWith('#') && !href.startsWith('/')) {
|
35
|
+
return href;
|
36
|
+
}
|
37
|
+
return null;
|
38
|
+
}).filter(href => href !== null)
|
39
|
+
""",
|
40
|
+
)
|
41
|
+
return {"content": content, "links_on_page": links}
|
42
|
+
finally:
|
43
|
+
await browser.close()
|
44
|
+
except ImportError:
|
45
|
+
import requests
|
46
|
+
|
47
|
+
response = requests.get(
|
48
|
+
url,
|
49
|
+
headers={
|
50
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" # noqa
|
51
|
+
},
|
52
|
+
)
|
53
|
+
if response.status_code != 200:
|
54
|
+
msg = f"Unable to retrieve search results. Status code: {response.status_code}"
|
55
|
+
raise Exception(msg)
|
56
|
+
return {"content": response.text, "links_on_page": []}
|
57
|
+
|
58
|
+
result = await get_page_content(url)
|
59
|
+
# Parse the HTML content
|
60
|
+
return json.dumps(parse_html_text(result["content"]))
|
21
61
|
|
22
62
|
|
23
63
|
def create_search_internet_tool(serp_api_key: str) -> Callable[[str, int], str]:
|
@@ -85,10 +85,10 @@ LLM_HISTORY_FILE = os.getenv(
|
|
85
85
|
LLM_ALLOW_ACCESS_LOCAL_FILE = to_boolean(os.getenv("ZRB_LLM_ACCESS_LOCAL_FILE", "1"))
|
86
86
|
LLM_ALLOW_ACCESS_SHELL = to_boolean(os.getenv("ZRB_LLM_ACCESS_SHELL", "1"))
|
87
87
|
LLM_ALLOW_ACCESS_INTERNET = to_boolean(os.getenv("ZRB_LLM_ACCESS_INTERNET", "1"))
|
88
|
-
#
|
89
|
-
|
90
|
-
|
91
|
-
)
|
88
|
+
# RAG Configuration
|
89
|
+
RAG_EMBEDDING_API_KEY = os.getenv("ZRB_RAG_EMBEDDING_API_KEY", None)
|
90
|
+
RAG_EMBEDDING_BASE_URL = os.getenv("ZRB_RAG_EMBEDDING_BASE_URL", None)
|
91
|
+
RAG_EMBEDDING_MODEL = os.getenv("ZRB_RAG_EMBEDDING_MODEL", "text-embedding-ada-002")
|
92
92
|
RAG_CHUNK_SIZE = int(os.getenv("ZRB_RAG_CHUNK_SIZE", "1024"))
|
93
93
|
RAG_OVERLAP = int(os.getenv("ZRB_RAG_OVERLAP", "128"))
|
94
94
|
RAG_MAX_RESULT_COUNT = int(os.getenv("ZRB_RAG_MAX_RESULT_COUNT", "5"))
|
@@ -2,18 +2,19 @@ import os
|
|
2
2
|
|
3
3
|
from pydantic_ai.models import Model
|
4
4
|
from pydantic_ai.models.openai import OpenAIModel
|
5
|
+
from pydantic_ai.providers import Provider
|
5
6
|
from pydantic_ai.providers.openai import OpenAIProvider
|
6
7
|
|
7
8
|
DEFAULT_SYSTEM_PROMPT = """
|
8
9
|
You have access to tools.
|
9
|
-
Your goal
|
10
|
+
Your goal is to answer user queries accurately.
|
10
11
|
Follow these instructions precisely:
|
11
12
|
1. ALWAYS use available tools to gather information BEFORE asking the user questions
|
12
13
|
2. For tools that require arguments: provide arguments in valid JSON format
|
13
|
-
3. For tools
|
14
|
+
3. For tools with no args: call the tool without args. Do NOT pass "" or {}.
|
14
15
|
4. NEVER pass arguments to tools that don't accept parameters
|
15
16
|
5. NEVER ask users for information obtainable through tools
|
16
|
-
6. Use tools in logical sequence until you have sufficient information
|
17
|
+
6. Use tools in a logical sequence until you have sufficient information
|
17
18
|
7. If a tool call fails, check if you're passing arguments in the correct format
|
18
19
|
8. Only after exhausting relevant tools should you request clarification
|
19
20
|
""".strip()
|
@@ -48,12 +49,15 @@ class LLMConfig:
|
|
48
49
|
if default_system_prompt is not None
|
49
50
|
else os.getenv("ZRB_LLM_SYSTEM_PROMPT", None)
|
50
51
|
)
|
52
|
+
self._default_provider = None
|
51
53
|
self._default_model = None
|
52
54
|
|
53
55
|
def _get_model_name(self) -> str | None:
|
54
56
|
return self._model_name if self._model_name is not None else None
|
55
57
|
|
56
|
-
def
|
58
|
+
def get_default_model_provider(self) -> Provider | str:
|
59
|
+
if self._default_provider is not None:
|
60
|
+
return self._default_provider
|
57
61
|
if self._model_base_url is None and self._model_api_key is None:
|
58
62
|
return "openai"
|
59
63
|
return OpenAIProvider(
|
@@ -73,7 +77,7 @@ class LLMConfig:
|
|
73
77
|
return None
|
74
78
|
return OpenAIModel(
|
75
79
|
model_name=model_name,
|
76
|
-
provider=self.
|
80
|
+
provider=self.get_default_model_provider(),
|
77
81
|
)
|
78
82
|
|
79
83
|
def set_default_system_prompt(self, system_prompt: str):
|
@@ -88,6 +92,9 @@ class LLMConfig:
|
|
88
92
|
def set_default_model_base_url(self, model_base_url: str):
|
89
93
|
self._model_base_url = model_base_url
|
90
94
|
|
95
|
+
def set_default_provider(self, provider: Provider | str):
|
96
|
+
self._default_provider = provider
|
97
|
+
|
91
98
|
def set_default_model(self, model: Model | str | None):
|
92
99
|
self._default_model = model
|
93
100
|
|