zrb 1.15.3__tar.gz → 1.15.6__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.15.3 → zrb-1.15.6}/PKG-INFO +9 -10
- {zrb-1.15.3 → zrb-1.15.6}/pyproject.toml +18 -20
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/llm/chat_session.py +2 -15
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/llm/tool/code.py +4 -3
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/llm/tool/sub_agent.py +4 -3
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/config/config.py +11 -2
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/config/llm_rate_limitter.py +51 -40
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/context/context.py +1 -1
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/context/shared_context.py +1 -5
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/input/any_input.py +5 -1
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/input/base_input.py +8 -4
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/cli.py +19 -18
- zrb-1.15.6/src/zrb/runner/common_util.py +36 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/task_input_api_route.py +5 -5
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/any_task.py +10 -2
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/base/context.py +16 -8
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/base/lifecycle.py +8 -4
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/base_task.py +54 -4
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm/agent.py +14 -3
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm/history_summarization.py +8 -4
- zrb-1.15.6/src/zrb/task/llm/print_node.py +175 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm/tool_wrapper.py +55 -18
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm_task.py +2 -1
- zrb-1.15.6/src/zrb/util/cli/markdown.py +12 -0
- zrb-1.15.6/src/zrb/util/truncate.py +23 -0
- zrb-1.15.3/src/zrb/runner/common_util.py +0 -31
- zrb-1.15.3/src/zrb/task/llm/print_node.py +0 -101
- {zrb-1.15.3 → zrb-1.15.6}/README.md +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/__main__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/attr/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/attr/type.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/base64.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/git.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/git_subtree.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/group.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/http.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/jwt.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/llm/history.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/llm/input.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/llm/llm_ask.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/llm/previous-session.js +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/llm/tool/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/llm/tool/api.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/llm/tool/cli.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/llm/tool/file.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/llm/tool/rag.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/llm/tool/web.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/md5.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/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.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/create/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/create/project-template/README.md +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/project/create/project_task.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/python.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/random.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/setup/common_input.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/setup/ubuntu.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/shell/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/todo.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/builtin/uuid.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/callback/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/callback/any_callback.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/callback/callback.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/cmd/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/cmd/cmd_result.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/cmd/cmd_val.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/config/default_prompt/file_extractor_system_prompt.md +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/config/default_prompt/interactive_system_prompt.md +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/config/default_prompt/persona.md +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/config/default_prompt/repo_extractor_system_prompt.md +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/config/default_prompt/repo_summarizer_system_prompt.md +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/config/default_prompt/summarization_prompt.md +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/config/default_prompt/system_prompt.md +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/config/llm_config.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/config/llm_context/config.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/config/llm_context/config_parser.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/config/web_auth_config.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/content_transformer/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/content_transformer/any_content_transformer.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/content_transformer/content_transformer.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/context/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/context/any_context.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/context/any_shared_context.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/dot_dict/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/dot_dict/dot_dict.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/env/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/env/any_env.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/env/env.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/env/env_file.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/env/env_map.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/group/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/group/any_group.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/group/group.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/input/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/input/bool_input.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/input/float_input.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/input/int_input.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/input/option_input.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/input/password_input.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/input/str_input.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/input/text_input.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_app.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/docs_route.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/error_page/view.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/home_page/view.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/login_api_route.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/login_page/view.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/logout_api_route.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/logout_page/view.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/global_template.html +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/common.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/common.js +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.amber.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.blue.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.cyan.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.fuchsia.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.green.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.grey.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.indigo.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.jade.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.lime.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.orange.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.pink.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.pumpkin.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.purple.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.red.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.sand.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.slate.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.violet.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.yellow.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/pico-css/pico.zinc.min.css +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/static/static_route.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_schema/session.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_schema/token.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_schema/user.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_util/cookie.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_util/html.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_util/token.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/runner/web_util/user.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/session/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/session/any_session.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/session/session.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/session_state_log/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/session_state_log/session_state_log.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/session_state_logger/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/base/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/base/execution.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/base/monitoring.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/base/operators.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/base_trigger.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/cmd_task.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/http_check.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm/config.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm/conversation_history.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm/conversation_history_model.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm/default_workflow/coding.md +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm/default_workflow/copywriting.md +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm/default_workflow/researching.md +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm/error.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm/prompt.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/llm/typing.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/make_task.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/rsync_task.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/scaffolder.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/scheduler.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/task.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task/tcp_check.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task_status/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/task_status/task_status.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/attr.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/callable.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/cli/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/cli/style.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/cli/subcommand.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/cmd/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/cmd/command.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/cmd/remote.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/codemod/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/codemod/modification_mode.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/codemod/modify_class.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/codemod/modify_class_parent.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/codemod/modify_class_property.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/codemod/modify_dict.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/codemod/modify_function.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/codemod/modify_function_call.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/codemod/modify_method.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/codemod/modify_module.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/cron.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/file.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/git.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/git_diff_model.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/git_subtree.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/git_subtree_model.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/group.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/init_path.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/llm/prompt.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/load.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/run.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/string/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/string/conversion.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/string/format.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/string/name.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/todo.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/util/todo_model.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/xcom/__init__.py +0 -0
- {zrb-1.15.3 → zrb-1.15.6}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: zrb
|
3
|
-
Version: 1.15.
|
3
|
+
Version: 1.15.6
|
4
4
|
Summary: Your Automation Powerhouse
|
5
5
|
License: AGPL-3.0-or-later
|
6
6
|
Keywords: Automation,Task Runner,Code Generator,Monorepo,Low Code
|
@@ -16,21 +16,20 @@ Classifier: Programming Language :: Python :: 3.13
|
|
16
16
|
Provides-Extra: all
|
17
17
|
Provides-Extra: playwright
|
18
18
|
Provides-Extra: rag
|
19
|
-
Requires-Dist: beautifulsoup4 (>=4.13.
|
20
|
-
Requires-Dist: black (>=25.1.0,<
|
19
|
+
Requires-Dist: beautifulsoup4 (>=4.13.4,<5.0.0)
|
20
|
+
Requires-Dist: black (>=25.1.0,<26.0.0)
|
21
21
|
Requires-Dist: chromadb (>=0.6.3,<0.7.0) ; extra == "rag" or extra == "all"
|
22
22
|
Requires-Dist: fastapi[standard] (>=0.116.1,<0.117.0)
|
23
|
-
Requires-Dist: isort (>=6.0.1,<
|
24
|
-
Requires-Dist: libcst (>=1.
|
23
|
+
Requires-Dist: isort (>=6.0.1,<7.0.0)
|
24
|
+
Requires-Dist: libcst (>=1.8.2,<2.0.0)
|
25
25
|
Requires-Dist: markdownify (>=1.2.0,<2.0.0)
|
26
|
-
Requires-Dist:
|
27
|
-
Requires-Dist:
|
28
|
-
Requires-Dist: playwright (>=1.53.0,<2.0.0) ; extra == "playwright" or extra == "all"
|
26
|
+
Requires-Dist: pdfplumber (>=0.11.7,<0.12.0)
|
27
|
+
Requires-Dist: playwright (>=1.54.0,<2.0.0) ; extra == "playwright" or extra == "all"
|
29
28
|
Requires-Dist: psutil (>=7.0.0,<8.0.0)
|
30
|
-
Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cli,cohere,google,groq,huggingface,mcp,mistral,openai,vertexai] (>=0.7.
|
29
|
+
Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cli,cohere,google,groq,huggingface,mcp,mistral,openai,vertexai] (>=0.7.4,<0.8.0)
|
31
30
|
Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
|
32
31
|
Requires-Dist: python-dotenv (>=1.1.1,<2.0.0)
|
33
|
-
Requires-Dist: python-jose[cryptography] (>=3.
|
32
|
+
Requires-Dist: python-jose[cryptography] (>=3.5.0,<4.0.0)
|
34
33
|
Requires-Dist: requests (>=2.32.4,<3.0.0)
|
35
34
|
Requires-Dist: tiktoken (>=0.8.0,<0.9.0)
|
36
35
|
Requires-Dist: ulid-py (>=1.1.0,<2.0.0)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "zrb"
|
3
|
-
version = "1.15.
|
3
|
+
version = "1.15.6"
|
4
4
|
description = "Your Automation Powerhouse"
|
5
5
|
authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
|
6
6
|
license = "AGPL-3.0-or-later"
|
@@ -39,30 +39,27 @@ exclude = [
|
|
39
39
|
[tool.poetry.dependencies]
|
40
40
|
python = ">=3.10.0,<4.0.0"
|
41
41
|
python-dotenv = "^1.1.1"
|
42
|
-
black = "
|
43
|
-
isort = "
|
42
|
+
black = "^25.1.0"
|
43
|
+
isort = "^6.0.1"
|
44
44
|
requests = "^2.32.4"
|
45
|
-
libcst = "^1.
|
46
|
-
beautifulsoup4 = "^4.13.
|
47
|
-
pdfplumber = "^0.11.
|
45
|
+
libcst = "^1.8.2"
|
46
|
+
beautifulsoup4 = "^4.13.4"
|
47
|
+
pdfplumber = "^0.11.7"
|
48
48
|
fastapi = {extras = ["standard"], version = "^0.116.1"}
|
49
|
-
python-jose = {extras = ["cryptography"], version = "^3.
|
49
|
+
python-jose = {extras = ["cryptography"], version = "^3.5.0"}
|
50
50
|
ulid-py = "^1.1.0"
|
51
51
|
psutil = "^7.0.0"
|
52
|
-
pyjwt = "^2.10.1"
|
53
52
|
|
54
53
|
# NOTE: Look at https://github.com/pydantic/pydantic-ai/blob/main/pydantic_ai_slim/pyproject.toml
|
55
54
|
# - We want to include all models, as well as mcp capability.
|
56
55
|
# - We also need prompt-toolkit and rich which are included in pydantic ai's cli optional dependency
|
57
|
-
pydantic-ai-slim = {extras = ["openai", "cohere", "vertexai", "google", "anthropic", "groq", "mistral", "bedrock", "huggingface", "cli", "mcp"], version = "
|
58
|
-
|
59
|
-
# NOTE: On Pydantic AI 0.7.0, OpenAI is 1.99.2 to 1.99.6 seems to be broken
|
60
|
-
openai = ">=1.99.7"
|
56
|
+
pydantic-ai-slim = {extras = ["openai", "cohere", "vertexai", "google", "anthropic", "groq", "mistral", "bedrock", "huggingface", "cli", "mcp"], version = "~0.7.4"}
|
61
57
|
|
62
58
|
tiktoken = "^0.8.0"
|
63
|
-
playwright = {version = "^1.
|
59
|
+
playwright = {version = "^1.54.0", optional = true}
|
64
60
|
chromadb = {version = "^0.6.3", optional = true}
|
65
61
|
markdownify = "^1.2.0"
|
62
|
+
pyjwt = "^2.10.1"
|
66
63
|
|
67
64
|
[tool.poetry.extras]
|
68
65
|
# poetry install -E rag
|
@@ -71,17 +68,18 @@ playwright = ["playwright"]
|
|
71
68
|
all = ["chromadb", "playwright"]
|
72
69
|
|
73
70
|
[tool.poetry.group.dev.dependencies]
|
74
|
-
alembic = "^1.16.
|
75
|
-
autopep8 = "^2.
|
76
|
-
flake8 = "
|
77
|
-
pytest = "
|
78
|
-
pytest-cov = "
|
79
|
-
pytest-asyncio = "
|
71
|
+
alembic = "^1.16.4" # FastApp dependencies
|
72
|
+
autopep8 = "^2.3.2"
|
73
|
+
flake8 = "^7.2.0"
|
74
|
+
pytest = "^8.3.5"
|
75
|
+
pytest-cov = "^6.1.0"
|
76
|
+
pytest-asyncio = "^0.26.0"
|
80
77
|
sqlmodel = "^0.0.24" # FastApp dependencies
|
81
|
-
tomlkit = "^0.13.
|
78
|
+
tomlkit = "^0.13.3"
|
82
79
|
|
83
80
|
[tool.pytest.ini_options]
|
84
81
|
asyncio_default_fixture_loop_scope = "function"
|
82
|
+
norecursedirs = "playground src/zrb/builtin/project/add/fastapp/fastapp_template"
|
85
83
|
|
86
84
|
[tool.poetry.scripts]
|
87
85
|
zrb = "zrb.__main__:serve_cli"
|
@@ -10,6 +10,7 @@ import sys
|
|
10
10
|
|
11
11
|
from zrb.config.llm_config import llm_config
|
12
12
|
from zrb.context.any_context import AnyContext
|
13
|
+
from zrb.util.cli.markdown import render_markdown
|
13
14
|
from zrb.util.cli.style import stylize_blue, stylize_bold_yellow, stylize_faint
|
14
15
|
from zrb.util.string.conversion import to_boolean
|
15
16
|
|
@@ -200,27 +201,13 @@ async def _trigger_ask_and_wait_for_result(
|
|
200
201
|
ctx, user_prompt, modes, yolo_mode, previous_session_name, start_new
|
201
202
|
)
|
202
203
|
result = await _wait_ask_result(ctx)
|
203
|
-
md_result =
|
204
|
+
md_result = render_markdown(result) if result is not None else ""
|
204
205
|
ctx.print("\n🤖 >>", plain=True)
|
205
206
|
ctx.print(md_result, plain=True)
|
206
207
|
ctx.print("", plain=True)
|
207
208
|
return result
|
208
209
|
|
209
210
|
|
210
|
-
def _render_markdown(markdown_text: str) -> str:
|
211
|
-
"""
|
212
|
-
Renders Markdown to a string, ensuring link URLs are visible.
|
213
|
-
"""
|
214
|
-
from rich.console import Console
|
215
|
-
from rich.markdown import Markdown
|
216
|
-
|
217
|
-
console = Console()
|
218
|
-
markdown = Markdown(markdown_text, hyperlinks=False)
|
219
|
-
with console.capture() as capture:
|
220
|
-
console.print(markdown)
|
221
|
-
return capture.get()
|
222
|
-
|
223
|
-
|
224
211
|
def get_llm_ask_input_mapping(callback_ctx: AnyContext):
|
225
212
|
"""
|
226
213
|
Generates the input mapping for the LLM ask task from the callback context.
|
@@ -6,6 +6,7 @@ from zrb.builtin.llm.tool.sub_agent import create_sub_agent_tool
|
|
6
6
|
from zrb.config.config import CFG
|
7
7
|
from zrb.config.llm_rate_limitter import llm_rate_limitter
|
8
8
|
from zrb.context.any_context import AnyContext
|
9
|
+
from zrb.util.cli.style import stylize_faint
|
9
10
|
|
10
11
|
_DEFAULT_EXTENSIONS = [
|
11
12
|
"py",
|
@@ -112,7 +113,7 @@ async def analyze_repo(
|
|
112
113
|
)
|
113
114
|
abs_path = os.path.abspath(os.path.expanduser(path))
|
114
115
|
file_metadatas = _get_file_metadatas(abs_path, extensions, exclude_patterns)
|
115
|
-
ctx.print("Extraction")
|
116
|
+
ctx.print(stylize_faint(" 📝 Extraction"), plain=True)
|
116
117
|
extracted_infos = await _extract_info(
|
117
118
|
ctx,
|
118
119
|
file_metadatas=file_metadatas,
|
@@ -121,10 +122,10 @@ async def analyze_repo(
|
|
121
122
|
)
|
122
123
|
if len(extracted_infos) == 1:
|
123
124
|
return extracted_infos[0]
|
124
|
-
ctx.print("Summarization")
|
125
|
+
ctx.print(stylize_faint(" 📝 Summarization"), plain=True)
|
125
126
|
summarized_infos = extracted_infos
|
126
127
|
while len(summarized_infos) > 1:
|
127
|
-
ctx.print("Summarization")
|
128
|
+
ctx.print(stylize_faint(" 📝 Summarization"), plain=True)
|
128
129
|
summarized_infos = await _summarize_info(
|
129
130
|
ctx,
|
130
131
|
extracted_infos=summarized_infos,
|
@@ -26,6 +26,7 @@ def create_sub_agent_tool(
|
|
26
26
|
tools: "list[ToolOrCallable]" = [],
|
27
27
|
toolsets: list["AbstractToolset[Agent]"] = [],
|
28
28
|
is_yolo_mode: bool | None = None,
|
29
|
+
log_indent_level: int = 2,
|
29
30
|
) -> Callable[[AnyContext, str], Coroutine[Any, Any, str]]:
|
30
31
|
"""
|
31
32
|
Creates a "tool that is another AI agent," capable of handling complex,
|
@@ -110,15 +111,15 @@ def create_sub_agent_tool(
|
|
110
111
|
user_prompt=query,
|
111
112
|
attachments=[],
|
112
113
|
history_list=[],
|
114
|
+
log_indent_level=log_indent_level,
|
113
115
|
)
|
114
116
|
|
115
117
|
# Return the sub-agent's final message content
|
116
118
|
if sub_agent_run and sub_agent_run.result:
|
117
119
|
# Return the final message content as a string
|
118
120
|
return json.dumps({"result": sub_agent_run.result.output})
|
119
|
-
|
120
|
-
|
121
|
-
return "Sub-agent failed to produce a result."
|
121
|
+
ctx.log_warning("Sub-agent run did not produce a result.")
|
122
|
+
raise ValueError(f"{tool_name} not returning any result")
|
122
123
|
|
123
124
|
# Set the name and docstring for the callable function
|
124
125
|
run_sub_agent.__name__ = tool_name
|
@@ -102,6 +102,7 @@ class Config:
|
|
102
102
|
level = level.upper()
|
103
103
|
log_levels = {
|
104
104
|
"CRITICAL": logging.CRITICAL, # 50
|
105
|
+
"FATAL": logging.CRITICAL, # 50
|
105
106
|
"ERROR": logging.ERROR, # 40
|
106
107
|
"WARN": logging.WARNING, # 30
|
107
108
|
"WARNING": logging.WARNING, # 30
|
@@ -282,7 +283,7 @@ class Config:
|
|
282
283
|
Maximum number of LLM requests allowed per minute.
|
283
284
|
Default is conservative to accommodate free-tier LLM providers.
|
284
285
|
"""
|
285
|
-
return int(self._getenv("LLM_MAX_REQUESTS_PER_MINUTE", "
|
286
|
+
return int(self._getenv("LLM_MAX_REQUESTS_PER_MINUTE", "60"))
|
286
287
|
|
287
288
|
@property
|
288
289
|
def LLM_MAX_TOKENS_PER_MINUTE(self) -> int:
|
@@ -295,7 +296,7 @@ class Config:
|
|
295
296
|
@property
|
296
297
|
def LLM_MAX_TOKENS_PER_REQUEST(self) -> int:
|
297
298
|
"""Maximum number of tokens allowed per individual LLM request."""
|
298
|
-
return int(self._getenv("LLM_MAX_TOKENS_PER_REQUEST", "
|
299
|
+
return int(self._getenv("LLM_MAX_TOKENS_PER_REQUEST", "100000"))
|
299
300
|
|
300
301
|
@property
|
301
302
|
def LLM_THROTTLE_SLEEP(self) -> float:
|
@@ -435,5 +436,13 @@ class Config:
|
|
435
436
|
def LLM_CONTEXT_FILE(self) -> str:
|
436
437
|
return self._getenv("LLM_CONTEXT_FILE", "ZRB.md")
|
437
438
|
|
439
|
+
@property
|
440
|
+
def USE_TIKTOKEN(self) -> bool:
|
441
|
+
return to_boolean(self._getenv("USE_TIKTOKEN", "true"))
|
442
|
+
|
443
|
+
@property
|
444
|
+
def TIKTOKEN_ENCODING_NAME(self) -> str:
|
445
|
+
return self._getenv("TIKTOKEN_ENCODING_NAME", "cl100k_base")
|
446
|
+
|
438
447
|
|
439
448
|
CFG = Config()
|
@@ -3,27 +3,9 @@ import time
|
|
3
3
|
from collections import deque
|
4
4
|
from typing import Callable
|
5
5
|
|
6
|
-
import tiktoken
|
7
|
-
|
8
6
|
from zrb.config.config import CFG
|
9
7
|
|
10
8
|
|
11
|
-
def _estimate_token(text: str) -> int:
|
12
|
-
"""
|
13
|
-
Estimates the number of tokens in a given text.
|
14
|
-
Tries to use the 'gpt-4o' model's tokenizer for an accurate count.
|
15
|
-
If the tokenizer is unavailable (e.g., due to network issues),
|
16
|
-
it falls back to a heuristic of 4 characters per token.
|
17
|
-
"""
|
18
|
-
try:
|
19
|
-
# Primary method: Use tiktoken for an accurate count
|
20
|
-
enc = tiktoken.encoding_for_model("gpt-4o")
|
21
|
-
return len(enc.encode(text))
|
22
|
-
except Exception:
|
23
|
-
# Fallback method: Heuristic (4 characters per token)
|
24
|
-
return len(text) // 4
|
25
|
-
|
26
|
-
|
27
9
|
class LLMRateLimiter:
|
28
10
|
"""
|
29
11
|
Helper class to enforce LLM API rate limits and throttling.
|
@@ -36,13 +18,15 @@ class LLMRateLimiter:
|
|
36
18
|
max_tokens_per_minute: int | None = None,
|
37
19
|
max_tokens_per_request: int | None = None,
|
38
20
|
throttle_sleep: float | None = None,
|
39
|
-
|
21
|
+
use_tiktoken: bool | None = None,
|
22
|
+
tiktoken_encodeing_name: str | None = None,
|
40
23
|
):
|
41
24
|
self._max_requests_per_minute = max_requests_per_minute
|
42
25
|
self._max_tokens_per_minute = max_tokens_per_minute
|
43
26
|
self._max_tokens_per_request = max_tokens_per_request
|
44
27
|
self._throttle_sleep = throttle_sleep
|
45
|
-
self.
|
28
|
+
self._use_tiktoken = use_tiktoken
|
29
|
+
self._tiktoken_encoding_name = tiktoken_encodeing_name
|
46
30
|
self.request_times = deque()
|
47
31
|
self.token_times = deque()
|
48
32
|
|
@@ -71,10 +55,16 @@ class LLMRateLimiter:
|
|
71
55
|
return CFG.LLM_THROTTLE_SLEEP
|
72
56
|
|
73
57
|
@property
|
74
|
-
def
|
75
|
-
if self.
|
76
|
-
return self.
|
77
|
-
return
|
58
|
+
def use_tiktoken(self) -> bool:
|
59
|
+
if self._use_tiktoken is not None:
|
60
|
+
return self._use_tiktoken
|
61
|
+
return CFG.USE_TIKTOKEN
|
62
|
+
|
63
|
+
@property
|
64
|
+
def tiktoken_encoding_name(self) -> str:
|
65
|
+
if self._tiktoken_encoding_name is not None:
|
66
|
+
return self._tiktoken_encoding_name
|
67
|
+
return CFG.TIKTOKEN_ENCODING_NAME
|
78
68
|
|
79
69
|
def set_max_requests_per_minute(self, value: int):
|
80
70
|
self._max_requests_per_minute = value
|
@@ -88,24 +78,43 @@ class LLMRateLimiter:
|
|
88
78
|
def set_throttle_sleep(self, value: float):
|
89
79
|
self._throttle_sleep = value
|
90
80
|
|
91
|
-
def
|
92
|
-
self.
|
81
|
+
def count_token(self, prompt: str) -> int:
|
82
|
+
if not self.use_tiktoken:
|
83
|
+
return self._fallback_count_token(prompt)
|
84
|
+
try:
|
85
|
+
import tiktoken
|
86
|
+
|
87
|
+
enc = tiktoken.get_encoding(self.tiktoken_encoding_name)
|
88
|
+
return len(enc.encode(prompt))
|
89
|
+
except Exception:
|
90
|
+
return self._fallback_count_token(prompt)
|
91
|
+
|
92
|
+
def _fallback_count_token(self, prompt: str) -> int:
|
93
|
+
return len(prompt) // 4
|
93
94
|
|
94
95
|
def clip_prompt(self, prompt: str, limit: int) -> str:
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
96
|
+
if not self.use_tiktoken:
|
97
|
+
return self._fallback_clip_prompt(prompt, limit)
|
98
|
+
try:
|
99
|
+
import tiktoken
|
100
|
+
|
101
|
+
enc = tiktoken.get_encoding("cl100k_base")
|
102
|
+
tokens = enc.encode(prompt)
|
103
|
+
if len(tokens) <= limit:
|
104
|
+
return prompt
|
105
|
+
truncated = tokens[: limit - 3]
|
106
|
+
clipped_text = enc.decode(truncated)
|
107
|
+
return clipped_text + "..."
|
108
|
+
except Exception:
|
109
|
+
return self._fallback_clip_prompt(prompt, limit)
|
110
|
+
|
111
|
+
def _fallback_clip_prompt(self, prompt: str, limit: int) -> str:
|
112
|
+
char_limit = limit * 4 if limit * 4 <= 10 else limit * 4 - 10
|
113
|
+
return prompt[:char_limit] + "..."
|
114
|
+
|
115
|
+
async def throttle(
|
116
|
+
self, prompt: str, throttle_notif_callback: Callable | None = None
|
117
|
+
):
|
109
118
|
now = time.time()
|
110
119
|
tokens = self.count_token(prompt)
|
111
120
|
# Clean up old entries
|
@@ -123,6 +132,8 @@ class LLMRateLimiter:
|
|
123
132
|
len(self.request_times) >= self.max_requests_per_minute
|
124
133
|
or sum(t for _, t in self.token_times) + tokens > self.max_tokens_per_minute
|
125
134
|
):
|
135
|
+
if throttle_notif_callback is not None:
|
136
|
+
throttle_notif_callback()
|
126
137
|
await asyncio.sleep(self.throttle_sleep)
|
127
138
|
now = time.time()
|
128
139
|
while self.request_times and now - self.request_times[0] > 60:
|
@@ -40,11 +40,7 @@ class SharedContext(AnySharedContext):
|
|
40
40
|
|
41
41
|
def __repr__(self):
|
42
42
|
class_name = self.__class__.__name__
|
43
|
-
|
44
|
-
args = self._args
|
45
|
-
env = self._env
|
46
|
-
xcom = self._xcom
|
47
|
-
return f"<{class_name} input={input} args={args} xcom={xcom} env={env}>"
|
43
|
+
return f"<{class_name}>"
|
48
44
|
|
49
45
|
@property
|
50
46
|
def is_web_mode(self) -> bool:
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from abc import ABC, abstractmethod
|
2
|
+
from typing import Any
|
2
3
|
|
3
4
|
from zrb.context.any_shared_context import AnySharedContext
|
4
5
|
|
@@ -35,7 +36,10 @@ class AnyInput(ABC):
|
|
35
36
|
|
36
37
|
@abstractmethod
|
37
38
|
def update_shared_context(
|
38
|
-
self,
|
39
|
+
self,
|
40
|
+
shared_ctx: AnySharedContext,
|
41
|
+
str_value: str | None = None,
|
42
|
+
value: Any = None,
|
39
43
|
):
|
40
44
|
pass
|
41
45
|
|
@@ -58,11 +58,15 @@ class BaseInput(AnyInput):
|
|
58
58
|
return f'<input name="{name}" placeholder="{description}" value="{default}" />'
|
59
59
|
|
60
60
|
def update_shared_context(
|
61
|
-
self,
|
61
|
+
self,
|
62
|
+
shared_ctx: AnySharedContext,
|
63
|
+
str_value: str | None = None,
|
64
|
+
value: Any = None,
|
62
65
|
):
|
63
|
-
if
|
64
|
-
str_value
|
65
|
-
|
66
|
+
if value is None:
|
67
|
+
if str_value is None:
|
68
|
+
str_value = self.get_default_str(shared_ctx)
|
69
|
+
value = self._parse_str_value(str_value)
|
66
70
|
if self.name in shared_ctx.input:
|
67
71
|
raise ValueError(f"Input already defined in the context: {self.name}")
|
68
72
|
shared_ctx.input[self.name] = value
|
@@ -7,7 +7,7 @@ from zrb.context.any_context import AnyContext
|
|
7
7
|
from zrb.context.shared_context import SharedContext
|
8
8
|
from zrb.group.any_group import AnyGroup
|
9
9
|
from zrb.group.group import Group
|
10
|
-
from zrb.runner.common_util import
|
10
|
+
from zrb.runner.common_util import get_task_str_kwargs
|
11
11
|
from zrb.session.session import Session
|
12
12
|
from zrb.session_state_logger.session_state_logger_factory import session_state_logger
|
13
13
|
from zrb.task.any_task import AnyTask
|
@@ -38,23 +38,25 @@ class Cli(Group):
|
|
38
38
|
def banner(self) -> str:
|
39
39
|
return CFG.BANNER
|
40
40
|
|
41
|
-
def run(self,
|
42
|
-
|
43
|
-
node, node_path,
|
41
|
+
def run(self, str_args: list[str] = []):
|
42
|
+
str_kwargs, str_args = self._extract_kwargs_from_args(str_args)
|
43
|
+
node, node_path, str_args = extract_node_from_args(self, str_args)
|
44
44
|
if isinstance(node, AnyGroup):
|
45
45
|
self._show_group_info(node)
|
46
46
|
return
|
47
|
-
if "h" in
|
47
|
+
if "h" in str_kwargs or "help" in str_kwargs:
|
48
48
|
self._show_task_info(node)
|
49
49
|
return
|
50
|
-
|
50
|
+
task_str_kwargs = get_task_str_kwargs(
|
51
|
+
task=node, str_args=str_args, str_kwargs=str_kwargs, cli_mode=True
|
52
|
+
)
|
51
53
|
try:
|
52
|
-
result = self._run_task(node,
|
54
|
+
result = self._run_task(node, str_args, task_str_kwargs)
|
53
55
|
if result is not None:
|
54
56
|
print(result)
|
55
57
|
return result
|
56
58
|
finally:
|
57
|
-
run_command = self._get_run_command(node_path,
|
59
|
+
run_command = self._get_run_command(node_path, task_str_kwargs)
|
58
60
|
self._print_run_command(run_command)
|
59
61
|
|
60
62
|
def _print_run_command(self, run_command: str):
|
@@ -64,11 +66,14 @@ class Cli(Group):
|
|
64
66
|
file=sys.stderr,
|
65
67
|
)
|
66
68
|
|
67
|
-
def _get_run_command(
|
69
|
+
def _get_run_command(
|
70
|
+
self, node_path: list[str], task_str_kwargs: dict[str, str]
|
71
|
+
) -> str:
|
68
72
|
parts = [self.name] + node_path
|
69
|
-
if len(
|
73
|
+
if len(task_str_kwargs) > 0:
|
70
74
|
parts += [
|
71
|
-
self._get_run_command_param(key, val)
|
75
|
+
self._get_run_command_param(key, val)
|
76
|
+
for key, val in task_str_kwargs.items()
|
72
77
|
]
|
73
78
|
return " ".join(parts)
|
74
79
|
|
@@ -81,13 +86,9 @@ class Cli(Group):
|
|
81
86
|
self, task: AnyTask, args: list[str], run_kwargs: dict[str, str]
|
82
87
|
) -> tuple[Any]:
|
83
88
|
shared_ctx = SharedContext(args=args)
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
shared_ctx, run_kwargs[task_input.name]
|
88
|
-
)
|
89
|
-
continue
|
90
|
-
return task.run(Session(shared_ctx=shared_ctx, root_group=self))
|
89
|
+
return task.run(
|
90
|
+
Session(shared_ctx=shared_ctx, root_group=self), str_kwargs=run_kwargs
|
91
|
+
)
|
91
92
|
|
92
93
|
def _show_task_info(self, task: AnyTask):
|
93
94
|
description = task.description
|
@@ -0,0 +1,36 @@
|
|
1
|
+
from zrb.context.shared_context import SharedContext
|
2
|
+
from zrb.task.any_task import AnyTask
|
3
|
+
|
4
|
+
|
5
|
+
def get_task_str_kwargs(
|
6
|
+
task: AnyTask, str_args: list[str], str_kwargs: dict[str, str], cli_mode: bool
|
7
|
+
) -> dict[str, str]:
|
8
|
+
arg_index = 0
|
9
|
+
dummmy_shared_ctx = SharedContext()
|
10
|
+
task_str_kwargs = {}
|
11
|
+
for task_input in task.inputs:
|
12
|
+
task_name = task_input.name
|
13
|
+
if task_input.name in str_kwargs:
|
14
|
+
task_str_kwargs[task_input.name] = str_kwargs[task_name]
|
15
|
+
# Update dummy shared context for next input default value
|
16
|
+
task_input.update_shared_context(
|
17
|
+
dummmy_shared_ctx, str_value=str_kwargs[task_name]
|
18
|
+
)
|
19
|
+
elif arg_index < len(str_args) and task_input.allow_positional_parsing:
|
20
|
+
task_str_kwargs[task_name] = str_args[arg_index]
|
21
|
+
# Update dummy shared context for next input default value
|
22
|
+
task_input.update_shared_context(
|
23
|
+
dummmy_shared_ctx, str_value=task_str_kwargs[task_name]
|
24
|
+
)
|
25
|
+
arg_index += 1
|
26
|
+
else:
|
27
|
+
if cli_mode and task_input.always_prompt:
|
28
|
+
str_value = task_input.prompt_cli_str(dummmy_shared_ctx)
|
29
|
+
else:
|
30
|
+
str_value = task_input.get_default_str(dummmy_shared_ctx)
|
31
|
+
task_str_kwargs[task_name] = str_value
|
32
|
+
# Update dummy shared context for next input default value
|
33
|
+
task_input.update_shared_context(
|
34
|
+
dummmy_shared_ctx, str_value=task_str_kwargs[task_name]
|
35
|
+
)
|
36
|
+
return task_str_kwargs
|
@@ -3,7 +3,7 @@ from typing import TYPE_CHECKING
|
|
3
3
|
|
4
4
|
from zrb.config.web_auth_config import WebAuthConfig
|
5
5
|
from zrb.group.any_group import AnyGroup
|
6
|
-
from zrb.runner.common_util import
|
6
|
+
from zrb.runner.common_util import get_task_str_kwargs
|
7
7
|
from zrb.runner.web_util.user import get_user_from_request
|
8
8
|
from zrb.task.any_task import AnyTask
|
9
9
|
from zrb.util.group import NodeNotFoundError, extract_node_from_args
|
@@ -39,9 +39,9 @@ def serve_task_input_api(
|
|
39
39
|
if isinstance(task, AnyTask):
|
40
40
|
if not user.can_access_task(task):
|
41
41
|
return JSONResponse(content={"detail": "Forbidden"}, status_code=403)
|
42
|
-
|
43
|
-
|
44
|
-
task=task,
|
42
|
+
str_kwargs = json.loads(query)
|
43
|
+
task_str_kwargs = get_task_str_kwargs(
|
44
|
+
task=task, str_args=[], str_kwargs=str_kwargs, cli_mode=False
|
45
45
|
)
|
46
|
-
return
|
46
|
+
return task_str_kwargs
|
47
47
|
return JSONResponse(content={"detail": "Not found"}, status_code=404)
|
@@ -148,13 +148,17 @@ class AnyTask(ABC):
|
|
148
148
|
|
149
149
|
@abstractmethod
|
150
150
|
def run(
|
151
|
-
self,
|
151
|
+
self,
|
152
|
+
session: "AnySession | None" = None,
|
153
|
+
str_kwargs: dict[str, str] | None = None,
|
154
|
+
kwargs: dict[str, Any] | None = None,
|
152
155
|
) -> Any:
|
153
156
|
"""Runs the task synchronously.
|
154
157
|
|
155
158
|
Args:
|
156
159
|
session (AnySession): The shared session.
|
157
160
|
str_kwargs(dict[str, str]): The input string values.
|
161
|
+
kwargs(dict[str, Any]): The input values.
|
158
162
|
|
159
163
|
Returns:
|
160
164
|
Any: The result of the task execution.
|
@@ -163,13 +167,17 @@ class AnyTask(ABC):
|
|
163
167
|
|
164
168
|
@abstractmethod
|
165
169
|
async def async_run(
|
166
|
-
self,
|
170
|
+
self,
|
171
|
+
session: "AnySession | None" = None,
|
172
|
+
str_kwargs: dict[str, str] | None = None,
|
173
|
+
kwargs: dict[str, Any] | None = None,
|
167
174
|
) -> Any:
|
168
175
|
"""Runs the task asynchronously.
|
169
176
|
|
170
177
|
Args:
|
171
178
|
session (AnySession): The shared session.
|
172
179
|
str_kwargs(dict[str, str]): The input string values.
|
180
|
+
kwargs(dict[str, Any]): The input values.
|
173
181
|
|
174
182
|
Returns:
|
175
183
|
Any: The result of the task execution.
|