zrb 1.11.0__tar.gz → 1.12.0__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.11.0 → zrb-1.12.0}/PKG-INFO +1 -1
- {zrb-1.11.0 → zrb-1.12.0}/pyproject.toml +1 -1
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/llm/chat_session.py +38 -9
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/llm/llm_ask.py +11 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/config/config.py +4 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/config/llm_config.py +23 -30
- zrb-1.11.0/src/zrb/config/default_workflow/code.md → zrb-1.12.0/src/zrb/task/llm/default_workflow/coding.md +0 -2
- zrb-1.11.0/src/zrb/config/default_workflow/content.md → zrb-1.12.0/src/zrb/task/llm/default_workflow/copywriting.md +0 -2
- zrb-1.11.0/src/zrb/config/default_workflow/research.md → zrb-1.12.0/src/zrb/task/llm/default_workflow/researching.md +0 -2
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/llm/prompt.py +78 -27
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/llm/tool_wrapper.py +20 -14
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/llm_task.py +19 -23
- zrb-1.12.0/src/zrb/util/callable.py +23 -0
- {zrb-1.11.0 → zrb-1.12.0}/README.md +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/__main__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/attr/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/attr/type.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/base64.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/git.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/git_subtree.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/group.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/http.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/jwt.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/llm/history.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/llm/input.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/llm/previous-session.js +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/llm/tool/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/llm/tool/api.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/llm/tool/cli.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/llm/tool/code.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/llm/tool/file.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/llm/tool/rag.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/llm/tool/sub_agent.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/llm/tool/web.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/md5.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/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.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/create/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/create/project-template/README.md +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/project/create/project_task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/python.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/random.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/setup/common_input.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/setup/ubuntu.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/shell/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/todo.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/builtin/uuid.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/callback/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/callback/any_callback.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/callback/callback.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/cmd/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/cmd/cmd_result.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/cmd/cmd_val.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/config/default_prompt/file_extractor_system_prompt.md +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/config/default_prompt/interactive_system_prompt.md +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/config/default_prompt/persona.md +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/config/default_prompt/repo_extractor_system_prompt.md +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/config/default_prompt/repo_summarizer_system_prompt.md +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/config/default_prompt/summarization_prompt.md +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/config/default_prompt/system_prompt.md +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/config/llm_context/config.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/config/llm_context/config_handler.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/config/llm_rate_limitter.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/config/web_auth_config.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/content_transformer/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/content_transformer/any_content_transformer.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/content_transformer/content_transformer.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/context/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/context/any_context.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/context/any_shared_context.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/context/context.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/context/shared_context.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/dot_dict/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/dot_dict/dot_dict.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/env/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/env/any_env.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/env/env.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/env/env_file.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/env/env_map.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/group/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/group/any_group.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/group/group.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/input/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/input/any_input.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/input/base_input.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/input/bool_input.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/input/float_input.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/input/int_input.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/input/option_input.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/input/password_input.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/input/str_input.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/input/text_input.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/cli.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/common_util.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_app.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/docs_route.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/error_page/view.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/home_page/view.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/login_api_route.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/login_page/view.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/logout_api_route.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/logout_page/view.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/global_template.html +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/common.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/common.js +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.amber.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.blue.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.cyan.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.fuchsia.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.green.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.grey.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.indigo.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.jade.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.lime.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.orange.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.pink.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.pumpkin.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.purple.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.red.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.sand.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.slate.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.violet.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.yellow.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.zinc.min.css +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/static/static_route.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_schema/session.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_schema/token.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_schema/user.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_util/cookie.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_util/html.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_util/token.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/runner/web_util/user.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/session/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/session/any_session.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/session/session.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/session_state_log/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/session_state_log/session_state_log.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/session_state_logger/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/any_task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/base/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/base/context.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/base/execution.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/base/lifecycle.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/base/monitoring.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/base/operators.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/base_task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/base_trigger.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/cmd_task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/http_check.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/llm/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/llm/agent.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/llm/config.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/llm/conversation_history.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/llm/conversation_history_model.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/llm/error.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/llm/history_summarization.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/llm/print_node.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/llm/typing.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/make_task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/rsync_task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/scaffolder.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/scheduler.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/task.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task/tcp_check.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task_status/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/task_status/task_status.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/attr.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/cli/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/cli/style.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/cli/subcommand.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/cmd/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/cmd/command.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/cmd/remote.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/codemod/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/codemod/modification_mode.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/codemod/modify_class.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/codemod/modify_class_parent.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/codemod/modify_class_property.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/codemod/modify_dict.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/codemod/modify_function.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/codemod/modify_function_call.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/codemod/modify_method.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/codemod/modify_module.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/cron.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/file.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/git.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/git_diff_model.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/git_subtree.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/git_subtree_model.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/group.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/init_path.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/llm/prompt.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/load.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/run.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/string/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/string/conversion.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/string/format.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/string/name.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/todo.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/util/todo_model.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/xcom/__init__.py +0 -0
- {zrb-1.11.0 → zrb-1.12.0}/src/zrb/xcom/xcom.py +0 -0
@@ -25,6 +25,7 @@ async def read_user_prompt(ctx: AnyContext) -> str:
|
|
25
25
|
is_tty = ctx.is_tty
|
26
26
|
reader = await _setup_input_reader(is_tty)
|
27
27
|
multiline_mode = False
|
28
|
+
current_modes = ctx.input.modes
|
28
29
|
user_inputs = []
|
29
30
|
while True:
|
30
31
|
await asyncio.sleep(0.01)
|
@@ -38,7 +39,9 @@ async def read_user_prompt(ctx: AnyContext) -> str:
|
|
38
39
|
if user_input.strip().lower() in ("/bye", "/quit", "/q", "/exit"):
|
39
40
|
user_prompt = "\n".join(user_inputs)
|
40
41
|
user_inputs = []
|
41
|
-
result = await _trigger_ask_and_wait_for_result(
|
42
|
+
result = await _trigger_ask_and_wait_for_result(
|
43
|
+
ctx, user_prompt, current_modes
|
44
|
+
)
|
42
45
|
if result is not None:
|
43
46
|
final_result = result
|
44
47
|
break
|
@@ -49,9 +52,18 @@ async def read_user_prompt(ctx: AnyContext) -> str:
|
|
49
52
|
multiline_mode = False
|
50
53
|
user_prompt = "\n".join(user_inputs)
|
51
54
|
user_inputs = []
|
52
|
-
result = await _trigger_ask_and_wait_for_result(
|
55
|
+
result = await _trigger_ask_and_wait_for_result(
|
56
|
+
ctx, user_prompt, current_modes
|
57
|
+
)
|
53
58
|
if result is not None:
|
54
59
|
final_result = result
|
60
|
+
elif user_input.strip().lower().startswith("/mode"):
|
61
|
+
mode_parts = user_input.split(" ", maxsplit=2)
|
62
|
+
if len(mode_parts) > 1:
|
63
|
+
current_modes = mode_parts[1]
|
64
|
+
ctx.print(f"Current mode: {current_modes}", plain=True)
|
65
|
+
ctx.print("", plain=True)
|
66
|
+
continue
|
55
67
|
elif user_input.strip().lower() in ("/help", "/info"):
|
56
68
|
_show_info(ctx)
|
57
69
|
continue
|
@@ -61,7 +73,9 @@ async def read_user_prompt(ctx: AnyContext) -> str:
|
|
61
73
|
continue
|
62
74
|
user_prompt = "\n".join(user_inputs)
|
63
75
|
user_inputs = []
|
64
|
-
result = await _trigger_ask_and_wait_for_result(
|
76
|
+
result = await _trigger_ask_and_wait_for_result(
|
77
|
+
ctx, user_prompt, current_modes
|
78
|
+
)
|
65
79
|
if result is not None:
|
66
80
|
final_result = result
|
67
81
|
return final_result
|
@@ -74,16 +88,26 @@ def _show_info(ctx: AnyContext):
|
|
74
88
|
ctx: The context object for the task.
|
75
89
|
"""
|
76
90
|
ctx.print(
|
77
|
-
(
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
91
|
+
"\n".join(
|
92
|
+
[
|
93
|
+
_format_info_line("/bye", "Quit from chat session"),
|
94
|
+
_format_info_line("/multi", "Start multiline input"),
|
95
|
+
_format_info_line("/end", "End multiline input"),
|
96
|
+
_format_info_line("/modes", "Show current modes"),
|
97
|
+
_format_info_line("/modes <mode1,mode2,..>", "Set current modes"),
|
98
|
+
_format_info_line("/help", "Show this message"),
|
99
|
+
]
|
82
100
|
),
|
83
101
|
plain=True,
|
84
102
|
)
|
85
103
|
|
86
104
|
|
105
|
+
def _format_info_line(command: str, description: str) -> str:
|
106
|
+
styled_command = stylize_bold_yellow(command.ljust(25))
|
107
|
+
styled_description = stylize_faint(description)
|
108
|
+
return f" {styled_command} {styled_description}"
|
109
|
+
|
110
|
+
|
87
111
|
async def _handle_initial_message(ctx: AnyContext) -> str:
|
88
112
|
"""Processes the initial message from the command line."""
|
89
113
|
if not ctx.input.message or ctx.input.message.strip() == "":
|
@@ -94,6 +118,7 @@ async def _handle_initial_message(ctx: AnyContext) -> str:
|
|
94
118
|
result = await _trigger_ask_and_wait_for_result(
|
95
119
|
ctx,
|
96
120
|
user_prompt=ctx.input.message,
|
121
|
+
modes=ctx.input.modes,
|
97
122
|
previous_session_name=ctx.input.previous_session,
|
98
123
|
start_new=ctx.input.start_new,
|
99
124
|
)
|
@@ -131,6 +156,7 @@ async def _read_next_line(is_interactive: bool, reader, ctx: AnyContext) -> str:
|
|
131
156
|
async def _trigger_ask_and_wait_for_result(
|
132
157
|
ctx: AnyContext,
|
133
158
|
user_prompt: str,
|
159
|
+
modes: str,
|
134
160
|
previous_session_name: str | None = None,
|
135
161
|
start_new: bool = False,
|
136
162
|
) -> str | None:
|
@@ -148,7 +174,7 @@ async def _trigger_ask_and_wait_for_result(
|
|
148
174
|
"""
|
149
175
|
if user_prompt.strip() == "":
|
150
176
|
return None
|
151
|
-
await _trigger_ask(ctx, user_prompt, previous_session_name, start_new)
|
177
|
+
await _trigger_ask(ctx, user_prompt, modes, previous_session_name, start_new)
|
152
178
|
result = await _wait_ask_result(ctx)
|
153
179
|
md_result = _render_markdown(result) if result is not None else ""
|
154
180
|
ctx.print("\n🤖 >>", plain=True)
|
@@ -193,12 +219,14 @@ def get_llm_ask_input_mapping(callback_ctx: AnyContext):
|
|
193
219
|
"start-new": data.get("start_new"),
|
194
220
|
"previous-session": data.get("previous_session_name"),
|
195
221
|
"message": data.get("message"),
|
222
|
+
"modes": data.get("modes"),
|
196
223
|
}
|
197
224
|
|
198
225
|
|
199
226
|
async def _trigger_ask(
|
200
227
|
ctx: AnyContext,
|
201
228
|
user_prompt: str,
|
229
|
+
modes: str,
|
202
230
|
previous_session_name: str | None = None,
|
203
231
|
start_new: bool = False,
|
204
232
|
):
|
@@ -218,6 +246,7 @@ async def _trigger_ask(
|
|
218
246
|
"previous_session_name": previous_session_name,
|
219
247
|
"start_new": start_new,
|
220
248
|
"message": user_prompt,
|
249
|
+
"modes": modes,
|
221
250
|
}
|
222
251
|
)
|
223
252
|
|
@@ -65,6 +65,14 @@ _llm_ask_inputs = [
|
|
65
65
|
allow_positional_parsing=False,
|
66
66
|
always_prompt=False,
|
67
67
|
),
|
68
|
+
TextInput(
|
69
|
+
"modes",
|
70
|
+
description="Modes",
|
71
|
+
prompt="Modes",
|
72
|
+
default="coding",
|
73
|
+
allow_positional_parsing=False,
|
74
|
+
always_prompt=False,
|
75
|
+
),
|
68
76
|
BoolInput(
|
69
77
|
"start-new",
|
70
78
|
description="Start new conversation (LLM will forget everything)",
|
@@ -101,6 +109,9 @@ llm_ask: LLMTask = llm_group.add_task(
|
|
101
109
|
system_prompt=lambda ctx: (
|
102
110
|
None if ctx.input.system_prompt.strip() == "" else ctx.input.system_prompt
|
103
111
|
),
|
112
|
+
modes=lambda ctx: (
|
113
|
+
None if ctx.input.modes.strip() == "" else ctx.input.modes.split(",")
|
114
|
+
),
|
104
115
|
message="{ctx.input.message}",
|
105
116
|
retries=0,
|
106
117
|
),
|
@@ -287,6 +287,10 @@ class Config:
|
|
287
287
|
"""Number of seconds to sleep when throttling is required."""
|
288
288
|
return float(os.getenv("ZRB_LLM_THROTTLE_SLEEP", "1.0"))
|
289
289
|
|
290
|
+
@property
|
291
|
+
def LLM_YOLO_MODE(self) -> bool:
|
292
|
+
return to_boolean(os.getenv("ZRB_LLM_YOLO_MODE", "false"))
|
293
|
+
|
290
294
|
@property
|
291
295
|
def LLM_SUMMARIZE_HISTORY(self) -> bool:
|
292
296
|
return to_boolean(os.getenv("ZRB_LLM_SUMMARIZE_HISTORY", "true"))
|
@@ -22,11 +22,9 @@ class LLMConfig:
|
|
22
22
|
default_interactive_system_prompt: str | None = None,
|
23
23
|
default_special_instruction_prompt: str | None = None,
|
24
24
|
default_summarization_prompt: str | None = None,
|
25
|
-
default_context_enrichment_prompt: str | None = None,
|
26
25
|
default_summarize_history: bool | None = None,
|
27
26
|
default_history_summarization_token_threshold: int | None = None,
|
28
|
-
|
29
|
-
default_context_enrichment_token_threshold: int | None = None,
|
27
|
+
default_modes: list[str] | None = None,
|
30
28
|
default_model: "Model | None" = None,
|
31
29
|
default_model_settings: "ModelSettings | None" = None,
|
32
30
|
default_model_provider: "Provider | None" = None,
|
@@ -40,18 +38,14 @@ class LLMConfig:
|
|
40
38
|
self._default_interactive_system_prompt = default_interactive_system_prompt
|
41
39
|
self._default_special_instruction_prompt = default_special_instruction_prompt
|
42
40
|
self._default_summarization_prompt = default_summarization_prompt
|
43
|
-
self._default_context_enrichment_prompt = default_context_enrichment_prompt
|
44
41
|
self._default_summarize_history = default_summarize_history
|
45
42
|
self._default_history_summarization_token_threshold = (
|
46
43
|
default_history_summarization_token_threshold
|
47
44
|
)
|
48
|
-
self.
|
49
|
-
self.
|
50
|
-
default_context_enrichment_token_threshold
|
51
|
-
)
|
45
|
+
self._default_modes = default_modes
|
46
|
+
self._default_model = default_model
|
52
47
|
self._default_model_settings = default_model_settings
|
53
48
|
self._default_model_provider = default_model_provider
|
54
|
-
self._default_model = default_model
|
55
49
|
|
56
50
|
def _get_internal_default_prompt(self, name: str) -> str:
|
57
51
|
if name not in self.__internal_default_prompt:
|
@@ -130,32 +124,18 @@ class LLMConfig:
|
|
130
124
|
lambda: self._get_internal_default_prompt("persona"),
|
131
125
|
)
|
132
126
|
|
127
|
+
@property
|
128
|
+
def default_modes(self) -> list[str]:
|
129
|
+
return self._get_property(
|
130
|
+
self._default_modes, CFG.LLM_MODES, lambda: ["coding"]
|
131
|
+
)
|
132
|
+
|
133
133
|
@property
|
134
134
|
def default_special_instruction_prompt(self) -> str:
|
135
135
|
return self._get_property(
|
136
136
|
self._default_special_instruction_prompt,
|
137
137
|
CFG.LLM_SPECIAL_INSTRUCTION_PROMPT,
|
138
|
-
lambda:
|
139
|
-
)
|
140
|
-
|
141
|
-
def _get_workflow_prompt(self, modes: list[str]) -> str:
|
142
|
-
workflows = llm_context_config.get_workflows()
|
143
|
-
dir_path = os.path.dirname(__file__)
|
144
|
-
default_workflow_names = ("code", "content", "research")
|
145
|
-
for workflow_name in default_workflow_names:
|
146
|
-
if workflow_name in workflows:
|
147
|
-
continue
|
148
|
-
workflow_file_path = os.path.join(
|
149
|
-
dir_path, "default_workflow", f"{workflow_name}.md"
|
150
|
-
)
|
151
|
-
with open(workflow_file_path, "r") as f:
|
152
|
-
workflows[workflow_name] = f.read()
|
153
|
-
return "\n".join(
|
154
|
-
[
|
155
|
-
make_prompt_section(header, content)
|
156
|
-
for header, content in workflows.items()
|
157
|
-
if header.lower() in modes
|
158
|
-
]
|
138
|
+
lambda: "",
|
159
139
|
)
|
160
140
|
|
161
141
|
@property
|
@@ -206,6 +186,19 @@ class LLMConfig:
|
|
206
186
|
def set_default_special_instruction_prompt(self, special_instruction_prompt: str):
|
207
187
|
self._default_special_instruction_prompt = special_instruction_prompt
|
208
188
|
|
189
|
+
def set_default_modes(self, modes: list[str]):
|
190
|
+
self._default_modes = modes
|
191
|
+
|
192
|
+
def add_default_mode(self, mode: str):
|
193
|
+
if self._default_modes is None:
|
194
|
+
self._default_modes = []
|
195
|
+
self._default_modes.append(mode)
|
196
|
+
|
197
|
+
def remove_default_mode(self, mode: str):
|
198
|
+
if self._default_modes is None:
|
199
|
+
self._default_modes = []
|
200
|
+
self._default_modes.remove(mode)
|
201
|
+
|
209
202
|
def set_default_summarization_prompt(self, summarization_prompt: str):
|
210
203
|
self._default_summarization_prompt = summarization_prompt
|
211
204
|
|
@@ -3,11 +3,12 @@ import platform
|
|
3
3
|
import re
|
4
4
|
from datetime import datetime, timezone
|
5
5
|
|
6
|
-
from zrb.attr.type import StrAttr
|
6
|
+
from zrb.attr.type import StrAttr, StrListAttr
|
7
7
|
from zrb.config.llm_config import llm_config as llm_config
|
8
|
+
from zrb.config.llm_context.config import llm_context_config
|
8
9
|
from zrb.context.any_context import AnyContext
|
9
10
|
from zrb.task.llm.conversation_history_model import ConversationHistory
|
10
|
-
from zrb.util.attr import get_attr, get_str_attr
|
11
|
+
from zrb.util.attr import get_attr, get_str_attr, get_str_list_attr
|
11
12
|
from zrb.util.file import read_dir, read_file_with_line_numbers
|
12
13
|
from zrb.util.llm.prompt import make_prompt_section
|
13
14
|
|
@@ -15,13 +16,14 @@ from zrb.util.llm.prompt import make_prompt_section
|
|
15
16
|
def get_persona(
|
16
17
|
ctx: AnyContext,
|
17
18
|
persona_attr: StrAttr | None,
|
19
|
+
render_persona: bool,
|
18
20
|
) -> str:
|
19
21
|
"""Gets the persona, prioritizing task-specific, then default."""
|
20
22
|
persona = get_attr(
|
21
23
|
ctx,
|
22
24
|
persona_attr,
|
23
25
|
None,
|
24
|
-
auto_render=
|
26
|
+
auto_render=render_persona,
|
25
27
|
)
|
26
28
|
if persona is not None:
|
27
29
|
return persona
|
@@ -31,13 +33,14 @@ def get_persona(
|
|
31
33
|
def get_base_system_prompt(
|
32
34
|
ctx: AnyContext,
|
33
35
|
system_prompt_attr: StrAttr | None,
|
36
|
+
render_system_prompt: bool,
|
34
37
|
) -> str:
|
35
38
|
"""Gets the base system prompt, prioritizing task-specific, then default."""
|
36
39
|
system_prompt = get_attr(
|
37
40
|
ctx,
|
38
41
|
system_prompt_attr,
|
39
42
|
None,
|
40
|
-
auto_render=
|
43
|
+
auto_render=render_system_prompt,
|
41
44
|
)
|
42
45
|
if system_prompt is not None:
|
43
46
|
return system_prompt
|
@@ -47,33 +50,95 @@ def get_base_system_prompt(
|
|
47
50
|
def get_special_instruction_prompt(
|
48
51
|
ctx: AnyContext,
|
49
52
|
special_instruction_prompt_attr: StrAttr | None,
|
53
|
+
render_spcecial_instruction_prompt: bool,
|
50
54
|
) -> str:
|
51
55
|
"""Gets the special instruction prompt, prioritizing task-specific, then default."""
|
52
56
|
special_instruction = get_attr(
|
53
57
|
ctx,
|
54
58
|
special_instruction_prompt_attr,
|
55
59
|
None,
|
56
|
-
auto_render=
|
60
|
+
auto_render=render_spcecial_instruction_prompt,
|
57
61
|
)
|
58
62
|
if special_instruction is not None:
|
59
63
|
return special_instruction
|
60
64
|
return llm_config.default_special_instruction_prompt
|
61
65
|
|
62
66
|
|
67
|
+
def get_modes(
|
68
|
+
ctx: AnyContext,
|
69
|
+
modes_attr: StrAttr | None,
|
70
|
+
render_modes: bool,
|
71
|
+
) -> str:
|
72
|
+
"""Gets the modes, prioritizing task-specific, then default."""
|
73
|
+
raw_modes = get_str_list_attr(
|
74
|
+
ctx,
|
75
|
+
modes_attr,
|
76
|
+
auto_render=render_modes,
|
77
|
+
)
|
78
|
+
modes = [mode.strip() for mode in raw_modes if mode.strip() != ""]
|
79
|
+
if len(modes) > 0:
|
80
|
+
return modes
|
81
|
+
return llm_config.default_modes or []
|
82
|
+
|
83
|
+
|
84
|
+
def get_workflow_prompt(
|
85
|
+
ctx: AnyContext,
|
86
|
+
modes_attr: StrAttr | None,
|
87
|
+
render_modes: bool,
|
88
|
+
) -> str:
|
89
|
+
modes = get_modes(ctx, modes_attr, render_modes)
|
90
|
+
# Get user-defined workflows
|
91
|
+
workflows = {
|
92
|
+
workflow_name: content
|
93
|
+
for workflow_name, content in llm_context_config.get_workflows().items()
|
94
|
+
if workflow_name in modes
|
95
|
+
}
|
96
|
+
# Get requested builtin-workflow names
|
97
|
+
requested_builtin_workflow_names = [
|
98
|
+
workflow_name
|
99
|
+
for workflow_name in ("coding", "copywriting", "researching")
|
100
|
+
if workflow_name in modes and workflow_name not in workflows
|
101
|
+
]
|
102
|
+
# add builtin-workflows if requested
|
103
|
+
if len(requested_builtin_workflow_names) > 0:
|
104
|
+
dir_path = os.path.dirname(__file__)
|
105
|
+
for workflow_name in requested_builtin_workflow_names:
|
106
|
+
workflow_file_path = os.path.join(
|
107
|
+
dir_path, "default_workflow", f"{workflow_name}.md"
|
108
|
+
)
|
109
|
+
with open(workflow_file_path, "r") as f:
|
110
|
+
workflows[workflow_name] = f.read()
|
111
|
+
return "\n".join(
|
112
|
+
[
|
113
|
+
make_prompt_section(header.capitalize(), content)
|
114
|
+
for header, content in workflows.items()
|
115
|
+
if header.lower() in modes
|
116
|
+
]
|
117
|
+
)
|
118
|
+
|
119
|
+
|
63
120
|
def get_system_and_user_prompt(
|
64
121
|
ctx: AnyContext,
|
65
122
|
user_message: str,
|
66
123
|
persona_attr: StrAttr | None = None,
|
124
|
+
render_persona: bool = False,
|
67
125
|
system_prompt_attr: StrAttr | None = None,
|
126
|
+
render_system_prompt: bool = False,
|
68
127
|
special_instruction_prompt_attr: StrAttr | None = None,
|
128
|
+
render_special_instruction_prompt: bool = False,
|
129
|
+
modes_attr: StrListAttr | None = None,
|
130
|
+
render_modes: bool = False,
|
69
131
|
conversation_history: ConversationHistory | None = None,
|
70
132
|
) -> tuple[str, str]:
|
71
133
|
"""Combines persona, base system prompt, and special instructions."""
|
72
|
-
persona = get_persona(ctx, persona_attr)
|
73
|
-
base_system_prompt = get_base_system_prompt(
|
74
|
-
|
75
|
-
ctx, special_instruction_prompt_attr
|
134
|
+
persona = get_persona(ctx, persona_attr, render_persona)
|
135
|
+
base_system_prompt = get_base_system_prompt(
|
136
|
+
ctx, system_prompt_attr, render_system_prompt
|
76
137
|
)
|
138
|
+
special_instruction_prompt = get_special_instruction_prompt(
|
139
|
+
ctx, special_instruction_prompt_attr, render_special_instruction_prompt
|
140
|
+
)
|
141
|
+
workflow_prompt = get_workflow_prompt(ctx, modes_attr, render_modes)
|
77
142
|
if conversation_history is None:
|
78
143
|
conversation_history = ConversationHistory()
|
79
144
|
conversation_context, new_user_message = extract_conversation_context(user_message)
|
@@ -81,7 +146,8 @@ def get_system_and_user_prompt(
|
|
81
146
|
[
|
82
147
|
make_prompt_section("Persona", persona),
|
83
148
|
make_prompt_section("System Prompt", base_system_prompt),
|
84
|
-
make_prompt_section("Special Instruction",
|
149
|
+
make_prompt_section("Special Instruction", special_instruction_prompt),
|
150
|
+
make_prompt_section("Special Workflows", workflow_prompt),
|
85
151
|
make_prompt_section(
|
86
152
|
"Past Conversation",
|
87
153
|
"\n".join(
|
@@ -194,30 +260,15 @@ def get_user_message(
|
|
194
260
|
def get_summarization_system_prompt(
|
195
261
|
ctx: AnyContext,
|
196
262
|
summarization_prompt_attr: StrAttr | None,
|
263
|
+
render_summarization_prompt: bool,
|
197
264
|
) -> str:
|
198
265
|
"""Gets the summarization prompt, rendering if configured and handling defaults."""
|
199
266
|
summarization_prompt = get_attr(
|
200
267
|
ctx,
|
201
268
|
summarization_prompt_attr,
|
202
269
|
None,
|
203
|
-
auto_render=
|
270
|
+
auto_render=render_summarization_prompt,
|
204
271
|
)
|
205
272
|
if summarization_prompt is not None:
|
206
273
|
return summarization_prompt
|
207
274
|
return llm_config.default_summarization_prompt
|
208
|
-
|
209
|
-
|
210
|
-
def get_context_enrichment_prompt(
|
211
|
-
ctx: AnyContext,
|
212
|
-
context_enrichment_prompt_attr: StrAttr | None,
|
213
|
-
) -> str:
|
214
|
-
"""Gets the context enrichment prompt, rendering if configured and handling defaults."""
|
215
|
-
context_enrichment_prompt = get_attr(
|
216
|
-
ctx,
|
217
|
-
context_enrichment_prompt_attr,
|
218
|
-
None,
|
219
|
-
auto_render=False,
|
220
|
-
)
|
221
|
-
if context_enrichment_prompt is not None:
|
222
|
-
return context_enrichment_prompt
|
223
|
-
return llm_config.default_context_enrichment_prompt
|
@@ -5,9 +5,12 @@ import typing
|
|
5
5
|
from collections.abc import Callable
|
6
6
|
from typing import TYPE_CHECKING
|
7
7
|
|
8
|
+
from zrb.config.config import CFG
|
8
9
|
from zrb.context.any_context import AnyContext
|
9
10
|
from zrb.task.llm.error import ToolExecutionError
|
11
|
+
from zrb.util.callable import get_callable_name
|
10
12
|
from zrb.util.run import run_async
|
13
|
+
from zrb.util.string.conversion import to_boolean
|
11
14
|
|
12
15
|
if TYPE_CHECKING:
|
13
16
|
from pydantic_ai import Tool
|
@@ -71,13 +74,11 @@ def _create_wrapper(
|
|
71
74
|
async def wrapper(*args, **kwargs):
|
72
75
|
# Identify AnyContext parameter name from the original signature if needed
|
73
76
|
any_context_param_name = None
|
74
|
-
|
75
77
|
if needs_any_context_for_injection:
|
76
78
|
for param in original_sig.parameters.values():
|
77
79
|
if _is_annotated_with_context(param.annotation, AnyContext):
|
78
80
|
any_context_param_name = param.name
|
79
81
|
break # Found it, no need to continue
|
80
|
-
|
81
82
|
if any_context_param_name is None:
|
82
83
|
# This should not happen if needs_any_context_for_injection is True,
|
83
84
|
# but check for safety
|
@@ -87,24 +88,22 @@ def _create_wrapper(
|
|
87
88
|
# Inject the captured ctx into kwargs. This will overwrite if the LLM
|
88
89
|
# somehow provided it.
|
89
90
|
kwargs[any_context_param_name] = ctx
|
90
|
-
|
91
91
|
# If the dummy argument was added for schema generation and is present in kwargs,
|
92
92
|
# remove it before calling the original function, unless the original function
|
93
93
|
# actually expects a parameter named '_dummy'.
|
94
94
|
if "_dummy" in kwargs and "_dummy" not in original_sig.parameters:
|
95
95
|
del kwargs["_dummy"]
|
96
|
-
|
97
96
|
try:
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
97
|
+
if not CFG.LLM_YOLO_MODE and not ctx.is_web_mode and ctx.is_tty:
|
98
|
+
func_name = get_callable_name(func)
|
99
|
+
ctx.print(f"✅ >> Allow to run tool: {func_name} (Y/n)", plain=True)
|
100
|
+
user_confirmation_str = await _read_line()
|
101
|
+
user_confirmation = to_boolean(user_confirmation_str)
|
102
|
+
if not user_confirmation:
|
103
|
+
ctx.print("❌ >> Why?", plain=True)
|
104
|
+
reason = await _read_line()
|
105
|
+
ctx.print("", plain=True)
|
106
|
+
raise ValueError(f"User disapproval: {reason}")
|
108
107
|
return await run_async(func(*args, **kwargs))
|
109
108
|
except Exception as e:
|
110
109
|
error_model = ToolExecutionError(
|
@@ -118,6 +117,13 @@ def _create_wrapper(
|
|
118
117
|
return wrapper
|
119
118
|
|
120
119
|
|
120
|
+
async def _read_line():
|
121
|
+
from prompt_toolkit import PromptSession
|
122
|
+
|
123
|
+
reader = PromptSession()
|
124
|
+
return await reader.prompt_async()
|
125
|
+
|
126
|
+
|
121
127
|
def _adjust_signature(
|
122
128
|
wrapper: Callable, original_sig: inspect.Signature, takes_no_args: bool
|
123
129
|
):
|
@@ -2,7 +2,7 @@ import json
|
|
2
2
|
from collections.abc import Callable
|
3
3
|
from typing import TYPE_CHECKING, Any
|
4
4
|
|
5
|
-
from zrb.attr.type import BoolAttr, IntAttr, StrAttr, fstring
|
5
|
+
from zrb.attr.type import BoolAttr, IntAttr, StrAttr, StrListAttr, fstring
|
6
6
|
from zrb.config.llm_rate_limitter import LLMRateLimiter
|
7
7
|
from zrb.context.any_context import AnyContext
|
8
8
|
from zrb.context.any_shared_context import AnySharedContext
|
@@ -16,14 +16,12 @@ from zrb.task.llm.config import (
|
|
16
16
|
get_model_settings,
|
17
17
|
)
|
18
18
|
from zrb.task.llm.conversation_history import (
|
19
|
-
ListOfDict,
|
20
19
|
read_conversation_history,
|
21
20
|
write_conversation_history,
|
22
21
|
)
|
23
22
|
from zrb.task.llm.conversation_history_model import ConversationHistory
|
24
23
|
from zrb.task.llm.history_summarization import maybe_summarize_history
|
25
24
|
from zrb.task.llm.prompt import (
|
26
|
-
get_context_enrichment_prompt,
|
27
25
|
get_summarization_system_prompt,
|
28
26
|
get_system_and_user_prompt,
|
29
27
|
get_user_message,
|
@@ -65,16 +63,15 @@ class LLMTask(BaseTask):
|
|
65
63
|
) = None,
|
66
64
|
agent: "Agent | Callable[[AnySharedContext], Agent] | None" = None,
|
67
65
|
persona: StrAttr | None = None,
|
66
|
+
render_persona: bool = False,
|
68
67
|
system_prompt: StrAttr | None = None,
|
68
|
+
render_system_prompt: bool = False,
|
69
69
|
special_instruction_prompt: StrAttr | None = None,
|
70
|
+
render_special_instruction_prompt: bool = False,
|
71
|
+
modes: StrListAttr | None = None,
|
72
|
+
render_modes: bool = True,
|
70
73
|
message: StrAttr | None = None,
|
71
74
|
render_message: bool = True,
|
72
|
-
enrich_context: BoolAttr | None = None,
|
73
|
-
render_enrich_context: bool = True,
|
74
|
-
context_enrichment_prompt: StrAttr | None = None,
|
75
|
-
render_context_enrichment_prompt: bool = True,
|
76
|
-
context_enrichment_token_threshold: IntAttr | None = None,
|
77
|
-
render_context_enrichment_token_threshold: bool = True,
|
78
75
|
tools: (
|
79
76
|
list["ToolOrCallable"]
|
80
77
|
| Callable[[AnySharedContext], list["ToolOrCallable"]]
|
@@ -100,6 +97,7 @@ class LLMTask(BaseTask):
|
|
100
97
|
summarize_history: BoolAttr | None = None,
|
101
98
|
render_summarize_history: bool = True,
|
102
99
|
summarization_prompt: StrAttr | None = None,
|
100
|
+
render_summarization_prompt: bool = False,
|
103
101
|
history_summarization_token_threshold: IntAttr | None = None,
|
104
102
|
render_history_summarization_token_threshold: bool = True,
|
105
103
|
rate_limitter: LLMRateLimiter | None = None,
|
@@ -150,19 +148,17 @@ class LLMTask(BaseTask):
|
|
150
148
|
self._model_settings = model_settings
|
151
149
|
self._agent = agent
|
152
150
|
self._persona = persona
|
151
|
+
self._render_persona = render_persona
|
153
152
|
self._system_prompt = system_prompt
|
153
|
+
self._render_system_prompt = render_system_prompt
|
154
154
|
self._special_instruction_prompt = special_instruction_prompt
|
155
|
+
self._render_special_instruction_prompt = render_special_instruction_prompt
|
156
|
+
self._modes = modes
|
157
|
+
self._render_modes = render_modes
|
155
158
|
self._message = message
|
156
159
|
self._render_message = render_message
|
157
160
|
self._summarization_prompt = summarization_prompt
|
158
|
-
self.
|
159
|
-
self._render_enrich_context = render_enrich_context
|
160
|
-
self._context_enrichment_prompt = context_enrichment_prompt
|
161
|
-
self._render_context_enrichment_prompt = render_context_enrichment_prompt
|
162
|
-
self._context_enrichment_token_threshold = context_enrichment_token_threshold
|
163
|
-
self._render_context_enrichment_token_threshold = (
|
164
|
-
render_context_enrichment_token_threshold
|
165
|
-
)
|
161
|
+
self._render_summarization_prompt = render_summarization_prompt
|
166
162
|
self._tools = tools
|
167
163
|
self._rate_limitter = rate_limitter
|
168
164
|
self._additional_tools: list["ToolOrCallable"] = []
|
@@ -198,12 +194,6 @@ class LLMTask(BaseTask):
|
|
198
194
|
for single_mcp_server in mcp_server:
|
199
195
|
self._additional_mcp_servers.append(single_mcp_server)
|
200
196
|
|
201
|
-
def set_should_enrich_context(self, enrich_context: bool):
|
202
|
-
self._should_enrich_context = enrich_context
|
203
|
-
|
204
|
-
def set_context_enrichment_token_threshold(self, enrichment_token_threshold: int):
|
205
|
-
self._context_enrichment_token_threshold = enrichment_token_threshold
|
206
|
-
|
207
197
|
def set_should_summarize_history(self, summarize_history: bool):
|
208
198
|
self._should_summarize_history = summarize_history
|
209
199
|
|
@@ -227,6 +217,7 @@ class LLMTask(BaseTask):
|
|
227
217
|
summarization_prompt = get_summarization_system_prompt(
|
228
218
|
ctx=ctx,
|
229
219
|
summarization_prompt_attr=self._summarization_prompt,
|
220
|
+
render_summarization_prompt=self._render_summarization_prompt,
|
230
221
|
)
|
231
222
|
user_message = get_user_message(ctx, self._message, self._render_message)
|
232
223
|
# 1. Prepare initial state (read history from previous session)
|
@@ -243,8 +234,13 @@ class LLMTask(BaseTask):
|
|
243
234
|
ctx=ctx,
|
244
235
|
user_message=user_message,
|
245
236
|
persona_attr=self._persona,
|
237
|
+
render_persona=self._render_persona,
|
246
238
|
system_prompt_attr=self._system_prompt,
|
239
|
+
render_system_prompt=self._render_system_prompt,
|
247
240
|
special_instruction_prompt_attr=self._special_instruction_prompt,
|
241
|
+
render_special_instruction_prompt=self._render_special_instruction_prompt,
|
242
|
+
modes_attr=self._modes,
|
243
|
+
render_modes=self._render_modes,
|
248
244
|
conversation_history=conversation_history,
|
249
245
|
)
|
250
246
|
# 3. Get the agent instance
|