zrb 1.16.0__tar.gz → 1.16.2__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.
Files changed (415) hide show
  1. {zrb-1.16.0 → zrb-1.16.2}/PKG-INFO +4 -3
  2. {zrb-1.16.0 → zrb-1.16.2}/pyproject.toml +4 -3
  3. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/llm/chat_session.py +17 -9
  4. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/llm/llm_ask.py +96 -72
  5. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/llm/tool/file.py +2 -2
  6. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/llm/tool/sub_agent.py +1 -1
  7. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/base/execution.py +15 -8
  8. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/base/monitoring.py +12 -7
  9. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/agent.py +27 -5
  10. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/config.py +2 -2
  11. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/tool_wrapper.py +20 -11
  12. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm_task.py +7 -4
  13. {zrb-1.16.0 → zrb-1.16.2}/README.md +0 -0
  14. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/__init__.py +0 -0
  15. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/__main__.py +0 -0
  16. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/attr/__init__.py +0 -0
  17. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/attr/type.py +0 -0
  18. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/__init__.py +0 -0
  19. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/base64.py +0 -0
  20. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/git.py +0 -0
  21. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/git_subtree.py +0 -0
  22. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/group.py +0 -0
  23. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/http.py +0 -0
  24. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/jwt.py +0 -0
  25. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/llm/history.py +0 -0
  26. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/llm/input.py +0 -0
  27. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/llm/previous-session.js +0 -0
  28. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/llm/tool/__init__.py +0 -0
  29. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/llm/tool/api.py +0 -0
  30. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/llm/tool/cli.py +0 -0
  31. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/llm/tool/code.py +0 -0
  32. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/llm/tool/rag.py +0 -0
  33. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/llm/tool/web.py +0 -0
  34. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/md5.py +0 -0
  35. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/__init__.py +0 -0
  36. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  37. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
  38. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
  39. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  40. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  41. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  42. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  43. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
  44. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
  45. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  46. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
  47. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  48. {zrb-1.16.0 → zrb-1.16.2}/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
  49. {zrb-1.16.0 → zrb-1.16.2}/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
  50. {zrb-1.16.0 → zrb-1.16.2}/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
  51. {zrb-1.16.0 → zrb-1.16.2}/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
  52. {zrb-1.16.0 → zrb-1.16.2}/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
  53. {zrb-1.16.0 → zrb-1.16.2}/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
  54. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
  55. {zrb-1.16.0 → zrb-1.16.2}/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
  56. {zrb-1.16.0 → zrb-1.16.2}/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
  57. {zrb-1.16.0 → zrb-1.16.2}/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
  58. {zrb-1.16.0 → zrb-1.16.2}/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
  59. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  60. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  61. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
  62. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  63. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  64. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  65. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
  66. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  67. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
  68. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
  69. {zrb-1.16.0 → zrb-1.16.2}/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
  70. {zrb-1.16.0 → zrb-1.16.2}/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
  71. {zrb-1.16.0 → zrb-1.16.2}/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
  72. {zrb-1.16.0 → zrb-1.16.2}/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
  73. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
  74. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
  75. {zrb-1.16.0 → zrb-1.16.2}/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
  76. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
  77. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
  78. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
  79. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
  80. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  81. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
  82. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  83. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
  84. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  85. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  86. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  87. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  88. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  89. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  90. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  91. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  92. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  93. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  94. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  95. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  96. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  97. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  98. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  99. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  100. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  101. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  102. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  103. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  104. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  105. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  106. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  107. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  108. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  109. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  110. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
  111. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
  112. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  113. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  114. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  115. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  116. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
  117. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
  118. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
  119. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
  120. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
  121. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  122. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
  123. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
  124. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
  125. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
  126. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
  127. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  128. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
  129. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
  130. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
  131. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
  132. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
  133. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  134. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
  135. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  136. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  137. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  138. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  139. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  140. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  141. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
  142. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  143. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
  144. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  145. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
  146. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
  147. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
  148. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  149. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  150. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
  151. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
  152. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
  153. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
  154. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
  155. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
  156. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
  157. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
  158. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
  159. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
  160. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  161. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
  162. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
  163. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
  164. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
  165. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
  166. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
  167. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
  168. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
  169. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
  170. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
  171. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
  172. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
  173. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
  174. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
  175. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
  176. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
  177. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
  178. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
  179. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
  180. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
  181. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  182. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
  183. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  184. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  185. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  186. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  187. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  188. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
  189. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
  190. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
  191. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
  192. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
  193. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
  194. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
  195. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
  196. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
  197. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
  198. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  199. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/create/__init__.py +0 -0
  200. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  201. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  202. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/project/create/project_task.py +0 -0
  203. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/python.py +0 -0
  204. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/random.py +0 -0
  205. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  206. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  207. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/setup/common_input.py +0 -0
  208. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  209. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  210. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  211. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  212. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/setup/ubuntu.py +0 -0
  213. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
  214. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
  215. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
  216. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/shell/__init__.py +0 -0
  217. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  218. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  219. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  220. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  221. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/todo.py +0 -0
  222. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/builtin/uuid.py +0 -0
  223. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/callback/__init__.py +0 -0
  224. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/callback/any_callback.py +0 -0
  225. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/callback/callback.py +0 -0
  226. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/cmd/__init__.py +0 -0
  227. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/cmd/cmd_result.py +0 -0
  228. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/cmd/cmd_val.py +0 -0
  229. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/config/config.py +0 -0
  230. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/config/default_prompt/file_extractor_system_prompt.md +0 -0
  231. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/config/default_prompt/interactive_system_prompt.md +0 -0
  232. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/config/default_prompt/persona.md +0 -0
  233. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/config/default_prompt/repo_extractor_system_prompt.md +0 -0
  234. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/config/default_prompt/repo_summarizer_system_prompt.md +0 -0
  235. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/config/default_prompt/summarization_prompt.md +0 -0
  236. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/config/default_prompt/system_prompt.md +0 -0
  237. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/config/llm_config.py +0 -0
  238. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/config/llm_context/config.py +0 -0
  239. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/config/llm_context/config_parser.py +0 -0
  240. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/config/llm_rate_limitter.py +0 -0
  241. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/config/web_auth_config.py +0 -0
  242. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/content_transformer/__init__.py +0 -0
  243. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  244. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/content_transformer/content_transformer.py +0 -0
  245. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/context/__init__.py +0 -0
  246. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/context/any_context.py +0 -0
  247. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/context/any_shared_context.py +0 -0
  248. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/context/context.py +0 -0
  249. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/context/shared_context.py +0 -0
  250. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/dot_dict/__init__.py +0 -0
  251. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/dot_dict/dot_dict.py +0 -0
  252. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/env/__init__.py +0 -0
  253. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/env/any_env.py +0 -0
  254. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/env/env.py +0 -0
  255. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/env/env_file.py +0 -0
  256. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/env/env_map.py +0 -0
  257. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/group/__init__.py +0 -0
  258. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/group/any_group.py +0 -0
  259. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/group/group.py +0 -0
  260. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/input/__init__.py +0 -0
  261. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/input/any_input.py +0 -0
  262. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/input/base_input.py +0 -0
  263. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/input/bool_input.py +0 -0
  264. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/input/float_input.py +0 -0
  265. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/input/int_input.py +0 -0
  266. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/input/option_input.py +0 -0
  267. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/input/password_input.py +0 -0
  268. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/input/str_input.py +0 -0
  269. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/input/text_input.py +0 -0
  270. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/__init__.py +0 -0
  271. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/cli.py +0 -0
  272. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/common_util.py +0 -0
  273. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_app.py +0 -0
  274. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/__init__.py +0 -0
  275. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/docs_route.py +0 -0
  276. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  277. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  278. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/error_page/view.html +0 -0
  279. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  280. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  281. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/home_page/view.html +0 -0
  282. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/login_api_route.py +0 -0
  283. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  284. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/login_page/view.html +0 -0
  285. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  286. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  287. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  288. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  289. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  290. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  291. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  292. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  293. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
  294. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  295. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/global_template.html +0 -0
  296. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  297. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  298. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/common.js +0 -0
  299. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  300. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  301. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  302. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.amber.min.css +0 -0
  303. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.blue.min.css +0 -0
  304. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.cyan.min.css +0 -0
  305. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.fuchsia.min.css +0 -0
  306. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.green.min.css +0 -0
  307. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.grey.min.css +0 -0
  308. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.indigo.min.css +0 -0
  309. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.jade.min.css +0 -0
  310. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.lime.min.css +0 -0
  311. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.min.css +0 -0
  312. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.orange.min.css +0 -0
  313. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.pink.min.css +0 -0
  314. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.pumpkin.min.css +0 -0
  315. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.purple.min.css +0 -0
  316. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.red.min.css +0 -0
  317. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.sand.min.css +0 -0
  318. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.slate.min.css +0 -0
  319. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.violet.min.css +0 -0
  320. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.yellow.min.css +0 -0
  321. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/pico-css/pico.zinc.min.css +0 -0
  322. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  323. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
  324. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
  325. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  326. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/static/static_route.py +0 -0
  327. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  328. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
  329. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_schema/session.py +0 -0
  330. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_schema/token.py +0 -0
  331. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_schema/user.py +0 -0
  332. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_util/cookie.py +0 -0
  333. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_util/html.py +0 -0
  334. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_util/token.py +0 -0
  335. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/runner/web_util/user.py +0 -0
  336. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/session/__init__.py +0 -0
  337. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/session/any_session.py +0 -0
  338. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/session/session.py +0 -0
  339. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/session_state_log/__init__.py +0 -0
  340. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/session_state_log/session_state_log.py +0 -0
  341. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/session_state_logger/__init__.py +0 -0
  342. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
  343. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
  344. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  345. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/__init__.py +0 -0
  346. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/any_task.py +0 -0
  347. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/base/__init__.py +0 -0
  348. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/base/context.py +0 -0
  349. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/base/lifecycle.py +0 -0
  350. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/base/operators.py +0 -0
  351. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/base_task.py +0 -0
  352. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/base_trigger.py +0 -0
  353. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/cmd_task.py +0 -0
  354. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/http_check.py +0 -0
  355. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/__init__.py +0 -0
  356. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/conversation_history.py +0 -0
  357. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/conversation_history_model.py +0 -0
  358. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/default_workflow/coding.md +0 -0
  359. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/default_workflow/copywriting.md +0 -0
  360. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/default_workflow/researching.md +0 -0
  361. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/error.py +0 -0
  362. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/history_summarization.py +0 -0
  363. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/history_summarization_tool.py +0 -0
  364. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/print_node.py +0 -0
  365. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/prompt.py +0 -0
  366. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/llm/typing.py +0 -0
  367. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/make_task.py +0 -0
  368. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/rsync_task.py +0 -0
  369. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/scaffolder.py +0 -0
  370. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/scheduler.py +0 -0
  371. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/task.py +0 -0
  372. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task/tcp_check.py +0 -0
  373. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task_status/__init__.py +0 -0
  374. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/task_status/task_status.py +0 -0
  375. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/__init__.py +0 -0
  376. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/attr.py +0 -0
  377. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/callable.py +0 -0
  378. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/cli/__init__.py +0 -0
  379. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/cli/markdown.py +0 -0
  380. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/cli/style.py +0 -0
  381. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/cli/subcommand.py +0 -0
  382. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/cli/text.py +0 -0
  383. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/cmd/__init__.py +0 -0
  384. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/cmd/command.py +0 -0
  385. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/cmd/remote.py +0 -0
  386. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/codemod/__init__.py +0 -0
  387. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/codemod/modification_mode.py +0 -0
  388. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/codemod/modify_class.py +0 -0
  389. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/codemod/modify_class_parent.py +0 -0
  390. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/codemod/modify_class_property.py +0 -0
  391. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/codemod/modify_dict.py +0 -0
  392. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/codemod/modify_function.py +0 -0
  393. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/codemod/modify_function_call.py +0 -0
  394. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/codemod/modify_method.py +0 -0
  395. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/codemod/modify_module.py +0 -0
  396. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/cron.py +0 -0
  397. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/file.py +0 -0
  398. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/git.py +0 -0
  399. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/git_diff_model.py +0 -0
  400. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/git_subtree.py +0 -0
  401. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/git_subtree_model.py +0 -0
  402. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/group.py +0 -0
  403. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/init_path.py +0 -0
  404. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/llm/prompt.py +0 -0
  405. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/load.py +0 -0
  406. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/run.py +0 -0
  407. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/string/__init__.py +0 -0
  408. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/string/conversion.py +0 -0
  409. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/string/format.py +0 -0
  410. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/string/name.py +0 -0
  411. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/todo.py +0 -0
  412. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/todo_model.py +0 -0
  413. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/util/truncate.py +0 -0
  414. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/xcom/__init__.py +0 -0
  415. {zrb-1.16.0 → zrb-1.16.2}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: zrb
3
- Version: 1.16.0
3
+ Version: 1.16.2
4
4
  Summary: Your Automation Powerhouse
5
5
  License: AGPL-3.0-or-later
6
6
  Keywords: Automation,Task Runner,Code Generator,Monorepo,Low Code
@@ -24,12 +24,12 @@ Requires-Dist: isort (>=6.0.1,<7.0.0)
24
24
  Requires-Dist: libcst (>=1.8.2,<2.0.0)
25
25
  Requires-Dist: markdownify (>=1.2.0,<2.0.0)
26
26
  Requires-Dist: mcp (>1.12.3)
27
- Requires-Dist: openai (>=1.99.9)
27
+ Requires-Dist: openai (>=1.107.2)
28
28
  Requires-Dist: pdfplumber (>=0.11.7,<0.12.0)
29
29
  Requires-Dist: playwright (>=1.54.0,<2.0.0) ; extra == "playwright" or extra == "all"
30
30
  Requires-Dist: prompt-toolkit (>=3)
31
31
  Requires-Dist: psutil (>=7.0.0,<8.0.0)
32
- Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cohere,google,groq,huggingface,mistral,openai,vertexai] (>=1.0.1,<1.1.0)
32
+ Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cohere,google,groq,huggingface,mistral,openai,vertexai] (>=1.0.10,<1.1.0)
33
33
  Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
34
34
  Requires-Dist: python-dotenv (>=1.1.1,<2.0.0)
35
35
  Requires-Dist: python-jose[cryptography] (>=3.5.0,<4.0.0)
@@ -37,6 +37,7 @@ Requires-Dist: requests (>=2.32.2,<3.0.0)
37
37
  Requires-Dist: rich (>=13)
38
38
  Requires-Dist: tiktoken (>=0.8.0,<0.9.0)
39
39
  Requires-Dist: ulid-py (>=1.1.0,<2.0.0)
40
+ Requires-Dist: xmltodict (>=1.0.2,<2.0.0)
40
41
  Project-URL: Documentation, https://github.com/state-alchemists/zrb
41
42
  Project-URL: Homepage, https://github.com/state-alchemists/zrb
42
43
  Project-URL: Repository, https://github.com/state-alchemists/zrb
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.16.0"
3
+ version = "1.16.2"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -50,10 +50,10 @@ ulid-py = "^1.1.0"
50
50
  psutil = "^7.0.0"
51
51
 
52
52
  # NOTE: Look at https://github.com/pydantic/pydantic-ai/blob/main/pydantic_ai_slim/pyproject.toml
53
- pydantic-ai-slim = {extras = ["openai", "cohere", "vertexai", "google", "anthropic", "groq", "mistral", "bedrock", "huggingface"], version = "~1.0.1"}
53
+ pydantic-ai-slim = {extras = ["openai", "cohere", "vertexai", "google", "anthropic", "groq", "mistral", "bedrock", "huggingface"], version = "~1.0.10"}
54
54
 
55
55
  # NOTE: Make sure the following dependencies are not conflicting with pydantic-ai-slim
56
- openai = ">=1.99.9"
56
+ openai = ">=1.107.2"
57
57
  prompt-toolkit = ">=3"
58
58
  rich = ">=13"
59
59
  mcp = ">1.12.3"
@@ -64,6 +64,7 @@ playwright = {version = "^1.54.0", optional = true}
64
64
  chromadb = {version = "^0.6.3", optional = true}
65
65
  markdownify = "^1.2.0"
66
66
  pyjwt = "^2.10.1"
67
+ xmltodict = "^1.0.2"
67
68
 
68
69
  [tool.poetry.extras]
69
70
  # poetry install -E rag
@@ -31,15 +31,20 @@ async def read_user_prompt(ctx: AnyContext) -> str:
31
31
  final_result: str = ""
32
32
  while True:
33
33
  await asyncio.sleep(0.01)
34
- previous_session_name = ctx.input.previous_session if is_first_time else None
35
- if is_first_time:
36
- is_first_time = False
37
- # Get user input based on mode
38
- if not multiline_mode:
39
- ctx.print("💬 >>", plain=True)
40
- user_input = await _read_next_line(reader, ctx)
41
- if not multiline_mode:
42
- ctx.print("", plain=True)
34
+ previous_session_name: str | None = (
35
+ ctx.input.previous_session if is_first_time else None
36
+ )
37
+ start_new: bool = ctx.input.start_new if is_first_time else False
38
+ if is_first_time and ctx.input.message.strip() != "":
39
+ user_input = ctx.input.message
40
+ else:
41
+ # Get user input based on mode
42
+ if not multiline_mode:
43
+ ctx.print("💬 >>", plain=True)
44
+ user_input = await _read_next_line(reader, ctx)
45
+ if not multiline_mode:
46
+ ctx.print("", plain=True)
47
+ is_first_time = False
43
48
  # Handle user input
44
49
  if user_input.strip().lower() in ("/bye", "/quit", "/q", "/exit"):
45
50
  user_prompt = "\n".join(user_inputs)
@@ -50,6 +55,7 @@ async def read_user_prompt(ctx: AnyContext) -> str:
50
55
  modes=current_modes,
51
56
  yolo_mode=current_yolo_mode,
52
57
  previous_session_name=previous_session_name,
58
+ start_new=start_new,
53
59
  )
54
60
  if result is not None:
55
61
  final_result = result
@@ -67,6 +73,7 @@ async def read_user_prompt(ctx: AnyContext) -> str:
67
73
  modes=current_modes,
68
74
  yolo_mode=current_yolo_mode,
69
75
  previous_session_name=previous_session_name,
76
+ start_new=start_new,
70
77
  )
71
78
  if result is not None:
72
79
  final_result = result
@@ -101,6 +108,7 @@ async def read_user_prompt(ctx: AnyContext) -> str:
101
108
  modes=current_modes,
102
109
  yolo_mode=current_yolo_mode,
103
110
  previous_session_name=previous_session_name,
111
+ start_new=start_new,
104
112
  )
105
113
  if result is not None:
106
114
  final_result = result
@@ -1,3 +1,4 @@
1
+ import os
1
2
  from collections.abc import Callable
2
3
  from typing import TYPE_CHECKING
3
4
 
@@ -28,6 +29,7 @@ from zrb.callback.callback import Callback
28
29
  from zrb.config.config import CFG
29
30
  from zrb.config.llm_config import llm_config
30
31
  from zrb.context.any_context import AnyContext
32
+ from zrb.input.any_input import AnyInput
31
33
  from zrb.input.bool_input import BoolInput
32
34
  from zrb.input.str_input import StrInput
33
35
  from zrb.input.text_input import TextInput
@@ -37,10 +39,23 @@ from zrb.util.string.conversion import to_boolean
37
39
 
38
40
  if TYPE_CHECKING:
39
41
  from pydantic_ai import Tool
42
+ from pydantic_ai.toolsets import AbstractToolset
40
43
 
41
44
  ToolOrCallable = Tool | Callable
42
45
 
43
46
 
47
+ def _get_toolset(ctx: AnyContext) -> list["AbstractToolset[None] | str"]:
48
+ cwd = os.getcwd()
49
+ toolsets = []
50
+ for config_path in [
51
+ os.path.join(cwd, "mcp_config.json"),
52
+ os.path.join(cwd, "mcp-config.json"),
53
+ ]:
54
+ if os.path.isfile(config_path):
55
+ toolsets.append(config_path)
56
+ return toolsets
57
+
58
+
44
59
  def _get_tool(ctx: AnyContext) -> list["ToolOrCallable"]:
45
60
  tools = []
46
61
  if CFG.LLM_ALLOW_ANALYZE_REPO:
@@ -91,81 +106,89 @@ def _render_yolo_mode_input(ctx: AnyContext) -> list[str] | bool | None:
91
106
  return elements
92
107
 
93
108
 
94
- _llm_ask_inputs = [
95
- StrInput(
96
- "model",
97
- description="LLM Model",
98
- prompt="LLM Model",
99
- default="",
100
- allow_positional_parsing=False,
101
- always_prompt=False,
102
- allow_empty=True,
103
- ),
104
- StrInput(
105
- "base-url",
106
- description="LLM API Base URL",
107
- prompt="LLM API Base URL",
108
- default="",
109
- allow_positional_parsing=False,
110
- always_prompt=False,
111
- allow_empty=True,
112
- ),
113
- StrInput(
114
- "api-key",
115
- description="LLM API Key",
116
- prompt="LLM API Key",
117
- default="",
118
- allow_positional_parsing=False,
119
- always_prompt=False,
120
- allow_empty=True,
121
- ),
122
- TextInput(
123
- "system-prompt",
124
- description="System prompt",
125
- prompt="System prompt",
126
- default="",
127
- allow_positional_parsing=False,
128
- always_prompt=False,
129
- ),
130
- TextInput(
131
- "modes",
132
- description="Modes",
133
- prompt="Modes",
134
- default=lambda ctx: ",".join(llm_config.default_modes),
135
- allow_positional_parsing=False,
136
- always_prompt=False,
137
- ),
138
- BoolInput(
139
- "start-new",
140
- description="Start new session (LLM Agent will forget past conversation)",
141
- prompt="Start new session (LLM Agent will forget past conversation)",
142
- default=False,
143
- allow_positional_parsing=False,
144
- always_prompt=False,
145
- ),
146
- StrInput(
147
- "yolo",
148
- description="YOLO mode (LLM Agent will start in YOLO Mode)",
149
- prompt="YOLO mode (LLM Agent will start in YOLO Mode)",
150
- default=_get_default_yolo_mode,
151
- allow_positional_parsing=False,
152
- always_prompt=False,
153
- ),
154
- TextInput("message", description="User message", prompt="Your message"),
155
- PreviousSessionInput(
156
- "previous-session",
157
- description="Previous conversation session",
158
- prompt="Previous conversation session (can be empty)",
159
- allow_positional_parsing=False,
160
- allow_empty=True,
161
- always_prompt=False,
162
- ),
163
- ]
109
+ def _get_inputs(require_message: bool = True) -> list[AnyInput]:
110
+ return [
111
+ StrInput(
112
+ "model",
113
+ description="LLM Model",
114
+ prompt="LLM Model",
115
+ default="",
116
+ allow_positional_parsing=False,
117
+ always_prompt=False,
118
+ allow_empty=True,
119
+ ),
120
+ StrInput(
121
+ "base-url",
122
+ description="LLM API Base URL",
123
+ prompt="LLM API Base URL",
124
+ default="",
125
+ allow_positional_parsing=False,
126
+ always_prompt=False,
127
+ allow_empty=True,
128
+ ),
129
+ StrInput(
130
+ "api-key",
131
+ description="LLM API Key",
132
+ prompt="LLM API Key",
133
+ default="",
134
+ allow_positional_parsing=False,
135
+ always_prompt=False,
136
+ allow_empty=True,
137
+ ),
138
+ TextInput(
139
+ "system-prompt",
140
+ description="System prompt",
141
+ prompt="System prompt",
142
+ default="",
143
+ allow_positional_parsing=False,
144
+ always_prompt=False,
145
+ ),
146
+ TextInput(
147
+ "modes",
148
+ description="Modes",
149
+ prompt="Modes",
150
+ default=lambda ctx: ",".join(llm_config.default_modes),
151
+ allow_positional_parsing=False,
152
+ always_prompt=False,
153
+ ),
154
+ BoolInput(
155
+ "start-new",
156
+ description="Start new session (LLM Agent will forget past conversation)",
157
+ prompt="Start new session (LLM Agent will forget past conversation)",
158
+ default=False,
159
+ allow_positional_parsing=False,
160
+ always_prompt=False,
161
+ ),
162
+ StrInput(
163
+ "yolo",
164
+ description="YOLO mode (LLM Agent will start in YOLO Mode)",
165
+ prompt="YOLO mode (LLM Agent will start in YOLO Mode)",
166
+ default=_get_default_yolo_mode,
167
+ allow_positional_parsing=False,
168
+ always_prompt=False,
169
+ ),
170
+ TextInput(
171
+ "message",
172
+ description="User message",
173
+ prompt="Your message",
174
+ always_prompt=require_message,
175
+ allow_empty=not require_message,
176
+ ),
177
+ PreviousSessionInput(
178
+ "previous-session",
179
+ description="Previous conversation session",
180
+ prompt="Previous conversation session (can be empty)",
181
+ allow_positional_parsing=False,
182
+ allow_empty=True,
183
+ always_prompt=False,
184
+ ),
185
+ ]
186
+
164
187
 
