zrb 1.0.0b3__tar.gz → 1.0.0b5__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 (310) hide show
  1. {zrb-1.0.0b3 → zrb-1.0.0b5}/PKG-INFO +2 -2
  2. {zrb-1.0.0b3 → zrb-1.0.0b5}/pyproject.toml +2 -2
  3. zrb-1.0.0b5/src/zrb/builtin/llm/llm_chat.py +127 -0
  4. zrb-1.0.0b5/src/zrb/builtin/llm/previous-session.js +21 -0
  5. zrb-1.0.0b5/src/zrb/builtin/llm/tool/api.py +29 -0
  6. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/todo.py +1 -0
  7. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/config.py +13 -15
  8. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/input/any_input.py +5 -0
  9. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/input/base_input.py +6 -0
  10. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/input/bool_input.py +2 -0
  11. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/input/float_input.py +2 -0
  12. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/input/int_input.py +2 -0
  13. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/input/option_input.py +2 -0
  14. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/input/password_input.py +2 -0
  15. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/input/text_input.py +2 -0
  16. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/common_util.py +1 -1
  17. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/node_page/task/view.html +1 -1
  18. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/static/resources/session/current-session.js +10 -7
  19. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/static/resources/session/event.js +14 -2
  20. zrb-1.0.0b5/src/zrb/task/llm_task.py +201 -0
  21. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/llm/tool.py +33 -5
  22. zrb-1.0.0b3/src/zrb/builtin/llm/llm_chat.py +0 -49
  23. zrb-1.0.0b3/src/zrb/task/llm_task.py +0 -331
  24. {zrb-1.0.0b3 → zrb-1.0.0b5}/README.md +0 -0
  25. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/__init__.py +0 -0
  26. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/__main__.py +0 -0
  27. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/attr/__init__.py +0 -0
  28. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/attr/type.py +0 -0
  29. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/__init__.py +0 -0
  30. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/base64.py +0 -0
  31. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/git.py +0 -0
  32. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/git_subtree.py +0 -0
  33. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/group.py +0 -0
  34. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/llm/tool/cli.py +0 -0
  35. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/llm/tool/rag.py +0 -0
  36. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/llm/tool/web.py +0 -0
  37. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/md5.py +0 -0
  38. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/__init__.py +0 -0
  39. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  40. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
  41. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  42. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  43. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  44. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  45. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
  46. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  47. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
  48. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  49. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service.py +0 -0
  50. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service_factory.py +0 -0
  51. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_db_repository.py +0 -0
  52. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository.py +0 -0
  53. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository_factory.py +0 -0
  54. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
  55. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  56. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  57. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  58. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  59. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  60. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
  61. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  62. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
  63. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
  64. {zrb-1.0.0b3 → zrb-1.0.0b5}/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
  65. {zrb-1.0.0b3 → zrb-1.0.0b5}/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
  66. {zrb-1.0.0b3 → zrb-1.0.0b5}/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
  67. {zrb-1.0.0b3 → zrb-1.0.0b5}/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
  68. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
  69. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
  70. {zrb-1.0.0b3 → zrb-1.0.0b5}/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
  71. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
  72. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
  73. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
  74. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
  75. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  76. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  77. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  78. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  79. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  80. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  81. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  82. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  83. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  84. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  85. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  86. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  87. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  88. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  89. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  90. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  91. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  92. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  93. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  94. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/migrate.py +0 -0
  95. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  96. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  97. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  98. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  99. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  100. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  101. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  102. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  103. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  104. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
  105. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  106. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  107. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  108. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  109. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
  110. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
  111. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
  112. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
  113. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
  114. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  115. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
  116. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
  117. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
  118. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
  119. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
  120. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  121. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
  122. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
  123. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
  124. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
  125. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
  126. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  127. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  128. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  129. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  130. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  131. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  132. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  133. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  134. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  135. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  136. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  137. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
  138. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
  139. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  140. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
  141. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
  142. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
  143. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
  144. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
  145. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
  146. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
  147. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
  148. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
  149. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
  150. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
  151. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
  152. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
  153. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
  154. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
  155. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
  156. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
  157. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
  158. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
  159. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
  160. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  161. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
  162. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  163. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  164. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  165. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/session.py +0 -0
  166. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  167. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  168. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  169. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/create/__init__.py +0 -0
  170. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  171. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  172. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/project/create/project_task.py +0 -0
  173. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/python.py +0 -0
  174. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/random.py +0 -0
  175. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  176. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  177. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/setup/common_input.py +0 -0
  178. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  179. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  180. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  181. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  182. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/setup/ubuntu.py +0 -0
  183. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/shell/__init__.py +0 -0
  184. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  185. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  186. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  187. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  188. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/callback/__init__.py +0 -0
  189. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/callback/any_callback.py +0 -0
  190. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/callback/callback.py +0 -0
  191. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/cmd/__init__.py +0 -0
  192. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/cmd/cmd_result.py +0 -0
  193. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/cmd/cmd_val.py +0 -0
  194. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/content_transformer/__init__.py +0 -0
  195. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  196. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/content_transformer/content_transformer.py +0 -0
  197. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/context/__init__.py +0 -0
  198. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/context/any_context.py +0 -0
  199. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/context/any_shared_context.py +0 -0
  200. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/context/context.py +0 -0
  201. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/context/shared_context.py +0 -0
  202. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/dot_dict/__init__.py +0 -0
  203. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/dot_dict/dot_dict.py +0 -0
  204. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/env/__init__.py +0 -0
  205. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/env/any_env.py +0 -0
  206. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/env/env.py +0 -0
  207. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/env/env_file.py +0 -0
  208. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/env/env_map.py +0 -0
  209. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/group/__init__.py +0 -0
  210. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/group/any_group.py +0 -0
  211. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/group/group.py +0 -0
  212. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/input/__init__.py +0 -0
  213. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/input/str_input.py +0 -0
  214. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/__init__.py +0 -0
  215. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/cli.py +0 -0
  216. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_app.py +0 -0
  217. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_config/config.py +0 -0
  218. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_config/config_factory.py +0 -0
  219. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/__init__.py +0 -0
  220. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/docs_route.py +0 -0
  221. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  222. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  223. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/error_page/view.html +0 -0
  224. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  225. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  226. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/home_page/view.html +0 -0
  227. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/login_api_route.py +0 -0
  228. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  229. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/login_page/view.html +0 -0
  230. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  231. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  232. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  233. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  234. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  235. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  236. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  237. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  238. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  239. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  240. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  241. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  242. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  243. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  244. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/static/resources/pico.min.css +0 -0
  245. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  246. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  247. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/static/static_route.py +0 -0
  248. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  249. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
  250. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_schema/session.py +0 -0
  251. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_schema/token.py +0 -0
  252. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_schema/user.py +0 -0
  253. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_util/cookie.py +0 -0
  254. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_util/html.py +0 -0
  255. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_util/token.py +0 -0
  256. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/runner/web_util/user.py +0 -0
  257. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/session/__init__.py +0 -0
  258. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/session/any_session.py +0 -0
  259. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/session/session.py +0 -0
  260. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/session_state_log/__init__.py +0 -0
  261. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/session_state_log/session_state_log.py +0 -0
  262. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/session_state_logger/__init__.py +0 -0
  263. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
  264. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
  265. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  266. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task/__init__.py +0 -0
  267. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task/any_task.py +0 -0
  268. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task/base_task.py +0 -0
  269. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task/base_trigger.py +0 -0
  270. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task/cmd_task.py +0 -0
  271. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task/http_check.py +0 -0
  272. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task/make_task.py +0 -0
  273. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task/rsync_task.py +0 -0
  274. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task/scaffolder.py +0 -0
  275. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task/scheduler.py +0 -0
  276. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task/task.py +0 -0
  277. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task/tcp_check.py +0 -0
  278. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task_status/__init__.py +0 -0
  279. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/task_status/task_status.py +0 -0
  280. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/__init__.py +0 -0
  281. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/attr.py +0 -0
  282. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/cli/__init__.py +0 -0
  283. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/cli/style.py +0 -0
  284. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/cli/subcommand.py +0 -0
  285. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/cmd/__init__.py +0 -0
  286. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/cmd/command.py +0 -0
  287. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/cmd/remote.py +0 -0
  288. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/codemod/__init__.py +0 -0
  289. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/codemod/append_code_to_class.py +0 -0
  290. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/codemod/append_code_to_function.py +0 -0
  291. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/codemod/append_code_to_method.py +0 -0
  292. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/codemod/append_key_to_dict.py +0 -0
  293. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/codemod/append_param_to_function_call.py +0 -0
  294. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/codemod/prepend_code_to_module.py +0 -0
  295. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/codemod/prepend_parent_to_class.py +0 -0
  296. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/codemod/prepend_property_to_class.py +0 -0
  297. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/cron.py +0 -0
  298. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/file.py +0 -0
  299. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/git.py +0 -0
  300. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/git_subtree.py +0 -0
  301. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/group.py +0 -0
  302. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/load.py +0 -0
  303. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/run.py +0 -0
  304. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/string/__init__.py +0 -0
  305. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/string/conversion.py +0 -0
  306. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/string/format.py +0 -0
  307. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/string/name.py +0 -0
  308. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/util/todo.py +0 -0
  309. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/xcom/__init__.py +0 -0
  310. {zrb-1.0.0b3 → zrb-1.0.0b5}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 1.0.0b3
3
+ Version: 1.0.0b5
4
4
  Summary: Your Automation Powerhouse
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
@@ -21,8 +21,8 @@ Requires-Dist: chromadb (>=0.5.20,<0.6.0) ; extra == "rag"
21
21
  Requires-Dist: fastapi[standard] (>=0.115.6,<0.116.0)
22
22
  Requires-Dist: isort (>=5.13.2,<5.14.0)
23
23
  Requires-Dist: libcst (>=1.5.0,<2.0.0)
24
- Requires-Dist: litellm (>=1.52.12,<2.0.0)
25
24
  Requires-Dist: pdfplumber (>=0.11.4,<0.12.0) ; extra == "rag"
25
+ Requires-Dist: pydantic-ai (>=0.0.19,<0.0.20)
26
26
  Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
27
27
  Requires-Dist: python-jose[cryptography] (>=3.3.0,<4.0.0)
28
28
  Requires-Dist: requests (>=2.32.3,<3.0.0)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.0.0b3"
3
+ version = "1.0.0b5"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -44,13 +44,13 @@ black = "~24.10.0"
44
44
  isort = "~5.13.2"
45
45
  requests = "^2.32.3"
46
46
  libcst = "^1.5.0"
47
- litellm = "^1.52.12"
48
47
  chromadb = {version = "^0.5.20", optional = true}
49
48
  pdfplumber = {version = "^0.11.4", optional = true}
50
49
  beautifulsoup4 = "^4.12.3"
51
50
  fastapi = {extras = ["standard"], version = "^0.115.6"}
52
51
  python-jose = {extras = ["cryptography"], version = "^3.3.0"}
53
52
  ulid-py = "^1.1.0"
53
+ pydantic-ai = "^0.0.19"
54
54
 
55
55
  [tool.poetry.extras]
56
56
  # poetry install -E rag
@@ -0,0 +1,127 @@
1
+ import json
2
+ import os
3
+ from typing import Any
4
+
5
+ from zrb.builtin.group import llm_group
6
+ from zrb.builtin.llm.tool.api import get_current_location, get_current_weather
7
+ from zrb.builtin.llm.tool.cli import run_shell_command
8
+ from zrb.builtin.llm.tool.web import open_web_route, query_internet
9
+ from zrb.config import (
10
+ LLM_ALLOW_ACCESS_INTERNET,
11
+ LLM_ALLOW_ACCESS_SHELL,
12
+ LLM_HISTORY_DIR,
13
+ LLM_MODEL,
14
+ LLM_SYSTEM_PROMPT,
15
+ )
16
+ from zrb.context.any_shared_context import AnySharedContext
17
+ from zrb.input.bool_input import BoolInput
18
+ from zrb.input.str_input import StrInput
19
+ from zrb.input.text_input import TextInput
20
+ from zrb.task.llm_task import LLMTask
21
+ from zrb.util.file import read_file, write_file
22
+ from zrb.util.string.conversion import to_pascal_case
23
+
24
+
25
+ class PreviousSessionInput(StrInput):
26
+
27
+ def to_html(self, ctx: AnySharedContext) -> str:
28
+ name = self.name
29
+ description = self.description
30
+ default = self.get_default_str(ctx)
31
+ script = read_file(
32
+ file_path=os.path.join(os.path.dirname(__file__), "previous-session.js"),
33
+ replace_map={
34
+ "CURRENT_INPUT_NAME": name,
35
+ "CurrentPascalInputName": to_pascal_case(name),
36
+ },
37
+ )
38
+ return "\n".join(
39
+ [
40
+ f'<input name="{name}" placeholder="{description}" value="{default}" />',
41
+ f"<script>{script}</script>",
42
+ ]
43
+ )
44
+
45
+
46
+ def _read_chat_conversation(ctx: AnySharedContext) -> list[dict[str, Any]]:
47
+ if ctx.input.start_new:
48
+ return []
49
+ previous_session_name = ctx.input.previous_session
50
+ if previous_session_name == "" or previous_session_name is None:
51
+ last_session_file_path = os.path.join(LLM_HISTORY_DIR, "last-session")
52
+ if os.path.isfile(last_session_file_path):
53
+ previous_session_name = read_file(last_session_file_path).strip()
54
+ conversation_file_path = os.path.join(
55
+ LLM_HISTORY_DIR, f"{previous_session_name}.json"
56
+ )
57
+ if not os.path.isfile(conversation_file_path):
58
+ return []
59
+ return json.loads(read_file(conversation_file_path))
60
+
61
+
62
+ def _write_chat_conversation(
63
+ ctx: AnySharedContext, conversations: list[dict[str, Any]]
64
+ ):
65
+ os.makedirs(LLM_HISTORY_DIR, exist_ok=True)
66
+ current_session_name = ctx.session.name
67
+ conversation_file_path = os.path.join(
68
+ LLM_HISTORY_DIR, f"{current_session_name}.json"
69
+ )
70
+ write_file(conversation_file_path, json.dumps(conversations, indent=2))
71
+ last_session_file_path = os.path.join(LLM_HISTORY_DIR, "last-session")
72
+ write_file(last_session_file_path, current_session_name)
73
+
74
+
75
+ llm_chat: LLMTask = llm_group.add_task(
76
+ LLMTask(
77
+ name="llm-chat",
78
+ input=[
79
+ StrInput(
80
+ "model",
81
+ description="LLM Model",
82
+ prompt="LLM Model",
83
+ default_str=LLM_MODEL,
84
+ allow_positional_parsing=False,
85
+ ),
86
+ TextInput(
87
+ "system-prompt",
88
+ description="System prompt",
89
+ prompt="System prompt",
90
+ default_str=LLM_SYSTEM_PROMPT,
91
+ allow_positional_parsing=False,
92
+ ),
93
+ BoolInput(
94
+ "start-new",
95
+ description="Start new conversation (LLM will forget everything)",
96
+ prompt="Start new conversation (LLM will forget everything)",
97
+ default_str="false",
98
+ allow_positional_parsing=False,
99
+ ),
100
+ TextInput("message", description="User message", prompt="Your message"),
101
+ PreviousSessionInput(
102
+ "previous-session",
103
+ description="Previous conversation session",
104
+ prompt="Previous conversation session (can be empty)",
105
+ allow_positional_parsing=False,
106
+ allow_empty=True,
107
+ ),
108
+ ],
109
+ conversation_history_reader=_read_chat_conversation,
110
+ conversation_history_writer=_write_chat_conversation,
111
+ description="Chat with LLM",
112
+ model="{ctx.input.model}",
113
+ system_prompt="{ctx.input['system-prompt']}",
114
+ message="{ctx.input.message}",
115
+ retries=0,
116
+ ),
117
+ alias="chat",
118
+ )
119
+
120
+ if LLM_ALLOW_ACCESS_SHELL:
121
+ llm_chat.add_tool(run_shell_command)
122
+
123
+ if LLM_ALLOW_ACCESS_INTERNET:
124
+ llm_chat.add_tool(open_web_route)
125
+ llm_chat.add_tool(query_internet)
126
+ llm_chat.add_tool(get_current_location)
127
+ llm_chat.add_tool(get_current_weather)
@@ -0,0 +1,21 @@
1
+ async function updatePreviousSession(event) {
2
+ const currentInput = event.target;
3
+ if (currentInput.name === "CURRENT_INPUT_NAME") {
4
+ return
5
+ }
6
+ const previousSessionInput = submitTaskForm.querySelector('[name="CURRENT_INPUT_NAME"]');
7
+ if (previousSessionInput) {
8
+ const currentSessionName = cfg.SESSION_NAME
9
+ previousSessionInput.value = currentSessionName;
10
+ }
11
+ }
12
+
13
+ document.getElementById("submit-task-form").querySelectorAll("input[name], textarea[name]").forEach((element) => {
14
+ element.addEventListener("input", updatePreviousSession);
15
+ element.addEventListener("keyup", updatePreviousSession);
16
+ });
17
+
18
+ document.getElementById("submit-task-form").querySelectorAll("select[name]").forEach((element) => {
19
+ element.addEventListener("change", updatePreviousSession);
20
+ });
21
+
@@ -0,0 +1,29 @@
1
+ import json
2
+ from typing import Annotated, Literal
3
+
4
+ import requests
5
+
6
+
7
+ def get_current_location() -> (
8
+ Annotated[str, "JSON string representing latitude and longitude"]
9
+ ): # noqa
10
+ """Get the user's current location."""
11
+ return json.dumps(requests.get("http://ip-api.com/json?fields=lat,lon").json())
12
+
13
+
14
+ def get_current_weather(
15
+ latitude: float,
16
+ longitude: float,
17
+ temperature_unit: Literal["celsius", "fahrenheit"],
18
+ ) -> str:
19
+ """Get the current weather in a given location."""
20
+ resp = requests.get(
21
+ "https://api.open-meteo.com/v1/forecast",
22
+ params={
23
+ "latitude": latitude,
24
+ "longitude": longitude,
25
+ "temperature_unit": temperature_unit,
26
+ "current_weather": True,
27
+ },
28
+ )
29
+ return json.dumps(resp.json())
@@ -294,6 +294,7 @@ def _get_default_stop_work_time_str() -> str:
294
294
  description="Todo.txt content",
295
295
  prompt="Todo.txt content (will override existing)",
296
296
  default_str=lambda _: _get_todo_txt_content(),
297
+ allow_positional_parsing=False,
297
298
  ),
298
299
  ],
299
300
  description="📝 Edit todo",
@@ -78,25 +78,23 @@ WEB_AUTH_REFRESH_TOKEN_EXPIRE_MINUTES = int(
78
78
  )
79
79
  LLM_MODEL = os.getenv("ZRB_LLM_MODEL", "ollama_chat/llama3.1")
80
80
 
81
- _DEFAULT_PROMPT = """
82
- You are a reliable assistant focused on providing accurate, helpful, and factual information.
83
-
84
- Key guidelines:
85
- 1. Prioritize correctness and clarity.
86
- 2. Avoid guessing—clearly state if more information is needed.
87
- 3. Distinguish facts from opinions.
88
- 4. Use phrases like "to the best of my knowledge" when appropriate.
89
-
90
- If unsure or lacking current data, inform the user and suggest verification.
91
- Accuracy always takes precedence over completeness.
92
- """.strip()
81
+ _DEFAULT_PROMPT = (
82
+ "You are a helpful AI assistant capable of using various tools to answer user queries. When solving a problem:\n"
83
+ "1. Carefully analyze the user's request and identify what information is needed to provide a complete answer.\n"
84
+ "2. Determine which available tools can help you gather the necessary information.\n"
85
+ "3. Call tools strategically and in a logical sequence to collect required data.\n"
86
+ "4. If a tool provides incomplete information, intelligently decide which additional tool or approach to use.\n"
87
+ "5. Always aim to provide the most accurate and helpful response possible."
88
+ )
93
89
  LLM_SYSTEM_PROMPT = os.getenv("ZRB_LLM_SYSTEM_PROMPT", _DEFAULT_PROMPT)
90
+ LLM_HISTORY_DIR = os.getenv(
91
+ "ZRB_LLM_HISTORY_DIR", os.path.expanduser(os.path.join("~", ".zrb-llm-history"))
92
+ )
94
93
  LLM_HISTORY_FILE = os.getenv(
95
- "ZRB_LLM_HISTORY_FILE",
96
- os.path.expanduser(os.path.join("~", ".zrb-llm-history.json")),
94
+ "ZRB_LLM_HISTORY_FILE", os.path.join(LLM_HISTORY_DIR, "history.json")
97
95
  )
98
96
  LLM_ALLOW_ACCESS_SHELL = to_boolean(os.getenv("ZRB_LLM_ACCESS_FILE", "1"))
99
- LLM_ALLOW_ACCESS_WEB = to_boolean(os.getenv("ZRB_LLM_ACCESS_WEB", "1"))
97
+ LLM_ALLOW_ACCESS_INTERNET = to_boolean(os.getenv("ZRB_LLM_ACCESS_INTERNET", "1"))
100
98
  RAG_EMBEDDING_MODEL = os.getenv("ZRB_RAG_EMBEDDING_MODEL", "ollama/nomic-embed-text")
101
99
  RAG_CHUNK_SIZE = int(os.getenv("ZRB_RAG_CHUNK_SIZE", "1024"))
102
100
  RAG_OVERLAP = int(os.getenv("ZRB_RAG_OVERLAP", "128"))
@@ -19,6 +19,11 @@ class AnyInput(ABC):
19
19
  def prompt_message(self) -> str:
20
20
  pass
21
21
 
22
+ @property
23
+ @abstractmethod
24
+ def allow_positional_parsing(self) -> bool:
25
+ pass
26
+
22
27
  @abstractmethod
23
28
  def to_html(self, shared_ctx: AnySharedContext) -> str:
24
29
  pass
@@ -16,6 +16,7 @@ class BaseInput(AnyInput):
16
16
  default_str: StrAttr = "",
17
17
  auto_render: bool = True,
18
18
  allow_empty: bool = False,
19
+ allow_positional_parsing: bool = True,
19
20
  ):
20
21
  self._name = name
21
22
  self._description = description
@@ -23,6 +24,7 @@ class BaseInput(AnyInput):
23
24
  self._default_str = default_str
24
25
  self._auto_render = auto_render
25
26
  self._allow_empty = allow_empty
27
+ self._allow_positional_parsing = allow_positional_parsing
26
28
 
27
29
  def __repr__(self):
28
30
  return f"<{self.__class__.__name__} name={self._name}>"
@@ -39,6 +41,10 @@ class BaseInput(AnyInput):
39
41
  def prompt_message(self) -> str:
40
42
  return self._prompt if self._prompt is not None else self.name
41
43
 
44
+ @property
45
+ def allow_positional_parsing(self) -> bool:
46
+ return self._allow_positional_parsing
47
+
42
48
  def to_html(self, ctx: AnySharedContext) -> str:
43
49
  name = self.name
44
50
  description = self.description
@@ -13,6 +13,7 @@ class BoolInput(BaseInput):
13
13
  default_str: StrAttr = "False",
14
14
  auto_render: bool = True,
15
15
  allow_empty: bool = False,
16
+ allow_positional_parsing: bool = True,
16
17
  ):
17
18
  super().__init__(
18
19
  name=name,
@@ -21,6 +22,7 @@ class BoolInput(BaseInput):
21
22
  default_str=default_str,
22
23
  auto_render=auto_render,
23
24
  allow_empty=allow_empty,
25
+ allow_positional_parsing=allow_positional_parsing,
24
26
  )
25
27
 
26
28
  def to_html(self, ctx: AnySharedContext) -> str:
@@ -12,6 +12,7 @@ class FloatInput(BaseInput):
12
12
  default_str: StrAttr = "0.0",
13
13
  auto_render: bool = True,
14
14
  allow_empty: bool = False,
15
+ allow_positional_parsing: bool = True,
15
16
  ):
16
17
  super().__init__(
17
18
  name=name,
@@ -20,6 +21,7 @@ class FloatInput(BaseInput):
20
21
  default_str=default_str,
21
22
  auto_render=auto_render,
22
23
  allow_empty=allow_empty,
24
+ allow_positional_parsing=allow_positional_parsing,
23
25
  )
24
26
 
25
27
  def to_html(self, ctx: AnySharedContext) -> str:
@@ -12,6 +12,7 @@ class IntInput(BaseInput):
12
12
  default_str: StrAttr = "0",
13
13
  auto_render: bool = True,
14
14
  allow_empty: bool = False,
15
+ allow_positional_parsing: bool = True,
15
16
  ):
16
17
  super().__init__(
17
18
  name=name,
@@ -20,6 +21,7 @@ class IntInput(BaseInput):
20
21
  default_str=default_str,
21
22
  auto_render=auto_render,
22
23
  allow_empty=allow_empty,
24
+ allow_positional_parsing=allow_positional_parsing,
23
25
  )
24
26
 
25
27
  def to_html(self, ctx: AnySharedContext) -> str:
@@ -14,6 +14,7 @@ class OptionInput(BaseInput):
14
14
  default_str: StrAttr = "",
15
15
  auto_render: bool = True,
16
16
  allow_empty: bool = False,
17
+ allow_positional_parsing: bool = True,
17
18
  ):
18
19
  super().__init__(
19
20
  name=name,
@@ -22,6 +23,7 @@ class OptionInput(BaseInput):
22
23
  default_str=default_str,
23
24
  auto_render=auto_render,
24
25
  allow_empty=allow_empty,
26
+ allow_positional_parsing=allow_positional_parsing,
25
27
  )
26
28
  self._options = options
27
29
 
@@ -14,6 +14,7 @@ class PasswordInput(BaseInput):
14
14
  default_str: str | Callable[[AnySharedContext], str] = "",
15
15
  auto_render: bool = True,
16
16
  allow_empty: bool = False,
17
+ allow_positional_parsing: bool = True,
17
18
  ):
18
19
  super().__init__(
19
20
  name=name,
@@ -22,6 +23,7 @@ class PasswordInput(BaseInput):
22
23
  default_str=default_str,
23
24
  auto_render=auto_render,
24
25
  allow_empty=allow_empty,
26
+ allow_positional_parsing=allow_positional_parsing,
25
27
  )
26
28
  self._is_secret = True
27
29
 
@@ -18,6 +18,7 @@ class TextInput(BaseInput):
18
18
  default_str: str | Callable[[AnySharedContext], str] = "",
19
19
  auto_render: bool = True,
20
20
  allow_empty: bool = False,
21
+ allow_positional_parsing: bool = True,
21
22
  editor: str = DEFAULT_EDITOR,
22
23
  extension: str = ".txt",
23
24
  comment_start: str | None = None,
@@ -30,6 +31,7 @@ class TextInput(BaseInput):
30
31
  default_str=default_str,
31
32
  auto_render=auto_render,
32
33
  allow_empty=allow_empty,
34
+ allow_positional_parsing=allow_positional_parsing,
33
35
  )
34
36
  self._editor = editor
35
37
  self._extension = extension
@@ -15,7 +15,7 @@ def get_run_kwargs(
15
15
  if task_input.name in str_kwargs:
16
16
  # Update shared context for next input default value
17
17
  task_input.update_shared_context(shared_ctx, str_kwargs[task_input.name])
18
- elif arg_index < len(args):
18
+ elif arg_index < len(args) and task_input.allow_positional_parsing:
19
19
  run_kwargs[task_input.name] = args[arg_index]
20
20
  # Update shared context for next input default value
21
21
  task_input.update_shared_context(shared_ctx, run_kwargs[task_input.name])
@@ -63,7 +63,7 @@
63
63
  <article>
64
64
  <form id="submit-task-form" onsubmit="submitNewSessionForm(event)">
65
65
  {task_inputs}
66
- <button>🚀 Run</button>
66
+ <button>🚀 Run New Session</button>
67
67
  </form>
68
68
  </article>
69
69
  <article>
@@ -4,18 +4,22 @@ const CURRENT_SESSION = {
4
4
  const logTextarea = document.getElementById("log-textarea");
5
5
  const submitTaskForm = document.getElementById("submit-task-form");
6
6
  let isFinished = false;
7
+ let isInputUpdated = false;
7
8
  let errorCount = 0;
8
9
  while (!isFinished) {
9
10
  try {
10
11
  const data = await this.getCurrentSession();
11
12
  // update inputs
12
- const dataInputs = data.input;
13
- for (const inputName in dataInputs) {
14
- const inputValue = dataInputs[inputName];
15
- const input = submitTaskForm.querySelector(`[name="${inputName}"]`);
16
- if (input) {
17
- input.value = inputValue;
13
+ if (!isInputUpdated) {
14
+ const dataInputs = data.input;
15
+ for (const inputName in dataInputs) {
16
+ const inputValue = dataInputs[inputName];
17
+ const input = submitTaskForm.querySelector(`[name="${inputName}"]`);
18
+ if (input) {
19
+ input.value = inputValue;
20
+ }
18
21
  }
22
+ isInputUpdated = true;
19
23
  }
20
24
  resultLineCount = data.final_result.split("\n").length;
21
25
  resultTextarea.rows = resultLineCount <= 5 ? resultLineCount : 5;
@@ -51,7 +55,6 @@ const CURRENT_SESSION = {
51
55
  "Content-Type": "application/json"
52
56
  },
53
57
  });
54
- console.log("RESPONSE", response);
55
58
  return await response.json();
56
59
  } catch (error) {
57
60
  console.error("Error:", error);
@@ -20,9 +20,9 @@ window.addEventListener("load", async function () {
20
20
 
21
21
 
22
22
  const submitTaskForm = document.getElementById("submit-task-form");
23
- submitTaskForm.addEventListener("change", async function(event) {
23
+ async function handleInputUpdate(event) {
24
24
  const currentInput = event.target;
25
- const inputs = Array.from(submitTaskForm.querySelectorAll("input[name], textarea[name]"));
25
+ const inputs = Array.from(submitTaskForm.querySelectorAll("input[name], textarea[name], select[name]"));
26
26
  const inputMap = {};
27
27
  const fixedInputNames = [];
28
28
  for (const input of inputs) {
@@ -56,6 +56,10 @@ submitTaskForm.addEventListener("change", async function(event) {
56
56
  if (input === currentInput) {
57
57
  return;
58
58
  }
59
+ if (value === "") {
60
+ return;
61
+ }
62
+ console.log(input, data);
59
63
  input.value = value;
60
64
  });
61
65
  } else {
@@ -64,6 +68,14 @@ submitTaskForm.addEventListener("change", async function(event) {
64
68
  } catch (error) {
65
69
  console.error("Error during fetch:", error);
66
70
  }
71
+ }
72
+
73
+ submitTaskForm.querySelectorAll("input[name], textarea[name]").forEach((element) => {
74
+ element.addEventListener("input", handleInputUpdate);
75
+ element.addEventListener("keyup", handleInputUpdate);
76
+ });
77
+ submitTaskForm.querySelectorAll("select[name]").forEach((element) => {
78
+ element.addEventListener("change", handleInputUpdate);
67
79
  });
68
80
 
69
81