vibego 0.2.35__tar.gz → 0.2.42__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.

Potentially problematic release.


This version of vibego might be problematic. Click here for more details.

Files changed (465) hide show
  1. {vibego-0.2.35 → vibego-0.2.42}/PKG-INFO +1 -1
  2. {vibego-0.2.35 → vibego-0.2.42}/bot.py +157 -76
  3. {vibego-0.2.35 → vibego-0.2.42}/pyproject.toml +3 -3
  4. {vibego-0.2.35 → vibego-0.2.42}/tests/test_long_poll_mechanism.py +18 -15
  5. vibego-0.2.42/tests/test_markdown_guard.py +91 -0
  6. {vibego-0.2.35 → vibego-0.2.42}/tests/test_task_description.py +7 -1
  7. vibego-0.2.42/tests/test_telegram_markdown_renderer.py +44 -0
  8. {vibego-0.2.35 → vibego-0.2.42}/tests/test_unescape_markdown.py +2 -2
  9. {vibego-0.2.35 → vibego-0.2.42}/vibego.egg-info/PKG-INFO +1 -1
  10. {vibego-0.2.35 → vibego-0.2.42}/vibego.egg-info/SOURCES.txt +0 -1
  11. {vibego-0.2.35 → vibego-0.2.42}/vibego.egg-info/top_level.txt +0 -1
  12. {vibego-0.2.35 → vibego-0.2.42}/vibego_cli/__init__.py +1 -1
  13. vibego-0.2.35/telegram_markdown/__init__.py +0 -269
  14. vibego-0.2.35/tests/test_markdown_guard.py +0 -43
  15. vibego-0.2.35/tests/test_telegram_markdown_renderer.py +0 -58
  16. {vibego-0.2.35 → vibego-0.2.42}/MANIFEST.in +0 -0
  17. {vibego-0.2.35 → vibego-0.2.42}/README.md +0 -0
  18. {vibego-0.2.35 → vibego-0.2.42}/config/projects.json.example +0 -0
  19. {vibego-0.2.35 → vibego-0.2.42}/logging_setup.py +0 -0
  20. {vibego-0.2.35 → vibego-0.2.42}/master.py +0 -0
  21. {vibego-0.2.35 → vibego-0.2.42}/project_repository.py +0 -0
  22. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/__init__.py +0 -0
  23. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/__main__.py +0 -0
  24. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/__pip-runner__.py +0 -0
  25. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/__init__.py +0 -0
  26. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/build_env.py +0 -0
  27. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cache.py +0 -0
  28. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/__init__.py +0 -0
  29. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/autocompletion.py +0 -0
  30. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/base_command.py +0 -0
  31. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/cmdoptions.py +0 -0
  32. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/command_context.py +0 -0
  33. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/index_command.py +0 -0
  34. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/main.py +0 -0
  35. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/main_parser.py +0 -0
  36. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/parser.py +0 -0
  37. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/progress_bars.py +0 -0
  38. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/req_command.py +0 -0
  39. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/spinners.py +0 -0
  40. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/status_codes.py +0 -0
  41. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/__init__.py +0 -0
  42. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/cache.py +0 -0
  43. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/check.py +0 -0
  44. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/completion.py +0 -0
  45. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/configuration.py +0 -0
  46. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/debug.py +0 -0
  47. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/download.py +0 -0
  48. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/freeze.py +0 -0
  49. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/hash.py +0 -0
  50. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/help.py +0 -0
  51. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/index.py +0 -0
  52. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/inspect.py +0 -0
  53. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/install.py +0 -0
  54. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/list.py +0 -0
  55. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/lock.py +0 -0
  56. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/search.py +0 -0
  57. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/show.py +0 -0
  58. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/uninstall.py +0 -0
  59. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/wheel.py +0 -0
  60. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/configuration.py +0 -0
  61. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/__init__.py +0 -0
  62. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/base.py +0 -0
  63. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/installed.py +0 -0
  64. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/sdist.py +0 -0
  65. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/wheel.py +0 -0
  66. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/exceptions.py +0 -0
  67. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/__init__.py +0 -0
  68. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/collector.py +0 -0
  69. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/package_finder.py +0 -0
  70. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/sources.py +0 -0
  71. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/__init__.py +0 -0
  72. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/_distutils.py +0 -0
  73. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/_sysconfig.py +0 -0
  74. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/base.py +0 -0
  75. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/main.py +0 -0
  76. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/__init__.py +0 -0
  77. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/_json.py +0 -0
  78. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/base.py +0 -0
  79. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/__init__.py +0 -0
  80. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_compat.py +0 -0
  81. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_dists.py +0 -0
  82. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_envs.py +0 -0
  83. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/pkg_resources.py +0 -0
  84. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/__init__.py +0 -0
  85. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/candidate.py +0 -0
  86. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/direct_url.py +0 -0
  87. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/format_control.py +0 -0
  88. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/index.py +0 -0
  89. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/installation_report.py +0 -0
  90. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/link.py +0 -0
  91. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/pylock.py +0 -0
  92. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/scheme.py +0 -0
  93. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/search_scope.py +0 -0
  94. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/selection_prefs.py +0 -0
  95. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/target_python.py +0 -0
  96. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/wheel.py +0 -0
  97. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/__init__.py +0 -0
  98. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/auth.py +0 -0
  99. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/cache.py +0 -0
  100. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/download.py +0 -0
  101. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/lazy_wheel.py +0 -0
  102. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/session.py +0 -0
  103. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/utils.py +0 -0
  104. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/xmlrpc.py +0 -0
  105. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/__init__.py +0 -0
  106. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  107. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/build_tracker.py +0 -0
  108. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata.py +0 -0
  109. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata_editable.py +0 -0
  110. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata_legacy.py +0 -0
  111. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel.py +0 -0
  112. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel_editable.py +0 -0
  113. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel_legacy.py +0 -0
  114. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/check.py +0 -0
  115. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/freeze.py +0 -0
  116. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/__init__.py +0 -0
  117. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/editable_legacy.py +0 -0
  118. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/wheel.py +0 -0
  119. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/prepare.py +0 -0
  120. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/pyproject.py +0 -0
  121. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/__init__.py +0 -0
  122. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/constructors.py +0 -0
  123. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_dependency_group.py +0 -0
  124. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_file.py +0 -0
  125. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_install.py +0 -0
  126. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_set.py +0 -0
  127. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_uninstall.py +0 -0
  128. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/__init__.py +0 -0
  129. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/base.py +0 -0
  130. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  131. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/legacy/resolver.py +0 -0
  132. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  133. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/base.py +0 -0
  134. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -0
  135. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/factory.py +0 -0
  136. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +0 -0
  137. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/provider.py +0 -0
  138. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/reporter.py +0 -0
  139. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/requirements.py +0 -0
  140. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/resolver.py +0 -0
  141. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/self_outdated_check.py +0 -0
  142. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/__init__.py +0 -0
  143. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/_jaraco_text.py +0 -0
  144. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/_log.py +0 -0
  145. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/appdirs.py +0 -0
  146. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/compat.py +0 -0
  147. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/compatibility_tags.py +0 -0
  148. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/datetime.py +0 -0
  149. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/deprecation.py +0 -0
  150. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/direct_url_helpers.py +0 -0
  151. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/egg_link.py +0 -0
  152. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/entrypoints.py +0 -0
  153. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/filesystem.py +0 -0
  154. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/filetypes.py +0 -0
  155. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/glibc.py +0 -0
  156. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/hashes.py +0 -0
  157. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/logging.py +0 -0
  158. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/misc.py +0 -0
  159. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/packaging.py +0 -0
  160. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/retry.py +0 -0
  161. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/setuptools_build.py +0 -0
  162. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/subprocess.py +0 -0
  163. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/temp_dir.py +0 -0
  164. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/unpacking.py +0 -0
  165. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/urls.py +0 -0
  166. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/virtualenv.py +0 -0
  167. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/wheel.py +0 -0
  168. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/__init__.py +0 -0
  169. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/bazaar.py +0 -0
  170. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/git.py +0 -0
  171. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/mercurial.py +0 -0
  172. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/subversion.py +0 -0
  173. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/versioncontrol.py +0 -0
  174. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/wheel_builder.py +0 -0
  175. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/__init__.py +0 -0
  176. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__init__.py +0 -0
  177. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/_cmd.py +0 -0
  178. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/adapter.py +0 -0
  179. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/cache.py +0 -0
  180. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +0 -0
  181. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +0 -0
  182. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +0 -0
  183. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/controller.py +0 -0
  184. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/filewrapper.py +0 -0
  185. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/heuristics.py +0 -0
  186. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/serialize.py +0 -0
  187. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/wrapper.py +0 -0
  188. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/__init__.py +0 -0
  189. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/__main__.py +0 -0
  190. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/core.py +0 -0
  191. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__init__.py +0 -0
  192. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__main__.py +0 -0
  193. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_implementation.py +0 -0
  194. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_lint_dependency_groups.py +0 -0
  195. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_pip_wrapper.py +0 -0
  196. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_toml_compat.py +0 -0
  197. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/__init__.py +0 -0
  198. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/compat.py +0 -0
  199. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/resources.py +0 -0
  200. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/scripts.py +0 -0
  201. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/util.py +0 -0
  202. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/__init__.py +0 -0
  203. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/__main__.py +0 -0
  204. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/distro.py +0 -0
  205. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/__init__.py +0 -0
  206. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/codec.py +0 -0
  207. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/compat.py +0 -0
  208. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/core.py +0 -0
  209. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/idnadata.py +0 -0
  210. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/intranges.py +0 -0
  211. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/package_data.py +0 -0
  212. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/uts46data.py +0 -0
  213. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/__init__.py +0 -0
  214. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/exceptions.py +0 -0
  215. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/ext.py +0 -0
  216. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/fallback.py +0 -0
  217. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/__init__.py +0 -0
  218. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_elffile.py +0 -0
  219. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_manylinux.py +0 -0
  220. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_musllinux.py +0 -0
  221. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_parser.py +0 -0
  222. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_structures.py +0 -0
  223. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_tokenizer.py +0 -0
  224. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/__init__.py +0 -0
  225. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/_spdx.py +0 -0
  226. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/markers.py +0 -0
  227. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/metadata.py +0 -0
  228. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/requirements.py +0 -0
  229. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/specifiers.py +0 -0
  230. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/tags.py +0 -0
  231. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/utils.py +0 -0
  232. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/version.py +0 -0
  233. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pkg_resources/__init__.py +0 -0
  234. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/__init__.py +0 -0
  235. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/__main__.py +0 -0
  236. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/android.py +0 -0
  237. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/api.py +0 -0
  238. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/macos.py +0 -0
  239. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/unix.py +0 -0
  240. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/version.py +0 -0
  241. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/windows.py +0 -0
  242. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/__init__.py +0 -0
  243. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/__main__.py +0 -0
  244. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/console.py +0 -0
  245. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/filter.py +0 -0
  246. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/filters/__init__.py +0 -0
  247. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatter.py +0 -0
  248. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/__init__.py +0 -0
  249. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/_mapping.py +0 -0
  250. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexer.py +0 -0
  251. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/__init__.py +0 -0
  252. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/_mapping.py +0 -0
  253. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/python.py +0 -0
  254. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/modeline.py +0 -0
  255. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/plugin.py +0 -0
  256. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/regexopt.py +0 -0
  257. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/scanner.py +0 -0
  258. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/sphinxext.py +0 -0
  259. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/style.py +0 -0
  260. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/styles/__init__.py +0 -0
  261. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/styles/_mapping.py +0 -0
  262. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/token.py +0 -0
  263. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/unistring.py +0 -0
  264. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/util.py +0 -0
  265. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/__init__.py +0 -0
  266. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_impl.py +0 -0
  267. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +0 -0
  268. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +0 -0
  269. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/__init__.py +0 -0
  270. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/__version__.py +0 -0
  271. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/_internal_utils.py +0 -0
  272. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/adapters.py +0 -0
  273. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/api.py +0 -0
  274. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/auth.py +0 -0
  275. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/certs.py +0 -0
  276. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/compat.py +0 -0
  277. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/cookies.py +0 -0
  278. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/exceptions.py +0 -0
  279. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/help.py +0 -0
  280. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/hooks.py +0 -0
  281. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/models.py +0 -0
  282. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/packages.py +0 -0
  283. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/sessions.py +0 -0
  284. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/status_codes.py +0 -0
  285. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/structures.py +0 -0
  286. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/utils.py +0 -0
  287. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/__init__.py +0 -0
  288. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/providers.py +0 -0
  289. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/reporters.py +0 -0
  290. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +0 -0
  291. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +0 -0
  292. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +0 -0
  293. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +0 -0
  294. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +0 -0
  295. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/structs.py +0 -0
  296. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/__init__.py +0 -0
  297. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/__main__.py +0 -0
  298. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_cell_widths.py +0 -0
  299. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_emoji_codes.py +0 -0
  300. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_emoji_replace.py +0 -0
  301. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_export_format.py +0 -0
  302. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_extension.py +0 -0
  303. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_fileno.py +0 -0
  304. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_inspect.py +0 -0
  305. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_log_render.py +0 -0
  306. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_loop.py +0 -0
  307. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_null_file.py +0 -0
  308. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_palettes.py +0 -0
  309. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_pick.py +0 -0
  310. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_ratio.py +0 -0
  311. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_spinners.py +0 -0
  312. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_stack.py +0 -0
  313. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_timer.py +0 -0
  314. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_win32_console.py +0 -0
  315. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_windows.py +0 -0
  316. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_windows_renderer.py +0 -0
  317. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_wrap.py +0 -0
  318. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/abc.py +0 -0
  319. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/align.py +0 -0
  320. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/ansi.py +0 -0
  321. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/bar.py +0 -0
  322. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/box.py +0 -0
  323. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/cells.py +0 -0
  324. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/color.py +0 -0
  325. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/color_triplet.py +0 -0
  326. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/columns.py +0 -0
  327. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/console.py +0 -0
  328. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/constrain.py +0 -0
  329. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/containers.py +0 -0
  330. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/control.py +0 -0
  331. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/default_styles.py +0 -0
  332. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/diagnose.py +0 -0
  333. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/emoji.py +0 -0
  334. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/errors.py +0 -0
  335. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/file_proxy.py +0 -0
  336. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/filesize.py +0 -0
  337. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/highlighter.py +0 -0
  338. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/json.py +0 -0
  339. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/jupyter.py +0 -0
  340. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/layout.py +0 -0
  341. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/live.py +0 -0
  342. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/live_render.py +0 -0
  343. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/logging.py +0 -0
  344. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/markup.py +0 -0
  345. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/measure.py +0 -0
  346. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/padding.py +0 -0
  347. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/pager.py +0 -0
  348. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/palette.py +0 -0
  349. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/panel.py +0 -0
  350. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/pretty.py +0 -0
  351. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/progress.py +0 -0
  352. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/progress_bar.py +0 -0
  353. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/prompt.py +0 -0
  354. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/protocol.py +0 -0
  355. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/region.py +0 -0
  356. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/repr.py +0 -0
  357. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/rule.py +0 -0
  358. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/scope.py +0 -0
  359. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/screen.py +0 -0
  360. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/segment.py +0 -0
  361. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/spinner.py +0 -0
  362. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/status.py +0 -0
  363. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/style.py +0 -0
  364. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/styled.py +0 -0
  365. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/syntax.py +0 -0
  366. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/table.py +0 -0
  367. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/terminal_theme.py +0 -0
  368. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/text.py +0 -0
  369. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/theme.py +0 -0
  370. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/themes.py +0 -0
  371. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/traceback.py +0 -0
  372. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/tree.py +0 -0
  373. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/__init__.py +0 -0
  374. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_parser.py +0 -0
  375. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_re.py +0 -0
  376. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_types.py +0 -0
  377. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli_w/__init__.py +0 -0
  378. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli_w/_writer.py +0 -0
  379. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/__init__.py +0 -0
  380. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_api.py +0 -0
  381. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_macos.py +0 -0
  382. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_openssl.py +0 -0
  383. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_ssl_constants.py +0 -0
  384. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_windows.py +0 -0
  385. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/__init__.py +0 -0
  386. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/_collections.py +0 -0
  387. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/_version.py +0 -0
  388. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/connection.py +0 -0
  389. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/connectionpool.py +0 -0
  390. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  391. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +0 -0
  392. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  393. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +0 -0
  394. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +0 -0
  395. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/appengine.py +0 -0
  396. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +0 -0
  397. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +0 -0
  398. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +0 -0
  399. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/socks.py +0 -0
  400. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/exceptions.py +0 -0
  401. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/fields.py +0 -0
  402. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/filepost.py +0 -0
  403. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
  404. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  405. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +0 -0
  406. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +0 -0
  407. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/six.py +0 -0
  408. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/poolmanager.py +0 -0
  409. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/request.py +0 -0
  410. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/response.py +0 -0
  411. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__init__.py +0 -0
  412. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/connection.py +0 -0
  413. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/proxy.py +0 -0
  414. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/queue.py +0 -0
  415. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/request.py +0 -0
  416. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/response.py +0 -0
  417. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/retry.py +0 -0
  418. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssl_.py +0 -0
  419. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +0 -0
  420. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssltransport.py +0 -0
  421. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/timeout.py +0 -0
  422. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/url.py +0 -0
  423. {vibego-0.2.35 → vibego-0.2.42}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/wait.py +0 -0
  424. {vibego-0.2.35 → vibego-0.2.42}/scripts/__init__.py +0 -0
  425. {vibego-0.2.35 → vibego-0.2.42}/scripts/bump_version.sh +0 -0
  426. {vibego-0.2.35 → vibego-0.2.42}/scripts/log_writer.py +0 -0
  427. {vibego-0.2.35 → vibego-0.2.42}/scripts/master_healthcheck.py +0 -0
  428. {vibego-0.2.35 → vibego-0.2.42}/scripts/models/claudecode.sh +0 -0
  429. {vibego-0.2.35 → vibego-0.2.42}/scripts/models/codex.sh +0 -0
  430. {vibego-0.2.35 → vibego-0.2.42}/scripts/models/common.sh +0 -0
  431. {vibego-0.2.35 → vibego-0.2.42}/scripts/models/gemini.sh +0 -0
  432. {vibego-0.2.35 → vibego-0.2.42}/scripts/publish.sh +0 -0
  433. {vibego-0.2.35 → vibego-0.2.42}/scripts/requirements.txt +0 -0
  434. {vibego-0.2.35 → vibego-0.2.42}/scripts/run_bot.sh +0 -0
  435. {vibego-0.2.35 → vibego-0.2.42}/scripts/start.sh +0 -0
  436. {vibego-0.2.35 → vibego-0.2.42}/scripts/start_tmux_codex.sh +0 -0
  437. {vibego-0.2.35 → vibego-0.2.42}/scripts/stop_all.sh +0 -0
  438. {vibego-0.2.35 → vibego-0.2.42}/scripts/stop_bot.sh +0 -0
  439. {vibego-0.2.35 → vibego-0.2.42}/scripts/test_deps_check.sh +0 -0
  440. {vibego-0.2.35 → vibego-0.2.42}/setup.cfg +0 -0
  441. {vibego-0.2.35 → vibego-0.2.42}/tasks/__init__.py +0 -0
  442. {vibego-0.2.35 → vibego-0.2.42}/tasks/commands.py +0 -0
  443. {vibego-0.2.35 → vibego-0.2.42}/tasks/constants.py +0 -0
  444. {vibego-0.2.35 → vibego-0.2.42}/tasks/fsm.py +0 -0
  445. {vibego-0.2.35 → vibego-0.2.42}/tasks/models.py +0 -0
  446. {vibego-0.2.35 → vibego-0.2.42}/tasks/service.py +0 -0
  447. {vibego-0.2.35 → vibego-0.2.42}/tests/test_auto_compact.py +0 -0
  448. {vibego-0.2.35 → vibego-0.2.42}/tests/test_chat_menu_buttons.py +0 -0
  449. {vibego-0.2.35 → vibego-0.2.42}/tests/test_claudecode_jsonl.py +0 -0
  450. {vibego-0.2.35 → vibego-0.2.42}/tests/test_master_project_management.py +0 -0
  451. {vibego-0.2.35 → vibego-0.2.42}/tests/test_master_restart.py +0 -0
  452. {vibego-0.2.35 → vibego-0.2.42}/tests/test_numbered_reply_inputs.py +0 -0
  453. {vibego-0.2.35 → vibego-0.2.42}/tests/test_plan_progress.py +0 -0
  454. {vibego-0.2.35 → vibego-0.2.42}/tests/test_task_create_flow.py +0 -0
  455. {vibego-0.2.35 → vibego-0.2.42}/tests/test_task_detail_back.py +0 -0
  456. {vibego-0.2.35 → vibego-0.2.42}/tests/test_task_list_entry.py +0 -0
  457. {vibego-0.2.35 → vibego-0.2.42}/tests/test_version_display.py +0 -0
  458. {vibego-0.2.35 → vibego-0.2.42}/vibego.egg-info/dependency_links.txt +0 -0
  459. {vibego-0.2.35 → vibego-0.2.42}/vibego.egg-info/entry_points.txt +0 -0
  460. {vibego-0.2.35 → vibego-0.2.42}/vibego.egg-info/requires.txt +0 -0
  461. {vibego-0.2.35 → vibego-0.2.42}/vibego_cli/__main__.py +0 -0
  462. {vibego-0.2.35 → vibego-0.2.42}/vibego_cli/config.py +0 -0
  463. {vibego-0.2.35 → vibego-0.2.42}/vibego_cli/data/worker_requirements.txt +0 -0
  464. {vibego-0.2.35 → vibego-0.2.42}/vibego_cli/deps.py +0 -0
  465. {vibego-0.2.35 → vibego-0.2.42}/vibego_cli/main.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibego
3
- Version: 0.2.35
3
+ Version: 0.2.42
4
4
  Summary: vibego CLI:用于初始化与管理 Telegram Master Bot 的工具
5
5
  Author: Hypha
6
6
  License-Expression: LicenseRef-Proprietary
@@ -69,8 +69,6 @@ from tasks.fsm import (
69
69
  TaskNoteStates,
70
70
  TaskPushStates,
71
71
  )
72
- from telegram_markdown import render_markdown_to_telegram
73
-
74
72
  # --- 简单 .env 加载 ---
75
73
  def load_env(p: str = ".env"):
76
74
  """从指定路径加载 dotenv 格式的键值对到进程环境变量。"""
@@ -128,7 +126,7 @@ TEST_PHASE_PROMPT = f"进入测试阶段{AGENTS_PHASE_SUFFIX}"
128
126
  # 报告缺陷时的专用前缀,插入在统一提示语之前
129
127
  BUG_REPORT_PREFIX = "报告一个缺陷,详见底部最新的缺陷描述。"
130
128
 
131
- _parse_mode_env = (os.environ.get("TELEGRAM_PARSE_MODE") or "MarkdownV2").strip()
129
+ _parse_mode_env = (os.environ.get("TELEGRAM_PARSE_MODE") or "Markdown").strip()
132
130
  _parse_mode_key = _parse_mode_env.replace("-", "").replace("_", "").lower()
133
131
  MODEL_OUTPUT_PARSE_MODE: Optional[ParseMode]
134
132
  if _parse_mode_key in _PARSE_MODE_CANDIDATES:
@@ -136,7 +134,12 @@ if _parse_mode_key in _PARSE_MODE_CANDIDATES:
136
134
  if MODEL_OUTPUT_PARSE_MODE is None:
137
135
  worker_log.info("模型输出将按纯文本发送")
138
136
  else:
139
- worker_log.info("模型输出 parse_mode:%s", MODEL_OUTPUT_PARSE_MODE.value)
137
+ mode_value = (
138
+ MODEL_OUTPUT_PARSE_MODE.value
139
+ if isinstance(MODEL_OUTPUT_PARSE_MODE, ParseMode)
140
+ else str(MODEL_OUTPUT_PARSE_MODE)
141
+ )
142
+ worker_log.info("模型输出 parse_mode:%s", mode_value)
140
143
  else:
141
144
  MODEL_OUTPUT_PARSE_MODE = ParseMode.MARKDOWN_V2
142
145
  worker_log.warning(
@@ -482,7 +485,6 @@ _ESCAPED_CODE_BLOCK_PATTERN = re.compile(
482
485
  re.DOTALL
483
486
  )
484
487
 
485
-
486
488
  def _is_already_escaped(text: str) -> bool:
487
489
  """检测文本是否已经包含 MarkdownV2 转义字符。
488
490
 
@@ -504,8 +506,8 @@ def _is_already_escaped(text: str) -> bool:
504
506
 
505
507
  # 对于短文本,放宽检测条件
506
508
  if len(text) < 20:
507
- # 短文本只要有 2 个以上转义字符就认为已被转义
508
- if len(matches) >= 2:
509
+ # 短文本出现任意转义字符即可认定为已转义,防止重复转义
510
+ if len(matches) >= 1:
509
511
  return True
510
512
  else:
511
513
  # 检查转义字符密度(降低到 3%)
@@ -534,77 +536,62 @@ def _unescape_markdown_v2(text: str) -> str:
534
536
  return re.sub(r"\\([_*\[\]()~`>#+=|{}.!:-])", r"\1", text)
535
537
 
536
538
 
537
- def _unescape_if_already_escaped(text: str) -> str:
538
- """智能检测并清理预转义文本,特别保护代码块。
539
-
540
- 改进的分段处理策略:
541
- 1. 先识别已转义的代码块(\`\`\`...\`\`\` 和 \`...\`)
542
- 2. 对这些代码块先反转义边界反引号,变成正常代码块
543
- 3. 然后用正常的 CODE_SEGMENT_RE 识别代码块
544
- 4. 只对非代码块的普通文本进行反转义
545
- 5. 代码块内容保持转义状态(因为是代码本身)
546
- 6. 重新组合所有段落
547
-
548
- Args:
549
- text: 待处理的文本
550
-
551
- Returns:
552
- 处理后的文本(如未检测到预转义,返回原文本)
553
- """
539
+ def _force_unescape_markdown(text: str) -> str:
540
+ """强制移除 MarkdownV2 转义,同时保护代码块语法不被破坏。"""
554
541
  if not text:
555
542
  return text
556
543
 
557
- # 快速检测:如果没有任何转义字符,直接返回
558
- if not _is_already_escaped(text):
559
- return text
560
-
561
- # 第一步:处理已转义的代码块,将边界反引号反转义
562
- # 这样后续可以用正常的 CODE_SEGMENT_RE 识别它们
563
544
  processed = text
564
-
565
- # 先标记所有已转义的代码块,用占位符替换
566
545
  code_blocks: list[str] = []
567
546
 
568
547
  def _preserve_code_block(match: re.Match[str]) -> str:
569
- """保存代码块并返回占位符"""
548
+ """临时替换代码块,防止内部字符被错误反转义。"""
570
549
  block = match.group(0)
571
- # 代码块边界的反引号需要反转义,但内容保持不变
572
- # 例如:\`\`\`bash\npython -m vibego\_cli\`\`\`
573
- # -> ```bash\npython -m vibego\_cli```
574
550
  if block.startswith(r"\`\`\`"):
575
- # 多行代码块
576
- unescaped_block = block.replace(r"\`", "`", 6) # 只替换前后各3个反引号
551
+ # 多行代码块保留内容,只修复边界反引号
552
+ unescaped_block = block.replace(r"\`", "`", 6)
577
553
  else:
578
- # 单行代码块
579
- unescaped_block = block.replace(r"\`", "`", 2) # 只替换前后各1个反引号
554
+ # 单行代码块同理处理首尾反引号
555
+ unescaped_block = block.replace(r"\`", "`", 2)
580
556
 
581
557
  placeholder = f"__CODE_BLOCK_{len(code_blocks)}__"
582
558
  code_blocks.append(unescaped_block)
583
559
  return placeholder
584
560
 
585
561
  processed = _ESCAPED_CODE_BLOCK_PATTERN.sub(_preserve_code_block, processed)
562
+ processed = _unescape_markdown_v2(processed)
586
563
 
587
- # 第二步:对非代码块部分进行反转义
588
- if _is_already_escaped(processed):
589
- processed = _unescape_markdown_v2(processed)
590
-
591
- # 第三步:恢复代码块
592
- for i, block in enumerate(code_blocks):
593
- placeholder = f"__CODE_BLOCK_{i}__"
594
- processed = processed.replace(placeholder, block)
564
+ for index, block in enumerate(code_blocks):
565
+ processed = processed.replace(f"__CODE_BLOCK_{index}__", block)
595
566
 
596
567
  return processed
597
568
 
598
569
 
570
+ def _unescape_if_already_escaped(text: str) -> str:
571
+ """智能检测并清理预转义文本,必要时触发强制反转义。"""
572
+ if not text:
573
+ return text
574
+ if not _is_already_escaped(text):
575
+ return text
576
+ return _force_unescape_markdown(text)
577
+
578
+
599
579
  def _prepare_model_payload(text: str) -> str:
600
580
  if _IS_MARKDOWN_V2:
601
581
  cleaned = _unescape_if_already_escaped(text)
602
- return render_markdown_to_telegram(cleaned)
582
+ return _escape_markdown_v2(cleaned)
603
583
  if _IS_MARKDOWN:
604
584
  return _normalize_legacy_markdown(text)
605
585
  return text
606
586
 
607
587
 
588
+ def _prepare_model_payload_variants(text: str) -> tuple[str, Optional[str]]:
589
+ """返回首选与备用内容,默认为单一格式。"""
590
+
591
+ payload = _prepare_model_payload(text)
592
+ return payload, None
593
+
594
+
608
595
  def _extract_bad_request_message(exc: TelegramBadRequest) -> str:
609
596
  message = getattr(exc, "message", None)
610
597
  if not message:
@@ -658,6 +645,7 @@ async def _send_with_markdown_guard(
658
645
  sender: Callable[[str], Awaitable[None]],
659
646
  *,
660
647
  raw_sender: Optional[Callable[[str], Awaitable[None]]] = None,
648
+ fallback_payload: Optional[str] = None,
661
649
  ) -> str:
662
650
  try:
663
651
  await sender(text)
@@ -666,6 +654,19 @@ async def _send_with_markdown_guard(
666
654
  if not _is_markdown_parse_error(exc):
667
655
  raise
668
656
 
657
+ if fallback_payload and fallback_payload != text:
658
+ try:
659
+ await sender(fallback_payload)
660
+ worker_log.debug(
661
+ "Markdown 优化回退为严格转义版本",
662
+ extra={"length": len(fallback_payload)},
663
+ )
664
+ return fallback_payload
665
+ except TelegramBadRequest as fallback_exc:
666
+ if not _is_markdown_parse_error(fallback_exc):
667
+ raise
668
+ exc = fallback_exc
669
+
669
670
  sanitized: Optional[str]
670
671
  if _IS_MARKDOWN_V2:
671
672
  sanitized = _escape_markdown_v2(text)
@@ -694,20 +695,12 @@ async def _send_with_markdown_guard(
694
695
  if raw_sender is None:
695
696
  raise
696
697
 
697
- # Markdown 彻底失败时退回纯文本发送,需要先清理 MarkdownV2 转义符号
698
- fallback_payload = _unescape_if_already_escaped(text)
699
- if fallback_payload != text:
700
- worker_log.debug(
701
- "Markdown 降级为纯文本发送,已移除转义符号",
702
- extra={"original_length": len(text), "fallback_length": len(fallback_payload)},
703
- )
704
-
705
698
  worker_log.warning(
706
699
  "Markdown 解析仍失败,将以纯文本发送",
707
700
  extra={"length": len(text)},
708
701
  )
709
- await raw_sender(fallback_payload)
710
- return fallback_payload
702
+ await raw_sender(text)
703
+ return text
711
704
 
712
705
 
713
706
  async def _notify_send_failure_message(chat_id: int) -> None:
@@ -762,7 +755,11 @@ async def reply_large_text(
762
755
  """
763
756
  bot = current_bot()
764
757
  parse_mode_value = parse_mode if parse_mode is not None else _parse_mode_value()
765
- prepared = text if preformatted else _prepare_model_payload(text)
758
+ if preformatted:
759
+ prepared = text
760
+ fallback_payload = None
761
+ else:
762
+ prepared, fallback_payload = _prepare_model_payload_variants(text)
766
763
 
767
764
  async def _send_formatted_message(payload: str) -> None:
768
765
  await bot.send_message(
@@ -779,6 +776,7 @@ async def reply_large_text(
779
776
  prepared,
780
777
  _send_formatted_message,
781
778
  raw_sender=_send_raw_message,
779
+ fallback_payload=fallback_payload,
782
780
  )
783
781
 
784
782
  worker_log.info(
@@ -797,10 +795,12 @@ async def reply_large_text(
797
795
  f"内容较长,已生成附件 `{attachment_name}`,请下载查看全文。"
798
796
  )
799
797
 
798
+ summary_prepared, summary_fallback = _prepare_model_payload_variants(summary_text)
800
799
  delivered_summary = await _send_with_markdown_guard(
801
- summary_text,
800
+ summary_prepared,
802
801
  _send_formatted_message,
803
802
  raw_sender=_send_raw_message,
803
+ fallback_payload=summary_fallback,
804
804
  )
805
805
 
806
806
  document = BufferedInputFile(text.encode("utf-8"), filename=attachment_name)
@@ -1514,7 +1514,7 @@ async def _broadcast_worker_keyboard(bot: Bot) -> None:
1514
1514
  continue
1515
1515
 
1516
1516
  parse_mode = _parse_mode_value()
1517
- prepared = _prepare_model_payload(text)
1517
+ prepared, fallback_payload = _prepare_model_payload_variants(text)
1518
1518
 
1519
1519
  async def _send_formatted(payload: str) -> None:
1520
1520
  await bot.send_message(
@@ -1537,6 +1537,7 @@ async def _broadcast_worker_keyboard(bot: Bot) -> None:
1537
1537
  prepared,
1538
1538
  _send_formatted,
1539
1539
  raw_sender=_send_raw,
1540
+ fallback_payload=fallback_payload,
1540
1541
  )
1541
1542
  except TelegramForbiddenError as exc:
1542
1543
  worker_log.warning("推送任务列表被拒绝:%s", exc, extra={**_session_extra(), "chat": chat_id})
@@ -2620,7 +2621,7 @@ def _build_status_buttons(task_id: str, current_status: str) -> list[list[Inline
2620
2621
  for status in STATUS_DISPLAY_ORDER:
2621
2622
  text = _format_status(status)
2622
2623
  if status == current_status:
2623
- text = f"👉 {text} (当前)"
2624
+ text = f"{text} (当前)"
2624
2625
  row.append(
2625
2626
  InlineKeyboardButton(
2626
2627
  text=text,
@@ -2794,13 +2795,32 @@ async def _answer_with_markdown(
2794
2795
  *,
2795
2796
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | None = None,
2796
2797
  ) -> Optional[Message]:
2797
- prepared = _prepare_model_payload(text)
2798
- try:
2799
- sent = await message.answer(
2800
- prepared,
2798
+ prepared, fallback_payload = _prepare_model_payload_variants(text)
2799
+ sent_message: Optional[Message] = None
2800
+
2801
+ async def _send(payload: str) -> None:
2802
+ nonlocal sent_message
2803
+ sent_message = await message.answer(
2804
+ payload,
2801
2805
  parse_mode=_parse_mode_value(),
2802
2806
  reply_markup=reply_markup,
2803
2807
  )
2808
+
2809
+ async def _send_raw(payload: str) -> None:
2810
+ nonlocal sent_message
2811
+ sent_message = await message.answer(
2812
+ payload,
2813
+ parse_mode=None,
2814
+ reply_markup=reply_markup,
2815
+ )
2816
+
2817
+ try:
2818
+ await _send_with_markdown_guard(
2819
+ prepared,
2820
+ _send,
2821
+ raw_sender=_send_raw,
2822
+ fallback_payload=fallback_payload,
2823
+ )
2804
2824
  except TelegramBadRequest as exc:
2805
2825
  worker_log.warning(
2806
2826
  "发送消息失败:%s",
@@ -2808,7 +2828,7 @@ async def _answer_with_markdown(
2808
2828
  extra={"chat": getattr(message.chat, "id", None)},
2809
2829
  )
2810
2830
  return None
2811
- return sent
2831
+ return sent_message
2812
2832
 
2813
2833
 
2814
2834
  async def _edit_message_with_markdown(
@@ -2817,11 +2837,27 @@ async def _edit_message_with_markdown(
2817
2837
  *,
2818
2838
  reply_markup: InlineKeyboardMarkup | None = None,
2819
2839
  ) -> None:
2820
- prepared = _prepare_model_payload(text)
2821
- await callback.message.edit_text(
2840
+ prepared, fallback_payload = _prepare_model_payload_variants(text)
2841
+
2842
+ async def _send(payload: str) -> None:
2843
+ await callback.message.edit_text(
2844
+ payload,
2845
+ parse_mode=_parse_mode_value(),
2846
+ reply_markup=reply_markup,
2847
+ )
2848
+
2849
+ async def _send_raw(payload: str) -> None:
2850
+ await callback.message.edit_text(
2851
+ payload,
2852
+ parse_mode=None,
2853
+ reply_markup=reply_markup,
2854
+ )
2855
+
2856
+ await _send_with_markdown_guard(
2822
2857
  prepared,
2823
- parse_mode=_parse_mode_value(),
2824
- reply_markup=reply_markup,
2858
+ _send,
2859
+ raw_sender=_send_raw,
2860
+ fallback_payload=fallback_payload,
2825
2861
  )
2826
2862
 
2827
2863
 
@@ -2833,13 +2869,29 @@ async def _try_edit_message(
2833
2869
  ) -> bool:
2834
2870
  if message is None:
2835
2871
  return False
2836
- prepared = _prepare_model_payload(text)
2837
- try:
2872
+ prepared, fallback_payload = _prepare_model_payload_variants(text)
2873
+
2874
+ async def _send(payload: str) -> None:
2838
2875
  await message.edit_text(
2839
- prepared,
2876
+ payload,
2840
2877
  parse_mode=_parse_mode_value(),
2841
2878
  reply_markup=reply_markup,
2842
2879
  )
2880
+
2881
+ async def _send_raw(payload: str) -> None:
2882
+ await message.edit_text(
2883
+ payload,
2884
+ parse_mode=None,
2885
+ reply_markup=reply_markup,
2886
+ )
2887
+
2888
+ try:
2889
+ await _send_with_markdown_guard(
2890
+ prepared,
2891
+ _send,
2892
+ raw_sender=_send_raw,
2893
+ fallback_payload=fallback_payload,
2894
+ )
2843
2895
  return True
2844
2896
  except TelegramBadRequest as exc:
2845
2897
  worker_log.info(
@@ -4197,6 +4249,7 @@ async def _deliver_pending_messages(
4197
4249
  "chat": chat_id,
4198
4250
  },
4199
4251
  )
4252
+ return False
4200
4253
  else:
4201
4254
  worker_log.info(
4202
4255
  "模型输出已发送且计划完成",
@@ -4523,7 +4576,13 @@ async def _interrupt_long_poll(chat_id: int) -> None:
4523
4576
  线程安全:使用 asyncio.Lock 保护状态访问。
4524
4577
  """
4525
4578
  if CHAT_LONG_POLL_LOCK is None:
4526
- # 锁未初始化(测试环境或启动早期)
4579
+ state = CHAT_LONG_POLL_STATE.get(chat_id)
4580
+ if state is not None:
4581
+ state["interrupted"] = True
4582
+ worker_log.info(
4583
+ "标记延迟轮询为待中断",
4584
+ extra={"chat": chat_id},
4585
+ )
4527
4586
  return
4528
4587
 
4529
4588
  async with CHAT_LONG_POLL_LOCK:
@@ -4616,6 +4675,13 @@ async def _watch_and_notify(chat_id: int, session_path: Path,
4616
4675
  "max_rounds": long_poll_max_rounds,
4617
4676
  "interrupted": False,
4618
4677
  }
4678
+ else:
4679
+ CHAT_LONG_POLL_STATE[chat_id] = {
4680
+ "active": True,
4681
+ "round": 0,
4682
+ "max_rounds": long_poll_max_rounds,
4683
+ "interrupted": False,
4684
+ }
4619
4685
  worker_log.info(
4620
4686
  "首次发送成功,启动延迟轮询模式",
4621
4687
  extra={
@@ -4637,6 +4703,10 @@ async def _watch_and_notify(chat_id: int, session_path: Path,
4637
4703
  state = CHAT_LONG_POLL_STATE.get(chat_id)
4638
4704
  if state is not None:
4639
4705
  state["round"] = 0
4706
+ else:
4707
+ state = CHAT_LONG_POLL_STATE.get(chat_id)
4708
+ if state is not None:
4709
+ state["round"] = 0
4640
4710
  worker_log.info(
4641
4711
  "延迟轮询中收到新消息,重置计数",
4642
4712
  extra={
@@ -4652,6 +4722,10 @@ async def _watch_and_notify(chat_id: int, session_path: Path,
4652
4722
  state = CHAT_LONG_POLL_STATE.get(chat_id)
4653
4723
  if state is not None:
4654
4724
  state["round"] = long_poll_rounds
4725
+ else:
4726
+ state = CHAT_LONG_POLL_STATE.get(chat_id)
4727
+ if state is not None:
4728
+ state["round"] = long_poll_rounds
4655
4729
 
4656
4730
  if long_poll_rounds >= long_poll_max_rounds:
4657
4731
  worker_log.info(
@@ -4688,6 +4762,13 @@ async def _watch_and_notify(chat_id: int, session_path: Path,
4688
4762
  "监听任务退出,已清理延迟轮询状态",
4689
4763
  extra={"chat": chat_id},
4690
4764
  )
4765
+ else:
4766
+ if chat_id in CHAT_LONG_POLL_STATE:
4767
+ CHAT_LONG_POLL_STATE.pop(chat_id, None)
4768
+ worker_log.debug(
4769
+ "监听任务退出,已清理延迟轮询状态",
4770
+ extra={"chat": chat_id},
4771
+ )
4691
4772
 
4692
4773
 
4693
4774
  def _read_pointer_path(pointer: Path) -> Optional[Path]:
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "vibego"
7
- version = "0.2.35"
7
+ version = "0.2.42"
8
8
  description = "vibego CLI:用于初始化与管理 Telegram Master Bot 的工具"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -35,14 +35,14 @@ include-package-data = true
35
35
  py-modules = ["bot", "master", "logging_setup", "project_repository"]
36
36
 
37
37
  [tool.setuptools.packages.find]
38
- include = ["vibego_cli", "tasks", "scripts", "telegram_markdown"]
38
+ include = ["vibego_cli", "tasks", "scripts"]
39
39
 
40
40
  [tool.setuptools.package-data]
41
41
  "vibego_cli" = ["data/*.txt"]
42
42
  "scripts" = ["*.sh", "models/*.sh"]
43
43
 
44
44
  [tool.bumpversion]
45
- current_version = "0.2.35"
45
+ current_version = "0.2.42"
46
46
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
47
47
  serialize = ["{major}.{minor}.{patch}"]
48
48
  search = "{current_version}"
@@ -50,11 +50,13 @@ def reset_global_state():
50
50
  bot.SESSION_OFFSETS.clear()
51
51
  bot.CHAT_DELIVERED_HASHES.clear()
52
52
  bot.CHAT_DELIVERED_OFFSETS.clear()
53
+ bot.CHAT_LONG_POLL_LOCK = None
53
54
  yield
54
55
  bot.CHAT_LONG_POLL_STATE.clear()
55
56
  bot.SESSION_OFFSETS.clear()
56
57
  bot.CHAT_DELIVERED_HASHES.clear()
57
58
  bot.CHAT_DELIVERED_OFFSETS.clear()
59
+ bot.CHAT_LONG_POLL_LOCK = None
58
60
 
59
61
 
60
62
  # ============================================================================
@@ -72,7 +74,7 @@ def test_interrupt_long_poll_sets_flag():
72
74
  "interrupted": False,
73
75
  }
74
76
 
75
- bot._interrupt_long_poll(chat_id)
77
+ asyncio.run(bot._interrupt_long_poll(chat_id))
76
78
 
77
79
  assert bot.CHAT_LONG_POLL_STATE[chat_id]["interrupted"] is True
78
80
 
@@ -84,7 +86,7 @@ def test_interrupt_long_poll_no_state():
84
86
  bot.CHAT_LONG_POLL_STATE.pop(chat_id, None)
85
87
 
86
88
  # 不应抛出异常
87
- bot._interrupt_long_poll(chat_id)
89
+ asyncio.run(bot._interrupt_long_poll(chat_id))
88
90
 
89
91
 
90
92
  # ============================================================================
@@ -126,7 +128,7 @@ async def test_watch_and_notify_enters_long_poll_after_first_delivery(mock_sessi
126
128
  chat_id = 12345
127
129
  delivery_count = 0
128
130
 
129
- async def mock_deliver(cid, path):
131
+ async def mock_deliver(cid, path, **kwargs):
130
132
  nonlocal delivery_count
131
133
  delivery_count += 1
132
134
  # 第一次返回 True(首次发送成功)
@@ -151,10 +153,10 @@ async def test_watch_and_notify_enters_long_poll_after_first_delivery(mock_sessi
151
153
  assert chat_id in bot.CHAT_LONG_POLL_STATE
152
154
  assert bot.CHAT_LONG_POLL_STATE[chat_id]["active"] is True
153
155
  assert bot.CHAT_LONG_POLL_STATE[chat_id]["round"] == 0
154
- assert bot.CHAT_LONG_POLL_STATE[chat_id]["max_rounds"] == 10
156
+ assert bot.CHAT_LONG_POLL_STATE[chat_id]["max_rounds"] == 600
155
157
 
156
158
  # 中断任务(避免等待 3 分钟)
157
- bot._interrupt_long_poll(chat_id)
159
+ await bot._interrupt_long_poll(chat_id)
158
160
  await asyncio.sleep(0.1)
159
161
 
160
162
  # 取消任务
@@ -173,7 +175,7 @@ async def test_watch_and_notify_long_poll_increments_round(mock_session_path):
173
175
  chat_id = 12345
174
176
  delivery_count = 0
175
177
 
176
- async def mock_deliver(cid, path):
178
+ async def mock_deliver(cid, path, **kwargs):
177
179
  nonlocal delivery_count
178
180
  delivery_count += 1
179
181
  # 第一次返回 True,之后返回 False
@@ -204,7 +206,7 @@ async def test_watch_and_notify_long_poll_increments_round(mock_session_path):
204
206
  await asyncio.sleep(0.3)
205
207
 
206
208
  # 中断并清理
207
- bot._interrupt_long_poll(chat_id)
209
+ await bot._interrupt_long_poll(chat_id)
208
210
  await asyncio.sleep(0.1)
209
211
  task.cancel()
210
212
  try:
@@ -221,7 +223,7 @@ async def test_watch_and_notify_interrupted_by_new_message(mock_session_path):
221
223
  chat_id = 12345
222
224
  delivery_count = 0
223
225
 
224
- async def mock_deliver(cid, path):
226
+ async def mock_deliver(cid, path, **kwargs):
225
227
  nonlocal delivery_count
226
228
  delivery_count += 1
227
229
  return delivery_count == 1 # 只第一次返回 True
@@ -241,7 +243,7 @@ async def test_watch_and_notify_interrupted_by_new_message(mock_session_path):
241
243
  assert chat_id in bot.CHAT_LONG_POLL_STATE
242
244
 
243
245
  # 模拟新消息到达,中断轮询
244
- bot._interrupt_long_poll(chat_id)
246
+ await bot._interrupt_long_poll(chat_id)
245
247
 
246
248
  # 等待任务检测到中断标志并退出
247
249
  await asyncio.sleep(0.2)
@@ -267,7 +269,7 @@ async def test_watch_and_notify_long_poll_resets_on_new_delivery(mock_session_pa
267
269
  delivery_sequence = [True, False, False, True, False] # 第 1 和第 4 次有消息
268
270
  delivery_index = 0
269
271
 
270
- async def mock_deliver(cid, path):
272
+ async def mock_deliver(cid, path, **kwargs):
271
273
  nonlocal delivery_index
272
274
  result = delivery_sequence[delivery_index] if delivery_index < len(delivery_sequence) else False
273
275
  delivery_index += 1
@@ -291,7 +293,7 @@ async def test_watch_and_notify_long_poll_resets_on_new_delivery(mock_session_pa
291
293
  await asyncio.sleep(0.25)
292
294
 
293
295
  # 中断并清理
294
- bot._interrupt_long_poll(chat_id)
296
+ await bot._interrupt_long_poll(chat_id)
295
297
  await asyncio.sleep(0.1)
296
298
  task.cancel()
297
299
  try:
@@ -316,11 +318,11 @@ def test_interrupt_long_poll_idempotent():
316
318
  }
317
319
 
318
320
  # 第一次调用
319
- bot._interrupt_long_poll(chat_id)
321
+ asyncio.run(bot._interrupt_long_poll(chat_id))
320
322
  assert bot.CHAT_LONG_POLL_STATE[chat_id]["interrupted"] is True
321
323
 
322
324
  # 第二次调用(应该仍然是 True,不报错)
323
- bot._interrupt_long_poll(chat_id)
325
+ asyncio.run(bot._interrupt_long_poll(chat_id))
324
326
  assert bot.CHAT_LONG_POLL_STATE[chat_id]["interrupted"] is True
325
327
 
326
328
 
@@ -335,7 +337,7 @@ async def test_watch_and_notify_max_rounds_limit(mock_session_path):
335
337
  chat_id = 12345
336
338
 
337
339
  # 修改最大轮询次数为 2(便于测试)
338
- async def mock_deliver(cid, path):
340
+ async def mock_deliver(cid, path, **kwargs):
339
341
  # 只在第一次返回 True,进入延迟轮询
340
342
  # 后续返回 False,让轮询计数递增
341
343
  if not hasattr(mock_deliver, "called"):
@@ -362,7 +364,7 @@ async def test_watch_and_notify_does_not_block_event_loop(mock_session_path):
362
364
  """
363
365
  chat_id = 12345
364
366
 
365
- async def mock_deliver(cid, path):
367
+ async def mock_deliver(cid, path, **kwargs):
366
368
  return False
367
369
 
368
370
  with patch.object(bot, "_deliver_pending_messages", side_effect=mock_deliver):
@@ -397,3 +399,4 @@ async def test_watch_and_notify_does_not_block_event_loop(mock_session_path):
397
399
  await task
398
400
  except asyncio.CancelledError:
399
401
  pass
402
+ import asyncio