zrb 1.15.25__tar.gz → 1.15.26__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 (415) hide show
  1. {zrb-1.15.25 → zrb-1.15.26}/PKG-INFO +1 -1
  2. {zrb-1.15.25 → zrb-1.15.26}/pyproject.toml +1 -1
  3. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/llm/llm_ask.py +1 -1
  4. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/context/any_shared_context.py +7 -1
  5. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/context/shared_context.py +2 -2
  6. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_util/user.py +7 -3
  7. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/session/any_session.py +12 -6
  8. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/session/session.py +39 -18
  9. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/any_task.py +8 -0
  10. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/base_trigger.py +11 -4
  11. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/agent.py +41 -3
  12. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/scheduler.py +3 -3
  13. {zrb-1.15.25 → zrb-1.15.26}/README.md +0 -0
  14. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/__init__.py +0 -0
  15. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/__main__.py +0 -0
  16. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/attr/__init__.py +0 -0
  17. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/attr/type.py +0 -0
  18. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/__init__.py +0 -0
  19. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/base64.py +0 -0
  20. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/git.py +0 -0
  21. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/git_subtree.py +0 -0
  22. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/group.py +0 -0
  23. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/http.py +0 -0
  24. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/jwt.py +0 -0
  25. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/llm/chat_session.py +0 -0
  26. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/llm/history.py +0 -0
  27. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/llm/input.py +0 -0
  28. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/llm/previous-session.js +0 -0
  29. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/llm/tool/__init__.py +0 -0
  30. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/llm/tool/api.py +0 -0
  31. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/llm/tool/cli.py +0 -0
  32. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/llm/tool/code.py +0 -0
  33. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/llm/tool/file.py +0 -0
  34. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/llm/tool/rag.py +0 -0
  35. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/llm/tool/sub_agent.py +0 -0
  36. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/llm/tool/web.py +0 -0
  37. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/md5.py +0 -0
  38. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/__init__.py +0 -0
  39. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  40. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
  41. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
  42. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  43. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  44. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  45. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  46. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
  47. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
  48. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  49. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
  50. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  51. {zrb-1.15.25 → zrb-1.15.26}/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
  52. {zrb-1.15.25 → zrb-1.15.26}/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
  53. {zrb-1.15.25 → zrb-1.15.26}/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
  54. {zrb-1.15.25 → zrb-1.15.26}/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
  55. {zrb-1.15.25 → zrb-1.15.26}/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
  56. {zrb-1.15.25 → zrb-1.15.26}/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
  57. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
  58. {zrb-1.15.25 → zrb-1.15.26}/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
  59. {zrb-1.15.25 → zrb-1.15.26}/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
  60. {zrb-1.15.25 → zrb-1.15.26}/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
  61. {zrb-1.15.25 → zrb-1.15.26}/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
  62. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  63. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  64. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
  65. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  66. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  67. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  68. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
  69. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  70. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
  71. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
  72. {zrb-1.15.25 → zrb-1.15.26}/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
  73. {zrb-1.15.25 → zrb-1.15.26}/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
  74. {zrb-1.15.25 → zrb-1.15.26}/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
  75. {zrb-1.15.25 → zrb-1.15.26}/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
  76. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
  77. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
  78. {zrb-1.15.25 → zrb-1.15.26}/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
  79. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
  80. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
  81. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
  82. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
  83. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  84. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
  85. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  86. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
  87. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  88. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  89. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  90. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  91. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  92. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  93. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  94. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  95. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  96. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  97. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  98. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  99. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  100. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  101. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  102. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  103. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  104. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  105. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  106. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  107. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  108. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  109. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  110. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  111. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  112. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  113. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
  114. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
  115. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  116. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  117. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  118. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  119. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
  120. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
  121. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
  122. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
  123. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
  124. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  125. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
  126. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
  127. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
  128. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
  129. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
  130. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  131. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
  132. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
  133. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
  134. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
  135. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
  136. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  137. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
  138. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  139. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  140. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  141. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  142. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  143. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  144. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
  145. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  146. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
  147. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  148. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
  149. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
  150. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
  151. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  152. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  153. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
  154. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
  155. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
  156. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
  157. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
  158. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
  159. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
  160. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
  161. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
  162. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
  163. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  164. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
  165. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
  166. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
  167. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
  168. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
  169. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
  170. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
  171. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
  172. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
  173. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
  174. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
  175. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
  176. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
  177. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
  178. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
  179. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
  180. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
  181. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
  182. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
  183. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
  184. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  185. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
  186. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  187. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  188. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  189. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  190. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  191. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
  192. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
  193. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
  194. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
  195. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
  196. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
  197. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
  198. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
  199. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
  200. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
  201. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  202. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/create/__init__.py +0 -0
  203. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  204. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  205. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/project/create/project_task.py +0 -0
  206. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/python.py +0 -0
  207. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/random.py +0 -0
  208. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  209. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  210. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/setup/common_input.py +0 -0
  211. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  212. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  213. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  214. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  215. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/setup/ubuntu.py +0 -0
  216. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
  217. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
  218. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
  219. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/shell/__init__.py +0 -0
  220. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  221. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  222. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  223. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  224. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/todo.py +0 -0
  225. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/builtin/uuid.py +0 -0
  226. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/callback/__init__.py +0 -0
  227. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/callback/any_callback.py +0 -0
  228. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/callback/callback.py +0 -0
  229. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/cmd/__init__.py +0 -0
  230. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/cmd/cmd_result.py +0 -0
  231. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/cmd/cmd_val.py +0 -0
  232. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/config/config.py +0 -0
  233. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/config/default_prompt/file_extractor_system_prompt.md +0 -0
  234. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/config/default_prompt/interactive_system_prompt.md +0 -0
  235. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/config/default_prompt/persona.md +0 -0
  236. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/config/default_prompt/repo_extractor_system_prompt.md +0 -0
  237. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/config/default_prompt/repo_summarizer_system_prompt.md +0 -0
  238. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/config/default_prompt/summarization_prompt.md +0 -0
  239. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/config/default_prompt/system_prompt.md +0 -0
  240. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/config/llm_config.py +0 -0
  241. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/config/llm_context/config.py +0 -0
  242. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/config/llm_context/config_parser.py +0 -0
  243. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/config/llm_rate_limitter.py +0 -0
  244. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/config/web_auth_config.py +0 -0
  245. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/content_transformer/__init__.py +0 -0
  246. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  247. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/content_transformer/content_transformer.py +0 -0
  248. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/context/__init__.py +0 -0
  249. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/context/any_context.py +0 -0
  250. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/context/context.py +0 -0
  251. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/dot_dict/__init__.py +0 -0
  252. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/dot_dict/dot_dict.py +0 -0
  253. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/env/__init__.py +0 -0
  254. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/env/any_env.py +0 -0
  255. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/env/env.py +0 -0
  256. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/env/env_file.py +0 -0
  257. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/env/env_map.py +0 -0
  258. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/group/__init__.py +0 -0
  259. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/group/any_group.py +0 -0
  260. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/group/group.py +0 -0
  261. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/input/__init__.py +0 -0
  262. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/input/any_input.py +0 -0
  263. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/input/base_input.py +0 -0
  264. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/input/bool_input.py +0 -0
  265. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/input/float_input.py +0 -0
  266. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/input/int_input.py +0 -0
  267. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/input/option_input.py +0 -0
  268. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/input/password_input.py +0 -0
  269. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/input/str_input.py +0 -0
  270. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/input/text_input.py +0 -0
  271. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/__init__.py +0 -0
  272. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/cli.py +0 -0
  273. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/common_util.py +0 -0
  274. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_app.py +0 -0
  275. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/__init__.py +0 -0
  276. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/docs_route.py +0 -0
  277. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  278. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  279. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/error_page/view.html +0 -0
  280. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  281. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  282. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/home_page/view.html +0 -0
  283. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/login_api_route.py +0 -0
  284. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  285. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/login_page/view.html +0 -0
  286. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  287. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  288. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  289. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  290. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  291. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  292. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  293. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  294. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
  295. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  296. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/global_template.html +0 -0
  297. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  298. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  299. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/common.js +0 -0
  300. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  301. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  302. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  303. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.amber.min.css +0 -0
  304. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.blue.min.css +0 -0
  305. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.cyan.min.css +0 -0
  306. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.fuchsia.min.css +0 -0
  307. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.green.min.css +0 -0
  308. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.grey.min.css +0 -0
  309. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.indigo.min.css +0 -0
  310. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.jade.min.css +0 -0
  311. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.lime.min.css +0 -0
  312. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.min.css +0 -0
  313. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.orange.min.css +0 -0
  314. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.pink.min.css +0 -0
  315. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.pumpkin.min.css +0 -0
  316. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.purple.min.css +0 -0
  317. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.red.min.css +0 -0
  318. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.sand.min.css +0 -0
  319. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.slate.min.css +0 -0
  320. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.violet.min.css +0 -0
  321. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.yellow.min.css +0 -0
  322. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/pico-css/pico.zinc.min.css +0 -0
  323. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  324. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
  325. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
  326. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  327. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/static/static_route.py +0 -0
  328. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  329. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
  330. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_schema/session.py +0 -0
  331. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_schema/token.py +0 -0
  332. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_schema/user.py +0 -0
  333. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_util/cookie.py +0 -0
  334. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_util/html.py +0 -0
  335. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/runner/web_util/token.py +0 -0
  336. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/session/__init__.py +0 -0
  337. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/session_state_log/__init__.py +0 -0
  338. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/session_state_log/session_state_log.py +0 -0
  339. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/session_state_logger/__init__.py +0 -0
  340. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
  341. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
  342. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  343. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/__init__.py +0 -0
  344. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/base/__init__.py +0 -0
  345. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/base/context.py +0 -0
  346. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/base/execution.py +0 -0
  347. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/base/lifecycle.py +0 -0
  348. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/base/monitoring.py +0 -0
  349. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/base/operators.py +0 -0
  350. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/base_task.py +0 -0
  351. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/cmd_task.py +0 -0
  352. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/http_check.py +0 -0
  353. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/__init__.py +0 -0
  354. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/config.py +0 -0
  355. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/conversation_history.py +0 -0
  356. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/conversation_history_model.py +0 -0
  357. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/default_workflow/coding.md +0 -0
  358. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/default_workflow/copywriting.md +0 -0
  359. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/default_workflow/researching.md +0 -0
  360. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/error.py +0 -0
  361. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/history_summarization.py +0 -0
  362. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/history_summarization_tool.py +0 -0
  363. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/print_node.py +0 -0
  364. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/prompt.py +0 -0
  365. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/tool_wrapper.py +0 -0
  366. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm/typing.py +0 -0
  367. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/llm_task.py +0 -0
  368. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/make_task.py +0 -0
  369. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/rsync_task.py +0 -0
  370. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/scaffolder.py +0 -0
  371. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/task.py +0 -0
  372. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task/tcp_check.py +0 -0
  373. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task_status/__init__.py +0 -0
  374. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/task_status/task_status.py +0 -0
  375. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/__init__.py +0 -0
  376. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/attr.py +0 -0
  377. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/callable.py +0 -0
  378. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/cli/__init__.py +0 -0
  379. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/cli/markdown.py +0 -0
  380. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/cli/style.py +0 -0
  381. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/cli/subcommand.py +0 -0
  382. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/cli/text.py +0 -0
  383. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/cmd/__init__.py +0 -0
  384. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/cmd/command.py +0 -0
  385. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/cmd/remote.py +0 -0
  386. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/codemod/__init__.py +0 -0
  387. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/codemod/modification_mode.py +0 -0
  388. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/codemod/modify_class.py +0 -0
  389. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/codemod/modify_class_parent.py +0 -0
  390. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/codemod/modify_class_property.py +0 -0
  391. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/codemod/modify_dict.py +0 -0
  392. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/codemod/modify_function.py +0 -0
  393. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/codemod/modify_function_call.py +0 -0
  394. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/codemod/modify_method.py +0 -0
  395. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/codemod/modify_module.py +0 -0
  396. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/cron.py +0 -0
  397. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/file.py +0 -0
  398. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/git.py +0 -0
  399. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/git_diff_model.py +0 -0
  400. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/git_subtree.py +0 -0
  401. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/git_subtree_model.py +0 -0
  402. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/group.py +0 -0
  403. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/init_path.py +0 -0
  404. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/llm/prompt.py +0 -0
  405. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/load.py +0 -0
  406. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/run.py +0 -0
  407. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/string/__init__.py +0 -0
  408. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/string/conversion.py +0 -0
  409. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/string/format.py +0 -0
  410. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/string/name.py +0 -0
  411. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/todo.py +0 -0
  412. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/todo_model.py +0 -0
  413. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/util/truncate.py +0 -0
  414. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/xcom/__init__.py +0 -0
  415. {zrb-1.15.25 → zrb-1.15.26}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: zrb
3
- Version: 1.15.25
3
+ Version: 1.15.26
4
4
  Summary: Your Automation Powerhouse
5
5
  License: AGPL-3.0-or-later
6
6
  Keywords: Automation,Task Runner,Code Generator,Monorepo,Low Code
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.15.25"
3
+ version = "1.15.26"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -162,7 +162,7 @@ _llm_ask_inputs = [
162
162
  ),
163
163
  ]
164
164
 
165
- llm_ask: LLMTask = llm_group.add_task(
165
+ llm_ask = llm_group.add_task(
166
166
  LLMTask(
167
167
  name="llm-ask",
168
168
  input=_llm_ask_inputs,
@@ -29,26 +29,32 @@ class AnySharedContext(ABC):
29
29
  pass
30
30
 
31
31
  @property
32
+ @abstractmethod
32
33
  def input(self) -> DotDict:
33
34
  pass
34
35
 
35
36
  @property
37
+ @abstractmethod
36
38
  def env(self) -> DotDict:
37
39
  pass
38
40
 
39
41
  @property
42
+ @abstractmethod
40
43
  def args(self) -> list[Any]:
41
44
  pass
42
45
 
43
46
  @property
44
- def xcom(self) -> DotDict[str, Xcom]:
47
+ @abstractmethod
48
+ def xcom(self) -> DotDict:
45
49
  pass
46
50
 
47
51
  @property
52
+ @abstractmethod
48
53
  def shared_log(self) -> list[str]:
49
54
  pass
50
55
 
51
56
  @property
57
+ @abstractmethod
52
58
  def session(self) -> any_session.AnySession | None:
53
59
  pass
54
60
 
@@ -66,7 +66,7 @@ class SharedContext(AnySharedContext):
66
66
  return self._args
67
67
 
68
68
  @property
69
- def xcom(self) -> DotDict[str, Xcom]:
69
+ def xcom(self) -> DotDict:
70
70
  return self._xcom
71
71
 
72
72
  @property
@@ -81,7 +81,7 @@ class SharedContext(AnySharedContext):
81
81
  self._log.append(message)
82
82
  session = self.session
83
83
  if session is not None:
84
- session_parent: AnySession = session.parent
84
+ session_parent: AnySession | None = session.parent
85
85
  if session_parent is not None:
86
86
  session_parent.shared_ctx.append_to_shared_log(message)
87
87
 
@@ -19,7 +19,7 @@ def get_user_by_credentials(
19
19
 
20
20
  async def get_user_from_request(
21
21
  web_auth_config: WebAuthConfig, request: "Request"
22
- ) -> User | None:
22
+ ) -> User:
23
23
  from fastapi.security import OAuth2PasswordBearer
24
24
 
25
25
  if not web_auth_config.enable_auth:
@@ -45,7 +45,11 @@ def _get_user_from_cookie(
45
45
  return None
46
46
 
47
47
 
48
- def _get_user_from_token(web_auth_config: WebAuthConfig, token: str) -> User | None:
48
+ def _get_user_from_token(
49
+ web_auth_config: WebAuthConfig, token: str | None
50
+ ) -> User | None:
51
+ if token is None:
52
+ return None
49
53
  try:
50
54
  from jose import jwt
51
55
 
@@ -54,7 +58,7 @@ def _get_user_from_token(web_auth_config: WebAuthConfig, token: str) -> User | N
54
58
  web_auth_config.secret_key,
55
59
  options={"require_sub": True, "require_exp": True},
56
60
  )
57
- username: str = payload.get("sub")
61
+ username: str | None = payload.get("sub")
58
62
  if username is None:
59
63
  return None
60
64
  user = web_auth_config.find_user_by_username(username)
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations # Enables forward references
2
2
 
3
+ import asyncio
3
4
  from abc import ABC, abstractmethod
4
5
  from typing import TYPE_CHECKING, Any, Coroutine, TypeVar
5
6
 
@@ -62,12 +63,13 @@ class AnySession(ABC):
62
63
 
63
64
  @property
64
65
  @abstractmethod
65
- def parent(self) -> TAnySession | None:
66
+ def parent(self) -> "AnySession | None":
66
67
  """Parent session"""
67
68
  pass
68
69
 
70
+ @property
69
71
  @abstractmethod
70
- def task_path(self) -> str:
72
+ def task_path(self) -> list[str]:
71
73
  """Main task's path"""
72
74
  pass
73
75
 
@@ -105,7 +107,9 @@ class AnySession(ABC):
105
107
  pass
106
108
 
107
109
  @abstractmethod
108
- def defer_monitoring(self, task: "AnyTask", coro: Coroutine):
110
+ def defer_monitoring(
111
+ self, task: "AnyTask", coro: Coroutine[Any, Any, Any] | asyncio.Task[Any]
112
+ ):
109
113
  """Defers the execution of a task's monitoring coroutine for later processing.
110
114
 
111
115
  Args:
@@ -115,7 +119,9 @@ class AnySession(ABC):
115
119
  pass
116
120
 
117
121
  @abstractmethod
118
- def defer_action(self, task: "AnyTask", coro: Coroutine):
122
+ def defer_action(
123
+ self, task: "AnyTask", coro: Coroutine[Any, Any, Any] | asyncio.Task[Any]
124
+ ):
119
125
  """Defers the execution of a task's coroutine for later processing.
120
126
 
121
127
  Args:
@@ -125,7 +131,7 @@ class AnySession(ABC):
125
131
  pass
126
132
 
127
133
  @abstractmethod
128
- def defer_coro(self, coro: Coroutine):
134
+ def defer_coro(self, coro: Coroutine[Any, Any, Any] | asyncio.Task[Any]):
129
135
  """Defers the execution of a coroutine for later processing.
130
136
 
131
137
  Args:
@@ -185,7 +191,7 @@ class AnySession(ABC):
185
191
  pass
186
192
 
187
193
  @abstractmethod
188
- def is_allowed_to_run(self, task: "AnyTask"):
194
+ def is_allowed_to_run(self, task: "AnyTask") -> bool:
189
195
  """Determines if the specified task is allowed to run based on its current state.
190
196
 
191
197
  Args:
@@ -1,10 +1,12 @@
1
+ from __future__ import annotations
2
+
1
3
  import asyncio
2
4
  from typing import TYPE_CHECKING, Any, Coroutine
3
5
 
4
6
  from zrb.context.any_shared_context import AnySharedContext
5
7
  from zrb.context.context import AnyContext, Context
6
8
  from zrb.group.any_group import AnyGroup
7
- from zrb.session.any_session import AnySession
9
+ from zrb.session.any_session import AnySession, TAnySession
8
10
  from zrb.session_state_logger.any_session_state_logger import AnySessionStateLogger
9
11
  from zrb.session_state_logger.session_state_logger_factory import session_state_logger
10
12
  from zrb.task.any_task import AnyTask
@@ -48,10 +50,10 @@ class Session(AnySession):
48
50
  self._context: dict[AnyTask, Context] = {}
49
51
  self._shared_ctx = shared_ctx
50
52
  self._shared_ctx.set_session(self)
51
- self._parent = parent
52
- self._action_coros: dict[AnyTask, asyncio.Task] = {}
53
- self._monitoring_coros: dict[AnyTask, asyncio.Task] = {}
54
- self._coros: list[asyncio.Task] = []
53
+ self._parent: AnySession | None = parent
54
+ self._action_coros: dict[AnyTask, asyncio.Task[Any]] = {}
55
+ self._monitoring_coros: dict[AnyTask, asyncio.Task[Any]] = {}
56
+ self._coros: list[asyncio.Task[Any]] = []
55
57
  self._colors = [
56
58
  GREEN,
57
59
  YELLOW,
@@ -114,11 +116,13 @@ class Session(AnySession):
114
116
  return self._parent
115
117
 
116
118
  @property
117
- def task_path(self) -> str:
119
+ def task_path(self) -> list[str]:
118
120
  return self._main_task_path
119
121
 
120
122
  @property
121
123
  def final_result(self) -> Any:
124
+ if self._main_task is None:
125
+ return None
122
126
  xcom: Xcom = self.shared_ctx.xcom[self._main_task.name]
123
127
  try:
124
128
  return xcom.peek()
@@ -134,7 +138,11 @@ class Session(AnySession):
134
138
  def set_main_task(self, main_task: AnyTask):
135
139
  self.register_task(main_task)
136
140
  self._main_task = main_task
137
- main_task_path = get_node_path(self._root_group, main_task)
141
+ main_task_path = (
142
+ None
143
+ if self._root_group is None
144
+ else get_node_path(self._root_group, main_task)
145
+ )
138
146
  self._main_task_path = [] if main_task_path is None else main_task_path
139
147
 
140
148
  def as_state_log(self) -> "SessionStateLog":
@@ -171,7 +179,7 @@ class Session(AnySession):
171
179
  return SessionStateLog(
172
180
  name=self.name,
173
181
  start_time=log_start_time,
174
- main_task_name=self._main_task.name,
182
+ main_task_name="" if self._main_task is None else self._main_task.name,
175
183
  path=self.task_path,
176
184
  final_result=(
177
185
  remove_style(f"{self.final_result}")
@@ -188,16 +196,29 @@ class Session(AnySession):
188
196
  self._register_single_task(task)
189
197
  return self._context[task]
190
198
 
191
- def defer_monitoring(self, task: AnyTask, coro: Coroutine):
199
+ def defer_monitoring(
200
+ self, task: AnyTask, coro: Coroutine[Any, Any, Any] | asyncio.Task[Any]
201
+ ):
192
202
  self._register_single_task(task)
193
- self._monitoring_coros[task] = coro
203
+ if isinstance(coro, asyncio.Task):
204
+ self._monitoring_coros[task] = coro
205
+ else:
206
+ self._monitoring_coros[task] = asyncio.create_task(coro)
194
207
 
195
- def defer_action(self, task: AnyTask, coro: Coroutine):
208
+ def defer_action(
209
+ self, task: AnyTask, coro: Coroutine[Any, Any, Any] | asyncio.Task[Any]
210
+ ):
196
211
  self._register_single_task(task)
197
- self._action_coros[task] = coro
212
+ if isinstance(coro, asyncio.Task):
213
+ self._action_coros[task] = coro
214
+ else:
215
+ self._action_coros[task] = asyncio.create_task(coro)
198
216
 
199
- def defer_coro(self, coro: Coroutine):
200
- self._coros.append(coro)
217
+ def defer_coro(self, coro: Coroutine[Any, Any, Any] | asyncio.Task[Any]):
218
+ if isinstance(coro, asyncio.Task):
219
+ self._coros.append(coro)
220
+ else:
221
+ self._coros.append(asyncio.create_task(coro))
201
222
  self._coros = [
202
223
  existing_coro for existing_coro in self._coros if not existing_coro.done()
203
224
  ]
@@ -246,15 +267,15 @@ class Session(AnySession):
246
267
 
247
268
  def get_next_tasks(self, task: AnyTask) -> list[AnyTask]:
248
269
  self._register_single_task(task)
249
- return self._downstreams.get(task)
270
+ return self._downstreams.get(task, [])
250
271
 
251
272
  def get_task_status(self, task: AnyTask) -> TaskStatus:
252
273
  self._register_single_task(task)
253
274
  return self._task_status[task]
254
275
 
255
276
  def _register_single_task(self, task: AnyTask):
256
- if task.name not in self._shared_ctx._xcom:
257
- self._shared_ctx._xcom[task.name] = Xcom([])
277
+ if task.name not in self._shared_ctx.xcom:
278
+ self._shared_ctx.xcom[task.name] = Xcom([])
258
279
  if task not in self._context:
259
280
  self._context[task] = Context(
260
281
  shared_ctx=self._shared_ctx,
@@ -278,7 +299,7 @@ class Session(AnySession):
278
299
  self._color_index = 0
279
300
  return chosen
280
301
 
281
- def _get_icon(self, task: AnyTask) -> int:
302
+ def _get_icon(self, task: AnyTask) -> str:
282
303
  if task.icon is not None:
283
304
  return task.icon
284
305
  chosen = self._icons[self._icon_index]
@@ -36,6 +36,14 @@ class AnyTask(ABC):
36
36
  the actual implementation for these abstract members.
37
37
  """
38
38
 
39
+ @abstractmethod
40
+ def __rshift__(self, other: "AnyTask | list[AnyTask]") -> "AnyTask | list[AnyTask]":
41
+ pass
42
+
43
+ @abstractmethod
44
+ def __lshift__(self, other: "AnyTask | list[AnyTask]") -> "AnyTask":
45
+ pass
46
+
39
47
  @property
40
48
  @abstractmethod
41
49
  def name(self) -> str:
@@ -127,7 +127,7 @@ class BaseTrigger(BaseTask):
127
127
  return self._callbacks
128
128
 
129
129
  async def exec_root_tasks(self, session: AnySession):
130
- exchange_xcom = self.get_exchange_xcom(session)
130
+ exchange_xcom = self._get_exchange_xcom(session)
131
131
  exchange_xcom.add_push_callback(lambda: self._exchange_push_callback(session))
132
132
  return await super().exec_root_tasks(session)
133
133
 
@@ -136,8 +136,7 @@ class BaseTrigger(BaseTask):
136
136
  session.defer_coro(coro)
137
137
 
138
138
  async def _fanout_and_trigger_callback(self, session: AnySession):
139
- exchange_xcom = self.get_exchange_xcom(session)
140
- data = exchange_xcom.pop()
139
+ data = self.pop_exchange_xcom(session)
141
140
  coros = []
142
141
  for callback in self.callbacks:
143
142
  xcom_dict = DotDict({self.queue_name: Xcom([data])})
@@ -156,8 +155,16 @@ class BaseTrigger(BaseTask):
156
155
  )
157
156
  await asyncio.gather(*coros)
158
157
 
159
- def get_exchange_xcom(self, session: AnySession) -> Xcom:
158
+ def _get_exchange_xcom(self, session: AnySession) -> Xcom:
160
159
  shared_ctx = session.shared_ctx
161
160
  if self.queue_name not in shared_ctx.xcom:
162
161
  shared_ctx.xcom[self.queue_name] = Xcom()
163
162
  return shared_ctx.xcom[self.queue_name]
163
+
164
+ def push_exchange_xcom(self, session: AnySession, data: Any):
165
+ exchange_xcom = self._get_exchange_xcom(session)
166
+ exchange_xcom.push(data)
167
+
168
+ def pop_exchange_xcom(self, session: AnySession) -> Any:
169
+ exchange_xcom = self._get_exchange_xcom(session)
170
+ return exchange_xcom.pop()
@@ -1,5 +1,7 @@
1
+ import inspect
1
2
  import json
2
3
  from collections.abc import Callable
4
+ from dataclasses import dataclass
3
5
  from typing import TYPE_CHECKING, Any
4
6
 
5
7
  from zrb.config.llm_rate_limitter import LLMRateLimiter, llm_rate_limitter
@@ -30,13 +32,44 @@ def create_agent_instance(
30
32
  system_prompt: str = "",
31
33
  model_settings: "ModelSettings | None" = None,
32
34
  tools: "list[ToolOrCallable]" = [],
33
- toolsets: list["AbstractToolset[Agent]"] = [],
35
+ toolsets: list["AbstractToolset[None]"] = [],
34
36
  retries: int = 3,
35
37
  yolo_mode: bool | list[str] | None = None,
36
38
  ) -> "Agent[None, Any]":
37
39
  """Creates a new Agent instance with configured tools and servers."""
38
- from pydantic_ai import Agent, Tool
40
+ from pydantic_ai import Agent, RunContext, Tool
39
41
  from pydantic_ai.tools import GenerateToolJsonSchema
42
+ from pydantic_ai.toolsets import ToolsetTool, WrapperToolset
43
+
44
+ @dataclass
45
+ class ConfirmationWrapperToolset(WrapperToolset):
46
+ ctx: AnyContext
47
+ yolo_mode: bool | list[str]
48
+
49
+ async def call_tool(
50
+ self, name: str, tool_args: dict, ctx: RunContext, tool: ToolsetTool[None]
51
+ ) -> Any:
52
+ # The `tool` object is passed in. Use it for inspection.
53
+ # Define a temporary function that performs the actual tool call.
54
+ async def execute_delegated_tool_call(**params):
55
+ # Pass all arguments down the chain.
56
+ return await self.wrapped.call_tool(name, tool_args, ctx, tool)
57
+
58
+ # For the confirmation UI, make our temporary function look like the real one.
59
+ try:
60
+ execute_delegated_tool_call.__name__ = tool.function.__name__
61
+ execute_delegated_tool_call.__doc__ = tool.function.__doc__
62
+ execute_delegated_tool_call.__signature__ = inspect.signature(
63
+ tool.function
64
+ )
65
+ except (AttributeError, TypeError):
66
+ pass # Ignore if we can't inspect the original function
67
+ # Use the existing wrap_func to get the confirmation logic
68
+ wrapped_executor = wrap_func(
69
+ execute_delegated_tool_call, self.ctx, self.yolo_mode
70
+ )
71
+ # Call the wrapped executor. This will trigger the confirmation prompt.
72
+ return await wrapped_executor(**tool_args)
40
73
 
41
74
  if yolo_mode is None:
42
75
  yolo_mode = False
@@ -64,13 +97,18 @@ def create_agent_instance(
64
97
  else:
65
98
  # Turn function into tool
66
99
  tool_list.append(wrap_tool(tool_or_callable, ctx, yolo_mode))
100
+ # Wrap toolsets
101
+ wrapped_toolsets = [
102
+ ConfirmationWrapperToolset(wrapped=toolset, ctx=ctx, yolo_mode=yolo_mode)
103
+ for toolset in toolsets
104
+ ]
67
105
  # Return Agent
68
106
  return Agent[None, Any](
69
107
  model=model,
70
108
  output_type=output_type,
71
109
  system_prompt=system_prompt,
72
110
  tools=tool_list,
73
- toolsets=toolsets,
111
+ toolsets=wrapped_toolsets,
74
112
  model_settings=model_settings,
75
113
  retries=retries,
76
114
  )
@@ -24,7 +24,7 @@ class Scheduler(BaseTrigger):
24
24
  cli_only: bool = False,
25
25
  input: list[AnyInput | None] | AnyInput | None = None,
26
26
  env: list[AnyEnv | None] | AnyEnv | None = None,
27
- schedule: StrAttr = None,
27
+ schedule: StrAttr | None = None,
28
28
  execute_condition: bool | str | Callable[[AnySharedContext], bool] = True,
29
29
  queue_name: fstring | None = None,
30
30
  callback: list[AnyCallback] | AnyCallback = [],
@@ -76,6 +76,6 @@ class Scheduler(BaseTrigger):
76
76
  ctx.print(f"Current time: {now}")
77
77
  if match_cron(cron_pattern, now):
78
78
  ctx.print(f"Matching {now} with pattern: {cron_pattern}")
79
- xcom = self.get_exchange_xcom(ctx.session)
80
- xcom.push(now)
79
+ if ctx.session is not None:
80
+ self.push_exchange_xcom(ctx.session, now)
81
81
  await asyncio.sleep(60)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes