zrb 1.8.9__tar.gz → 1.8.11__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 (395) hide show
  1. {zrb-1.8.9 → zrb-1.8.11}/PKG-INFO +40 -34
  2. {zrb-1.8.9 → zrb-1.8.11}/README.md +33 -28
  3. {zrb-1.8.9 → zrb-1.8.11}/pyproject.toml +8 -7
  4. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/code.py +31 -25
  5. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/file.py +9 -6
  6. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/sub_agent.py +4 -2
  7. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/web.py +1 -1
  8. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +2 -2
  9. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/config.py +2 -2
  10. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/llm_config.py +2 -8
  11. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/llm_rate_limitter.py +24 -3
  12. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/agent.py +45 -2
  13. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm_task.py +1 -1
  14. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/__init__.py +0 -0
  15. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/__main__.py +0 -0
  16. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/attr/__init__.py +0 -0
  17. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/attr/type.py +0 -0
  18. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/__init__.py +0 -0
  19. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/base64.py +0 -0
  20. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/git.py +0 -0
  21. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/git_subtree.py +0 -0
  22. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/group.py +0 -0
  23. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/http.py +0 -0
  24. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/jwt.py +0 -0
  25. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/chat_session.py +0 -0
  26. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/history.py +0 -0
  27. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/input.py +0 -0
  28. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/llm_ask.py +4 -4
  29. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/previous-session.js +0 -0
  30. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/__init__.py +0 -0
  31. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/api.py +0 -0
  32. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/cli.py +0 -0
  33. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/llm/tool/rag.py +0 -0
  34. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/md5.py +0 -0
  35. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/__init__.py +0 -0
  36. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  37. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
  38. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
  39. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  40. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  41. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  42. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  43. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
  44. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
  45. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  46. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
  47. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  48. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/gateway/view/content/my-module/my-entity.html +0 -0
  49. {zrb-1.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/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.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_create_my_entity.py +0 -0
  56. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_delete_my_entity.py +0 -0
  57. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_read_my_entity.py +0 -0
  58. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_update_my_entity.py +0 -0
  59. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  60. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  61. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
  62. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  63. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  64. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  65. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
  66. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  67. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
  68. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
  69. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_api_client.py +0 -0
  70. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_client.py +0 -0
  71. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_client_factory.py +0 -0
  72. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_direct_client.py +0 -0
  73. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
  74. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
  75. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/script.py.mako +0 -0
  76. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
  77. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
  78. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
  79. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
  80. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  81. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
  82. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  83. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
  84. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  85. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  86. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  87. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  88. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  89. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  90. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  91. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  92. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  93. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  94. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  95. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  96. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  97. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  98. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  99. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  100. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  101. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  102. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  103. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  104. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  105. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  106. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  107. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  108. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  109. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  110. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
  111. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
  112. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  113. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  114. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  115. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  116. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
  117. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
  118. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
  119. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
  120. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
  121. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  122. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
  123. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
  124. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
  125. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
  126. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
  127. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  128. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
  129. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
  130. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
  131. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
  132. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
  133. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  134. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
  135. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  136. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  137. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  138. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  139. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  140. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  141. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
  142. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  143. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
  144. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  145. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
  146. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
  147. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
  148. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  149. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  150. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
  151. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
  152. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
  153. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
  154. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
  155. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
  156. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
  157. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
  158. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
  159. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
  160. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  161. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
  162. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
  163. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
  164. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
  165. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
  166. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
  167. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
  168. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
  169. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
  170. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
  171. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
  172. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
  173. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
  174. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
  175. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
  176. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
  177. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
  178. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
  179. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
  180. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
  181. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  182. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  183. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  184. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  185. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  186. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  187. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
  188. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
  189. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
  190. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
  191. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
  192. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
  193. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
  194. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
  195. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
  196. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
  197. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  198. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/create/__init__.py +0 -0
  199. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  200. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  201. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/project/create/project_task.py +0 -0
  202. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/python.py +0 -0
  203. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/random.py +0 -0
  204. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  205. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  206. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/common_input.py +0 -0
  207. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  208. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  209. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  210. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  211. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/ubuntu.py +0 -0
  212. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
  213. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
  214. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
  215. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/shell/__init__.py +0 -0
  216. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  217. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  218. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  219. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  220. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/todo.py +0 -0
  221. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/builtin/uuid.py +0 -0
  222. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/callback/__init__.py +0 -0
  223. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/callback/any_callback.py +0 -0
  224. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/callback/callback.py +0 -0
  225. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/cmd/__init__.py +0 -0
  226. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/cmd/cmd_result.py +0 -0
  227. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/cmd/cmd_val.py +0 -0
  228. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/content_transformer/__init__.py +0 -0
  229. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  230. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/content_transformer/content_transformer.py +0 -0
  231. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/context/__init__.py +0 -0
  232. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/context/any_context.py +0 -0
  233. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/context/any_shared_context.py +0 -0
  234. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/context/context.py +0 -0
  235. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/context/shared_context.py +0 -0
  236. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/dot_dict/__init__.py +0 -0
  237. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/dot_dict/dot_dict.py +0 -0
  238. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/env/__init__.py +0 -0
  239. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/env/any_env.py +0 -0
  240. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/env/env.py +0 -0
  241. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/env/env_file.py +0 -0
  242. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/env/env_map.py +0 -0
  243. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/group/__init__.py +0 -0
  244. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/group/any_group.py +0 -0
  245. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/group/group.py +0 -0
  246. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/__init__.py +0 -0
  247. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/any_input.py +0 -0
  248. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/base_input.py +0 -0
  249. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/bool_input.py +0 -0
  250. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/float_input.py +0 -0
  251. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/int_input.py +0 -0
  252. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/option_input.py +0 -0
  253. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/password_input.py +0 -0
  254. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/str_input.py +0 -0
  255. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/input/text_input.py +0 -0
  256. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/__init__.py +0 -0
  257. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/cli.py +0 -0
  258. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/common_util.py +0 -0
  259. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_app.py +0 -0
  260. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_auth_config.py +0 -0
  261. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/__init__.py +0 -0
  262. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/docs_route.py +0 -0
  263. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  264. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  265. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/error_page/view.html +0 -0
  266. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  267. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  268. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/home_page/view.html +0 -0
  269. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/login_api_route.py +0 -0
  270. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  271. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/login_page/view.html +0 -0
  272. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  273. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  274. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  275. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  276. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  277. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  278. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  279. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  280. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
  281. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  282. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/global_template.html +0 -0
  283. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  284. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  285. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/common.js +0 -0
  286. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  287. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  288. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  289. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.amber.min.css +0 -0
  290. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.blue.min.css +0 -0
  291. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.cyan.min.css +0 -0
  292. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.fuchsia.min.css +0 -0
  293. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.green.min.css +0 -0
  294. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.grey.min.css +0 -0
  295. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.indigo.min.css +0 -0
  296. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.jade.min.css +0 -0
  297. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.lime.min.css +0 -0
  298. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.min.css +0 -0
  299. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.orange.min.css +0 -0
  300. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.pink.min.css +0 -0
  301. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.pumpkin.min.css +0 -0
  302. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.purple.min.css +0 -0
  303. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.red.min.css +0 -0
  304. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.sand.min.css +0 -0
  305. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.slate.min.css +0 -0
  306. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.violet.min.css +0 -0
  307. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.yellow.min.css +0 -0
  308. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/pico-css/pico.zinc.min.css +0 -0
  309. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  310. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
  311. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
  312. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  313. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/static/static_route.py +0 -0
  314. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  315. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
  316. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_schema/session.py +0 -0
  317. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_schema/token.py +0 -0
  318. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_schema/user.py +0 -0
  319. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_util/cookie.py +0 -0
  320. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_util/html.py +0 -0
  321. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_util/token.py +0 -0
  322. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/runner/web_util/user.py +0 -0
  323. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session/__init__.py +0 -0
  324. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session/any_session.py +0 -0
  325. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session/session.py +0 -0
  326. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session_state_log/__init__.py +0 -0
  327. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session_state_log/session_state_log.py +0 -0
  328. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session_state_logger/__init__.py +0 -0
  329. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
  330. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
  331. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  332. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/__init__.py +0 -0
  333. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/any_task.py +0 -0
  334. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base/__init__.py +0 -0
  335. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base/context.py +0 -0
  336. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base/execution.py +0 -0
  337. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base/lifecycle.py +0 -0
  338. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base/monitoring.py +0 -0
  339. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base/operators.py +0 -0
  340. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base_task.py +0 -0
  341. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/base_trigger.py +0 -0
  342. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/cmd_task.py +0 -0
  343. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/http_check.py +0 -0
  344. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/__init__.py +0 -0
  345. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/config.py +0 -0
  346. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/context.py +0 -0
  347. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/context_enrichment.py +0 -0
  348. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/error.py +0 -0
  349. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/history.py +0 -0
  350. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/history_summarization.py +0 -0
  351. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/print_node.py +0 -0
  352. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/prompt.py +0 -0
  353. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/tool_wrapper.py +0 -0
  354. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/llm/typing.py +0 -0
  355. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/make_task.py +0 -0
  356. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/rsync_task.py +0 -0
  357. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/scaffolder.py +0 -0
  358. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/scheduler.py +0 -0
  359. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/task.py +0 -0
  360. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task/tcp_check.py +0 -0
  361. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task_status/__init__.py +0 -0
  362. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/task_status/task_status.py +0 -0
  363. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/__init__.py +0 -0
  364. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/attr.py +0 -0
  365. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cli/__init__.py +0 -0
  366. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cli/style.py +0 -0
  367. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cli/subcommand.py +0 -0
  368. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cmd/__init__.py +0 -0
  369. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cmd/command.py +0 -0
  370. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cmd/remote.py +0 -0
  371. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/__init__.py +0 -0
  372. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modification_mode.py +0 -0
  373. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_class.py +0 -0
  374. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_class_parent.py +0 -0
  375. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_class_property.py +0 -0
  376. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_dict.py +0 -0
  377. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_function.py +0 -0
  378. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_function_call.py +0 -0
  379. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_method.py +0 -0
  380. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/codemod/modify_module.py +0 -0
  381. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/cron.py +0 -0
  382. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/file.py +0 -0
  383. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/git.py +0 -0
  384. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/git_subtree.py +0 -0
  385. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/group.py +0 -0
  386. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/init_path.py +0 -0
  387. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/load.py +0 -0
  388. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/run.py +0 -0
  389. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/string/__init__.py +0 -0
  390. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/string/conversion.py +0 -0
  391. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/string/format.py +0 -0
  392. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/string/name.py +0 -0
  393. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/util/todo.py +0 -0
  394. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/xcom/__init__.py +0 -0
  395. {zrb-1.8.9 → zrb-1.8.11}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 1.8.9
3
+ Version: 1.8.11
4
4
  Summary: Your Automation Powerhouse
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
@@ -19,18 +19,19 @@ Provides-Extra: rag
19
19
  Requires-Dist: beautifulsoup4 (>=4.13.3,<5.0.0)
20
20
  Requires-Dist: black (>=25.1.0,<25.2.0)
21
21
  Requires-Dist: chromadb (>=0.6.3,<0.7.0) ; extra == "rag" or extra == "all"
22
- Requires-Dist: fastapi[standard] (>=0.115.12,<0.116.0)
22
+ Requires-Dist: fastapi[standard] (>=0.115.14,<0.116.0)
23
23
  Requires-Dist: isort (>=6.0.1,<6.1.0)
24
24
  Requires-Dist: libcst (>=1.7.0,<2.0.0)
25
- Requires-Dist: openai (>=1.76.0,<2.0.0) ; extra == "rag" or extra == "all"
25
+ Requires-Dist: openai (>=1.86.0,<2.0.0) ; extra == "rag" or extra == "all"
26
26
  Requires-Dist: pdfplumber (>=0.11.6,<0.12.0) ; extra == "rag" or extra == "all"
27
- Requires-Dist: playwright (>=1.51.0,<2.0.0) ; extra == "playwright" or extra == "all"
27
+ Requires-Dist: playwright (>=1.53.0,<2.0.0) ; extra == "playwright" or extra == "all"
28
28
  Requires-Dist: psutil (>=7.0.0,<8.0.0)
29
- Requires-Dist: pydantic-ai (>=0.2.18,<0.3.0)
29
+ Requires-Dist: pydantic-ai (>=0.3.4,<0.4.0)
30
30
  Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
31
- Requires-Dist: python-dotenv (>=1.1.0,<2.0.0)
31
+ Requires-Dist: python-dotenv (>=1.1.1,<2.0.0)
32
32
  Requires-Dist: python-jose[cryptography] (>=3.4.0,<4.0.0)
33
33
  Requires-Dist: requests (>=2.32.4,<3.0.0)
34
+ Requires-Dist: tiktoken (>=0.8.0,<0.9.0)
34
35
  Requires-Dist: ulid-py (>=1.1.0,<2.0.0)
35
36
  Project-URL: Documentation, https://github.com/state-alchemists/zrb
36
37
  Project-URL: Repository, https://github.com/state-alchemists/zrb
@@ -81,9 +82,11 @@ Or run our installation script to set up Zrb along with all prerequisites:
81
82
  bash -c "$(curl -fsSL https://raw.githubusercontent.com/state-alchemists/zrb/main/install.sh)"
82
83
  ```
83
84
 
85
+ You can also [run Zrb as container](https://github.com/state-alchemists/zrb?tab=readme-ov-file#-run-zrb-as-a-container)
86
+
84
87
  # 🍲 Quick Start: Build Your First Automation Workflow
85
88
 
86
- 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
+ Zrb empowers you to create custom automation tasks using Python. This guide shows you how to define two simple tasks: one to generate a Mermaid script from your source code and another to convert that script into a PNG image.
87
90
 
88
91
  ## 1. Create Your Task Definition File
89
92
 
@@ -92,59 +95,61 @@ Place a file named `zrb_init.py` in a directory that's accessible from your proj
92
95
  Add the following content to your zrb_init.py:
93
96
 
94
97
  ```python
95
- import os
96
98
  from zrb import cli, LLMTask, CmdTask, StrInput, Group
97
- from zrb.builtin.llm.tool.file import (
98
- list_files, read_from_file, search_files, write_to_file
99
- )
100
-
99
+ from zrb.builtin.llm.tool.code import analyze_repo
100
+ from zrb.builtin.llm.tool.file import write_to_file
101
101
 
102
- CURRENT_DIR = os.getcwd()
103
102
 
104
- # Create a group for UML-related tasks
105
- uml_group = cli.add_group(Group(name="uml", description="UML related tasks"))
103
+ # Create a group for Mermaid-related tasks
104
+ mermaid_group = cli.add_group(Group(name="mermaid", description="🧜 Mermaid diagram related tasks"))
106
105
 
107
- # Task 1: Generate a PlantUML script from your source code
108
- make_uml_script = uml_group.add_task(
106
+ # Task 1: Generate a Mermaid script from your source code
107
+ make_mermaid_script = mermaid_group.add_task(
109
108
  LLMTask(
110
109
  name="make-script",
111
- description="Creating plantuml diagram based on source code in current directory",
112
- input=StrInput(name="diagram", default="state diagram"),
110
+ description="Creating mermaid diagram based on source code in current directory",
111
+ input=[
112
+ StrInput(name="dir", default="./"),
113
+ StrInput(name="diagram", default="state-diagram"),
114
+ ],
113
115
  message=(
114
- f"Read all necessary files in {CURRENT_DIR}, "
115
- "make a {ctx.input.diagram} in plantuml format. "
116
- f"Write the script into {CURRENT_DIR}/{{ctx.input.diagram}}.uml"
116
+ "Read all necessary files in {ctx.input.dir}, "
117
+ "make a {ctx.input.diagram} in mermaid format. "
118
+ "Write the script into `{ctx.input.dir}/{ctx.input.diagram}.mmd`"
117
119
  ),
118
120
  tools=[
119
- list_files, read_from_file, search_files, write_to_file
121
+ analyze_repo, write_to_file
120
122
  ],
121
123
  )
122
124
  )
123
125
 
124
- # Task 2: Convert the PlantUML script into a PNG image
125
- make_uml_image = uml_group.add_task(
126
+ # Task 2: Convert the Mermaid script into a PNG image
127
+ make_mermaid_image = mermaid_group.add_task(
126
128
  CmdTask(
127
129
  name="make-image",
128
130
  description="Creating png based on source code in current directory",
129
- input=StrInput(name="diagram", default="state diagram"),
130
- cmd="plantuml -tpng '{ctx.input.diagram}.uml'",
131
- cwd=CURRENT_DIR,
131
+ input=[
132
+ StrInput(name="dir", default="./"),
133
+ StrInput(name="diagram", default="state-diagram"),
134
+ ],
135
+ cmd="mmdc -i '{ctx.input.diagram}.mmd' -o '{ctx.input.diagram}.png'",
136
+ cwd="{ctx.input.dir}",
132
137
  )
133
138
  )
134
139
 
135
140
  # Set up the dependency: the image task runs after the script is created
136
- make_uml_script >> make_uml_image
141
+ make_mermaid_script >> make_mermaid_image
137
142
  ```
138
143
 
139
144
  **What This Does**
140
145
 
141
146
  - **Task 1 – make-script**:
142
147
 
143
- Uses an LLM to read all files in your current directory and generate a PlantUML script (e.g., `state diagram.uml`).
148
+ Uses an LLM to read all files in your current directory and generate a Mermaid script (e.g., `state diagram.mmd`).
144
149
 
145
150
  - **Task 2 – make-image**:
146
151
 
147
- 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.
152
+ Executes a command that converts the Mermaid script into a PNG image (e.g., `state diagram.png`). This task will run only after the script has been generated.
148
153
 
149
154
 
150
155
  ## 2. Run Your Tasks
@@ -161,18 +166,19 @@ After setting up your tasks, you can execute them from any project. For example:
161
166
  - Create a state diagram:
162
167
 
163
168
  ```bash
164
- zrb uml make-image --diagram "state diagram"
169
+ zrb mermaid make-image --diagram "state diagram" --dir ./
165
170
  ```
166
171
 
167
172
  - Or use the interactive mode:
168
173
 
169
174
  ```bash
170
- zrb uml make-image
175
+ zrb mermaid make-image
171
176
  ```
172
177
 
173
178
  Zrb will prompt:
174
179
 
175
180
  ```bash
181
+ dir [./]:
176
182
  diagram [state diagram]:
177
183
  ```
178
184
 
@@ -194,7 +200,7 @@ Then open your browser and visit `http://localhost:21213`
194
200
  ![Zrb Web UI](https://raw.githubusercontent.com/state-alchemists/zrb/main/_images/zrb-web-ui.png)
195
201
 
196
202
 
197
- # 🐋 Running Zrb as a Container
203
+ # 🐋 Run Zrb as a Container
198
204
 
199
205
  Zrb can be run in a containerized environment, offering two distinct versions to suit different needs:
200
206
 
@@ -43,9 +43,11 @@ Or run our installation script to set up Zrb along with all prerequisites:
43
43
  bash -c "$(curl -fsSL https://raw.githubusercontent.com/state-alchemists/zrb/main/install.sh)"
44
44
  ```
45
45
 
46
+ You can also [run Zrb as container](https://github.com/state-alchemists/zrb?tab=readme-ov-file#-run-zrb-as-a-container)
47
+
46
48
  # 🍲 Quick Start: Build Your First Automation Workflow
47
49
 
48
- 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
+ Zrb empowers you to create custom automation tasks using Python. This guide shows you how to define two simple tasks: one to generate a Mermaid script from your source code and another to convert that script into a PNG image.
49
51
 
50
52
  ## 1. Create Your Task Definition File
51
53
 
@@ -54,59 +56,61 @@ Place a file named `zrb_init.py` in a directory that's accessible from your proj
54
56
  Add the following content to your zrb_init.py:
55
57
 
56
58
  ```python
57
- import os
58
59
  from zrb import cli, LLMTask, CmdTask, StrInput, Group
59
- from zrb.builtin.llm.tool.file import (
60
- list_files, read_from_file, search_files, write_to_file
61
- )
62
-
60
+ from zrb.builtin.llm.tool.code import analyze_repo
61
+ from zrb.builtin.llm.tool.file import write_to_file
63
62
 
64
- CURRENT_DIR = os.getcwd()
65
63
 
66
- # Create a group for UML-related tasks
67
- uml_group = cli.add_group(Group(name="uml", description="UML related tasks"))
64
+ # Create a group for Mermaid-related tasks
65
+ mermaid_group = cli.add_group(Group(name="mermaid", description="🧜 Mermaid diagram related tasks"))
68
66
 
69
- # Task 1: Generate a PlantUML script from your source code
70
- make_uml_script = uml_group.add_task(
67
+ # Task 1: Generate a Mermaid script from your source code
68
+ make_mermaid_script = mermaid_group.add_task(
71
69
  LLMTask(
72
70
  name="make-script",
73
- description="Creating plantuml diagram based on source code in current directory",
74
- input=StrInput(name="diagram", default="state diagram"),
71
+ description="Creating mermaid diagram based on source code in current directory",
72
+ input=[
73
+ StrInput(name="dir", default="./"),
74
+ StrInput(name="diagram", default="state-diagram"),
75
+ ],
75
76
  message=(
76
- f"Read all necessary files in {CURRENT_DIR}, "
77
- "make a {ctx.input.diagram} in plantuml format. "
78
- f"Write the script into {CURRENT_DIR}/{{ctx.input.diagram}}.uml"
77
+ "Read all necessary files in {ctx.input.dir}, "
78
+ "make a {ctx.input.diagram} in mermaid format. "
79
+ "Write the script into `{ctx.input.dir}/{ctx.input.diagram}.mmd`"
79
80
  ),
80
81
  tools=[
81
- list_files, read_from_file, search_files, write_to_file
82
+ analyze_repo, write_to_file
82
83
  ],
83
84
  )
84
85
  )
85
86
 
86
- # Task 2: Convert the PlantUML script into a PNG image
87
- make_uml_image = uml_group.add_task(
87
+ # Task 2: Convert the Mermaid script into a PNG image
88
+ make_mermaid_image = mermaid_group.add_task(
88
89
  CmdTask(
89
90
  name="make-image",
90
91
  description="Creating png based on source code in current directory",
91
- input=StrInput(name="diagram", default="state diagram"),
92
- cmd="plantuml -tpng '{ctx.input.diagram}.uml'",
93
- cwd=CURRENT_DIR,
92
+ input=[
93
+ StrInput(name="dir", default="./"),
94
+ StrInput(name="diagram", default="state-diagram"),
95
+ ],
96
+ cmd="mmdc -i '{ctx.input.diagram}.mmd' -o '{ctx.input.diagram}.png'",
97
+ cwd="{ctx.input.dir}",
94
98
  )
95
99
  )
96
100
 
97
101
  # Set up the dependency: the image task runs after the script is created
98
- make_uml_script >> make_uml_image
102
+ make_mermaid_script >> make_mermaid_image
99
103
  ```
100
104
 
101
105
  **What This Does**
102
106
 
103
107
  - **Task 1 – make-script**:
104
108
 
105
- Uses an LLM to read all files in your current directory and generate a PlantUML script (e.g., `state diagram.uml`).
109
+ Uses an LLM to read all files in your current directory and generate a Mermaid script (e.g., `state diagram.mmd`).
106
110
 
107
111
  - **Task 2 – make-image**:
108
112
 
109
- 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.
113
+ Executes a command that converts the Mermaid script into a PNG image (e.g., `state diagram.png`). This task will run only after the script has been generated.
110
114
 
111
115
 
112
116
  ## 2. Run Your Tasks
@@ -123,18 +127,19 @@ After setting up your tasks, you can execute them from any project. For example:
123
127
  - Create a state diagram:
124
128
 
125
129
  ```bash
126
- zrb uml make-image --diagram "state diagram"
130
+ zrb mermaid make-image --diagram "state diagram" --dir ./
127
131
  ```
128
132
 
129
133
  - Or use the interactive mode:
130
134
 
131
135
  ```bash
132
- zrb uml make-image
136
+ zrb mermaid make-image
133
137
  ```
134
138
 
135
139
  Zrb will prompt:
136
140
 
137
141
  ```bash
142
+ dir [./]:
138
143
  diagram [state diagram]:
139
144
  ```
140
145
 
@@ -156,7 +161,7 @@ Then open your browser and visit `http://localhost:21213`
156
161
  ![Zrb Web UI](https://raw.githubusercontent.com/state-alchemists/zrb/main/_images/zrb-web-ui.png)
157
162
 
158
163
 
159
- # 🐋 Running Zrb as a Container
164
+ # 🐋 Run Zrb as a Container
160
165
 
161
166
  Zrb can be run in a containerized environment, offering two distinct versions to suit different needs:
162
167
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.8.9"
3
+ version = "1.8.11"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -38,7 +38,7 @@ exclude = [
38
38
 
39
39
  [tool.poetry.dependencies]
40
40
  python = ">=3.10.0,<4.0.0"
41
- python-dotenv = "^1.1.0"
41
+ python-dotenv = "^1.1.1"
42
42
  black = "~25.1.0"
43
43
  isort = "~6.0.1"
44
44
  requests = "^2.32.4"
@@ -46,12 +46,13 @@ libcst = "^1.7.0"
46
46
  chromadb = {version = "^0.6.3", optional = true}
47
47
  pdfplumber = {version = "^0.11.6", optional = true}
48
48
  beautifulsoup4 = "^4.13.3"
49
- fastapi = {extras = ["standard"], version = "^0.115.12"}
49
+ fastapi = {extras = ["standard"], version = "^0.115.14"}
50
50
  python-jose = {extras = ["cryptography"], version = "^3.4.0"}
51
51
  ulid-py = "^1.1.0"
52
- pydantic-ai = "^0.2.18"
53
- openai = {version = "^1.76.0", optional = true}
54
- playwright = {version = "^1.51.0", optional = true}
52
+ pydantic-ai = "^0.3.4"
53
+ tiktoken = "^0.8.0"
54
+ openai = {version = "^1.86.0", optional = true}
55
+ playwright = {version = "^1.53.0", optional = true}
55
56
  psutil = "^7.0.0"
56
57
  pyjwt = "^2.10.1"
57
58
 
@@ -62,7 +63,7 @@ playwright = ["playwright"]
62
63
  all = ["chromadb", "pdfplumber", "openai", "playwright"]
63
64
 
64
65
  [tool.poetry.group.dev.dependencies]
65
- alembic = "^1.15.2" # FastApp dependencies
66
+ alembic = "^1.16.2" # FastApp dependencies
66
67
  autopep8 = "^2.0.4"
67
68
  flake8 = "~7.2.0"
68
69
  pytest = "~8.3.5"
@@ -4,6 +4,7 @@ import os
4
4
  from zrb.builtin.llm.tool.file import DEFAULT_EXCLUDED_PATTERNS, is_excluded
5
5
  from zrb.builtin.llm.tool.sub_agent import create_sub_agent_tool
6
6
  from zrb.context.any_context import AnyContext
7
+ from zrb.llm_rate_limitter import llm_rate_limitter
7
8
 
8
9
  _EXTRACT_INFO_FROM_REPO_SYSTEM_PROMPT = """
9
10
  You are an extraction info agent.
@@ -81,12 +82,11 @@ async def analyze_repo(
81
82
  goal: str,
82
83
  extensions: list[str] = _DEFAULT_EXTENSIONS,
83
84
  exclude_patterns: list[str] = DEFAULT_EXCLUDED_PATTERNS,
84
- extraction_char_limit: int = 150000,
85
- summarization_char_limit: int = 150000,
85
+ extraction_token_limit: int = 30000,
86
+ summarization_token_limit: int = 30000,
86
87
  ) -> str:
87
88
  """
88
- Extract and summarize information from a directory that probably
89
- contains a large resources.
89
+ Extract and summarize information from any directory.
90
90
  You should state the goal specifically so that the tool can return relevant informations.
91
91
  Use this tool for:
92
92
  - summarization
@@ -101,9 +101,9 @@ async def analyze_repo(
101
101
  while reading resources. Defaults to common programming languages and config files.
102
102
  exclude_patterns(Optional[list[str]]): List of patterns to exclude from analysis.
103
103
  Common patterns like '.venv', 'node_modules' should be excluded by default.
104
- extraction_char_limit(Optional[int]): Max resource content char length
104
+ extraction_token_limit(Optional[int]): Max resource content char length
105
105
  the extraction assistant able to handle. Defaults to 150000
106
- summarization_char_limit(Optional[int]): Max resource content char length
106
+ summarization_token_limit(Optional[int]): Max resource content char length
107
107
  the summarization assistant able to handle. Defaults to 150000
108
108
  Returns:
109
109
  str: The analysis result
@@ -117,22 +117,19 @@ async def analyze_repo(
117
117
  ctx,
118
118
  file_metadatas=file_metadatas,
119
119
  goal=goal,
120
- char_limit=extraction_char_limit,
120
+ token_limit=extraction_token_limit,
121
121
  )
122
+ if len(extracted_infos) == 1:
123
+ return extracted_infos[0]
122
124
  ctx.print("Summarization")
123
- summarized_infos = await _summarize_info(
124
- ctx,
125
- extracted_infos=extracted_infos,
126
- goal=goal,
127
- char_limit=summarization_char_limit,
128
- )
125
+ summarized_infos = extracted_infos
129
126
  while len(summarized_infos) > 1:
130
127
  ctx.print("Summarization")
131
128
  summarized_infos = await _summarize_info(
132
129
  ctx,
133
130
  extracted_infos=summarized_infos,
134
131
  goal=goal,
135
- char_limit=summarization_char_limit,
132
+ token_limit=summarization_token_limit,
136
133
  )
137
134
  return summarized_infos[0]
138
135
 
@@ -165,7 +162,7 @@ async def _extract_info(
165
162
  ctx: AnyContext,
166
163
  file_metadatas: list[dict[str, str]],
167
164
  goal: str,
168
- char_limit: int,
165
+ token_limit: int,
169
166
  ) -> list[str]:
170
167
  extract = create_sub_agent_tool(
171
168
  tool_name="extract",
@@ -174,27 +171,31 @@ async def _extract_info(
174
171
  )
175
172
  extracted_infos = []
176
173
  content_buffer = []
177
- current_char_count = 0
174
+ current_token_count = 0
178
175
  for metadata in file_metadatas:
179
176
  path = metadata.get("path", "")
180
177
  content = metadata.get("content", "")
181
178
  file_obj = {"path": path, "content": content}
182
179
  file_str = json.dumps(file_obj)
183
- if current_char_count + len(file_str) > char_limit:
180
+ if current_token_count + llm_rate_limitter.count_token(file_str) > token_limit:
184
181
  if content_buffer:
185
182
  prompt = _create_extract_info_prompt(goal, content_buffer)
186
- extracted_info = await extract(ctx, prompt)
183
+ extracted_info = await extract(
184
+ ctx, llm_rate_limitter.clip_prompt(prompt, token_limit)
185
+ )
187
186
  extracted_infos.append(extracted_info)
188
187
  content_buffer = [file_obj]
189
- current_char_count = len(file_str)
188
+ current_token_count = llm_rate_limitter.count_token(file_str)
190
189
  else:
191
190
  content_buffer.append(file_obj)
192
- current_char_count += len(file_str)
191
+ current_token_count += llm_rate_limitter.count_token(file_str)
193
192
 
194
193
  # Process any remaining content in the buffer
195
194
  if content_buffer:
196
195
  prompt = _create_extract_info_prompt(goal, content_buffer)
197
- extracted_info = await extract(ctx, prompt)
196
+ extracted_info = await extract(
197
+ ctx, llm_rate_limitter.clip_prompt(prompt, token_limit)
198
+ )
198
199
  extracted_infos.append(extracted_info)
199
200
  return extracted_infos
200
201
 
@@ -212,7 +213,7 @@ async def _summarize_info(
212
213
  ctx: AnyContext,
213
214
  extracted_infos: list[str],
214
215
  goal: str,
215
- char_limit: int,
216
+ token_limit: int,
216
217
  ) -> list[str]:
217
218
  summarize = create_sub_agent_tool(
218
219
  tool_name="extract",
@@ -222,10 +223,13 @@ async def _summarize_info(
222
223
  summarized_infos = []
223
224
  content_buffer = ""
224
225
  for extracted_info in extracted_infos:
225
- if len(content_buffer) + len(extracted_info) > char_limit:
226
+ new_prompt = content_buffer + extracted_info
227
+ if llm_rate_limitter.count_token(new_prompt) > token_limit:
226
228
  if content_buffer:
227
229
  prompt = _create_summarize_info_prompt(goal, content_buffer)
228
- summarized_info = await summarize(ctx, prompt)
230
+ summarized_info = await summarize(
231
+ ctx, llm_rate_limitter.clip_prompt(prompt, token_limit)
232
+ )
229
233
  summarized_infos.append(summarized_info)
230
234
  content_buffer = extracted_info
231
235
  else:
@@ -234,7 +238,9 @@ async def _summarize_info(
234
238
  # Process any remaining content in the buffer
235
239
  if content_buffer:
236
240
  prompt = _create_summarize_info_prompt(goal, content_buffer)
237
- summarized_info = await summarize(ctx, prompt)
241
+ summarized_info = await summarize(
242
+ ctx, llm_rate_limitter.clip_prompt(prompt, token_limit)
243
+ )
238
244
  summarized_infos.append(summarized_info)
239
245
  return summarized_infos
240
246
 
@@ -6,6 +6,7 @@ from typing import Any, Optional
6
6
 
7
7
  from zrb.builtin.llm.tool.sub_agent import create_sub_agent_tool
8
8
  from zrb.context.any_context import AnyContext
9
+ from zrb.llm_rate_limitter import llm_rate_limitter
9
10
  from zrb.util.file import read_file, read_file_with_line_numbers, write_file
10
11
 
11
12
  _EXTRACT_INFO_FROM_FILE_SYSTEM_PROMPT = """
@@ -464,7 +465,9 @@ def apply_diff(
464
465
  raise RuntimeError(f"Unexpected error applying diff to {path}: {e}")
465
466
 
466
467
 
467
- async def analyze_file(ctx: AnyContext, path: str, query: str) -> str:
468
+ async def analyze_file(
469
+ ctx: AnyContext, path: str, query: str, token_limit: int = 30000
470
+ ) -> str:
468
471
  """Analyze file using LLM capability to reduce context usage.
469
472
  Use this tool for:
470
473
  - summarization
@@ -474,6 +477,7 @@ async def analyze_file(ctx: AnyContext, path: str, query: str) -> str:
474
477
  Args:
475
478
  path (str): File path to be analyze. Pass exactly as provided, including '~'.
476
479
  query(str): Instruction to analyze the file
480
+ token_limit(Optional[int]): Max token length to be taken from file
477
481
  Returns:
478
482
  str: The analysis result
479
483
  Raises:
@@ -489,9 +493,8 @@ async def analyze_file(ctx: AnyContext, path: str, query: str) -> str:
489
493
  system_prompt=_EXTRACT_INFO_FROM_FILE_SYSTEM_PROMPT,
490
494
  tools=[read_from_file, search_files],
491
495
  )
492
- return await _analyze_file(
493
- ctx,
494
- json.dumps(
495
- {"instruction": query, "file_path": abs_path, "file_content": file_content}
496
- ),
496
+ payload = json.dumps(
497
+ {"instruction": query, "file_path": abs_path, "file_content": file_content}
497
498
  )
499
+ clipped_payload = llm_rate_limitter.clip_prompt(payload, token_limit)
500
+ return await _analyze_file(ctx, clipped_payload)
@@ -1,7 +1,7 @@
1
1
  import json
2
2
  from collections.abc import Callable
3
3
  from textwrap import dedent
4
- from typing import TYPE_CHECKING, Any
4
+ from typing import TYPE_CHECKING, Any, Coroutine
5
5
 
6
6
  if TYPE_CHECKING:
7
7
  from pydantic_ai import Tool
@@ -33,7 +33,7 @@ def create_sub_agent_tool(
33
33
  model_settings: ModelSettings | None = None,
34
34
  tools: list[ToolOrCallable] = [],
35
35
  mcp_servers: list[MCPServer] = [],
36
- ) -> Callable[[AnyContext, str], str]:
36
+ ) -> Callable[[AnyContext, str], Coroutine[Any, Any, str]]:
37
37
  """
38
38
  Create an LLM "sub-agent" tool function for use by a main LLM agent.
39
39
 
@@ -97,6 +97,8 @@ def create_sub_agent_tool(
97
97
  tools=tools,
98
98
  mcp_servers=mcp_servers,
99
99
  )
100
+
101
+ sub_agent_run = None
100
102
  # Run the sub-agent iteration
101
103
  # Start with an empty history for the sub-agent
102
104
  sub_agent_run = await run_agent_iteration(
@@ -42,7 +42,7 @@ async def open_web_page(url: str) -> str:
42
42
  return {"content": content, "links_on_page": links}
43
43
  finally:
44
44
  await browser.close()
45
- except ImportError:
45
+ except BaseException:
46
46
  import requests
47
47
 
48
48
  response = requests.get(url, headers={"User-Agent": user_agent})
@@ -1,5 +1,5 @@
1
- fastapi[standard]~=0.115.12
2
- alembic~=1.15.2
1
+ fastapi[standard]~=0.115.14
2
+ alembic~=1.16.2
3
3
  sqlmodel~=0.0.24
4
4
  ulid-py~=1.1.0
5
5
  passlib~=1.7.4
@@ -245,12 +245,12 @@ class Config:
245
245
  @property
246
246
  def LLM_MAX_TOKENS_PER_MINUTE(self) -> int:
247
247
  """Maximum number of LLM tokens allowed per minute."""
248
- return int(os.getenv("ZRB_LLM_MAX_TOKENS_PER_MINUTE", "120000"))
248
+ return int(os.getenv("ZRB_LLM_MAX_TOKENS_PER_MINUTE", "200000"))
249
249
 
250
250
  @property
251
251
  def LLM_MAX_TOKENS_PER_REQUEST(self) -> int:
252
252
  """Maximum number of tokens allowed per individual LLM request."""
253
- return int(os.getenv("ZRB_LLM_MAX_TOKENS_PER_REQUEST", "30000"))
253
+ return int(os.getenv("ZRB_LLM_MAX_TOKENS_PER_REQUEST", "50000"))
254
254
 
255
255
  @property
256
256
  def LLM_THROTTLE_SLEEP(self) -> float:
@@ -69,14 +69,8 @@ DEFAULT_SPECIAL_INSTRUCTION_PROMPT = (
69
69
  "is clean.\n"
70
70
  "2. **Halt if Dirty:** If the directory is not clean, STOP. Inform the "
71
71
  "user and wait for their instructions.\n"
72
- "3. **Propose and Confirm Branch:**\n"
73
- " - Tell the user you need to create a new branch and propose a "
74
- "name.\n"
75
- " - Example: 'I will create a branch named `feature/add-user-login`. "
76
- "Is this okay?'\n"
77
- " - **Wait for the user to say 'yes' or approve.**\n"
78
- "4. **Execute on Branch:** Once the user confirms, create the branch and "
79
- "perform all your work and commits there.\n\n"
72
+ "3. **Create a New Branch:** Create a new branch and inform the user.\n"
73
+ "4. **Execute on Branch:** Perform all your work and commits there.\n\n"
80
74
  "**4. Debugging Protocol**\n"
81
75
  "1. **Hypothesize:** State the most likely cause of the bug in one "
82
76
  "sentence.\n"
@@ -3,9 +3,16 @@ import time
3
3
  from collections import deque
4
4
  from typing import Callable
5
5
 
6
+ import tiktoken
7
+
6
8
  from zrb.config import CFG
7
9
 
8
10
 
11
+ def _estimate_token(text: str) -> int:
12
+ enc = tiktoken.encoding_for_model("gpt-4o")
13
+ return len(enc.encode(text))
14
+
15
+
9
16
  class LLMRateLimiter:
10
17
  """
11
18
  Helper class to enforce LLM API rate limits and throttling.
@@ -53,10 +60,10 @@ class LLMRateLimiter:
53
60
  return CFG.LLM_THROTTLE_SLEEP
54
61
 
55
62
  @property
56
- def token_counter_fn(self) -> Callable[[str], int]:
63
+ def count_token(self) -> Callable[[str], int]:
57
64
  if self._token_counter_fn is not None:
58
65
  return self._token_counter_fn
59
- return lambda x: len(x.split())
66
+ return _estimate_token
60
67
 
61
68
  def set_max_requests_per_minute(self, value: int):
62
69
  self._max_requests_per_minute = value
@@ -73,9 +80,23 @@ class LLMRateLimiter:
73
80
  def set_token_counter_fn(self, fn: Callable[[str], int]):
74
81
  self._token_counter_fn = fn
75
82
 
83
+ def clip_prompt(self, prompt: str, limit: int) -> str:
84
+ token_count = self.count_token(prompt)
85
+ if token_count <= limit:
86
+ return prompt
87
+ while token_count > limit:
88
+ prompt_parts = prompt.split(" ")
89
+ last_part_index = len(prompt_parts) - 2
90
+ clipped_prompt = " ".join(prompt_parts[:last_part_index])
91
+ clipped_prompt += "(Content clipped...)"
92
+ token_count = self.count_token(clipped_prompt)
93
+ if token_count < limit:
94
+ return clipped_prompt
95
+ return prompt[:limit]
96
+
76
97
  async def throttle(self, prompt: str):
77
98
  now = time.time()
78
- tokens = self.token_counter_fn(prompt)
99
+ tokens = self.count_token(prompt)
79
100
  # Clean up old entries
80
101
  while self.request_times and now - self.request_times[0] > 60:
81
102
  self.request_times.popleft()