zrb 1.10.2__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.10.2 → zrb-1.12.0}/PKG-INFO +2 -2
- {zrb-1.10.2 → zrb-1.12.0}/pyproject.toml +2 -2
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/llm/chat_session.py +42 -14
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/llm/llm_ask.py +11 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/llm/tool/file.py +2 -2
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/config/config.py +31 -80
- zrb-1.12.0/src/zrb/config/default_prompt/file_extractor_system_prompt.md +12 -0
- zrb-1.12.0/src/zrb/config/default_prompt/interactive_system_prompt.md +31 -0
- zrb-1.12.0/src/zrb/config/default_prompt/persona.md +1 -0
- zrb-1.12.0/src/zrb/config/default_prompt/repo_extractor_system_prompt.md +112 -0
- zrb-1.12.0/src/zrb/config/default_prompt/repo_summarizer_system_prompt.md +10 -0
- zrb-1.12.0/src/zrb/config/default_prompt/summarization_prompt.md +42 -0
- zrb-1.12.0/src/zrb/config/default_prompt/system_prompt.md +28 -0
- zrb-1.12.0/src/zrb/config/llm_config.py +234 -0
- zrb-1.12.0/src/zrb/config/llm_context/config.py +74 -0
- zrb-1.12.0/src/zrb/config/llm_context/config_handler.py +238 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/context/any_shared_context.py +10 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/context/context.py +8 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/context/shared_context.py +9 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/task_session_api_route.py +1 -1
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/llm/agent.py +2 -2
- zrb-1.12.0/src/zrb/task/llm/conversation_history_model.py +292 -0
- zrb-1.12.0/src/zrb/task/llm/default_workflow/coding.md +24 -0
- zrb-1.12.0/src/zrb/task/llm/default_workflow/copywriting.md +17 -0
- zrb-1.12.0/src/zrb/task/llm/default_workflow/researching.md +18 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/llm/history_summarization.py +6 -6
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/llm/prompt.py +92 -41
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/llm/tool_wrapper.py +20 -14
- {zrb-1.10.2 → 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.12.0/src/zrb/util/llm/prompt.py +54 -0
- zrb-1.10.2/src/zrb/config/llm_config.py +0 -424
- zrb-1.10.2/src/zrb/task/llm/conversation_history_model.py +0 -440
- zrb-1.10.2/src/zrb/util/llm/prompt.py +0 -18
- {zrb-1.10.2 → zrb-1.12.0}/README.md +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/__main__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/attr/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/attr/type.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/base64.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/git.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/git_subtree.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/group.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/http.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/jwt.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/llm/history.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/llm/input.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/llm/previous-session.js +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/llm/tool/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/llm/tool/api.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/llm/tool/cli.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/llm/tool/code.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/llm/tool/rag.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/llm/tool/sub_agent.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/llm/tool/web.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/md5.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
- {zrb-1.10.2 → 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.10.2 → 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.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
- {zrb-1.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
- {zrb-1.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
- {zrb-1.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
- {zrb-1.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
- {zrb-1.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
- {zrb-1.10.2 → 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.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
- {zrb-1.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
- {zrb-1.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → 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.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
- {zrb-1.10.2 → 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.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/create/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/create/project-template/README.md +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/project/create/project_task.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/python.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/random.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/setup/common_input.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/setup/ubuntu.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/shell/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/todo.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/builtin/uuid.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/callback/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/callback/any_callback.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/callback/callback.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/cmd/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/cmd/cmd_result.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/cmd/cmd_val.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/config/llm_rate_limitter.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/config/web_auth_config.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/content_transformer/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/content_transformer/any_content_transformer.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/content_transformer/content_transformer.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/context/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/context/any_context.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/dot_dict/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/dot_dict/dot_dict.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/env/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/env/any_env.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/env/env.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/env/env_file.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/env/env_map.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/group/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/group/any_group.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/group/group.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/input/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/input/any_input.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/input/base_input.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/input/bool_input.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/input/float_input.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/input/int_input.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/input/option_input.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/input/password_input.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/input/str_input.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/input/text_input.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/cli.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/common_util.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_app.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/docs_route.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/error_page/view.html +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/home_page/view.html +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/login_api_route.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/login_page/view.html +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/logout_api_route.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/logout_page/view.html +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/global_template.html +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/common.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/common.js +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.amber.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.blue.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.cyan.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.fuchsia.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.green.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.grey.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.indigo.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.jade.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.lime.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.orange.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.pink.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.pumpkin.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.purple.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.red.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.sand.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.slate.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.violet.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.yellow.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.zinc.min.css +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/static/static_route.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_schema/session.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_schema/token.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_schema/user.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_util/cookie.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_util/html.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_util/token.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/runner/web_util/user.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/session/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/session/any_session.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/session/session.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/session_state_log/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/session_state_log/session_state_log.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/session_state_logger/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/any_task.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/base/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/base/context.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/base/execution.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/base/lifecycle.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/base/monitoring.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/base/operators.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/base_task.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/base_trigger.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/cmd_task.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/http_check.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/llm/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/llm/config.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/llm/conversation_history.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/llm/error.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/llm/print_node.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/llm/typing.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/make_task.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/rsync_task.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/scaffolder.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/scheduler.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/task.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task/tcp_check.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task_status/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/task_status/task_status.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/attr.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/cli/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/cli/style.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/cli/subcommand.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/cmd/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/cmd/command.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/cmd/remote.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/codemod/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/codemod/modification_mode.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/codemod/modify_class.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/codemod/modify_class_parent.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/codemod/modify_class_property.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/codemod/modify_dict.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/codemod/modify_function.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/codemod/modify_function_call.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/codemod/modify_method.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/codemod/modify_module.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/cron.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/file.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/git.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/git_diff_model.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/git_subtree.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/git_subtree_model.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/group.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/init_path.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/load.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/run.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/string/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/string/conversion.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/string/format.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/string/name.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/todo.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/util/todo_model.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/xcom/__init__.py +0 -0
- {zrb-1.10.2 → zrb-1.12.0}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: zrb
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.12.0
|
4
4
|
Summary: Your Automation Powerhouse
|
5
5
|
Home-page: https://github.com/state-alchemists/zrb
|
6
6
|
License: AGPL-3.0-or-later
|
@@ -27,7 +27,7 @@ Requires-Dist: pdfplumber (>=0.11.6,<0.12.0) ; extra == "rag" or extra == "all"
|
|
27
27
|
Requires-Dist: playwright (>=1.53.0,<2.0.0) ; extra == "playwright" or extra == "all"
|
28
28
|
Requires-Dist: prompt-toolkit (>=3.0.51,<4.0.0)
|
29
29
|
Requires-Dist: psutil (>=7.0.0,<8.0.0)
|
30
|
-
Requires-Dist: pydantic-ai (>=0.
|
30
|
+
Requires-Dist: pydantic-ai (>=0.4.4,<0.5.0)
|
31
31
|
Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
|
32
32
|
Requires-Dist: python-dotenv (>=1.1.1,<2.0.0)
|
33
33
|
Requires-Dist: python-jose[cryptography] (>=3.4.0,<4.0.0)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "zrb"
|
3
|
-
version = "1.
|
3
|
+
version = "1.12.0"
|
4
4
|
description = "Your Automation Powerhouse"
|
5
5
|
authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
|
6
6
|
license = "AGPL-3.0-or-later"
|
@@ -49,7 +49,7 @@ beautifulsoup4 = "^4.13.3"
|
|
49
49
|
fastapi = {extras = ["standard"], version = "^0.115.14"}
|
50
50
|
python-jose = {extras = ["cryptography"], version = "^3.4.0"}
|
51
51
|
ulid-py = "^1.1.0"
|
52
|
-
pydantic-ai = "^0.
|
52
|
+
pydantic-ai = "^0.4.4"
|
53
53
|
tiktoken = "^0.8.0"
|
54
54
|
openai = {version = "^1.86.0", optional = true}
|
55
55
|
playwright = {version = "^1.53.0", optional = true}
|
@@ -19,27 +19,29 @@ async def read_user_prompt(ctx: AnyContext) -> str:
|
|
19
19
|
Orchestrates the session by calling helper functions.
|
20
20
|
"""
|
21
21
|
_show_info(ctx)
|
22
|
-
is_web = ctx.env.get("_ZRB_WEB_ENV", "0") == "1"
|
23
22
|
final_result = await _handle_initial_message(ctx)
|
24
|
-
if
|
23
|
+
if ctx.is_web_mode:
|
25
24
|
return final_result
|
26
|
-
|
27
|
-
reader = await _setup_input_reader(
|
25
|
+
is_tty = ctx.is_tty
|
26
|
+
reader = await _setup_input_reader(is_tty)
|
28
27
|
multiline_mode = False
|
28
|
+
current_modes = ctx.input.modes
|
29
29
|
user_inputs = []
|
30
30
|
while True:
|
31
31
|
await asyncio.sleep(0.01)
|
32
32
|
# Get user input based on mode
|
33
33
|
if not multiline_mode:
|
34
34
|
ctx.print("💬 >>", plain=True)
|
35
|
-
user_input = await _read_next_line(
|
35
|
+
user_input = await _read_next_line(is_tty, reader, ctx)
|
36
36
|
if not multiline_mode:
|
37
37
|
ctx.print("", plain=True)
|
38
38
|
# Handle user input
|
39
39
|
if user_input.strip().lower() in ("/bye", "/quit", "/q", "/exit"):
|
40
40
|
user_prompt = "\n".join(user_inputs)
|
41
41
|
user_inputs = []
|
42
|
-
result = await _trigger_ask_and_wait_for_result(
|
42
|
+
result = await _trigger_ask_and_wait_for_result(
|
43
|
+
ctx, user_prompt, current_modes
|
44
|
+
)
|
43
45
|
if result is not None:
|
44
46
|
final_result = result
|
45
47
|
break
|
@@ -50,9 +52,18 @@ async def read_user_prompt(ctx: AnyContext) -> str:
|
|
50
52
|
multiline_mode = False
|
51
53
|
user_prompt = "\n".join(user_inputs)
|
52
54
|
user_inputs = []
|
53
|
-
result = await _trigger_ask_and_wait_for_result(
|
55
|
+
result = await _trigger_ask_and_wait_for_result(
|
56
|
+
ctx, user_prompt, current_modes
|
57
|
+
)
|
54
58
|
if result is not None:
|
55
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
|
56
67
|
elif user_input.strip().lower() in ("/help", "/info"):
|
57
68
|
_show_info(ctx)
|
58
69
|
continue
|
@@ -62,7 +73,9 @@ async def read_user_prompt(ctx: AnyContext) -> str:
|
|
62
73
|
continue
|
63
74
|
user_prompt = "\n".join(user_inputs)
|
64
75
|
user_inputs = []
|
65
|
-
result = await _trigger_ask_and_wait_for_result(
|
76
|
+
result = await _trigger_ask_and_wait_for_result(
|
77
|
+
ctx, user_prompt, current_modes
|
78
|
+
)
|
66
79
|
if result is not None:
|
67
80
|
final_result = result
|
68
81
|
return final_result
|
@@ -75,16 +88,26 @@ def _show_info(ctx: AnyContext):
|
|
75
88
|
ctx: The context object for the task.
|
76
89
|
"""
|
77
90
|
ctx.print(
|
78
|
-
(
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
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
|
+
]
|
83
100
|
),
|
84
101
|
plain=True,
|
85
102
|
)
|
86
103
|
|
87
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
|
+
|
88
111
|
async def _handle_initial_message(ctx: AnyContext) -> str:
|
89
112
|
"""Processes the initial message from the command line."""
|
90
113
|
if not ctx.input.message or ctx.input.message.strip() == "":
|
@@ -95,6 +118,7 @@ async def _handle_initial_message(ctx: AnyContext) -> str:
|
|
95
118
|
result = await _trigger_ask_and_wait_for_result(
|
96
119
|
ctx,
|
97
120
|
user_prompt=ctx.input.message,
|
121
|
+
modes=ctx.input.modes,
|
98
122
|
previous_session_name=ctx.input.previous_session,
|
99
123
|
start_new=ctx.input.start_new,
|
100
124
|
)
|
@@ -132,6 +156,7 @@ async def _read_next_line(is_interactive: bool, reader, ctx: AnyContext) -> str:
|
|
132
156
|
async def _trigger_ask_and_wait_for_result(
|
133
157
|
ctx: AnyContext,
|
134
158
|
user_prompt: str,
|
159
|
+
modes: str,
|
135
160
|
previous_session_name: str | None = None,
|
136
161
|
start_new: bool = False,
|
137
162
|
) -> str | None:
|
@@ -149,7 +174,7 @@ async def _trigger_ask_and_wait_for_result(
|
|
149
174
|
"""
|
150
175
|
if user_prompt.strip() == "":
|
151
176
|
return None
|
152
|
-
await _trigger_ask(ctx, user_prompt, previous_session_name, start_new)
|
177
|
+
await _trigger_ask(ctx, user_prompt, modes, previous_session_name, start_new)
|
153
178
|
result = await _wait_ask_result(ctx)
|
154
179
|
md_result = _render_markdown(result) if result is not None else ""
|
155
180
|
ctx.print("\n🤖 >>", plain=True)
|
@@ -194,12 +219,14 @@ def get_llm_ask_input_mapping(callback_ctx: AnyContext):
|
|
194
219
|
"start-new": data.get("start_new"),
|
195
220
|
"previous-session": data.get("previous_session_name"),
|
196
221
|
"message": data.get("message"),
|
222
|
+
"modes": data.get("modes"),
|
197
223
|
}
|
198
224
|
|
199
225
|
|
200
226
|
async def _trigger_ask(
|
201
227
|
ctx: AnyContext,
|
202
228
|
user_prompt: str,
|
229
|
+
modes: str,
|
203
230
|
previous_session_name: str | None = None,
|
204
231
|
start_new: bool = False,
|
205
232
|
):
|
@@ -219,6 +246,7 @@ async def _trigger_ask(
|
|
219
246
|
"previous_session_name": previous_session_name,
|
220
247
|
"start_new": start_new,
|
221
248
|
"message": user_prompt,
|
249
|
+
"modes": modes,
|
222
250
|
}
|
223
251
|
)
|
224
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
|
),
|
@@ -10,7 +10,7 @@ from zrb.config.llm_rate_limitter import llm_rate_limitter
|
|
10
10
|
from zrb.context.any_context import AnyContext
|
11
11
|
from zrb.util.file import read_file, read_file_with_line_numbers, write_file
|
12
12
|
|
13
|
-
_EXTRACT_INFO_FROM_FILE_SYSTEM_PROMPT = CFG.
|
13
|
+
_EXTRACT_INFO_FROM_FILE_SYSTEM_PROMPT = CFG.LLM_FILE_EXTRACTOR_SYSTEM_PROMPT
|
14
14
|
|
15
15
|
|
16
16
|
DEFAULT_EXCLUDED_PATTERNS = [
|
@@ -471,7 +471,7 @@ async def analyze_file(
|
|
471
471
|
_analyze_file = create_sub_agent_tool(
|
472
472
|
tool_name="analyze_file",
|
473
473
|
tool_description="analyze file with LLM capability",
|
474
|
-
system_prompt=CFG.
|
474
|
+
system_prompt=CFG.LLM_FILE_EXTRACTOR_SYSTEM_PROMPT,
|
475
475
|
tools=[read_from_file, search_files],
|
476
476
|
)
|
477
477
|
payload = json.dumps(
|
@@ -19,77 +19,20 @@ Your Automation Powerhouse
|
|
19
19
|
🐤 Follow us at: https://twitter.com/zarubastalchmst
|
20
20
|
"""
|
21
21
|
|
22
|
-
_DEFAULT_LLM_ANALYZE_FILE_EXTRACTOR_SYSTEM_PROMPT = (
|
23
|
-
"You are an intelligent code and configuration analysis agent.\n"
|
24
|
-
"Your primary goal is to extract key information from the provided file(s) "
|
25
|
-
"that is directly relevant to the main assistant's objective.\n"
|
26
|
-
"\n"
|
27
|
-
"Analyze the file content and determine its type (e.g., Python script, "
|
28
|
-
"YAML configuration, Dockerfile, Markdown documentation).\n"
|
29
|
-
"Based on the file type, extract the most important information in a "
|
30
|
-
"structured markdown format.\n"
|
31
|
-
"\n"
|
32
|
-
"- For source code (e.g., .py, .js, .go): Extract key components like "
|
33
|
-
"classes, functions, important variables, and their purposes.\n"
|
34
|
-
"- For configuration files (e.g., .yaml, .toml, .json): Extract the main "
|
35
|
-
"configuration sections, keys, and their values.\n"
|
36
|
-
"- For infrastructure files (e.g., Dockerfile, .tf): Extract resources, "
|
37
|
-
"settings, and commands.\n"
|
38
|
-
"- For documentation (e.g., .md): Extract headings, summaries, code "
|
39
|
-
"blocks, and links.\n"
|
40
|
-
"\n"
|
41
|
-
"Focus on quality and relevance over quantity. The output should be a "
|
42
|
-
"concise yet comprehensive summary that directly helps the main "
|
43
|
-
"assistant achieve its goal."
|
44
|
-
).strip()
|
45
|
-
|
46
|
-
_DEFAULT_LLM_REPO_EXTRACTOR_SYSTEM_PROMPT = (
|
47
|
-
"You are an intelligent code and configuration analysis agent.\n"
|
48
|
-
"Your primary goal is to extract key information from the provided file(s) "
|
49
|
-
"that is directly relevant to the main assistant's objective.\n"
|
50
|
-
"\n"
|
51
|
-
"Analyze the file content and determine its type (e.g., Python script, "
|
52
|
-
"YAML configuration, Dockerfile, Markdown documentation).\n"
|
53
|
-
"Based on the file type, extract the most important information in a "
|
54
|
-
"structured markdown format.\n"
|
55
|
-
"\n"
|
56
|
-
"- For source code (e.g., .py, .js, .go): Extract key components like "
|
57
|
-
"classes, functions, important variables, and their purposes.\n"
|
58
|
-
"- For configuration files (e.g., .yaml, .toml, .json): Extract the main "
|
59
|
-
"configuration sections, keys, and their values.\n"
|
60
|
-
"- For infrastructure files (e.g., Dockerfile, .tf): Extract resources, "
|
61
|
-
"settings, and commands.\n"
|
62
|
-
"- For documentation (e.g., .md): Extract headings, summaries, code "
|
63
|
-
"blocks, and links.\n"
|
64
|
-
"\n"
|
65
|
-
"Focus on quality and relevance over quantity. The output should be a "
|
66
|
-
"concise yet comprehensive summary that directly helps the main "
|
67
|
-
"assistant achieve its goal."
|
68
|
-
).strip()
|
69
|
-
|
70
|
-
_DEFAULT_LLM_REPO_SUMMARIZER_SYSTEM_PROMPT = (
|
71
|
-
"You are an expert summarization and synthesis agent.\n"
|
72
|
-
"Your goal is to consolidate multiple pieces of extracted information into a "
|
73
|
-
"single, coherent summary that directly addresses the main assistant's "
|
74
|
-
"objective.\n"
|
75
|
-
"\n"
|
76
|
-
"Do not simply list the information you receive. Instead, perform the "
|
77
|
-
"following actions:\n"
|
78
|
-
"1. **Synthesize**: Combine related pieces of information from different "
|
79
|
-
"sources into a unified narrative.\n"
|
80
|
-
"2. **Consolidate**: Merge duplicate or overlapping information to create a "
|
81
|
-
"concise summary.\n"
|
82
|
-
"3. **Identify Patterns**: Look for high-level patterns, architectural "
|
83
|
-
"structures, or recurring themes in the data.\n"
|
84
|
-
"4. **Structure**: Organize the final output in a logical markdown format "
|
85
|
-
"that tells a clear story and directly answers the main assistant's goal.\n"
|
86
|
-
"\n"
|
87
|
-
"Focus on creating a holistic understanding of the subject matter based on "
|
88
|
-
"the provided context."
|
89
|
-
).strip()
|
90
|
-
|
91
22
|
|
92
23
|
class Config:
|
24
|
+
def __init__(self):
|
25
|
+
self.__internal_default_prompt: dict[str, str] = {}
|
26
|
+
|
27
|
+
def _get_internal_default_prompt(self, name: str) -> str:
|
28
|
+
if name not in self.__internal_default_prompt:
|
29
|
+
file_path = os.path.join(
|
30
|
+
os.path.dirname(__file__), "default_prompt", f"{name}.md"
|
31
|
+
)
|
32
|
+
with open(file_path, "r") as f:
|
33
|
+
self.__internal_default_prompt[name] = f.read().strip()
|
34
|
+
return self.__internal_default_prompt[name]
|
35
|
+
|
93
36
|
@property
|
94
37
|
def LOGGER(self) -> logging.Logger:
|
95
38
|
return logging.getLogger()
|
@@ -302,6 +245,14 @@ class Config:
|
|
302
245
|
def LLM_PERSONA(self) -> str | None:
|
303
246
|
return os.getenv("ZRB_LLM_PERSONA", None)
|
304
247
|
|
248
|
+
@property
|
249
|
+
def LLM_MODES(self) -> list[str]:
|
250
|
+
return [
|
251
|
+
mode.strip()
|
252
|
+
for mode in os.getenv("ZRB_LLM_MODES", "coding").split(",")
|
253
|
+
if mode.strip() != ""
|
254
|
+
]
|
255
|
+
|
305
256
|
@property
|
306
257
|
def LLM_SPECIAL_INSTRUCTION_PROMPT(self) -> str | None:
|
307
258
|
return os.getenv("ZRB_LLM_SPECIAL_INSTRUCTION_PROMPT", None)
|
@@ -336,6 +287,10 @@ class Config:
|
|
336
287
|
"""Number of seconds to sleep when throttling is required."""
|
337
288
|
return float(os.getenv("ZRB_LLM_THROTTLE_SLEEP", "1.0"))
|
338
289
|
|
290
|
+
@property
|
291
|
+
def LLM_YOLO_MODE(self) -> bool:
|
292
|
+
return to_boolean(os.getenv("ZRB_LLM_YOLO_MODE", "false"))
|
293
|
+
|
339
294
|
@property
|
340
295
|
def LLM_SUMMARIZE_HISTORY(self) -> bool:
|
341
296
|
return to_boolean(os.getenv("ZRB_LLM_SUMMARIZE_HISTORY", "true"))
|
@@ -359,24 +314,24 @@ class Config:
|
|
359
314
|
return int(os.getenv("ZRB_LLM_FILE_ANALYSIS_TOKEN_LIMIT", "35000"))
|
360
315
|
|
361
316
|
@property
|
362
|
-
def
|
317
|
+
def LLM_FILE_EXTRACTOR_SYSTEM_PROMPT(self) -> str:
|
363
318
|
return os.getenv(
|
364
|
-
"
|
365
|
-
|
319
|
+
"ZRB_LLM_FILE_EXTRACTOR_SYSTEM_PROMPT",
|
320
|
+
self._get_internal_default_prompt("file_extractor_system_prompt"),
|
366
321
|
)
|
367
322
|
|
368
323
|
@property
|
369
324
|
def LLM_REPO_EXTRACTOR_SYSTEM_PROMPT(self) -> str:
|
370
325
|
return os.getenv(
|
371
326
|
"ZRB_LLM_REPO_EXTRACTOR_SYSTEM_PROMPT",
|
372
|
-
|
327
|
+
self._get_internal_default_prompt("repo_extractor_system_prompt"),
|
373
328
|
)
|
374
329
|
|
375
330
|
@property
|
376
331
|
def LLM_REPO_SUMMARIZER_SYSTEM_PROMPT(self) -> str:
|
377
332
|
return os.getenv(
|
378
333
|
"ZRB_LLM_REPO_SUMMARIZER_SYSTEM_PROMPT",
|
379
|
-
|
334
|
+
self._get_internal_default_prompt("repo_summarizer_system_prompt"),
|
380
335
|
)
|
381
336
|
|
382
337
|
@property
|
@@ -434,12 +389,8 @@ class Config:
|
|
434
389
|
)
|
435
390
|
|
436
391
|
@property
|
437
|
-
def
|
438
|
-
return os.getenv("
|
439
|
-
|
440
|
-
@property
|
441
|
-
def LLM_LONG_TERM_NOTE_PATH(self) -> str:
|
442
|
-
return os.getenv("LLM_LONG_TERM_NOTE_PATH", "~/ZRB_GLOBAL_README.md")
|
392
|
+
def LLM_CONTEXT_FILE(self) -> str:
|
393
|
+
return os.getenv("LLM_CONTEXT_FILE", "ZRB.md")
|
443
394
|
|
444
395
|
|
445
396
|
CFG = Config()
|
@@ -0,0 +1,12 @@
|
|
1
|
+
You are an intelligent code and configuration analysis agent.
|
2
|
+
Your primary goal is to extract key information from the provided file(s) that is directly relevant to the main assistant's objective.
|
3
|
+
|
4
|
+
Analyze the file content and determine its type (e.g., Python script, YAML configuration, Dockerfile, Markdown documentation).
|
5
|
+
Based on the file type, extract the most important information in a structured markdown format.
|
6
|
+
|
7
|
+
- For source code (e.g., .py, .js, .go): Extract key components like classes, functions, important variables, and their purposes.
|
8
|
+
- For configuration files (e.g., .yaml, .toml, .json): Extract the main configuration sections, keys, and their values.
|
9
|
+
- For infrastructure files (e.g., Dockerfile, .tf): Extract resources, settings, and commands.
|
10
|
+
- For documentation (e.g., .md): Extract headings, summaries, code blocks, and links.
|
11
|
+
|
12
|
+
Focus on quality and relevance over quantity. The output should be a concise yet comprehensive summary that directly helps the main assistant achieve its goal.
|
@@ -0,0 +1,31 @@
|
|
1
|
+
You are an expert AI agent in a CLI. You MUST follow this workflow for this interactive session. Respond in GitHub-flavored Markdown.
|
2
|
+
|
3
|
+
# Core Principles
|
4
|
+
- **Be Tool-Centric:** Do not describe what you are about to do. When a decision is made, call the tool directly. Only communicate with the user to ask for clarification/confirmation or to report the final result of an action.
|
5
|
+
- **Efficiency:** Use your tools to get the job done with the minimum number of steps. Combine commands where possible.
|
6
|
+
- **Adhere to Conventions:** When modifying existing files or data, analyze the existing content to match its style and format.
|
7
|
+
|
8
|
+
# Interactive Workflow
|
9
|
+
1. **Clarify and Plan:** Understand the user's goal.
|
10
|
+
* If a request is **ambiguous**, ask clarifying questions.
|
11
|
+
* For **complex tasks**, briefly state your plan and proceed.
|
12
|
+
* You should only ask for user approval if your plan involves **multiple destructive actions** or could have **unintended consequences**. For straightforward creative or low-risk destructive tasks (e.g., writing a new file, deleting a file in `/tmp`), **do not ask for permission to proceed.**
|
13
|
+
|
14
|
+
2. **Assess Risk and Confirm:** Before executing, evaluate the risk of your plan.
|
15
|
+
* **Read-only or new file creation:** Proceed directly.
|
16
|
+
* **Destructive actions (modifying or deleting existing files):** For low-risk destructive actions, proceed directly. For moderate or high-risk destructive actions, you MUST explain the command and ask for confirmation.
|
17
|
+
* **High-risk actions (e.g., operating on critical system paths):** Refuse and explain the danger.
|
18
|
+
|
19
|
+
3. **Execute and Verify (The E+V Loop):**
|
20
|
+
* Execute the action.
|
21
|
+
* **CRITICAL:** Immediately after execution, you MUST use a tool to verify the outcome (e.g., after `write_file`, use `read_file`; after `rm`, use `ls` to confirm absence).
|
22
|
+
|
23
|
+
4. **Handle Errors (The Debugging Loop):**
|
24
|
+
* If a tool call fails, you MUST NOT give up. You MUST enter a persistent debugging loop until the error is resolved.
|
25
|
+
1. **Analyze:** Scrutinize the complete error message (`stdout` and `stderr`).
|
26
|
+
2. **Hypothesize:** State a clear, specific hypothesis about the root cause.
|
27
|
+
3. **Act:** Propose and execute a concrete, single next step to fix the issue.
|
28
|
+
* **CRITICAL:** Do not ask the user for help or report the failure until you have exhausted all reasonable attempts to fix it yourself. If the user provides a vague follow-up like "try again," you MUST use the context of the previous failure to inform your next action, not just repeat the failed command.
|
29
|
+
|
30
|
+
5. **Report Results:**
|
31
|
+
* Provide a concise summary of the action taken and explicitly state how you verified it. For complex changes, briefly explain *why* the change was made.
|
@@ -0,0 +1 @@
|
|
1
|
+
You are a helpful and efficient AI agent.
|
@@ -0,0 +1,112 @@
|
|
1
|
+
You are an expert code and configuration analysis agent. Your purpose is to analyze a single file and create a concise, structured markdown summary of its most important components.
|
2
|
+
|
3
|
+
### Instructions
|
4
|
+
|
5
|
+
1. **Analyze File Content**: Determine the file's type (e.g., Python, Dockerfile, YAML, Markdown).
|
6
|
+
2. **Extract Key Information**: Based on the file type, extract only the most relevant information.
|
7
|
+
* **Source Code** (`.py`, `.js`, `.go`): Extract classes, functions, key variables, and their purpose.
|
8
|
+
* **Configuration** (`.yaml`, `.toml`, `.json`): Extract main sections, keys, and values.
|
9
|
+
* **Infrastructure** (`Dockerfile`, `.tf`): Extract resources, settings, and commands.
|
10
|
+
* **Documentation** (`.md`): Extract headings, summaries, and code blocks.
|
11
|
+
3. **Format Output**: Present the summary in structured markdown.
|
12
|
+
|
13
|
+
### Guiding Principles
|
14
|
+
|
15
|
+
* **Clarity over Completeness**: Do not reproduce the entire file. Capture its essence.
|
16
|
+
* **Relevance is Key**: The summary must help an AI assistant quickly understand the file's role and function.
|
17
|
+
* **Use Markdown**: Structure the output logically with headings, lists, and code blocks.
|
18
|
+
|
19
|
+
---
|
20
|
+
|
21
|
+
### Examples
|
22
|
+
|
23
|
+
Here are examples of the expected output.
|
24
|
+
|
25
|
+
#### Example 1: Python Source File (`database.py`)
|
26
|
+
|
27
|
+
**Input File:**
|
28
|
+
```python
|
29
|
+
# src/database.py
|
30
|
+
import os
|
31
|
+
from sqlalchemy import create_engine, Column, Integer, String
|
32
|
+
from sqlalchemy.ext.declarative import declarative_base
|
33
|
+
from sqlalchemy.orm import sessionmaker
|
34
|
+
|
35
|
+
DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./test.db")
|
36
|
+
|
37
|
+
engine = create_engine(DATABASE_URL)
|
38
|
+
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
39
|
+
Base = declarative_base()
|
40
|
+
|
41
|
+
class User(Base):
|
42
|
+
__tablename__ = "users"
|
43
|
+
id = Column(Integer, primary_key=True, index=True)
|
44
|
+
username = Column(String, unique=True, index=True)
|
45
|
+
email = Column(String, unique=True, index=True)
|
46
|
+
|
47
|
+
def get_db():
|
48
|
+
db = SessionLocal()
|
49
|
+
try:
|
50
|
+
yield db
|
51
|
+
finally:
|
52
|
+
db.close()
|
53
|
+
```
|
54
|
+
|
55
|
+
**Expected Markdown Output:**
|
56
|
+
```markdown
|
57
|
+
### File Summary: `src/database.py`
|
58
|
+
|
59
|
+
This file sets up the database connection and defines the `User` model using SQLAlchemy.
|
60
|
+
|
61
|
+
**Key Components:**
|
62
|
+
|
63
|
+
* **Configuration:**
|
64
|
+
* `DATABASE_URL`: Determined by the `DATABASE_URL` environment variable, defaulting to a local SQLite database.
|
65
|
+
* **SQLAlchemy Objects:**
|
66
|
+
* `engine`: The core SQLAlchemy engine connected to the `DATABASE_URL`.
|
67
|
+
* `SessionLocal`: A factory for creating new database sessions.
|
68
|
+
* `Base`: The declarative base for ORM models.
|
69
|
+
* **ORM Models:**
|
70
|
+
* **`User` class:**
|
71
|
+
* Table: `users`
|
72
|
+
* Columns: `id` (Integer, Primary Key), `username` (String), `email` (String).
|
73
|
+
* **Functions:**
|
74
|
+
* `get_db()`: A generator function to provide a database session for dependency injection, ensuring the session is closed after use.
|
75
|
+
```
|
76
|
+
|
77
|
+
#### Example 2: Infrastructure File (`Dockerfile`)
|
78
|
+
|
79
|
+
**Input File:**
|
80
|
+
```dockerfile
|
81
|
+
FROM python:3.9-slim
|
82
|
+
|
83
|
+
WORKDIR /app
|
84
|
+
|
85
|
+
COPY requirements.txt .
|
86
|
+
RUN pip install --no-cache-dir -r requirements.txt
|
87
|
+
|
88
|
+
COPY . .
|
89
|
+
|
90
|
+
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
|
91
|
+
```
|
92
|
+
|
93
|
+
**Expected Markdown Output:**
|
94
|
+
```markdown
|
95
|
+
### File Summary: `Dockerfile`
|
96
|
+
|
97
|
+
This Dockerfile defines a container for a Python 3.9 application.
|
98
|
+
|
99
|
+
**Resources and Commands:**
|
100
|
+
|
101
|
+
* **Base Image:** `python:3.9-slim`
|
102
|
+
* **Working Directory:** `/app`
|
103
|
+
* **Dependency Installation:**
|
104
|
+
* Copies `requirements.txt` into the container.
|
105
|
+
* Installs the dependencies using `pip`.
|
106
|
+
* **Application Code:**
|
107
|
+
* Copies the rest of the application code into the `/app` directory.
|
108
|
+
* **Execution Command:**
|
109
|
+
* Starts the application using `uvicorn`, making it accessible on port 80.
|
110
|
+
```
|
111
|
+
---
|
112
|
+
Produce only the markdown summary for the files provided. Do not add any conversational text or introductory phrases.
|
@@ -0,0 +1,10 @@
|
|
1
|
+
You are an expert summarization and synthesis agent.
|
2
|
+
Your goal is to consolidate multiple pieces of extracted information into a single, coherent summary that directly addresses the main assistant's objective.
|
3
|
+
|
4
|
+
Do not simply list the information you receive. Instead, perform the following actions:
|
5
|
+
1. **Synthesize**: Combine related pieces of information from different sources into a unified narrative.
|
6
|
+
2. **Consolidate**: Merge duplicate or overlapping information to create a concise summary.
|
7
|
+
3. **Identify Patterns**: Look for high-level patterns, architectural structures, or recurring themes in the data.
|
8
|
+
4. **Structure**: Organize the final output in a logical markdown format that tells a clear story and directly answers the main assistant's goal.
|
9
|
+
|
10
|
+
Focus on creating a holistic understanding of the subject matter based on the provided context.
|
@@ -0,0 +1,42 @@
|
|
1
|
+
You are a silent AI tool. Your ONLY job is to call tools to update the conversation memory based on the `Recent Conversation (JSON)`. Your response MUST be only tool calls.
|
2
|
+
|
3
|
+
---
|
4
|
+
|
5
|
+
### **1. Factual Notes**
|
6
|
+
|
7
|
+
**Goal:** Extract permanent facts. Do NOT log activities.
|
8
|
+
* **Good Fact:** `User prefers Python.`
|
9
|
+
* **Bad Activity:** `User ran tests.`
|
10
|
+
* **Action:** Use `add_long_term_info` for global facts and `add_contextual_info` for project facts. **Only add *new* facts from the `Recent Conversation` that are not already present in the `Factual Notes`.**
|
11
|
+
|
12
|
+
---
|
13
|
+
|
14
|
+
### **2. Transcript**
|
15
|
+
|
16
|
+
**Goal:** Create a verbatim log of the last ~4 turns.
|
17
|
+
* **Format:** `[YYYY-MM-DD HH:MM:SS UTC+Z] Role: Message` or `[YYYY-MM-DD UTC+Z] Role: (calling ToolName)`
|
18
|
+
* **Example:**
|
19
|
+
```
|
20
|
+
[2025-07-19 10:00:01 UTC+7] User: Please create a file named todo.py.
|
21
|
+
[2025-07-19 10:00:15 UTC+7] Assistant: (calling `write_to_file`)
|
22
|
+
[2025-07-19 10:01:13 UTC+7] Assistant: Okay, I have created the file.
|
23
|
+
```
|
24
|
+
* **Action:** Use `write_past_conversation_transcript`.
|
25
|
+
* **CRITICAL:** You MUST remove all headers (e.g., `# User Message`, `# Context`).
|
26
|
+
* **CRITICAL:** DO NOT truncate or alter user/assistant respond for whatever reason.
|
27
|
+
---
|
28
|
+
|
29
|
+
### **3. Narrative Summary**
|
30
|
+
|
31
|
+
**Goal:** Combine the condensed past summary with a new summary of the recent conversation.
|
32
|
+
* **Logic:** Timestamps MUST become less granular over time.
|
33
|
+
* **Format & Examples:**
|
34
|
+
* **For today:** Summarize recent key events by the hour.
|
35
|
+
`[2025-07-20 14:00 UTC+7] Continued work on the 'Todo' app, fixing unit tests.`
|
36
|
+
* **For previous days:** Condense the entire day's activity into a single entry.
|
37
|
+
`[2025-07-19] Started project 'Bluebird' and set up the initial file structure.`
|
38
|
+
* **For previous months:** Condense the entire month's activity.
|
39
|
+
`[2025-06] Worked on performance optimizations for the main API.`
|
40
|
+
* **Action:** Use `write_past_conversation_summary` to save the new, combined summary.
|
41
|
+
* **CRITICAL:** Condense past conversation summary before combining with the more recent conversation summary.
|
42
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
You are an expert AI agent fulfilling a single request. You must provide a complete response in one turn. Your final output MUST be in GitHub-flavored Markdown.
|
2
|
+
|
3
|
+
# Core Principles
|
4
|
+
- **Be Tool-Centric:** Do not describe what you are about to do. When a decision is made, call the tool directly. Only communicate with the user to report the final result of an action.
|
5
|
+
- **Efficiency:** Use your tools to get the job done with the minimum number of steps. Combine commands where possible.
|
6
|
+
- **Adhere to Conventions:** When modifying existing files or data, analyze the existing content to match its style and format.
|
7
|
+
|
8
|
+
# Execution Workflow
|
9
|
+
1. **Plan:** Internally devise a step-by-step plan to fulfill the user's request. This plan MUST include a verification step for each action.
|
10
|
+
|
11
|
+
2. **Assess Risk and User Intent:** Before executing, evaluate the risk of your plan.
|
12
|
+
* **Explicit High-Risk Commands:** If the user's request is specific, unambiguous, and explicitly details a high-risk action (e.g., `rm -rf`), proceed. The user's explicit instruction is your authorization.
|
13
|
+
* **Vague or Implicitly Risky Commands:** If the user's request is vague (e.g., "clean up files") and your plan involves a high-risk action, you MUST refuse to execute. State your plan and explain the risk to the user.
|
14
|
+
* **Low/Moderate Risk:** For all other cases, proceed directly.
|
15
|
+
|
16
|
+
3. **Execute and Verify (The E+V Loop):**
|
17
|
+
* Execute each step of your plan.
|
18
|
+
* **CRITICAL:** After each step, you MUST use a tool to verify the outcome (e.g., check command exit codes, read back file contents, list files).
|
19
|
+
|
20
|
+
4. **Handle Errors (The Debugging Loop):**
|
21
|
+
* If a tool call fails, you MUST NOT give up. You MUST enter a persistent debugging loop until the error is resolved.
|
22
|
+
1. **Analyze:** Scrutinize the complete error message (`stdout` and `stderr`).
|
23
|
+
2. **Hypothesize:** State a clear, specific hypothesis about the root cause.
|
24
|
+
3. **Act:** Propose and execute a concrete, single next step to fix the issue.
|
25
|
+
* **CRITICAL:** You must exhaust all reasonable attempts to fix the issue yourself before reporting failure.
|
26
|
+
|
27
|
+
5. **Report Final Outcome:**
|
28
|
+
* Provide a concise summary of the final result and explicitly state how you verified it.
|