zrb 1.15.26__tar.gz → 1.16.0__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 (421) hide show
  1. {zrb-1.15.26 → zrb-1.16.0}/PKG-INFO +1 -1
  2. {zrb-1.15.26 → zrb-1.16.0}/pyproject.toml +1 -1
  3. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/llm/chat_session.py +28 -28
  4. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/llm/llm_ask.py +2 -2
  5. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/llm/tool/api.py +2 -2
  6. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/llm/tool/cli.py +2 -1
  7. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/llm/tool/code.py +23 -27
  8. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/llm/tool/file.py +24 -25
  9. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/llm/tool/rag.py +4 -2
  10. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/llm/tool/sub_agent.py +5 -5
  11. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/llm/tool/web.py +15 -12
  12. zrb-1.16.0/src/zrb/config/default_prompt/file_extractor_system_prompt.md +112 -0
  13. zrb-1.16.0/src/zrb/config/default_prompt/interactive_system_prompt.md +34 -0
  14. zrb-1.16.0/src/zrb/config/default_prompt/repo_extractor_system_prompt.md +112 -0
  15. zrb-1.16.0/src/zrb/config/default_prompt/repo_summarizer_system_prompt.md +29 -0
  16. zrb-1.16.0/src/zrb/config/default_prompt/summarization_prompt.md +16 -0
  17. zrb-1.16.0/src/zrb/config/default_prompt/system_prompt.md +30 -0
  18. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/config/llm_context/config.py +122 -105
  19. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/config/llm_context/config_parser.py +0 -6
  20. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/group/any_group.py +8 -4
  21. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/group/group.py +7 -5
  22. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/input/text_input.py +0 -4
  23. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/conversation_history.py +2 -2
  24. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/history_summarization_tool.py +2 -2
  25. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/prompt.py +12 -0
  26. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/file.py +2 -0
  27. zrb-1.15.26/src/zrb/config/default_prompt/file_extractor_system_prompt.md +0 -112
  28. zrb-1.15.26/src/zrb/config/default_prompt/interactive_system_prompt.md +0 -32
  29. zrb-1.15.26/src/zrb/config/default_prompt/repo_extractor_system_prompt.md +0 -112
  30. zrb-1.15.26/src/zrb/config/default_prompt/repo_summarizer_system_prompt.md +0 -29
  31. zrb-1.15.26/src/zrb/config/default_prompt/summarization_prompt.md +0 -16
  32. zrb-1.15.26/src/zrb/config/default_prompt/system_prompt.md +0 -29
  33. {zrb-1.15.26 → zrb-1.16.0}/README.md +0 -0
  34. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/__init__.py +0 -0
  35. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/__main__.py +0 -0
  36. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/attr/__init__.py +0 -0
  37. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/attr/type.py +0 -0
  38. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/__init__.py +0 -0
  39. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/base64.py +0 -0
  40. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/git.py +0 -0
  41. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/git_subtree.py +0 -0
  42. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/group.py +0 -0
  43. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/http.py +0 -0
  44. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/jwt.py +0 -0
  45. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/llm/history.py +0 -0
  46. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/llm/input.py +0 -0
  47. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/llm/previous-session.js +0 -0
  48. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/llm/tool/__init__.py +0 -0
  49. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/md5.py +0 -0
  50. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/__init__.py +0 -0
  51. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  52. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
  53. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
  54. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  55. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  56. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  57. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  58. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
  59. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
  60. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  61. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
  62. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  63. {zrb-1.15.26 → zrb-1.16.0}/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
  64. {zrb-1.15.26 → zrb-1.16.0}/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
  65. {zrb-1.15.26 → zrb-1.16.0}/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
  66. {zrb-1.15.26 → zrb-1.16.0}/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
  67. {zrb-1.15.26 → zrb-1.16.0}/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
  68. {zrb-1.15.26 → zrb-1.16.0}/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
  69. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
  70. {zrb-1.15.26 → zrb-1.16.0}/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
  71. {zrb-1.15.26 → zrb-1.16.0}/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
  72. {zrb-1.15.26 → zrb-1.16.0}/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
  73. {zrb-1.15.26 → zrb-1.16.0}/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
  74. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  75. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  76. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
  77. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  78. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  79. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  80. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
  81. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  82. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
  83. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
  84. {zrb-1.15.26 → zrb-1.16.0}/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
  85. {zrb-1.15.26 → zrb-1.16.0}/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
  86. {zrb-1.15.26 → zrb-1.16.0}/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
  87. {zrb-1.15.26 → zrb-1.16.0}/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
  88. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
  89. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
  90. {zrb-1.15.26 → zrb-1.16.0}/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
  91. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
  92. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
  93. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
  94. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
  95. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  96. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
  97. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  98. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
  99. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  100. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  101. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  102. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  103. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  104. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  105. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  106. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  107. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  108. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  109. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  110. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  111. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  112. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  113. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  114. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  115. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  116. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  117. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  118. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  119. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  120. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  121. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  122. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  123. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  124. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  125. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
  126. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
  127. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  128. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  129. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  130. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  131. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
  132. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
  133. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
  134. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
  135. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
  136. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  137. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
  138. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
  139. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
  140. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
  141. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
  142. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  143. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
  144. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
  145. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
  146. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
  147. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
  148. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  149. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
  150. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  151. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  152. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  153. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  154. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  155. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  156. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
  157. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  158. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
  159. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  160. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
  161. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
  162. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
  163. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  164. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  165. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
  166. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
  167. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
  168. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
  169. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
  170. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
  171. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
  172. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
  173. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
  174. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
  175. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  176. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
  177. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
  178. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
  179. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
  180. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
  181. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
  182. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
  183. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
  184. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
  185. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
  186. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
  187. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
  188. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
  189. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
  190. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
  191. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
  192. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
  193. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
  194. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
  195. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
  196. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  197. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
  198. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  199. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  200. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  201. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  202. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  203. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
  204. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
  205. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
  206. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
  207. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
  208. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
  209. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
  210. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
  211. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
  212. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
  213. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  214. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/create/__init__.py +0 -0
  215. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  216. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  217. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/project/create/project_task.py +0 -0
  218. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/python.py +0 -0
  219. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/random.py +0 -0
  220. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  221. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  222. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/setup/common_input.py +0 -0
  223. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  224. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  225. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  226. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  227. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/setup/ubuntu.py +0 -0
  228. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
  229. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
  230. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
  231. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/shell/__init__.py +0 -0
  232. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  233. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  234. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  235. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  236. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/todo.py +0 -0
  237. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/builtin/uuid.py +0 -0
  238. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/callback/__init__.py +0 -0
  239. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/callback/any_callback.py +0 -0
  240. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/callback/callback.py +0 -0
  241. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/cmd/__init__.py +0 -0
  242. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/cmd/cmd_result.py +0 -0
  243. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/cmd/cmd_val.py +0 -0
  244. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/config/config.py +0 -0
  245. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/config/default_prompt/persona.md +0 -0
  246. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/config/llm_config.py +0 -0
  247. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/config/llm_rate_limitter.py +0 -0
  248. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/config/web_auth_config.py +0 -0
  249. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/content_transformer/__init__.py +0 -0
  250. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  251. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/content_transformer/content_transformer.py +0 -0
  252. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/context/__init__.py +0 -0
  253. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/context/any_context.py +0 -0
  254. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/context/any_shared_context.py +0 -0
  255. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/context/context.py +0 -0
  256. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/context/shared_context.py +0 -0
  257. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/dot_dict/__init__.py +0 -0
  258. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/dot_dict/dot_dict.py +0 -0
  259. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/env/__init__.py +0 -0
  260. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/env/any_env.py +0 -0
  261. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/env/env.py +0 -0
  262. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/env/env_file.py +0 -0
  263. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/env/env_map.py +0 -0
  264. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/group/__init__.py +0 -0
  265. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/input/__init__.py +0 -0
  266. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/input/any_input.py +0 -0
  267. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/input/base_input.py +0 -0
  268. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/input/bool_input.py +0 -0
  269. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/input/float_input.py +0 -0
  270. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/input/int_input.py +0 -0
  271. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/input/option_input.py +0 -0
  272. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/input/password_input.py +0 -0
  273. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/input/str_input.py +0 -0
  274. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/__init__.py +0 -0
  275. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/cli.py +0 -0
  276. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/common_util.py +0 -0
  277. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_app.py +0 -0
  278. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/__init__.py +0 -0
  279. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/docs_route.py +0 -0
  280. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  281. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  282. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/error_page/view.html +0 -0
  283. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  284. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  285. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/home_page/view.html +0 -0
  286. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/login_api_route.py +0 -0
  287. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  288. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/login_page/view.html +0 -0
  289. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  290. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  291. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  292. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  293. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  294. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  295. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  296. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  297. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
  298. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  299. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/global_template.html +0 -0
  300. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  301. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  302. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/common.js +0 -0
  303. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  304. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  305. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  306. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.amber.min.css +0 -0
  307. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.blue.min.css +0 -0
  308. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.cyan.min.css +0 -0
  309. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.fuchsia.min.css +0 -0
  310. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.green.min.css +0 -0
  311. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.grey.min.css +0 -0
  312. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.indigo.min.css +0 -0
  313. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.jade.min.css +0 -0
  314. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.lime.min.css +0 -0
  315. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.min.css +0 -0
  316. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.orange.min.css +0 -0
  317. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.pink.min.css +0 -0
  318. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.pumpkin.min.css +0 -0
  319. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.purple.min.css +0 -0
  320. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.red.min.css +0 -0
  321. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.sand.min.css +0 -0
  322. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.slate.min.css +0 -0
  323. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.violet.min.css +0 -0
  324. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.yellow.min.css +0 -0
  325. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/pico-css/pico.zinc.min.css +0 -0
  326. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  327. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
  328. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
  329. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  330. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/static/static_route.py +0 -0
  331. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  332. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
  333. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_schema/session.py +0 -0
  334. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_schema/token.py +0 -0
  335. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_schema/user.py +0 -0
  336. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_util/cookie.py +0 -0
  337. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_util/html.py +0 -0
  338. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_util/token.py +0 -0
  339. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/runner/web_util/user.py +0 -0
  340. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/session/__init__.py +0 -0
  341. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/session/any_session.py +0 -0
  342. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/session/session.py +0 -0
  343. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/session_state_log/__init__.py +0 -0
  344. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/session_state_log/session_state_log.py +0 -0
  345. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/session_state_logger/__init__.py +0 -0
  346. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
  347. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
  348. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  349. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/__init__.py +0 -0
  350. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/any_task.py +0 -0
  351. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/base/__init__.py +0 -0
  352. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/base/context.py +0 -0
  353. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/base/execution.py +0 -0
  354. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/base/lifecycle.py +0 -0
  355. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/base/monitoring.py +0 -0
  356. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/base/operators.py +0 -0
  357. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/base_task.py +0 -0
  358. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/base_trigger.py +0 -0
  359. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/cmd_task.py +0 -0
  360. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/http_check.py +0 -0
  361. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/__init__.py +0 -0
  362. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/agent.py +0 -0
  363. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/config.py +0 -0
  364. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/conversation_history_model.py +0 -0
  365. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/default_workflow/coding.md +0 -0
  366. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/default_workflow/copywriting.md +0 -0
  367. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/default_workflow/researching.md +0 -0
  368. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/error.py +0 -0
  369. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/history_summarization.py +0 -0
  370. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/print_node.py +0 -0
  371. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/tool_wrapper.py +0 -0
  372. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm/typing.py +0 -0
  373. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/llm_task.py +0 -0
  374. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/make_task.py +0 -0
  375. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/rsync_task.py +0 -0
  376. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/scaffolder.py +0 -0
  377. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/scheduler.py +0 -0
  378. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/task.py +0 -0
  379. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task/tcp_check.py +0 -0
  380. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task_status/__init__.py +0 -0
  381. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/task_status/task_status.py +0 -0
  382. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/__init__.py +0 -0
  383. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/attr.py +0 -0
  384. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/callable.py +0 -0
  385. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/cli/__init__.py +0 -0
  386. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/cli/markdown.py +0 -0
  387. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/cli/style.py +0 -0
  388. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/cli/subcommand.py +0 -0
  389. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/cli/text.py +0 -0
  390. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/cmd/__init__.py +0 -0
  391. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/cmd/command.py +0 -0
  392. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/cmd/remote.py +0 -0
  393. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/codemod/__init__.py +0 -0
  394. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/codemod/modification_mode.py +0 -0
  395. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/codemod/modify_class.py +0 -0
  396. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/codemod/modify_class_parent.py +0 -0
  397. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/codemod/modify_class_property.py +0 -0
  398. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/codemod/modify_dict.py +0 -0
  399. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/codemod/modify_function.py +0 -0
  400. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/codemod/modify_function_call.py +0 -0
  401. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/codemod/modify_method.py +0 -0
  402. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/codemod/modify_module.py +0 -0
  403. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/cron.py +0 -0
  404. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/git.py +0 -0
  405. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/git_diff_model.py +0 -0
  406. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/git_subtree.py +0 -0
  407. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/git_subtree_model.py +0 -0
  408. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/group.py +0 -0
  409. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/init_path.py +0 -0
  410. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/llm/prompt.py +0 -0
  411. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/load.py +0 -0
  412. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/run.py +0 -0
  413. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/string/__init__.py +0 -0
  414. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/string/conversion.py +0 -0
  415. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/string/format.py +0 -0
  416. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/string/name.py +0 -0
  417. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/todo.py +0 -0
  418. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/todo_model.py +0 -0
  419. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/util/truncate.py +0 -0
  420. {zrb-1.15.26 → zrb-1.16.0}/src/zrb/xcom/__init__.py +0 -0
  421. {zrb-1.15.26 → zrb-1.16.0}/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.26
3
+ Version: 1.16.0
4
4
  Summary: Your Automation Powerhouse
5
5
  License: AGPL-3.0-or-later
6
6
  Keywords: Automation,Task Runner,Code Generator,Monorepo,Low Code
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.15.26"
3
+ version = "1.16.0"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -21,17 +21,19 @@ async def read_user_prompt(ctx: AnyContext) -> str:
21
21
  Orchestrates the session by calling helper functions.
22
22
  """
23
23
  _show_info(ctx)
24
- final_result = await _handle_initial_message(ctx)
25
- if ctx.is_web_mode:
26
- return final_result
27
- is_tty = ctx.is_tty
24
+ is_tty: bool = ctx.is_tty
28
25
  reader = await _setup_input_reader(is_tty)
29
26
  multiline_mode = False
30
- current_modes = ctx.input.modes
31
- current_yolo_mode = ctx.input.yolo
32
- user_inputs = []
27
+ is_first_time = True
28
+ current_modes: str = ctx.input.modes
29
+ current_yolo_mode: bool | str = ctx.input.yolo
30
+ user_inputs: list[str] = []
31
+ final_result: str = ""
33
32
  while True:
34
33
  await asyncio.sleep(0.01)
34
+ previous_session_name = ctx.input.previous_session if is_first_time else None
35
+ if is_first_time:
36
+ is_first_time = False
35
37
  # Get user input based on mode
36
38
  if not multiline_mode:
37
39
  ctx.print("💬 >>", plain=True)
@@ -43,7 +45,11 @@ async def read_user_prompt(ctx: AnyContext) -> str:
43
45
  user_prompt = "\n".join(user_inputs)
44
46
  user_inputs = []
45
47
  result = await _trigger_ask_and_wait_for_result(
46
- ctx, user_prompt, current_modes, current_yolo_mode
48
+ ctx=ctx,
49
+ user_prompt=user_prompt,
50
+ modes=current_modes,
51
+ yolo_mode=current_yolo_mode,
52
+ previous_session_name=previous_session_name,
47
53
  )
48
54
  if result is not None:
49
55
  final_result = result
@@ -56,10 +62,16 @@ async def read_user_prompt(ctx: AnyContext) -> str:
56
62
  user_prompt = "\n".join(user_inputs)
57
63
  user_inputs = []
58
64
  result = await _trigger_ask_and_wait_for_result(
59
- ctx, user_prompt, current_modes, current_yolo_mode
65
+ ctx=ctx,
66
+ user_prompt=user_prompt,
67
+ modes=current_modes,
68
+ yolo_mode=current_yolo_mode,
69
+ previous_session_name=previous_session_name,
60
70
  )
61
71
  if result is not None:
62
72
  final_result = result
73
+ if ctx.is_web_mode or not is_tty:
74
+ return final_result
63
75
  elif user_input.strip().lower().startswith("/mode"):
64
76
  mode_parts = user_input.split(" ", maxsplit=2)
65
77
  if len(mode_parts) > 1:
@@ -84,10 +96,16 @@ async def read_user_prompt(ctx: AnyContext) -> str:
84
96
  user_prompt = "\n".join(user_inputs)
85
97
  user_inputs = []
86
98
  result = await _trigger_ask_and_wait_for_result(
87
- ctx, user_prompt, current_modes, current_yolo_mode
99
+ ctx=ctx,
100
+ user_prompt=user_prompt,
101
+ modes=current_modes,
102
+ yolo_mode=current_yolo_mode,
103
+ previous_session_name=previous_session_name,
88
104
  )
89
105
  if result is not None:
90
106
  final_result = result
107
+ if ctx.is_web_mode or not is_tty:
108
+ return final_result
91
109
  return final_result
92
110
 
93
111
 
@@ -127,24 +145,6 @@ def _show_subcommand(command: str, description: str) -> str:
127
145
  return f" {styled_command} {styled_description}"
128
146
 
129
147
 
130
- async def _handle_initial_message(ctx: AnyContext) -> str:
131
- """Processes the initial message from the command line."""
132
- if not ctx.input.message or ctx.input.message.strip() == "":
133
- return ""
134
- ctx.print("💬 >>", plain=True)
135
- ctx.print(ctx.input.message, plain=True)
136
- ctx.print("", plain=True)
137
- result = await _trigger_ask_and_wait_for_result(
138
- ctx,
139
- user_prompt=ctx.input.message,
140
- modes=ctx.input.modes,
141
- yolo_mode=ctx.input.yolo,
142
- previous_session_name=ctx.input.previous_session,
143
- start_new=ctx.input.start_new,
144
- )
145
- return result if result is not None else ""
146
-
147
-
148
148
  async def _setup_input_reader(is_interactive: bool):
149
149
  """Sets up and returns the appropriate asynchronous input reader."""
150
150
  if is_interactive:
@@ -162,7 +162,7 @@ _llm_ask_inputs = [
162
162
  ),
163
163
  ]
164
164
 
165
- llm_ask = llm_group.add_task(
165
+ llm_ask: LLMTask = llm_group.add_task(
166
166
  LLMTask(
167
167
  name="llm-ask",
168
168
  input=_llm_ask_inputs,
@@ -193,7 +193,7 @@ llm_ask = llm_group.add_task(
193
193
  llm_group.add_task(
194
194
  BaseTrigger(
195
195
  name="llm-chat",
196
- input=_llm_ask_inputs,
196
+ input=[input for input in _llm_ask_inputs if input.name != "message"],
197
197
  description="💬 Chat with LLM",
198
198
  queue_name="ask_trigger",
199
199
  action=read_user_prompt,
@@ -1,4 +1,4 @@
1
- from typing import Literal
1
+ from typing import Any, Literal
2
2
 
3
3
 
4
4
  def get_current_location() -> dict[str, float]:
@@ -31,7 +31,7 @@ def get_current_weather(
31
31
  latitude: float,
32
32
  longitude: float,
33
33
  temperature_unit: Literal["celsius", "fahrenheit"],
34
- ) -> str:
34
+ ) -> dict[str, Any]:
35
35
  """
36
36
  Retrieves the current weather conditions for a given geographical location.
37
37
 
@@ -1,7 +1,8 @@
1
1
  import subprocess
2
+ from typing import Any
2
3
 
3
4
 
4
- def run_shell_command(command: str) -> str:
5
+ def run_shell_command(command: str) -> dict[str, Any]:
5
6
  """
6
7
  Executes a shell command on the user's local machine and returns the output.
7
8
 
@@ -57,17 +57,19 @@ async def analyze_repo(
57
57
  summarization_token_threshold: int | None = None,
58
58
  ) -> str:
59
59
  """
60
- Performs a deep, goal-oriented analysis of a code repository or directory.
60
+ Performs a high-level, goal-oriented analysis of a code repository or directory.
61
61
 
62
- This powerful tool recursively reads all relevant files in a directory,
63
- extracts key information, and then summarizes that information in relation
64
- to a specific goal. It uses intelligent sub-agents for extraction and
65
- summarization, making it ideal for complex tasks that require a holistic
66
- understanding of a codebase.
62
+ This tool recursively reads all relevant files in a directory, extracts
63
+ key information, and then summarizes that information in relation to a specific
64
+ goal. It uses intelligent sub-agents for extraction and summarization, making it
65
+ ideal for complex tasks that require a holistic understanding of a codebase.
67
66
 
68
67
  To ensure a focused and effective analysis, it is crucial to provide a
69
68
  clear and specific goal. Vague goals will result in a vague analysis and
70
- may cause the tool to run for a long time.
69
+ may cause low quality result.
70
+
71
+ Make sure to skim the repository or directory first (e.g., by list the file
72
+ names or read the README/docs file) so that you can put effective parameters.
71
73
 
72
74
  Use this tool for:
73
75
  - Understanding a large or unfamiliar codebase.
@@ -75,8 +77,6 @@ async def analyze_repo(
75
77
  - Performing a preliminary code review.
76
78
  - Creating documentation or diagrams (e.g., "Generate a Mermaid C4 diagram
77
79
  for this service").
78
- - Answering broad questions like "How does the authentication in this
79
- project work?".
80
80
 
81
81
  Args:
82
82
  path (str): The path to the directory or repository to analyze.
@@ -179,7 +179,7 @@ async def _extract_info(
179
179
  file_str = json.dumps(file_obj)
180
180
  if current_token_count + llm_rate_limitter.count_token(file_str) > token_limit:
181
181
  if content_buffer:
182
- prompt = _create_extract_info_prompt(goal, content_buffer)
182
+ prompt = json.dumps(_create_extract_info_prompt(goal, content_buffer))
183
183
  extracted_info = await extract(
184
184
  ctx, llm_rate_limitter.clip_prompt(prompt, token_limit)
185
185
  )
@@ -192,7 +192,7 @@ async def _extract_info(
192
192
 
193
193
  # Process any remaining content in the buffer
194
194
  if content_buffer:
195
- prompt = _create_extract_info_prompt(goal, content_buffer)
195
+ prompt = json.dumps(_create_extract_info_prompt(goal, content_buffer))
196
196
  extracted_info = await extract(
197
197
  ctx, llm_rate_limitter.clip_prompt(prompt, token_limit)
198
198
  )
@@ -200,13 +200,11 @@ async def _extract_info(
200
200
  return extracted_infos
201
201
 
202
202
 
203
- def _create_extract_info_prompt(goal: str, content_buffer: list[dict]) -> str:
204
- return json.dumps(
205
- {
206
- "main_assistant_goal": goal,
207
- "files": content_buffer,
208
- }
209
- )
203
+ def _create_extract_info_prompt(goal: str, content_buffer: list[dict]) -> dict:
204
+ return {
205
+ "main_assistant_goal": goal,
206
+ "files": content_buffer,
207
+ }
210
208
 
211
209
 
212
210
  async def _summarize_info(
@@ -226,7 +224,7 @@ async def _summarize_info(
226
224
  new_prompt = content_buffer + extracted_info
227
225
  if llm_rate_limitter.count_token(new_prompt) > token_limit:
228
226
  if content_buffer:
229
- prompt = _create_summarize_info_prompt(goal, content_buffer)
227
+ prompt = json.dumps(_create_summarize_info_prompt(goal, content_buffer))
230
228
  summarized_info = await summarize(
231
229
  ctx, llm_rate_limitter.clip_prompt(prompt, token_limit)
232
230
  )
@@ -237,7 +235,7 @@ async def _summarize_info(
237
235
 
238
236
  # Process any remaining content in the buffer
239
237
  if content_buffer:
240
- prompt = _create_summarize_info_prompt(goal, content_buffer)
238
+ prompt = json.dumps(_create_summarize_info_prompt(goal, content_buffer))
241
239
  summarized_info = await summarize(
242
240
  ctx, llm_rate_limitter.clip_prompt(prompt, token_limit)
243
241
  )
@@ -245,10 +243,8 @@ async def _summarize_info(
245
243
  return summarized_infos
246
244
 
247
245
 
248
- def _create_summarize_info_prompt(goal: str, content_buffer: str) -> str:
249
- return json.dumps(
250
- {
251
- "main_assistant_goal": goal,
252
- "extracted_info": content_buffer,
253
- }
254
- )
246
+ def _create_summarize_info_prompt(goal: str, content_buffer: str) -> dict:
247
+ return {
248
+ "main_assistant_goal": goal,
249
+ "extracted_info": content_buffer,
250
+ }
@@ -98,12 +98,13 @@ def list_files(
98
98
  recursive: bool = True,
99
99
  include_hidden: bool = False,
100
100
  excluded_patterns: Optional[list[str]] = None,
101
- ) -> str:
101
+ ) -> dict[str, list[str]]:
102
102
  """
103
103
  Lists the files and directories within a specified path.
104
104
 
105
105
  This is a fundamental tool for exploring the file system. Use it to
106
106
  discover the structure of a directory, find specific files, or get a
107
+
107
108
  general overview of the project layout before performing other operations.
108
109
 
109
110
  Args:
@@ -120,9 +121,9 @@ def list_files(
120
121
  standard list of common exclusion patterns.
121
122
 
122
123
  Returns:
123
- str: A JSON string containing a list of file and directory paths
124
+ dict[str, list[str]]: A dictionary containing a list of file and directory paths
124
125
  relative to the input path.
125
- Example: '{"files": ["src/main.py", "README.md"]}'
126
+ Example: {"files": ["src/main.py", "README.md"]}
126
127
  Raises:
127
128
  FileNotFoundError: If the specified path does not exist.
128
129
  """
@@ -173,14 +174,14 @@ def list_files(
173
174
  # Return paths relative to the original path requested
174
175
  try:
175
176
  rel_files = [os.path.relpath(f, abs_path) for f in all_files]
176
- return json.dumps({"files": sorted(rel_files)})
177
+ return {"files": sorted(rel_files)}
177
178
  except (
178
179
  ValueError
179
180
  ) as e: # Handle case where path is '.' and abs_path is CWD root
180
181
  if "path is on mount '" in str(e) and "' which is not on mount '" in str(e):
181
182
  # If paths are on different mounts, just use absolute paths
182
183
  rel_files = all_files
183
- return json.dumps({"files": sorted(rel_files)})
184
+ return {"files": sorted(rel_files)}
184
185
  raise
185
186
  except (OSError, IOError) as e:
186
187
  raise OSError(f"Error listing files in {path}: {e}")
@@ -221,7 +222,7 @@ def read_from_file(
221
222
  path: str,
222
223
  start_line: Optional[int] = None,
223
224
  end_line: Optional[int] = None,
224
- ) -> str:
225
+ ) -> dict[str, Any]:
225
226
  """
226
227
  Reads the content of a file, optionally from a specific start line to an
227
228
  end line.
@@ -244,7 +245,7 @@ def read_from_file(
244
245
  (inclusive). If omitted, reads to the end of the file.
245
246
 
246
247
  Returns:
247
- str: A JSON string containing the file path, the requested content
248
+ dict[str, Any]: A dictionary containing the file path, the requested content
248
249
  with line numbers, the start and end lines, and the total number
249
250
  of lines in the file.
250
251
  Example:
@@ -282,15 +283,13 @@ def read_from_file(
282
283
  # Select the lines for the result
283
284
  selected_lines = lines[start_idx:end_idx]
284
285
  content_result = "\n".join(selected_lines)
285
- return json.dumps(
286
- {
287
- "path": path,
288
- "content": content_result,
289
- "start_line": start_idx + 1, # Convert back to 1-based for output
290
- "end_line": end_idx, # end_idx is already exclusive upper bound
291
- "total_lines": total_lines,
292
- }
293
- )
286
+ return {
287
+ "path": path,
288
+ "content": content_result,
289
+ "start_line": start_idx + 1, # Convert back to 1-based for output
290
+ "end_line": end_idx, # end_idx is already exclusive upper bound
291
+ "total_lines": total_lines,
292
+ }
294
293
  except (OSError, IOError) as e:
295
294
  raise OSError(f"Error reading file {path}: {e}")
296
295
  except Exception as e:
@@ -300,7 +299,7 @@ def read_from_file(
300
299
  def write_to_file(
301
300
  path: str,
302
301
  content: str,
303
- ) -> str:
302
+ ) -> dict[str, Any]:
304
303
  """
305
304
  Writes content to a file, completely overwriting it if it exists or
306
305
  creating it if it doesn't.
@@ -317,7 +316,7 @@ def write_to_file(
317
316
 
318
317
  Returns:
319
318
  dict[str, Any]: A dictionary indicating success or failure.
320
- Example: '{"success": true, "path": "new_file.txt"}'
319
+ Example: {"success": true, "path": "new_file.txt"}
321
320
  """
322
321
  try:
323
322
  abs_path = os.path.abspath(os.path.expanduser(path))
@@ -338,7 +337,7 @@ def search_files(
338
337
  regex: str,
339
338
  file_pattern: Optional[str] = None,
340
339
  include_hidden: bool = True,
341
- ) -> str:
340
+ ) -> dict[str, Any]:
342
341
  """
343
342
  Searches for a regular expression (regex) pattern within files in a
344
343
  specified directory.
@@ -452,7 +451,7 @@ def replace_in_file(
452
451
  path: str,
453
452
  old_string: str,
454
453
  new_string: str,
455
- ) -> str:
454
+ ) -> dict[str, Any]:
456
455
  """
457
456
  Replaces the first occurrence of a string in a file.
458
457
 
@@ -496,7 +495,7 @@ def replace_in_file(
496
495
 
497
496
  async def analyze_file(
498
497
  ctx: AnyContext, path: str, query: str, token_limit: int | None = None
499
- ) -> str:
498
+ ) -> dict[str, Any]:
500
499
  """
501
500
  Performs a deep, goal-oriented analysis of a single file using a sub-agent.
502
501
 
@@ -529,7 +528,7 @@ async def analyze_file(
529
528
  content to be passed to the analysis sub-agent.
530
529
 
531
530
  Returns:
532
- str: A detailed, markdown-formatted analysis of the file, tailored to
531
+ dict[str, Any]: A detailed, markdown-formatted analysis of the file, tailored to
533
532
  the specified query.
534
533
  Raises:
535
534
  FileNotFoundError: If the specified file does not exist.
@@ -553,7 +552,7 @@ async def analyze_file(
553
552
  return await _analyze_file(ctx, clipped_payload)
554
553
 
555
554
 
556
- def read_many_files(paths: list[str]) -> str:
555
+ def read_many_files(paths: list[str]) -> dict[str, str]:
557
556
  """
558
557
  Reads and returns the full content of multiple files at once.
559
558
 
@@ -586,7 +585,7 @@ def read_many_files(paths: list[str]) -> str:
586
585
  return results
587
586
 
588
587
 
589
- def write_many_files(files: list[FileToWrite]) -> str:
588
+ def write_many_files(files: list[FileToWrite]) -> dict[str, Any]:
590
589
  """
591
590
  Writes content to multiple files in a single, atomic operation.
592
591
 
@@ -604,7 +603,7 @@ def write_many_files(files: list[FileToWrite]) -> str:
604
603
  containing a 'path' and the complete 'content'.
605
604
 
606
605
  Returns:
607
- str: A dictionary summarizing the operation, listing successfully
606
+ dict[str, Any]: A dictionary summarizing the operation, listing successfully
608
607
  written files and any files that failed, along with corresponding
609
608
  error messages.
610
609
  Example: {"success": ["file1.py", "file2.txt"], "errors": {}}
@@ -5,6 +5,7 @@ import os
5
5
  import sys
6
6
  from collections.abc import Callable
7
7
  from textwrap import dedent
8
+ from typing import Any
8
9
 
9
10
  import ulid
10
11
 
@@ -86,7 +87,7 @@ def create_rag_from_directory(
86
87
  Callable: An asynchronous function that serves as the RAG tool.
87
88
  """
88
89
 
89
- async def retrieve(query: str) -> str:
90
+ async def retrieve(query: str) -> dict[str, Any]:
90
91
  # Docstring will be set dynamically below
91
92
  from chromadb import PersistentClient
92
93
  from chromadb.config import Settings
@@ -210,7 +211,8 @@ def create_rag_from_directory(
210
211
  Args:
211
212
  query (str): The user query to search for in documents.
212
213
  Returns:
213
- str: dictionary with search results: {{"ids": [...], "documents": [...], ...}}
214
+ dict[str, Any]: dictionary with search results:
215
+ {{"ids": [...], "documents": [...], ...}}
214
216
  """
215
217
  ).strip()
216
218
  return retrieve
@@ -27,7 +27,7 @@ def create_sub_agent_tool(
27
27
  toolsets: list["AbstractToolset[Agent]"] = [],
28
28
  yolo_mode: bool | list[str] | None = None,
29
29
  log_indent_level: int = 2,
30
- ) -> Callable[[AnyContext, str], Coroutine[Any, Any, str]]:
30
+ ) -> Callable[[AnyContext, str], Coroutine[Any, Any, dict[str, Any]]]:
31
31
  """
32
32
  Creates a "tool that is another AI agent," capable of handling complex,
33
33
  multi-step sub-tasks.
@@ -61,7 +61,7 @@ def create_sub_agent_tool(
61
61
  its final result.
62
62
  """
63
63
 
64
- async def run_sub_agent(ctx: AnyContext, query: str) -> str:
64
+ async def run_sub_agent(ctx: AnyContext, query: str) -> dict[str, Any]:
65
65
  """
66
66
  Runs the sub-agent with the given query.
67
67
  """
@@ -116,8 +116,8 @@ def create_sub_agent_tool(
116
116
 
117
117
  # Return the sub-agent's final message content
118
118
  if sub_agent_run and sub_agent_run.result:
119
- # Return the final message content as a string
120
- return json.dumps({"result": sub_agent_run.result.output})
119
+ # Return the final message content
120
+ return {"result": sub_agent_run.result.output}
121
121
  ctx.log_warning("Sub-agent run did not produce a result.")
122
122
  raise ValueError(f"{tool_name} not returning any result")
123
123
 
@@ -131,7 +131,7 @@ def create_sub_agent_tool(
131
131
  query (str): The query or task for the sub-agent.
132
132
 
133
133
  Returns:
134
- str: The final response or result from the sub-agent.
134
+ dict[str, Any]: The final response or result from the sub-agent.
135
135
  """
136
136
  ).strip()
137
137
 
@@ -1,11 +1,11 @@
1
- import json
2
1
  from collections.abc import Callable
2
+ from typing import Any
3
3
  from urllib.parse import urljoin
4
4
 
5
5
  _DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" # noqa
6
6
 
7
7
 
8
- async def open_web_page(url: str) -> str:
8
+ async def open_web_page(url: str) -> dict[str, Any]:
9
9
  """
10
10
  Fetches, parses, and converts the content of a web page to Markdown.
11
11
 
@@ -20,15 +20,17 @@ async def open_web_page(url: str) -> str:
20
20
  "https://example.com/article").
21
21
 
22
22
  Returns:
23
- str: A JSON string containing the page's content in Markdown format
23
+ dict[str, Any]: A dictionary containing the page's content in Markdown format
24
24
  and a list of all absolute links found on the page.
25
25
  """
26
26
  html_content, links = await _fetch_page_content(url)
27
27
  markdown_content = _convert_html_to_markdown(html_content)
28
- return json.dumps({"content": markdown_content, "links_on_page": links})
28
+ return {"content": markdown_content, "links_on_page": links}
29
29
 
30
30
 
31
- def create_search_internet_tool(serp_api_key: str) -> Callable[[str, int], str]:
31
+ def create_search_internet_tool(
32
+ serp_api_key: str,
33
+ ) -> Callable[[str, int], dict[str, Any]]:
32
34
  """
33
35
  Creates a tool that searches the internet using the SerpAPI Google Search
34
36
  API.
@@ -45,7 +47,7 @@ def create_search_internet_tool(serp_api_key: str) -> Callable[[str, int], str]:
45
47
  search results.
46
48
  """
47
49
 
48
- def search_internet(query: str, num_results: int = 10) -> str:
50
+ def search_internet(query: str, num_results: int = 10) -> dict[str, Any]:
49
51
  """
50
52
  Performs an internet search using Google and returns a summary of the results.
51
53
 
@@ -57,7 +59,7 @@ def create_search_internet_tool(serp_api_key: str) -> Callable[[str, int], str]:
57
59
  num_results (int, optional): The desired number of search results. Defaults to 10.
58
60
 
59
61
  Returns:
60
- str: A formatted string summarizing the search results,
62
+ dict[str, Any]: A formatted string summarizing the search results,
61
63
  including titles, links, and snippets.
62
64
  """
63
65
  import requests
@@ -82,7 +84,7 @@ def create_search_internet_tool(serp_api_key: str) -> Callable[[str, int], str]:
82
84
  return search_internet
83
85
 
84
86
 
85
- def search_wikipedia(query: str) -> str:
87
+ def search_wikipedia(query: str) -> dict[str, Any]:
86
88
  """
87
89
  Searches for articles on Wikipedia.
88
90
 
@@ -94,7 +96,7 @@ def search_wikipedia(query: str) -> str:
94
96
  query (str): The search term or question.
95
97
 
96
98
  Returns:
97
- str: The raw JSON response from the Wikipedia API, containing a list of
99
+ dict[str, Any]: The raw JSON response from the Wikipedia API, containing a list of
98
100
  search results.
99
101
  """
100
102
  import requests
@@ -108,7 +110,7 @@ def search_wikipedia(query: str) -> str:
108
110
  return response.json()
109
111
 
110
112
 
111
- def search_arxiv(query: str, num_results: int = 10) -> str:
113
+ def search_arxiv(query: str, num_results: int = 10) -> dict[str, Any]:
112
114
  """
113
115
  Searches for academic papers and preprints on ArXiv.
114
116
 
@@ -123,10 +125,11 @@ def search_arxiv(query: str, num_results: int = 10) -> str:
123
125
  Defaults to 10.
124
126
 
125
127
  Returns:
126
- str: The raw XML response from the ArXiv API, containing a list of
128
+ dict[str, Any]: The raw XML response from the ArXiv API, containing a list of
127
129
  matching papers.
128
130
  """
129
131
  import requests
132
+ import xmltodict
130
133
 
131
134
  params = {"search_query": f"all:{query}", "start": 0, "max_results": num_results}
132
135
  response = requests.get(
@@ -134,7 +137,7 @@ def search_arxiv(query: str, num_results: int = 10) -> str:
134
137
  headers={"User-Agent": _DEFAULT_USER_AGENT},
135
138
  params=params,
136
139
  )
137
- return response.content
140
+ return xmltodict.parse(response.content)
138
141
 
139
142
 
140
143
  async def _fetch_page_content(url: str) -> tuple[str, list[str]]: