zrb 1.8.13__tar.gz → 1.8.15__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.13 → zrb-1.8.15}/PKG-INFO +2 -1
- {zrb-1.8.13 → zrb-1.8.15}/pyproject.toml +2 -1
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/llm/chat_session.py +7 -3
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/llm/tool/sub_agent.py +8 -14
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/todo.py +12 -1
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/llm_config.py +12 -15
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/cli.py +2 -1
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_auth_config.py +16 -10
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/task_session_api_route.py +18 -7
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/session/any_session.py +15 -14
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/session/session.py +11 -7
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/session_state_logger/any_session_state_logger.py +9 -4
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/session_state_logger/file_session_state_logger.py +16 -6
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/any_task.py +11 -8
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/file.py +3 -2
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/todo.py +17 -50
- zrb-1.8.15/src/zrb/util/todo_model.py +40 -0
- {zrb-1.8.13 → zrb-1.8.15}/README.md +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/__main__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/attr/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/attr/type.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/base64.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/git.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/git_subtree.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/group.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/http.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/jwt.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/llm/history.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/llm/input.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/llm/llm_ask.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/llm/previous-session.js +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/llm/tool/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/llm/tool/api.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/llm/tool/cli.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/llm/tool/code.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/llm/tool/file.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/llm/tool/rag.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/llm/tool/web.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/md5.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/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.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/create/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/create/project-template/README.md +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/project/create/project_task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/python.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/random.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/setup/common_input.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/setup/ubuntu.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/shell/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/builtin/uuid.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/callback/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/callback/any_callback.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/callback/callback.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/cmd/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/cmd/cmd_result.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/cmd/cmd_val.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/config.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/content_transformer/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/content_transformer/any_content_transformer.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/content_transformer/content_transformer.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/context/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/context/any_context.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/context/any_shared_context.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/context/context.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/context/shared_context.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/dot_dict/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/dot_dict/dot_dict.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/env/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/env/any_env.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/env/env.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/env/env_file.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/env/env_map.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/group/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/group/any_group.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/group/group.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/input/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/input/any_input.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/input/base_input.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/input/bool_input.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/input/float_input.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/input/int_input.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/input/option_input.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/input/password_input.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/input/str_input.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/input/text_input.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/llm_rate_limitter.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/common_util.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_app.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/docs_route.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/error_page/view.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/home_page/view.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/login_api_route.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/login_page/view.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/logout_api_route.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/logout_page/view.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/global_template.html +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/common.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/common.js +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.amber.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.blue.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.cyan.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.fuchsia.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.green.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.grey.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.indigo.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.jade.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.lime.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.orange.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.pink.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.pumpkin.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.purple.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.red.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.sand.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.slate.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.violet.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.yellow.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/pico-css/pico.zinc.min.css +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/static/static_route.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_schema/session.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_schema/token.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_schema/user.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_util/cookie.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_util/html.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_util/token.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/runner/web_util/user.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/session/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/session_state_log/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/session_state_log/session_state_log.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/session_state_logger/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/base/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/base/context.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/base/execution.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/base/lifecycle.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/base/monitoring.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/base/operators.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/base_task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/base_trigger.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/cmd_task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/http_check.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/llm/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/llm/agent.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/llm/config.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/llm/context.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/llm/context_enrichment.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/llm/error.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/llm/history.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/llm/history_summarization.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/llm/print_node.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/llm/prompt.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/llm/tool_wrapper.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/llm/typing.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/llm_task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/make_task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/rsync_task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/scaffolder.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/scheduler.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/task.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task/tcp_check.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task_status/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/task_status/task_status.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/attr.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/cli/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/cli/style.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/cli/subcommand.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/cmd/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/cmd/command.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/cmd/remote.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/codemod/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/codemod/modification_mode.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/codemod/modify_class.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/codemod/modify_class_parent.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/codemod/modify_class_property.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/codemod/modify_dict.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/codemod/modify_function.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/codemod/modify_function_call.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/codemod/modify_method.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/codemod/modify_module.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/cron.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/git.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/git_subtree.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/group.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/init_path.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/load.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/run.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/string/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/string/conversion.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/string/format.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/util/string/name.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/src/zrb/xcom/__init__.py +0 -0
- {zrb-1.8.13 → zrb-1.8.15}/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.15
|
4
4
|
Summary: Your Automation Powerhouse
|
5
5
|
Home-page: https://github.com/state-alchemists/zrb
|
6
6
|
License: AGPL-3.0-or-later
|
@@ -25,6 +25,7 @@ Requires-Dist: libcst (>=1.7.0,<2.0.0)
|
|
25
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
27
|
Requires-Dist: playwright (>=1.53.0,<2.0.0) ; extra == "playwright" or extra == "all"
|
28
|
+
Requires-Dist: prompt-toolkit (>=3.0.51,<4.0.0)
|
28
29
|
Requires-Dist: psutil (>=7.0.0,<8.0.0)
|
29
30
|
Requires-Dist: pydantic-ai (>=0.3.4,<0.4.0)
|
30
31
|
Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "zrb"
|
3
|
-
version = "1.8.
|
3
|
+
version = "1.8.15"
|
4
4
|
description = "Your Automation Powerhouse"
|
5
5
|
authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
|
6
6
|
license = "AGPL-3.0-or-later"
|
@@ -55,6 +55,7 @@ openai = {version = "^1.86.0", optional = true}
|
|
55
55
|
playwright = {version = "^1.53.0", optional = true}
|
56
56
|
psutil = "^7.0.0"
|
57
57
|
pyjwt = "^2.10.1"
|
58
|
+
prompt-toolkit = "^3.0.51"
|
58
59
|
|
59
60
|
[tool.poetry.extras]
|
60
61
|
# poetry install -E rag
|
@@ -25,6 +25,8 @@ async def read_user_prompt(ctx: AnyContext) -> str:
|
|
25
25
|
Returns:
|
26
26
|
The final result from the LLM session.
|
27
27
|
"""
|
28
|
+
from prompt_toolkit import PromptSession
|
29
|
+
|
28
30
|
_show_info(ctx)
|
29
31
|
final_result = ""
|
30
32
|
ctx.print(stylize_faint("🧑 >> ") + f"{ctx.input.message}", plain=True)
|
@@ -41,10 +43,12 @@ async def read_user_prompt(ctx: AnyContext) -> str:
|
|
41
43
|
return final_result
|
42
44
|
multiline_mode = False
|
43
45
|
user_inputs = []
|
46
|
+
user_input_session = PromptSession()
|
44
47
|
while True:
|
45
48
|
await asyncio.sleep(0.01)
|
46
49
|
ctx.print(stylize_faint("🧑 >> "), end="", plain=True)
|
47
|
-
user_input =
|
50
|
+
user_input = await user_input_session.prompt_async()
|
51
|
+
# user_input = input()
|
48
52
|
# Handle special input
|
49
53
|
if user_input.strip().lower() in ("/bye", "/quit"):
|
50
54
|
user_prompt = "\n".join(user_inputs)
|
@@ -53,9 +57,9 @@ async def read_user_prompt(ctx: AnyContext) -> str:
|
|
53
57
|
if result is not None:
|
54
58
|
final_result = result
|
55
59
|
break
|
56
|
-
elif user_input.strip().lower() in ("/multi"):
|
60
|
+
elif user_input.strip().lower() in ("/multi",):
|
57
61
|
multiline_mode = True
|
58
|
-
elif user_input.strip().lower() in ("/end"):
|
62
|
+
elif user_input.strip().lower() in ("/end",):
|
59
63
|
multiline_mode = False
|
60
64
|
user_prompt = "\n".join(user_inputs)
|
61
65
|
user_inputs = []
|
@@ -3,23 +3,17 @@ from collections.abc import Callable
|
|
3
3
|
from textwrap import dedent
|
4
4
|
from typing import TYPE_CHECKING, Any, Coroutine
|
5
5
|
|
6
|
-
if TYPE_CHECKING:
|
7
|
-
from pydantic_ai import Tool
|
8
|
-
from pydantic_ai.mcp import MCPServer
|
9
|
-
from pydantic_ai.models import Model
|
10
|
-
from pydantic_ai.settings import ModelSettings
|
11
|
-
else:
|
12
|
-
Tool = Any
|
13
|
-
MCPServer = Any
|
14
|
-
Model = Any
|
15
|
-
ModelSettings = Any
|
16
|
-
|
17
6
|
from zrb.context.any_context import AnyContext
|
18
7
|
from zrb.task.llm.agent import create_agent_instance, run_agent_iteration
|
19
8
|
from zrb.task.llm.config import get_model, get_model_settings
|
20
9
|
from zrb.task.llm.prompt import get_combined_system_prompt
|
21
10
|
|
22
11
|
if TYPE_CHECKING:
|
12
|
+
from pydantic_ai import Tool
|
13
|
+
from pydantic_ai.mcp import MCPServer
|
14
|
+
from pydantic_ai.models import Model
|
15
|
+
from pydantic_ai.settings import ModelSettings
|
16
|
+
|
23
17
|
ToolOrCallable = Tool | Callable
|
24
18
|
else:
|
25
19
|
ToolOrCallable = Any
|
@@ -29,10 +23,10 @@ def create_sub_agent_tool(
|
|
29
23
|
tool_name: str,
|
30
24
|
tool_description: str,
|
31
25
|
system_prompt: str | None = None,
|
32
|
-
model: str | Model | None = None,
|
33
|
-
model_settings: ModelSettings | None = None,
|
26
|
+
model: "str | Model | None" = None,
|
27
|
+
model_settings: "ModelSettings | None" = None,
|
34
28
|
tools: list[ToolOrCallable] = [],
|
35
|
-
mcp_servers: list[MCPServer] = [],
|
29
|
+
mcp_servers: list["MCPServer"] = [],
|
36
30
|
) -> Callable[[AnyContext, str], Coroutine[Any, Any, str]]:
|
37
31
|
"""
|
38
32
|
Create an LLM "sub-agent" tool function for use by a main LLM agent.
|
@@ -11,7 +11,6 @@ from zrb.input.text_input import TextInput
|
|
11
11
|
from zrb.task.make_task import make_task
|
12
12
|
from zrb.util.file import read_file, write_file
|
13
13
|
from zrb.util.todo import (
|
14
|
-
TodoTaskModel,
|
15
14
|
add_duration,
|
16
15
|
cascade_todo_task,
|
17
16
|
get_visual_todo_card,
|
@@ -72,6 +71,8 @@ def _get_filter_input(
|
|
72
71
|
alias="add",
|
73
72
|
)
|
74
73
|
def add_todo(ctx: AnyContext):
|
74
|
+
from zrb.util.todo_model import TodoTaskModel
|
75
|
+
|
75
76
|
todo_file_path = os.path.join(CFG.TODO_DIR, "todo.txt")
|
76
77
|
todo_list: list[TodoTaskModel] = []
|
77
78
|
if os.path.isfile(todo_file_path):
|
@@ -108,6 +109,8 @@ def add_todo(ctx: AnyContext):
|
|
108
109
|
alias="list",
|
109
110
|
)
|
110
111
|
def list_todo(ctx: AnyContext):
|
112
|
+
from zrb.util.todo_model import TodoTaskModel
|
113
|
+
|
111
114
|
todo_file_path = os.path.join(CFG.TODO_DIR, "todo.txt")
|
112
115
|
todo_list: list[TodoTaskModel] = []
|
113
116
|
if os.path.isfile(todo_file_path):
|
@@ -123,6 +126,8 @@ def list_todo(ctx: AnyContext):
|
|
123
126
|
alias="show",
|
124
127
|
)
|
125
128
|
def show_todo(ctx: AnyContext):
|
129
|
+
from zrb.util.todo_model import TodoTaskModel
|
130
|
+
|
126
131
|
todo_file_path = os.path.join(CFG.TODO_DIR, "todo.txt")
|
127
132
|
todo_list: list[TodoTaskModel] = []
|
128
133
|
todo_list: list[TodoTaskModel] = []
|
@@ -157,6 +162,8 @@ def show_todo(ctx: AnyContext):
|
|
157
162
|
alias="complete",
|
158
163
|
)
|
159
164
|
def complete_todo(ctx: AnyContext):
|
165
|
+
from zrb.util.todo_model import TodoTaskModel
|
166
|
+
|
160
167
|
todo_file_path = os.path.join(CFG.TODO_DIR, "todo.txt")
|
161
168
|
todo_list: list[TodoTaskModel] = []
|
162
169
|
if os.path.isfile(todo_file_path):
|
@@ -187,6 +194,8 @@ def complete_todo(ctx: AnyContext):
|
|
187
194
|
alias="archive",
|
188
195
|
)
|
189
196
|
def archive_todo(ctx: AnyContext):
|
197
|
+
from zrb.util.todo_model import TodoTaskModel
|
198
|
+
|
190
199
|
todo_file_path = os.path.join(CFG.TODO_DIR, "todo.txt")
|
191
200
|
todo_list: list[TodoTaskModel] = []
|
192
201
|
if os.path.isfile(todo_file_path):
|
@@ -248,6 +257,8 @@ def archive_todo(ctx: AnyContext):
|
|
248
257
|
alias="log",
|
249
258
|
)
|
250
259
|
def log_todo(ctx: AnyContext):
|
260
|
+
from zrb.util.todo_model import TodoTaskModel
|
261
|
+
|
251
262
|
todo_file_path = os.path.join(CFG.TODO_DIR, "todo.txt")
|
252
263
|
todo_list: list[TodoTaskModel] = []
|
253
264
|
if os.path.isfile(todo_file_path):
|
@@ -1,15 +1,12 @@
|
|
1
|
-
from typing import TYPE_CHECKING
|
1
|
+
from typing import TYPE_CHECKING
|
2
|
+
|
3
|
+
from zrb.config import CFG
|
2
4
|
|
3
5
|
if TYPE_CHECKING:
|
4
6
|
from pydantic_ai.models import Model
|
5
7
|
from pydantic_ai.providers import Provider
|
6
8
|
from pydantic_ai.settings import ModelSettings
|
7
|
-
else:
|
8
|
-
Model = Any
|
9
|
-
ModelSettings = Any
|
10
|
-
Provider = Any
|
11
9
|
|
12
|
-
from zrb.config import CFG
|
13
10
|
|
14
11
|
DEFAULT_PERSONA = (
|
15
12
|
"You are a helpful and precise expert assistant. Your goal is to follow "
|
@@ -217,9 +214,9 @@ class LLMConfig:
|
|
217
214
|
default_history_summarization_threshold: int | None = None,
|
218
215
|
default_enrich_context: bool | None = None,
|
219
216
|
default_context_enrichment_threshold: int | None = None,
|
220
|
-
default_model: Model | None = None,
|
221
|
-
default_model_settings: ModelSettings | None = None,
|
222
|
-
default_model_provider: Provider | None = None,
|
217
|
+
default_model: "Model | None" = None,
|
218
|
+
default_model_settings: "ModelSettings | None" = None,
|
219
|
+
default_model_provider: "Provider | None" = None,
|
223
220
|
):
|
224
221
|
self._default_model_name = default_model_name
|
225
222
|
self._default_model_base_url = default_base_url
|
@@ -266,13 +263,13 @@ class LLMConfig:
|
|
266
263
|
return CFG.LLM_API_KEY
|
267
264
|
|
268
265
|
@property
|
269
|
-
def default_model_settings(self) -> ModelSettings | None:
|
266
|
+
def default_model_settings(self) -> "ModelSettings | None":
|
270
267
|
if self._default_model_settings is not None:
|
271
268
|
return self._default_model_settings
|
272
269
|
return None
|
273
270
|
|
274
271
|
@property
|
275
|
-
def default_model_provider(self) -> Provider | str:
|
272
|
+
def default_model_provider(self) -> "Provider | str":
|
276
273
|
if self._default_model_provider is not None:
|
277
274
|
return self._default_model_provider
|
278
275
|
if self.default_model_base_url is None and self.default_model_api_key is None:
|
@@ -332,7 +329,7 @@ class LLMConfig:
|
|
332
329
|
return DEFAULT_CONTEXT_ENRICHMENT_PROMPT
|
333
330
|
|
334
331
|
@property
|
335
|
-
def default_model(self) -> Model | str | None:
|
332
|
+
def default_model(self) -> "Model | str | None":
|
336
333
|
if self._default_model is not None:
|
337
334
|
return self._default_model
|
338
335
|
model_name = self.default_model_name
|
@@ -396,10 +393,10 @@ class LLMConfig:
|
|
396
393
|
def set_default_model_base_url(self, model_base_url: str):
|
397
394
|
self._default_model_base_url = model_base_url
|
398
395
|
|
399
|
-
def set_default_model_provider(self, provider: Provider | str):
|
396
|
+
def set_default_model_provider(self, provider: "Provider | str"):
|
400
397
|
self._default_model_provider = provider
|
401
398
|
|
402
|
-
def set_default_model(self, model: Model | str):
|
399
|
+
def set_default_model(self, model: "Model | str"):
|
403
400
|
self._default_model = model
|
404
401
|
|
405
402
|
def set_default_summarize_history(self, summarize_history: bool):
|
@@ -418,7 +415,7 @@ class LLMConfig:
|
|
418
415
|
):
|
419
416
|
self._default_context_enrichment_threshold = context_enrichment_threshold
|
420
417
|
|
421
|
-
def set_default_model_settings(self, model_settings: ModelSettings):
|
418
|
+
def set_default_model_settings(self, model_settings: "ModelSettings"):
|
422
419
|
self._default_model_settings = model_settings
|
423
420
|
|
424
421
|
|
@@ -7,7 +7,6 @@ from zrb.context.shared_context import SharedContext
|
|
7
7
|
from zrb.group.any_group import AnyGroup
|
8
8
|
from zrb.group.group import Group
|
9
9
|
from zrb.runner.common_util import get_run_kwargs
|
10
|
-
from zrb.runner.web_app import create_web_app
|
11
10
|
from zrb.runner.web_auth_config import web_auth_config
|
12
11
|
from zrb.session.session import Session
|
13
12
|
from zrb.session_state_logger.session_state_logger_factory import session_state_logger
|
@@ -187,6 +186,8 @@ server_group = cli.add_group(
|
|
187
186
|
async def start_server(_: AnyContext):
|
188
187
|
from uvicorn import Config, Server
|
189
188
|
|
189
|
+
from zrb.runner.web_app import create_web_app
|
190
|
+
|
190
191
|
app = create_web_app(cli, web_auth_config, session_state_logger)
|
191
192
|
server = Server(
|
192
193
|
Config(
|
@@ -1,9 +1,11 @@
|
|
1
|
-
from typing import Callable
|
1
|
+
from typing import TYPE_CHECKING, Callable
|
2
2
|
|
3
3
|
from zrb.config import CFG
|
4
|
-
from zrb.runner.web_schema.user import User
|
5
4
|
from zrb.task.any_task import AnyTask
|
6
5
|
|
6
|
+
if TYPE_CHECKING:
|
7
|
+
from zrb.runner.web_schema.user import User
|
8
|
+
|
7
9
|
|
8
10
|
class WebAuthConfig:
|
9
11
|
def __init__(
|
@@ -18,7 +20,7 @@ class WebAuthConfig:
|
|
18
20
|
super_admin_password: str | None = None,
|
19
21
|
guest_username: str | None = None,
|
20
22
|
guest_accessible_tasks: list[AnyTask | str] = [],
|
21
|
-
find_user_by_username: Callable[[str], User | None] | None = None,
|
23
|
+
find_user_by_username: Callable[[str], "User | None"] | None = None,
|
22
24
|
):
|
23
25
|
self._secret_key = secret_key
|
24
26
|
self._access_token_expire_minutes = access_token_expire_minutes
|
@@ -29,7 +31,7 @@ class WebAuthConfig:
|
|
29
31
|
self._super_admin_username = super_admin_username
|
30
32
|
self._super_admin_password = super_admin_password
|
31
33
|
self._guest_username = guest_username
|
32
|
-
self._user_list = []
|
34
|
+
self._user_list: list["User"] = []
|
33
35
|
self._guest_accessible_tasks = guest_accessible_tasks
|
34
36
|
self._find_user_by_username = find_user_by_username
|
35
37
|
|
@@ -92,7 +94,9 @@ class WebAuthConfig:
|
|
92
94
|
return self._guest_accessible_tasks
|
93
95
|
|
94
96
|
@property
|
95
|
-
def default_user(self) -> User:
|
97
|
+
def default_user(self) -> "User":
|
98
|
+
from zrb.runner.web_schema.user import User
|
99
|
+
|
96
100
|
if self.enable_auth:
|
97
101
|
return User(
|
98
102
|
username=self.guest_username,
|
@@ -108,7 +112,9 @@ class WebAuthConfig:
|
|
108
112
|
)
|
109
113
|
|
110
114
|
@property
|
111
|
-
def super_admin(self) -> User:
|
115
|
+
def super_admin(self) -> "User":
|
116
|
+
from zrb.runner.web_schema.user import User
|
117
|
+
|
112
118
|
return User(
|
113
119
|
username=self.super_admin_username,
|
114
120
|
password=self.super_admin_password,
|
@@ -116,7 +122,7 @@ class WebAuthConfig:
|
|
116
122
|
)
|
117
123
|
|
118
124
|
@property
|
119
|
-
def user_list(self) -> list[User]:
|
125
|
+
def user_list(self) -> list["User"]:
|
120
126
|
if not self.enable_auth:
|
121
127
|
return [self.default_user]
|
122
128
|
return self._user_list + [self.super_admin, self.default_user]
|
@@ -152,11 +158,11 @@ class WebAuthConfig:
|
|
152
158
|
self._guest_accessible_tasks = tasks
|
153
159
|
|
154
160
|
def set_find_user_by_username(
|
155
|
-
self, find_user_by_username: Callable[[str], User | None]
|
161
|
+
self, find_user_by_username: Callable[[str], "User | None"]
|
156
162
|
):
|
157
163
|
self._find_user_by_username = find_user_by_username
|
158
164
|
|
159
|
-
def append_user(self, user: User):
|
165
|
+
def append_user(self, user: "User"):
|
160
166
|
duplicates = [
|
161
167
|
existing_user
|
162
168
|
for existing_user in self.user_list
|
@@ -166,7 +172,7 @@ class WebAuthConfig:
|
|
166
172
|
raise ValueError(f"User already exists {user.username}")
|
167
173
|
self._user_list.append(user)
|
168
174
|
|
169
|
-
def find_user_by_username(self, username: str) -> User | None:
|
175
|
+
def find_user_by_username(self, username: str) -> "User | None":
|
170
176
|
user = None
|
171
177
|
if self._find_user_by_username is not None:
|
172
178
|
user = self._find_user_by_username(username)
|
@@ -9,16 +9,18 @@ from zrb.runner.web_auth_config import WebAuthConfig
|
|
9
9
|
from zrb.runner.web_schema.session import NewSessionResponse
|
10
10
|
from zrb.runner.web_util.user import get_user_from_request
|
11
11
|
from zrb.session.session import Session
|
12
|
-
from zrb.session_state_log.session_state_log import SessionStateLog, SessionStateLogList
|
13
12
|
from zrb.session_state_logger.any_session_state_logger import AnySessionStateLogger
|
14
13
|
from zrb.task.any_task import AnyTask
|
15
14
|
from zrb.util.group import NodeNotFoundError, extract_node_from_args, get_node_path
|
16
15
|
|
17
16
|
if TYPE_CHECKING:
|
18
|
-
# We want fastapi to only be loaded when necessary to decrease footprint
|
19
|
-
|
20
17
|
from fastapi import FastAPI
|
21
18
|
|
19
|
+
from zrb.session_state_log.session_state_log import (
|
20
|
+
SessionStateLog,
|
21
|
+
SessionStateLogList,
|
22
|
+
)
|
23
|
+
|
22
24
|
|
23
25
|
def serve_task_session_api(
|
24
26
|
app: "FastAPI",
|
@@ -30,6 +32,11 @@ def serve_task_session_api(
|
|
30
32
|
from fastapi import Query, Request
|
31
33
|
from fastapi.responses import JSONResponse
|
32
34
|
|
35
|
+
from zrb.session_state_log.session_state_log import (
|
36
|
+
SessionStateLog,
|
37
|
+
SessionStateLogList,
|
38
|
+
)
|
39
|
+
|
33
40
|
@app.post("/api/v1/task-sessions/{path:path}")
|
34
41
|
async def create_new_task_session_api(
|
35
42
|
path: str,
|
@@ -110,8 +117,10 @@ def serve_task_session_api(
|
|
110
117
|
|
111
118
|
|
112
119
|
def sanitize_session_state_log_list(
|
113
|
-
task: AnyTask, session_state_log_list: SessionStateLogList
|
114
|
-
) -> SessionStateLogList:
|
120
|
+
task: AnyTask, session_state_log_list: "SessionStateLogList"
|
121
|
+
) -> "SessionStateLogList":
|
122
|
+
from zrb.session_state_log.session_state_log import SessionStateLogList
|
123
|
+
|
115
124
|
return SessionStateLogList(
|
116
125
|
total=session_state_log_list.total,
|
117
126
|
data=[
|
@@ -122,8 +131,8 @@ def sanitize_session_state_log_list(
|
|
122
131
|
|
123
132
|
|
124
133
|
def sanitize_session_state_log(
|
125
|
-
task: AnyTask, session_state_log: SessionStateLog
|
126
|
-
) -> SessionStateLog:
|
134
|
+
task: AnyTask, session_state_log: "SessionStateLog"
|
135
|
+
) -> "SessionStateLog":
|
127
136
|
"""
|
128
137
|
In session, we create snake_case aliases of inputs.
|
129
138
|
The purpose was to increase ergonomics, so that user can use `input.system_prompt`
|
@@ -131,6 +140,8 @@ def sanitize_session_state_log(
|
|
131
140
|
However, when we serve the session through HTTP API,
|
132
141
|
we only want to show the original input names.
|
133
142
|
"""
|
143
|
+
from zrb.session_state_log.session_state_log import SessionStateLog
|
144
|
+
|
134
145
|
enhanced_inputs = session_state_log.input
|
135
146
|
real_inputs = {}
|
136
147
|
for real_input in task.inputs:
|
@@ -5,13 +5,14 @@ from typing import TYPE_CHECKING, Any, Coroutine, TypeVar
|
|
5
5
|
|
6
6
|
from zrb.context.any_context import AnyContext
|
7
7
|
from zrb.group.any_group import AnyGroup
|
8
|
-
from zrb.session_state_log.session_state_log import SessionStateLog
|
9
8
|
from zrb.session_state_logger.any_session_state_logger import AnySessionStateLogger
|
10
9
|
from zrb.task_status.task_status import TaskStatus
|
11
10
|
|
12
11
|
if TYPE_CHECKING:
|
13
|
-
from zrb.context import
|
14
|
-
from zrb.
|
12
|
+
from zrb.context.any_shared_context import AnySharedContext
|
13
|
+
from zrb.session_state_log.session_state_log import SessionStateLog
|
14
|
+
from zrb.task.any_task import AnyTask
|
15
|
+
|
15
16
|
|
16
17
|
TAnySession = TypeVar("TAnySession", bound="AnySession")
|
17
18
|
|
@@ -44,7 +45,7 @@ class AnySession(ABC):
|
|
44
45
|
|
45
46
|
@property
|
46
47
|
@abstractmethod
|
47
|
-
def shared_ctx(self) ->
|
48
|
+
def shared_ctx(self) -> "AnySharedContext":
|
48
49
|
"""Shared context for this session"""
|
49
50
|
pass
|
50
51
|
|
@@ -83,16 +84,16 @@ class AnySession(ABC):
|
|
83
84
|
pass
|
84
85
|
|
85
86
|
@abstractmethod
|
86
|
-
def set_main_task(self, main_task:
|
87
|
+
def set_main_task(self, main_task: "AnyTask"):
|
87
88
|
"""Set main task"""
|
88
89
|
pass
|
89
90
|
|
90
91
|
@abstractmethod
|
91
|
-
def as_state_log(self) -> SessionStateLog:
|
92
|
+
def as_state_log(self) -> "SessionStateLog":
|
92
93
|
pass
|
93
94
|
|
94
95
|
@abstractmethod
|
95
|
-
def get_ctx(self, task:
|
96
|
+
def get_ctx(self, task: "AnyTask") -> AnyContext:
|
96
97
|
"""Retrieves the context for a specific task.
|
97
98
|
|
98
99
|
Args:
|
@@ -104,7 +105,7 @@ class AnySession(ABC):
|
|
104
105
|
pass
|
105
106
|
|
106
107
|
@abstractmethod
|
107
|
-
def defer_monitoring(self, task:
|
108
|
+
def defer_monitoring(self, task: "AnyTask", coro: Coroutine):
|
108
109
|
"""Defers the execution of a task's monitoring coroutine for later processing.
|
109
110
|
|
110
111
|
Args:
|
@@ -114,7 +115,7 @@ class AnySession(ABC):
|
|
114
115
|
pass
|
115
116
|
|
116
117
|
@abstractmethod
|
117
|
-
def defer_action(self, task:
|
118
|
+
def defer_action(self, task: "AnyTask", coro: Coroutine):
|
118
119
|
"""Defers the execution of a task's coroutine for later processing.
|
119
120
|
|
120
121
|
Args:
|
@@ -138,7 +139,7 @@ class AnySession(ABC):
|
|
138
139
|
pass
|
139
140
|
|
140
141
|
@abstractmethod
|
141
|
-
def register_task(self, task:
|
142
|
+
def register_task(self, task: "AnyTask"):
|
142
143
|
"""Registers a new task in the session.
|
143
144
|
|
144
145
|
Args:
|
@@ -147,7 +148,7 @@ class AnySession(ABC):
|
|
147
148
|
pass
|
148
149
|
|
149
150
|
@abstractmethod
|
150
|
-
def get_root_tasks(self, task:
|
151
|
+
def get_root_tasks(self, task: "AnyTask") -> list["AnyTask"]:
|
151
152
|
"""Retrieves the list of root tasks that should be executed first
|
152
153
|
to run the given task.
|
153
154
|
|
@@ -160,7 +161,7 @@ class AnySession(ABC):
|
|
160
161
|
pass
|
161
162
|
|
162
163
|
@abstractmethod
|
163
|
-
def get_next_tasks(self, task:
|
164
|
+
def get_next_tasks(self, task: "AnyTask") -> list["AnyTask"]:
|
164
165
|
"""Retrieves the list of tasks that should be executed after the given task.
|
165
166
|
|
166
167
|
Args:
|
@@ -172,7 +173,7 @@ class AnySession(ABC):
|
|
172
173
|
pass
|
173
174
|
|
174
175
|
@abstractmethod
|
175
|
-
def get_task_status(self, task:
|
176
|
+
def get_task_status(self, task: "AnyTask") -> TaskStatus:
|
176
177
|
"""Get tasks' status.
|
177
178
|
|
178
179
|
Args:
|
@@ -184,7 +185,7 @@ class AnySession(ABC):
|
|
184
185
|
pass
|
185
186
|
|
186
187
|
@abstractmethod
|
187
|
-
def is_allowed_to_run(self, task:
|
188
|
+
def is_allowed_to_run(self, task: "AnyTask"):
|
188
189
|
"""Determines if the specified task is allowed to run based on its current state.
|
189
190
|
|
190
191
|
Args:
|
@@ -1,15 +1,10 @@
|
|
1
1
|
import asyncio
|
2
|
-
from typing import Any, Coroutine
|
2
|
+
from typing import TYPE_CHECKING, Any, Coroutine
|
3
3
|
|
4
4
|
from zrb.context.any_shared_context import AnySharedContext
|
5
5
|
from zrb.context.context import AnyContext, Context
|
6
6
|
from zrb.group.any_group import AnyGroup
|
7
7
|
from zrb.session.any_session import AnySession
|
8
|
-
from zrb.session_state_log.session_state_log import (
|
9
|
-
SessionStateLog,
|
10
|
-
TaskStatusHistoryStateLog,
|
11
|
-
TaskStatusStateLog,
|
12
|
-
)
|
13
8
|
from zrb.session_state_logger.any_session_state_logger import AnySessionStateLogger
|
14
9
|
from zrb.session_state_logger.session_state_logger_factory import session_state_logger
|
15
10
|
from zrb.task.any_task import AnyTask
|
@@ -32,6 +27,9 @@ from zrb.util.group import get_node_path
|
|
32
27
|
from zrb.util.string.name import get_random_name
|
33
28
|
from zrb.xcom.xcom import Xcom
|
34
29
|
|
30
|
+
if TYPE_CHECKING:
|
31
|
+
from zrb.session_state_log.session_state_log import SessionStateLog
|
32
|
+
|
35
33
|
|
36
34
|
class Session(AnySession):
|
37
35
|
def __init__(
|
@@ -139,7 +137,13 @@ class Session(AnySession):
|
|
139
137
|
main_task_path = get_node_path(self._root_group, main_task)
|
140
138
|
self._main_task_path = [] if main_task_path is None else main_task_path
|
141
139
|
|
142
|
-
def as_state_log(self) -> SessionStateLog:
|
140
|
+
def as_state_log(self) -> "SessionStateLog":
|
141
|
+
from zrb.session_state_log.session_state_log import (
|
142
|
+
SessionStateLog,
|
143
|
+
TaskStatusHistoryStateLog,
|
144
|
+
TaskStatusStateLog,
|
145
|
+
)
|
146
|
+
|
143
147
|
task_status_log: dict[str, TaskStatusStateLog] = {}
|
144
148
|
log_start_time = ""
|
145
149
|
for task, task_status in self._task_status.items():
|
@@ -1,16 +1,21 @@
|
|
1
1
|
import datetime
|
2
2
|
from abc import ABC, abstractmethod
|
3
|
+
from typing import TYPE_CHECKING
|
3
4
|
|
4
|
-
|
5
|
+
if TYPE_CHECKING:
|
6
|
+
from zrb.session_state_log.session_state_log import (
|
7
|
+
SessionStateLog,
|
8
|
+
SessionStateLogList,
|
9
|
+
)
|
5
10
|
|
6
11
|
|
7
12
|
class AnySessionStateLogger(ABC):
|
8
13
|
@abstractmethod
|
9
|
-
def write(self, session_log: SessionStateLog):
|
14
|
+
def write(self, session_log: "SessionStateLog"):
|
10
15
|
pass
|
11
16
|
|
12
17
|
@abstractmethod
|
13
|
-
def read(self, session_name: str) -> SessionStateLog:
|
18
|
+
def read(self, session_name: str) -> "SessionStateLog":
|
14
19
|
pass
|
15
20
|
|
16
21
|
@abstractmethod
|
@@ -21,5 +26,5 @@ class AnySessionStateLogger(ABC):
|
|
21
26
|
max_start_time: datetime.datetime,
|
22
27
|
page: int = 0,
|
23
28
|
limit: int = 10,
|
24
|
-
) -> SessionStateLogList:
|
29
|
+
) -> "SessionStateLogList":
|
25
30
|
pass
|
@@ -1,16 +1,22 @@
|
|
1
1
|
import datetime
|
2
2
|
import os
|
3
|
+
from typing import TYPE_CHECKING
|
3
4
|
|
4
|
-
from zrb.session_state_log.session_state_log import SessionStateLog, SessionStateLogList
|
5
5
|
from zrb.session_state_logger.any_session_state_logger import AnySessionStateLogger
|
6
6
|
from zrb.util.file import read_file, write_file
|
7
7
|
|
8
|
+
if TYPE_CHECKING:
|
9
|
+
from zrb.session_state_log.session_state_log import (
|
10
|
+
SessionStateLog,
|
11
|
+
SessionStateLogList,
|
12
|
+
)
|
13
|
+
|
8
14
|
|
9
15
|
class FileSessionStateLogger(AnySessionStateLogger):
|
10
16
|
def __init__(self, session_log_dir: str):
|
11
17
|
self._session_log_dir = session_log_dir
|
12
18
|
|
13
|
-
def write(self, session_log: SessionStateLog):
|
19
|
+
def write(self, session_log: "SessionStateLog"):
|
14
20
|
session_file_path = self._get_session_file_path(session_log.name)
|
15
21
|
session_dir_path = os.path.dirname(session_file_path)
|
16
22
|
if not os.path.isdir(session_dir_path):
|
@@ -22,7 +28,9 @@ class FileSessionStateLogger(AnySessionStateLogger):
|
|
22
28
|
timeline_dir_path = self._get_timeline_dir_path(session_log)
|
23
29
|
write_file(os.path.join(timeline_dir_path, session_log.name), "")
|
24
30
|
|
25
|
-
def read(self, session_name: str) -> SessionStateLog:
|
31
|
+
def read(self, session_name: str) -> "SessionStateLog":
|
32
|
+
from zrb.session_state_log.session_state_log import SessionStateLog
|
33
|
+
|
26
34
|
session_file_path = self._get_session_file_path(session_name)
|
27
35
|
return SessionStateLog.model_validate_json(read_file(session_file_path))
|
28
36
|
|
@@ -33,7 +41,9 @@ class FileSessionStateLogger(AnySessionStateLogger):
|
|
33
41
|
max_start_time: datetime.datetime,
|
34
42
|
page: int = 0,
|
35
43
|
limit: int = 10,
|
36
|
-
) -> SessionStateLogList:
|
44
|
+
) -> "SessionStateLogList":
|
45
|
+
from zrb.session_state_log.session_state_log import SessionStateLogList
|
46
|
+
|
37
47
|
matching_sessions = []
|
38
48
|
# Traverse the timeline directory and filter sessions
|
39
49
|
timeline_dir = os.path.join(self._session_log_dir, "_timeline", *task_path)
|
@@ -62,7 +72,7 @@ class FileSessionStateLogger(AnySessionStateLogger):
|
|
62
72
|
def _get_session_file_path(self, session_name: str) -> str:
|
63
73
|
return os.path.join(self._session_log_dir, f"{session_name}.json")
|
64
74
|
|
65
|
-
def _get_timeline_dir_path(self, session_log: SessionStateLog) -> str:
|
75
|
+
def _get_timeline_dir_path(self, session_log: "SessionStateLog") -> str:
|
66
76
|
start_time = self._get_start_time(session_log)
|
67
77
|
year = start_time.year
|
68
78
|
month = start_time.month
|
@@ -80,7 +90,7 @@ class FileSessionStateLogger(AnySessionStateLogger):
|
|
80
90
|
]
|
81
91
|
return os.path.join(self._session_log_dir, "_timeline", *paths)
|
82
92
|
|
83
|
-
def _get_start_time(self, session_log: SessionStateLog) -> datetime.datetime:
|
93
|
+
def _get_start_time(self, session_log: "SessionStateLog") -> datetime.datetime:
|
84
94
|
return datetime.datetime.strptime(
|
85
95
|
session_log.start_time, "%Y-%m-%d %H:%M:%S.%f"
|
86
96
|
)
|