zrb 1.8.9__tar.gz → 1.8.11__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.8.9 → zrb-1.8.11}/PKG-INFO +40 -34
- {zrb-1.8.9 → zrb-1.8.11}/README.md +33 -28
- {zrb-1.8.9 → zrb-1.8.11}/pyproject.toml +8 -7
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/code.py +31 -25
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/file.py +9 -6
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/sub_agent.py +4 -2
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/web.py +1 -1
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +2 -2
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/config.py +2 -2
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/llm_config.py +2 -8
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/llm_rate_limitter.py +24 -3
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/agent.py +45 -2
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm_task.py +1 -1
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/__main__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/attr/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/attr/type.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/base64.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/git.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/git_subtree.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/group.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/http.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/jwt.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/chat_session.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/history.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/input.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/llm_ask.py +4 -4
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/previous-session.js +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/api.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/cli.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/rag.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/md5.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/create/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/create/project-template/README.md +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/create/project_task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/python.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/random.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/common_input.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/ubuntu.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/shell/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/todo.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/uuid.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/callback/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/callback/any_callback.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/callback/callback.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/cmd/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/cmd/cmd_result.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/cmd/cmd_val.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/content_transformer/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/content_transformer/any_content_transformer.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/content_transformer/content_transformer.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/context/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/context/any_context.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/context/any_shared_context.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/context/context.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/context/shared_context.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/dot_dict/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/dot_dict/dot_dict.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/env/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/env/any_env.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/env/env.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/env/env_file.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/env/env_map.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/group/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/group/any_group.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/group/group.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/any_input.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/base_input.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/bool_input.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/float_input.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/int_input.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/option_input.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/password_input.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/str_input.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/text_input.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/cli.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/common_util.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_app.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_auth_config.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/docs_route.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/error_page/view.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/home_page/view.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/login_api_route.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/login_page/view.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/logout_api_route.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/logout_page/view.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/global_template.html +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/common.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/common.js +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.amber.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.blue.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.cyan.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.fuchsia.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.green.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.grey.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.indigo.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.jade.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.lime.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.orange.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.pink.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.pumpkin.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.purple.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.red.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.sand.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.slate.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.violet.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.yellow.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.zinc.min.css +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/static_route.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_schema/session.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_schema/token.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_schema/user.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_util/cookie.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_util/html.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_util/token.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_util/user.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session/any_session.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session/session.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session_state_log/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session_state_log/session_state_log.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session_state_logger/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/any_task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base/context.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base/execution.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base/lifecycle.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base/monitoring.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base/operators.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base_task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base_trigger.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/cmd_task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/http_check.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/config.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/context.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/context_enrichment.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/error.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/history.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/history_summarization.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/print_node.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/prompt.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/tool_wrapper.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/typing.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/make_task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/rsync_task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/scaffolder.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/scheduler.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/task.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/tcp_check.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task_status/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task_status/task_status.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/attr.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cli/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cli/style.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cli/subcommand.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cmd/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cmd/command.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cmd/remote.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modification_mode.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_class.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_class_parent.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_class_property.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_dict.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_function.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_function_call.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_method.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_module.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cron.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/file.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/git.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/git_subtree.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/group.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/init_path.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/load.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/run.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/string/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/string/conversion.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/string/format.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/string/name.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/todo.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/xcom/__init__.py +0 -0
- {zrb-1.8.9 → zrb-1.8.11}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: zrb
|
3
|
-
Version: 1.8.
|
3
|
+
Version: 1.8.11
|
4
4
|
Summary: Your Automation Powerhouse
|
5
5
|
Home-page: https://github.com/state-alchemists/zrb
|
6
6
|
License: AGPL-3.0-or-later
|
@@ -19,18 +19,19 @@ Provides-Extra: rag
|
|
19
19
|
Requires-Dist: beautifulsoup4 (>=4.13.3,<5.0.0)
|
20
20
|
Requires-Dist: black (>=25.1.0,<25.2.0)
|
21
21
|
Requires-Dist: chromadb (>=0.6.3,<0.7.0) ; extra == "rag" or extra == "all"
|
22
|
-
Requires-Dist: fastapi[standard] (>=0.115.
|
22
|
+
Requires-Dist: fastapi[standard] (>=0.115.14,<0.116.0)
|
23
23
|
Requires-Dist: isort (>=6.0.1,<6.1.0)
|
24
24
|
Requires-Dist: libcst (>=1.7.0,<2.0.0)
|
25
|
-
Requires-Dist: openai (>=1.
|
25
|
+
Requires-Dist: openai (>=1.86.0,<2.0.0) ; extra == "rag" or extra == "all"
|
26
26
|
Requires-Dist: pdfplumber (>=0.11.6,<0.12.0) ; extra == "rag" or extra == "all"
|
27
|
-
Requires-Dist: playwright (>=1.
|
27
|
+
Requires-Dist: playwright (>=1.53.0,<2.0.0) ; extra == "playwright" or extra == "all"
|
28
28
|
Requires-Dist: psutil (>=7.0.0,<8.0.0)
|
29
|
-
Requires-Dist: pydantic-ai (>=0.
|
29
|
+
Requires-Dist: pydantic-ai (>=0.3.4,<0.4.0)
|
30
30
|
Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
|
31
|
-
Requires-Dist: python-dotenv (>=1.1.
|
31
|
+
Requires-Dist: python-dotenv (>=1.1.1,<2.0.0)
|
32
32
|
Requires-Dist: python-jose[cryptography] (>=3.4.0,<4.0.0)
|
33
33
|
Requires-Dist: requests (>=2.32.4,<3.0.0)
|
34
|
+
Requires-Dist: tiktoken (>=0.8.0,<0.9.0)
|
34
35
|
Requires-Dist: ulid-py (>=1.1.0,<2.0.0)
|
35
36
|
Project-URL: Documentation, https://github.com/state-alchemists/zrb
|
36
37
|
Project-URL: Repository, https://github.com/state-alchemists/zrb
|
@@ -81,9 +82,11 @@ Or run our installation script to set up Zrb along with all prerequisites:
|
|
81
82
|
bash -c "$(curl -fsSL https://raw.githubusercontent.com/state-alchemists/zrb/main/install.sh)"
|
82
83
|
```
|
83
84
|
|
85
|
+
You can also [run Zrb as container](https://github.com/state-alchemists/zrb?tab=readme-ov-file#-run-zrb-as-a-container)
|
86
|
+
|
84
87
|
# 🍲 Quick Start: Build Your First Automation Workflow
|
85
88
|
|
86
|
-
Zrb empowers you to create custom automation tasks using Python. This guide shows you how to define two simple tasks: one to generate a
|
89
|
+
Zrb empowers you to create custom automation tasks using Python. This guide shows you how to define two simple tasks: one to generate a Mermaid script from your source code and another to convert that script into a PNG image.
|
87
90
|
|
88
91
|
## 1. Create Your Task Definition File
|
89
92
|
|
@@ -92,59 +95,61 @@ Place a file named `zrb_init.py` in a directory that's accessible from your proj
|
|
92
95
|
Add the following content to your zrb_init.py:
|
93
96
|
|
94
97
|
```python
|
95
|
-
import os
|
96
98
|
from zrb import cli, LLMTask, CmdTask, StrInput, Group
|
97
|
-
from zrb.builtin.llm.tool.
|
98
|
-
|
99
|
-
)
|
100
|
-
|
99
|
+
from zrb.builtin.llm.tool.code import analyze_repo
|
100
|
+
from zrb.builtin.llm.tool.file import write_to_file
|
101
101
|
|
102
|
-
CURRENT_DIR = os.getcwd()
|
103
102
|
|
104
|
-
# Create a group for
|
105
|
-
|
103
|
+
# Create a group for Mermaid-related tasks
|
104
|
+
mermaid_group = cli.add_group(Group(name="mermaid", description="🧜 Mermaid diagram related tasks"))
|
106
105
|
|
107
|
-
# Task 1: Generate a
|
108
|
-
|
106
|
+
# Task 1: Generate a Mermaid script from your source code
|
107
|
+
make_mermaid_script = mermaid_group.add_task(
|
109
108
|
LLMTask(
|
110
109
|
name="make-script",
|
111
|
-
description="Creating
|
112
|
-
input=
|
110
|
+
description="Creating mermaid diagram based on source code in current directory",
|
111
|
+
input=[
|
112
|
+
StrInput(name="dir", default="./"),
|
113
|
+
StrInput(name="diagram", default="state-diagram"),
|
114
|
+
],
|
113
115
|
message=(
|
114
|
-
|
115
|
-
"make a {ctx.input.diagram} in
|
116
|
-
|
116
|
+
"Read all necessary files in {ctx.input.dir}, "
|
117
|
+
"make a {ctx.input.diagram} in mermaid format. "
|
118
|
+
"Write the script into `{ctx.input.dir}/{ctx.input.diagram}.mmd`"
|
117
119
|
),
|
118
120
|
tools=[
|
119
|
-
|
121
|
+
analyze_repo, write_to_file
|
120
122
|
],
|
121
123
|
)
|
122
124
|
)
|
123
125
|
|
124
|
-
# Task 2: Convert the
|
125
|
-
|
126
|
+
# Task 2: Convert the Mermaid script into a PNG image
|
127
|
+
make_mermaid_image = mermaid_group.add_task(
|
126
128
|
CmdTask(
|
127
129
|
name="make-image",
|
128
130
|
description="Creating png based on source code in current directory",
|
129
|
-
input=
|
130
|
-
|
131
|
-
|
131
|
+
input=[
|
132
|
+
StrInput(name="dir", default="./"),
|
133
|
+
StrInput(name="diagram", default="state-diagram"),
|
134
|
+
],
|
135
|
+
cmd="mmdc -i '{ctx.input.diagram}.mmd' -o '{ctx.input.diagram}.png'",
|
136
|
+
cwd="{ctx.input.dir}",
|
132
137
|
)
|
133
138
|
)
|
134
139
|
|
135
140
|
# Set up the dependency: the image task runs after the script is created
|
136
|
-
|
141
|
+
make_mermaid_script >> make_mermaid_image
|
137
142
|
```
|
138
143
|
|
139
144
|
**What This Does**
|
140
145
|
|
141
146
|
- **Task 1 – make-script**:
|
142
147
|
|
143
|
-
Uses an LLM to read all files in your current directory and generate a
|
148
|
+
Uses an LLM to read all files in your current directory and generate a Mermaid script (e.g., `state diagram.mmd`).
|
144
149
|
|
145
150
|
- **Task 2 – make-image**:
|
146
151
|
|
147
|
-
Executes a command that converts the
|
152
|
+
Executes a command that converts the Mermaid script into a PNG image (e.g., `state diagram.png`). This task will run only after the script has been generated.
|
148
153
|
|
149
154
|
|
150
155
|
## 2. Run Your Tasks
|
@@ -161,18 +166,19 @@ After setting up your tasks, you can execute them from any project. For example:
|
|
161
166
|
- Create a state diagram:
|
162
167
|
|
163
168
|
```bash
|
164
|
-
zrb
|
169
|
+
zrb mermaid make-image --diagram "state diagram" --dir ./
|
165
170
|
```
|
166
171
|
|
167
172
|
- Or use the interactive mode:
|
168
173
|
|
169
174
|
```bash
|
170
|
-
zrb
|
175
|
+
zrb mermaid make-image
|
171
176
|
```
|
172
177
|
|
173
178
|
Zrb will prompt:
|
174
179
|
|
175
180
|
```bash
|
181
|
+
dir [./]:
|
176
182
|
diagram [state diagram]:
|
177
183
|
```
|
178
184
|
|
@@ -194,7 +200,7 @@ Then open your browser and visit `http://localhost:21213`
|
|
194
200
|

|
195
201
|
|
196
202
|
|
197
|
-
# 🐋
|
203
|
+
# 🐋 Run Zrb as a Container
|
198
204
|
|
199
205
|
Zrb can be run in a containerized environment, offering two distinct versions to suit different needs:
|
200
206
|
|
@@ -43,9 +43,11 @@ Or run our installation script to set up Zrb along with all prerequisites:
|
|
43
43
|
bash -c "$(curl -fsSL https://raw.githubusercontent.com/state-alchemists/zrb/main/install.sh)"
|
44
44
|
```
|
45
45
|
|
46
|
+
You can also [run Zrb as container](https://github.com/state-alchemists/zrb?tab=readme-ov-file#-run-zrb-as-a-container)
|
47
|
+
|
46
48
|
# 🍲 Quick Start: Build Your First Automation Workflow
|
47
49
|
|
48
|
-
Zrb empowers you to create custom automation tasks using Python. This guide shows you how to define two simple tasks: one to generate a
|
50
|
+
Zrb empowers you to create custom automation tasks using Python. This guide shows you how to define two simple tasks: one to generate a Mermaid script from your source code and another to convert that script into a PNG image.
|
49
51
|
|
50
52
|
## 1. Create Your Task Definition File
|
51
53
|
|
@@ -54,59 +56,61 @@ Place a file named `zrb_init.py` in a directory that's accessible from your proj
|
|
54
56
|
Add the following content to your zrb_init.py:
|
55
57
|
|
56
58
|
```python
|
57
|
-
import os
|
58
59
|
from zrb import cli, LLMTask, CmdTask, StrInput, Group
|
59
|
-
from zrb.builtin.llm.tool.
|
60
|
-
|
61
|
-
)
|
62
|
-
|
60
|
+
from zrb.builtin.llm.tool.code import analyze_repo
|
61
|
+
from zrb.builtin.llm.tool.file import write_to_file
|
63
62
|
|
64
|
-
CURRENT_DIR = os.getcwd()
|
65
63
|
|
66
|
-
# Create a group for
|
67
|
-
|
64
|
+
# Create a group for Mermaid-related tasks
|
65
|
+
mermaid_group = cli.add_group(Group(name="mermaid", description="🧜 Mermaid diagram related tasks"))
|
68
66
|
|
69
|
-
# Task 1: Generate a
|
70
|
-
|
67
|
+
# Task 1: Generate a Mermaid script from your source code
|
68
|
+
make_mermaid_script = mermaid_group.add_task(
|
71
69
|
LLMTask(
|
72
70
|
name="make-script",
|
73
|
-
description="Creating
|
74
|
-
input=
|
71
|
+
description="Creating mermaid diagram based on source code in current directory",
|
72
|
+
input=[
|
73
|
+
StrInput(name="dir", default="./"),
|
74
|
+
StrInput(name="diagram", default="state-diagram"),
|
75
|
+
],
|
75
76
|
message=(
|
76
|
-
|
77
|
-
"make a {ctx.input.diagram} in
|
78
|
-
|
77
|
+
"Read all necessary files in {ctx.input.dir}, "
|
78
|
+
"make a {ctx.input.diagram} in mermaid format. "
|
79
|
+
"Write the script into `{ctx.input.dir}/{ctx.input.diagram}.mmd`"
|
79
80
|
),
|
80
81
|
tools=[
|
81
|
-
|
82
|
+
analyze_repo, write_to_file
|
82
83
|
],
|
83
84
|
)
|
84
85
|
)
|
85
86
|
|
86
|
-
# Task 2: Convert the
|
87
|
-
|
87
|
+
# Task 2: Convert the Mermaid script into a PNG image
|
88
|
+
make_mermaid_image = mermaid_group.add_task(
|
88
89
|
CmdTask(
|
89
90
|
name="make-image",
|
90
91
|
description="Creating png based on source code in current directory",
|
91
|
-
input=
|
92
|
-
|
93
|
-
|
92
|
+
input=[
|
93
|
+
StrInput(name="dir", default="./"),
|
94
|
+
StrInput(name="diagram", default="state-diagram"),
|
95
|
+
],
|
96
|
+
cmd="mmdc -i '{ctx.input.diagram}.mmd' -o '{ctx.input.diagram}.png'",
|
97
|
+
cwd="{ctx.input.dir}",
|
94
98
|
)
|
95
99
|
)
|
96
100
|
|
97
101
|
# Set up the dependency: the image task runs after the script is created
|
98
|
-
|
102
|
+
make_mermaid_script >> make_mermaid_image
|
99
103
|
```
|
100
104
|
|
101
105
|
**What This Does**
|
102
106
|
|
103
107
|
- **Task 1 – make-script**:
|
104
108
|
|
105
|
-
Uses an LLM to read all files in your current directory and generate a
|
109
|
+
Uses an LLM to read all files in your current directory and generate a Mermaid script (e.g., `state diagram.mmd`).
|
106
110
|
|
107
111
|
- **Task 2 – make-image**:
|
108
112
|
|
109
|
-
Executes a command that converts the
|
113
|
+
Executes a command that converts the Mermaid script into a PNG image (e.g., `state diagram.png`). This task will run only after the script has been generated.
|
110
114
|
|
111
115
|
|
112
116
|
## 2. Run Your Tasks
|
@@ -123,18 +127,19 @@ After setting up your tasks, you can execute them from any project. For example:
|
|
123
127
|
- Create a state diagram:
|
124
128
|
|
125
129
|
```bash
|
126
|
-
zrb
|
130
|
+
zrb mermaid make-image --diagram "state diagram" --dir ./
|
127
131
|
```
|
128
132
|
|
129
133
|
- Or use the interactive mode:
|
130
134
|
|
131
135
|
```bash
|
132
|
-
zrb
|
136
|
+
zrb mermaid make-image
|
133
137
|
```
|
134
138
|
|
135
139
|
Zrb will prompt:
|
136
140
|
|
137
141
|
```bash
|
142
|
+
dir [./]:
|
138
143
|
diagram [state diagram]:
|
139
144
|
```
|
140
145
|
|
@@ -156,7 +161,7 @@ Then open your browser and visit `http://localhost:21213`
|
|
156
161
|

|
157
162
|
|
158
163
|
|
159
|
-
# 🐋
|
164
|
+
# 🐋 Run Zrb as a Container
|
160
165
|
|
161
166
|
Zrb can be run in a containerized environment, offering two distinct versions to suit different needs:
|
162
167
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "zrb"
|
3
|
-
version = "1.8.
|
3
|
+
version = "1.8.11"
|
4
4
|
description = "Your Automation Powerhouse"
|
5
5
|
authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
|
6
6
|
license = "AGPL-3.0-or-later"
|
@@ -38,7 +38,7 @@ exclude = [
|
|
38
38
|
|
39
39
|
[tool.poetry.dependencies]
|
40
40
|
python = ">=3.10.0,<4.0.0"
|
41
|
-
python-dotenv = "^1.1.
|
41
|
+
python-dotenv = "^1.1.1"
|
42
42
|
black = "~25.1.0"
|
43
43
|
isort = "~6.0.1"
|
44
44
|
requests = "^2.32.4"
|
@@ -46,12 +46,13 @@ libcst = "^1.7.0"
|
|
46
46
|
chromadb = {version = "^0.6.3", optional = true}
|
47
47
|
pdfplumber = {version = "^0.11.6", optional = true}
|
48
48
|
beautifulsoup4 = "^4.13.3"
|
49
|
-
fastapi = {extras = ["standard"], version = "^0.115.
|
49
|
+
fastapi = {extras = ["standard"], version = "^0.115.14"}
|
50
50
|
python-jose = {extras = ["cryptography"], version = "^3.4.0"}
|
51
51
|
ulid-py = "^1.1.0"
|
52
|
-
pydantic-ai = "^0.
|
53
|
-
|
54
|
-
|
52
|
+
pydantic-ai = "^0.3.4"
|
53
|
+
tiktoken = "^0.8.0"
|
54
|
+
openai = {version = "^1.86.0", optional = true}
|
55
|
+
playwright = {version = "^1.53.0", optional = true}
|
55
56
|
psutil = "^7.0.0"
|
56
57
|
pyjwt = "^2.10.1"
|
57
58
|
|
@@ -62,7 +63,7 @@ playwright = ["playwright"]
|
|
62
63
|
all = ["chromadb", "pdfplumber", "openai", "playwright"]
|
63
64
|
|
64
65
|
[tool.poetry.group.dev.dependencies]
|
65
|
-
alembic = "^1.
|
66
|
+
alembic = "^1.16.2" # FastApp dependencies
|
66
67
|
autopep8 = "^2.0.4"
|
67
68
|
flake8 = "~7.2.0"
|
68
69
|
pytest = "~8.3.5"
|
@@ -4,6 +4,7 @@ import os
|
|
4
4
|
from zrb.builtin.llm.tool.file import DEFAULT_EXCLUDED_PATTERNS, is_excluded
|
5
5
|
from zrb.builtin.llm.tool.sub_agent import create_sub_agent_tool
|
6
6
|
from zrb.context.any_context import AnyContext
|
7
|
+
from zrb.llm_rate_limitter import llm_rate_limitter
|
7
8
|
|
8
9
|
_EXTRACT_INFO_FROM_REPO_SYSTEM_PROMPT = """
|
9
10
|
You are an extraction info agent.
|
@@ -81,12 +82,11 @@ async def analyze_repo(
|
|
81
82
|
goal: str,
|
82
83
|
extensions: list[str] = _DEFAULT_EXTENSIONS,
|
83
84
|
exclude_patterns: list[str] = DEFAULT_EXCLUDED_PATTERNS,
|
84
|
-
|
85
|
-
|
85
|
+
extraction_token_limit: int = 30000,
|
86
|
+
summarization_token_limit: int = 30000,
|
86
87
|
) -> str:
|
87
88
|
"""
|
88
|
-
Extract and summarize information from
|
89
|
-
contains a large resources.
|
89
|
+
Extract and summarize information from any directory.
|
90
90
|
You should state the goal specifically so that the tool can return relevant informations.
|
91
91
|
Use this tool for:
|
92
92
|
- summarization
|
@@ -101,9 +101,9 @@ async def analyze_repo(
|
|
101
101
|
while reading resources. Defaults to common programming languages and config files.
|
102
102
|
exclude_patterns(Optional[list[str]]): List of patterns to exclude from analysis.
|
103
103
|
Common patterns like '.venv', 'node_modules' should be excluded by default.
|
104
|
-
|
104
|
+
extraction_token_limit(Optional[int]): Max resource content char length
|
105
105
|
the extraction assistant able to handle. Defaults to 150000
|
106
|
-
|
106
|
+
summarization_token_limit(Optional[int]): Max resource content char length
|
107
107
|
the summarization assistant able to handle. Defaults to 150000
|
108
108
|
Returns:
|
109
109
|
str: The analysis result
|
@@ -117,22 +117,19 @@ async def analyze_repo(
|
|
117
117
|
ctx,
|
118
118
|
file_metadatas=file_metadatas,
|
119
119
|
goal=goal,
|
120
|
-
|
120
|
+
token_limit=extraction_token_limit,
|
121
121
|
)
|
122
|
+
if len(extracted_infos) == 1:
|
123
|
+
return extracted_infos[0]
|
122
124
|
ctx.print("Summarization")
|
123
|
-
summarized_infos =
|
124
|
-
ctx,
|
125
|
-
extracted_infos=extracted_infos,
|
126
|
-
goal=goal,
|
127
|
-
char_limit=summarization_char_limit,
|
128
|
-
)
|
125
|
+
summarized_infos = extracted_infos
|
129
126
|
while len(summarized_infos) > 1:
|
130
127
|
ctx.print("Summarization")
|
131
128
|
summarized_infos = await _summarize_info(
|
132
129
|
ctx,
|
133
130
|
extracted_infos=summarized_infos,
|
134
131
|
goal=goal,
|
135
|
-
|
132
|
+
token_limit=summarization_token_limit,
|
136
133
|
)
|
137
134
|
return summarized_infos[0]
|
138
135
|
|
@@ -165,7 +162,7 @@ async def _extract_info(
|
|
165
162
|
ctx: AnyContext,
|
166
163
|
file_metadatas: list[dict[str, str]],
|
167
164
|
goal: str,
|
168
|
-
|
165
|
+
token_limit: int,
|
169
166
|
) -> list[str]:
|
170
167
|
extract = create_sub_agent_tool(
|
171
168
|
tool_name="extract",
|
@@ -174,27 +171,31 @@ async def _extract_info(
|
|
174
171
|
)
|
175
172
|
extracted_infos = []
|
176
173
|
content_buffer = []
|
177
|
-
|
174
|
+
current_token_count = 0
|
178
175
|
for metadata in file_metadatas:
|
179
176
|
path = metadata.get("path", "")
|
180
177
|
content = metadata.get("content", "")
|
181
178
|
file_obj = {"path": path, "content": content}
|
182
179
|
file_str = json.dumps(file_obj)
|
183
|
-
if
|
180
|
+
if current_token_count + llm_rate_limitter.count_token(file_str) > token_limit:
|
184
181
|
if content_buffer:
|
185
182
|
prompt = _create_extract_info_prompt(goal, content_buffer)
|
186
|
-
extracted_info = await extract(
|
183
|
+
extracted_info = await extract(
|
184
|
+
ctx, llm_rate_limitter.clip_prompt(prompt, token_limit)
|
185
|
+
)
|
187
186
|
extracted_infos.append(extracted_info)
|
188
187
|
content_buffer = [file_obj]
|
189
|
-
|
188
|
+
current_token_count = llm_rate_limitter.count_token(file_str)
|
190
189
|
else:
|
191
190
|
content_buffer.append(file_obj)
|
192
|
-
|
191
|
+
current_token_count += llm_rate_limitter.count_token(file_str)
|
193
192
|
|
194
193
|
# Process any remaining content in the buffer
|
195
194
|
if content_buffer:
|
196
195
|
prompt = _create_extract_info_prompt(goal, content_buffer)
|
197
|
-
extracted_info = await extract(
|
196
|
+
extracted_info = await extract(
|
197
|
+
ctx, llm_rate_limitter.clip_prompt(prompt, token_limit)
|
198
|
+
)
|
198
199
|
extracted_infos.append(extracted_info)
|
199
200
|
return extracted_infos
|
200
201
|
|
@@ -212,7 +213,7 @@ async def _summarize_info(
|
|
212
213
|
ctx: AnyContext,
|
213
214
|
extracted_infos: list[str],
|
214
215
|
goal: str,
|
215
|
-
|
216
|
+
token_limit: int,
|
216
217
|
) -> list[str]:
|
217
218
|
summarize = create_sub_agent_tool(
|
218
219
|
tool_name="extract",
|
@@ -222,10 +223,13 @@ async def _summarize_info(
|
|
222
223
|
summarized_infos = []
|
223
224
|
content_buffer = ""
|
224
225
|
for extracted_info in extracted_infos:
|
225
|
-
|
226
|
+
new_prompt = content_buffer + extracted_info
|
227
|
+
if llm_rate_limitter.count_token(new_prompt) > token_limit:
|
226
228
|
if content_buffer:
|
227
229
|
prompt = _create_summarize_info_prompt(goal, content_buffer)
|
228
|
-
summarized_info = await summarize(
|
230
|
+
summarized_info = await summarize(
|
231
|
+
ctx, llm_rate_limitter.clip_prompt(prompt, token_limit)
|
232
|
+
)
|
229
233
|
summarized_infos.append(summarized_info)
|
230
234
|
content_buffer = extracted_info
|
231
235
|
else:
|
@@ -234,7 +238,9 @@ async def _summarize_info(
|
|
234
238
|
# Process any remaining content in the buffer
|
235
239
|
if content_buffer:
|
236
240
|
prompt = _create_summarize_info_prompt(goal, content_buffer)
|
237
|
-
summarized_info = await summarize(
|
241
|
+
summarized_info = await summarize(
|
242
|
+
ctx, llm_rate_limitter.clip_prompt(prompt, token_limit)
|
243
|
+
)
|
238
244
|
summarized_infos.append(summarized_info)
|
239
245
|
return summarized_infos
|
240
246
|
|
@@ -6,6 +6,7 @@ from typing import Any, Optional
|
|
6
6
|
|
7
7
|
from zrb.builtin.llm.tool.sub_agent import create_sub_agent_tool
|
8
8
|
from zrb.context.any_context import AnyContext
|
9
|
+
from zrb.llm_rate_limitter import llm_rate_limitter
|
9
10
|
from zrb.util.file import read_file, read_file_with_line_numbers, write_file
|
10
11
|
|
11
12
|
_EXTRACT_INFO_FROM_FILE_SYSTEM_PROMPT = """
|
@@ -464,7 +465,9 @@ def apply_diff(
|
|
464
465
|
raise RuntimeError(f"Unexpected error applying diff to {path}: {e}")
|
465
466
|
|
466
467
|
|
467
|
-
async def analyze_file(
|
468
|
+
async def analyze_file(
|
469
|
+
ctx: AnyContext, path: str, query: str, token_limit: int = 30000
|
470
|
+
) -> str:
|
468
471
|
"""Analyze file using LLM capability to reduce context usage.
|
469
472
|
Use this tool for:
|
470
473
|
- summarization
|
@@ -474,6 +477,7 @@ async def analyze_file(ctx: AnyContext, path: str, query: str) -> str:
|
|
474
477
|
Args:
|
475
478
|
path (str): File path to be analyze. Pass exactly as provided, including '~'.
|
476
479
|
query(str): Instruction to analyze the file
|
480
|
+
token_limit(Optional[int]): Max token length to be taken from file
|
477
481
|
Returns:
|
478
482
|
str: The analysis result
|
479
483
|
Raises:
|
@@ -489,9 +493,8 @@ async def analyze_file(ctx: AnyContext, path: str, query: str) -> str:
|
|
489
493
|
system_prompt=_EXTRACT_INFO_FROM_FILE_SYSTEM_PROMPT,
|
490
494
|
tools=[read_from_file, search_files],
|
491
495
|
)
|
492
|
-
|
493
|
-
|
494
|
-
json.dumps(
|
495
|
-
{"instruction": query, "file_path": abs_path, "file_content": file_content}
|
496
|
-
),
|
496
|
+
payload = json.dumps(
|
497
|
+
{"instruction": query, "file_path": abs_path, "file_content": file_content}
|
497
498
|
)
|
499
|
+
clipped_payload = llm_rate_limitter.clip_prompt(payload, token_limit)
|
500
|
+
return await _analyze_file(ctx, clipped_payload)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import json
|
2
2
|
from collections.abc import Callable
|
3
3
|
from textwrap import dedent
|
4
|
-
from typing import TYPE_CHECKING, Any
|
4
|
+
from typing import TYPE_CHECKING, Any, Coroutine
|
5
5
|
|
6
6
|
if TYPE_CHECKING:
|
7
7
|
from pydantic_ai import Tool
|
@@ -33,7 +33,7 @@ def create_sub_agent_tool(
|
|
33
33
|
model_settings: ModelSettings | None = None,
|
34
34
|
tools: list[ToolOrCallable] = [],
|
35
35
|
mcp_servers: list[MCPServer] = [],
|
36
|
-
) -> Callable[[AnyContext, str], str]:
|
36
|
+
) -> Callable[[AnyContext, str], Coroutine[Any, Any, str]]:
|
37
37
|
"""
|
38
38
|
Create an LLM "sub-agent" tool function for use by a main LLM agent.
|
39
39
|
|
@@ -97,6 +97,8 @@ def create_sub_agent_tool(
|
|
97
97
|
tools=tools,
|
98
98
|
mcp_servers=mcp_servers,
|
99
99
|
)
|
100
|
+
|
101
|
+
sub_agent_run = None
|
100
102
|
# Run the sub-agent iteration
|
101
103
|
# Start with an empty history for the sub-agent
|
102
104
|
sub_agent_run = await run_agent_iteration(
|
@@ -42,7 +42,7 @@ async def open_web_page(url: str) -> str:
|
|
42
42
|
return {"content": content, "links_on_page": links}
|
43
43
|
finally:
|
44
44
|
await browser.close()
|
45
|
-
except
|
45
|
+
except BaseException:
|
46
46
|
import requests
|
47
47
|
|
48
48
|
response = requests.get(url, headers={"User-Agent": user_agent})
|
@@ -245,12 +245,12 @@ class Config:
|
|
245
245
|
@property
|
246
246
|
def LLM_MAX_TOKENS_PER_MINUTE(self) -> int:
|
247
247
|
"""Maximum number of LLM tokens allowed per minute."""
|
248
|
-
return int(os.getenv("ZRB_LLM_MAX_TOKENS_PER_MINUTE", "
|
248
|
+
return int(os.getenv("ZRB_LLM_MAX_TOKENS_PER_MINUTE", "200000"))
|
249
249
|
|
250
250
|
@property
|
251
251
|
def LLM_MAX_TOKENS_PER_REQUEST(self) -> int:
|
252
252
|
"""Maximum number of tokens allowed per individual LLM request."""
|
253
|
-
return int(os.getenv("ZRB_LLM_MAX_TOKENS_PER_REQUEST", "
|
253
|
+
return int(os.getenv("ZRB_LLM_MAX_TOKENS_PER_REQUEST", "50000"))
|
254
254
|
|
255
255
|
@property
|
256
256
|
def LLM_THROTTLE_SLEEP(self) -> float:
|
@@ -69,14 +69,8 @@ DEFAULT_SPECIAL_INSTRUCTION_PROMPT = (
|
|
69
69
|
"is clean.\n"
|
70
70
|
"2. **Halt if Dirty:** If the directory is not clean, STOP. Inform the "
|
71
71
|
"user and wait for their instructions.\n"
|
72
|
-
"3. **
|
73
|
-
"
|
74
|
-
"name.\n"
|
75
|
-
" - Example: 'I will create a branch named `feature/add-user-login`. "
|
76
|
-
"Is this okay?'\n"
|
77
|
-
" - **Wait for the user to say 'yes' or approve.**\n"
|
78
|
-
"4. **Execute on Branch:** Once the user confirms, create the branch and "
|
79
|
-
"perform all your work and commits there.\n\n"
|
72
|
+
"3. **Create a New Branch:** Create a new branch and inform the user.\n"
|
73
|
+
"4. **Execute on Branch:** Perform all your work and commits there.\n\n"
|
80
74
|
"**4. Debugging Protocol**\n"
|
81
75
|
"1. **Hypothesize:** State the most likely cause of the bug in one "
|
82
76
|
"sentence.\n"
|
@@ -3,9 +3,16 @@ import time
|
|
3
3
|
from collections import deque
|
4
4
|
from typing import Callable
|
5
5
|
|
6
|
+
import tiktoken
|
7
|
+
|
6
8
|
from zrb.config import CFG
|
7
9
|
|
8
10
|
|
11
|
+
def _estimate_token(text: str) -> int:
|
12
|
+
enc = tiktoken.encoding_for_model("gpt-4o")
|
13
|
+
return len(enc.encode(text))
|
14
|
+
|
15
|
+
|
9
16
|
class LLMRateLimiter:
|
10
17
|
"""
|
11
18
|
Helper class to enforce LLM API rate limits and throttling.
|
@@ -53,10 +60,10 @@ class LLMRateLimiter:
|
|
53
60
|
return CFG.LLM_THROTTLE_SLEEP
|
54
61
|
|
55
62
|
@property
|
56
|
-
def
|
63
|
+
def count_token(self) -> Callable[[str], int]:
|
57
64
|
if self._token_counter_fn is not None:
|
58
65
|
return self._token_counter_fn
|
59
|
-
return
|
66
|
+
return _estimate_token
|
60
67
|
|
61
68
|
def set_max_requests_per_minute(self, value: int):
|
62
69
|
self._max_requests_per_minute = value
|
@@ -73,9 +80,23 @@ class LLMRateLimiter:
|
|
73
80
|
def set_token_counter_fn(self, fn: Callable[[str], int]):
|
74
81
|
self._token_counter_fn = fn
|
75
82
|
|
83
|
+
def clip_prompt(self, prompt: str, limit: int) -> str:
|
84
|
+
token_count = self.count_token(prompt)
|
85
|
+
if token_count <= limit:
|
86
|
+
return prompt
|
87
|
+
while token_count > limit:
|
88
|
+
prompt_parts = prompt.split(" ")
|
89
|
+
last_part_index = len(prompt_parts) - 2
|
90
|
+
clipped_prompt = " ".join(prompt_parts[:last_part_index])
|
91
|
+
clipped_prompt += "(Content clipped...)"
|
92
|
+
token_count = self.count_token(clipped_prompt)
|
93
|
+
if token_count < limit:
|
94
|
+
return clipped_prompt
|
95
|
+
return prompt[:limit]
|
96
|
+
|
76
97
|
async def throttle(self, prompt: str):
|
77
98
|
now = time.time()
|
78
|
-
tokens = self.
|
99
|
+
tokens = self.count_token(prompt)
|
79
100
|
# Clean up old entries
|
80
101
|
while self.request_times and now - self.request_times[0] > 60:
|
81
102
|
self.request_times.popleft()
|