zrb 1.5.8__tar.gz → 1.5.10__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.5.8 → zrb-1.5.10}/PKG-INFO +2 -2
- {zrb-1.5.8 → zrb-1.5.10}/pyproject.toml +2 -2
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/llm/tool/file.py +1 -3
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/llm_config.py +82 -46
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/any_task.py +22 -6
- zrb-1.5.10/src/zrb/task/base/context.py +108 -0
- zrb-1.5.10/src/zrb/task/base/dependencies.py +57 -0
- zrb-1.5.10/src/zrb/task/base/execution.py +274 -0
- zrb-1.5.10/src/zrb/task/base/lifecycle.py +182 -0
- zrb-1.5.10/src/zrb/task/base/monitoring.py +134 -0
- zrb-1.5.10/src/zrb/task/base/operators.py +41 -0
- zrb-1.5.10/src/zrb/task/base_task.py +243 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/llm/context_enrichment.py +6 -3
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/llm/history_summarization.py +10 -7
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/llm/prompt.py +64 -3
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/llm_task.py +26 -16
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/scheduler.py +1 -2
- zrb-1.5.10/src/zrb/xcom/__init__.py +0 -0
- zrb-1.5.8/src/zrb/task/base_task.py +0 -533
- {zrb-1.5.8 → zrb-1.5.10}/README.md +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/__main__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/attr/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/attr/type.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/base64.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/git.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/git_subtree.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/group.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/llm/history.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/llm/input.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/llm/llm_chat.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/llm/previous-session.js +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/llm/tool/api.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/llm/tool/cli.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/llm/tool/rag.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/llm/tool/web.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/md5.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/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.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/create/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/create/project-template/README.md +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/project/create/project_task.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/python.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/random.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/setup/common_input.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/setup/ubuntu.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/shell/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/builtin/todo.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/callback/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/callback/any_callback.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/callback/callback.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/cmd/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/cmd/cmd_result.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/cmd/cmd_val.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/config.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/content_transformer/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/content_transformer/any_content_transformer.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/content_transformer/content_transformer.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/context/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/context/any_context.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/context/any_shared_context.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/context/context.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/context/shared_context.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/dot_dict/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/dot_dict/dot_dict.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/env/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/env/any_env.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/env/env.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/env/env_file.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/env/env_map.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/group/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/group/any_group.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/group/group.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/input/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/input/any_input.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/input/base_input.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/input/bool_input.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/input/float_input.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/input/int_input.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/input/option_input.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/input/password_input.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/input/str_input.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/input/text_input.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/cli.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/common_util.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_app.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_config/config.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_config/config_factory.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/docs_route.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/error_page/view.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/home_page/view.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/login_api_route.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/login_page/view.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/logout_api_route.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/logout_page/view.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/static/resources/common.css +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/static/resources/pico.min.css +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/static/static_route.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_schema/session.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_schema/token.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_schema/user.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_util/cookie.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_util/html.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_util/token.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/runner/web_util/user.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/session/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/session/any_session.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/session/session.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/session_state_log/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/session_state_log/session_state_log.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/session_state_logger/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/__init__.py +0 -0
- {zrb-1.5.8/src/zrb/task/llm → zrb-1.5.10/src/zrb/task/base}/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/base_trigger.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/cmd_task.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/http_check.py +0 -0
- {zrb-1.5.8/src/zrb/task_status → zrb-1.5.10/src/zrb/task/llm}/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/llm/agent.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/llm/config.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/llm/context.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/llm/error.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/llm/history.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/llm/print_node.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/llm/tool_wrapper.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/llm/typing.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/make_task.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/rsync_task.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/scaffolder.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/task.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task/tcp_check.py +0 -0
- {zrb-1.5.8/src/zrb/util → zrb-1.5.10/src/zrb/task_status}/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/task_status/task_status.py +0 -0
- {zrb-1.5.8/src/zrb/util/cli → zrb-1.5.10/src/zrb/util}/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/attr.py +0 -0
- {zrb-1.5.8/src/zrb/util/cmd → zrb-1.5.10/src/zrb/util/cli}/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/cli/style.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/cli/subcommand.py +0 -0
- {zrb-1.5.8/src/zrb/util/codemod → zrb-1.5.10/src/zrb/util/cmd}/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/cmd/command.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/cmd/remote.py +0 -0
- {zrb-1.5.8/src/zrb/util/string → zrb-1.5.10/src/zrb/util/codemod}/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/codemod/modification_mode.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/codemod/modify_class.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/codemod/modify_class_parent.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/codemod/modify_class_property.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/codemod/modify_dict.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/codemod/modify_function.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/codemod/modify_function_call.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/codemod/modify_method.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/codemod/modify_module.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/cron.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/file.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/git.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/git_subtree.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/group.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/load.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/run.py +0 -0
- {zrb-1.5.8/src/zrb/xcom → zrb-1.5.10/src/zrb/util/string}/__init__.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/string/conversion.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/string/format.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/string/name.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/util/todo.py +0 -0
- {zrb-1.5.8 → zrb-1.5.10}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: zrb
|
3
|
-
Version: 1.5.
|
3
|
+
Version: 1.5.10
|
4
4
|
Summary: Your Automation Powerhouse
|
5
5
|
Home-page: https://github.com/state-alchemists/zrb
|
6
6
|
License: AGPL-3.0-or-later
|
@@ -26,7 +26,7 @@ Requires-Dist: openai (>=1.70.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.51.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.1.2,<0.2.0)
|
30
30
|
Requires-Dist: python-dotenv (>=1.1.0,<2.0.0)
|
31
31
|
Requires-Dist: python-jose[cryptography] (>=3.4.0,<4.0.0)
|
32
32
|
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "zrb"
|
3
|
-
version = "1.5.
|
3
|
+
version = "1.5.10"
|
4
4
|
description = "Your Automation Powerhouse"
|
5
5
|
authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
|
6
6
|
license = "AGPL-3.0-or-later"
|
@@ -49,7 +49,7 @@ beautifulsoup4 = "^4.13.3"
|
|
49
49
|
fastapi = {extras = ["standard"], version = "^0.115.12"}
|
50
50
|
python-jose = {extras = ["cryptography"], version = "^3.4.0"}
|
51
51
|
ulid-py = "^1.1.0"
|
52
|
-
pydantic-ai = "^0.
|
52
|
+
pydantic-ai = "^0.1.2"
|
53
53
|
openai = {version = "^1.70.0", optional = true}
|
54
54
|
playwright = {version = "^1.51.0", optional = true}
|
55
55
|
psutil = "^7.0.0"
|
@@ -132,9 +132,7 @@ def list_files(
|
|
132
132
|
all_files.append(full_path)
|
133
133
|
# Return paths relative to the original path requested
|
134
134
|
try:
|
135
|
-
rel_files = [
|
136
|
-
os.path.relpath(f, os.path.dirname(abs_path)) for f in all_files
|
137
|
-
]
|
135
|
+
rel_files = [os.path.relpath(f, abs_path) for f in all_files]
|
138
136
|
return json.dumps({"files": sorted(rel_files)})
|
139
137
|
except (
|
140
138
|
ValueError
|
@@ -5,62 +5,45 @@ from pydantic_ai.models.openai import OpenAIModel
|
|
5
5
|
from pydantic_ai.providers import Provider
|
6
6
|
from pydantic_ai.providers.openai import OpenAIProvider
|
7
7
|
|
8
|
+
from zrb.util.string.conversion import to_boolean
|
9
|
+
|
8
10
|
DEFAULT_SYSTEM_PROMPT = """
|
9
|
-
You
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
them. Handle tool errors gracefully and retry or adapt your strategy if necessary.
|
18
|
-
3. **Accuracy is Paramount:** Ensure all information, code, or outputs provided are
|
19
|
-
correct and reliable. Verify facts and generate executable code when requested.
|
20
|
-
4. **Clarity and Conciseness:** Respond clearly and directly to the user's query
|
21
|
-
after gathering the necessary information. Avoid unnecessary conversation.
|
22
|
-
5. **Context Awareness:** Understand the user's request fully to provide the most
|
23
|
-
relevant and effective assistance.
|
11
|
+
You have access to tools.
|
12
|
+
Your goal is to complete the user's task efficiently.
|
13
|
+
Analyze the request and use the available tools proactively to achieve the goal.
|
14
|
+
Infer parameters and actions from the context.
|
15
|
+
Do not ask for confirmation unless strictly necessary due to ambiguity or
|
16
|
+
missing critical information.
|
17
|
+
Apply relevant domain knowledge and best practices.
|
18
|
+
Respond directly and concisely upon task completion or when clarification is essential.
|
24
19
|
""".strip()
|
25
20
|
|
26
21
|
DEFAULT_PERSONA = """
|
27
22
|
You are an expert in various fields including technology, science, history, and more.
|
28
23
|
""".strip()
|
29
24
|
|
25
|
+
# Concise summarization focused on preserving critical context for continuity.
|
30
26
|
DEFAULT_SUMMARIZATION_PROMPT = """
|
31
|
-
You are a summarization assistant.
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
history. Create a single, coherent summary that captures ALL essential
|
39
|
-
information, including:
|
40
|
-
- Key decisions made
|
41
|
-
- Actions taken (including tool usage and their results)
|
42
|
-
- Important facts or data points mentioned
|
43
|
-
- Outcomes of discussions or actions
|
44
|
-
- Any unresolved questions or pending items
|
45
|
-
The goal is to provide a complete yet concise background so that the main
|
46
|
-
assistant can seamlessly continue the conversation without losing critical
|
47
|
-
context from the summarized parts.
|
48
|
-
Output *only* the updated summary text."
|
27
|
+
You are a summarization assistant. Create an updated, concise summary integrating
|
28
|
+
the previous summary (if any) with the new conversation history.
|
29
|
+
Your primary goal is to preserve ALL critical context needed for the main assistant
|
30
|
+
to continue the task effectively. This includes key facts, decisions, tool usage
|
31
|
+
results, and essential background. Do not omit details that would force the main
|
32
|
+
assistant to re-gather information.
|
33
|
+
Output *only* the updated summary text.
|
49
34
|
""".strip()
|
50
35
|
|
51
36
|
DEFAULT_CONTEXT_ENRICHMENT_PROMPT = """
|
52
37
|
You are an information extraction assistant.
|
53
|
-
Analyze the conversation history and current context to extract key facts
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
- goals
|
58
|
-
- etc
|
59
|
-
Return only a JSON object containing a single key "response",
|
60
|
-
whose value is another JSON object with these details.
|
38
|
+
Analyze the conversation history and current context to extract key facts like
|
39
|
+
user_name, user_roles, preferences, goals, etc.
|
40
|
+
Return only a JSON object containing a single key "response", whose value is
|
41
|
+
another JSON object with these details.
|
61
42
|
If nothing is found, output {"response": {}}.
|
62
43
|
""".strip()
|
63
44
|
|
45
|
+
DEFAULT_SPECIAL_INSTRUCTION_PROMPT = "" # Default to empty
|
46
|
+
|
64
47
|
|
65
48
|
class LLMConfig:
|
66
49
|
|
@@ -71,8 +54,12 @@ class LLMConfig:
|
|
71
54
|
default_api_key: str | None = None,
|
72
55
|
default_persona: str | None = None,
|
73
56
|
default_system_prompt: str | None = None,
|
57
|
+
default_special_instruction_prompt: str | None = None,
|
74
58
|
default_summarization_prompt: str | None = None,
|
75
59
|
default_context_enrichment_prompt: str | None = None,
|
60
|
+
default_summarize_history: bool | None = None,
|
61
|
+
default_history_summarization_threshold: int | None = None,
|
62
|
+
default_enrich_context: bool | None = None,
|
76
63
|
):
|
77
64
|
self._default_model_name = (
|
78
65
|
default_model_name
|
@@ -99,6 +86,11 @@ class LLMConfig:
|
|
99
86
|
if default_persona is not None
|
100
87
|
else os.getenv("ZRB_LLM_PERSONA", None)
|
101
88
|
)
|
89
|
+
self._default_special_instruction_prompt = (
|
90
|
+
default_special_instruction_prompt
|
91
|
+
if default_special_instruction_prompt is not None
|
92
|
+
else os.getenv("ZRB_LLM_SPECIAL_INSTRUCTION_PROMPT", None)
|
93
|
+
)
|
102
94
|
self._default_summarization_prompt = (
|
103
95
|
default_summarization_prompt
|
104
96
|
if default_summarization_prompt is not None
|
@@ -109,6 +101,21 @@ class LLMConfig:
|
|
109
101
|
if default_context_enrichment_prompt is not None
|
110
102
|
else os.getenv("ZRB_LLM_CONTEXT_ENRICHMENT_PROMPT", None)
|
111
103
|
)
|
104
|
+
self._default_summarize_history = (
|
105
|
+
default_summarize_history
|
106
|
+
if default_summarize_history is not None
|
107
|
+
else os.getenv("ZRB_LLM_SUMMARIZE_HISTORY", "true").lower() == "true"
|
108
|
+
)
|
109
|
+
self._default_history_summarization_threshold = (
|
110
|
+
default_history_summarization_threshold
|
111
|
+
if default_history_summarization_threshold is not None
|
112
|
+
else int(os.getenv("ZRB_LLM_HISTORY_SUMMARIZATION_THRESHOLD", "5"))
|
113
|
+
)
|
114
|
+
self._default_enrich_context = (
|
115
|
+
default_enrich_context
|
116
|
+
if default_enrich_context is not None
|
117
|
+
else to_boolean(os.getenv("ZRB_LLM_ENRICH_CONTEXT", "0"))
|
118
|
+
)
|
112
119
|
self._default_provider = None
|
113
120
|
self._default_model = None
|
114
121
|
|
@@ -127,17 +134,23 @@ class LLMConfig:
|
|
127
134
|
)
|
128
135
|
|
129
136
|
def get_default_system_prompt(self) -> str:
|
130
|
-
|
137
|
+
return (
|
131
138
|
DEFAULT_SYSTEM_PROMPT
|
132
139
|
if self._default_system_prompt is None
|
133
140
|
else self._default_system_prompt
|
134
141
|
)
|
135
|
-
|
142
|
+
|
143
|
+
def get_default_persona(self) -> str:
|
144
|
+
return (
|
136
145
|
DEFAULT_PERSONA if self._default_persona is None else self._default_persona
|
137
146
|
)
|
138
|
-
|
139
|
-
|
140
|
-
return
|
147
|
+
|
148
|
+
def get_default_special_instruction_prompt(self) -> str:
|
149
|
+
return (
|
150
|
+
DEFAULT_SPECIAL_INSTRUCTION_PROMPT
|
151
|
+
if self._default_special_instruction_prompt is None
|
152
|
+
else self._default_special_instruction_prompt
|
153
|
+
)
|
141
154
|
|
142
155
|
def get_default_summarization_prompt(self) -> str:
|
143
156
|
return (
|
@@ -164,12 +177,24 @@ class LLMConfig:
|
|
164
177
|
provider=self.get_default_model_provider(),
|
165
178
|
)
|
166
179
|
|
180
|
+
def get_default_summarize_history(self) -> bool:
|
181
|
+
return self._default_summarize_history
|
182
|
+
|
183
|
+
def get_default_history_summarization_threshold(self) -> int:
|
184
|
+
return self._default_history_summarization_threshold
|
185
|
+
|
186
|
+
def get_default_enrich_context(self) -> bool:
|
187
|
+
return self._default_enrich_context
|
188
|
+
|
167
189
|
def set_default_persona(self, persona: str):
|
168
190
|
self._default_persona = persona
|
169
191
|
|
170
192
|
def set_default_system_prompt(self, system_prompt: str):
|
171
193
|
self._default_system_prompt = system_prompt
|
172
194
|
|
195
|
+
def set_default_special_instruction_prompt(self, special_instruction_prompt: str):
|
196
|
+
self._default_special_instruction_prompt = special_instruction_prompt
|
197
|
+
|
173
198
|
def set_default_summarization_prompt(self, summarization_prompt: str):
|
174
199
|
self._default_summarization_prompt = summarization_prompt
|
175
200
|
|
@@ -191,5 +216,16 @@ class LLMConfig:
|
|
191
216
|
def set_default_model(self, model: Model | str | None):
|
192
217
|
self._default_model = model
|
193
218
|
|
219
|
+
def set_default_summarize_history(self, summarize_history: bool):
|
220
|
+
self._default_summarize_history = summarize_history
|
221
|
+
|
222
|
+
def set_default_history_summarization_threshold(
|
223
|
+
self, history_summarization_threshold: int
|
224
|
+
):
|
225
|
+
self._default_history_summarization_threshold = history_summarization_threshold
|
226
|
+
|
227
|
+
def set_default_enrich_context(self, enrich_context: bool):
|
228
|
+
self._default_enrich_context = enrich_context
|
229
|
+
|
194
230
|
|
195
231
|
llm_config = LLMConfig()
|
@@ -12,12 +12,28 @@ if TYPE_CHECKING:
|
|
12
12
|
|
13
13
|
|
14
14
|
class AnyTask(ABC):
|
15
|
-
"""Abstract base class
|
16
|
-
|
17
|
-
This
|
18
|
-
task
|
19
|
-
|
20
|
-
|
15
|
+
"""Abstract base class defining the interface for all executable tasks within Zrb.
|
16
|
+
|
17
|
+
This interface specifies the essential properties and methods that any concrete
|
18
|
+
task implementation must provide. It covers:
|
19
|
+
|
20
|
+
- **Metadata:** Properties like `name`, `description`, `color`, and `icon` for
|
21
|
+
identification and UI representation.
|
22
|
+
- **Configuration:** Properties for defining `inputs` (user-provided parameters)
|
23
|
+
and `envs` (environment variables).
|
24
|
+
- **Execution Control:** Properties like `cli_only` to restrict execution context.
|
25
|
+
- **Dependency Management:** Properties for `upstreams` (prerequisites),
|
26
|
+
`fallbacks` (error handling), `successors` (post-completion tasks), and
|
27
|
+
`readiness_checks` (for long-running tasks). Methods like `append_*` allow
|
28
|
+
programmatic modification of these dependencies.
|
29
|
+
- **Context Management:** `get_ctx` method to retrieve the task's specific
|
30
|
+
execution context.
|
31
|
+
- **Execution Methods:** `run` (synchronous) and `async_run` (asynchronous)
|
32
|
+
entry points, along with internal execution helpers (`exec_root_tasks`,
|
33
|
+
`exec_chain`, `exec`) defining the execution lifecycle.
|
34
|
+
|
35
|
+
Concrete task classes (like `BaseTask`) inherit from `AnyTask` and provide
|
36
|
+
the actual implementation for these abstract members.
|
21
37
|
"""
|
22
38
|
|
23
39
|
@property
|
@@ -0,0 +1,108 @@
|
|
1
|
+
import os
|
2
|
+
from typing import TYPE_CHECKING
|
3
|
+
|
4
|
+
from zrb.context.any_context import AnyContext
|
5
|
+
from zrb.context.any_shared_context import AnySharedContext
|
6
|
+
from zrb.env.any_env import AnyEnv
|
7
|
+
from zrb.input.any_input import AnyInput
|
8
|
+
from zrb.session.any_session import AnySession
|
9
|
+
from zrb.task.any_task import AnyTask
|
10
|
+
|
11
|
+
if TYPE_CHECKING:
|
12
|
+
# Keep BaseTask under TYPE_CHECKING for functions that need it
|
13
|
+
from zrb.task.base_task import BaseTask
|
14
|
+
|
15
|
+
|
16
|
+
def build_task_context(task: AnyTask, session: AnySession) -> AnyContext:
|
17
|
+
"""
|
18
|
+
Retrieves the context for the task from the session and enhances it
|
19
|
+
with the task's specific environment variables.
|
20
|
+
"""
|
21
|
+
ctx = session.get_ctx(task)
|
22
|
+
# Enhance session ctx with current task env
|
23
|
+
for env in task.envs:
|
24
|
+
env.update_context(ctx)
|
25
|
+
return ctx
|
26
|
+
|
27
|
+
|
28
|
+
def fill_shared_context_inputs(
|
29
|
+
task: AnyTask, shared_context: AnySharedContext, str_kwargs: dict[str, str] = {}
|
30
|
+
):
|
31
|
+
"""
|
32
|
+
Populates the shared context with input values provided via kwargs.
|
33
|
+
"""
|
34
|
+
for task_input in task.inputs:
|
35
|
+
if task_input.name not in shared_context.input:
|
36
|
+
str_value = str_kwargs.get(task_input.name, None)
|
37
|
+
task_input.update_shared_context(shared_context, str_value)
|
38
|
+
|
39
|
+
|
40
|
+
def fill_shared_context_envs(shared_context: AnySharedContext):
|
41
|
+
"""
|
42
|
+
Injects OS environment variables into the shared context if they don't already exist.
|
43
|
+
"""
|
44
|
+
os_env_map = {
|
45
|
+
key: val for key, val in os.environ.items() if key not in shared_context.env
|
46
|
+
}
|
47
|
+
shared_context.env.update(os_env_map)
|
48
|
+
|
49
|
+
|
50
|
+
def combine_inputs(
|
51
|
+
existing_inputs: list[AnyInput],
|
52
|
+
new_inputs: list[AnyInput | None] | AnyInput | None,
|
53
|
+
):
|
54
|
+
"""
|
55
|
+
Combines new inputs into an existing list, avoiding duplicates by name.
|
56
|
+
Modifies the existing_inputs list in place.
|
57
|
+
"""
|
58
|
+
input_names = [task_input.name for task_input in existing_inputs]
|
59
|
+
if isinstance(new_inputs, AnyInput):
|
60
|
+
new_inputs_list = [new_inputs]
|
61
|
+
elif new_inputs is None:
|
62
|
+
new_inputs_list = []
|
63
|
+
else:
|
64
|
+
new_inputs_list = new_inputs
|
65
|
+
|
66
|
+
for task_input in new_inputs_list:
|
67
|
+
if task_input is None:
|
68
|
+
continue
|
69
|
+
if task_input.name not in input_names:
|
70
|
+
existing_inputs.append(task_input)
|
71
|
+
input_names.append(task_input.name) # Update names list
|
72
|
+
|
73
|
+
|
74
|
+
def get_combined_envs(task: "BaseTask") -> list[AnyEnv]:
|
75
|
+
"""
|
76
|
+
Aggregates environment variables from the task and its upstreams.
|
77
|
+
"""
|
78
|
+
envs = []
|
79
|
+
for upstream in task.upstreams:
|
80
|
+
envs.extend(upstream.envs) # Use extend for list concatenation
|
81
|
+
|
82
|
+
# Access _envs directly as task is BaseTask
|
83
|
+
task_envs: list[AnyEnv | None] | AnyEnv | None = task._envs
|
84
|
+
if isinstance(task_envs, AnyEnv):
|
85
|
+
envs.append(task_envs)
|
86
|
+
elif isinstance(task_envs, list):
|
87
|
+
# Filter out None while extending
|
88
|
+
envs.extend(env for env in task_envs if env is not None)
|
89
|
+
|
90
|
+
# Filter out None values efficiently from the combined list
|
91
|
+
return [env for env in envs if env is not None]
|
92
|
+
|
93
|
+
|
94
|
+
def get_combined_inputs(task: "BaseTask") -> list[AnyInput]:
|
95
|
+
"""
|
96
|
+
Aggregates inputs from the task and its upstreams, avoiding duplicates.
|
97
|
+
"""
|
98
|
+
inputs: list[AnyInput] = []
|
99
|
+
for upstream in task.upstreams:
|
100
|
+
combine_inputs(inputs, upstream.inputs)
|
101
|
+
|
102
|
+
# Access _inputs directly as task is BaseTask
|
103
|
+
task_inputs: list[AnyInput | None] | AnyInput | None = task._inputs
|
104
|
+
if task_inputs is not None:
|
105
|
+
combine_inputs(inputs, task_inputs)
|
106
|
+
|
107
|
+
# Filter out None values (although combine_inputs should handle this)
|
108
|
+
return [task_input for task_input in inputs if task_input is not None]
|
@@ -0,0 +1,57 @@
|
|
1
|
+
from typing import TypeVar
|
2
|
+
|
3
|
+
from zrb.task.any_task import AnyTask
|
4
|
+
|
5
|
+
T = TypeVar("T", bound="AnyTask")
|
6
|
+
|
7
|
+
|
8
|
+
def get_dependency_list(task: AnyTask, attr_name: str) -> list[AnyTask]:
|
9
|
+
"""
|
10
|
+
Safely retrieves a list of dependencies (upstreams, fallbacks, etc.)
|
11
|
+
from a task attribute, handling None or single-task values.
|
12
|
+
"""
|
13
|
+
dependencies = getattr(task, attr_name, None)
|
14
|
+
if dependencies is None:
|
15
|
+
return []
|
16
|
+
elif isinstance(dependencies, list):
|
17
|
+
# Ensure all elements are AnyTask (or compatible) if needed,
|
18
|
+
# but for now, assume the list contains tasks.
|
19
|
+
return dependencies
|
20
|
+
# Assume it's a single AnyTask instance
|
21
|
+
return [dependencies]
|
22
|
+
|
23
|
+
|
24
|
+
def append_dependency(
|
25
|
+
task: T, attr_name: str, dependencies_to_add: AnyTask | list[AnyTask]
|
26
|
+
) -> None:
|
27
|
+
"""
|
28
|
+
Appends one or more dependencies to the specified attribute list of a task,
|
29
|
+
ensuring the attribute becomes a list and avoiding duplicates.
|
30
|
+
|
31
|
+
Modifies the attribute on the task object directly.
|
32
|
+
"""
|
33
|
+
# Retrieve the current list, handling None or single item cases
|
34
|
+
current_deps_list = getattr(task, attr_name, None)
|
35
|
+
if current_deps_list is None:
|
36
|
+
current_deps_list = []
|
37
|
+
elif not isinstance(current_deps_list, list):
|
38
|
+
current_deps_list = [current_deps_list]
|
39
|
+
else:
|
40
|
+
# Create a copy to avoid modifying the original list if no changes occur
|
41
|
+
current_deps_list = list(current_deps_list)
|
42
|
+
|
43
|
+
if isinstance(dependencies_to_add, list):
|
44
|
+
new_deps = dependencies_to_add
|
45
|
+
else:
|
46
|
+
new_deps = [dependencies_to_add] # Ensure it's always a list
|
47
|
+
|
48
|
+
added = False
|
49
|
+
for dep in new_deps:
|
50
|
+
# Check for existence before appending
|
51
|
+
if dep not in current_deps_list:
|
52
|
+
current_deps_list.append(dep)
|
53
|
+
added = True
|
54
|
+
|
55
|
+
# Update the attribute on the task object only if changes were made
|
56
|
+
if added:
|
57
|
+
setattr(task, attr_name, current_deps_list)
|