165
188
  llm_ask: LLMTask = llm_group.add_task(
166
189
  LLMTask(
167
190
  name="llm-ask",
168
- input=_llm_ask_inputs,
191
+ input=_get_inputs(True),
169
192
  description="❓ Ask LLM",
170
193
  model=lambda ctx: None if ctx.input.model.strip() == "" else ctx.input.model,
171
194
  model_base_url=lambda ctx: (
@@ -184,6 +207,7 @@ llm_ask: LLMTask = llm_group.add_task(
184
207
  ),
185
208
  message="{ctx.input.message}",
186
209
  tools=_get_tool,
210
+ toolsets=_get_toolset,
187
211
  yolo_mode=_render_yolo_mode_input,
188
212
  retries=0,
189
213
  ),
@@ -193,7 +217,7 @@ llm_ask: LLMTask = llm_group.add_task(
193
217
  llm_group.add_task(
194
218
  BaseTrigger(
195
219
  name="llm-chat",
196
- input=[input for input in _llm_ask_inputs if input.name != "message"],
220
+ input=_get_inputs(False),
197
221
  description="💬 Chat with LLM",
198
222
  queue_name="ask_trigger",
199
223
  action=read_user_prompt,
@@ -304,7 +304,7 @@ def write_to_file(
304
304
  Writes content to a file, completely overwriting it if it exists or
305
305
  creating it if it doesn't.
306
306
 
307
- Use this tool to create new files or to replace the entire content of
307
+ Use this tool to create new files or to overwrite the entire content of
308
308
  existing files. This is a destructive operation, so be certain of your
309
309
  actions. Always read the file first to understand its contents before
310
310
  overwriting it, unless you are creating a new file.
@@ -497,7 +497,7 @@ async def analyze_file(
497
497
  ctx: AnyContext, path: str, query: str, token_limit: int | None = None
498
498
  ) -> dict[str, Any]:
499
499
  """
500
- Performs a deep, goal-oriented analysis of a single file using a sub-agent.
500
+ Performs a high level, goal-oriented analysis of a single file using a sub-agent.
501
501
 
502
502
  This tool is ideal for complex questions about a single file that go beyond
503
503
  simple reading or searching. It uses a specialized sub-agent to analyze the
@@ -24,7 +24,7 @@ def create_sub_agent_tool(
24
24
  model: "str | Model | None" = None,
25
25
  model_settings: "ModelSettings | None" = None,
26
26
  tools: "list[ToolOrCallable]" = [],
27
- toolsets: list["AbstractToolset[Agent]"] = [],
27
+ toolsets: list["AbstractToolset[None]"] = [],
28
28
  yolo_mode: bool | list[str] | None = None,
29
29
  log_indent_level: int = 2,
30
30
  ) -> Callable[[AnyContext, str], Coroutine[Any, Any, dict[str, Any]]]:
@@ -53,7 +53,9 @@ def check_execute_condition(task: "BaseTask", session: AnySession) -> bool:
53
53
  Evaluates the task's execute_condition attribute.
54
54
  """
55
55
  ctx = task.get_ctx(session)
56
- execute_condition_attr = getattr(task, "_execute_condition", True)
56
+ execute_condition_attr = (
57
+ task._execute_condition if task._execute_condition is not None else True
58
+ )
57
59
  return get_bool_attr(ctx, execute_condition_attr, True, auto_render=True)
58
60
 
59
61
 
@@ -63,8 +65,12 @@ async def execute_action_until_ready(task: "BaseTask", session: AnySession):
63
65
  """
64
66
  ctx = task.get_ctx(session)
65
67
  readiness_checks = task.readiness_checks
66
- readiness_check_delay = getattr(task, "_readiness_check_delay", 0.5)
67
- monitor_readiness = getattr(task, "_monitor_readiness", False)
68
+ readiness_check_delay = (
69
+ task._readiness_check_delay if task._readiness_check_delay is not None else 0.5
70
+ )
71
+ monitor_readiness = (
72
+ task._monitor_readiness if task._monitor_readiness is not None else False
73
+ )
68
74
 
69
75
  if not readiness_checks: # Simplified check for empty list
70
76
  ctx.log_info("No readiness checks")
@@ -140,8 +146,8 @@ async def execute_action_with_retry(task: "BaseTask", session: AnySession) -> An
140
146
  handling success (triggering successors) and failure (triggering fallbacks).
141
147
  """
142
148
  ctx = task.get_ctx(session)
143
- retries = getattr(task, "_retries", 2)
144
- retry_period = getattr(task, "_retry_period", 0)
149
+ retries = task._retries if task._retries is not None else 2
150
+ retry_period = task._retry_period if task._retry_period is not None else 0
145
151
  max_attempt = retries + 1
146
152
  ctx.set_max_attempt(max_attempt)
147
153
 
@@ -163,8 +169,9 @@ async def execute_action_with_retry(task: "BaseTask", session: AnySession) -> An
163
169
  session.get_task_status(task).mark_as_completed()
164
170
 
165
171
  # Store result in XCom
166
- task_xcom: Xcom = ctx.xcom.get(task.name)
167
- task_xcom.push(result)
172
+ task_xcom: Xcom | None = ctx.xcom.get(task.name)
173
+ if task_xcom is not None:
174
+ task_xcom.push(result)
168
175
 
169
176
  # Skip fallbacks and execute successors on success
170
177
  skip_fallbacks(task, session)
@@ -201,7 +208,7 @@ async def run_default_action(task: "BaseTask", ctx: AnyContext) -> Any:
201
208
  This is the default implementation called by BaseTask._exec_action.
202
209
  Subclasses like LLMTask override _exec_action with their own logic.
203
210
  """
204
- action = getattr(task, "_action", None)
211
+ action = task._action
205
212
  if action is None:
206
213
  ctx.log_debug("No action defined for this task.")
207
214
  return None
@@ -17,9 +17,13 @@ async def monitor_task_readiness(
17
17
  """
18
18
  ctx = task.get_ctx(session)
19
19
  readiness_checks = task.readiness_checks
20
- readiness_check_period = getattr(task, "_readiness_check_period", 5.0)
21
- readiness_failure_threshold = getattr(task, "_readiness_failure_threshold", 1)
22
- readiness_timeout = getattr(task, "_readiness_timeout", 60)
20
+ readiness_check_period = (
21
+ task._readiness_check_period if task._readiness_check_period else 5.0
22
+ )
23
+ readiness_failure_threshold = (
24
+ task._readiness_failure_threshold if task._readiness_failure_threshold else 1
25
+ )
26
+ readiness_timeout = task._readiness_timeout if task._readiness_timeout else 60
23
27
 
24
28
  if not readiness_checks:
25
29
  ctx.log_debug("No readiness checks defined, monitoring is not applicable.")
@@ -41,8 +45,9 @@ async def monitor_task_readiness(
41
45
  session.get_task_status(check).reset_history()
42
46
  session.get_task_status(check).reset()
43
47
  # Clear previous XCom data for the check task if needed
44
- check_xcom: Xcom = ctx.xcom.get(check.name)
45
- check_xcom.clear()
48
+ check_xcom: Xcom | None = ctx.xcom.get(check.name)
49
+ if check_xcom is not None:
50
+ check_xcom.clear()
46
51
 
47
52
  readiness_check_coros = [
48
53
  run_async(check.exec_chain(session)) for check in readiness_checks
@@ -77,7 +82,7 @@ async def monitor_task_readiness(
77
82
  )
78
83
  # Ensure check tasks are marked as failed on timeout
79
84
  for check in readiness_checks:
80
- if not session.get_task_status(check).is_finished:
85
+ if not session.get_task_status(check).is_ready:
81
86
  session.get_task_status(check).mark_as_failed()
82
87
 
83
88
  except (asyncio.CancelledError, KeyboardInterrupt):
@@ -92,7 +97,7 @@ async def monitor_task_readiness(
92
97
  )
93
98
  # Mark checks as failed
94
99
  for check in readiness_checks:
95
- if not session.get_task_status(check).is_finished:
100
+ if not session.get_task_status(check).is_ready:
96
101
  session.get_task_status(check).mark_as_failed()
97
102
 
98
103
  # If failure threshold is reached
@@ -125,8 +125,8 @@ def get_agent(
125
125
  "list[ToolOrCallable] | Callable[[AnySharedContext], list[ToolOrCallable]]"
126
126
  ) = [],
127
127
  additional_tools: "list[ToolOrCallable]" = [],
128
- toolsets_attr: "list[AbstractToolset[Agent]] | Callable[[AnySharedContext], list[AbstractToolset[Agent]]]" = [], # noqa
129
- additional_toolsets: "list[AbstractToolset[Agent]]" = [],
128
+ toolsets_attr: "list[AbstractToolset[None] | str] | Callable[[AnySharedContext], list[AbstractToolset[None] | str]]" = [], # noqa
129
+ additional_toolsets: "list[AbstractToolset[None] | str]" = [],
130
130
  retries: int = 3,
131
131
  yolo_mode: bool | list[str] | None = None,
132
132
  ) -> "Agent":
@@ -149,8 +149,11 @@ def get_agent(
149
149
  tools = list(tools_attr(ctx) if callable(tools_attr) else tools_attr)
150
150
  tools.extend(additional_tools)
151
151
  # Get Toolsets for agent
152
- tool_sets = list(toolsets_attr(ctx) if callable(toolsets_attr) else toolsets_attr)
153
- tool_sets.extend(additional_toolsets)
152
+ toolset_or_str_list = list(
153
+ toolsets_attr(ctx) if callable(toolsets_attr) else toolsets_attr
154
+ )
155
+ toolset_or_str_list.extend(additional_toolsets)
156
+ toolsets = _render_toolset_or_str_list(ctx, toolset_or_str_list)
154
157
  # If no agent provided, create one using the configuration
155
158
  return create_agent_instance(
156
159
  ctx=ctx,
@@ -158,13 +161,32 @@ def get_agent(
158
161
  output_type=output_type,
159
162
  system_prompt=system_prompt,
160
163
  tools=tools,
161
- toolsets=tool_sets,
164
+ toolsets=toolsets,
162
165
  model_settings=model_settings,
163
166
  retries=retries,
164
167
  yolo_mode=yolo_mode,
165
168
  )
166
169
 
167
170
 
171
+ def _render_toolset_or_str_list(
172
+ ctx: AnyContext, toolset_or_str_list: list["AbstractToolset[None] | str"]
173
+ ) -> list["AbstractToolset[None]"]:
174
+ from pydantic_ai.mcp import load_mcp_servers
175
+
176
+ toolsets = []
177
+ for toolset_or_str in toolset_or_str_list:
178
+ if isinstance(toolset_or_str, str):
179
+ try:
180
+ servers = load_mcp_servers(toolset_or_str)
181
+ for server in servers:
182
+ toolsets.append(server)
183
+ except Exception as e:
184
+ ctx.log_error(f"Invalid MCP Config {toolset_or_str}: {e}")
185
+ continue
186
+ toolsets.append(toolset_or_str)
187
+ return toolsets
188
+
189
+
168
190
  async def run_agent_iteration(
169
191
  ctx: AnyContext,
170
192
  agent: "Agent[None, Any]",
@@ -4,7 +4,7 @@ if TYPE_CHECKING:
4
4
  from pydantic_ai.models import Model
5
5
  from pydantic_ai.settings import ModelSettings
6
6
 
7
- from zrb.attr.type import BoolAttr, StrAttr, fstring
7
+ from zrb.attr.type import BoolAttr, StrAttr, StrListAttr, fstring
8
8
  from zrb.config.llm_config import LLMConfig, llm_config
9
9
  from zrb.context.any_context import AnyContext
10
10
  from zrb.context.any_shared_context import AnySharedContext
@@ -13,7 +13,7 @@ from zrb.util.attr import get_attr, get_bool_attr, get_str_list_attr
13
13
 
14
14
  def get_yolo_mode(
15
15
  ctx: AnyContext,
16
- yolo_mode_attr: BoolAttr | StrAttr | None = None,
16
+ yolo_mode_attr: BoolAttr | StrListAttr | None = None,
17
17
  render_yolo_mode: bool = True,
18
18
  ) -> bool | list[str]:
19
19
  if yolo_mode_attr is None:
@@ -1,5 +1,6 @@
1
1
  import functools
2
2
  import inspect
3
+ import json
3
4
  import traceback
4
5
  import typing
5
6
  from collections.abc import Callable
@@ -172,18 +173,17 @@ def _get_edited_kwargs(
172
173
  return kwargs, False
173
174
  while len(user_edit_responses) < 3:
174
175
  user_edit_responses.append("")
175
- key, val = user_edit_responses[1:]
176
+ key, val_str = user_edit_responses[1:]
176
177
  if key not in kwargs:
177
178
  return kwargs, True
178
- if val != "":
179
- kwargs[key] = val
180
- return kwargs, True
181
- val = edit_text(
182
- prompt_message=f"// {key}",
183
- value=kwargs.get(key, ""),
184
- editor=CFG.DEFAULT_EDITOR,
185
- )
186
- kwargs[key] = val
179
+ is_str_param = isinstance(kwargs[key], str)
180
+ if val_str == "":
181
+ val_str = edit_text(
182
+ prompt_message=f"// {key}",
183
+ value=_get_val_str(kwargs[key]),
184
+ editor=CFG.DEFAULT_EDITOR,
185
+ )
186
+ kwargs[key] = val_str if is_str_param else json.loads(val_str)
187
187
  return kwargs, True
188
188
 
189
189
 
@@ -233,7 +233,7 @@ def _get_detail_func_param(args: list[Any] | tuple[Any], kwargs: dict[str, Any])
233
233
 
234
234
  def _get_func_param_item(key: str, val: Any) -> str:
235
235
  upper_key = key.upper()
236
- val_str = f"{val}"
236
+ val_str = _get_val_str(val)
237
237
  val_parts = val_str.split("\n")
238
238
  if len(val_parts) == 1:
239
239
  return f"- {upper_key} `{val}`"
@@ -244,6 +244,15 @@ def _get_func_param_item(key: str, val: Any) -> str:
244
244
  return "\n".join(lines)
245
245
 
246
246
 
247
+ def _get_val_str(val: Any) -> str:
248
+ if isinstance(val, str):
249
+ return val
250
+ try:
251
+ return json.dumps(val, indent=4)
252
+ except Exception:
253
+ return f"{val}"
254
+
255
+
247
256
  def _get_func_call_str(
248
257
  func: Callable, args: list[Any] | tuple[Any], kwargs: dict[str, Any]
249
258
  ) -> str:
@@ -80,7 +80,8 @@ class LLMTask(BaseTask):
80
80
  | Callable[[AnySharedContext], list["ToolOrCallable"]]
81
81
  ) = [],
82
82
  toolsets: (
83
- list["AbstractToolset[Agent]"] | Callable[[AnySharedContext], list["Tool"]]
83
+ list["AbstractToolset[None] | str"]
84
+ | Callable[[AnySharedContext], list["AbstractToolset[None] | str"]]
84
85
  ) = [],
85
86
  conversation_history: (
86
87
  ConversationHistory
@@ -169,7 +170,7 @@ class LLMTask(BaseTask):
169
170
  self._rate_limitter = rate_limitter
170
171
  self._additional_tools: list["ToolOrCallable"] = []
171
172
  self._toolsets = toolsets
172
- self._additional_toolsets: list["AbstractToolset[Agent]"] = []
173
+ self._additional_toolsets: list["AbstractToolset[None] | str"] = []
173
174
  self._conversation_history = conversation_history
174
175
  self._conversation_history_reader = conversation_history_reader
175
176
  self._conversation_history_writer = conversation_history_writer
@@ -200,10 +201,12 @@ class LLMTask(BaseTask):
200
201
  for single_tool in tool:
201
202
  self._additional_tools.append(single_tool)
202
203
 
203
- def add_toolset(self, *toolset: "AbstractToolset[Agent]"):
204
+ def add_toolset(self, *toolset: "AbstractToolset[None] | str"):
204
205
  self.append_toolset(*toolset)
205
206
 
206
- def append_toolset(self, *toolset: "AbstractToolset[Agent]"):
207
+ def append_toolset(self, *toolset: "AbstractToolset[None] | str"):
208
+ from pydantic_ai.mcp import load_mcp_servers
209
+
207
210
  for single_toolset in toolset:
208
211
  self._additional_toolsets.append(single_toolset)
209
212
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes