zrb 1.0.0b3__tar.gz → 1.0.0b4__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 (309) hide show
  1. {zrb-1.0.0b3 → zrb-1.0.0b4}/PKG-INFO +1 -1
  2. {zrb-1.0.0b3 → zrb-1.0.0b4}/pyproject.toml +1 -1
  3. zrb-1.0.0b4/src/zrb/builtin/llm/llm_chat.py +127 -0
  4. zrb-1.0.0b4/src/zrb/builtin/llm/previous-session.js +13 -0
  5. zrb-1.0.0b4/src/zrb/builtin/llm/tool/api.py +29 -0
  6. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/todo.py +1 -0
  7. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/config.py +17 -11
  8. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/input/any_input.py +5 -0
  9. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/input/base_input.py +6 -0
  10. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/input/bool_input.py +2 -0
  11. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/input/float_input.py +2 -0
  12. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/input/int_input.py +2 -0
  13. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/input/option_input.py +2 -0
  14. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/input/password_input.py +2 -0
  15. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/input/text_input.py +2 -0
  16. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/common_util.py +1 -1
  17. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -1
  18. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/static/resources/session/event.js +4 -1
  19. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task/llm_task.py +35 -16
  20. zrb-1.0.0b3/src/zrb/builtin/llm/llm_chat.py +0 -49
  21. {zrb-1.0.0b3 → zrb-1.0.0b4}/README.md +0 -0
  22. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/__init__.py +0 -0
  23. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/__main__.py +0 -0
  24. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/attr/__init__.py +0 -0
  25. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/attr/type.py +0 -0
  26. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/__init__.py +0 -0
  27. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/base64.py +0 -0
  28. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/git.py +0 -0
  29. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/git_subtree.py +0 -0
  30. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/group.py +0 -0
  31. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/llm/tool/cli.py +0 -0
  32. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/llm/tool/rag.py +0 -0
  33. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/llm/tool/web.py +0 -0
  34. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/md5.py +0 -0
  35. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/__init__.py +0 -0
  36. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  37. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
  38. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  39. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  40. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  41. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  42. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
  43. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  44. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
  45. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  46. {zrb-1.0.0b3 → zrb-1.0.0b4}/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
  47. {zrb-1.0.0b3 → zrb-1.0.0b4}/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
  48. {zrb-1.0.0b3 → zrb-1.0.0b4}/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
  49. {zrb-1.0.0b3 → zrb-1.0.0b4}/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
  50. {zrb-1.0.0b3 → zrb-1.0.0b4}/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
  51. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
  52. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  53. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  54. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  55. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  56. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  57. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
  58. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  59. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
  60. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
  61. {zrb-1.0.0b3 → zrb-1.0.0b4}/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
  62. {zrb-1.0.0b3 → zrb-1.0.0b4}/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
  63. {zrb-1.0.0b3 → zrb-1.0.0b4}/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
  64. {zrb-1.0.0b3 → zrb-1.0.0b4}/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
  65. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
  66. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
  67. {zrb-1.0.0b3 → zrb-1.0.0b4}/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
  68. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
  69. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
  70. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
  71. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
  72. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  73. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  74. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  75. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  76. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  77. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  78. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  79. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  80. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  81. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  82. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  83. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  84. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  85. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  86. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  87. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  88. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  89. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  90. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  91. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/migrate.py +0 -0
  92. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  93. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  94. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  95. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  96. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  97. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  98. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  99. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  100. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  101. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
  102. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  103. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  104. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  105. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  106. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
  107. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
  108. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
  109. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
  110. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
  111. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  112. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
  113. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
  114. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
  115. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
  116. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
  117. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  118. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
  119. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
  120. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
  121. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
  122. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
  123. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  124. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  125. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  126. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  127. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  128. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  129. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  130. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  131. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  132. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  133. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  134. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
  135. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
  136. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  137. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
  138. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
  139. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
  140. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
  141. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
  142. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
  143. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
  144. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
  145. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
  146. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
  147. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
  148. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
  149. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
  150. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
  151. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
  152. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
  153. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
  154. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
  155. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
  156. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
  157. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  158. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
  159. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  160. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  161. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  162. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/session.py +0 -0
  163. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  164. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  165. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  166. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/create/__init__.py +0 -0
  167. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  168. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  169. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/project/create/project_task.py +0 -0
  170. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/python.py +0 -0
  171. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/random.py +0 -0
  172. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  173. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  174. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/setup/common_input.py +0 -0
  175. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  176. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  177. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  178. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  179. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/setup/ubuntu.py +0 -0
  180. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/shell/__init__.py +0 -0
  181. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  182. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  183. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  184. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  185. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/callback/__init__.py +0 -0
  186. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/callback/any_callback.py +0 -0
  187. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/callback/callback.py +0 -0
  188. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/cmd/__init__.py +0 -0
  189. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/cmd/cmd_result.py +0 -0
  190. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/cmd/cmd_val.py +0 -0
  191. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/content_transformer/__init__.py +0 -0
  192. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  193. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/content_transformer/content_transformer.py +0 -0
  194. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/context/__init__.py +0 -0
  195. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/context/any_context.py +0 -0
  196. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/context/any_shared_context.py +0 -0
  197. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/context/context.py +0 -0
  198. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/context/shared_context.py +0 -0
  199. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/dot_dict/__init__.py +0 -0
  200. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/dot_dict/dot_dict.py +0 -0
  201. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/env/__init__.py +0 -0
  202. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/env/any_env.py +0 -0
  203. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/env/env.py +0 -0
  204. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/env/env_file.py +0 -0
  205. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/env/env_map.py +0 -0
  206. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/group/__init__.py +0 -0
  207. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/group/any_group.py +0 -0
  208. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/group/group.py +0 -0
  209. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/input/__init__.py +0 -0
  210. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/input/str_input.py +0 -0
  211. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/__init__.py +0 -0
  212. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/cli.py +0 -0
  213. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_app.py +0 -0
  214. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_config/config.py +0 -0
  215. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_config/config_factory.py +0 -0
  216. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/__init__.py +0 -0
  217. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/docs_route.py +0 -0
  218. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  219. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  220. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/error_page/view.html +0 -0
  221. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  222. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  223. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/home_page/view.html +0 -0
  224. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/login_api_route.py +0 -0
  225. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  226. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/login_page/view.html +0 -0
  227. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  228. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  229. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  230. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  231. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  232. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  233. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  234. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  235. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
  236. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  237. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  238. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  239. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  240. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  241. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  242. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/static/resources/pico.min.css +0 -0
  243. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  244. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  245. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/static/static_route.py +0 -0
  246. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  247. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
  248. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_schema/session.py +0 -0
  249. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_schema/token.py +0 -0
  250. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_schema/user.py +0 -0
  251. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_util/cookie.py +0 -0
  252. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_util/html.py +0 -0
  253. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_util/token.py +0 -0
  254. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/runner/web_util/user.py +0 -0
  255. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/session/__init__.py +0 -0
  256. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/session/any_session.py +0 -0
  257. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/session/session.py +0 -0
  258. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/session_state_log/__init__.py +0 -0
  259. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/session_state_log/session_state_log.py +0 -0
  260. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/session_state_logger/__init__.py +0 -0
  261. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
  262. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
  263. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  264. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task/__init__.py +0 -0
  265. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task/any_task.py +0 -0
  266. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task/base_task.py +0 -0
  267. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task/base_trigger.py +0 -0
  268. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task/cmd_task.py +0 -0
  269. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task/http_check.py +0 -0
  270. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task/make_task.py +0 -0
  271. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task/rsync_task.py +0 -0
  272. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task/scaffolder.py +0 -0
  273. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task/scheduler.py +0 -0
  274. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task/task.py +0 -0
  275. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task/tcp_check.py +0 -0
  276. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task_status/__init__.py +0 -0
  277. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/task_status/task_status.py +0 -0
  278. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/__init__.py +0 -0
  279. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/attr.py +0 -0
  280. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/cli/__init__.py +0 -0
  281. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/cli/style.py +0 -0
  282. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/cli/subcommand.py +0 -0
  283. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/cmd/__init__.py +0 -0
  284. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/cmd/command.py +0 -0
  285. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/cmd/remote.py +0 -0
  286. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/codemod/__init__.py +0 -0
  287. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/codemod/append_code_to_class.py +0 -0
  288. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/codemod/append_code_to_function.py +0 -0
  289. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/codemod/append_code_to_method.py +0 -0
  290. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/codemod/append_key_to_dict.py +0 -0
  291. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/codemod/append_param_to_function_call.py +0 -0
  292. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/codemod/prepend_code_to_module.py +0 -0
  293. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/codemod/prepend_parent_to_class.py +0 -0
  294. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/codemod/prepend_property_to_class.py +0 -0
  295. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/cron.py +0 -0
  296. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/file.py +0 -0
  297. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/git.py +0 -0
  298. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/git_subtree.py +0 -0
  299. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/group.py +0 -0
  300. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/llm/tool.py +0 -0
  301. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/load.py +0 -0
  302. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/run.py +0 -0
  303. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/string/__init__.py +0 -0
  304. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/string/conversion.py +0 -0
  305. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/string/format.py +0 -0
  306. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/string/name.py +0 -0
  307. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/util/todo.py +0 -0
  308. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/xcom/__init__.py +0 -0
  309. {zrb-1.0.0b3 → zrb-1.0.0b4}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 1.0.0b3
3
+ Version: 1.0.0b4
4
4
  Summary: Your Automation Powerhouse
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.0.0b3"
3
+ version = "1.0.0b4"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -0,0 +1,127 @@
1
+ import json
2
+ import os
3
+ from typing import Any
4
+
5
+ from zrb.builtin.group import llm_group
6
+ from zrb.builtin.llm.tool.api import get_current_location, get_current_weather
7
+ from zrb.builtin.llm.tool.cli import run_shell_command
8
+ from zrb.builtin.llm.tool.web import open_web_route, query_internet
9
+ from zrb.config import (
10
+ LLM_ALLOW_ACCESS_INTERNET,
11
+ LLM_ALLOW_ACCESS_SHELL,
12
+ LLM_HISTORY_DIR,
13
+ LLM_MODEL,
14
+ LLM_SYSTEM_PROMPT,
15
+ )
16
+ from zrb.context.any_shared_context import AnySharedContext
17
+ from zrb.input.bool_input import BoolInput
18
+ from zrb.input.str_input import StrInput
19
+ from zrb.input.text_input import TextInput
20
+ from zrb.task.llm_task import LLMTask
21
+ from zrb.util.file import read_file, write_file
22
+ from zrb.util.string.conversion import to_pascal_case
23
+
24
+
25
+ class PreviousSessionInput(StrInput):
26
+
27
+ def to_html(self, ctx: AnySharedContext) -> str:
28
+ name = self.name
29
+ description = self.description
30
+ default = self.get_default_str(ctx)
31
+ script = read_file(
32
+ file_path=os.path.join(os.path.dirname(__file__), "previous-session.js"),
33
+ replace_map={
34
+ "CURRENT_INPUT_NAME": name,
35
+ "CurrentPascalInputName": to_pascal_case(name),
36
+ },
37
+ )
38
+ return "\n".join(
39
+ [
40
+ f'<input name="{name}" placeholder="{description}" value="{default}" />',
41
+ f"<script>{script}</script>",
42
+ ]
43
+ )
44
+
45
+
46
+ def _read_chat_conversation(ctx: AnySharedContext) -> list[dict[str, Any]]:
47
+ if ctx.input.start_new:
48
+ return []
49
+ previous_session_name = ctx.input.previous_session
50
+ if previous_session_name == "" or previous_session_name is None:
51
+ last_session_file_path = os.path.join(LLM_HISTORY_DIR, "last-session")
52
+ if os.path.isfile(last_session_file_path):
53
+ previous_session_name = read_file(last_session_file_path).strip()
54
+ conversation_file_path = os.path.join(
55
+ LLM_HISTORY_DIR, f"{previous_session_name}.json"
56
+ )
57
+ if not os.path.isfile(conversation_file_path):
58
+ return []
59
+ return json.loads(read_file(conversation_file_path))
60
+
61
+
62
+ def _write_chat_conversation(
63
+ ctx: AnySharedContext, conversations: list[dict[str, Any]]
64
+ ):
65
+ os.makedirs(LLM_HISTORY_DIR, exist_ok=True)
66
+ current_session_name = ctx.session.name
67
+ conversation_file_path = os.path.join(
68
+ LLM_HISTORY_DIR, f"{current_session_name}.json"
69
+ )
70
+ write_file(conversation_file_path, json.dumps(conversations, indent=2))
71
+ last_session_file_path = os.path.join(LLM_HISTORY_DIR, "last-session")
72
+ write_file(last_session_file_path, current_session_name)
73
+
74
+
75
+ llm_chat: LLMTask = llm_group.add_task(
76
+ LLMTask(
77
+ name="llm-chat",
78
+ input=[
79
+ StrInput(
80
+ "model",
81
+ description="LLM Model",
82
+ prompt="LLM Model",
83
+ default_str=LLM_MODEL,
84
+ allow_positional_parsing=False,
85
+ ),
86
+ TextInput(
87
+ "system-prompt",
88
+ description="System prompt",
89
+ prompt="System prompt",
90
+ default_str=LLM_SYSTEM_PROMPT,
91
+ allow_positional_parsing=False,
92
+ ),
93
+ BoolInput(
94
+ "start-new",
95
+ description="Start new conversation session",
96
+ prompt="Forget everything and start new conversation session",
97
+ default_str="false",
98
+ allow_positional_parsing=False,
99
+ ),
100
+ TextInput("message", description="User message", prompt="Your message"),
101
+ PreviousSessionInput(
102
+ "previous-session",
103
+ description="Previous conversation session",
104
+ prompt="Previous conversation session (can be empty)",
105
+ allow_positional_parsing=False,
106
+ allow_empty=True,
107
+ ),
108
+ ],
109
+ conversation_history_reader=_read_chat_conversation,
110
+ conversation_history_writer=_write_chat_conversation,
111
+ description="Chat with LLM",
112
+ model="{ctx.input.model}",
113
+ system_prompt="{ctx.input['system-prompt']}",
114
+ message="{ctx.input.message}",
115
+ retries=0,
116
+ ),
117
+ alias="chat",
118
+ )
119
+
120
+ if LLM_ALLOW_ACCESS_SHELL:
121
+ llm_chat.add_tool(run_shell_command)
122
+
123
+ if LLM_ALLOW_ACCESS_INTERNET:
124
+ llm_chat.add_tool(open_web_route)
125
+ llm_chat.add_tool(query_internet)
126
+ llm_chat.add_tool(get_current_location)
127
+ llm_chat.add_tool(get_current_weather)
@@ -0,0 +1,13 @@
1
+ let hasUpdateCurrentPascalInputName = false;
2
+ document.getElementById("submit-task-form").addEventListener("change", async function(event) {
3
+ const currentInput = event.target;
4
+ if (hasUpdateCurrentPascalInputName || currentInput.name === "CURRENT_INPUT_NAME") {
5
+ return
6
+ }
7
+ const previousSessionInput = submitTaskForm.querySelector('[name="CURRENT_INPUT_NAME"]');
8
+ if (previousSessionInput) {
9
+ const currentSessionName = cfg.SESSION_NAME
10
+ previousSessionInput.value = currentSessionName;
11
+ }
12
+ hasUpdateCurrentPascalInputName = true;
13
+ });
@@ -0,0 +1,29 @@
1
+ import json
2
+ from typing import Annotated, Literal
3
+
4
+ import requests
5
+
6
+
7
+ def get_current_location() -> (
8
+ Annotated[str, "JSON string representing latitude and longitude"]
9
+ ): # noqa
10
+ """Get the user's current location."""
11
+ return json.dumps(requests.get("http://ip-api.com/json?fields=lat,lon").json())
12
+
13
+
14
+ def get_current_weather(
15
+ latitude: float,
16
+ longitude: float,
17
+ temperature_unit: Literal["celsius", "fahrenheit"],
18
+ ) -> str:
19
+ """Get the current weather in a given location."""
20
+ resp = requests.get(
21
+ "https://api.open-meteo.com/v1/forecast",
22
+ params={
23
+ "latitude": latitude,
24
+ "longitude": longitude,
25
+ "temperature_unit": temperature_unit,
26
+ "current_weather": True,
27
+ },
28
+ )
29
+ return json.dumps(resp.json())
@@ -294,6 +294,7 @@ def _get_default_stop_work_time_str() -> str:
294
294
  description="Todo.txt content",
295
295
  prompt="Todo.txt content (will override existing)",
296
296
  default_str=lambda _: _get_todo_txt_content(),
297
+ allow_positional_parsing=False,
297
298
  ),
298
299
  ],
299
300
  description="📝 Edit todo",
@@ -79,24 +79,30 @@ WEB_AUTH_REFRESH_TOKEN_EXPIRE_MINUTES = int(
79
79
  LLM_MODEL = os.getenv("ZRB_LLM_MODEL", "ollama_chat/llama3.1")
80
80
 
81
81
  _DEFAULT_PROMPT = """
82
- You are a reliable assistant focused on providing accurate, helpful, and factual information.
82
+ You are a helpful assistant and you have access to several tools.
83
+ Your goal is to provide a final answer by executing a series of planning, actions, reasoning, and evaluations.
83
84
 
84
- Key guidelines:
85
- 1. Prioritize correctness and clarity.
86
- 2. Avoid guessing—clearly state if more information is needed.
87
- 3. Distinguish facts from opinions.
88
- 4. Use phrases like "to the best of my knowledge" when appropriate.
85
+ Breakdown user request into several actionable tasks. For example, when user ask about current weather on current location, you should get the current location first.
89
86
 
90
- If unsure or lacking current data, inform the user and suggest verification.
91
- Accuracy always takes precedence over completeness.
87
+ DO NOT TRY TO SIMULATE TOOL OUTPUT.
88
+
89
+ ERROR HANDLING
90
+ 1. If you receive an error, read the error message carefully and identify the specific issue.
91
+ 2. Adjust your response accordingly and perform the review process again before resubmitting.
92
+
93
+ REMINDER:
94
+ - ALWAYS double-check your response format and function arguments before submitting.
95
+ - DON'T make up answers.
92
96
  """.strip()
93
97
  LLM_SYSTEM_PROMPT = os.getenv("ZRB_LLM_SYSTEM_PROMPT", _DEFAULT_PROMPT)
98
+ LLM_HISTORY_DIR = os.getenv(
99
+ "ZRB_LLM_HISTORY_DIR", os.path.expanduser(os.path.join("~", ".zrb-llm-history"))
100
+ )
94
101
  LLM_HISTORY_FILE = os.getenv(
95
- "ZRB_LLM_HISTORY_FILE",
96
- os.path.expanduser(os.path.join("~", ".zrb-llm-history.json")),
102
+ "ZRB_LLM_HISTORY_FILE", os.path.join(LLM_HISTORY_DIR, "history.json")
97
103
  )
98
104
  LLM_ALLOW_ACCESS_SHELL = to_boolean(os.getenv("ZRB_LLM_ACCESS_FILE", "1"))
99
- LLM_ALLOW_ACCESS_WEB = to_boolean(os.getenv("ZRB_LLM_ACCESS_WEB", "1"))
105
+ LLM_ALLOW_ACCESS_INTERNET = to_boolean(os.getenv("ZRB_LLM_ACCESS_INTERNET", "1"))
100
106
  RAG_EMBEDDING_MODEL = os.getenv("ZRB_RAG_EMBEDDING_MODEL", "ollama/nomic-embed-text")
101
107
  RAG_CHUNK_SIZE = int(os.getenv("ZRB_RAG_CHUNK_SIZE", "1024"))
102
108
  RAG_OVERLAP = int(os.getenv("ZRB_RAG_OVERLAP", "128"))
@@ -19,6 +19,11 @@ class AnyInput(ABC):
19
19
  def prompt_message(self) -> str:
20
20
  pass
21
21
 
22
+ @property
23
+ @abstractmethod
24
+ def allow_positional_parsing(self) -> bool:
25
+ pass
26
+
22
27
  @abstractmethod
23
28
  def to_html(self, shared_ctx: AnySharedContext) -> str:
24
29
  pass
@@ -16,6 +16,7 @@ class BaseInput(AnyInput):
16
16
  default_str: StrAttr = "",
17
17
  auto_render: bool = True,
18
18
  allow_empty: bool = False,
19
+ allow_positional_parsing: bool = True,
19
20
  ):
20
21
  self._name = name
21
22
  self._description = description
@@ -23,6 +24,7 @@ class BaseInput(AnyInput):
23
24
  self._default_str = default_str
24
25
  self._auto_render = auto_render
25
26
  self._allow_empty = allow_empty
27
+ self._allow_positional_parsing = allow_positional_parsing
26
28
 
27
29
  def __repr__(self):
28
30
  return f"<{self.__class__.__name__} name={self._name}>"
@@ -39,6 +41,10 @@ class BaseInput(AnyInput):
39
41
  def prompt_message(self) -> str:
40
42
  return self._prompt if self._prompt is not None else self.name
41
43
 
44
+ @property
45
+ def allow_positional_parsing(self) -> bool:
46
+ return self._allow_positional_parsing
47
+
42
48
  def to_html(self, ctx: AnySharedContext) -> str:
43
49
  name = self.name
44
50
  description = self.description
@@ -13,6 +13,7 @@ class BoolInput(BaseInput):
13
13
  default_str: StrAttr = "False",
14
14
  auto_render: bool = True,
15
15
  allow_empty: bool = False,
16
+ allow_positional_parsing: bool = True,
16
17
  ):
17
18
  super().__init__(
18
19
  name=name,
@@ -21,6 +22,7 @@ class BoolInput(BaseInput):
21
22
  default_str=default_str,
22
23
  auto_render=auto_render,
23
24
  allow_empty=allow_empty,
25
+ allow_positional_parsing=allow_positional_parsing,
24
26
  )
25
27
 
26
28
  def to_html(self, ctx: AnySharedContext) -> str:
@@ -12,6 +12,7 @@ class FloatInput(BaseInput):
12
12
  default_str: StrAttr = "0.0",
13
13
  auto_render: bool = True,
14
14
  allow_empty: bool = False,
15
+ allow_positional_parsing: bool = True,
15
16
  ):
16
17
  super().__init__(
17
18
  name=name,
@@ -20,6 +21,7 @@ class FloatInput(BaseInput):
20
21
  default_str=default_str,
21
22
  auto_render=auto_render,
22
23
  allow_empty=allow_empty,
24
+ allow_positional_parsing=allow_positional_parsing,
23
25
  )
24
26
 
25
27
  def to_html(self, ctx: AnySharedContext) -> str:
@@ -12,6 +12,7 @@ class IntInput(BaseInput):
12
12
  default_str: StrAttr = "0",
13
13
  auto_render: bool = True,
14
14
  allow_empty: bool = False,
15
+ allow_positional_parsing: bool = True,
15
16
  ):
16
17
  super().__init__(
17
18
  name=name,
@@ -20,6 +21,7 @@ class IntInput(BaseInput):
20
21
  default_str=default_str,
21
22
  auto_render=auto_render,
22
23
  allow_empty=allow_empty,
24
+ allow_positional_parsing=allow_positional_parsing,
23
25
  )
24
26
 
25
27
  def to_html(self, ctx: AnySharedContext) -> str:
@@ -14,6 +14,7 @@ class OptionInput(BaseInput):
14
14
  default_str: StrAttr = "",
15
15
  auto_render: bool = True,
16
16
  allow_empty: bool = False,
17
+ allow_positional_parsing: bool = True,
17
18
  ):
18
19
  super().__init__(
19
20
  name=name,
@@ -22,6 +23,7 @@ class OptionInput(BaseInput):
22
23
  default_str=default_str,
23
24
  auto_render=auto_render,
24
25
  allow_empty=allow_empty,
26
+ allow_positional_parsing=allow_positional_parsing,
25
27
  )
26
28
  self._options = options
27
29
 
@@ -14,6 +14,7 @@ class PasswordInput(BaseInput):
14
14
  default_str: str | Callable[[AnySharedContext], str] = "",
15
15
  auto_render: bool = True,
16
16
  allow_empty: bool = False,
17
+ allow_positional_parsing: bool = True,
17
18
  ):
18
19
  super().__init__(
19
20
  name=name,
@@ -22,6 +23,7 @@ class PasswordInput(BaseInput):
22
23
  default_str=default_str,
23
24
  auto_render=auto_render,
24
25
  allow_empty=allow_empty,
26
+ allow_positional_parsing=allow_positional_parsing,
25
27
  )
26
28
  self._is_secret = True
27
29
 
@@ -18,6 +18,7 @@ class TextInput(BaseInput):
18
18
  default_str: str | Callable[[AnySharedContext], str] = "",
19
19
  auto_render: bool = True,
20
20
  allow_empty: bool = False,
21
+ allow_positional_parsing: bool = True,
21
22
  editor: str = DEFAULT_EDITOR,
22
23
  extension: str = ".txt",
23
24
  comment_start: str | None = None,
@@ -30,6 +31,7 @@ class TextInput(BaseInput):
30
31
  default_str=default_str,
31
32
  auto_render=auto_render,
32
33
  allow_empty=allow_empty,
34
+ allow_positional_parsing=allow_positional_parsing,
33
35
  )
34
36
  self._editor = editor
35
37
  self._extension = extension
@@ -15,7 +15,7 @@ def get_run_kwargs(
15
15
  if task_input.name in str_kwargs:
16
16
  # Update shared context for next input default value
17
17
  task_input.update_shared_context(shared_ctx, str_kwargs[task_input.name])
18
- elif arg_index < len(args):
18
+ elif arg_index < len(args) and task_input.allow_positional_parsing:
19
19
  run_kwargs[task_input.name] = args[arg_index]
20
20
  # Update shared context for next input default value
21
21
  task_input.update_shared_context(shared_ctx, run_kwargs[task_input.name])
@@ -51,7 +51,6 @@ const CURRENT_SESSION = {
51
51
  "Content-Type": "application/json"
52
52
  },
53
53
  });
54
- console.log("RESPONSE", response);
55
54
  return await response.json();
56
55
  } catch (error) {
57
56
  console.error("Error:", error);
@@ -22,7 +22,7 @@ window.addEventListener("load", async function () {
22
22
  const submitTaskForm = document.getElementById("submit-task-form");
23
23
  submitTaskForm.addEventListener("change", async function(event) {
24
24
  const currentInput = event.target;
25
- const inputs = Array.from(submitTaskForm.querySelectorAll("input[name], textarea[name]"));
25
+ const inputs = Array.from(submitTaskForm.querySelectorAll("input[name], textarea[name], select[name]"));
26
26
  const inputMap = {};
27
27
  const fixedInputNames = [];
28
28
  for (const input of inputs) {
@@ -56,6 +56,9 @@ submitTaskForm.addEventListener("change", async function(event) {
56
56
  if (input === currentInput) {
57
57
  return;
58
58
  }
59
+ if (value === "") {
60
+ return;
61
+ }
59
62
  input.value = value;
60
63
  });
61
64
  } else {
@@ -28,7 +28,7 @@ class AdditionalTool(BaseModel):
28
28
 
29
29
 
30
30
  def scratchpad(thought: str) -> str:
31
- """Use this tool to note your thought and planning"""
31
+ """Write your thought, analysis, reasoning, and evaluation here."""
32
32
  return thought
33
33
 
34
34
 
@@ -53,8 +53,16 @@ class LLMTask(BaseTask):
53
53
  render_system_prompt: bool = True,
54
54
  message: StrAttr | None = None,
55
55
  tools: list[Callable] | Callable[[AnySharedContext], list[Callable]] = [],
56
- history: ListOfDict | Callable[[AnySharedContext], ListOfDict] = [],
57
- history_file: StrAttr | None = None,
56
+ conversation_history: (
57
+ ListOfDict | Callable[[AnySharedContext], ListOfDict]
58
+ ) = [],
59
+ conversation_history_reader: (
60
+ Callable[[AnySharedContext], ListOfDict] | None
61
+ ) = None,
62
+ conversation_history_writer: (
63
+ Callable[[AnySharedContext, ListOfDict], None] | None
64
+ ) = None,
65
+ conversation_history_file: StrAttr | None = None,
58
66
  render_history_file: bool = True,
59
67
  model_kwargs: (
60
68
  dict[str, Any] | Callable[[AnySharedContext], dict[str, Any]]
@@ -100,8 +108,10 @@ class LLMTask(BaseTask):
100
108
  self._render_system_prompt = render_system_prompt
101
109
  self._message = message
102
110
  self._tools = tools
103
- self._history = history
104
- self._history_file = history_file
111
+ self._conversation_history = conversation_history
112
+ self._conversation_history_reader = conversation_history_reader
113
+ self._conversation_history_writer = conversation_history_writer
114
+ self._conversation_history_file = conversation_history_file
105
115
  self._render_history_file = render_history_file
106
116
 
107
117
  def add_tool(self, tool: Callable):
@@ -128,10 +138,9 @@ class LLMTask(BaseTask):
128
138
  ctx.log_debug("MODEL KWARGS", model_kwargs)
129
139
  system_prompt = self._get_system_prompt(ctx)
130
140
  ctx.log_debug("SYSTEM PROMPT", system_prompt)
131
- history = self._get_history(ctx)
141
+ history = await self._read_conversation_history(ctx)
132
142
  ctx.log_debug("HISTORY PROMPT", history)
133
143
  conversations = history + [user_message]
134
- history_file = self._get_history_file(ctx)
135
144
  while True:
136
145
  llm_response = await self._get_llm_response(
137
146
  model, system_prompt, conversations, model_kwargs
@@ -143,7 +152,7 @@ class LLMTask(BaseTask):
143
152
  if is_function_call_supported:
144
153
  if not llm_response.tool_calls:
145
154
  # No tool call, end conversation
146
- self._save_conversation(history_file, conversations)
155
+ await self._write_conversation_history(ctx, conversations)
147
156
  return llm_response.content
148
157
  await self._handle_tool_calls(
149
158
  ctx, available_tools, conversations, llm_response
@@ -161,7 +170,7 @@ class LLMTask(BaseTask):
161
170
  ctx.print(stylize_faint(f"{tool_execution_message}"))
162
171
  conversations.append(tool_execution_message)
163
172
  if function_name == "end_conversation":
164
- self._save_conversation(history_file, conversations)
173
+ await self._write_conversation_history(ctx, conversations)
165
174
  return function_kwargs.get("final_answer", "")
166
175
  except Exception as e:
167
176
  ctx.log_error(e)
@@ -185,7 +194,12 @@ class LLMTask(BaseTask):
185
194
  ctx.print(stylize_faint(f"{tool_execution_message}"))
186
195
  conversations.append(tool_execution_message)
187
196
 
188
- def _save_conversation(self, history_file: str, conversations: list[Any]):
197
+ async def _write_conversation_history(
198
+ self, ctx: AnyContext, conversations: list[Any]
199
+ ):
200
+ if self._conversation_history_writer is not None:
201
+ await run_async(self._conversation_history_writer(ctx, conversations))
202
+ history_file = self._get_history_file(ctx)
189
203
  if history_file != "":
190
204
  write_file(history_file, json.dumps(conversations, indent=2))
191
205
 
@@ -294,21 +308,26 @@ class LLMTask(BaseTask):
294
308
  tools[tool.__name__] = tool
295
309
  return tools
296
310
 
297
- def _get_history(self, ctx: AnyContext) -> ListOfDict:
298
- if callable(self._history):
299
- return self._history(ctx)
311
+ async def _read_conversation_history(self, ctx: AnyContext) -> ListOfDict:
312
+ if self._conversation_history_reader is not None:
313
+ return await run_async(self._conversation_history_reader(ctx))
314
+ if callable(self._conversation_history):
315
+ return self._conversation_history(ctx)
300
316
  history_file = self._get_history_file(ctx)
301
317
  if (
302
- len(self._history) == 0
318
+ len(self._conversation_history) == 0
303
319
  and history_file != ""
304
320
  and os.path.isfile(history_file)
305
321
  ):
306
322
  return json.loads(read_file(history_file))
307
- return self._history
323
+ return self._conversation_history
308
324
 
309
325
  def _get_history_file(self, ctx: AnyContext) -> str:
310
326
  return get_str_attr(
311
- ctx, self._history_file, "", auto_render=self._render_history_file
327
+ ctx,
328
+ self._conversation_history_file,
329
+ "",
330
+ auto_render=self._render_history_file,
312
331
  )
313
332
 
314
333
 
@@ -1,49 +0,0 @@
1
- from zrb.builtin.group import llm_group
2
- from zrb.builtin.llm.tool.cli import run_shell_command
3
- from zrb.builtin.llm.tool.rag import create_rag_from_directory
4
- from zrb.builtin.llm.tool.web import open_web_route, query_internet
5
- from zrb.config import (
6
- LLM_ALLOW_ACCESS_SHELL,
7
- LLM_ALLOW_ACCESS_WEB,
8
- LLM_HISTORY_FILE,
9
- LLM_MODEL,
10
- LLM_SYSTEM_PROMPT,
11
- )
12
- from zrb.input.str_input import StrInput
13
- from zrb.input.text_input import TextInput
14
- from zrb.task.llm_task import LLMTask
15
-
16
- llm_chat: LLMTask = llm_group.add_task(
17
- LLMTask(
18
- name="llm-chat",
19
- input=[
20
- StrInput(
21
- "model",
22
- description="LLM Model",
23
- prompt="LLM Model",
24
- default_str=LLM_MODEL,
25
- ),
26
- TextInput(
27
- "system-prompt",
28
- description="System prompt",
29
- prompt="System prompt",
30
- default_str=LLM_SYSTEM_PROMPT,
31
- ),
32
- TextInput("message", description="User message", prompt="Your message"),
33
- ],
34
- history_file=LLM_HISTORY_FILE,
35
- description="Chat with LLM",
36
- model="{ctx.input.model}",
37
- system_prompt="{ctx.input['system-prompt']}",
38
- message="{ctx.input.message}",
39
- retries=0,
40
- ),
41
- alias="chat",
42
- )
43
-
44
- if LLM_ALLOW_ACCESS_SHELL:
45
- llm_chat.add_tool(run_shell_command)
46
-
47
- if LLM_ALLOW_ACCESS_WEB:
48
- llm_chat.add_tool(open_web_route)
49
- llm_chat.add_tool(query_internet)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes