zrb 1.15.21__tar.gz → 1.15.23__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.21 → zrb-1.15.23}/PKG-INFO +2 -2
  2. {zrb-1.15.21 → zrb-1.15.23}/pyproject.toml +2 -2
  3. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/input/text_input.py +7 -20
  4. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/agent.py +1 -2
  5. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/print_node.py +10 -10
  6. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/tool_wrapper.py +84 -38
  7. zrb-1.15.23/src/zrb/util/cli/text.py +28 -0
  8. {zrb-1.15.21 → zrb-1.15.23}/README.md +0 -0
  9. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/__init__.py +0 -0
  10. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/__main__.py +0 -0
  11. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/attr/__init__.py +0 -0
  12. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/attr/type.py +0 -0
  13. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/__init__.py +0 -0
  14. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/base64.py +0 -0
  15. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/git.py +0 -0
  16. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/git_subtree.py +0 -0
  17. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/group.py +0 -0
  18. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/http.py +0 -0
  19. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/jwt.py +0 -0
  20. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/llm/chat_session.py +0 -0
  21. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/llm/history.py +0 -0
  22. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/llm/input.py +0 -0
  23. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/llm/llm_ask.py +0 -0
  24. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/llm/previous-session.js +0 -0
  25. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/llm/tool/__init__.py +0 -0
  26. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/llm/tool/api.py +0 -0
  27. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/llm/tool/cli.py +0 -0
  28. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/llm/tool/code.py +0 -0
  29. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/llm/tool/file.py +0 -0
  30. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/llm/tool/rag.py +0 -0
  31. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/llm/tool/sub_agent.py +0 -0
  32. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/llm/tool/web.py +0 -0
  33. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/md5.py +0 -0
  34. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/__init__.py +0 -0
  35. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  36. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
  37. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
  38. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  39. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  40. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  41. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  42. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
  43. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
  44. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  45. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
  46. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  47. {zrb-1.15.21 → zrb-1.15.23}/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
  48. {zrb-1.15.21 → zrb-1.15.23}/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
  49. {zrb-1.15.21 → zrb-1.15.23}/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
  50. {zrb-1.15.21 → zrb-1.15.23}/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
  51. {zrb-1.15.21 → zrb-1.15.23}/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
  52. {zrb-1.15.21 → zrb-1.15.23}/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
  53. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
  54. {zrb-1.15.21 → zrb-1.15.23}/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
  55. {zrb-1.15.21 → zrb-1.15.23}/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
  56. {zrb-1.15.21 → zrb-1.15.23}/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
  57. {zrb-1.15.21 → zrb-1.15.23}/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
  58. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  59. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  60. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
  61. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  62. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  63. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  64. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
  65. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  66. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
  67. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
  68. {zrb-1.15.21 → zrb-1.15.23}/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
  69. {zrb-1.15.21 → zrb-1.15.23}/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
  70. {zrb-1.15.21 → zrb-1.15.23}/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
  71. {zrb-1.15.21 → zrb-1.15.23}/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
  72. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
  73. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
  74. {zrb-1.15.21 → zrb-1.15.23}/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
  75. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
  76. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
  77. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
  78. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
  79. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  80. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
  81. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  82. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
  83. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  84. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  85. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  86. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  87. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  88. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  89. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  90. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  91. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  92. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  93. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  94. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  95. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  96. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  97. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  98. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  99. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  100. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  101. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  102. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  103. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  104. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  105. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  106. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  107. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  108. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  109. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
  110. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
  111. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  112. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  113. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  114. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  115. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
  116. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
  117. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
  118. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
  119. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
  120. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  121. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
  122. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
  123. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
  124. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
  125. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
  126. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  127. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
  128. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
  129. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
  130. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
  131. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
  132. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  133. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
  134. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  135. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  136. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  137. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  138. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  139. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  140. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
  141. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  142. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
  143. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  144. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
  145. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
  146. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
  147. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  148. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  149. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
  150. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
  151. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
  152. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
  153. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
  154. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
  155. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
  156. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
  157. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
  158. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
  159. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  160. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
  161. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
  162. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
  163. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
  164. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
  165. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
  166. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
  167. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
  168. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
  169. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
  170. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
  171. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
  172. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
  173. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
  174. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
  175. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
  176. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
  177. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
  178. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
  179. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
  180. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  181. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
  182. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  183. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  184. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  185. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  186. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  187. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
  188. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
  189. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
  190. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
  191. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
  192. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
  193. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
  194. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
  195. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
  196. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
  197. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  198. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/create/__init__.py +0 -0
  199. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  200. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  201. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/project/create/project_task.py +0 -0
  202. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/python.py +0 -0
  203. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/random.py +0 -0
  204. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  205. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  206. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/setup/common_input.py +0 -0
  207. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  208. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  209. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  210. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  211. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/setup/ubuntu.py +0 -0
  212. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
  213. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
  214. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
  215. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/shell/__init__.py +0 -0
  216. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  217. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  218. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  219. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  220. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/todo.py +0 -0
  221. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/builtin/uuid.py +0 -0
  222. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/callback/__init__.py +0 -0
  223. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/callback/any_callback.py +0 -0
  224. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/callback/callback.py +0 -0
  225. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/cmd/__init__.py +0 -0
  226. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/cmd/cmd_result.py +0 -0
  227. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/cmd/cmd_val.py +0 -0
  228. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/config/config.py +0 -0
  229. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/config/default_prompt/file_extractor_system_prompt.md +0 -0
  230. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/config/default_prompt/interactive_system_prompt.md +0 -0
  231. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/config/default_prompt/persona.md +0 -0
  232. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/config/default_prompt/repo_extractor_system_prompt.md +0 -0
  233. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/config/default_prompt/repo_summarizer_system_prompt.md +0 -0
  234. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/config/default_prompt/summarization_prompt.md +0 -0
  235. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/config/default_prompt/system_prompt.md +0 -0
  236. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/config/llm_config.py +0 -0
  237. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/config/llm_context/config.py +0 -0
  238. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/config/llm_context/config_parser.py +0 -0
  239. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/config/llm_rate_limitter.py +0 -0
  240. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/config/web_auth_config.py +0 -0
  241. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/content_transformer/__init__.py +0 -0
  242. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  243. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/content_transformer/content_transformer.py +0 -0
  244. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/context/__init__.py +0 -0
  245. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/context/any_context.py +0 -0
  246. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/context/any_shared_context.py +0 -0
  247. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/context/context.py +0 -0
  248. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/context/shared_context.py +0 -0
  249. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/dot_dict/__init__.py +0 -0
  250. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/dot_dict/dot_dict.py +0 -0
  251. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/env/__init__.py +0 -0
  252. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/env/any_env.py +0 -0
  253. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/env/env.py +0 -0
  254. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/env/env_file.py +0 -0
  255. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/env/env_map.py +0 -0
  256. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/group/__init__.py +0 -0
  257. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/group/any_group.py +0 -0
  258. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/group/group.py +0 -0
  259. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/input/__init__.py +0 -0
  260. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/input/any_input.py +0 -0
  261. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/input/base_input.py +0 -0
  262. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/input/bool_input.py +0 -0
  263. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/input/float_input.py +0 -0
  264. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/input/int_input.py +0 -0
  265. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/input/option_input.py +0 -0
  266. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/input/password_input.py +0 -0
  267. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/input/str_input.py +0 -0
  268. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/__init__.py +0 -0
  269. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/cli.py +0 -0
  270. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/common_util.py +0 -0
  271. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_app.py +0 -0
  272. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/__init__.py +0 -0
  273. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/docs_route.py +0 -0
  274. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  275. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  276. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/error_page/view.html +0 -0
  277. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  278. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  279. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/home_page/view.html +0 -0
  280. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/login_api_route.py +0 -0
  281. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  282. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/login_page/view.html +0 -0
  283. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  284. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  285. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  286. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  287. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  288. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  289. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  290. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  291. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
  292. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  293. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/global_template.html +0 -0
  294. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  295. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  296. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/common.js +0 -0
  297. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  298. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  299. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  300. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.amber.min.css +0 -0
  301. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.blue.min.css +0 -0
  302. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.cyan.min.css +0 -0
  303. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.fuchsia.min.css +0 -0
  304. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.green.min.css +0 -0
  305. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.grey.min.css +0 -0
  306. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.indigo.min.css +0 -0
  307. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.jade.min.css +0 -0
  308. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.lime.min.css +0 -0
  309. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.min.css +0 -0
  310. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.orange.min.css +0 -0
  311. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.pink.min.css +0 -0
  312. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.pumpkin.min.css +0 -0
  313. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.purple.min.css +0 -0
  314. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.red.min.css +0 -0
  315. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.sand.min.css +0 -0
  316. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.slate.min.css +0 -0
  317. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.violet.min.css +0 -0
  318. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.yellow.min.css +0 -0
  319. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/pico-css/pico.zinc.min.css +0 -0
  320. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  321. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
  322. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
  323. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  324. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/static/static_route.py +0 -0
  325. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  326. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
  327. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_schema/session.py +0 -0
  328. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_schema/token.py +0 -0
  329. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_schema/user.py +0 -0
  330. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_util/cookie.py +0 -0
  331. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_util/html.py +0 -0
  332. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_util/token.py +0 -0
  333. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/runner/web_util/user.py +0 -0
  334. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/session/__init__.py +0 -0
  335. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/session/any_session.py +0 -0
  336. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/session/session.py +0 -0
  337. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/session_state_log/__init__.py +0 -0
  338. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/session_state_log/session_state_log.py +0 -0
  339. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/session_state_logger/__init__.py +0 -0
  340. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
  341. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
  342. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  343. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/__init__.py +0 -0
  344. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/any_task.py +0 -0
  345. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/base/__init__.py +0 -0
  346. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/base/context.py +0 -0
  347. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/base/execution.py +0 -0
  348. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/base/lifecycle.py +0 -0
  349. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/base/monitoring.py +0 -0
  350. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/base/operators.py +0 -0
  351. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/base_task.py +0 -0
  352. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/base_trigger.py +0 -0
  353. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/cmd_task.py +0 -0
  354. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/http_check.py +0 -0
  355. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/__init__.py +0 -0
  356. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/config.py +0 -0
  357. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/conversation_history.py +0 -0
  358. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/conversation_history_model.py +0 -0
  359. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/default_workflow/coding.md +0 -0
  360. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/default_workflow/copywriting.md +0 -0
  361. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/default_workflow/researching.md +0 -0
  362. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/error.py +0 -0
  363. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/history_summarization.py +0 -0
  364. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/history_summarization_tool.py +0 -0
  365. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/prompt.py +0 -0
  366. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm/typing.py +0 -0
  367. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/llm_task.py +0 -0
  368. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/make_task.py +0 -0
  369. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/rsync_task.py +0 -0
  370. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/scaffolder.py +0 -0
  371. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/scheduler.py +0 -0
  372. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/task.py +0 -0
  373. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task/tcp_check.py +0 -0
  374. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task_status/__init__.py +0 -0
  375. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/task_status/task_status.py +0 -0
  376. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/__init__.py +0 -0
  377. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/attr.py +0 -0
  378. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/callable.py +0 -0
  379. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/cli/__init__.py +0 -0
  380. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/cli/markdown.py +0 -0
  381. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/cli/style.py +0 -0
  382. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/cli/subcommand.py +0 -0
  383. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/cmd/__init__.py +0 -0
  384. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/cmd/command.py +0 -0
  385. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/cmd/remote.py +0 -0
  386. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/codemod/__init__.py +0 -0
  387. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/codemod/modification_mode.py +0 -0
  388. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/codemod/modify_class.py +0 -0
  389. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/codemod/modify_class_parent.py +0 -0
  390. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/codemod/modify_class_property.py +0 -0
  391. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/codemod/modify_dict.py +0 -0
  392. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/codemod/modify_function.py +0 -0
  393. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/codemod/modify_function_call.py +0 -0
  394. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/codemod/modify_method.py +0 -0
  395. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/codemod/modify_module.py +0 -0
  396. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/cron.py +0 -0
  397. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/file.py +0 -0
  398. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/git.py +0 -0
  399. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/git_diff_model.py +0 -0
  400. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/git_subtree.py +0 -0
  401. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/git_subtree_model.py +0 -0
  402. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/group.py +0 -0
  403. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/init_path.py +0 -0
  404. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/llm/prompt.py +0 -0
  405. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/load.py +0 -0
  406. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/run.py +0 -0
  407. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/string/__init__.py +0 -0
  408. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/string/conversion.py +0 -0
  409. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/string/format.py +0 -0
  410. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/string/name.py +0 -0
  411. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/todo.py +0 -0
  412. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/todo_model.py +0 -0
  413. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/util/truncate.py +0 -0
  414. {zrb-1.15.21 → zrb-1.15.23}/src/zrb/xcom/__init__.py +0 -0
  415. {zrb-1.15.21 → zrb-1.15.23}/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.21
3
+ Version: 1.15.23
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
@@ -29,7 +29,7 @@ Requires-Dist: pdfplumber (>=0.11.7,<0.12.0)
29
29
  Requires-Dist: playwright (>=1.54.0,<2.0.0) ; extra == "playwright" or extra == "all"
30
30
  Requires-Dist: prompt-toolkit (>=3)
31
31
  Requires-Dist: psutil (>=7.0.0,<8.0.0)
32
- Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cohere,google,groq,huggingface,mistral,openai,vertexai] (>=0.8.1,<0.9.0)
32
+ Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cohere,google,groq,huggingface,mistral,openai,vertexai] (>=1.0.1,<1.1.0)
33
33
  Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
34
34
  Requires-Dist: python-dotenv (>=1.1.1,<2.0.0)
35
35
  Requires-Dist: python-jose[cryptography] (>=3.5.0,<4.0.0)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.15.21"
3
+ version = "1.15.23"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -50,7 +50,7 @@ ulid-py = "^1.1.0"
50
50
  psutil = "^7.0.0"
51
51
 
52
52
  # NOTE: Look at https://github.com/pydantic/pydantic-ai/blob/main/pydantic_ai_slim/pyproject.toml
53
- pydantic-ai-slim = {extras = ["openai", "cohere", "vertexai", "google", "anthropic", "groq", "mistral", "bedrock", "huggingface"], version = "~0.8.1"}
53
+ pydantic-ai-slim = {extras = ["openai", "cohere", "vertexai", "google", "anthropic", "groq", "mistral", "bedrock", "huggingface"], version = "~1.0.1"}
54
54
 
55
55
  # NOTE: Make sure the following dependencies are not conflicting with pydantic-ai-slim
56
56
  openai = ">=1.99.9"
@@ -6,6 +6,7 @@ from collections.abc import Callable
6
6
  from zrb.config.config import CFG
7
7
  from zrb.context.any_shared_context import AnySharedContext
8
8
  from zrb.input.base_input import BaseInput
9
+ from zrb.util.cli.text import edit_text
9
10
  from zrb.util.file import read_file
10
11
 
11
12
 
@@ -85,24 +86,10 @@ class TextInput(BaseInput):
85
86
  comment_prompt_message = (
86
87
  f"{self.comment_start}{prompt_message}{self.comment_end}"
87
88
  )
88
- comment_prompt_message_eol = f"{comment_prompt_message}\n"
89
89
  default_value = self.get_default_str(shared_ctx)
90
- with tempfile.NamedTemporaryFile(
91
- delete=False, suffix=self._extension
92
- ) as temp_file:
93
- temp_file_name = temp_file.name
94
- temp_file.write(comment_prompt_message_eol.encode())
95
- # Pre-fill with default content
96
- if default_value:
97
- temp_file.write(default_value.encode())
98
- temp_file.flush()
99
- subprocess.call([self.editor_cmd, temp_file_name])
100
- # Read the edited content
101
- edited_content = read_file(temp_file_name)
102
- parts = [
103
- text.strip() for text in edited_content.split(comment_prompt_message, 1)
104
- ]
105
- edited_content = "\n".join(parts).lstrip()
106
- os.remove(temp_file_name)
107
- print(f"{prompt_message}: {edited_content}")
108
- return edited_content
90
+ return edit_text(
91
+ prompt_message=comment_prompt_message,
92
+ value=default_value,
93
+ editor=self.editor_cmd,
94
+ extension=self._extension,
95
+ )
@@ -199,7 +199,6 @@ async def _run_single_agent_iteration(
199
199
  ) as agent_run:
