zrb 1.8.12__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.12 → zrb-1.8.14}/PKG-INFO +2 -1
  2. {zrb-1.8.12 → zrb-1.8.14}/pyproject.toml +2 -1
  3. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/llm/chat_session.py +10 -2
  4. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/llm/tool/sub_agent.py +8 -14
  5. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/todo.py +12 -1
  6. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/config.py +4 -0
  7. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/llm_config.py +33 -16
  8. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/cli.py +2 -1
  9. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_auth_config.py +16 -10
  10. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/task_session_api_route.py +18 -7
  11. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/session/any_session.py +15 -14
  12. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/session/session.py +11 -7
  13. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/session_state_logger/any_session_state_logger.py +9 -4
  14. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/session_state_logger/file_session_state_logger.py +16 -6
  15. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/any_task.py +11 -8
  16. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/file.py +3 -2
  17. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/todo.py +17 -50
  18. zrb-1.8.14/src/zrb/util/todo_model.py +40 -0
  19. {zrb-1.8.12 → zrb-1.8.14}/README.md +0 -0
  20. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/__init__.py +0 -0
  21. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/__main__.py +0 -0
  22. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/attr/__init__.py +0 -0
  23. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/attr/type.py +0 -0
  24. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/__init__.py +0 -0
  25. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/base64.py +0 -0
  26. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/git.py +0 -0
  27. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/git_subtree.py +0 -0
  28. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/group.py +0 -0
  29. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/http.py +0 -0
  30. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/jwt.py +0 -0
  31. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/llm/history.py +0 -0
  32. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/llm/input.py +0 -0
  33. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/llm/llm_ask.py +0 -0
  34. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/llm/previous-session.js +0 -0
  35. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/llm/tool/__init__.py +0 -0
  36. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/llm/tool/api.py +0 -0
  37. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/llm/tool/cli.py +0 -0
  38. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/llm/tool/code.py +0 -0
  39. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/llm/tool/file.py +0 -0
  40. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/llm/tool/rag.py +0 -0
  41. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/llm/tool/web.py +0 -0
  42. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/md5.py +0 -0
  43. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/__init__.py +0 -0
  44. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  45. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
  46. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
  47. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  48. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  49. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  50. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  51. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
  52. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
  53. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  54. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
  55. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  56. {zrb-1.8.12 → 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
  57. {zrb-1.8.12 → 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
  58. {zrb-1.8.12 → 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
  59. {zrb-1.8.12 → 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
  60. {zrb-1.8.12 → 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
  61. {zrb-1.8.12 → 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
  62. {zrb-1.8.12 → 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
  63. {zrb-1.8.12 → 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
  64. {zrb-1.8.12 → 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
  65. {zrb-1.8.12 → 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
  66. {zrb-1.8.12 → 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
  67. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  68. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  69. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
  70. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  71. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  72. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  73. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
  74. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  75. {zrb-1.8.12 → 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
  76. {zrb-1.8.12 → 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
  77. {zrb-1.8.12 → 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
  78. {zrb-1.8.12 → 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
  79. {zrb-1.8.12 → 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
  80. {zrb-1.8.12 → 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
  81. {zrb-1.8.12 → 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
  82. {zrb-1.8.12 → 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
  83. {zrb-1.8.12 → 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
  84. {zrb-1.8.12 → 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
  85. {zrb-1.8.12 → 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
  86. {zrb-1.8.12 → 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
  87. {zrb-1.8.12 → 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
  88. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  89. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
  90. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  91. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
  92. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  93. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  94. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  95. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  96. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  97. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  98. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  99. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  100. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  101. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  102. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  103. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  104. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  105. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  106. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  107. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  108. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  109. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  110. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  111. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  112. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  113. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  114. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  115. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  116. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  117. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  118. {zrb-1.8.12 → 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
  119. {zrb-1.8.12 → 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
  120. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  121. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  122. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  123. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  124. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
  125. {zrb-1.8.12 → 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
  126. {zrb-1.8.12 → 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
  127. {zrb-1.8.12 → 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
  128. {zrb-1.8.12 → 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
  129. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  130. {zrb-1.8.12 → 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
  131. {zrb-1.8.12 → 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
  132. {zrb-1.8.12 → 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
  133. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
  134. {zrb-1.8.12 → 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
  135. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  136. {zrb-1.8.12 → 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
  137. {zrb-1.8.12 → 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
  138. {zrb-1.8.12 → 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
  139. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
  140. {zrb-1.8.12 → 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
  141. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  142. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
  143. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  144. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  145. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  146. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  147. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  148. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  149. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
  150. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  151. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
  152. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  153. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
  154. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
  155. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
  156. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  157. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  158. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
  159. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
  160. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
  161. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
  162. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
  163. {zrb-1.8.12 → 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
  164. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
  165. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
  166. {zrb-1.8.12 → 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
  167. {zrb-1.8.12 → 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
  168. {zrb-1.8.12 → 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
  169. {zrb-1.8.12 → 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
  170. {zrb-1.8.12 → 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
  171. {zrb-1.8.12 → 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
  172. {zrb-1.8.12 → 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
  173. {zrb-1.8.12 → 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
  174. {zrb-1.8.12 → 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
  175. {zrb-1.8.12 → 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
  176. {zrb-1.8.12 → 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
  177. {zrb-1.8.12 → 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
  178. {zrb-1.8.12 → 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
  179. {zrb-1.8.12 → 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
  180. {zrb-1.8.12 → 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
  181. {zrb-1.8.12 → 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
  182. {zrb-1.8.12 → 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
  183. {zrb-1.8.12 → 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
  184. {zrb-1.8.12 → 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
  185. {zrb-1.8.12 → 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
  186. {zrb-1.8.12 → 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
  187. {zrb-1.8.12 → 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
  188. {zrb-1.8.12 → 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
  189. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  190. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
  191. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  192. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  193. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  194. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  195. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  196. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
  197. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
  198. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
  199. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
  200. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
  201. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
  202. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
  203. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
  204. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
  205. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
  206. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  207. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/create/__init__.py +0 -0
  208. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  209. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  210. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/project/create/project_task.py +0 -0
  211. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/python.py +0 -0
  212. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/random.py +0 -0
  213. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  214. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  215. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/setup/common_input.py +0 -0
  216. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  217. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  218. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  219. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  220. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/setup/ubuntu.py +0 -0
  221. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
  222. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
  223. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
  224. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/shell/__init__.py +0 -0
  225. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  226. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  227. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  228. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  229. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/builtin/uuid.py +0 -0
  230. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/callback/__init__.py +0 -0
  231. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/callback/any_callback.py +0 -0
  232. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/callback/callback.py +0 -0
  233. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/cmd/__init__.py +0 -0
  234. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/cmd/cmd_result.py +0 -0
  235. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/cmd/cmd_val.py +0 -0
  236. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/content_transformer/__init__.py +0 -0
  237. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  238. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/content_transformer/content_transformer.py +0 -0
  239. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/context/__init__.py +0 -0
  240. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/context/any_context.py +0 -0
  241. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/context/any_shared_context.py +0 -0
  242. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/context/context.py +0 -0
  243. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/context/shared_context.py +0 -0
  244. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/dot_dict/__init__.py +0 -0
  245. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/dot_dict/dot_dict.py +0 -0
  246. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/env/__init__.py +0 -0
  247. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/env/any_env.py +0 -0
  248. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/env/env.py +0 -0
  249. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/env/env_file.py +0 -0
  250. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/env/env_map.py +0 -0
  251. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/group/__init__.py +0 -0
  252. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/group/any_group.py +0 -0
  253. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/group/group.py +0 -0
  254. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/input/__init__.py +0 -0
  255. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/input/any_input.py +0 -0
  256. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/input/base_input.py +0 -0
  257. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/input/bool_input.py +0 -0
  258. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/input/float_input.py +0 -0
  259. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/input/int_input.py +0 -0
  260. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/input/option_input.py +0 -0
  261. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/input/password_input.py +0 -0
  262. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/input/str_input.py +0 -0
  263. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/input/text_input.py +0 -0
  264. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/llm_rate_limitter.py +0 -0
  265. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/__init__.py +0 -0
  266. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/common_util.py +0 -0
  267. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_app.py +0 -0
  268. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/__init__.py +0 -0
  269. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/docs_route.py +0 -0
  270. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  271. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  272. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/error_page/view.html +0 -0
  273. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  274. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  275. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/home_page/view.html +0 -0
  276. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/login_api_route.py +0 -0
  277. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  278. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/login_page/view.html +0 -0
  279. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  280. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  281. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  282. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  283. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  284. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  285. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  286. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  287. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
  288. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  289. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/global_template.html +0 -0
  290. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  291. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  292. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/common.js +0 -0
  293. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  294. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  295. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  296. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.amber.min.css +0 -0
  297. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.blue.min.css +0 -0
  298. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.cyan.min.css +0 -0
  299. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.fuchsia.min.css +0 -0
  300. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.green.min.css +0 -0
  301. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.grey.min.css +0 -0
  302. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.indigo.min.css +0 -0
  303. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.jade.min.css +0 -0
  304. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.lime.min.css +0 -0
  305. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.min.css +0 -0
  306. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.orange.min.css +0 -0
  307. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.pink.min.css +0 -0
  308. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.pumpkin.min.css +0 -0
  309. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.purple.min.css +0 -0
  310. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.red.min.css +0 -0
  311. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.sand.min.css +0 -0
  312. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.slate.min.css +0 -0
  313. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.violet.min.css +0 -0
  314. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.yellow.min.css +0 -0
  315. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/pico-css/pico.zinc.min.css +0 -0
  316. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  317. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
  318. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
  319. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  320. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/static/static_route.py +0 -0
  321. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  322. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_schema/session.py +0 -0
  323. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_schema/token.py +0 -0
  324. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_schema/user.py +0 -0
  325. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_util/cookie.py +0 -0
  326. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_util/html.py +0 -0
  327. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_util/token.py +0 -0
  328. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/runner/web_util/user.py +0 -0
  329. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/session/__init__.py +0 -0
  330. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/session_state_log/__init__.py +0 -0
  331. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/session_state_log/session_state_log.py +0 -0
  332. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/session_state_logger/__init__.py +0 -0
  333. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  334. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/__init__.py +0 -0
  335. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/base/__init__.py +0 -0
  336. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/base/context.py +0 -0
  337. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/base/execution.py +0 -0
  338. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/base/lifecycle.py +0 -0
  339. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/base/monitoring.py +0 -0
  340. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/base/operators.py +0 -0
  341. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/base_task.py +0 -0
  342. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/base_trigger.py +0 -0
  343. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/cmd_task.py +0 -0
  344. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/http_check.py +0 -0
  345. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/llm/__init__.py +0 -0
  346. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/llm/agent.py +0 -0
  347. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/llm/config.py +0 -0
  348. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/llm/context.py +0 -0
  349. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/llm/context_enrichment.py +0 -0
  350. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/llm/error.py +0 -0
  351. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/llm/history.py +0 -0
  352. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/llm/history_summarization.py +0 -0
  353. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/llm/print_node.py +0 -0
  354. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/llm/prompt.py +0 -0
  355. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/llm/tool_wrapper.py +0 -0
  356. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/llm/typing.py +0 -0
  357. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/llm_task.py +0 -0
  358. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/make_task.py +0 -0
  359. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/rsync_task.py +0 -0
  360. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/scaffolder.py +0 -0
  361. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/scheduler.py +0 -0
  362. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/task.py +0 -0
  363. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task/tcp_check.py +0 -0
  364. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task_status/__init__.py +0 -0
  365. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/task_status/task_status.py +0 -0
  366. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/__init__.py +0 -0
  367. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/attr.py +0 -0
  368. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/cli/__init__.py +0 -0
  369. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/cli/style.py +0 -0
  370. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/cli/subcommand.py +0 -0
  371. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/cmd/__init__.py +0 -0
  372. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/cmd/command.py +0 -0
  373. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/cmd/remote.py +0 -0
  374. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/codemod/__init__.py +0 -0
  375. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/codemod/modification_mode.py +0 -0
  376. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/codemod/modify_class.py +0 -0
  377. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/codemod/modify_class_parent.py +0 -0
  378. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/codemod/modify_class_property.py +0 -0
  379. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/codemod/modify_dict.py +0 -0
  380. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/codemod/modify_function.py +0 -0
  381. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/codemod/modify_function_call.py +0 -0
  382. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/codemod/modify_method.py +0 -0
  383. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/codemod/modify_module.py +0 -0
  384. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/cron.py +0 -0
  385. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/git.py +0 -0
  386. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/git_subtree.py +0 -0
  387. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/group.py +0 -0
  388. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/init_path.py +0 -0
  389. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/load.py +0 -0
  390. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/run.py +0 -0
  391. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/string/__init__.py +0 -0
  392. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/string/conversion.py +0 -0
  393. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/string/format.py +0 -0
  394. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/util/string/name.py +0 -0
  395. {zrb-1.8.12 → zrb-1.8.14}/src/zrb/xcom/__init__.py +0 -0
  396. {zrb-1.8.12 → 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.12
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.12"
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
@@ -8,6 +8,7 @@ conversation flow via XCom.
8
8
  import asyncio
9
9
 
10
10
  from zrb.context.any_context import AnyContext
11
+ from zrb.llm_config import llm_config
11
12
  from zrb.util.cli.style import stylize_bold_yellow, stylize_faint
12
13
 
13
14
 
@@ -24,6 +25,8 @@ async def read_user_prompt(ctx: AnyContext) -> str:
24
25
  Returns:
25
26
  The final result from the LLM session.
26
27
  """
28
+ from prompt_toolkit import PromptSession
29
+
27
30
  _show_info(ctx)
28
31
  final_result = ""
29
32
  ctx.print(stylize_faint("🧑 >> ") + f"{ctx.input.message}", plain=True)
@@ -40,10 +43,12 @@ async def read_user_prompt(ctx: AnyContext) -> str:
40
43
  return final_result
41
44
  multiline_mode = False
42
45
  user_inputs = []
46
+ user_input_session = PromptSession()
43
47
  while True:
44
48
  await asyncio.sleep(0.01)
45
49
  ctx.print(stylize_faint("🧑 >> "), end="", plain=True)
46
- user_input = input()
50
+ user_input = await user_input_session.prompt_async()
51
+ # user_input = input()
47
52
  # Handle special input
48
53
  if user_input.strip().lower() in ("/bye", "/quit"):
49
54
  user_prompt = "\n".join(user_inputs)
@@ -113,11 +118,14 @@ def get_llm_ask_input_mapping(callback_ctx: AnyContext):
113
118
  A dictionary containing the input mapping for the LLM ask task.
114
119
  """
115
120
  data = callback_ctx.xcom.ask_trigger.pop()
121
+ system_prompt = callback_ctx.input.system_prompt
122
+ if system_prompt is None or system_prompt.strip() == "":
123
+ system_prompt = llm_config.default_interactive_system_prompt
116
124
  return {
117
125
  "model": callback_ctx.input.model,
118
126
  "base-url": callback_ctx.input.base_url,
119
127
  "api-key": callback_ctx.input.api_key,
120
- "system-prompt": callback_ctx.input.system_prompt,
128
+ "system-prompt": system_prompt,
121
129
  "start-new": data.get("start_new"),
122
130
  "previous-session": data.get("previous_session_name"),
123
131
  "message": data.get("message"),
@@ -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):
@@ -225,6 +225,10 @@ class Config:
225
225
  def LLM_SYSTEM_PROMPT(self) -> str | None:
226
226
  return os.getenv("ZRB_LLM_SYSTEM_PROMPT", None)
227
227
 
228
+ @property
229
+ def LLM_INTERACTIVE_SYSTEM_PROMPT(self) -> str | None:
230
+ return os.getenv("ZRB_LLM_INTERACTIVE_SYSTEM_PROMPT", None)
231
+
228
232
  @property
229
233
  def LLM_PERSONA(self) -> str | None:
230
234
  return os.getenv("ZRB_LLM_PERSONA", None)
@@ -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 "
@@ -17,7 +14,7 @@ DEFAULT_PERSONA = (
17
14
  "straight to the point."
18
15
  ).strip()
19
16
 
20
- DEFAULT_SYSTEM_PROMPT = (
17
+ DEFAULT_INTERACTIVE_SYSTEM_PROMPT = (
21
18
  "You have access to tools and two forms of memory:\n"
22
19
  "1. A structured summary of the immediate task (including a payload) AND "
23
20
  "the raw text of the last few turns.\n"
@@ -50,6 +47,13 @@ DEFAULT_SYSTEM_PROMPT = (
50
47
  "guess."
51
48
  ).strip()
52
49
 
50
+ DEFAULT_SYSTEM_PROMPT = (
51
+ "You are a helpful and precise expert assistant. Your goal is to "
52
+ "follow instructions carefully to provide an accurate and efficient answer. "
53
+ "Fulfill the user's request directly. Use your tools if necessary. "
54
+ "Get straight to the point."
55
+ ).strip()
56
+
53
57
  DEFAULT_SPECIAL_INSTRUCTION_PROMPT = (
54
58
  "## Technical Task Protocol\n"
55
59
  "When performing technical tasks, strictly follow this protocol.\n\n"
@@ -202,6 +206,7 @@ class LLMConfig:
202
206
  default_api_key: str | None = None,
203
207
  default_persona: str | None = None,
204
208
  default_system_prompt: str | None = None,
209
+ default_interactive_system_prompt: str | None = None,
205
210
  default_special_instruction_prompt: str | None = None,
206
211
  default_summarization_prompt: str | None = None,
207
212
  default_context_enrichment_prompt: str | None = None,
@@ -209,15 +214,16 @@ class LLMConfig:
209
214
  default_history_summarization_threshold: int | None = None,
210
215
  default_enrich_context: bool | None = None,
211
216
  default_context_enrichment_threshold: int | None = None,
212
- default_model: Model | None = None,
213
- default_model_settings: ModelSettings | None = None,
214
- 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,
215
220
  ):
216
221
  self._default_model_name = default_model_name
217
222
  self._default_model_base_url = default_base_url
218
223
  self._default_model_api_key = default_api_key
219
224
  self._default_persona = default_persona
220
225
  self._default_system_prompt = default_system_prompt
226
+ self._default_interactive_system_prompt = default_interactive_system_prompt
221
227
  self._default_special_instruction_prompt = default_special_instruction_prompt
222
228
  self._default_summarization_prompt = default_summarization_prompt
223
229
  self._default_context_enrichment_prompt = default_context_enrichment_prompt
@@ -257,13 +263,13 @@ class LLMConfig:
257
263
  return CFG.LLM_API_KEY
258
264
 
259
265
  @property
260
- def default_model_settings(self) -> ModelSettings | None:
266
+ def default_model_settings(self) -> "ModelSettings | None":
261
267
  if self._default_model_settings is not None:
262
268
  return self._default_model_settings
263
269
  return None
264
270
 
265
271
  @property
266
- def default_model_provider(self) -> Provider | str:
272
+ def default_model_provider(self) -> "Provider | str":
267
273
  if self._default_model_provider is not None:
268
274
  return self._default_model_provider
269
275
  if self.default_model_base_url is None and self.default_model_api_key is None:
@@ -282,6 +288,14 @@ class LLMConfig:
282
288
  return CFG.LLM_SYSTEM_PROMPT
283
289
  return DEFAULT_SYSTEM_PROMPT
284
290
 
291
+ @property
292
+ def default_interactive_system_prompt(self) -> str:
293
+ if self._default_interactive_system_prompt is not None:
294
+ return self._default_interactive_system_prompt
295
+ if CFG.LLM_INTERACTIVE_SYSTEM_PROMPT is not None:
296
+ return CFG.LLM_INTERACTIVE_SYSTEM_PROMPT
297
+ return DEFAULT_INTERACTIVE_SYSTEM_PROMPT
298
+
285
299
  @property
286
300
  def default_persona(self) -> str:
287
301
  if self._default_persona is not None:
@@ -315,7 +329,7 @@ class LLMConfig:
315
329
  return DEFAULT_CONTEXT_ENRICHMENT_PROMPT
316
330
 
317
331
  @property
318
- def default_model(self) -> Model | str | None:
332
+ def default_model(self) -> "Model | str | None":
319
333
  if self._default_model is not None:
320
334
  return self._default_model
321
335
  model_name = self.default_model_name
@@ -358,6 +372,9 @@ class LLMConfig:
358
372
  def set_default_system_prompt(self, system_prompt: str):
359
373
  self._default_system_prompt = system_prompt
360
374
 
375
+ def set_default_interactive_system_prompt(self, interactive_system_prompt: str):
376
+ self._default_interactive_system_prompt = interactive_system_prompt
377
+
361
378
  def set_default_special_instruction_prompt(self, special_instruction_prompt: str):
362
379
  self._default_special_instruction_prompt = special_instruction_prompt
363
380
 
@@ -376,10 +393,10 @@ class LLMConfig:
376
393
  def set_default_model_base_url(self, model_base_url: str):
377
394
  self._default_model_base_url = model_base_url
378
395
 
379
- def set_default_model_provider(self, provider: Provider | str):
396
+ def set_default_model_provider(self, provider: "Provider | str"):
380
397
  self._default_model_provider = provider
381
398
 
382
- def set_default_model(self, model: Model | str):
399
+ def set_default_model(self, model: "Model | str"):
383
400
  self._default_model = model
384
401
 
385
402
  def set_default_summarize_history(self, summarize_history: bool):
@@ -398,7 +415,7 @@ class LLMConfig:
398
415
  ):
399
416
  self._default_context_enrichment_threshold = context_enrichment_threshold
400
417
 
401
- def set_default_model_settings(self, model_settings: ModelSettings):
418
+ def set_default_model_settings(self, model_settings: "ModelSettings"):
402
419
  self._default_model_settings = model_settings
403
420
 
404
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