zrb 1.14.8__tar.gz → 1.15.1__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 (412) hide show
  1. {zrb-1.14.8 → zrb-1.15.1}/PKG-INFO +7 -5
  2. {zrb-1.14.8 → zrb-1.15.1}/pyproject.toml +5 -4
  3. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/http.py +7 -8
  4. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/llm/llm_ask.py +6 -2
  5. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/llm/tool/api.py +17 -9
  6. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/llm/tool/cli.py +7 -2
  7. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/llm/tool/code.py +33 -9
  8. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/llm/tool/file.py +126 -53
  9. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/llm/tool/rag.py +25 -11
  10. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/llm/tool/sub_agent.py +22 -9
  11. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/llm/tool/web.py +30 -12
  12. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/config/config.py +10 -2
  13. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/config/default_prompt/interactive_system_prompt.md +2 -2
  14. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/config/llm_config.py +2 -2
  15. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/config/llm_context/config.py +1 -1
  16. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/group/any_group.py +11 -4
  17. zrb-1.15.1/src/zrb/group/group.py +123 -0
  18. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/agent.py +2 -2
  19. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/config.py +1 -1
  20. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/prompt.py +6 -6
  21. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/tool_wrapper.py +1 -1
  22. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm_task.py +1 -0
  23. zrb-1.14.8/src/zrb/group/group.py +0 -59
  24. {zrb-1.14.8 → zrb-1.15.1}/README.md +0 -0
  25. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/__init__.py +0 -0
  26. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/__main__.py +0 -0
  27. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/attr/__init__.py +0 -0
  28. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/attr/type.py +0 -0
  29. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/__init__.py +0 -0
  30. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/base64.py +0 -0
  31. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/git.py +0 -0
  32. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/git_subtree.py +0 -0
  33. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/group.py +0 -0
  34. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/jwt.py +0 -0
  35. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/llm/chat_session.py +0 -0
  36. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/llm/history.py +0 -0
  37. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/llm/input.py +0 -0
  38. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/llm/previous-session.js +0 -0
  39. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/llm/tool/__init__.py +0 -0
  40. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/md5.py +0 -0
  41. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/__init__.py +0 -0
  42. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  43. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
  44. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
  45. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  46. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  47. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  48. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  49. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
  50. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
  51. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  52. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
  53. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  54. {zrb-1.14.8 → zrb-1.15.1}/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
  55. {zrb-1.14.8 → zrb-1.15.1}/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
  56. {zrb-1.14.8 → zrb-1.15.1}/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
  57. {zrb-1.14.8 → zrb-1.15.1}/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
  58. {zrb-1.14.8 → zrb-1.15.1}/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
  59. {zrb-1.14.8 → zrb-1.15.1}/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
  60. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
  61. {zrb-1.14.8 → zrb-1.15.1}/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
  62. {zrb-1.14.8 → zrb-1.15.1}/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
  63. {zrb-1.14.8 → zrb-1.15.1}/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
  64. {zrb-1.14.8 → zrb-1.15.1}/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
  65. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  66. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  67. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
  68. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  69. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  70. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  71. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
  72. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  73. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
  74. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
  75. {zrb-1.14.8 → zrb-1.15.1}/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
  76. {zrb-1.14.8 → zrb-1.15.1}/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
  77. {zrb-1.14.8 → zrb-1.15.1}/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
  78. {zrb-1.14.8 → zrb-1.15.1}/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
  79. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
  80. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
  81. {zrb-1.14.8 → zrb-1.15.1}/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
  82. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
  83. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
  84. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
  85. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
  86. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  87. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
  88. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  89. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
  90. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  91. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  92. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  93. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  94. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  95. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  96. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  97. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  98. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  99. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  100. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  101. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  102. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  103. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  104. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  105. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  106. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  107. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  108. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  109. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  110. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  111. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  112. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  113. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  114. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  115. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  116. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
  117. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
  118. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  119. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  120. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  121. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  122. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
  123. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
  124. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
  125. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
  126. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
  127. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  128. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
  129. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
  130. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
  131. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
  132. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
  133. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  134. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
  135. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
  136. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
  137. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
  138. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
  139. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  140. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
  141. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  142. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  143. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  144. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  145. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  146. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  147. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
  148. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  149. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
  150. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  151. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
  152. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
  153. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
  154. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  155. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  156. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
  157. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
  158. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
  159. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
  160. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
  161. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
  162. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
  163. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
  164. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
  165. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
  166. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  167. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
  168. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
  169. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
  170. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
  171. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
  172. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
  173. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
  174. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
  175. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
  176. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
  177. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
  178. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
  179. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
  180. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
  181. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
  182. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
  183. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
  184. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
  185. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
  186. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
  187. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  188. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
  189. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  190. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  191. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  192. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  193. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  194. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
  195. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
  196. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
  197. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
  198. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
  199. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
  200. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
  201. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
  202. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
  203. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
  204. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  205. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/create/__init__.py +0 -0
  206. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  207. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  208. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/project/create/project_task.py +0 -0
  209. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/python.py +0 -0
  210. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/random.py +0 -0
  211. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  212. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  213. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/setup/common_input.py +0 -0
  214. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  215. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  216. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  217. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  218. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/setup/ubuntu.py +0 -0
  219. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
  220. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
  221. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
  222. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/shell/__init__.py +0 -0
  223. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  224. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  225. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  226. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  227. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/todo.py +0 -0
  228. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/builtin/uuid.py +0 -0
  229. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/callback/__init__.py +0 -0
  230. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/callback/any_callback.py +0 -0
  231. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/callback/callback.py +0 -0
  232. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/cmd/__init__.py +0 -0
  233. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/cmd/cmd_result.py +0 -0
  234. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/cmd/cmd_val.py +0 -0
  235. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/config/default_prompt/file_extractor_system_prompt.md +0 -0
  236. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/config/default_prompt/persona.md +0 -0
  237. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/config/default_prompt/repo_extractor_system_prompt.md +0 -0
  238. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/config/default_prompt/repo_summarizer_system_prompt.md +0 -0
  239. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/config/default_prompt/summarization_prompt.md +0 -0
  240. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/config/default_prompt/system_prompt.md +0 -0
  241. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/config/llm_context/config_parser.py +0 -0
  242. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/config/llm_rate_limitter.py +0 -0
  243. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/config/web_auth_config.py +0 -0
  244. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/content_transformer/__init__.py +0 -0
  245. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  246. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/content_transformer/content_transformer.py +0 -0
  247. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/context/__init__.py +0 -0
  248. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/context/any_context.py +0 -0
  249. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/context/any_shared_context.py +0 -0
  250. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/context/context.py +0 -0
  251. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/context/shared_context.py +0 -0
  252. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/dot_dict/__init__.py +0 -0
  253. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/dot_dict/dot_dict.py +0 -0
  254. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/env/__init__.py +0 -0
  255. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/env/any_env.py +0 -0
  256. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/env/env.py +0 -0
  257. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/env/env_file.py +0 -0
  258. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/env/env_map.py +0 -0
  259. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/group/__init__.py +0 -0
  260. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/input/__init__.py +0 -0
  261. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/input/any_input.py +0 -0
  262. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/input/base_input.py +0 -0
  263. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/input/bool_input.py +0 -0
  264. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/input/float_input.py +0 -0
  265. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/input/int_input.py +0 -0
  266. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/input/option_input.py +0 -0
  267. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/input/password_input.py +0 -0
  268. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/input/str_input.py +0 -0
  269. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/input/text_input.py +0 -0
  270. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/__init__.py +0 -0
  271. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/cli.py +0 -0
  272. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/common_util.py +0 -0
  273. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_app.py +0 -0
  274. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/__init__.py +0 -0
  275. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/docs_route.py +0 -0
  276. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  277. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  278. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/error_page/view.html +0 -0
  279. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  280. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  281. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/home_page/view.html +0 -0
  282. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/login_api_route.py +0 -0
  283. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  284. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/login_page/view.html +0 -0
  285. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  286. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  287. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  288. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  289. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  290. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  291. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  292. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  293. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
  294. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  295. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/global_template.html +0 -0
  296. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  297. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  298. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/common.js +0 -0
  299. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  300. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  301. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  302. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.amber.min.css +0 -0
  303. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.blue.min.css +0 -0
  304. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.cyan.min.css +0 -0
  305. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.fuchsia.min.css +0 -0
  306. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.green.min.css +0 -0
  307. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.grey.min.css +0 -0
  308. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.indigo.min.css +0 -0
  309. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.jade.min.css +0 -0
  310. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.lime.min.css +0 -0
  311. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.min.css +0 -0
  312. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.orange.min.css +0 -0
  313. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.pink.min.css +0 -0
  314. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.pumpkin.min.css +0 -0
  315. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.purple.min.css +0 -0
  316. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.red.min.css +0 -0
  317. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.sand.min.css +0 -0
  318. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.slate.min.css +0 -0
  319. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.violet.min.css +0 -0
  320. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.yellow.min.css +0 -0
  321. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/pico-css/pico.zinc.min.css +0 -0
  322. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  323. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
  324. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
  325. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  326. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/static/static_route.py +0 -0
  327. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  328. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
  329. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_schema/session.py +0 -0
  330. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_schema/token.py +0 -0
  331. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_schema/user.py +0 -0
  332. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_util/cookie.py +0 -0
  333. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_util/html.py +0 -0
  334. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_util/token.py +0 -0
  335. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/runner/web_util/user.py +0 -0
  336. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/session/__init__.py +0 -0
  337. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/session/any_session.py +0 -0
  338. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/session/session.py +0 -0
  339. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/session_state_log/__init__.py +0 -0
  340. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/session_state_log/session_state_log.py +0 -0
  341. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/session_state_logger/__init__.py +0 -0
  342. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
  343. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
  344. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  345. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/__init__.py +0 -0
  346. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/any_task.py +0 -0
  347. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/base/__init__.py +0 -0
  348. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/base/context.py +0 -0
  349. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/base/execution.py +0 -0
  350. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/base/lifecycle.py +0 -0
  351. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/base/monitoring.py +0 -0
  352. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/base/operators.py +0 -0
  353. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/base_task.py +0 -0
  354. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/base_trigger.py +0 -0
  355. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/cmd_task.py +0 -0
  356. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/http_check.py +0 -0
  357. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/__init__.py +0 -0
  358. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/conversation_history.py +0 -0
  359. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/conversation_history_model.py +0 -0
  360. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/default_workflow/coding.md +0 -0
  361. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/default_workflow/copywriting.md +0 -0
  362. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/default_workflow/researching.md +0 -0
  363. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/error.py +0 -0
  364. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/history_summarization.py +0 -0
  365. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/print_node.py +0 -0
  366. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/llm/typing.py +0 -0
  367. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/make_task.py +0 -0
  368. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/rsync_task.py +0 -0
  369. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/scaffolder.py +0 -0
  370. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/scheduler.py +0 -0
  371. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/task.py +0 -0
  372. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task/tcp_check.py +0 -0
  373. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task_status/__init__.py +0 -0
  374. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/task_status/task_status.py +0 -0
  375. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/__init__.py +0 -0
  376. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/attr.py +0 -0
  377. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/callable.py +0 -0
  378. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/cli/__init__.py +0 -0
  379. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/cli/style.py +0 -0
  380. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/cli/subcommand.py +0 -0
  381. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/cmd/__init__.py +0 -0
  382. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/cmd/command.py +0 -0
  383. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/cmd/remote.py +0 -0
  384. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/codemod/__init__.py +0 -0
  385. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/codemod/modification_mode.py +0 -0
  386. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/codemod/modify_class.py +0 -0
  387. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/codemod/modify_class_parent.py +0 -0
  388. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/codemod/modify_class_property.py +0 -0
  389. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/codemod/modify_dict.py +0 -0
  390. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/codemod/modify_function.py +0 -0
  391. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/codemod/modify_function_call.py +0 -0
  392. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/codemod/modify_method.py +0 -0
  393. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/codemod/modify_module.py +0 -0
  394. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/cron.py +0 -0
  395. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/file.py +0 -0
  396. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/git.py +0 -0
  397. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/git_diff_model.py +0 -0
  398. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/git_subtree.py +0 -0
  399. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/git_subtree_model.py +0 -0
  400. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/group.py +0 -0
  401. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/init_path.py +0 -0
  402. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/llm/prompt.py +0 -0
  403. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/load.py +0 -0
  404. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/run.py +0 -0
  405. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/string/__init__.py +0 -0
  406. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/string/conversion.py +0 -0
  407. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/string/format.py +0 -0
  408. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/string/name.py +0 -0
  409. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/todo.py +0 -0
  410. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/util/todo_model.py +0 -0
  411. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/xcom/__init__.py +0 -0
  412. {zrb-1.14.8 → zrb-1.15.1}/src/zrb/xcom/xcom.py +0 -0
@@ -1,8 +1,7 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: zrb
3
- Version: 1.14.8
3
+ Version: 1.15.1
4
4
  Summary: Your Automation Powerhouse
5
- Home-page: https://github.com/state-alchemists/zrb
6
5
  License: AGPL-3.0-or-later
7
6
  Keywords: Automation,Task Runner,Code Generator,Monorepo,Low Code
8
7
  Author: Go Frendi Gunawan
@@ -13,6 +12,7 @@ Classifier: Programming Language :: Python :: 3
13
12
  Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
15
14
  Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
16
  Provides-Extra: all
17
17
  Provides-Extra: playwright
18
18
  Provides-Extra: rag
@@ -22,11 +22,12 @@ Requires-Dist: chromadb (>=0.6.3,<0.7.0) ; extra == "rag" or extra == "all"
22
22
  Requires-Dist: fastapi[standard] (>=0.116.1,<0.117.0)
23
23
  Requires-Dist: isort (>=6.0.1,<6.1.0)
24
24
  Requires-Dist: libcst (>=1.7.0,<2.0.0)
25
- Requires-Dist: openai (>=1.92.0,<=1.99.1)
25
+ Requires-Dist: markdownify (>=1.2.0,<2.0.0)
26
+ Requires-Dist: openai (>=1.99.7)
26
27
  Requires-Dist: pdfplumber (>=0.11.6,<0.12.0)
27
28
  Requires-Dist: playwright (>=1.53.0,<2.0.0) ; extra == "playwright" or extra == "all"
28
29
  Requires-Dist: psutil (>=7.0.0,<8.0.0)
29
- Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cli,cohere,google,groq,huggingface,mcp,mistral,openai,vertexai] (>=0.6.2,<0.7.0)
30
+ Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cli,cohere,google,groq,huggingface,mcp,mistral,openai,vertexai] (>=0.7.0,<0.8.0)
30
31
  Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
31
32
  Requires-Dist: python-dotenv (>=1.1.1,<2.0.0)
32
33
  Requires-Dist: python-jose[cryptography] (>=3.4.0,<4.0.0)
@@ -34,6 +35,7 @@ Requires-Dist: requests (>=2.32.4,<3.0.0)
34
35
  Requires-Dist: tiktoken (>=0.8.0,<0.9.0)
35
36
  Requires-Dist: ulid-py (>=1.1.0,<2.0.0)
36
37
  Project-URL: Documentation, https://github.com/state-alchemists/zrb
38
+ Project-URL: Homepage, https://github.com/state-alchemists/zrb
37
39
  Project-URL: Repository, https://github.com/state-alchemists/zrb
38
40
  Description-Content-Type: text/markdown
39
41
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.14.8"
3
+ version = "1.15.1"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -54,14 +54,15 @@ pyjwt = "^2.10.1"
54
54
  # NOTE: Look at https://github.com/pydantic/pydantic-ai/blob/main/pydantic_ai_slim/pyproject.toml
55
55
  # - We want to include all models, as well as mcp capability.
56
56
  # - We also need prompt-toolkit and rich which are included in pydantic ai's cli optional dependency
57
- pydantic-ai-slim = {extras = ["openai", "cohere", "vertexai", "google", "anthropic", "groq", "mistral", "bedrock", "huggingface", "cli", "mcp"], version = "^0.6.2"}
57
+ pydantic-ai-slim = {extras = ["openai", "cohere", "vertexai", "google", "anthropic", "groq", "mistral", "bedrock", "huggingface", "cli", "mcp"], version = "^0.7.0"}
58
58
 
59
- # NOTE: On Pydantic AI 0.6.2, The last working version of OpenAI is 0.99.1
60
- openai = ">=1.92.0, <=1.99.1"
59
+ # NOTE: On Pydantic AI 0.7.0, OpenAI is 1.99.2 to 1.99.6 seems to be broken
60
+ openai = ">=1.99.7"
61
61
 
62
62
  tiktoken = "^0.8.0"
63
63
  playwright = {version = "^1.53.0", optional = true}
64
64
  chromadb = {version = "^0.6.3", optional = true}
65
+ markdownify = "^1.2.0"
65
66
 
66
67
  [tool.poetry.extras]
67
68
  # poetry install -E rag
@@ -2,6 +2,7 @@ from typing import Any
2
2
 
3
3
  from zrb.builtin.group import http_group
4
4
  from zrb.context.any_context import AnyContext
5
+ from zrb.input.bool_input import BoolInput
5
6
  from zrb.input.option_input import OptionInput
6
7
  from zrb.input.str_input import StrInput
7
8
  from zrb.task.make_task import make_task
@@ -32,10 +33,9 @@ from zrb.task.make_task import make_task
32
33
  prompt="Enter body as JSON",
33
34
  default="{}",
34
35
  ),
35
- OptionInput(
36
+ BoolInput(
36
37
  name="verify_ssl",
37
- default="true",
38
- options=["true", "false"],
38
+ default=True,
39
39
  description="Verify SSL certificate",
40
40
  ),
41
41
  ],
@@ -55,7 +55,7 @@ def http_request(ctx: AnyContext) -> Any:
55
55
  body = json.loads(ctx.input.body)
56
56
 
57
57
  # Make request
58
- verify = ctx.input.verify_ssl.lower() == "true"
58
+ verify = ctx.input.verify_ssl
59
59
  response = requests.request(
60
60
  method=ctx.input.method,
61
61
  url=ctx.input.url,
@@ -107,10 +107,9 @@ def http_request(ctx: AnyContext) -> Any:
107
107
  prompt="Enter body as JSON",
108
108
  default="{}",
109
109
  ),
110
- OptionInput(
110
+ BoolInput(
111
111
  name="verify_ssl",
112
- default="true",
113
- options=["true", "false"],
112
+ default=True,
114
113
  description="Verify SSL certificate",
115
114
  ),
116
115
  ],
@@ -137,7 +136,7 @@ def generate_curl(ctx: AnyContext) -> str:
137
136
  parts.extend(["--data-raw", shlex.quote(ctx.input.body)])
138
137
 
139
138
  # Add SSL verification
140
- if ctx.input.verify_ssl.lower() == "false":
139
+ if not ctx.input.verify_ssl:
141
140
  parts.append("--insecure")
142
141
 
143
142
  # Add URL
@@ -148,10 +148,14 @@ llm_group.add_task(
148
148
  alias="chat",
149
149
  )
150
150
 
151
+ if CFG.LLM_ALLOW_ANALYZE_REPO:
152
+ llm_ask.append_tool(analyze_repo)
153
+
154
+ if CFG.LLM_ALLOW_ANALYZE_FILE:
155
+ llm_ask.append_tool(analyze_file)
156
+
151
157
  if CFG.LLM_ALLOW_ACCESS_LOCAL_FILE:
152
158
  llm_ask.append_tool(
153
- analyze_repo,
154
- analyze_file,
155
159
  search_files,
156
160
  list_files,
157
161
  read_from_file,
@@ -4,15 +4,18 @@ from typing import Literal
4
4
 
5
5
  def get_current_location() -> str:
6
6
  """
7
- Fetches the user's current geographical location (latitude and longitude) based on their IP address.
7
+ Fetches the user's current geographical location based on their IP address.
8
8
 
9
- Use this tool when the user asks "Where am I?", "What is my current location?", or has a query that requires knowing their location to be answered.
9
+ Use this tool when the user asks "Where am I?", "What is my current
10
+ location?", or has a query that requires knowing their location to be
11
+ answered.
10
12
 
11
13
  Returns:
12
- str: A JSON string containing the 'lat' and 'lon' of the current location.
13
- Example: '{"lat": 48.8584, "lon": 2.2945}'
14
+ str: A JSON string containing the 'lat' and 'lon' of the current
15
+ location. Example: '{"lat": 48.8584, "lon": 2.2945}'
14
16
  Raises:
15
- requests.RequestException: If the API request to the location service fails.
17
+ requests.RequestException: If the API request to the location service
18
+ fails.
16
19
  """
17
20
  import requests
18
21
 
@@ -32,17 +35,22 @@ def get_current_weather(
32
35
  """
33
36
  Retrieves the current weather conditions for a given geographical location.
34
37
 
35
- Use this tool when the user asks about the weather. If the user does not provide a location, first use the `get_current_location` tool to determine their location.
38
+ Use this tool when the user asks about the weather. If the user does not
39
+ provide a location, first use the `get_current_location` tool to
40
+ determine their location.
36
41
 
37
42
  Args:
38
43
  latitude (float): The latitude of the location.
39
44
  longitude (float): The longitude of the location.
40
- temperature_unit (Literal["celsius", "fahrenheit"]): The desired unit for the temperature reading.
45
+ temperature_unit (Literal["celsius", "fahrenheit"]): The desired unit
46
+ for the temperature reading.
41
47
 
42
48
  Returns:
43
- str: A JSON string containing detailed weather data, including temperature, wind speed, and weather code.
49
+ str: A JSON string containing detailed weather data, including
50
+ temperature, wind speed, and weather code.
44
51
  Raises:
45
- requests.RequestException: If the API request to the weather service fails.
52
+ requests.RequestException: If the API request to the weather service
53
+ fails.
46
54
  """
47
55
  import requests
48
56
 
@@ -6,9 +6,14 @@ def run_shell_command(command: str) -> str:
6
6
  """
7
7
  Executes a shell command on the user's local machine and returns the output.
8
8
 
9
- This tool is powerful and should be used for tasks that require interacting with the command line, such as running scripts, managing system processes, or using command-line tools.
9
+ This tool is powerful and should be used for tasks that require interacting
10
+ with the command line, such as running scripts, managing system processes,
11
+ or using command-line tools.
10
12
 
11
- **Security Warning:** This tool executes commands with the same permissions as the user running the assistant. Before executing any command that could modify files or system state (e.g., `git`, `npm`, `pip`, `docker`), you MUST explain what the command does and ask the user for confirmation.
13
+ **Security Warning:** This tool executes commands with the same permissions
14
+ as the user running the assistant. Before executing any command that could
15
+ modify files or system state (e.g., `git`, `npm`, `pip`, `docker`), you
16
+ MUST explain what the command does and ask the user for confirmation.
12
17
 
13
18
  Args:
14
19
  command (str): The exact shell command to execute.
@@ -58,25 +58,49 @@ async def analyze_repo(
58
58
  """
59
59
  Performs a deep, goal-oriented analysis of a code repository or directory.
60
60
 
61
- This powerful tool recursively reads all relevant files in a directory, extracts key information, and then summarizes that information in relation to a specific goal. It uses intelligent sub-agents for extraction and summarization, making it ideal for complex tasks that require a holistic understanding of a codebase.
61
+ This powerful tool recursively reads all relevant files in a directory,
62
+ extracts key information, and then summarizes that information in relation
63
+ to a specific goal. It uses intelligent sub-agents for extraction and
64
+ summarization, making it ideal for complex tasks that require a holistic
65
+ understanding of a codebase.
66
+
67
+ To ensure a focused and effective analysis, it is crucial to provide a
68
+ clear and specific goal. Vague goals will result in a vague analysis and
69
+ may cause the tool to run for a long time.
62
70
 
63
71
  Use this tool for:
64
72
  - Understanding a large or unfamiliar codebase.
65
73
  - Generating high-level summaries of a project's architecture.
66
74
  - Performing a preliminary code review.
67
- - Creating documentation or diagrams (e.g., "Generate a Mermaid C4 diagram for this service").
68
- - Answering broad questions like "How does the authentication in this project work?".
75
+ - Creating documentation or diagrams (e.g., "Generate a Mermaid C4 diagram
76
+ for this service").
77
+ - Answering broad questions like "How does the authentication in this
78
+ project work?".
69
79
 
70
80
  Args:
71
81
  path (str): The path to the directory or repository to analyze.
72
- goal (str): A clear and specific description of what you want to achieve. A good goal is critical for getting a useful result. For example: "Understand the database schema by analyzing all the .sql files" or "Create a summary of all the API endpoints defined in the 'api' directory".
73
- extensions (list[str], optional): A list of file extensions to include in the analysis. Defaults to a comprehensive list of common code and configuration files.
74
- exclude_patterns (list[str], optional): A list of glob patterns for files and directories to exclude from the analysis. Defaults to common patterns like '.git', 'node_modules', and '.venv'.
75
- extraction_token_threshold (int, optional): The maximum token threshold for the extraction sub-agent.
76
- summarization_token_threshold (int, optional): The maximum token threshold for the summarization sub-agent.
82
+ goal (str): A clear and specific description of what you want to
83
+ achieve. A good goal is critical for getting a useful result.
84
+ - Good goal: "Understand the database schema by analyzing all the
85
+ .sql files"
86
+ - Good goal: "Create a summary of all the API endpoints defined in
87
+ the 'api' directory"
88
+ - Bad goal: "Analyze the repo"
89
+ - Bad goal: "Tell me about the code"
90
+ extensions (list[str], optional): A list of file extensions to include
91
+ in the analysis. Defaults to a comprehensive list of common code
92
+ and configuration files.
93
+ exclude_patterns (list[str], optional): A list of glob patterns for
94
+ files and directories to exclude from the analysis. Defaults to
95
+ common patterns like '.git', 'node_modules', and '.venv'.
96
+ extraction_token_threshold (int, optional): The maximum token
97
+ threshold for the extraction sub-agent.
98
+ summarization_token_threshold (int, optional): The maximum token
99
+ threshold for the summarization sub-agent.
77
100
 
78
101
  Returns:
79
- str: A detailed, markdown-formatted analysis and summary of the repository, tailored to the specified goal.
102
+ str: A detailed, markdown-formatted analysis and summary of the
103
+ repository, tailored to the specified goal.
80
104
  Raises:
81
105
  Exception: If an error occurs during the analysis.
82
106
  """
@@ -102,17 +102,27 @@ def list_files(
102
102
  """
103
103
  Lists the files and directories within a specified path.
104
104
 
105
- This is a fundamental tool for exploring the file system. Use it to discover the structure of a directory, find specific files, or get a general overview of the project layout before performing other operations.
105
+ This is a fundamental tool for exploring the file system. Use it to
106
+ discover the structure of a directory, find specific files, or get a
107
+ general overview of the project layout before performing other operations.
106
108
 
107
109
  Args:
108
- path (str, optional): The directory path to list. Defaults to the current directory (".").
109
- recursive (bool, optional): If True, lists files and directories recursively. If False, lists only the top-level contents. Defaults to True.
110
- include_hidden (bool, optional): If True, includes hidden files and directories (those starting with a dot). Defaults to False.
111
- excluded_patterns (list[str], optional): A list of glob patterns to exclude from the listing. This is useful for ignoring irrelevant files like build artifacts or virtual environments. Defaults to a standard list of common exclusion patterns.
110
+ path (str, optional): The directory path to list. Defaults to the
111
+ current directory (".").
112
+ recursive (bool, optional): If True, lists files and directories
113
+ recursively. If False, lists only the top-level contents.
114
+ Defaults to True.
115
+ include_hidden (bool, optional): If True, includes hidden files and
116
+ directories (those starting with a dot). Defaults to False.
117
+ excluded_patterns (list[str], optional): A list of glob patterns to
118
+ exclude from the listing. This is useful for ignoring irrelevant
119
+ files like build artifacts or virtual environments. Defaults to a
120
+ standard list of common exclusion patterns.
112
121
 
113
122
  Returns:
114
- str: A JSON string containing a list of file and directory paths relative to the input path.
115
- Example: '{"files": ["src/main.py", "README.md"]}'
123
+ str: A JSON string containing a list of file and directory paths
124
+ relative to the input path.
125
+ Example: '{"files": ["src/main.py", "README.md"]}'
116
126
  Raises:
117
127
  FileNotFoundError: If the specified path does not exist.
118
128
  """
@@ -213,26 +223,37 @@ def read_from_file(
213
223
  end_line: Optional[int] = None,
214
224
  ) -> str:
215
225
  """
216
- Reads the content of a file, optionally from a specific start line to an end line.
217
-
218
- This tool is essential for inspecting file contents. It can read both text and PDF files. The returned content is prefixed with line numbers, which is crucial for providing context when you need to modify the file later with the `apply_diff` tool.
219
-
220
- Use this tool to:
221
- - Examine the source code of a file.
222
- - Read configuration files.
223
- - Check the contents of a document.
224
-
225
- Args:
226
- path (str): The path to the file to read.
227
- start_line (int, optional): The 1-based line number to start reading from. If omitted, reading starts from the beginning of the file.
228
- end_line (int, optional): The 1-based line number to stop reading at (inclusive). If omitted, reads to the end of the file.
229
-
230
- Returns:
231
- str: A JSON object containing the file path, the requested content with line numbers, the start and end lines, and the total number of lines in the file.
232
- Example: '{"path": "src/main.py", "content": "1| import os\n2| \n3| print(\"Hello, World!\")", "start_line": 1, "end_line": 3, "total_lines": 3}'
233
- Raises:
234
- FileNotFoundError: If the specified file does not exist.
226
+ Reads the content of a file, optionally from a specific start line to an
227
+ end line.
228
+
229
+ This tool is essential for inspecting file contents. It can read both text
230
+ and PDF files. The returned content is prefixed with line numbers, which is
231
+ crucial for providing context when you need to modify the file later with
232
+ the `apply_diff` tool.
233
+
234
+ Use this tool to:
235
+ - Examine the source code of a file.
236
+ - Read configuration files.
237
+ - Check the contents of a document.
238
+
239
+ Args:
240
+ path (str): The path to the file to read.
241
+ start_line (int, optional): The 1-based line number to start reading
242
+ from. If omitted, reading starts from the beginning of the file.
243
+ end_line (int, optional): The 1-based line number to stop reading at
244
+ (inclusive). If omitted, reads to the end of the file.
245
+
246
+ Returns:
247
+ str: A JSON object containing the file path, the requested content
248
+ with line numbers, the start and end lines, and the total number
249
+ of lines in the file.
250
+ Example: '{"path": "src/main.py", "content": "1| import os\n2|
251
+ 3| print(\"Hello, World!\")", "start_line": 1, "end_line": 3,
252
+ "total_lines": 3}'
253
+ Raises:
254
+ FileNotFoundError: If the specified file does not exist.
235
255
  """
256
+
236
257
  abs_path = os.path.abspath(os.path.expanduser(path))
237
258
  # Check if file exists
238
259
  if not os.path.exists(abs_path):
@@ -274,13 +295,18 @@ def write_to_file(
274
295
  content: str,
275
296
  ) -> str:
276
297
  """
277
- Writes content to a file, completely overwriting it if it exists or creating it if it doesn't.
298
+ Writes content to a file, completely overwriting it if it exists or
299
+ creating it if it doesn't.
278
300
 
279
- Use this tool to create new files or to replace the entire content of existing files. This is a destructive operation, so be certain of your actions. Always read the file first to understand its contents before overwriting it, unless you are creating a new file.
301
+ Use this tool to create new files or to replace the entire content of
302
+ existing files. This is a destructive operation, so be certain of your
303
+ actions. Always read the file first to understand its contents before
304
+ overwriting it, unless you are creating a new file.
280
305
 
281
306
  Args:
282
307
  path (str): The path to the file to write to.
283
- content (str): The full, complete content to be written to the file. Do not use partial content or omit any lines.
308
+ content (str): The full, complete content to be written to the file.
309
+ Do not use partial content or omit any lines.
284
310
 
285
311
  Returns:
286
312
  str: A JSON object indicating success or failure.
@@ -308,18 +334,28 @@ def search_files(
308
334
  include_hidden: bool = True,
309
335
  ) -> str:
310
336
  """
311
- Searches for a regular expression (regex) pattern within files in a specified directory.
337
+ Searches for a regular expression (regex) pattern within files in a
338
+ specified directory.
312
339
 
313
- This tool is invaluable for finding specific code, configuration, or text across multiple files. Use it to locate function definitions, variable assignments, error messages, or any other text pattern.
340
+ This tool is invaluable for finding specific code, configuration, or text
341
+ across multiple files. Use it to locate function definitions, variable
342
+ assignments, error messages, or any other text pattern.
314
343
 
315
344
  Args:
316
345
  path (str): The directory path to start the search from.
317
- regex (str): The Python-compatible regular expression pattern to search for.
318
- file_pattern (str, optional): A glob pattern to filter which files get searched (e.g., "*.py", "*.md"). If omitted, all files are searched.
319
- include_hidden (bool, optional): If True, the search will include hidden files and directories. Defaults to True.
346
+ regex (str): The Python-compatible regular expression pattern to search
347
+ for.
348
+ file_pattern (str, optional): A glob pattern to filter which files get
349
+ searched (e.g., "*.py", "*.md"). If omitted, all files are
350
+ searched.
351
+ include_hidden (bool, optional): If True, the search will include
352
+ hidden files and directories. Defaults to True.
320
353
 
321
354
  Returns:
322
- str: A JSON object containing a summary of the search and a list of results. Each result includes the file path and a list of matches, with each match showing the line number, line content, and a few lines of context from before and after the match.
355
+ str: A JSON object containing a summary of the search and a list of
356
+ results. Each result includes the file path and a list of matches,
357
+ with each match showing the line number, line content, and a few
358
+ lines of context from before and after the match.
323
359
  Raises:
324
360
  ValueError: If the provided `regex` pattern is invalid.
325
361
  """
@@ -416,13 +452,18 @@ def replace_in_file(
416
452
  """
417
453
  Replaces the first occurrence of a string in a file.
418
454
 
419
- This tool is for making targeted modifications to a file. It is a single-step operation that is generally safer and more ergonomic than `write_to_file` for small changes.
455
+ This tool is for making targeted modifications to a file. It is a
456
+ single-step operation that is generally safer and more ergonomic than
457
+ `write_to_file` for small changes.
420
458
 
421
- To ensure the replacement is applied correctly and to avoid ambiguity, the `old_string` parameter should be a unique, multi-line string that includes context from before and after the code you want to change.
459
+ To ensure the replacement is applied correctly and to avoid ambiguity, the
460
+ `old_string` parameter should be a unique, multi-line string that includes
461
+ context from before and after the code you want to change.
422
462
 
423
463
  Args:
424
464
  path (str): The path of the file to modify.
425
- old_string (str): The exact, verbatim string to search for and replace. This should be a unique, multi-line block of text.
465
+ old_string (str): The exact, verbatim string to search for and replace.
466
+ This should be a unique, multi-line block of text.
426
467
  new_string (str): The new string that will replace the `old_string`.
427
468
 
428
469
  Returns:
@@ -455,21 +496,37 @@ async def analyze_file(
455
496
  """
456
497
  Performs a deep, goal-oriented analysis of a single file using a sub-agent.
457
498
 
458
- This tool is ideal for complex questions about a single file that go beyond simple reading or searching. It uses a specialized sub-agent to analyze the file's content in relation to a specific query.
499
+ This tool is ideal for complex questions about a single file that go beyond
500
+ simple reading or searching. It uses a specialized sub-agent to analyze the
501
+ file's content in relation to a specific query.
502
+
503
+ To ensure a focused and effective analysis, it is crucial to provide a
504
+ clear and specific query. Vague queries will result in a vague analysis
505
+ and may cause the tool to run for a long time.
459
506
 
460
507
  Use this tool to:
461
508
  - Summarize the purpose and functionality of a script or configuration file.
462
- - Extract the structure of a file (e.g., "List all the function names in this Python file").
509
+ - Extract the structure of a file (e.g., "List all the function names in
510
+ this Python file").
463
511
  - Perform a detailed code review of a specific file.
464
- - Answer complex questions like, "How is the 'User' class used in this file?".
512
+ - Answer complex questions like, "How is the 'User' class used in this
513
+ file?".
465
514
 
466
515
  Args:
467
516
  path (str): The path to the file to be analyzed.
468
- query (str): A clear and specific question or instruction about what to analyze in the file.
469
- token_limit (int, optional): The maximum token length of the file content to be passed to the analysis sub-agent.
517
+ query (str): A clear and specific question or instruction about what to
518
+ analyze in the file.
519
+ - Good query: "What is the purpose of the 'User' class in this
520
+ file?"
521
+ - Good query: "List all the function names in this Python file."
522
+ - Bad query: "Analyze this file."
523
+ - Bad query: "Tell me about this code."
524
+ token_limit (int, optional): The maximum token length of the file
525
+ content to be passed to the analysis sub-agent.
470
526
 
471
527
  Returns:
472
- str: A detailed, markdown-formatted analysis of the file, tailored to the specified query.
528
+ str: A detailed, markdown-formatted analysis of the file, tailored to
529
+ the specified query.
473
530
  Raises:
474
531
  FileNotFoundError: If the specified file does not exist.
475
532
  """
@@ -496,14 +553,22 @@ def read_many_files(paths: list[str]) -> str:
496
553
  """
497
554
  Reads and returns the full content of multiple files at once.
498
555
 
499
- This tool is highly efficient for gathering context from several files simultaneously. Use it when you need to understand how different files in a project relate to each other, or when you need to inspect a set of related configuration or source code files.
556
+ This tool is highly efficient for gathering context from several files
557
+ simultaneously. Use it when you need to understand how different files in a
558
+ project relate to each other, or when you need to inspect a set of related
559
+ configuration or source code files.
500
560
 
501
561
  Args:
502
- paths (list[str]): A list of paths to the files you want to read. It is crucial to provide accurate paths. Use the `list_files` tool first if you are unsure about the exact file locations.
562
+ paths (list[str]): A list of paths to the files you want to read. It is
563
+ crucial to provide accurate paths. Use the `list_files` tool first
564
+ if you are unsure about the exact file locations.
503
565
 
504
566
  Returns:
505
- str: A JSON object where keys are the file paths and values are their corresponding contents, prefixed with line numbers. If a file cannot be read, its value will be an error message.
506
- Example: '{"results": {"src/api.py": "1| import ...", "config.yaml": "1| key: value"}}'
567
+ str: A JSON object where keys are the file paths and values are their
568
+ corresponding contents, prefixed with line numbers. If a file
569
+ cannot be read, its value will be an error message.
570
+ Example: '{"results": {"src/api.py": "1| import ...",
571
+ "config.yaml": "1| key: value"}}'
507
572
  """
508
573
  results = {}
509
574
  for path in paths:
@@ -522,16 +587,24 @@ def write_many_files(files: list[FileToWrite]) -> str:
522
587
  """
523
588
  Writes content to multiple files in a single, atomic operation.
524
589
 
525
- This tool is for applying widespread changes to a project, such as creating a set of new files from a template, updating multiple configuration files, or performing a large-scale refactoring.
590
+ This tool is for applying widespread changes to a project, such as
591
+ creating a set of new files from a template, updating multiple
592
+ configuration files, or performing a large-scale refactoring.
526
593
 
527
- Each file's content is completely replaced. If a file does not exist, it will be created. If it exists, its current content will be entirely overwritten. Therefore, you must provide the full, intended content for each file.
594
+ Each file's content is completely replaced. If a file does not exist, it
595
+ will be created. If it exists, its current content will be entirely
596
+ overwritten. Therefore, you must provide the full, intended content for
597
+ each file.
528
598
 
529
599
  Args:
530
- files: A list of file objects, where each object is a dictionary containing a 'path' and the complete 'content'.
600
+ files: A list of file objects, where each object is a dictionary
601
+ containing a 'path' and the complete 'content'.
531
602
 
532
603
  Returns:
533
- str: A JSON object summarizing the operation, listing successfully written files and any files that failed, along with corresponding error messages.
534
- Example: '{"success": ["file1.py", "file2.txt"], "errors": {}}'
604
+ str: A JSON object summarizing the operation, listing successfully
605
+ written files and any files that failed, along with corresponding
606
+ error messages.
607
+ Example: '{"success": ["file1.py", "file2.txt"], "errors": {}}'
535
608
  """
536
609
  success = []
537
610
  errors = {}
@@ -44,26 +44,40 @@ def create_rag_from_directory(
44
44
  openai_embedding_model: str | None = None,
45
45
  ):
46
46
  """
47
- Creates a powerful Retrieval-Augmented Generation (RAG) tool for querying a local knowledge base.
47
+ Creates a powerful RAG tool for querying a local knowledge base.
48
48
 
49
- This factory function generates a tool that can perform semantic searches over a directory of documents. It automatically indexes the documents into a vector database, keeping it updated as files change. The generated tool is ideal for answering questions based on a specific set of documents, such as project documentation, research papers, or internal wikis.
49
+ This factory function generates a tool that can perform semantic searches
50
+ over a directory of documents. It automatically indexes the documents into
51
+ a vector database, keeping it updated as files change. The generated tool
52
+ is ideal for answering questions based on a specific set of documents,
53
+ such as project documentation, research papers, or internal wikis.
50
54
 
51
55
  The created tool will:
52
56
  1. Monitor a specified directory for file changes.
53
- 2. Automatically update a vector database (ChromaDB) with the latest content.
54
- 3. Accept a user query, embed it, and perform a similarity search against the document vectors.
57
+ 2. Automatically update a vector database (ChromaDB) with the latest
58
+ content.
59
+ 3. Accept a user query, embed it, and perform a similarity search against
60
+ the document vectors.
55
61
  4. Return the most relevant document chunks that match the query.
56
62
 
57
63
  Args:
58
- tool_name (str): The name for the generated RAG tool (e.g., "search_project_docs").
59
- tool_description (str): A clear description of what the generated tool does and when to use it (e.g., "Searches the project's technical documentation to answer questions.").
60
- document_dir_path (str, optional): The path to the directory containing the documents to be indexed.
61
- vector_db_path (str, optional): The path to store the ChromaDB vector database.
62
- vector_db_collection (str, optional): The name of the collection within the vector database.
64
+ tool_name (str): The name for the generated RAG tool (e.g.,
65
+ "search_project_docs").
66
+ tool_description (str): A clear description of what the generated tool
67
+ does and when to use it (e.g., "Searches the project's technical
68
+ documentation to answer questions.").
69
+ document_dir_path (str, optional): The path to the directory
70
+ containing the documents to be indexed.
71
+ vector_db_path (str, optional): The path to store the ChromaDB vector
72
+ database.
73
+ vector_db_collection (str, optional): The name of the collection within
74
+ the vector database.
63
75
  chunk_size (int, optional): The size of text chunks for embedding.
64
76
  overlap (int, optional): The overlap between text chunks.
65
- max_result_count (int, optional): The maximum number of search results to return.
66
- file_reader (list[RAGFileReader], optional): Custom file readers for specific file types.
77
+ max_result_count (int, optional): The maximum number of search results
78
+ to return.
79
+ file_reader (list[RAGFileReader], optional): Custom file readers for
80
+ specific file types.
67
81
  openai_api_key (str, optional): OpenAI API key for embeddings.
68
82
  openai_base_url (str, optional): OpenAI base URL for embeddings.
69
83
  openai_embedding_model (str, optional): The embedding model to use.