zrb 1.8.13__tar.gz → 1.8.14__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 (396) hide show
  1. {zrb-1.8.13 → zrb-1.8.14}/PKG-INFO +2 -1
  2. {zrb-1.8.13 → zrb-1.8.14}/pyproject.toml +2 -1
  3. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/llm/chat_session.py +5 -1
  4. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/llm/tool/sub_agent.py +8 -14
  5. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/todo.py +12 -1
  6. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/llm_config.py +12 -15
  7. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/cli.py +2 -1
  8. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_auth_config.py +16 -10
  9. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/task_session_api_route.py +18 -7
  10. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/session/any_session.py +15 -14
  11. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/session/session.py +11 -7
  12. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/session_state_logger/any_session_state_logger.py +9 -4
  13. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/session_state_logger/file_session_state_logger.py +16 -6
  14. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/any_task.py +11 -8
  15. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/file.py +3 -2
  16. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/todo.py +17 -50
  17. zrb-1.8.14/src/zrb/util/todo_model.py +40 -0
  18. {zrb-1.8.13 → zrb-1.8.14}/README.md +0 -0
  19. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/__init__.py +0 -0
  20. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/__main__.py +0 -0
  21. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/attr/__init__.py +0 -0
  22. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/attr/type.py +0 -0
  23. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/__init__.py +0 -0
  24. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/base64.py +0 -0
  25. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/git.py +0 -0
  26. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/git_subtree.py +0 -0
  27. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/group.py +0 -0
  28. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/http.py +0 -0
  29. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/jwt.py +0 -0
  30. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/llm/history.py +0 -0
  31. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/llm/input.py +0 -0
  32. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/llm/llm_ask.py +0 -0
  33. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/llm/previous-session.js +0 -0
  34. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/llm/tool/__init__.py +0 -0
  35. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/llm/tool/api.py +0 -0
  36. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/llm/tool/cli.py +0 -0
  37. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/llm/tool/code.py +0 -0
  38. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/llm/tool/file.py +0 -0
  39. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/llm/tool/rag.py +0 -0
  40. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/llm/tool/web.py +0 -0
  41. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/md5.py +0 -0
  42. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/__init__.py +0 -0
  43. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  44. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
  45. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
  46. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  47. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  48. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  49. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  50. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
  51. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
  52. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  53. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
  54. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  55. {zrb-1.8.13 → zrb-1.8.14}/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
  56. {zrb-1.8.13 → zrb-1.8.14}/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
  57. {zrb-1.8.13 → zrb-1.8.14}/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
  58. {zrb-1.8.13 → zrb-1.8.14}/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
  59. {zrb-1.8.13 → zrb-1.8.14}/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
  60. {zrb-1.8.13 → zrb-1.8.14}/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
  61. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
  62. {zrb-1.8.13 → zrb-1.8.14}/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
  63. {zrb-1.8.13 → zrb-1.8.14}/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
  64. {zrb-1.8.13 → zrb-1.8.14}/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
  65. {zrb-1.8.13 → zrb-1.8.14}/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
  66. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  67. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  68. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
  69. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  70. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  71. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  72. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
  73. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  74. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
  75. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
  76. {zrb-1.8.13 → zrb-1.8.14}/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
  77. {zrb-1.8.13 → zrb-1.8.14}/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
  78. {zrb-1.8.13 → zrb-1.8.14}/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
  79. {zrb-1.8.13 → zrb-1.8.14}/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
  80. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
  81. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
  82. {zrb-1.8.13 → zrb-1.8.14}/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
  83. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
  84. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
  85. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
  86. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
  87. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  88. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
  89. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  90. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
  91. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  92. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  93. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  94. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  95. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  96. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  97. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  98. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  99. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  100. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  101. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  102. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  103. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  104. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  105. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  106. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  107. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  108. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  109. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  110. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  111. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  112. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  113. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  114. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  115. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  116. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  117. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
  118. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
  119. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  120. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  121. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  122. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  123. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
  124. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
  125. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
  126. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
  127. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
  128. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  129. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
  130. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
  131. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
  132. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
  133. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
  134. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  135. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
  136. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
  137. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
  138. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
  139. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
  140. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  141. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
  142. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  143. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  144. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  145. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  146. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  147. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  148. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
  149. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  150. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
  151. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  152. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
  153. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
  154. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
  155. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  156. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  157. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
  158. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
  159. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
  160. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
  161. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
  162. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
  163. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
  164. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
  165. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
  166. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
  167. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  168. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
  169. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
  170. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
  171. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
  172. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
  173. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
  174. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
  175. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
  176. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
  177. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
  178. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
  179. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
  180. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
  181. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
  182. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
  183. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
  184. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
  185. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
  186. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
  187. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
  188. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  189. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
  190. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  191. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  192. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  193. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  194. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  195. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
  196. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
  197. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
  198. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
  199. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
  200. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
  201. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
  202. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
  203. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
  204. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
  205. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  206. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/create/__init__.py +0 -0
  207. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  208. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  209. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/project/create/project_task.py +0 -0
  210. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/python.py +0 -0
  211. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/random.py +0 -0
  212. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  213. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  214. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/setup/common_input.py +0 -0
  215. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  216. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  217. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  218. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  219. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/setup/ubuntu.py +0 -0
  220. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
  221. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
  222. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
  223. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/shell/__init__.py +0 -0
  224. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  225. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  226. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  227. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  228. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/builtin/uuid.py +0 -0
  229. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/callback/__init__.py +0 -0
  230. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/callback/any_callback.py +0 -0
  231. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/callback/callback.py +0 -0
  232. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/cmd/__init__.py +0 -0
  233. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/cmd/cmd_result.py +0 -0
  234. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/cmd/cmd_val.py +0 -0
  235. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/config.py +0 -0
  236. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/content_transformer/__init__.py +0 -0
  237. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  238. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/content_transformer/content_transformer.py +0 -0
  239. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/context/__init__.py +0 -0
  240. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/context/any_context.py +0 -0
  241. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/context/any_shared_context.py +0 -0
  242. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/context/context.py +0 -0
  243. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/context/shared_context.py +0 -0
  244. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/dot_dict/__init__.py +0 -0
  245. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/dot_dict/dot_dict.py +0 -0
  246. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/env/__init__.py +0 -0
  247. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/env/any_env.py +0 -0
  248. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/env/env.py +0 -0
  249. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/env/env_file.py +0 -0
  250. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/env/env_map.py +0 -0
  251. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/group/__init__.py +0 -0
  252. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/group/any_group.py +0 -0
  253. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/group/group.py +0 -0
  254. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/input/__init__.py +0 -0
  255. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/input/any_input.py +0 -0
  256. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/input/base_input.py +0 -0
  257. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/input/bool_input.py +0 -0
  258. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/input/float_input.py +0 -0
  259. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/input/int_input.py +0 -0
  260. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/input/option_input.py +0 -0
  261. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/input/password_input.py +0 -0
  262. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/input/str_input.py +0 -0
  263. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/input/text_input.py +0 -0
  264. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/llm_rate_limitter.py +0 -0
  265. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/__init__.py +0 -0
  266. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/common_util.py +0 -0
  267. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_app.py +0 -0
  268. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/__init__.py +0 -0
  269. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/docs_route.py +0 -0
  270. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  271. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  272. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/error_page/view.html +0 -0
  273. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  274. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  275. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/home_page/view.html +0 -0
  276. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/login_api_route.py +0 -0
  277. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  278. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/login_page/view.html +0 -0
  279. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  280. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  281. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  282. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  283. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  284. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  285. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  286. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  287. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
  288. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  289. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/global_template.html +0 -0
  290. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  291. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  292. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/common.js +0 -0
  293. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  294. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  295. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  296. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.amber.min.css +0 -0
  297. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.blue.min.css +0 -0
  298. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.cyan.min.css +0 -0
  299. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.fuchsia.min.css +0 -0
  300. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.green.min.css +0 -0
  301. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.grey.min.css +0 -0
  302. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.indigo.min.css +0 -0
  303. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.jade.min.css +0 -0
  304. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.lime.min.css +0 -0
  305. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.min.css +0 -0
  306. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.orange.min.css +0 -0
  307. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.pink.min.css +0 -0
  308. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.pumpkin.min.css +0 -0
  309. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.purple.min.css +0 -0
  310. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.red.min.css +0 -0
  311. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.sand.min.css +0 -0
  312. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.slate.min.css +0 -0
  313. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.violet.min.css +0 -0
  314. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.yellow.min.css +0 -0
  315. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.zinc.min.css +0 -0
  316. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  317. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
  318. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
  319. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  320. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/static/static_route.py +0 -0
  321. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  322. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_schema/session.py +0 -0
  323. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_schema/token.py +0 -0
  324. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_schema/user.py +0 -0
  325. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_util/cookie.py +0 -0
  326. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_util/html.py +0 -0
  327. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_util/token.py +0 -0
  328. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/runner/web_util/user.py +0 -0
  329. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/session/__init__.py +0 -0
  330. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/session_state_log/__init__.py +0 -0
  331. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/session_state_log/session_state_log.py +0 -0
  332. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/session_state_logger/__init__.py +0 -0
  333. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  334. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/__init__.py +0 -0
  335. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/base/__init__.py +0 -0
  336. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/base/context.py +0 -0
  337. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/base/execution.py +0 -0
  338. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/base/lifecycle.py +0 -0
  339. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/base/monitoring.py +0 -0
  340. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/base/operators.py +0 -0
  341. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/base_task.py +0 -0
  342. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/base_trigger.py +0 -0
  343. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/cmd_task.py +0 -0
  344. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/http_check.py +0 -0
  345. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/llm/__init__.py +0 -0
  346. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/llm/agent.py +0 -0
  347. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/llm/config.py +0 -0
  348. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/llm/context.py +0 -0
  349. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/llm/context_enrichment.py +0 -0
  350. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/llm/error.py +0 -0
  351. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/llm/history.py +0 -0
  352. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/llm/history_summarization.py +0 -0
  353. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/llm/print_node.py +0 -0
  354. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/llm/prompt.py +0 -0
  355. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/llm/tool_wrapper.py +0 -0
  356. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/llm/typing.py +0 -0
  357. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/llm_task.py +0 -0
  358. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/make_task.py +0 -0
  359. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/rsync_task.py +0 -0
  360. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/scaffolder.py +0 -0
  361. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/scheduler.py +0 -0
  362. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/task.py +0 -0
  363. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task/tcp_check.py +0 -0
  364. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task_status/__init__.py +0 -0
  365. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/task_status/task_status.py +0 -0
  366. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/__init__.py +0 -0
  367. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/attr.py +0 -0
  368. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/cli/__init__.py +0 -0
  369. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/cli/style.py +0 -0
  370. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/cli/subcommand.py +0 -0
  371. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/cmd/__init__.py +0 -0
  372. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/cmd/command.py +0 -0
  373. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/cmd/remote.py +0 -0
  374. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/codemod/__init__.py +0 -0
  375. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/codemod/modification_mode.py +0 -0
  376. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/codemod/modify_class.py +0 -0
  377. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/codemod/modify_class_parent.py +0 -0
  378. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/codemod/modify_class_property.py +0 -0
  379. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/codemod/modify_dict.py +0 -0
  380. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/codemod/modify_function.py +0 -0
  381. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/codemod/modify_function_call.py +0 -0
  382. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/codemod/modify_method.py +0 -0
  383. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/codemod/modify_module.py +0 -0
  384. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/cron.py +0 -0
  385. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/git.py +0 -0
  386. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/git_subtree.py +0 -0
  387. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/group.py +0 -0
  388. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/init_path.py +0 -0
  389. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/load.py +0 -0
  390. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/run.py +0 -0
  391. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/string/__init__.py +0 -0
  392. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/string/conversion.py +0 -0
  393. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/string/format.py +0 -0
  394. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/util/string/name.py +0 -0
  395. {zrb-1.8.13 → zrb-1.8.14}/src/zrb/xcom/__init__.py +0 -0
  396. {zrb-1.8.13 → zrb-1.8.14}/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.13
