zrb 1.4.1__tar.gz → 1.4.3__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.4.1 → zrb-1.4.3}/PKG-INFO +66 -46
  2. {zrb-1.4.1 → zrb-1.4.3}/README.md +59 -43
  3. {zrb-1.4.1 → zrb-1.4.3}/pyproject.toml +6 -2
  4. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/llm/llm_chat.py +7 -6
  5. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/llm/tool/api.py +1 -1
  6. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/llm/tool/file.py +4 -2
  7. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/llm/tool/rag.py +28 -10
  8. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/llm/tool/web.py +55 -15
  9. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/config.py +4 -13
  10. zrb-1.4.3/src/zrb/llm_config.py +102 -0
  11. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task/llm_task.py +36 -19
  12. zrb-1.4.1/src/zrb/llm_config.py +0 -50
  13. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/__init__.py +0 -0
  14. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/__main__.py +0 -0
  15. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/attr/__init__.py +0 -0
  16. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/attr/type.py +0 -0
  17. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/__init__.py +0 -0
  18. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/base64.py +0 -0
  19. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/git.py +0 -0
  20. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/git_subtree.py +0 -0
  21. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/group.py +0 -0
  22. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/llm/previous-session.js +0 -0
  23. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/llm/tool/cli.py +0 -0
  24. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/md5.py +0 -0
  25. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/__init__.py +0 -0
  26. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  27. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
  28. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
  29. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  30. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  31. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  32. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  33. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
  34. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
  35. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  36. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
  37. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  38. {zrb-1.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  50. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  51. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
  52. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  53. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  54. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  55. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
  56. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  57. {zrb-1.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  71. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
  72. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  73. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
  74. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  75. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  76. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  77. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  78. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  79. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  80. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  81. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  82. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  83. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  84. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  85. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  86. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  87. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  88. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  89. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  90. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  91. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  92. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  93. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  94. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  95. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  96. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  97. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  98. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  99. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  100. {zrb-1.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
  102. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  103. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  104. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  105. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  106. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
  107. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
  108. {zrb-1.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
  110. {zrb-1.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  112. {zrb-1.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
  114. {zrb-1.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
  116. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
  117. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  118. {zrb-1.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
  120. {zrb-1.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
  122. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
  123. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  124. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
  125. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  126. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  127. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  128. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  129. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  130. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  131. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
  132. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  133. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
  134. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  135. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
  136. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
  137. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
  138. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  139. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  140. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
  141. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
  142. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
  143. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
  144. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
  145. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
  146. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
  147. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
  148. {zrb-1.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  151. {zrb-1.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/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.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  172. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
  173. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  174. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  175. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  176. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  177. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  178. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
  179. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
  180. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
  181. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
  182. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
  183. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
  184. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
  185. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
  186. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
  187. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
  188. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  189. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/create/__init__.py +0 -0
  190. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  191. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  192. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/project/create/project_task.py +0 -0
  193. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/python.py +0 -0
  194. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/random.py +0 -0
  195. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  196. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  197. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/setup/common_input.py +0 -0
  198. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  199. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  200. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  201. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  202. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/setup/ubuntu.py +0 -0
  203. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
  204. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
  205. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
  206. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/shell/__init__.py +0 -0
  207. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  208. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  209. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  210. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  211. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/builtin/todo.py +0 -0
  212. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/callback/__init__.py +0 -0
  213. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/callback/any_callback.py +0 -0
  214. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/callback/callback.py +0 -0
  215. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/cmd/__init__.py +0 -0
  216. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/cmd/cmd_result.py +0 -0
  217. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/cmd/cmd_val.py +0 -0
  218. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/content_transformer/__init__.py +0 -0
  219. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  220. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/content_transformer/content_transformer.py +0 -0
  221. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/context/__init__.py +0 -0
  222. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/context/any_context.py +0 -0
  223. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/context/any_shared_context.py +0 -0
  224. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/context/context.py +0 -0
  225. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/context/shared_context.py +0 -0
  226. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/dot_dict/__init__.py +0 -0
  227. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/dot_dict/dot_dict.py +0 -0
  228. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/env/__init__.py +0 -0
  229. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/env/any_env.py +0 -0
  230. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/env/env.py +0 -0
  231. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/env/env_file.py +0 -0
  232. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/env/env_map.py +0 -0
  233. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/group/__init__.py +0 -0
  234. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/group/any_group.py +0 -0
  235. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/group/group.py +0 -0
  236. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/input/__init__.py +0 -0
  237. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/input/any_input.py +0 -0
  238. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/input/base_input.py +0 -0
  239. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/input/bool_input.py +0 -0
  240. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/input/float_input.py +0 -0
  241. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/input/int_input.py +0 -0
  242. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/input/option_input.py +0 -0
  243. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/input/password_input.py +0 -0
  244. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/input/str_input.py +0 -0
  245. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/input/text_input.py +0 -0
  246. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/__init__.py +0 -0
  247. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/cli.py +0 -0
  248. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/common_util.py +0 -0
  249. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_app.py +0 -0
  250. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_config/config.py +0 -0
  251. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_config/config_factory.py +0 -0
  252. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/__init__.py +0 -0
  253. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/docs_route.py +0 -0
  254. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  255. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  256. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/error_page/view.html +0 -0
  257. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  258. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  259. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/home_page/view.html +0 -0
  260. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/login_api_route.py +0 -0
  261. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  262. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/login_page/view.html +0 -0
  263. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  264. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  265. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  266. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  267. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  268. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  269. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  270. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  271. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
  272. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  273. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  274. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  275. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  276. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  277. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  278. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/pico.min.css +0 -0
  279. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  280. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
  281. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
  282. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  283. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/static/static_route.py +0 -0
  284. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  285. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
  286. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_schema/session.py +0 -0
  287. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_schema/token.py +0 -0
  288. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_schema/user.py +0 -0
  289. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_util/cookie.py +0 -0
  290. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_util/html.py +0 -0
  291. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_util/token.py +0 -0
  292. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/runner/web_util/user.py +0 -0
  293. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/session/__init__.py +0 -0
  294. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/session/any_session.py +0 -0
  295. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/session/session.py +0 -0
  296. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/session_state_log/__init__.py +0 -0
  297. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/session_state_log/session_state_log.py +0 -0
  298. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/session_state_logger/__init__.py +0 -0
  299. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
  300. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
  301. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  302. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task/__init__.py +0 -0
  303. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task/any_task.py +0 -0
  304. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task/base_task.py +0 -0
  305. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task/base_trigger.py +0 -0
  306. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task/cmd_task.py +0 -0
  307. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task/http_check.py +0 -0
  308. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task/make_task.py +0 -0
  309. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task/rsync_task.py +0 -0
  310. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task/scaffolder.py +0 -0
  311. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task/scheduler.py +0 -0
  312. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task/task.py +0 -0
  313. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task/tcp_check.py +0 -0
  314. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task_status/__init__.py +0 -0
  315. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/task_status/task_status.py +0 -0
  316. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/__init__.py +0 -0
  317. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/attr.py +0 -0
  318. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/cli/__init__.py +0 -0
  319. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/cli/style.py +0 -0
  320. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/cli/subcommand.py +0 -0
  321. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/cmd/__init__.py +0 -0
  322. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/cmd/command.py +0 -0
  323. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/cmd/remote.py +0 -0
  324. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/codemod/__init__.py +0 -0
  325. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/codemod/modification_mode.py +0 -0
  326. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/codemod/modify_class.py +0 -0
  327. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/codemod/modify_class_parent.py +0 -0
  328. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/codemod/modify_class_property.py +0 -0
  329. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/codemod/modify_dict.py +0 -0
  330. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/codemod/modify_function.py +0 -0
  331. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/codemod/modify_function_call.py +0 -0
  332. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/codemod/modify_method.py +0 -0
  333. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/codemod/modify_module.py +0 -0
  334. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/cron.py +0 -0
  335. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/file.py +0 -0
  336. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/git.py +0 -0
  337. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/git_subtree.py +0 -0
  338. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/group.py +0 -0
  339. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/load.py +0 -0
  340. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/run.py +0 -0
  341. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/string/__init__.py +0 -0
  342. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/string/conversion.py +0 -0
  343. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/string/format.py +0 -0
  344. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/string/name.py +0 -0
  345. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/util/todo.py +0 -0
  346. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/xcom/__init__.py +0 -0
  347. {zrb-1.4.1 → zrb-1.4.3}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 1.4.1
3
+ Version: 1.4.3
4
4
  Summary: Your Automation Powerhouse
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
@@ -13,16 +13,20 @@ Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.10
14
14
  Classifier: Programming Language :: Python :: 3.11
15
15
  Classifier: Programming Language :: Python :: 3.12
16
+ Provides-Extra: all
17
+ Provides-Extra: playwright
16
18
  Provides-Extra: rag
17
19
  Requires-Dist: autopep8 (>=2.0.4,<3.0.0)
18
20
  Requires-Dist: beautifulsoup4 (>=4.12.3,<5.0.0)
19
21
  Requires-Dist: black (>=24.10.0,<24.11.0)
20
- Requires-Dist: chromadb (>=0.5.20,<0.6.0) ; extra == "rag"
22
+ Requires-Dist: chromadb (>=0.5.20,<0.6.0) ; extra == "rag" or extra == "all"
21
23
  Requires-Dist: fastapi[standard] (>=0.115.6,<0.116.0)
22
24
  Requires-Dist: fastembed (>=0.5.1,<0.6.0)
23
25
  Requires-Dist: isort (>=5.13.2,<5.14.0)
24
26
  Requires-Dist: libcst (>=1.5.0,<2.0.0)
25
- Requires-Dist: pdfplumber (>=0.11.4,<0.12.0) ; extra == "rag"
27
+ Requires-Dist: openai (>=1.10.0,<2.0.0) ; extra == "rag" or extra == "all"
28
+ Requires-Dist: pdfplumber (>=0.11.4,<0.12.0) ; extra == "rag" or extra == "all"
29
+ Requires-Dist: playwright (>=1.43.0,<2.0.0) ; extra == "playwright" or extra == "all"
26
30
  Requires-Dist: psutil (>=6.1.1,<7.0.0)
27
31
  Requires-Dist: pydantic-ai (>=0.0.42,<0.0.43)
28
32
  Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
@@ -44,7 +48,6 @@ Description-Content-Type: text/markdown
44
48
 
45
49
  Zrb streamlines repetitive tasks, integrates with powerful LLMs, and lets you create custom automation workflows effortlessly. Whether you’re building CI/CD pipelines, code generators, or unique automation scripts, Zrb is designed to simplify and supercharge your workflow.
46
50
 
47
- ---
48
51
 
49
52
  ## 🚀 Why Zrb?
50
53
 
@@ -54,7 +57,6 @@ Zrb streamlines repetitive tasks, integrates with powerful LLMs, and lets you cr
54
57
  - **Developer-Friendly:** Quick to install and get started, with clear documentation and examples.
55
58
  - **Web Interface:** Run Zrb as a server to make tasks accessible even to non-technical team members.
56
59
 
57
- ---
58
60
 
59
61
  ## 🔥 Key Features
60
62
 
@@ -64,11 +66,8 @@ Zrb streamlines repetitive tasks, integrates with powerful LLMs, and lets you cr
64
66
  - **Flexible Input Handling:** Defaults, prompts, and command-line parameters to suit any workflow.
65
67
  - **Extensible & Open Source:** Contribute, customize, or extend Zrb to fit your unique needs.
66
68
 
67
- ---
68
69
 
69
- ## 🛠️ Getting Started
70
-
71
- ### Quick Installation
70
+ # 🛠️ Installation
72
71
 
73
72
  Install Zrb via pip:
74
73
 
@@ -84,40 +83,48 @@ bash -c "$(curl -fsSL https://raw.githubusercontent.com/state-alchemists/zrb/mai
84
83
 
85
84
  ```
86
85
 
87
- ### Your First Task
86
+ # 🍲 Quick Start: Build Your First Automation Workflow
87
+
88
+ Zrb empowers you to create custom automation tasks using Python. This guide shows you how to define two simple tasks: one to generate a PlantUML script from your source code and another to convert that script into a PNG image.
89
+
90
+ ## 1. Create Your Task Definition File
88
91
 
89
- Create a file at `/home/<your-user-name>/zrb_init.py` with the following content:
92
+ Place a file named `zrb_init.py` in a directory that's accessible from your projects. Zrb will automatically search for this file by starting in your current directory and then moving upward (i.e., checking parent directories) until it finds one. This means if you place your `zrb_init.py` in your home directory (e.g., `/home/<your-user-name>/zrb_init.py`), the tasks defined there will be available for any project.
90
93
 
94
+ Add the following content to your zrb_init.py:
91
95
 
92
96
  ```python
93
97
  import os
94
- from zrb import cli, llm_config, LLMTask, CmdTask, StrInput, Group
95
- from zrb.builtin.llm.tool.file import read_all_files, write_text_file
98
+ from zrb import cli, LLMTask, CmdTask, StrInput, Group
99
+ from zrb.builtin.llm.tool.file import (
100
+ read_text_file, list_files, write_text_file
101
+ )
96
102
 
97
103
  CURRENT_DIR = os.getcwd()
98
104
 
99
- # Make UML group
105
+ # Create a group for UML-related tasks
100
106
  uml_group = cli.add_group(Group(name="uml", description="UML related tasks"))
101
107
 
102
- # Generate UML script
108
+ # Task 1: Generate a PlantUML script from your source code
103
109
  make_uml_script = uml_group.add_task(
104
110
  LLMTask(
105
111
  name="make-script",
106
112
  description="Creating plantuml diagram based on source code in current directory",
107
113
  input=StrInput(name="diagram", default="state diagram"),
108
114
  message=(
109
- f"Read source code in {CURRENT_DIR}, "
115
+ f"Read all necessary files in {CURRENT_DIR}, "
110
116
  "make a {ctx.input.diagram} in plantuml format. "
111
117
  f"Write the script into {CURRENT_DIR}/{{ctx.input.diagram}}.uml"
112
118
  ),
113
119
  tools=[
114
- read_all_files,
120
+ list_files,
121
+ read_text_file,
115
122
  write_text_file,
116
123
  ],
117
124
  )
118
125
  )
119
126
 
120
- # Defining a Cmd Task to transform Plantuml script into a png image.
127
+ # Task 2: Convert the PlantUML script into a PNG image
121
128
  make_uml_image = uml_group.add_task(
122
129
  CmdTask(
123
130
  name="make-image",
@@ -128,62 +135,75 @@ make_uml_image = uml_group.add_task(
128
135
  )
129
136
  )
130
137
 
131
- # Making sure that make_png has make_uml as its dependency.
138
+ # Set up the dependency: the image task runs after the script is created
132
139
  make_uml_script >> make_uml_image
133
140
  ```
134
141
 
135
- You have just define two automation tasks.
142
+ **What This Does**
136
143
 
137
- The first one use LLM to read files in your current directory and create a `PlantUML script` on that directory.
144
+ - **Task 1 make-script**:
138
145
 
139
- The second task turn the PlantUML script into a `*.png` file. The second task depends on the first task and both of them are located under the same group.
146
+ Uses an LLM to read all files in your current directory and generate a PlantUML script (e.g., `state diagram.uml`).
140
147
 
141
- You can run the tasks by invoking `zrb uml make-script` or `zrb uml make-image` respectively.
148
+ - **Task 2 make-image**:
142
149
 
143
- When you run zrb, it automatically searches for a file named `zrb_init.py` starting from your current directory and moving upward through its parent directories. This design lets you set up common automation tasks in a central location—like placing a `zrb_init.py` in your home directory (`/home/<your-user>/zrb_init.py`)—so that your tasks are available across all your projects.
150
+ Executes a command that converts the PlantUML script into a PNG image (e.g., `state diagram.png`). This task will run only after the script has been generated.
144
151
 
145
- Now, go to your project and create a state diagram:
146
152
 
147
- ```bash
148
- git clone git@github.com:jjinux/gotetris.git
149
- cd gotetris
150
- zrb uml make-image --diagram "state diagram"
151
- ```
153
+ ## 2. Run Your Tasks
152
154
 
153
- You can also invoke the task without specifying parameter.
155
+ After setting up your tasks, you can execute them from any project. For example:
154
156
 
155
- ```bash
156
- zrb uml make-image
157
- ```
157
+ - Clone/Create a Project:
158
158
 
159
- Once you do so, Zrb will ask you to provide the diagram type.
159
+ ```bash
160
+ git clone git@github.com:jjinux/gotetris.git
161
+ cd gotetris
162
+ ```
160
163
 
161
- ```
162
- diagram [state diagram]:
163
- ```
164
+ - Create a state diagram:
165
+
166
+ ```bash
167
+ zrb uml make-image --diagram "state diagram"
168
+ ```
169
+
170
+ - Or use the interactive mode:
164
171
 
165
- You can just press enter if you want to use the default value (i.e., in this case `state diagram`).
172
+ ```bash
173
+ zrb uml make-image
174
+ ```
166
175
 
167
- Finally, you can also serve the tasks via a Web UI interface by invoking the following command:
176
+ Zrb will prompt:
177
+
178
+ ```bash
179
+ diagram [state diagram]:
180
+ ```
181
+
182
+ Press **Enter** to use the default value
183
+
184
+ ![State Diagram](https://raw.githubusercontent.com/state-alchemists/zrb/main/_images/state-diagram.png)
185
+
186
+
187
+ ## 3. Try Out the Web UI
188
+
189
+ You can also serve your tasks through a user-friendly web interface:
168
190
 
169
191
  ```bash
170
192
  zrb server start
171
193
  ```
172
194
 
173
- You will have a nice web interface running on `http://localhost:12123`
195
+ Then open your browser and visit `http://localhost:21213`
174
196
 
175
197
  ![Zrb Web UI](https://raw.githubusercontent.com/state-alchemists/zrb/main/_images/zrb-web-ui.png)
176
198
 
177
- Now, let's see how things work in detail. First, Zrb generates a `state diagram.uml` in your current directory, it then transform the UML script into a PNG image `state diagram.png`.
178
-
179
- ![State Diagram](https://raw.githubusercontent.com/state-alchemists/zrb/main/_images/state-diagram.png)
180
-
181
199
 
182
200
  # 🎥 Demo & Documentation
183
201
 
184
202
  - **Step by step guide:** [Getting started with Zrb](https://github.com/state-alchemists/zrb/blob/main/docs/recipes/getting-started/README.md).
185
203
  - **Full documentation:** [Zrb Documentation](https://github.com/state-alchemists/zrb/blob/main/docs/README.md)
186
- - **Video demo:** [![Video Title](https://img.youtube.com/vi/W7dgk96l__o/0.jpg)](https://www.youtube.com/watch?v=W7dgk96l__o)
204
+ - **Video demo:**
205
+
206
+ [![Video Title](https://img.youtube.com/vi/W7dgk96l__o/0.jpg)](https://www.youtube.com/watch?v=W7dgk96l__o)
187
207
 
188
208
 
189
209
  # 🤝 Join the Community
@@ -9,7 +9,6 @@
9
9
 
10
10
  Zrb streamlines repetitive tasks, integrates with powerful LLMs, and lets you create custom automation workflows effortlessly. Whether you’re building CI/CD pipelines, code generators, or unique automation scripts, Zrb is designed to simplify and supercharge your workflow.
11
11
 
12
- ---
13
12
 
14
13
  ## 🚀 Why Zrb?
15
14
 
@@ -19,7 +18,6 @@ Zrb streamlines repetitive tasks, integrates with powerful LLMs, and lets you cr
19
18
  - **Developer-Friendly:** Quick to install and get started, with clear documentation and examples.
20
19
  - **Web Interface:** Run Zrb as a server to make tasks accessible even to non-technical team members.
21
20
 
22
- ---
23
21
 
24
22
  ## 🔥 Key Features
25
23
 
@@ -29,11 +27,8 @@ Zrb streamlines repetitive tasks, integrates with powerful LLMs, and lets you cr
29
27
  - **Flexible Input Handling:** Defaults, prompts, and command-line parameters to suit any workflow.
30
28
  - **Extensible & Open Source:** Contribute, customize, or extend Zrb to fit your unique needs.
31
29
 
32
- ---
33
30
 
34
- ## 🛠️ Getting Started
35
-
36
- ### Quick Installation
31
+ # 🛠️ Installation
37
32
 
38
33
  Install Zrb via pip:
39
34
 
@@ -49,40 +44,48 @@ bash -c "$(curl -fsSL https://raw.githubusercontent.com/state-alchemists/zrb/mai
49
44
 
50
45
  ```
51
46
 
52
- ### Your First Task
47
+ # 🍲 Quick Start: Build Your First Automation Workflow
48
+
49
+ Zrb empowers you to create custom automation tasks using Python. This guide shows you how to define two simple tasks: one to generate a PlantUML script from your source code and another to convert that script into a PNG image.
50
+
51
+ ## 1. Create Your Task Definition File
53
52
 
54
- Create a file at `/home/<your-user-name>/zrb_init.py` with the following content:
53
+ Place a file named `zrb_init.py` in a directory that's accessible from your projects. Zrb will automatically search for this file by starting in your current directory and then moving upward (i.e., checking parent directories) until it finds one. This means if you place your `zrb_init.py` in your home directory (e.g., `/home/<your-user-name>/zrb_init.py`), the tasks defined there will be available for any project.
55
54
 
55
+ Add the following content to your zrb_init.py:
56
56
 
57
57
  ```python
58
58
  import os
59
- from zrb import cli, llm_config, LLMTask, CmdTask, StrInput, Group
60
- from zrb.builtin.llm.tool.file import read_all_files, write_text_file
59
+ from zrb import cli, LLMTask, CmdTask, StrInput, Group
60
+ from zrb.builtin.llm.tool.file import (
61
+ read_text_file, list_files, write_text_file
62
+ )
61
63
 
62
64
  CURRENT_DIR = os.getcwd()
63
65
 
64
- # Make UML group
66
+ # Create a group for UML-related tasks
65
67
  uml_group = cli.add_group(Group(name="uml", description="UML related tasks"))
66
68
 
67
- # Generate UML script
69
+ # Task 1: Generate a PlantUML script from your source code
68
70
  make_uml_script = uml_group.add_task(
69
71
  LLMTask(
70
72
  name="make-script",
71
73
  description="Creating plantuml diagram based on source code in current directory",
72
74
  input=StrInput(name="diagram", default="state diagram"),
73
75
  message=(
74
- f"Read source code in {CURRENT_DIR}, "
76
+ f"Read all necessary files in {CURRENT_DIR}, "
75
77
  "make a {ctx.input.diagram} in plantuml format. "
76
78
  f"Write the script into {CURRENT_DIR}/{{ctx.input.diagram}}.uml"
77
79
  ),
78
80
  tools=[
79
- read_all_files,
81
+ list_files,
82
+ read_text_file,
80
83
  write_text_file,
81
84
  ],
82
85
  )
83
86
  )
84
87
 
85
- # Defining a Cmd Task to transform Plantuml script into a png image.
88
+ # Task 2: Convert the PlantUML script into a PNG image
86
89
  make_uml_image = uml_group.add_task(
87
90
  CmdTask(
88
91
  name="make-image",
@@ -93,62 +96,75 @@ make_uml_image = uml_group.add_task(
93
96
  )
94
97
  )
95
98
 
96
- # Making sure that make_png has make_uml as its dependency.
99
+ # Set up the dependency: the image task runs after the script is created
97
100
  make_uml_script >> make_uml_image
98
101
  ```
99
102
 
100
- You have just define two automation tasks.
103
+ **What This Does**
101
104
 
102
- The first one use LLM to read files in your current directory and create a `PlantUML script` on that directory.
105
+ - **Task 1 make-script**:
103
106
 
104
- The second task turn the PlantUML script into a `*.png` file. The second task depends on the first task and both of them are located under the same group.
107
+ Uses an LLM to read all files in your current directory and generate a PlantUML script (e.g., `state diagram.uml`).
105
108
 
106
- You can run the tasks by invoking `zrb uml make-script` or `zrb uml make-image` respectively.
109
+ - **Task 2 make-image**:
107
110
 
108
- When you run zrb, it automatically searches for a file named `zrb_init.py` starting from your current directory and moving upward through its parent directories. This design lets you set up common automation tasks in a central location—like placing a `zrb_init.py` in your home directory (`/home/<your-user>/zrb_init.py`)—so that your tasks are available across all your projects.
111
+ Executes a command that converts the PlantUML script into a PNG image (e.g., `state diagram.png`). This task will run only after the script has been generated.
109
112
 
110
- Now, go to your project and create a state diagram:
111
113
 
112
- ```bash
113
- git clone git@github.com:jjinux/gotetris.git
114
- cd gotetris
115
- zrb uml make-image --diagram "state diagram"
116
- ```
114
+ ## 2. Run Your Tasks
117
115
 
118
- You can also invoke the task without specifying parameter.
116
+ After setting up your tasks, you can execute them from any project. For example:
119
117
 
120
- ```bash
121
- zrb uml make-image
122
- ```
118
+ - Clone/Create a Project:
123
119
 
124
- Once you do so, Zrb will ask you to provide the diagram type.
120
+ ```bash
121
+ git clone git@github.com:jjinux/gotetris.git
122
+ cd gotetris
123
+ ```
125
124
 
126
- ```
127
- diagram [state diagram]:
128
- ```
125
+ - Create a state diagram:
126
+
127
+ ```bash
128
+ zrb uml make-image --diagram "state diagram"
129
+ ```
130
+
131
+ - Or use the interactive mode:
129
132
 
130
- You can just press enter if you want to use the default value (i.e., in this case `state diagram`).
133
+ ```bash
134
+ zrb uml make-image
135
+ ```
131
136
 
132
- Finally, you can also serve the tasks via a Web UI interface by invoking the following command:
137
+ Zrb will prompt:
138
+
139
+ ```bash
140
+ diagram [state diagram]:
141
+ ```
142
+
143
+ Press **Enter** to use the default value
144
+
145
+ ![State Diagram](https://raw.githubusercontent.com/state-alchemists/zrb/main/_images/state-diagram.png)
146
+
147
+
148
+ ## 3. Try Out the Web UI
149
+
150
+ You can also serve your tasks through a user-friendly web interface:
133
151
 
134
152
  ```bash
135
153
  zrb server start
136
154
  ```
137
155
 
138
- You will have a nice web interface running on `http://localhost:12123`
156
+ Then open your browser and visit `http://localhost:21213`
139
157
 
140
158
  ![Zrb Web UI](https://raw.githubusercontent.com/state-alchemists/zrb/main/_images/zrb-web-ui.png)
141
159
 
142
- Now, let's see how things work in detail. First, Zrb generates a `state diagram.uml` in your current directory, it then transform the UML script into a PNG image `state diagram.png`.
143
-
144
- ![State Diagram](https://raw.githubusercontent.com/state-alchemists/zrb/main/_images/state-diagram.png)
145
-
146
160
 
147
161
  # 🎥 Demo & Documentation
148
162
 
149
163
  - **Step by step guide:** [Getting started with Zrb](https://github.com/state-alchemists/zrb/blob/main/docs/recipes/getting-started/README.md).
150
164
  - **Full documentation:** [Zrb Documentation](https://github.com/state-alchemists/zrb/blob/main/docs/README.md)
151
- - **Video demo:** [![Video Title](https://img.youtube.com/vi/W7dgk96l__o/0.jpg)](https://www.youtube.com/watch?v=W7dgk96l__o)
165
+ - **Video demo:**
166
+
167
+ [![Video Title](https://img.youtube.com/vi/W7dgk96l__o/0.jpg)](https://www.youtube.com/watch?v=W7dgk96l__o)
152
168
 
153
169
 
154
170
  # 🤝 Join the Community
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.4.1"
3
+ version = "1.4.3"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -52,11 +52,15 @@ python-jose = {extras = ["cryptography"], version = "^3.4.0"}
52
52
  ulid-py = "^1.1.0"
53
53
  pydantic-ai = "^0.0.42"
54
54
  fastembed = "^0.5.1"
55
+ openai = {version = "^1.10.0", optional = true}
56
+ playwright = {version = "^1.43.0", optional = true}
55
57
  psutil = "^6.1.1"
56
58
 
57
59
  [tool.poetry.extras]
58
60
  # poetry install -E rag
59
- rag = ["chromadb", "pdfplumber"]
61
+ rag = ["chromadb", "pdfplumber", "openai"]
62
+ playwright = ["playwright"]
63
+ all = ["chromadb", "pdfplumber", "openai", "playwright"]
60
64
 
61
65
  [tool.poetry.group.dev.dependencies]
62
66
  alembic = "^1.14.0" # FastApp dependencies
@@ -22,7 +22,6 @@ from zrb.config import (
22
22
  LLM_ALLOW_ACCESS_LOCAL_FILE,
23
23
  LLM_ALLOW_ACCESS_SHELL,
24
24
  LLM_HISTORY_DIR,
25
- LLM_SYSTEM_PROMPT,
26
25
  SERP_API_KEY,
27
26
  )
28
27
  from zrb.context.any_shared_context import AnySharedContext
@@ -119,7 +118,7 @@ llm_chat: LLMTask = llm_group.add_task(
119
118
  "system-prompt",
120
119
  description="System prompt",
121
120
  prompt="System prompt",
122
- default=LLM_SYSTEM_PROMPT,
121
+ default="",
123
122
  allow_positional_parsing=False,
124
123
  always_prompt=False,
125
124
  ),
@@ -141,17 +140,19 @@ llm_chat: LLMTask = llm_group.add_task(
141
140
  always_prompt=False,
142
141
  ),
143
142
  ],
144
- model=lambda ctx: None if ctx.input.model == "" else ctx.input.model,
143
+ model=lambda ctx: None if ctx.input.model.strip() == "" else ctx.input.model,
145
144
  model_base_url=lambda ctx: (
146
- None if ctx.input.base_url == "" else ctx.input.base_url
145
+ None if ctx.input.base_url.strip() == "" else ctx.input.base_url
147
146
  ),
148
147
  model_api_key=lambda ctx: (
149
- None if ctx.input.api_key == "" else ctx.input.api_key
148
+ None if ctx.input.api_key.strip() == "" else ctx.input.api_key
150
149
  ),
151
150
  conversation_history_reader=_read_chat_conversation,
152
151
  conversation_history_writer=_write_chat_conversation,
153
152
  description="Chat with LLM",
154
- system_prompt="{ctx.input.system_prompt}",
153
+ system_prompt=lambda ctx: (
154
+ None if ctx.input.system_prompt.strip() == "" else ctx.input.system_prompt
155
+ ),
155
156
  message="{ctx.input.message}",
156
157
  retries=0,
157
158
  ),
@@ -5,7 +5,7 @@ from typing import Annotated, Literal
5
5
  def get_current_location() -> (
6
6
  Annotated[str, "JSON string representing latitude and longitude"]
7
7
  ): # noqa
8
- """Get the user's current location."""
8
+ """Get the user's current location. This function take no argument."""
9
9
  import requests
10
10
 
11
11
  return json.dumps(requests.get("http://ip-api.com/json?fields=lat,lon").json())
@@ -93,6 +93,7 @@ def list_files(
93
93
  """List all files in a directory that match any of the included glob patterns
94
94
  and do not reside in any directory matching an excluded pattern.
95
95
  Patterns are evaluated using glob-style matching.
96
+ included_patterns and excluded_patterns already has sane default values.
96
97
  """
97
98
  all_files: list[str] = []
98
99
  for root, dirs, files in os.walk(directory):
@@ -127,12 +128,12 @@ def _should_exclude(full_path: str, excluded_patterns: list[str]) -> bool:
127
128
 
128
129
 
129
130
  def read_text_file(file: str) -> str:
130
- """Read a text file"""
131
+ """Read a text file and return a string containing the file content."""
131
132
  return read_file(os.path.abspath(file))
132
133
 
133
134
 
134
135
  def write_text_file(file: str, content: str):
135
- """Write a text file"""
136
+ """Write content to a text file"""
136
137
  return write_file(os.path.abspath(file), content)
137
138
 
138
139
 
@@ -144,6 +145,7 @@ def read_all_files(
144
145
  """Read all files in a directory that match any of the included glob patterns
145
146
  and do not match any of the excluded glob patterns.
146
147
  Patterns are evaluated using glob-style matching.
148
+ included_patterns and excluded_patterns already has sane default values.
147
149
  """
148
150
  files = list_files(directory, included_patterns, excluded_patterns)
149
151
  for index, file in enumerate(files):
@@ -9,6 +9,8 @@ import ulid
9
9
 
10
10
  from zrb.config import (
11
11
  RAG_CHUNK_SIZE,
12
+ RAG_EMBEDDING_API_KEY,
13
+ RAG_EMBEDDING_BASE_URL,
12
14
  RAG_EMBEDDING_MODEL,
13
15
  RAG_MAX_RESULT_COUNT,
14
16
  RAG_OVERLAP,
@@ -35,24 +37,34 @@ def create_rag_from_directory(
35
37
  tool_name: str,
36
38
  tool_description: str,
37
39
  document_dir_path: str = "./documents",
38
- model: str = RAG_EMBEDDING_MODEL,
39
40
  vector_db_path: str = "./chroma",
40
41
  vector_db_collection: str = "documents",
41
42
  chunk_size: int = RAG_CHUNK_SIZE,
42
43
  overlap: int = RAG_OVERLAP,
43
44
  max_result_count: int = RAG_MAX_RESULT_COUNT,
44
45
  file_reader: list[RAGFileReader] = [],
46
+ openai_api_key: str = RAG_EMBEDDING_API_KEY,
47
+ openai_base_url: str = RAG_EMBEDDING_BASE_URL,
48
+ openai_embedding_model: str = RAG_EMBEDDING_MODEL,
45
49
  ):
46
50
  async def retrieve(query: str) -> str:
47
51
  from chromadb import PersistentClient
48
52
  from chromadb.config import Settings
49
- from fastembed import TextEmbedding
50
-
51
- embedding_model = TextEmbedding(model_name=model)
52
- client = PersistentClient(
53
+ from openai import OpenAI
54
+
55
+ # Initialize OpenAI client with custom URL if provided
56
+ client_args = {}
57
+ if openai_api_key:
58
+ client_args["api_key"] = openai_api_key
59
+ if openai_base_url:
60
+ client_args["base_url"] = openai_base_url
61
+ # Initialize OpenAI client for embeddings
62
+ openai_client = OpenAI(**client_args)
63
+ # Initialize ChromaDB client
64
+ chroma_client = PersistentClient(
53
65
  path=vector_db_path, settings=Settings(allow_reset=True)
54
66
  )
55
- collection = client.get_or_create_collection(vector_db_collection)
67
+ collection = chroma_client.get_or_create_collection(vector_db_collection)
56
68
  # Track file changes using a hash-based approach
57
69
  hash_file_path = os.path.join(vector_db_path, "file_hashes.json")
58
70
  previous_hashes = _load_hashes(hash_file_path)
@@ -89,8 +101,11 @@ def create_rag_from_directory(
89
101
  ),
90
102
  file=sys.stderr,
91
103
  )
92
- embedding_result = list(embedding_model.embed([chunk]))
93
- vector = embedding_result[0]
104
+ # Get embeddings using OpenAI
105
+ embedding_response = openai_client.embeddings.create(
106
+ input=chunk, model=openai_embedding_model
107
+ )
108
+ vector = embedding_response.data[0].embedding
94
109
  collection.upsert(
95
110
  ids=[chunk_id],
96
111
  embeddings=[vector],
@@ -113,8 +128,11 @@ def create_rag_from_directory(
113
128
  )
114
129
  # Vectorize query and get related document chunks
115
130
  print(stylize_faint("Vectorizing query"), file=sys.stderr)
116
- embedding_result = list(embedding_model.embed([query]))
117
- query_vector = embedding_result[0]
131
+ # Get embeddings using OpenAI
132
+ embedding_response = openai_client.embeddings.create(
133
+ input=query, model=openai_embedding_model
134
+ )
135
+ query_vector = embedding_response.data[0].embedding
118
136
  print(stylize_faint("Searching documents"), file=sys.stderr)
119
137
  results = collection.query(
120
138
  query_embeddings=query_vector,