zrb 1.5.2__tar.gz → 1.5.4__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 (347) hide show
  1. {zrb-1.5.2 → zrb-1.5.4}/PKG-INFO +2 -2
  2. {zrb-1.5.2 → zrb-1.5.4}/pyproject.toml +2 -2
  3. zrb-1.5.4/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +129 -0
  4. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/llm_config.py +22 -15
  5. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task/base_task.py +6 -4
  6. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task/llm_task.py +38 -24
  7. zrb-1.5.2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -7
  8. {zrb-1.5.2 → zrb-1.5.4}/README.md +0 -0
  9. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/__init__.py +0 -0
  10. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/__main__.py +0 -0
  11. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/attr/__init__.py +0 -0
  12. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/attr/type.py +0 -0
  13. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/__init__.py +0 -0
  14. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/base64.py +0 -0
  15. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/git.py +0 -0
  16. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/git_subtree.py +0 -0
  17. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/group.py +0 -0
  18. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/llm/llm_chat.py +0 -0
  19. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/llm/previous-session.js +0 -0
  20. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/llm/tool/api.py +0 -0
  21. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/llm/tool/cli.py +0 -0
  22. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/llm/tool/file.py +0 -0
  23. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/llm/tool/rag.py +0 -0
  24. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/llm/tool/web.py +0 -0
  25. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/md5.py +0 -0
  26. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/__init__.py +0 -0
  27. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  28. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
  29. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
  30. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  31. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  32. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  33. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
  34. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
  35. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  36. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
  37. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  38. {zrb-1.5.2 → zrb-1.5.4}/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
  39. {zrb-1.5.2 → zrb-1.5.4}/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
  40. {zrb-1.5.2 → zrb-1.5.4}/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
  41. {zrb-1.5.2 → zrb-1.5.4}/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
  42. {zrb-1.5.2 → zrb-1.5.4}/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
  43. {zrb-1.5.2 → zrb-1.5.4}/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
  44. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
  45. {zrb-1.5.2 → zrb-1.5.4}/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
  46. {zrb-1.5.2 → zrb-1.5.4}/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
  47. {zrb-1.5.2 → zrb-1.5.4}/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
  48. {zrb-1.5.2 → zrb-1.5.4}/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
  49. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  50. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  51. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
  52. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  53. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  54. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  55. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
  56. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  57. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
  58. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
  59. {zrb-1.5.2 → zrb-1.5.4}/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
  60. {zrb-1.5.2 → zrb-1.5.4}/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
  61. {zrb-1.5.2 → zrb-1.5.4}/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
  62. {zrb-1.5.2 → zrb-1.5.4}/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
  63. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
  64. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
  65. {zrb-1.5.2 → zrb-1.5.4}/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
  66. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
  67. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
  68. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
  69. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
  70. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  71. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
  72. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  73. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
  74. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  75. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  76. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  77. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  78. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  79. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  80. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  81. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  82. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  83. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  84. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  85. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  86. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  87. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  88. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  89. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  90. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  91. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  92. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  93. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  94. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  95. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  96. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  97. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  98. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  99. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  100. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
  101. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
  102. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  103. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  104. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  105. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  106. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
  107. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
  108. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
  109. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
  110. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
  111. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  112. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
  113. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
  114. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
  115. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
  116. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
  117. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  118. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
  119. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
  120. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
  121. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
  122. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
  123. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  124. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
  125. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  126. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  127. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  128. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  129. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  130. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  131. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
  132. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  133. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
  134. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  135. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
  136. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
  137. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
  138. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  139. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  140. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
  141. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
  142. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
  143. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
  144. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
  145. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
  146. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
  147. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
  148. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
  149. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
  150. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  151. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
  152. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
  153. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
  154. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
  155. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
  156. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
  157. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
  158. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
  159. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
  160. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
  161. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
  162. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
  163. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
  164. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
  165. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
  166. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
  167. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
  168. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
  169. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
  170. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
  171. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  172. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
  173. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  174. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  175. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  176. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  177. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  178. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
  179. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
  180. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
  181. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
  182. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
  183. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
  184. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
  185. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
  186. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
  187. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
  188. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  189. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/create/__init__.py +0 -0
  190. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  191. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  192. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/project/create/project_task.py +0 -0
  193. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/python.py +0 -0
  194. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/random.py +0 -0
  195. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  196. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  197. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/setup/common_input.py +0 -0
  198. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  199. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  200. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  201. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  202. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/setup/ubuntu.py +0 -0
  203. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
  204. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
  205. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
  206. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/shell/__init__.py +0 -0
  207. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  208. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  209. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  210. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  211. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/builtin/todo.py +0 -0
  212. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/callback/__init__.py +0 -0
  213. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/callback/any_callback.py +0 -0
  214. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/callback/callback.py +0 -0
  215. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/cmd/__init__.py +0 -0
  216. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/cmd/cmd_result.py +0 -0
  217. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/cmd/cmd_val.py +0 -0
  218. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/config.py +0 -0
  219. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/content_transformer/__init__.py +0 -0
  220. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  221. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/content_transformer/content_transformer.py +0 -0
  222. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/context/__init__.py +0 -0
  223. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/context/any_context.py +0 -0
  224. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/context/any_shared_context.py +0 -0
  225. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/context/context.py +0 -0
  226. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/context/shared_context.py +0 -0
  227. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/dot_dict/__init__.py +0 -0
  228. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/dot_dict/dot_dict.py +0 -0
  229. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/env/__init__.py +0 -0
  230. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/env/any_env.py +0 -0
  231. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/env/env.py +0 -0
  232. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/env/env_file.py +0 -0
  233. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/env/env_map.py +0 -0
  234. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/group/__init__.py +0 -0
  235. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/group/any_group.py +0 -0
  236. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/group/group.py +0 -0
  237. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/input/__init__.py +0 -0
  238. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/input/any_input.py +0 -0
  239. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/input/base_input.py +0 -0
  240. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/input/bool_input.py +0 -0
  241. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/input/float_input.py +0 -0
  242. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/input/int_input.py +0 -0
  243. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/input/option_input.py +0 -0
  244. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/input/password_input.py +0 -0
  245. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/input/str_input.py +0 -0
  246. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/input/text_input.py +0 -0
  247. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/__init__.py +0 -0
  248. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/cli.py +0 -0
  249. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/common_util.py +0 -0
  250. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_app.py +0 -0
  251. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_config/config.py +0 -0
  252. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_config/config_factory.py +0 -0
  253. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/__init__.py +0 -0
  254. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/docs_route.py +0 -0
  255. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  256. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  257. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/error_page/view.html +0 -0
  258. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  259. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  260. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/home_page/view.html +0 -0
  261. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/login_api_route.py +0 -0
  262. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  263. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/login_page/view.html +0 -0
  264. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  265. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  266. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  267. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  268. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  269. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  270. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  271. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  272. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
  273. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  274. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  275. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  276. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  277. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  278. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  279. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/static/resources/pico.min.css +0 -0
  280. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  281. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
  282. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
  283. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  284. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/static/static_route.py +0 -0
  285. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  286. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
  287. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_schema/session.py +0 -0
  288. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_schema/token.py +0 -0
  289. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_schema/user.py +0 -0
  290. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_util/cookie.py +0 -0
  291. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_util/html.py +0 -0
  292. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_util/token.py +0 -0
  293. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/runner/web_util/user.py +0 -0
  294. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/session/__init__.py +0 -0
  295. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/session/any_session.py +0 -0
  296. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/session/session.py +0 -0
  297. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/session_state_log/__init__.py +0 -0
  298. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/session_state_log/session_state_log.py +0 -0
  299. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/session_state_logger/__init__.py +0 -0
  300. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
  301. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
  302. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  303. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task/__init__.py +0 -0
  304. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task/any_task.py +0 -0
  305. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task/base_trigger.py +0 -0
  306. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task/cmd_task.py +0 -0
  307. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task/http_check.py +0 -0
  308. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task/make_task.py +0 -0
  309. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task/rsync_task.py +0 -0
  310. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task/scaffolder.py +0 -0
  311. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task/scheduler.py +0 -0
  312. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task/task.py +0 -0
  313. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task/tcp_check.py +0 -0
  314. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task_status/__init__.py +0 -0
  315. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/task_status/task_status.py +0 -0
  316. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/__init__.py +0 -0
  317. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/attr.py +0 -0
  318. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/cli/__init__.py +0 -0
  319. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/cli/style.py +0 -0
  320. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/cli/subcommand.py +0 -0
  321. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/cmd/__init__.py +0 -0
  322. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/cmd/command.py +0 -0
  323. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/cmd/remote.py +0 -0
  324. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/codemod/__init__.py +0 -0
  325. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/codemod/modification_mode.py +0 -0
  326. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/codemod/modify_class.py +0 -0
  327. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/codemod/modify_class_parent.py +0 -0
  328. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/codemod/modify_class_property.py +0 -0
  329. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/codemod/modify_dict.py +0 -0
  330. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/codemod/modify_function.py +0 -0
  331. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/codemod/modify_function_call.py +0 -0
  332. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/codemod/modify_method.py +0 -0
  333. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/codemod/modify_module.py +0 -0
  334. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/cron.py +0 -0
  335. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/file.py +0 -0
  336. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/git.py +0 -0
  337. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/git_subtree.py +0 -0
  338. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/group.py +0 -0
  339. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/load.py +0 -0
  340. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/run.py +0 -0
  341. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/string/__init__.py +0 -0
  342. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/string/conversion.py +0 -0
  343. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/string/format.py +0 -0
  344. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/string/name.py +0 -0
  345. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/util/todo.py +0 -0
  346. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/xcom/__init__.py +0 -0
  347. {zrb-1.5.2 → zrb-1.5.4}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 1.5.2
3
+ Version: 1.5.4
4
4
  Summary: Your Automation Powerhouse
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
@@ -26,7 +26,7 @@ Requires-Dist: openai (>=1.70.0,<2.0.0) ; extra == "rag" or extra == "all"
26
26
  Requires-Dist: pdfplumber (>=0.11.6,<0.12.0) ; extra == "rag" or extra == "all"
27
27
  Requires-Dist: playwright (>=1.51.0,<2.0.0) ; extra == "playwright" or extra == "all"
28
28
  Requires-Dist: psutil (>=7.0.0,<8.0.0)
29
- Requires-Dist: pydantic-ai (>=0.0.49,<0.0.50)
29
+ Requires-Dist: pydantic-ai (>=0.0.52,<0.0.53)
30
30
  Requires-Dist: python-dotenv (>=1.1.0,<2.0.0)
31
31
  Requires-Dist: python-jose[cryptography] (>=3.4.0,<4.0.0)
32
32
  Requires-Dist: requests (>=2.32.3,<3.0.0)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.5.2"
3
+ version = "1.5.4"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -49,7 +49,7 @@ beautifulsoup4 = "^4.13.3"
49
49
  fastapi = {extras = ["standard"], version = "^0.115.12"}
50
50
  python-jose = {extras = ["cryptography"], version = "^3.4.0"}
51
51
  ulid-py = "^1.1.0"
52
- pydantic-ai = "^0.0.49"
52
+ pydantic-ai = "^0.0.52"
53
53
  openai = {version = "^1.70.0", optional = true}
54
54
  playwright = {version = "^1.51.0", optional = true}
55
55
  psutil = "^7.0.0"
@@ -0,0 +1,129 @@
1
+ # My App Name
2
+
3
+ Welcome to My App Name! This application is designed to help you start your project with a flexible architecture that can scale as your needs grow. My App Name supports both monolithic and microservices architectures, allowing you to start small and expand without rewriting your codebase.
4
+
5
+ ## Key Features
6
+
7
+ - **Modular-Monolith Architecture**: My App Name is built with a modular-monolith architecture, providing a clean interface for inter-module communication. This allows you to run My App Name as a monolith or as microservices without altering your code.
8
+
9
+ - **Low Coupling, High Cohesion**: The architecture ensures low coupling and high cohesion, making it easy to split your code into microservices when needed.
10
+
11
+ ## How It Works
12
+
13
+ ### Inter-Module Communication
14
+
15
+ Each module in My App Name is independent and communicates with others through a `Client` object. The `Client` is an interface with two implementations: `ApiClient` and `DirectClient`.
16
+
17
+ - **ApiClient**: Used when running My App Name as microservices. It communicates over HTTP using a base URL.
18
+ - **DirectClient**: Used when running My App Name as a monolith. It allows direct method calls between modules.
19
+
20
+ ### Code Examples
21
+
22
+ Here's how you can use the `as_api_client` and `as_direct_client` methods:
23
+
24
+ ```python
25
+ # Using as_api_client
26
+ from my_app_name.config import APP_AUTH_BASE_URL
27
+ from my_app_name.module.auth.service.permission.permission_service_factory import permission_service
28
+
29
+ # Create an API client for the permission service
30
+ permission_api_client = permission_service.as_api_client(base_url=APP_AUTH_BASE_URL)
31
+
32
+ # Using as_direct_client
33
+ from my_app_name.module.auth.service.role.role_service_factory import role_service
34
+
35
+ # Create a direct client for the role service
36
+ role_direct_client = role_service.as_direct_client()
37
+ ```
38
+ ## Application Architecture
39
+
40
+ My App Name follows a modular-monolith architecture. Each module (e.g., Auth, Library) encapsulates a specific business capability. The Gateway module acts as the entry point for user interactions (e.g., web UI).
41
+
42
+ **Communication Modes:**
43
+
44
+ 1. **Monolith (Direct Communication):**
45
+ ```
46
+ +---------+ +---------+
47
+ | Gateway | ----> | Auth | (e.g., for login, permission checks)
48
+ | (UI) | | Service |
49
+ +---------+ +---------+
50
+ | ^
51
+ | | (Library might call Auth for specific checks)
52
+ | |
53
+ v |
54
+ +---------+ -----------+
55
+ | Library |
56
+ | Service |
57
+ +---------+
58
+ (Gateway also calls Library directly)
59
+ (DirectClient calls between services if needed)
60
+ ```
61
+ Modules communicate directly via `DirectClient` implementations. The Gateway calls necessary services, and services can call each other directly if required.
62
+
63
+ 2. **Microservices (API Communication):**
64
+ ```
65
+ +---------+ +---------+
66
+ | Gateway | ----> | Auth | (e.g., via Auth API)
67
+ | (UI) | | Service |
68
+ | | | (API) |
69
+ +---------+ +---------+
70
+ | ^
71
+ | | (Library Service might call Auth API)
72
+ | |
73
+ v |
74
+ +---------+ -----------+
75
+ | Library |
76
+ | Service |
77
+ | (API) |
78
+ +---------+
79
+ (Gateway also calls Library API)
80
+ (ApiClient calls via HTTP between services if needed)
81
+ ```
82
+ Modules communicate via `ApiClient` implementations over HTTP/API calls. The Gateway calls necessary service APIs, and services can call each other's APIs if required.
83
+
84
+ ## Factory Pattern
85
+
86
+ The application utilizes the Factory pattern extensively, particularly for creating client, service, and repository instances. This allows the application to switch between different implementations based on configuration settings.
87
+
88
+ **Example (`my_app_name/module/auth/client/auth_client_factory.py`):**
89
+
90
+ ```python
91
+ from my_app_name.config import APP_COMMUNICATION
92
+ from my_app_name.module.auth.client.auth_api_client import AuthAPIClient
93
+ from my_app_name.module.auth.client.auth_client import AuthClient
94
+ from my_app_name.module.auth.client.auth_direct_client import AuthDirectClient
95
+
96
+ # Selects the client based on the configuration
97
+ if APP_COMMUNICATION == "direct":
98
+ auth_client: AuthClient = AuthDirectClient() # Used in Monolith mode
99
+ elif APP_COMMUNICATION == "api":
100
+ auth_client: AuthClient = AuthAPIClient() # Used in Microservices mode
101
+ ```
102
+
103
+ By changing the `APP_COMMUNICATION` variable in `my_app_name/config.py`, you can switch how modules communicate without changing the core module logic. Similar factories exist for services and repositories (e.g., switching between database and in-memory implementations based on `APP_REPOSITORY_TYPE`).
104
+
105
+ ## Key Folders and Files
106
+
107
+ - `my_app_name/config.py`: Central configuration file (database connections, communication mode, etc.).
108
+ - `my_app_name/main.py`: Main application entry point.
109
+ - `my_app_name/common/`: Shared utilities, base classes (e.g., `app_factory.py`, `base_service.py`).
110
+ - `my_app_name/module/`: Contains the application modules (e.g., `auth`, `library`, `gateway`).
111
+ - `my_app_name/module/<module_name>/`: Each module directory typically contains:
112
+ - `client/`: Client interfaces (`*_client.py`, `*_api_client.py`, `*_direct_client.py`) and factories (`*_client_factory.py`).
113
+ - `service/`: Business logic implementation (`*_service.py`) and factories (`*_service_factory.py`).
114
+ - `repository/`: Data access logic (`*_repository.py`, `*_db_repository.py`) and factories (`*_repository_factory.py`).
115
+ - `route.py`: API or UI routes for the module.
116
+ - `schema/`: Data transfer objects or database models (if applicable).
117
+ - `migration/`: Database migration scripts (if using Alembic).
118
+ - `my_app_name/schema/`: Shared data schemas used across modules.
119
+ - `my_app_name/test/`: Unit and integration tests.
120
+ - `my_app_name/_zrb/`: Tooling scripts (likely for code generation or automation).
121
+
122
+
123
+ ## Principles
124
+
125
+ - Developers should be able to override everything with a reasonable amount of code.
126
+ - Simple tasks should only require a small amount of code.
127
+ - A bit of magic is okay as long as it's transparent and documented.
128
+
129
+ For more details, refer to the client implementations in `module/auth/client/auth_api_client.py` and `module/auth/client/auth_direct_client.py`.
@@ -38,27 +38,27 @@ class LLMConfig:
38
38
  default_persona: str | None = None,