3
+ Version: 1.8.14
4
4
  Summary: Your Automation Powerhouse
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
@@ -25,6 +25,7 @@ Requires-Dist: libcst (>=1.7.0,<2.0.0)
25
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
27
  Requires-Dist: playwright (>=1.53.0,<2.0.0) ; extra == "playwright" or extra == "all"
28
+ Requires-Dist: prompt-toolkit (>=3.0.51,<4.0.0)
28
29
  Requires-Dist: psutil (>=7.0.0,<8.0.0)
29
30
  Requires-Dist: pydantic-ai (>=0.3.4,<0.4.0)
30
31
  Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.8.13"
3
+ version = "1.8.14"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -55,6 +55,7 @@ openai = {version = "^1.86.0", optional = true}
55
55
  playwright = {version = "^1.53.0", optional = true}
56
56
  psutil = "^7.0.0"
57
57
  pyjwt = "^2.10.1"
58
+ prompt-toolkit = "^3.0.51"
58
59
 
59
60
  [tool.poetry.extras]
60
61
  # poetry install -E rag
@@ -25,6 +25,8 @@ async def read_user_prompt(ctx: AnyContext) -> str:
25
25
  Returns:
26
26
  The final result from the LLM session.
27
27
  """
28
+ from prompt_toolkit import PromptSession
29
+
28
30
  _show_info(ctx)
29
31
  final_result = ""
30
32
  ctx.print(stylize_faint("🧑 >> ") + f"{ctx.input.message}", plain=True)
@@ -41,10 +43,12 @@ async def read_user_prompt(ctx: AnyContext) -> str:
41
43
  return final_result
42
44
  multiline_mode = False
43
45
  user_inputs = []
46
+ user_input_session = PromptSession()
44
47
  while True:
45
48
  await asyncio.sleep(0.01)
46
49
  ctx.print(stylize_faint("🧑 >> "), end="", plain=True)
47
- user_input = input()
50
+ user_input = await user_input_session.prompt_async()
51
+ # user_input = input()
48
52
  # Handle special input
49
53
  if user_input.strip().lower() in ("/bye", "/quit"):
50
54
  user_prompt = "\n".join(user_inputs)
@@ -3,23 +3,17 @@ from collections.abc import Callable
3
3
  from textwrap import dedent
4
4
  from typing import TYPE_CHECKING, Any, Coroutine
5
5
 
6
- if TYPE_CHECKING:
7
- from pydantic_ai import Tool
8
- from pydantic_ai.mcp import MCPServer
9
- from pydantic_ai.models import Model
10
- from pydantic_ai.settings import ModelSettings
11
- else:
12
- Tool = Any
13
- MCPServer = Any
14
- Model = Any
15
- ModelSettings = Any
16
-
17
6
  from zrb.context.any_context import AnyContext
18
7
  from zrb.task.llm.agent import create_agent_instance, run_agent_iteration
19
8
  from zrb.task.llm.config import get_model, get_model_settings
20
9
  from zrb.task.llm.prompt import get_combined_system_prompt
21
10
 
22
11
  if TYPE_CHECKING:
12
+ from pydantic_ai import Tool
13
+ from pydantic_ai.mcp import MCPServer
14
+ from pydantic_ai.models import Model
15
+ from pydantic_ai.settings import ModelSettings
16
+
23
17
  ToolOrCallable = Tool | Callable
24
18
  else:
25
19
  ToolOrCallable = Any
@@ -29,10 +23,10 @@ def create_sub_agent_tool(
29
23
  tool_name: str,
30
24
  tool_description: str,
31
25
  system_prompt: str | None = None,
32
- model: str | Model | None = None,
33
- model_settings: ModelSettings | None = None,
26
+ model: "str | Model | None" = None,
27
+ model_settings: "ModelSettings | None" = None,
34
28
  tools: list[ToolOrCallable] = [],
35
- mcp_servers: list[MCPServer] = [],
29
+ mcp_servers: list["MCPServer"] = [],
36
30
  ) -> Callable[[AnyContext, str], Coroutine[Any, Any, str]]:
37
31
  """
38
32
  Create an LLM "sub-agent" tool function for use by a main LLM agent.
@@ -11,7 +11,6 @@ from zrb.input.text_input import TextInput
11
11
  from zrb.task.make_task import make_task
12
12
  from zrb.util.file import read_file, write_file
13
13
  from zrb.util.todo import (
14
- TodoTaskModel,
15
14
  add_duration,
16
15
  cascade_todo_task,
17
16
  get_visual_todo_card,
@@ -72,6 +71,8 @@ def _get_filter_input(
72
71
  alias="add",
73
72
  )
74
73
  def add_todo(ctx: AnyContext):
74
+ from zrb.util.todo_model import TodoTaskModel
75
+
75
76
  todo_file_path = os.path.join(CFG.TODO_DIR, "todo.txt")
76
77
  todo_list: list[TodoTaskModel] = []
77
78
  if os.path.isfile(todo_file_path):
@@ -108,6 +109,8 @@ def add_todo(ctx: AnyContext):
108
109
  alias="list",
109
110
  )
110
111
  def list_todo(ctx: AnyContext):
112
+ from zrb.util.todo_model import TodoTaskModel
113
+
111
114
  todo_file_path = os.path.join(CFG.TODO_DIR, "todo.txt")
112
115
  todo_list: list[TodoTaskModel] = []
113
116
  if os.path.isfile(todo_file_path):
@@ -123,6 +126,8 @@ def list_todo(ctx: AnyContext):
123
126
  alias="show",
124
127
  )
125
128
  def show_todo(ctx: AnyContext):
129
+ from zrb.util.todo_model import TodoTaskModel
130
+
126
131
  todo_file_path = os.path.join(CFG.TODO_DIR, "todo.txt")
127
132
  todo_list: list[TodoTaskModel] = []
128
133
  todo_list: list[TodoTaskModel] = []
@@ -157,6 +162,8 @@ def show_todo(ctx: AnyContext):
157
162
  alias="complete",
158
163
  )
159
164
  def complete_todo(ctx: AnyContext):
165
+ from zrb.util.todo_model import TodoTaskModel
166
+
160
167
  todo_file_path = os.path.join(CFG.TODO_DIR, "todo.txt")
161
168
  todo_list: list[TodoTaskModel] = []
162
169
  if os.path.isfile(todo_file_path):
@@ -187,6 +194,8 @@ def complete_todo(ctx: AnyContext):
187
194
  alias="archive",
188
195
  )
189
196
  def archive_todo(ctx: AnyContext):
197
+ from zrb.util.todo_model import TodoTaskModel
198
+
190
199
  todo_file_path = os.path.join(CFG.TODO_DIR, "todo.txt")
191
200
  todo_list: list[TodoTaskModel] = []
192
201
  if os.path.isfile(todo_file_path):
@@ -248,6 +257,8 @@ def archive_todo(ctx: AnyContext):
248
257
  alias="log",
249
258
  )
250
259
  def log_todo(ctx: AnyContext):
260
+ from zrb.util.todo_model import TodoTaskModel
261
+
251
262
  todo_file_path = os.path.join(CFG.TODO_DIR, "todo.txt")
252
263
  todo_list: list[TodoTaskModel] = []
253
264
  if os.path.isfile(todo_file_path):
@@ -1,15 +1,12 @@
1
- from typing import TYPE_CHECKING, Any
1
+ from typing import TYPE_CHECKING
2
+
3
+ from zrb.config import CFG
2
4
 
3
5
  if TYPE_CHECKING:
4
6
  from pydantic_ai.models import Model
5
7
  from pydantic_ai.providers import Provider
6
8
  from pydantic_ai.settings import ModelSettings
7
- else:
8
- Model = Any
9
- ModelSettings = Any
10
- Provider = Any
11
9
 
12
- from zrb.config import CFG
13
10
 
14
11
  DEFAULT_PERSONA = (
15
12
  "You are a helpful and precise expert assistant. Your goal is to follow "
@@ -217,9 +214,9 @@ class LLMConfig:
217
214
  default_history_summarization_threshold: int | None = None,
218
215
  default_enrich_context: bool | None = None,
219
216
  default_context_enrichment_threshold: int | None = None,
220
- default_model: Model | None = None,
221
- default_model_settings: ModelSettings | None = None,
222
- default_model_provider: Provider | None = None,
217
+ default_model: "Model | None" = None,
218
+ default_model_settings: "ModelSettings | None" = None,
219
+ default_model_provider: "Provider | None" = None,
223
220
  ):
224
221
  self._default_model_name = default_model_name
225
222
  self._default_model_base_url = default_base_url
@@ -266,13 +263,13 @@ class LLMConfig:
266
263
  return CFG.LLM_API_KEY
267
264
 
268
265
  @property
269
- def default_model_settings(self) -> ModelSettings | None:
266
+ def default_model_settings(self) -> "ModelSettings | None":
270
267
  if self._default_model_settings is not None:
271
268
  return self._default_model_settings
272
269
  return None
273
270
 
274
271
  @property
275
- def default_model_provider(self) -> Provider | str:
272
+ def default_model_provider(self) -> "Provider | str":
276
273
  if self._default_model_provider is not None:
277
274
  return self._default_model_provider
278
275
  if self.default_model_base_url is None and self.default_model_api_key is None:
@@ -332,7 +329,7 @@ class LLMConfig:
332
329
  return DEFAULT_CONTEXT_ENRICHMENT_PROMPT
333
330
 
334
331
  @property
335
- def default_model(self) -> Model | str | None:
332
+ def default_model(self) -> "Model | str | None":
336
333
  if self._default_model is not None:
337
334
  return self._default_model
338
335
  model_name = self.default_model_name
@@ -396,10 +393,10 @@ class LLMConfig:
396
393
  def set_default_model_base_url(self, model_base_url: str):
397
394
  self._default_model_base_url = model_base_url
398
395
 
399
- def set_default_model_provider(self, provider: Provider | str):
396
+ def set_default_model_provider(self, provider: "Provider | str"):
400
397
  self._default_model_provider = provider
401
398
 
402
- def set_default_model(self, model: Model | str):
399
+ def set_default_model(self, model: "Model | str"):
403
400
  self._default_model = model
404
401
 
405
402
  def set_default_summarize_history(self, summarize_history: bool):
@@ -418,7 +415,7 @@ class LLMConfig:
418
415
  ):
419
416
  self._default_context_enrichment_threshold = context_enrichment_threshold
420
417
 
421
- def set_default_model_settings(self, model_settings: ModelSettings):
418
+ def set_default_model_settings(self, model_settings: "ModelSettings"):
422
419
  self._default_model_settings = model_settings
423
420
 
424
421
 
@@ -7,7 +7,6 @@ from zrb.context.shared_context import SharedContext
7
7
  from zrb.group.any_group import AnyGroup
8
8
  from zrb.group.group import Group
9
9
  from zrb.runner.common_util import get_run_kwargs
10
- from zrb.runner.web_app import create_web_app
11
10
  from zrb.runner.web_auth_config import web_auth_config
12
11
  from zrb.session.session import Session
13
12
  from zrb.session_state_logger.session_state_logger_factory import session_state_logger
@@ -187,6 +186,8 @@ server_group = cli.add_group(
187
186
  async def start_server(_: AnyContext):
188
187
  from uvicorn import Config, Server
189
188
 
189
+ from zrb.runner.web_app import create_web_app
190
+
190
191
  app = create_web_app(cli, web_auth_config, session_state_logger)
191
192
  server = Server(
192
193
  Config(
@@ -1,9 +1,11 @@
1
- from typing import Callable
1
+ from typing import TYPE_CHECKING, Callable
2
2
 
3
3
  from zrb.config import CFG
4
- from zrb.runner.web_schema.user import User
5
4
  from zrb.task.any_task import AnyTask
6
5
 
6
+ if TYPE_CHECKING:
7
+ from zrb.runner.web_schema.user import User
8
+
7
9
 
8
10
  class WebAuthConfig:
9
11
  def __init__(
@@ -18,7 +20,7 @@ class WebAuthConfig:
18
20
  super_admin_password: str | None = None,
19
21
  guest_username: str | None = None,
20
22
  guest_accessible_tasks: list[AnyTask | str] = [],
21
- find_user_by_username: Callable[[str], User | None] | None = None,
23
+ find_user_by_username: Callable[[str], "User | None"] | None = None,
22
24
  ):
23
25
  self._secret_key = secret_key
24
26
  self._access_token_expire_minutes = access_token_expire_minutes
@@ -29,7 +31,7 @@ class WebAuthConfig:
29
31
  self._super_admin_username = super_admin_username
30
32
  self._super_admin_password = super_admin_password
31
33
  self._guest_username = guest_username
32
- self._user_list = []
34
+ self._user_list: list["User"] = []
33
35
  self._guest_accessible_tasks = guest_accessible_tasks
34
36
  self._find_user_by_username = find_user_by_username
35
37
 
@@ -92,7 +94,9 @@ class WebAuthConfig:
92
94
  return self._guest_accessible_tasks
93
95
 
94
96
  @property
95
- def default_user(self) -> User:
97
+ def default_user(self) -> "User":
98
+ from zrb.runner.web_schema.user import User
99
+
96
100
  if self.enable_auth:
97
101
  return User(
98
102
  username=self.guest_username,
@@ -108,7 +112,9 @@ class WebAuthConfig:
108
112
  )
109
113
 
110
114
  @property
111
- def super_admin(self) -> User:
115
+ def super_admin(self) -> "User":
116
+ from zrb.runner.web_schema.user import User
117
+
112
118
  return User(
113
119
  username=self.super_admin_username,
114
120
  password=self.super_admin_password,
@@ -116,7 +122,7 @@ class WebAuthConfig:
116
122
  )
117
123
 
118
124
  @property
119
- def user_list(self) -> list[User]:
125
+ def user_list(self) -> list["User"]:
120
126
  if not self.enable_auth:
121
127
  return [self.default_user]
122
128
  return self._user_list + [self.super_admin, self.default_user]
@@ -152,11 +158,11 @@ class WebAuthConfig:
152
158
  self._guest_accessible_tasks = tasks
153
159
 
154
160
  def set_find_user_by_username(
155
- self, find_user_by_username: Callable[[str], User | None]
161
+ self, find_user_by_username: Callable[[str], "User | None"]
156
162
  ):
157
163
  self._find_user_by_username = find_user_by_username
158
164
 
159
- def append_user(self, user: User):
165
+ def append_user(self, user: "User"):
160
166
  duplicates = [
161
167
  existing_user
162
168
  for existing_user in self.user_list
@@ -166,7 +172,7 @@ class WebAuthConfig:
166
172
  raise ValueError(f"User already exists {user.username}")
167
173
  self._user_list.append(user)
168
174
 
169
- def find_user_by_username(self, username: str) -> User | None:
175
+ def find_user_by_username(self, username: str) -> "User | None":
170
176
  user = None
171
177
  if self._find_user_by_username is not None:
172
178
  user = self._find_user_by_username(username)
@@ -9,16 +9,18 @@ from zrb.runner.web_auth_config import WebAuthConfig
9
9
  from zrb.runner.web_schema.session import NewSessionResponse
10
10
  from zrb.runner.web_util.user import get_user_from_request
11
11
  from zrb.session.session import Session
12
- from zrb.session_state_log.session_state_log import SessionStateLog, SessionStateLogList
13
12
  from zrb.session_state_logger.any_session_state_logger import AnySessionStateLogger
14
13
  from zrb.task.any_task import AnyTask
15
14
  from zrb.util.group import NodeNotFoundError, extract_node_from_args, get_node_path
16
15
 
17
16
  if TYPE_CHECKING:
18
- # We want fastapi to only be loaded when necessary to decrease footprint
19
-
20
17
  from fastapi import FastAPI
21
18
 
19
+ from zrb.session_state_log.session_state_log import (
20
+ SessionStateLog,
21
+ SessionStateLogList,
22
+ )
23
+
22
24
 
23
25
  def serve_task_session_api(
24
26
  app: "FastAPI",
@@ -30,6 +32,11 @@ def serve_task_session_api(
30
32
  from fastapi import Query, Request
31
33
  from fastapi.responses import JSONResponse
32
34
 
35
+ from zrb.session_state_log.session_state_log import (
36
+ SessionStateLog,
37
+ SessionStateLogList,
38
+ )
39
+
33
40
  @app.post("/api/v1/task-sessions/{path:path}")
34
41
  async def create_new_task_session_api(
35
42
  path: str,
@@ -110,8 +117,10 @@ def serve_task_session_api(
110
117
 
111
118
 
112
119
  def sanitize_session_state_log_list(
113
- task: AnyTask, session_state_log_list: SessionStateLogList
114
- ) -> SessionStateLogList:
120
+ task: AnyTask, session_state_log_list: "SessionStateLogList"
121
+ ) -> "SessionStateLogList":
122
+ from zrb.session_state_log.session_state_log import SessionStateLogList
123
+
115
124
  return SessionStateLogList(
116
125
  total=session_state_log_list.total,
117
126
  data=[
@@ -122,8 +131,8 @@ def sanitize_session_state_log_list(
122
131
 
123
132
 
124
133
  def sanitize_session_state_log(
125
- task: AnyTask, session_state_log: SessionStateLog
126
- ) -> SessionStateLog:
134
+ task: AnyTask, session_state_log: "SessionStateLog"
135
+ ) -> "SessionStateLog":
127
136
  """
128
137
  In session, we create snake_case aliases of inputs.
129
138
  The purpose was to increase ergonomics, so that user can use `input.system_prompt`
@@ -131,6 +140,8 @@ def sanitize_session_state_log(
131
140
  However, when we serve the session through HTTP API,
132
141
  we only want to show the original input names.
133
142
  """
143
+ from zrb.session_state_log.session_state_log import SessionStateLog
144
+
134
145
  enhanced_inputs = session_state_log.input
135
146
  real_inputs = {}
136
147
  for real_input in task.inputs:
@@ -5,13 +5,14 @@ from typing import TYPE_CHECKING, Any, Coroutine, TypeVar
5
5
 
6
6
  from zrb.context.any_context import AnyContext
7
7
  from zrb.group.any_group import AnyGroup
8
- from zrb.session_state_log.session_state_log import SessionStateLog
9
8
  from zrb.session_state_logger.any_session_state_logger import AnySessionStateLogger
10
9
  from zrb.task_status.task_status import TaskStatus
11
10
 
12
11
  if TYPE_CHECKING:
13
- from zrb.context import any_shared_context
14
- from zrb.task import any_task
12
+ from zrb.context.any_shared_context import AnySharedContext
13
+ from zrb.session_state_log.session_state_log import SessionStateLog
14
+ from zrb.task.any_task import AnyTask
15
+
15
16
 
16
17
  TAnySession = TypeVar("TAnySession", bound="AnySession")
17
18
 
@@ -44,7 +45,7 @@ class AnySession(ABC):
44
45
 
45
46
  @property
46
47
  @abstractmethod
47
- def shared_ctx(self) -> any_shared_context.AnySharedContext:
48
+ def shared_ctx(self) -> "AnySharedContext":
48
49
  """Shared context for this session"""
49
50
  pass
50
51
 
@@ -83,16 +84,16 @@ class AnySession(ABC):
83
84
  pass
84
85
 
85
86
  @abstractmethod
86
- def set_main_task(self, main_task: any_task.AnyTask):
87
+ def set_main_task(self, main_task: "AnyTask"):
87
88
  """Set main task"""
88
89
  pass
89
90
 
90
91
  @abstractmethod
91
- def as_state_log(self) -> SessionStateLog:
92
+ def as_state_log(self) -> "SessionStateLog":
92
93
  pass
93
94
 
94
95
  @abstractmethod
95
- def get_ctx(self, task: any_task.AnyTask) -> AnyContext:
96
+ def get_ctx(self, task: "AnyTask") -> AnyContext:
96
97
  """Retrieves the context for a specific task.
97
98
 
98
99
  Args:
@@ -104,7 +105,7 @@ class AnySession(ABC):
104
105
  pass
105
106
 
106
107
  @abstractmethod
107
- def defer_monitoring(self, task: any_task.AnyTask, coro: Coroutine):
108
+ def defer_monitoring(self, task: "AnyTask", coro: Coroutine):
108
109
  """Defers the execution of a task's monitoring coroutine for later processing.
109
110
 
110
111
  Args:
@@ -114,7 +115,7 @@ class AnySession(ABC):
114
115
  pass
115
116
 
116
117
  @abstractmethod
117
- def defer_action(self, task: any_task.AnyTask, coro: Coroutine):
118
+ def defer_action(self, task: "AnyTask", coro: Coroutine):
118
119
  """Defers the execution of a task's coroutine for later processing.
119
120
 
120
121
  Args:
@@ -138,7 +139,7 @@ class AnySession(ABC):
138
139
  pass
139
140
 
140
141
  @abstractmethod
141
- def register_task(self, task: any_task.AnyTask):
142
+ def register_task(self, task: "AnyTask"):
142
143
  """Registers a new task in the session.
143
144
 
144
145
  Args:
@@ -147,7 +148,7 @@ class AnySession(ABC):
147
148
  pass
148
149
 
149
150
  @abstractmethod
150
- def get_root_tasks(self, task: any_task.AnyTask) -> list[any_task.AnyTask]:
151
+ def get_root_tasks(self, task: "AnyTask") -> list["AnyTask"]:
151
152
  """Retrieves the list of root tasks that should be executed first
152
153
  to run the given task.
153
154
 
@@ -160,7 +161,7 @@ class AnySession(ABC):
160
161
  pass
161
162
 
162
163
  @abstractmethod
163
- def get_next_tasks(self, task: any_task.AnyTask) -> list[any_task.AnyTask]:
164
+ def get_next_tasks(self, task: "AnyTask") -> list["AnyTask"]:
164
165
  """Retrieves the list of tasks that should be executed after the given task.
165
166
 
166
167
  Args:
@@ -172,7 +173,7 @@ class AnySession(ABC):
172
173
  pass
173
174
 
174
175
  @abstractmethod
175
- def get_task_status(self, task: any_task.AnyTask) -> TaskStatus:
176
+ def get_task_status(self, task: "AnyTask") -> TaskStatus:
176
177
  """Get tasks' status.
177
178
 
178
179
  Args:
@@ -184,7 +185,7 @@ class AnySession(ABC):
184
185
  pass
185
186
 
186
187
  @abstractmethod
187
- def is_allowed_to_run(self, task: any_task.AnyTask):
188
+ def is_allowed_to_run(self, task: "AnyTask"):
188
189
  """Determines if the specified task is allowed to run based on its current state.
189
190
 
190
191
  Args:
@@ -1,15 +1,10 @@
1
1
  import asyncio
2
- from typing import Any, Coroutine
2
+ from typing import TYPE_CHECKING, Any, Coroutine
3
3
 
4
4
  from zrb.context.any_shared_context import AnySharedContext
5
5
  from zrb.context.context import AnyContext, Context
6
6
  from zrb.group.any_group import AnyGroup
7
7
  from zrb.session.any_session import AnySession
8
- from zrb.session_state_log.session_state_log import (
9
- SessionStateLog,
10
- TaskStatusHistoryStateLog,
11
- TaskStatusStateLog,
12
- )
13
8
  from zrb.session_state_logger.any_session_state_logger import AnySessionStateLogger
14
9
  from zrb.session_state_logger.session_state_logger_factory import session_state_logger
15
10
  from zrb.task.any_task import AnyTask
@@ -32,6 +27,9 @@ from zrb.util.group import get_node_path
32
27
  from zrb.util.string.name import get_random_name
33
28
  from zrb.xcom.xcom import Xcom
34
29
 
30
+ if TYPE_CHECKING:
31
+ from zrb.session_state_log.session_state_log import SessionStateLog
32
+
35
33
 
36
34
  class Session(AnySession):
37
35
  def __init__(
@@ -139,7 +137,13 @@ class Session(AnySession):
139
137
  main_task_path = get_node_path(self._root_group, main_task)
140
138
  self._main_task_path = [] if main_task_path is None else main_task_path
141
139
 
142
- def as_state_log(self) -> SessionStateLog:
140
+ def as_state_log(self) -> "SessionStateLog":
141
+ from zrb.session_state_log.session_state_log import (
142
+ SessionStateLog,
143
+ TaskStatusHistoryStateLog,
144
+ TaskStatusStateLog,
145
+ )
146
+
143
147
  task_status_log: dict[str, TaskStatusStateLog] = {}
144
148
  log_start_time = ""
145
149
  for task, task_status in self._task_status.items():
@@ -1,16 +1,21 @@
1
1
  import datetime
2
2
  from abc import ABC, abstractmethod
3
+ from typing import TYPE_CHECKING
3
4
 
4
- from zrb.session_state_log.session_state_log import SessionStateLog, SessionStateLogList
5
+ if TYPE_CHECKING:
6
+ from zrb.session_state_log.session_state_log import (
7
+ SessionStateLog,
8
+ SessionStateLogList,
9
+ )
5
10
 
6
11
 
7
12
  class AnySessionStateLogger(ABC):
8
13
  @abstractmethod
9
- def write(self, session_log: SessionStateLog):
14
+ def write(self, session_log: "SessionStateLog"):
10
15
  pass
11
16
 
12
17
  @abstractmethod
13
- def read(self, session_name: str) -> SessionStateLog:
18
+ def read(self, session_name: str) -> "SessionStateLog":
14
19
  pass
15
20
 
16
21
  @abstractmethod
@@ -21,5 +26,5 @@ class AnySessionStateLogger(ABC):
21
26
  max_start_time: datetime.datetime,
22
27
  page: int = 0,
23
28
  limit: int = 10,
24
- ) -> SessionStateLogList:
29
+ ) -> "SessionStateLogList":
25
30
  pass
@@ -1,16 +1,22 @@
1
1
  import datetime
2
2
  import os
3
+ from typing import TYPE_CHECKING
3
4
 
4
- from zrb.session_state_log.session_state_log import SessionStateLog, SessionStateLogList
5
5
  from zrb.session_state_logger.any_session_state_logger import AnySessionStateLogger
6
6
  from zrb.util.file import read_file, write_file
7
7
 
8
+ if TYPE_CHECKING:
9
+ from zrb.session_state_log.session_state_log import (
10
+ SessionStateLog,
11
+ SessionStateLogList,
12
+ )
13
+
8
14
 
9
15
  class FileSessionStateLogger(AnySessionStateLogger):
10
16
  def __init__(self, session_log_dir: str):
11
17
  self._session_log_dir = session_log_dir
12
18
 
13
- def write(self, session_log: SessionStateLog):
19
+ def write(self, session_log: "SessionStateLog"):
14
20
  session_file_path = self._get_session_file_path(session_log.name)
15
21
  session_dir_path = os.path.dirname(session_file_path)
16
22
  if not os.path.isdir(session_dir_path):
@@ -22,7 +28,9 @@ class FileSessionStateLogger(AnySessionStateLogger):
22
28
  timeline_dir_path = self._get_timeline_dir_path(session_log)
23
29
  write_file(os.path.join(timeline_dir_path, session_log.name), "")
24
30
 
25
- def read(self, session_name: str) -> SessionStateLog:
31
+ def read(self, session_name: str) -> "SessionStateLog":
32
+ from zrb.session_state_log.session_state_log import SessionStateLog
33
+
26
34
  session_file_path = self._get_session_file_path(session_name)
27
35
  return SessionStateLog.model_validate_json(read_file(session_file_path))
28
36
 
@@ -33,7 +41,9 @@ class FileSessionStateLogger(AnySessionStateLogger):
33
41
  max_start_time: datetime.datetime,
34
42
  page: int = 0,
35
43
  limit: int = 10,
36
- ) -> SessionStateLogList:
44
+ ) -> "SessionStateLogList":
45
+ from zrb.session_state_log.session_state_log import SessionStateLogList
46
+
37
47
  matching_sessions = []
38
48
  # Traverse the timeline directory and filter sessions
39
49
  timeline_dir = os.path.join(self._session_log_dir, "_timeline", *task_path)
@@ -62,7 +72,7 @@ class FileSessionStateLogger(AnySessionStateLogger):
62
72
  def _get_session_file_path(self, session_name: str) -> str:
63
73
  return os.path.join(self._session_log_dir, f"{session_name}.json")
64
74
 
65
- def _get_timeline_dir_path(self, session_log: SessionStateLog) -> str:
75
+ def _get_timeline_dir_path(self, session_log: "SessionStateLog") -> str:
66
76
  start_time = self._get_start_time(session_log)
67
77
  year = start_time.year
68
78
  month = start_time.month
@@ -80,7 +90,7 @@ class FileSessionStateLogger(AnySessionStateLogger):
80
90
  ]
81
91
  return os.path.join(self._session_log_dir, "_timeline", *paths)
82
92
 
83
- def _get_start_time(self, session_log: SessionStateLog) -> datetime.datetime:
93
+ def _get_start_time(self, session_log: "SessionStateLog") -> datetime.datetime:
84
94
  return datetime.datetime.strptime(
85
95
  session_log.start_time, "%Y-%m-%d %H:%M:%S.%f"
86
96
  )