200
200
  async for node in agent_run:
201
201
  # Each node represents a step in the agent's execution
202
- # Reference: https://ai.pydantic.dev/agents/#streaming
203
202
  try:
204
203
  await print_node(
205
204
  _get_plain_printer(ctx), agent_run, node, log_indent_level
@@ -217,7 +216,7 @@ async def _run_single_agent_iteration(
217
216
 
218
217
 
219
218
  def _create_print_throttle_notif(ctx: AnyContext) -> Callable[[], None]:
220
- def _print_throttle_notif(ctx: AnyContext):
219
+ def _print_throttle_notif():
221
220
  ctx.print(stylize_faint(" ⌛>> Request Throttled"), plain=True)
222
221
 
223
222
  return _print_throttle_notif
@@ -28,7 +28,7 @@ async def print_node(
28
28
  elif Agent.is_model_request_node(node):
29
29
  # A model request node => We can stream tokens from the model's request
30
30
  print_func(_format_header("🧠 Processing...", log_indent_level))
31
- # Reference: https://ai.pydantic.dev/agents/#streaming
31
+ # Reference: https://ai.pydantic.dev/agents/#streaming-all-events-and-output
32
32
  try:
33
33
  async with node.stream(agent_run.ctx) as request_stream:
34
34
  is_streaming = False
@@ -40,9 +40,7 @@ async def print_node(
40
40
  print_func(_format_content(content, log_indent_level), end="")
41
41
  is_streaming = True
42
42
  elif isinstance(event, PartDeltaEvent):
43
- if isinstance(event.delta, TextPartDelta) or isinstance(
44
- event.delta, ThinkingPartDelta
45
- ):
43
+ if isinstance(event.delta, TextPartDelta):
46
44
  content_delta = event.delta.content_delta
47
45
  print_func(
48
46
  _format_stream_content(content_delta, log_indent_level),
@@ -78,7 +76,7 @@ async def print_node(
78
76
  print_func(
79
77
  _format_content(
80
78
  (
81
- f"⚠️ Unexpected Model Behavior: {e}. "
79
+ f"🟡 Unexpected Model Behavior: {e}. "
82
80
  f"Cause: {e.__cause__}. Node.Id: {meta}"
83
81
  ),
84
82
  log_indent_level,
@@ -112,7 +110,7 @@ async def print_node(
112
110
  print_func(
113
111
  _format_content(
114
112
  (
115
- f"⚠️ Unexpected Model Behavior: {e}. "
113
+ f"🟡 Unexpected Model Behavior: {e}. "
116
114
  f"Cause: {e.__cause__}. Node.Id: {meta}"
117
115
  ),
118
116
  log_indent_level,
@@ -123,7 +121,7 @@ async def print_node(
123
121
  print_func(_format_header("✅ Completed...", log_indent_level))
124
122
 
125
123
 
126
- def _format_header(text: str, log_indent_level: int = 0) -> str:
124
+ def _format_header(text: str | None, log_indent_level: int = 0) -> str:
127
125
  return _format(
128
126
  text,
129
127
  base_indent=2,
@@ -133,7 +131,7 @@ def _format_header(text: str, log_indent_level: int = 0) -> str:
133
131
  )
134
132
 
135
133
 
136
- def _format_content(text: str, log_indent_level: int = 0) -> str:
134
+ def _format_content(text: str | None, log_indent_level: int = 0) -> str:
137
135
  return _format(
138
136
  text,
139
137
  base_indent=2,
@@ -143,7 +141,7 @@ def _format_content(text: str, log_indent_level: int = 0) -> str:
143
141
  )
144
142
 
145
143
 
146
- def _format_stream_content(text: str, log_indent_level: int = 0) -> str:
144
+ def _format_stream_content(text: str | None, log_indent_level: int = 0) -> str:
147
145
  return _format(
148
146
  text,
149
147
  base_indent=2,
@@ -154,13 +152,15 @@ def _format_stream_content(text: str, log_indent_level: int = 0) -> str:
154
152
 
155
153
 
156
154
  def _format(
157
- text: str,
155
+ text: str | None,
158
156
  base_indent: int = 0,
159
157
  first_indent: int = 0,
160
158
  indent: int = 0,
161
159
  log_indent_level: int = 0,
162
160
  is_stream: bool = False,
163
161
  ) -> str:
162
+ if text is None:
163
+ text = ""
164
164
  line_prefix = (base_indent * (log_indent_level + 1) + indent) * " "
165
165
  processed_text = text.replace("\n", f"\n{line_prefix}")
166
166
  if is_stream:
@@ -5,6 +5,7 @@ import typing
5
5
  from collections.abc import Callable
6
6
  from typing import TYPE_CHECKING, Any
7
7
 
8
+ from zrb.config.config import CFG
8
9
  from zrb.context.any_context import AnyContext
9
10
  from zrb.task.llm.error import ToolExecutionError
10
11
  from zrb.util.callable import get_callable_name
@@ -15,6 +16,7 @@ from zrb.util.cli.style import (
15
16
  stylize_green,
16
17
  stylize_yellow,
17
18
  )
19
+ from zrb.util.cli.text import edit_text
18
20
  from zrb.util.run import run_async
19
21
  from zrb.util.string.conversion import to_boolean
20
22
 
@@ -39,7 +41,6 @@ def wrap_tool(func: Callable, ctx: AnyContext, yolo_mode: bool | list[str]) -> "
39
41
  def wrap_func(func: Callable, ctx: AnyContext, yolo_mode: bool | list[str]) -> Callable:
40
42
  original_sig = inspect.signature(func)
41
43
  needs_any_context_for_injection = _has_context_parameter(original_sig, AnyContext)
42
- takes_no_args = len(original_sig.parameters) == 0
43
44
  # Pass individual flags to the wrapper creator
44
45
  wrapper = _create_wrapper(
45
46
  func=func,
@@ -48,7 +49,7 @@ def wrap_func(func: Callable, ctx: AnyContext, yolo_mode: bool | list[str]) -> C
48
49
  needs_any_context_for_injection=needs_any_context_for_injection,
49
50
  yolo_mode=yolo_mode,
50
51
  )
51
- _adjust_signature(wrapper, original_sig, takes_no_args)
52
+ _adjust_signature(wrapper, original_sig)
52
53
  return wrapper
53
54
 
54
55
 
@@ -113,7 +114,9 @@ def _create_wrapper(
113
114
  if (
114
115
  isinstance(yolo_mode, list) and func.__name__ not in yolo_mode
115
116
  ) or not yolo_mode:
116
- approval, reason = await _ask_for_approval(ctx, func, args, kwargs)
117
+ approval, reason = await _handle_user_response(
118
+ ctx, func, args, kwargs
119
+ )
117
120
  if not approval:
118
121
  raise ToolExecutionCancelled(f"User disapproving: {reason}")
119
122
  return await run_async(func(*args, **kwargs))
@@ -131,54 +134,97 @@ def _create_wrapper(
131
134
  return wrapper
132
135
 
133
136
 
134
- async def _ask_for_approval(
135
- ctx: AnyContext, func: Callable, args: list[Any], kwargs: dict[str, Any]
137
+ async def _handle_user_response(
138
+ ctx: AnyContext,
139
+ func: Callable,
140
+ args: list[Any] | tuple[Any],
141
+ kwargs: dict[str, Any],
136
142
  ) -> tuple[bool, str]:
137
- func_call_str = _get_func_call_str(func, args, kwargs)
138
- complete_confirmation_message = "\n".join(
139
- [
140
- f"\n🎰 >> {func_call_str}",
141
- _get_detail_func_param(args, kwargs),
142
- f"🎰 >> {_get_run_func_confirmation(func)}",
143
- ]
144
- )
145
143
  while True:
144
+ func_call_str = _get_func_call_str(func, args, kwargs)
145
+ complete_confirmation_message = "\n".join(
146
+ [
147
+ f"\n🎰 >> {func_call_str}",
148
+ _get_detail_func_param(args, kwargs),
149
+ f"🎰 >> {_get_run_func_confirmation(func)}",
150
+ ]
151
+ )
146
152
  ctx.print(complete_confirmation_message, plain=True)
147
- user_input = await _read_line()
153
+ user_response = await _read_line()
148
154
  ctx.print("", plain=True)
149
- user_responses = [val.strip() for val in user_input.split(",", maxsplit=1)]
150
- while len(user_responses) < 2:
151
- user_responses.append("")
152
- approval_str, reason = user_responses
153
- try:
154
- approved = True if approval_str.strip() == "" else to_boolean(approval_str)
155
- if not approved and reason == "":
156
- ctx.print(
157
- stylize_error(
158
- f"You must specify rejection reason (i.e., No, <why>) for {func_call_str}" # noqa
159
- ),
160
- plain=True,
161
- )
162
- continue
163
- return approved, reason
164
- except Exception:
155
+ new_kwargs, is_edited = _get_edited_kwargs(ctx, user_response, kwargs)
156
+ if is_edited:
157
+ kwargs = new_kwargs
158
+ continue
159
+ approval_and_reason = _get_user_approval_and_reason(
160
+ ctx, user_response, func_call_str
161
+ )
162
+ if approval_and_reason is None:
163
+ continue
164
+ return approval_and_reason
165
+
166
+
167
+ def _get_edited_kwargs(
168
+ cx: AnyContext, user_response: str, kwargs: dict[str, Any]
169
+ ) -> tuple[dict[str, Any], bool]:
170
+ user_edit_responses = [val for val in user_response.split(" ", maxsplit=2)]
171
+ if len(user_edit_responses) >= 1 and user_edit_responses[0].lower() != "edit":
172
+ return kwargs, False
173
+ while len(user_edit_responses) < 3:
174
+ user_edit_responses.append("")
175
+ key, val = user_edit_responses[1:]
176
+ if key not in kwargs:
177
+ return kwargs, True
178
+ if val != "":
179
+ kwargs[key] = val
180
+ return kwargs, True
181
+ val = edit_text(
182
+ prompt_message=f"// {key}",
183
+ value=kwargs.get(key, ""),
184
+ editor=CFG.DEFAULT_EDITOR,
185
+ )
186
+ kwargs[key] = val
187
+ return kwargs, True
188
+
189
+
190
+ def _get_user_approval_and_reason(
191
+ ctx: AnyContext, user_response: str, func_call_str: str
192
+ ) -> tuple[bool, str] | None:
193
+ user_approval_responses = [
194
+ val.strip() for val in user_response.split(",", maxsplit=1)
195
+ ]
196
+ while len(user_approval_responses) < 2:
197
+ user_approval_responses.append("")
198
+ approval_str, reason = user_approval_responses
199
+ try:
200
+ approved = True if approval_str.strip() == "" else to_boolean(approval_str)
201
+ if not approved and reason == "":
165
202
  ctx.print(
166
203
  stylize_error(
167
- f"Invalid approval value for {func_call_str}: {approval_str}"
204
+ f"You must specify rejection reason (i.e., No, <why>) for {func_call_str}" # noqa
168
205
  ),
169
206
  plain=True,
170
207
  )
171
- continue
208
+ return None
209
+ return approved, reason
210
+ except Exception:
211
+ ctx.print(
212
+ stylize_error(
213
+ f"Invalid approval value for {func_call_str}: {approval_str}"
214
+ ),
215
+ plain=True,
216
+ )
217
+ return None
172
218
 
173
219
 
174
220
  def _get_run_func_confirmation(func: Callable) -> str:
175
221
  func_name = get_callable_name(func)
176
222
  return render_markdown(
177
- f"Allow to run `{func_name}`? (✅ `Yes` | ⛔ `No, <reason>`)"
223
+ f"Allow to run `{func_name}`? (✅ `Yes` | ⛔ `No, <reason>` | 📝 `Edit <param> <value>`)"
178
224
  ).strip()
179
225
 
180
226
 
181
- def _get_detail_func_param(args: list[Any], kwargs: dict[str, Any]) -> str:
227
+ def _get_detail_func_param(args: list[Any] | tuple[Any], kwargs: dict[str, Any]) -> str:
182
228
  markdown = "\n".join(
183
229
  [_get_func_param_item(key, val) for key, val in kwargs.items()]
184
230
  )
@@ -198,7 +244,9 @@ def _get_func_param_item(key: str, val: Any) -> str:
198
244
  return "\n".join(lines)
199
245
 
200
246
 
201
- def _get_func_call_str(func: Callable, args: list[Any], kwargs: dict[str, Any]) -> str:
247
+ def _get_func_call_str(
248
+ func: Callable, args: list[Any] | tuple[Any], kwargs: dict[str, Any]
249
+ ) -> str:
202
250
  func_name = get_callable_name(func)
203
251
  normalized_args = [stylize_green(_truncate_arg(arg)) for arg in args]
204
252
  normalized_kwargs = []
@@ -225,9 +273,7 @@ async def _read_line():
225
273
  return await reader.prompt_async()
226
274
 
227
275
 
228
- def _adjust_signature(
229
- wrapper: Callable, original_sig: inspect.Signature, takes_no_args: bool
230
- ):
276
+ def _adjust_signature(wrapper: Callable, original_sig: inspect.Signature):
231
277
  """Adjusts the wrapper function's signature for schema generation."""
232
278
  # The wrapper's signature should represent the arguments the *LLM* needs to provide.
233
279
  # The LLM does not provide RunContext (pydantic-ai injects it) or AnyContext
@@ -0,0 +1,28 @@
1
+ import os
2
+ import subprocess
3
+ import tempfile
4
+
5
+ from zrb.util.file import read_file
6
+
7
+
8
+ def edit_text(
9
+ prompt_message: str,
10
+ value: str,
11
+ editor: str = "vi",
12
+ extension: str = ".txt",
13
+ ) -> str:
14
+ prompt_message_eol = f"{prompt_message}\n"
15
+ with tempfile.NamedTemporaryFile(delete=False, suffix=extension) as temp_file:
16
+ temp_file_name = temp_file.name
17
+ temp_file.write(prompt_message_eol.encode())
18
+ # Pre-fill with default content
19
+ if value:
20
+ temp_file.write(value.encode())
21
+ temp_file.flush()
22
+ subprocess.call([editor, temp_file_name])
23
+ # Read the edited content
24
+ edited_content = read_file(temp_file_name)
25
+ parts = [text.strip() for text in edited_content.split(prompt_message, 1)]
26
+ edited_content = "\n".join(parts).lstrip()
27
+ os.remove(temp_file_name)
28
+ return edited_content
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