vibego 0.2.38__tar.gz → 0.2.40__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 (464) hide show
  1. {vibego-0.2.38 → vibego-0.2.40}/PKG-INFO +1 -1
  2. {vibego-0.2.38 → vibego-0.2.40}/bot.py +45 -33
  3. {vibego-0.2.38 → vibego-0.2.40}/pyproject.toml +3 -3
  4. {vibego-0.2.38 → vibego-0.2.40}/tests/test_long_poll_mechanism.py +18 -15
  5. {vibego-0.2.38 → vibego-0.2.40}/tests/test_markdown_guard.py +18 -19
  6. {vibego-0.2.38 → vibego-0.2.40}/tests/test_task_description.py +7 -1
  7. vibego-0.2.40/tests/test_telegram_markdown_renderer.py +44 -0
  8. {vibego-0.2.38 → vibego-0.2.40}/tests/test_unescape_markdown.py +2 -2
  9. {vibego-0.2.38 → vibego-0.2.40}/vibego.egg-info/PKG-INFO +1 -1
  10. {vibego-0.2.38 → vibego-0.2.40}/vibego.egg-info/SOURCES.txt +0 -1
  11. {vibego-0.2.38 → vibego-0.2.40}/vibego.egg-info/top_level.txt +0 -1
  12. {vibego-0.2.38 → vibego-0.2.40}/vibego_cli/__init__.py +1 -1
  13. vibego-0.2.38/telegram_markdown/__init__.py +0 -269
  14. vibego-0.2.38/tests/test_telegram_markdown_renderer.py +0 -96
  15. {vibego-0.2.38 → vibego-0.2.40}/MANIFEST.in +0 -0
  16. {vibego-0.2.38 → vibego-0.2.40}/README.md +0 -0
  17. {vibego-0.2.38 → vibego-0.2.40}/config/projects.json.example +0 -0
  18. {vibego-0.2.38 → vibego-0.2.40}/logging_setup.py +0 -0
  19. {vibego-0.2.38 → vibego-0.2.40}/master.py +0 -0
  20. {vibego-0.2.38 → vibego-0.2.40}/project_repository.py +0 -0
  21. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/__init__.py +0 -0
  22. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/__main__.py +0 -0
  23. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/__pip-runner__.py +0 -0
  24. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/__init__.py +0 -0
  25. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/build_env.py +0 -0
  26. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cache.py +0 -0
  27. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/__init__.py +0 -0
  28. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/autocompletion.py +0 -0
  29. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/base_command.py +0 -0
  30. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/cmdoptions.py +0 -0
  31. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/command_context.py +0 -0
  32. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/index_command.py +0 -0
  33. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/main.py +0 -0
  34. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/main_parser.py +0 -0
  35. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/parser.py +0 -0
  36. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/progress_bars.py +0 -0
  37. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/req_command.py +0 -0
  38. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/spinners.py +0 -0
  39. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/status_codes.py +0 -0
  40. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/__init__.py +0 -0
  41. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/cache.py +0 -0
  42. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/check.py +0 -0
  43. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/completion.py +0 -0
  44. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/configuration.py +0 -0
  45. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/debug.py +0 -0
  46. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/download.py +0 -0
  47. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/freeze.py +0 -0
  48. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/hash.py +0 -0
  49. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/help.py +0 -0
  50. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/index.py +0 -0
  51. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/inspect.py +0 -0
  52. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/install.py +0 -0
  53. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/list.py +0 -0
  54. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/lock.py +0 -0
  55. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/search.py +0 -0
  56. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/show.py +0 -0
  57. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/uninstall.py +0 -0
  58. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/wheel.py +0 -0
  59. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/configuration.py +0 -0
  60. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/__init__.py +0 -0
  61. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/base.py +0 -0
  62. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/installed.py +0 -0
  63. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/sdist.py +0 -0
  64. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/wheel.py +0 -0
  65. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/exceptions.py +0 -0
  66. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/__init__.py +0 -0
  67. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/collector.py +0 -0
  68. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/package_finder.py +0 -0
  69. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/sources.py +0 -0
  70. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/__init__.py +0 -0
  71. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/_distutils.py +0 -0
  72. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/_sysconfig.py +0 -0
  73. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/base.py +0 -0
  74. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/main.py +0 -0
  75. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/__init__.py +0 -0
  76. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/_json.py +0 -0
  77. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/base.py +0 -0
  78. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/__init__.py +0 -0
  79. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_compat.py +0 -0
  80. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_dists.py +0 -0
  81. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_envs.py +0 -0
  82. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/pkg_resources.py +0 -0
  83. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/__init__.py +0 -0
  84. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/candidate.py +0 -0
  85. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/direct_url.py +0 -0
  86. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/format_control.py +0 -0
  87. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/index.py +0 -0
  88. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/installation_report.py +0 -0
  89. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/link.py +0 -0
  90. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/pylock.py +0 -0
  91. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/scheme.py +0 -0
  92. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/search_scope.py +0 -0
  93. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/selection_prefs.py +0 -0
  94. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/target_python.py +0 -0
  95. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/wheel.py +0 -0
  96. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/__init__.py +0 -0
  97. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/auth.py +0 -0
  98. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/cache.py +0 -0
  99. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/download.py +0 -0
  100. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/lazy_wheel.py +0 -0
  101. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/session.py +0 -0
  102. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/utils.py +0 -0
  103. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/xmlrpc.py +0 -0
  104. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/__init__.py +0 -0
  105. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  106. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/build_tracker.py +0 -0
  107. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata.py +0 -0
  108. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata_editable.py +0 -0
  109. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata_legacy.py +0 -0
  110. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel.py +0 -0
  111. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel_editable.py +0 -0
  112. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel_legacy.py +0 -0
  113. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/check.py +0 -0
  114. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/freeze.py +0 -0
  115. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/__init__.py +0 -0
  116. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/editable_legacy.py +0 -0
  117. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/wheel.py +0 -0
  118. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/prepare.py +0 -0
  119. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/pyproject.py +0 -0
  120. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/__init__.py +0 -0
  121. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/constructors.py +0 -0
  122. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_dependency_group.py +0 -0
  123. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_file.py +0 -0
  124. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_install.py +0 -0
  125. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_set.py +0 -0
  126. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_uninstall.py +0 -0
  127. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/__init__.py +0 -0
  128. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/base.py +0 -0
  129. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  130. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/legacy/resolver.py +0 -0
  131. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  132. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/base.py +0 -0
  133. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -0
  134. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/factory.py +0 -0
  135. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +0 -0
  136. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/provider.py +0 -0
  137. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/reporter.py +0 -0
  138. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/requirements.py +0 -0
  139. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/resolver.py +0 -0
  140. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/self_outdated_check.py +0 -0
  141. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/__init__.py +0 -0
  142. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/_jaraco_text.py +0 -0
  143. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/_log.py +0 -0
  144. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/appdirs.py +0 -0
  145. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/compat.py +0 -0
  146. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/compatibility_tags.py +0 -0
  147. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/datetime.py +0 -0
  148. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/deprecation.py +0 -0
  149. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/direct_url_helpers.py +0 -0
  150. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/egg_link.py +0 -0
  151. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/entrypoints.py +0 -0
  152. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/filesystem.py +0 -0
  153. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/filetypes.py +0 -0
  154. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/glibc.py +0 -0
  155. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/hashes.py +0 -0
  156. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/logging.py +0 -0
  157. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/misc.py +0 -0
  158. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/packaging.py +0 -0
  159. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/retry.py +0 -0
  160. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/setuptools_build.py +0 -0
  161. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/subprocess.py +0 -0
  162. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/temp_dir.py +0 -0
  163. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/unpacking.py +0 -0
  164. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/urls.py +0 -0
  165. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/virtualenv.py +0 -0
  166. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/wheel.py +0 -0
  167. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/__init__.py +0 -0
  168. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/bazaar.py +0 -0
  169. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/git.py +0 -0
  170. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/mercurial.py +0 -0
  171. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/subversion.py +0 -0
  172. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/versioncontrol.py +0 -0
  173. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/wheel_builder.py +0 -0
  174. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/__init__.py +0 -0
  175. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__init__.py +0 -0
  176. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/_cmd.py +0 -0
  177. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/adapter.py +0 -0
  178. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/cache.py +0 -0
  179. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +0 -0
  180. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +0 -0
  181. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +0 -0
  182. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/controller.py +0 -0
  183. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/filewrapper.py +0 -0
  184. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/heuristics.py +0 -0
  185. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/serialize.py +0 -0
  186. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/wrapper.py +0 -0
  187. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/__init__.py +0 -0
  188. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/__main__.py +0 -0
  189. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/core.py +0 -0
  190. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__init__.py +0 -0
  191. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__main__.py +0 -0
  192. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_implementation.py +0 -0
  193. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_lint_dependency_groups.py +0 -0
  194. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_pip_wrapper.py +0 -0
  195. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_toml_compat.py +0 -0
  196. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/__init__.py +0 -0
  197. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/compat.py +0 -0
  198. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/resources.py +0 -0
  199. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/scripts.py +0 -0
  200. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/util.py +0 -0
  201. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/__init__.py +0 -0
  202. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/__main__.py +0 -0
  203. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/distro.py +0 -0
  204. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/__init__.py +0 -0
  205. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/codec.py +0 -0
  206. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/compat.py +0 -0
  207. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/core.py +0 -0
  208. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/idnadata.py +0 -0
  209. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/intranges.py +0 -0
  210. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/package_data.py +0 -0
  211. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/uts46data.py +0 -0
  212. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/__init__.py +0 -0
  213. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/exceptions.py +0 -0
  214. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/ext.py +0 -0
  215. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/fallback.py +0 -0
  216. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/__init__.py +0 -0
  217. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_elffile.py +0 -0
  218. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_manylinux.py +0 -0
  219. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_musllinux.py +0 -0
  220. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_parser.py +0 -0
  221. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_structures.py +0 -0
  222. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_tokenizer.py +0 -0
  223. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/__init__.py +0 -0
  224. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/_spdx.py +0 -0
  225. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/markers.py +0 -0
  226. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/metadata.py +0 -0
  227. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/requirements.py +0 -0
  228. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/specifiers.py +0 -0
  229. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/tags.py +0 -0
  230. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/utils.py +0 -0
  231. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/version.py +0 -0
  232. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pkg_resources/__init__.py +0 -0
  233. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/__init__.py +0 -0
  234. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/__main__.py +0 -0
  235. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/android.py +0 -0
  236. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/api.py +0 -0
  237. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/macos.py +0 -0
  238. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/unix.py +0 -0
  239. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/version.py +0 -0
  240. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/windows.py +0 -0
  241. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/__init__.py +0 -0
  242. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/__main__.py +0 -0
  243. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/console.py +0 -0
  244. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/filter.py +0 -0
  245. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/filters/__init__.py +0 -0
  246. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatter.py +0 -0
  247. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/__init__.py +0 -0
  248. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/_mapping.py +0 -0
  249. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexer.py +0 -0
  250. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/__init__.py +0 -0
  251. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/_mapping.py +0 -0
  252. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/python.py +0 -0
  253. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/modeline.py +0 -0
  254. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/plugin.py +0 -0
  255. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/regexopt.py +0 -0
  256. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/scanner.py +0 -0
  257. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/sphinxext.py +0 -0
  258. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/style.py +0 -0
  259. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/styles/__init__.py +0 -0
  260. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/styles/_mapping.py +0 -0
  261. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/token.py +0 -0
  262. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/unistring.py +0 -0
  263. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/util.py +0 -0
  264. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/__init__.py +0 -0
  265. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_impl.py +0 -0
  266. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +0 -0
  267. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +0 -0
  268. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/__init__.py +0 -0
  269. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/__version__.py +0 -0
  270. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/_internal_utils.py +0 -0
  271. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/adapters.py +0 -0
  272. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/api.py +0 -0
  273. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/auth.py +0 -0
  274. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/certs.py +0 -0
  275. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/compat.py +0 -0
  276. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/cookies.py +0 -0
  277. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/exceptions.py +0 -0
  278. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/help.py +0 -0
  279. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/hooks.py +0 -0
  280. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/models.py +0 -0
  281. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/packages.py +0 -0
  282. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/sessions.py +0 -0
  283. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/status_codes.py +0 -0
  284. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/structures.py +0 -0
  285. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/utils.py +0 -0
  286. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/__init__.py +0 -0
  287. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/providers.py +0 -0
  288. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/reporters.py +0 -0
  289. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +0 -0
  290. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +0 -0
  291. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +0 -0
  292. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +0 -0
  293. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +0 -0
  294. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/structs.py +0 -0
  295. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/__init__.py +0 -0
  296. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/__main__.py +0 -0
  297. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_cell_widths.py +0 -0
  298. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_emoji_codes.py +0 -0
  299. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_emoji_replace.py +0 -0
  300. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_export_format.py +0 -0
  301. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_extension.py +0 -0
  302. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_fileno.py +0 -0
  303. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_inspect.py +0 -0
  304. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_log_render.py +0 -0
  305. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_loop.py +0 -0
  306. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_null_file.py +0 -0
  307. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_palettes.py +0 -0
  308. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_pick.py +0 -0
  309. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_ratio.py +0 -0
  310. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_spinners.py +0 -0
  311. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_stack.py +0 -0
  312. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_timer.py +0 -0
  313. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_win32_console.py +0 -0
  314. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_windows.py +0 -0
  315. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_windows_renderer.py +0 -0
  316. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_wrap.py +0 -0
  317. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/abc.py +0 -0
  318. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/align.py +0 -0
  319. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/ansi.py +0 -0
  320. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/bar.py +0 -0
  321. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/box.py +0 -0
  322. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/cells.py +0 -0
  323. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/color.py +0 -0
  324. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/color_triplet.py +0 -0
  325. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/columns.py +0 -0
  326. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/console.py +0 -0
  327. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/constrain.py +0 -0
  328. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/containers.py +0 -0
  329. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/control.py +0 -0
  330. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/default_styles.py +0 -0
  331. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/diagnose.py +0 -0
  332. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/emoji.py +0 -0
  333. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/errors.py +0 -0
  334. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/file_proxy.py +0 -0
  335. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/filesize.py +0 -0
  336. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/highlighter.py +0 -0
  337. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/json.py +0 -0
  338. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/jupyter.py +0 -0
  339. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/layout.py +0 -0
  340. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/live.py +0 -0
  341. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/live_render.py +0 -0
  342. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/logging.py +0 -0
  343. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/markup.py +0 -0
  344. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/measure.py +0 -0
  345. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/padding.py +0 -0
  346. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/pager.py +0 -0
  347. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/palette.py +0 -0
  348. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/panel.py +0 -0
  349. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/pretty.py +0 -0
  350. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/progress.py +0 -0
  351. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/progress_bar.py +0 -0
  352. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/prompt.py +0 -0
  353. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/protocol.py +0 -0
  354. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/region.py +0 -0
  355. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/repr.py +0 -0
  356. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/rule.py +0 -0
  357. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/scope.py +0 -0
  358. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/screen.py +0 -0
  359. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/segment.py +0 -0
  360. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/spinner.py +0 -0
  361. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/status.py +0 -0
  362. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/style.py +0 -0
  363. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/styled.py +0 -0
  364. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/syntax.py +0 -0
  365. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/table.py +0 -0
  366. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/terminal_theme.py +0 -0
  367. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/text.py +0 -0
  368. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/theme.py +0 -0
  369. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/themes.py +0 -0
  370. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/traceback.py +0 -0
  371. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/tree.py +0 -0
  372. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/__init__.py +0 -0
  373. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_parser.py +0 -0
  374. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_re.py +0 -0
  375. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_types.py +0 -0
  376. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli_w/__init__.py +0 -0
  377. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli_w/_writer.py +0 -0
  378. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/__init__.py +0 -0
  379. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_api.py +0 -0
  380. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_macos.py +0 -0
  381. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_openssl.py +0 -0
  382. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_ssl_constants.py +0 -0
  383. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_windows.py +0 -0
  384. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/__init__.py +0 -0
  385. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/_collections.py +0 -0
  386. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/_version.py +0 -0
  387. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/connection.py +0 -0
  388. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/connectionpool.py +0 -0
  389. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  390. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +0 -0
  391. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  392. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +0 -0
  393. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +0 -0
  394. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/appengine.py +0 -0
  395. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +0 -0
  396. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +0 -0
  397. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +0 -0
  398. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/socks.py +0 -0
  399. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/exceptions.py +0 -0
  400. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/fields.py +0 -0
  401. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/filepost.py +0 -0
  402. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
  403. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  404. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +0 -0
  405. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +0 -0
  406. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/six.py +0 -0
  407. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/poolmanager.py +0 -0
  408. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/request.py +0 -0
  409. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/response.py +0 -0
  410. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__init__.py +0 -0
  411. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/connection.py +0 -0
  412. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/proxy.py +0 -0
  413. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/queue.py +0 -0
  414. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/request.py +0 -0
  415. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/response.py +0 -0
  416. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/retry.py +0 -0
  417. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssl_.py +0 -0
  418. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +0 -0
  419. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssltransport.py +0 -0
  420. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/timeout.py +0 -0
  421. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/url.py +0 -0
  422. {vibego-0.2.38 → vibego-0.2.40}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/wait.py +0 -0
  423. {vibego-0.2.38 → vibego-0.2.40}/scripts/__init__.py +0 -0
  424. {vibego-0.2.38 → vibego-0.2.40}/scripts/bump_version.sh +0 -0
  425. {vibego-0.2.38 → vibego-0.2.40}/scripts/log_writer.py +0 -0
  426. {vibego-0.2.38 → vibego-0.2.40}/scripts/master_healthcheck.py +0 -0
  427. {vibego-0.2.38 → vibego-0.2.40}/scripts/models/claudecode.sh +0 -0
  428. {vibego-0.2.38 → vibego-0.2.40}/scripts/models/codex.sh +0 -0
  429. {vibego-0.2.38 → vibego-0.2.40}/scripts/models/common.sh +0 -0
  430. {vibego-0.2.38 → vibego-0.2.40}/scripts/models/gemini.sh +0 -0
  431. {vibego-0.2.38 → vibego-0.2.40}/scripts/publish.sh +0 -0
  432. {vibego-0.2.38 → vibego-0.2.40}/scripts/requirements.txt +0 -0
  433. {vibego-0.2.38 → vibego-0.2.40}/scripts/run_bot.sh +0 -0
  434. {vibego-0.2.38 → vibego-0.2.40}/scripts/start.sh +0 -0
  435. {vibego-0.2.38 → vibego-0.2.40}/scripts/start_tmux_codex.sh +0 -0
  436. {vibego-0.2.38 → vibego-0.2.40}/scripts/stop_all.sh +0 -0
  437. {vibego-0.2.38 → vibego-0.2.40}/scripts/stop_bot.sh +0 -0
  438. {vibego-0.2.38 → vibego-0.2.40}/scripts/test_deps_check.sh +0 -0
  439. {vibego-0.2.38 → vibego-0.2.40}/setup.cfg +0 -0
  440. {vibego-0.2.38 → vibego-0.2.40}/tasks/__init__.py +0 -0
  441. {vibego-0.2.38 → vibego-0.2.40}/tasks/commands.py +0 -0
  442. {vibego-0.2.38 → vibego-0.2.40}/tasks/constants.py +0 -0
  443. {vibego-0.2.38 → vibego-0.2.40}/tasks/fsm.py +0 -0
  444. {vibego-0.2.38 → vibego-0.2.40}/tasks/models.py +0 -0
  445. {vibego-0.2.38 → vibego-0.2.40}/tasks/service.py +0 -0
  446. {vibego-0.2.38 → vibego-0.2.40}/tests/test_auto_compact.py +0 -0
  447. {vibego-0.2.38 → vibego-0.2.40}/tests/test_chat_menu_buttons.py +0 -0
  448. {vibego-0.2.38 → vibego-0.2.40}/tests/test_claudecode_jsonl.py +0 -0
  449. {vibego-0.2.38 → vibego-0.2.40}/tests/test_master_project_management.py +0 -0
  450. {vibego-0.2.38 → vibego-0.2.40}/tests/test_master_restart.py +0 -0
  451. {vibego-0.2.38 → vibego-0.2.40}/tests/test_numbered_reply_inputs.py +0 -0
  452. {vibego-0.2.38 → vibego-0.2.40}/tests/test_plan_progress.py +0 -0
  453. {vibego-0.2.38 → vibego-0.2.40}/tests/test_task_create_flow.py +0 -0
  454. {vibego-0.2.38 → vibego-0.2.40}/tests/test_task_detail_back.py +0 -0
  455. {vibego-0.2.38 → vibego-0.2.40}/tests/test_task_list_entry.py +0 -0
  456. {vibego-0.2.38 → vibego-0.2.40}/tests/test_version_display.py +0 -0
  457. {vibego-0.2.38 → vibego-0.2.40}/vibego.egg-info/dependency_links.txt +0 -0
  458. {vibego-0.2.38 → vibego-0.2.40}/vibego.egg-info/entry_points.txt +0 -0
  459. {vibego-0.2.38 → vibego-0.2.40}/vibego.egg-info/requires.txt +0 -0
  460. {vibego-0.2.38 → vibego-0.2.40}/vibego_cli/__main__.py +0 -0
  461. {vibego-0.2.38 → vibego-0.2.40}/vibego_cli/config.py +0 -0
  462. {vibego-0.2.38 → vibego-0.2.40}/vibego_cli/data/worker_requirements.txt +0 -0
  463. {vibego-0.2.38 → vibego-0.2.40}/vibego_cli/deps.py +0 -0
  464. {vibego-0.2.38 → vibego-0.2.40}/vibego_cli/main.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibego
3
- Version: 0.2.38
3
+ Version: 0.2.40
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(
@@ -503,8 +506,8 @@ def _is_already_escaped(text: str) -> bool:
503
506
 
504
507
  # 对于短文本,放宽检测条件
505
508
  if len(text) < 20:
506
- # 短文本只要有 2 个以上转义字符就认为已被转义
507
- if len(matches) >= 2:
509
+ # 短文本出现任意转义字符即可认定为已转义,防止重复转义
510
+ if len(matches) >= 1:
508
511
  return True
509
512
  else:
510
513
  # 检查转义字符密度(降低到 3%)
@@ -576,29 +579,17 @@ def _unescape_if_already_escaped(text: str) -> str:
576
579
  def _prepare_model_payload(text: str) -> str:
577
580
  if _IS_MARKDOWN_V2:
578
581
  cleaned = _unescape_if_already_escaped(text)
579
- return render_markdown_to_telegram(cleaned)
582
+ return _escape_markdown_v2(cleaned)
580
583
  if _IS_MARKDOWN:
581
584
  return _normalize_legacy_markdown(text)
582
585
  return text
583
586
 
584
587
 
585
- def _optimize_markdown_v2_payload(payload: str) -> str:
586
- """占位函数:保留严格转义版本,确保 MarkdownV2 合规。"""
587
-
588
- return payload
589
-
590
-
591
588
  def _prepare_model_payload_variants(text: str) -> tuple[str, Optional[str]]:
592
- """返回首选与备用的 MarkdownV2 内容,首选尽量减少转义。"""
593
-
594
- strict_payload = _prepare_model_payload(text)
595
- if not _IS_MARKDOWN_V2:
596
- return strict_payload, None
589
+ """返回首选与备用内容,默认为单一格式。"""
597
590
 
598
- optimized_payload = _optimize_markdown_v2_payload(strict_payload)
599
- if optimized_payload != strict_payload:
600
- return optimized_payload, strict_payload
601
- return strict_payload, None
591
+ payload = _prepare_model_payload(text)
592
+ return payload, None
602
593
 
603
594
 
604
595
  def _extract_bad_request_message(exc: TelegramBadRequest) -> str:
@@ -704,20 +695,12 @@ async def _send_with_markdown_guard(
704
695
  if raw_sender is None:
705
696
  raise
706
697
 
707
- # Markdown 彻底失败时退回纯文本发送,需要先清理 MarkdownV2 转义符号
708
- fallback_payload = _force_unescape_markdown(text)
709
- if fallback_payload != text:
710
- worker_log.debug(
711
- "Markdown 降级为纯文本发送,已移除转义符号",
712
- extra={"original_length": len(text), "fallback_length": len(fallback_payload)},
713
- )
714
-
715
698
  worker_log.warning(
716
699
  "Markdown 解析仍失败,将以纯文本发送",
717
700
  extra={"length": len(text)},
718
701
  )
719
- await raw_sender(fallback_payload)
720
- return fallback_payload
702
+ await raw_sender(text)
703
+ return text
721
704
 
722
705
 
723
706
  async def _notify_send_failure_message(chat_id: int) -> None:
@@ -4266,6 +4249,7 @@ async def _deliver_pending_messages(
4266
4249
  "chat": chat_id,
4267
4250
  },
4268
4251
  )
4252
+ return False
4269
4253
  else:
4270
4254
  worker_log.info(
4271
4255
  "模型输出已发送且计划完成",
@@ -4592,7 +4576,13 @@ async def _interrupt_long_poll(chat_id: int) -> None:
4592
4576
  线程安全:使用 asyncio.Lock 保护状态访问。
4593
4577
  """
4594
4578
  if CHAT_LONG_POLL_LOCK is None:
4595
- # 锁未初始化(测试环境或启动早期)
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
+ )
4596
4586
  return
4597
4587
 
4598
4588
  async with CHAT_LONG_POLL_LOCK:
@@ -4685,6 +4675,13 @@ async def _watch_and_notify(chat_id: int, session_path: Path,
4685
4675
  "max_rounds": long_poll_max_rounds,
4686
4676
  "interrupted": False,
4687
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
+ }
4688
4685
  worker_log.info(
4689
4686
  "首次发送成功,启动延迟轮询模式",
4690
4687
  extra={
@@ -4706,6 +4703,10 @@ async def _watch_and_notify(chat_id: int, session_path: Path,
4706
4703
  state = CHAT_LONG_POLL_STATE.get(chat_id)
4707
4704
  if state is not None:
4708
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
4709
4710
  worker_log.info(
4710
4711
  "延迟轮询中收到新消息,重置计数",
4711
4712
  extra={
@@ -4721,6 +4722,10 @@ async def _watch_and_notify(chat_id: int, session_path: Path,
4721
4722
  state = CHAT_LONG_POLL_STATE.get(chat_id)
4722
4723
  if state is not None:
4723
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
4724
4729
 
4725
4730
  if long_poll_rounds >= long_poll_max_rounds:
4726
4731
  worker_log.info(
@@ -4757,6 +4762,13 @@ async def _watch_and_notify(chat_id: int, session_path: Path,
4757
4762
  "监听任务退出,已清理延迟轮询状态",
4758
4763
  extra={"chat": chat_id},
4759
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
+ )
4760
4772
 
4761
4773
 
4762
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.38"
7
+ version = "0.2.40"
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.38"
45
+ current_version = "0.2.40"
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
@@ -10,8 +10,8 @@ import bot
10
10
 
11
11
 
12
12
  @pytest.mark.asyncio()
13
- async def test_markdown_guard_plain_fallback_removes_escapes() -> None:
14
- """确保回退纯文本时不会残留 MarkdownV2 转义反斜杠。"""
13
+ async def test_markdown_guard_plain_fallback_preserves_original() -> None:
14
+ """确保纯文本回退时返回原始内容(含必要转义)。"""
15
15
 
16
16
  delivered: list[str] = []
17
17
 
@@ -39,31 +39,30 @@ async def test_markdown_guard_plain_fallback_removes_escapes() -> None:
39
39
  original = "测试 \\_Markdown\\_ 转义"
40
40
  result = await bot._send_with_markdown_guard(original, _failing_sender, raw_sender=_raw_sender)
41
41
 
42
- assert delivered and delivered[0] == "测试 _Markdown_ 转义"
43
- assert result == "测试 _Markdown_ 转义"
42
+ assert delivered and delivered[0] == original
43
+ assert result == original
44
44
 
45
45
 
46
46
  @pytest.mark.asyncio()
47
47
  @pytest.mark.parametrize(
48
- ("original", "expected"),
48
+ "original",
49
49
  [
50
- ("条目 A\\)", "条目 A)"),
51
- ("任务编码:/TASK\\_0022", "任务编码:/TASK_0022"),
52
- ("配置文件 config\\.json", "配置文件 config.json"),
53
- ("版本号 3\\.11\\.4", "版本号 3.11.4"),
54
- ("保留连字符 use\\-case", "保留连字符 use-case"),
55
- ("强调 \\*重要\\*", "强调 *重要*"),
56
- ("变量 \\_value\\_", "变量 _value_"),
57
- ("选项 A\\|B", "选项 A|B"),
58
- ("集合 \\{a, b\\}", "集合 {a, b}"),
59
- ("说明 test\\.", "说明 test."),
50
+ "条目 A\\)",
51
+ "任务编码:/TASK\\_0022",
52
+ "配置文件 config\\.json",
53
+ "版本号 3\\.11\\.4",
54
+ "保留连字符 use\\-case",
55
+ "强调 \\*重要\\*",
56
+ "变量 \\_value\\_",
57
+ "选项 A\\|B",
58
+ "集合 \\{a, b\\}",
59
+ "说明 test\\.",
60
60
  ],
61
61
  )
62
62
  async def test_markdown_guard_plain_fallback_force_unescape(
63
63
  original: str,
64
- expected: str,
65
64
  ) -> None:
66
- """验证强制反转义可处理只有单个转义符的场景。"""
65
+ """验证纯文本回退会直接返回原始字符串。"""
67
66
 
68
67
  delivered: list[str] = []
69
68
 
@@ -88,5 +87,5 @@ async def test_markdown_guard_plain_fallback_force_unescape(
88
87
 
89
88
  result = await bot._send_with_markdown_guard(original, _failing_sender, raw_sender=_raw_sender)
90
89
 
91
- assert delivered and delivered[0] == expected
92
- assert result == expected
90
+ assert delivered and delivered[0] == original
91
+ assert result == original
@@ -1,6 +1,7 @@
1
1
  import asyncio
2
2
  import json
3
3
  import os
4
+ import sys
4
5
  import time
5
6
  from pathlib import Path
6
7
  from types import SimpleNamespace
@@ -14,6 +15,10 @@ from aiogram.fsm.storage.base import StorageKey
14
15
  from aiogram.fsm.storage.memory import MemoryStorage
15
16
  from aiogram.types import InlineKeyboardMarkup, ReplyKeyboardMarkup
16
17
 
18
+ ROOT = Path(__file__).resolve().parents[1]
19
+ if str(ROOT) not in sys.path:
20
+ sys.path.insert(0, str(ROOT))
21
+
17
22
  os.environ.setdefault("BOT_TOKEN", "TEST_TOKEN")
18
23
 
19
24
  import bot
@@ -758,6 +763,7 @@ def test_bug_report_auto_push_success(monkeypatch, tmp_path: Path):
758
763
  reply_to,
759
764
  supplement: Optional[str],
760
765
  actor: Optional[str],
766
+ is_bug_report: bool | None = None,
761
767
  ):
762
768
  assert reply_to is message
763
769
  push_calls.append((chat_id, supplement, actor))
@@ -1095,7 +1101,7 @@ def test_task_summary_command_triggers_request(monkeypatch, tmp_path: Path):
1095
1101
  assert dispatch_calls, "应向模型推送摘要请求"
1096
1102
  prompt_text = dispatch_calls[0][1]
1097
1103
  assert prompt_text.startswith(
1098
- "进入摘要阶段...\n任务编码:/TASK\\_0200\nSUMMARY_REQUEST_ID::"
1104
+ "进入摘要阶段...\n任务编码:/TASK_0200\nSUMMARY_REQUEST_ID::"
1099
1105
  )
1100
1106
  assert message.calls, "应向用户提示处理结果"
1101
1107
  reply_text, _, _, _ = message.calls[-1]
@@ -0,0 +1,44 @@
1
+ import sys
2
+ import os
3
+ from pathlib import Path
4
+
5
+ sys.path.append(str(Path(__file__).resolve().parents[1]))
6
+
7
+ import pytest
8
+
9
+ os.environ.setdefault("BOT_TOKEN", "dummy")
10
+ os.environ.setdefault("TELEGRAM_PARSE_MODE", "Markdown")
11
+
12
+ from bot import _prepare_model_payload, _prepare_model_payload_variants # noqa: E402
13
+
14
+
15
+ @pytest.mark.parametrize(
16
+ ("source", "expected"),
17
+ [
18
+ ("**bold** text", "*bold* text"),
19
+ ("__italic__", "_italic_"),
20
+ ("`code_snippet`", "`code_snippet`"),
21
+ ("普通文本 (test)", "普通文本 (test)"),
22
+ ("raw *literal* star", "raw *literal* star"),
23
+ ("multiline\nline2", "multiline\nline2"),
24
+ ],
25
+ )
26
+ def test_prepare_model_payload_markdown(source: str, expected: str) -> None:
27
+ assert _prepare_model_payload(source) == expected
28
+
29
+
30
+ def test_prepare_model_payload_preserves_checklist() -> None:
31
+ text = "- [ ] 第一项\n- [ ] 第二项"
32
+ assert _prepare_model_payload(text) == text
33
+
34
+
35
+ def test_prepare_model_payload_handles_list_numbers() -> None:
36
+ text = "1. 选择 A\n2. 选择 B"
37
+ assert _prepare_model_payload(text) == text
38
+
39
+
40
+ def test_prepare_model_payload_variants_returns_single_payload() -> None:
41
+ text = "纯文本内容"
42
+ primary, fallback = _prepare_model_payload_variants(text)
43
+ assert primary == "纯文本内容"
44
+ assert fallback is None
@@ -30,7 +30,7 @@ def test_is_already_escaped():
30
30
  ("hello_world", False, "普通下划线"),
31
31
  ("**粗体**", False, "未转义的粗体"),
32
32
  ("短文本", False, "太短的文本"),
33
- (r"\*", False, "单个转义字符密度不够"),
33
+ (r"\*", True, "单个转义字符也应识别为已转义"),
34
34
  ]
35
35
 
36
36
  passed = 0
@@ -171,7 +171,7 @@ def test_edge_cases():
171
171
  (" ", " ", "仅空格"),
172
172
  (None, None, "None 值"), # 需要处理 None
173
173
  ("正常文本无需处理", "正常文本无需处理", "未检测到预转义"),
174
- (r"\*", r"\*", "单个转义字符(密度不够)"),
174
+ (r"\*", "*", "单个转义字符同样需要反转义"),
175
175
  (r"```\n\n```", r"```\n\n```", "空代码块"),
176
176
  (r"`单独的反引号", r"`单独的反引号", "不匹配的反引号"),
177
177
  (r"混合 **未转义** 和 \*\*已转义\*\*", r"混合 **未转义** 和 **已转义**", "混合转义状态"),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibego
3
- Version: 0.2.38
3
+ Version: 0.2.40
4
4
  Summary: vibego CLI:用于初始化与管理 Telegram Master Bot 的工具
5
5
  Author: Hypha
6
6
  License-Expression: LicenseRef-Proprietary
@@ -430,7 +430,6 @@ tasks/constants.py
430
430
  tasks/fsm.py
431
431
  tasks/models.py
432
432
  tasks/service.py
433
- telegram_markdown/__init__.py
434
433
  tests/test_auto_compact.py
435
434
  tests/test_chat_menu_buttons.py
436
435
  tests/test_claudecode_jsonl.py
@@ -4,5 +4,4 @@ master
4
4
  project_repository
5
5
  scripts
6
6
  tasks
7
- telegram_markdown
8
7
  vibego_cli
@@ -7,6 +7,6 @@ from __future__ import annotations
7
7
 
8
8
  __all__ = ["main", "__version__"]
9
9
 
10
- __version__ = "0.2.38"
10
+ __version__ = "0.2.40"
11
11
 
12
12
  from .main import main # noqa: E402