39
39
  default_system_prompt: str | None = None,
40
40
  ):
41
- self._model_name = (
41
+ self._default_model_name = (
42
42
  default_model_name
43
43
  if default_model_name is not None
44
44
  else os.getenv("ZRB_LLM_MODEL", None)
45
45
  )
46
- self._model_base_url = (
46
+ self._default_model_base_url = (
47
47
  default_base_url
48
48
  if default_base_url is not None
49
49
  else os.getenv("ZRB_LLM_BASE_URL", None)
50
50
  )
51
- self._model_api_key = (
51
+ self._default_model_api_key = (
52
52
  default_api_key
53
53
  if default_api_key is not None
54
54
  else os.getenv("ZRB_LLM_API_KEY", None)
55
55
  )
56
- self._system_prompt = (
56
+ self._default_system_prompt = (
57
57
  default_system_prompt
58
58
  if default_system_prompt is not None
59
59
  else os.getenv("ZRB_LLM_SYSTEM_PROMPT", None)
60
60
  )
61
- self._persona = (
61
+ self._default_persona = (
62
62
  default_persona
63
63
  if default_persona is not None
64
64
  else os.getenv("ZRB_LLM_PERSONA", None)
@@ -67,24 +67,28 @@ class LLMConfig:
67
67
  self._default_model = None
68
68
 
69
69
  def _get_model_name(self) -> str | None:
70
- return self._model_name if self._model_name is not None else None
70
+ return (
71
+ self._default_model_name if self._default_model_name is not None else None
72
+ )
71
73
 
72
74
  def get_default_model_provider(self) -> Provider | str:
73
75
  if self._default_provider is not None:
74
76
  return self._default_provider
75
- if self._model_base_url is None and self._model_api_key is None:
77
+ if self._default_model_base_url is None and self._default_model_api_key is None:
76
78
  return "openai"
77
79
  return OpenAIProvider(
78
- base_url=self._model_base_url, api_key=self._model_api_key
80
+ base_url=self._default_model_base_url, api_key=self._default_model_api_key
79
81
  )
80
82
 
81
83
  def get_default_system_prompt(self) -> str:
82
84
  system_prompt = (
83
85
  DEFAULT_SYSTEM_PROMPT
84
- if self._system_prompt is None
85
- else self._system_prompt
86
+ if self._default_system_prompt is None
87
+ else self._default_system_prompt
88
+ )
89
+ persona = (
90
+ DEFAULT_PERSONA if self._default_persona is None else self._default_persona
86
91
  )
87
- persona = DEFAULT_PERSONA if self._persona is None else self._persona
88
92
  if persona is not None:
89
93
  return f"{persona}\n{system_prompt}"
90
94
  return system_prompt
@@ -100,17 +104,20 @@ class LLMConfig:
100
104
  provider=self.get_default_model_provider(),
101
105
  )
102
106
 
107
+ def set_default_persona(self, persona: str):
108
+ self._default_persona = persona
109
+
103
110
  def set_default_system_prompt(self, system_prompt: str):
104
- self._system_prompt = system_prompt
111
+ self._default_system_prompt = system_prompt
105
112
 
106
113
  def set_default_model_name(self, model_name: str):
107
- self._model_name = model_name
114
+ self._default_model_name = model_name
108
115
 
109
116
  def set_default_model_api_key(self, model_api_key: str):
110
- self._model_api_key = model_api_key
117
+ self._default_model_api_key = model_api_key
111
118
 
112
119
  def set_default_model_base_url(self, model_base_url: str):
113
- self._model_base_url = model_base_url
120
+ self._default_model_base_url = model_base_url
114
121
 
115
122
  def set_default_provider(self, provider: Provider | str):
116
123
  self._default_provider = provider
@@ -1,6 +1,6 @@
1
1
  import asyncio
2
2
  import os
3
- from collections.abc import Callable
3
+ from collections.abc import Callable, Coroutine
4
4
  from typing import Any
5
5
 
6
6
  from zrb.attr.type import BoolAttr, fstring
@@ -64,7 +64,7 @@ class BaseTask(AnyTask):
64
64
  def __repr__(self):
65
65
  return f"<{self.__class__.__name__} name={self._name}>"
66
66
 
67
- def __rshift__(self, other: AnyTask | list[AnyTask]) -> AnyTask:
67
+ def __rshift__(self, other: AnyTask | list[AnyTask]) -> AnyTask | list[AnyTask]:
68
68
  try:
69
69
  if isinstance(other, AnyTask):
70
70
  other.append_upstream(self)
@@ -123,7 +123,9 @@ class BaseTask(AnyTask):
123
123
  return [task_input for task_input in inputs if task_input is not None]
124
124
 
125
125
  def __combine_inputs(
126
- self, inputs: list[AnyInput], other_inputs: list[AnyInput] | AnyInput
126
+ self,
127
+ inputs: list[AnyInput],
128
+ other_inputs: list[AnyInput | None] | AnyInput | None,
127
129
  ):
128
130
  input_names = [task_input.name for task_input in inputs]
129
131
  if isinstance(other_inputs, AnyInput):
@@ -429,7 +431,7 @@ class BaseTask(AnyTask):
429
431
  session.get_task_status(self).reset()
430
432
  # defer this action
431
433
  ctx.log_info("Running")
432
- action_coro = asyncio.create_task(
434
+ action_coro: Coroutine = asyncio.create_task(
433
435
  run_async(self.__exec_action_and_retry(session))
434
436
  )
435
437
  session.defer_action(self, action_coro)
@@ -1,4 +1,3 @@
1
- import copy
2
1
  import functools
3
2
  import inspect
4
3
  import json
@@ -9,6 +8,7 @@ from typing import Any
9
8
 
10
9
  from openai import APIError
11
10
  from pydantic_ai import Agent, Tool
11
+ from pydantic_ai.mcp import MCPServer
12
12
  from pydantic_ai.messages import (
13
13
  FinalResultEvent,
14
14
  FunctionToolCallEvent,
@@ -54,9 +54,9 @@ class LLMTask(BaseTask):
54
54
  Callable[[AnySharedContext], Model | str | fstring] | Model | None
55
55
  ) = None,
56
56
  render_model: bool = True,
57
- model_base_url: StrAttr = None,
57
+ model_base_url: StrAttr | None = None,
58
58
  render_model_base_url: bool = True,
59
- model_api_key: StrAttr = None,
59
+ model_api_key: StrAttr | None = None,
60
60
  render_model_api_key: bool = True,
61
61
  model_settings: (
62
62
  ModelSettings | Callable[[AnySharedContext], ModelSettings] | None
@@ -68,6 +68,9 @@ class LLMTask(BaseTask):
68
68
  tools: (
69
69
  list[ToolOrCallable] | Callable[[AnySharedContext], list[ToolOrCallable]]
70
70
  ) = [],
71
+ mcp_servers: (
72
+ list[MCPServer] | Callable[[AnySharedContext], list[MCPServer]]
73
+ ) = [],
71
74
  conversation_history: (
72
75
  ListOfDict | Callable[[AnySharedContext], ListOfDict]
73
76
  ) = [],
@@ -127,6 +130,8 @@ class LLMTask(BaseTask):
127
130
  self._message = message
128
131
  self._tools = tools
129
132
  self._additional_tools: list[ToolOrCallable] = []
133
+ self._mcp_servers = mcp_servers
134
+ self._additional_mcp_servers: list[MCPServer] = []
130
135
  self._conversation_history = conversation_history
131
136
  self._conversation_history_reader = conversation_history_reader
132
137
  self._conversation_history_writer = conversation_history_writer
@@ -137,32 +142,36 @@ class LLMTask(BaseTask):
137
142
  def add_tool(self, tool: ToolOrCallable):
138
143
  self._additional_tools.append(tool)
139
144
 
145
+ def add_mcp_server(self, mcp_server: MCPServer):
146
+ self._additional_mcp_servers.append(mcp_server)
147
+
140
148
  async def _exec_action(self, ctx: AnyContext) -> Any:
141
149
  history = await self._read_conversation_history(ctx)
142
150
  user_prompt = self._get_message(ctx)
143
151
  agent = self._get_agent(ctx)
144
152
  try:
145
- async with agent.iter(
146
- user_prompt=user_prompt,
147
- message_history=ModelMessagesTypeAdapter.validate_python(history),
148
- ) as agent_run:
149
- async for node in agent_run:
150
- # Each node represents a step in the agent's execution
151
- # Reference: https://ai.pydantic.dev/agents/#streaming
152
- try:
153
- await self._print_node(ctx, agent_run, node)
154
- except APIError as e:
155
- # Extract detailed error information from the response
156
- error_details = _extract_api_error_details(e)
157
- ctx.log_error(f"API Error: {error_details}")
158
- raise
159
- except Exception as e:
160
- ctx.log_error(f"Error processing node: {str(e)}")
161
- ctx.log_error(f"Error type: {type(e).__name__}")
162
- raise
163
- new_history = json.loads(agent_run.result.all_messages_json())
164
- await self._write_conversation_history(ctx, new_history)
165
- return agent_run.result.data
153
+ async with agent.run_mcp_servers():
154
+ async with agent.iter(
155
+ user_prompt=user_prompt,
156
+ message_history=ModelMessagesTypeAdapter.validate_python(history),
157
+ ) as agent_run:
158
+ async for node in agent_run:
159
+ # Each node represents a step in the agent's execution
160
+ # Reference: https://ai.pydantic.dev/agents/#streaming
161
+ try:
162
+ await self._print_node(ctx, agent_run, node)
163
+ except APIError as e:
164
+ # Extract detailed error information from the response
165
+ error_details = _extract_api_error_details(e)
166
+ ctx.log_error(f"API Error: {error_details}")
167
+ raise
168
+ except Exception as e:
169
+ ctx.log_error(f"Error processing node: {str(e)}")
170
+ ctx.log_error(f"Error type: {type(e).__name__}")
171
+ raise
172
+ new_history = json.loads(agent_run.result.all_messages_json())
173
+ await self._write_conversation_history(ctx, new_history)
174
+ return agent_run.result.data
166
175
  except Exception as e:
167
176
  ctx.log_error(f"Error in agent execution: {str(e)}")
168
177
  raise
@@ -277,10 +286,15 @@ class LLMTask(BaseTask):
277
286
  tool if isinstance(tool, Tool) else Tool(_wrap_tool(tool), takes_ctx=False)
278
287
  for tool in tools_or_callables
279
288
  ]
289
+ mcp_servers = list(
290
+ self._mcp_servers(ctx) if callable(self._mcp_servers) else self._mcp_servers
291
+ )
292
+ mcp_servers.extend(self._additional_mcp_servers)
280
293
  return Agent(
281
294
  self._get_model(ctx),
282
295
  system_prompt=self._get_system_prompt(ctx),
283
296
  tools=tools,
297
+ mcp_servers=mcp_servers,
284
298
  model_settings=self._get_model_settings(ctx),
285
299
  retries=3,
286
300
  )
@@ -1,7 +0,0 @@
1
- # App Name
2
-
3
- # Principle
4
-
5
- - Developer should be able to override everything with sane amount of code.
6
- - Simple tasks should only require small amount of code.
7
- - A bit of magic is okay as long as transparent and documented.
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes