vibego 0.2.11__tar.gz → 0.2.12__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 (456) hide show
  1. {vibego-0.2.11 → vibego-0.2.12}/PKG-INFO +1 -1
  2. {vibego-0.2.11 → vibego-0.2.12}/bot.py +193 -22
  3. {vibego-0.2.11 → vibego-0.2.12}/pyproject.toml +28 -1
  4. vibego-0.2.12/scripts/bump_version.sh +152 -0
  5. {vibego-0.2.11 → vibego-0.2.12}/scripts/models/claudecode.sh +4 -0
  6. {vibego-0.2.11 → vibego-0.2.12}/scripts/run_bot.sh +3 -0
  7. {vibego-0.2.11 → vibego-0.2.12}/scripts/start_tmux_codex.sh +8 -1
  8. {vibego-0.2.11 → vibego-0.2.12}/scripts/stop_bot.sh +67 -3
  9. vibego-0.2.12/tests/test_long_poll_mechanism.py +399 -0
  10. {vibego-0.2.11 → vibego-0.2.12}/tests/test_task_description.py +202 -1
  11. {vibego-0.2.11 → vibego-0.2.12}/vibego.egg-info/PKG-INFO +1 -1
  12. {vibego-0.2.11 → vibego-0.2.12}/vibego.egg-info/SOURCES.txt +2 -0
  13. {vibego-0.2.11 → vibego-0.2.12}/vibego_cli/__init__.py +1 -1
  14. {vibego-0.2.11 → vibego-0.2.12}/MANIFEST.in +0 -0
  15. {vibego-0.2.11 → vibego-0.2.12}/README.md +0 -0
  16. {vibego-0.2.11 → vibego-0.2.12}/config/projects.json.example +0 -0
  17. {vibego-0.2.11 → vibego-0.2.12}/logging_setup.py +0 -0
  18. {vibego-0.2.11 → vibego-0.2.12}/master.py +0 -0
  19. {vibego-0.2.11 → vibego-0.2.12}/project_repository.py +0 -0
  20. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/__init__.py +0 -0
  21. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/__main__.py +0 -0
  22. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/__pip-runner__.py +0 -0
  23. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/__init__.py +0 -0
  24. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/build_env.py +0 -0
  25. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cache.py +0 -0
  26. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/__init__.py +0 -0
  27. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/autocompletion.py +0 -0
  28. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/base_command.py +0 -0
  29. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/cmdoptions.py +0 -0
  30. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/command_context.py +0 -0
  31. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/index_command.py +0 -0
  32. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/main.py +0 -0
  33. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/main_parser.py +0 -0
  34. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/parser.py +0 -0
  35. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/progress_bars.py +0 -0
  36. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/req_command.py +0 -0
  37. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/spinners.py +0 -0
  38. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/status_codes.py +0 -0
  39. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/__init__.py +0 -0
  40. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/cache.py +0 -0
  41. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/check.py +0 -0
  42. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/completion.py +0 -0
  43. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/configuration.py +0 -0
  44. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/debug.py +0 -0
  45. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/download.py +0 -0
  46. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/freeze.py +0 -0
  47. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/hash.py +0 -0
  48. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/help.py +0 -0
  49. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/index.py +0 -0
  50. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/inspect.py +0 -0
  51. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/install.py +0 -0
  52. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/list.py +0 -0
  53. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/lock.py +0 -0
  54. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/search.py +0 -0
  55. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/show.py +0 -0
  56. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/uninstall.py +0 -0
  57. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/wheel.py +0 -0
  58. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/configuration.py +0 -0
  59. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/__init__.py +0 -0
  60. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/base.py +0 -0
  61. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/installed.py +0 -0
  62. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/sdist.py +0 -0
  63. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/wheel.py +0 -0
  64. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/exceptions.py +0 -0
  65. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/__init__.py +0 -0
  66. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/collector.py +0 -0
  67. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/package_finder.py +0 -0
  68. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/sources.py +0 -0
  69. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/__init__.py +0 -0
  70. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/_distutils.py +0 -0
  71. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/_sysconfig.py +0 -0
  72. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/base.py +0 -0
  73. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/main.py +0 -0
  74. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/__init__.py +0 -0
  75. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/_json.py +0 -0
  76. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/base.py +0 -0
  77. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/__init__.py +0 -0
  78. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_compat.py +0 -0
  79. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_dists.py +0 -0
  80. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_envs.py +0 -0
  81. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/pkg_resources.py +0 -0
  82. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/__init__.py +0 -0
  83. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/candidate.py +0 -0
  84. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/direct_url.py +0 -0
  85. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/format_control.py +0 -0
  86. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/index.py +0 -0
  87. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/installation_report.py +0 -0
  88. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/link.py +0 -0
  89. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/pylock.py +0 -0
  90. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/scheme.py +0 -0
  91. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/search_scope.py +0 -0
  92. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/selection_prefs.py +0 -0
  93. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/target_python.py +0 -0
  94. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/wheel.py +0 -0
  95. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/__init__.py +0 -0
  96. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/auth.py +0 -0
  97. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/cache.py +0 -0
  98. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/download.py +0 -0
  99. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/lazy_wheel.py +0 -0
  100. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/session.py +0 -0
  101. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/utils.py +0 -0
  102. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/xmlrpc.py +0 -0
  103. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/__init__.py +0 -0
  104. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  105. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/build_tracker.py +0 -0
  106. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata.py +0 -0
  107. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata_editable.py +0 -0
  108. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata_legacy.py +0 -0
  109. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel.py +0 -0
  110. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel_editable.py +0 -0
  111. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel_legacy.py +0 -0
  112. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/check.py +0 -0
  113. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/freeze.py +0 -0
  114. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/__init__.py +0 -0
  115. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/editable_legacy.py +0 -0
  116. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/wheel.py +0 -0
  117. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/prepare.py +0 -0
  118. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/pyproject.py +0 -0
  119. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/__init__.py +0 -0
  120. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/constructors.py +0 -0
  121. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_dependency_group.py +0 -0
  122. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_file.py +0 -0
  123. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_install.py +0 -0
  124. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_set.py +0 -0
  125. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_uninstall.py +0 -0
  126. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/__init__.py +0 -0
  127. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/base.py +0 -0
  128. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  129. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/legacy/resolver.py +0 -0
  130. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  131. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/base.py +0 -0
  132. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -0
  133. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/factory.py +0 -0
  134. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +0 -0
  135. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/provider.py +0 -0
  136. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/reporter.py +0 -0
  137. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/requirements.py +0 -0
  138. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/resolver.py +0 -0
  139. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/self_outdated_check.py +0 -0
  140. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/__init__.py +0 -0
  141. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/_jaraco_text.py +0 -0
  142. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/_log.py +0 -0
  143. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/appdirs.py +0 -0
  144. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/compat.py +0 -0
  145. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/compatibility_tags.py +0 -0
  146. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/datetime.py +0 -0
  147. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/deprecation.py +0 -0
  148. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/direct_url_helpers.py +0 -0
  149. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/egg_link.py +0 -0
  150. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/entrypoints.py +0 -0
  151. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/filesystem.py +0 -0
  152. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/filetypes.py +0 -0
  153. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/glibc.py +0 -0
  154. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/hashes.py +0 -0
  155. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/logging.py +0 -0
  156. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/misc.py +0 -0
  157. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/packaging.py +0 -0
  158. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/retry.py +0 -0
  159. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/setuptools_build.py +0 -0
  160. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/subprocess.py +0 -0
  161. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/temp_dir.py +0 -0
  162. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/unpacking.py +0 -0
  163. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/urls.py +0 -0
  164. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/virtualenv.py +0 -0
  165. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/wheel.py +0 -0
  166. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/__init__.py +0 -0
  167. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/bazaar.py +0 -0
  168. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/git.py +0 -0
  169. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/mercurial.py +0 -0
  170. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/subversion.py +0 -0
  171. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/versioncontrol.py +0 -0
  172. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/wheel_builder.py +0 -0
  173. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/__init__.py +0 -0
  174. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__init__.py +0 -0
  175. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/_cmd.py +0 -0
  176. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/adapter.py +0 -0
  177. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/cache.py +0 -0
  178. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +0 -0
  179. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +0 -0
  180. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +0 -0
  181. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/controller.py +0 -0
  182. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/filewrapper.py +0 -0
  183. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/heuristics.py +0 -0
  184. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/serialize.py +0 -0
  185. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/wrapper.py +0 -0
  186. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/__init__.py +0 -0
  187. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/__main__.py +0 -0
  188. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/core.py +0 -0
  189. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__init__.py +0 -0
  190. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__main__.py +0 -0
  191. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_implementation.py +0 -0
  192. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_lint_dependency_groups.py +0 -0
  193. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_pip_wrapper.py +0 -0
  194. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_toml_compat.py +0 -0
  195. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/__init__.py +0 -0
  196. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/compat.py +0 -0
  197. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/resources.py +0 -0
  198. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/scripts.py +0 -0
  199. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/util.py +0 -0
  200. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/__init__.py +0 -0
  201. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/__main__.py +0 -0
  202. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/distro.py +0 -0
  203. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/__init__.py +0 -0
  204. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/codec.py +0 -0
  205. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/compat.py +0 -0
  206. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/core.py +0 -0
  207. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/idnadata.py +0 -0
  208. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/intranges.py +0 -0
  209. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/package_data.py +0 -0
  210. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/uts46data.py +0 -0
  211. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/__init__.py +0 -0
  212. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/exceptions.py +0 -0
  213. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/ext.py +0 -0
  214. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/fallback.py +0 -0
  215. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/__init__.py +0 -0
  216. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_elffile.py +0 -0
  217. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_manylinux.py +0 -0
  218. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_musllinux.py +0 -0
  219. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_parser.py +0 -0
  220. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_structures.py +0 -0
  221. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_tokenizer.py +0 -0
  222. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/__init__.py +0 -0
  223. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/_spdx.py +0 -0
  224. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/markers.py +0 -0
  225. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/metadata.py +0 -0
  226. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/requirements.py +0 -0
  227. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/specifiers.py +0 -0
  228. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/tags.py +0 -0
  229. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/utils.py +0 -0
  230. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/version.py +0 -0
  231. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pkg_resources/__init__.py +0 -0
  232. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/__init__.py +0 -0
  233. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/__main__.py +0 -0
  234. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/android.py +0 -0
  235. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/api.py +0 -0
  236. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/macos.py +0 -0
  237. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/unix.py +0 -0
  238. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/version.py +0 -0
  239. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/windows.py +0 -0
  240. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/__init__.py +0 -0
  241. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/__main__.py +0 -0
  242. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/console.py +0 -0
  243. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/filter.py +0 -0
  244. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/filters/__init__.py +0 -0
  245. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatter.py +0 -0
  246. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/__init__.py +0 -0
  247. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/_mapping.py +0 -0
  248. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexer.py +0 -0
  249. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/__init__.py +0 -0
  250. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/_mapping.py +0 -0
  251. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/python.py +0 -0
  252. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/modeline.py +0 -0
  253. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/plugin.py +0 -0
  254. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/regexopt.py +0 -0
  255. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/scanner.py +0 -0
  256. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/sphinxext.py +0 -0
  257. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/style.py +0 -0
  258. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/styles/__init__.py +0 -0
  259. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/styles/_mapping.py +0 -0
  260. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/token.py +0 -0
  261. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/unistring.py +0 -0
  262. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/util.py +0 -0
  263. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/__init__.py +0 -0
  264. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_impl.py +0 -0
  265. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +0 -0
  266. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +0 -0
  267. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/__init__.py +0 -0
  268. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/__version__.py +0 -0
  269. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/_internal_utils.py +0 -0
  270. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/adapters.py +0 -0
  271. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/api.py +0 -0
  272. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/auth.py +0 -0
  273. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/certs.py +0 -0
  274. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/compat.py +0 -0
  275. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/cookies.py +0 -0
  276. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/exceptions.py +0 -0
  277. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/help.py +0 -0
  278. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/hooks.py +0 -0
  279. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/models.py +0 -0
  280. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/packages.py +0 -0
  281. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/sessions.py +0 -0
  282. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/status_codes.py +0 -0
  283. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/structures.py +0 -0
  284. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/utils.py +0 -0
  285. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/__init__.py +0 -0
  286. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/providers.py +0 -0
  287. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/reporters.py +0 -0
  288. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +0 -0
  289. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +0 -0
  290. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +0 -0
  291. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +0 -0
  292. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +0 -0
  293. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/structs.py +0 -0
  294. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/__init__.py +0 -0
  295. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/__main__.py +0 -0
  296. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_cell_widths.py +0 -0
  297. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_emoji_codes.py +0 -0
  298. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_emoji_replace.py +0 -0
  299. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_export_format.py +0 -0
  300. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_extension.py +0 -0
  301. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_fileno.py +0 -0
  302. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_inspect.py +0 -0
  303. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_log_render.py +0 -0
  304. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_loop.py +0 -0
  305. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_null_file.py +0 -0
  306. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_palettes.py +0 -0
  307. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_pick.py +0 -0
  308. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_ratio.py +0 -0
  309. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_spinners.py +0 -0
  310. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_stack.py +0 -0
  311. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_timer.py +0 -0
  312. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_win32_console.py +0 -0
  313. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_windows.py +0 -0
  314. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_windows_renderer.py +0 -0
  315. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_wrap.py +0 -0
  316. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/abc.py +0 -0
  317. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/align.py +0 -0
  318. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/ansi.py +0 -0
  319. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/bar.py +0 -0
  320. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/box.py +0 -0
  321. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/cells.py +0 -0
  322. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/color.py +0 -0
  323. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/color_triplet.py +0 -0
  324. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/columns.py +0 -0
  325. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/console.py +0 -0
  326. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/constrain.py +0 -0
  327. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/containers.py +0 -0
  328. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/control.py +0 -0
  329. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/default_styles.py +0 -0
  330. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/diagnose.py +0 -0
  331. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/emoji.py +0 -0
  332. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/errors.py +0 -0
  333. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/file_proxy.py +0 -0
  334. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/filesize.py +0 -0
  335. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/highlighter.py +0 -0
  336. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/json.py +0 -0
  337. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/jupyter.py +0 -0
  338. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/layout.py +0 -0
  339. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/live.py +0 -0
  340. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/live_render.py +0 -0
  341. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/logging.py +0 -0
  342. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/markup.py +0 -0
  343. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/measure.py +0 -0
  344. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/padding.py +0 -0
  345. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/pager.py +0 -0
  346. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/palette.py +0 -0
  347. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/panel.py +0 -0
  348. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/pretty.py +0 -0
  349. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/progress.py +0 -0
  350. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/progress_bar.py +0 -0
  351. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/prompt.py +0 -0
  352. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/protocol.py +0 -0
  353. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/region.py +0 -0
  354. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/repr.py +0 -0
  355. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/rule.py +0 -0
  356. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/scope.py +0 -0
  357. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/screen.py +0 -0
  358. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/segment.py +0 -0
  359. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/spinner.py +0 -0
  360. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/status.py +0 -0
  361. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/style.py +0 -0
  362. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/styled.py +0 -0
  363. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/syntax.py +0 -0
  364. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/table.py +0 -0
  365. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/terminal_theme.py +0 -0
  366. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/text.py +0 -0
  367. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/theme.py +0 -0
  368. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/themes.py +0 -0
  369. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/traceback.py +0 -0
  370. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/tree.py +0 -0
  371. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/__init__.py +0 -0
  372. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_parser.py +0 -0
  373. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_re.py +0 -0
  374. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_types.py +0 -0
  375. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli_w/__init__.py +0 -0
  376. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli_w/_writer.py +0 -0
  377. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/__init__.py +0 -0
  378. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_api.py +0 -0
  379. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_macos.py +0 -0
  380. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_openssl.py +0 -0
  381. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_ssl_constants.py +0 -0
  382. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_windows.py +0 -0
  383. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/__init__.py +0 -0
  384. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/_collections.py +0 -0
  385. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/_version.py +0 -0
  386. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/connection.py +0 -0
  387. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/connectionpool.py +0 -0
  388. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  389. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +0 -0
  390. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  391. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +0 -0
  392. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +0 -0
  393. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/appengine.py +0 -0
  394. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +0 -0
  395. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +0 -0
  396. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +0 -0
  397. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/socks.py +0 -0
  398. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/exceptions.py +0 -0
  399. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/fields.py +0 -0
  400. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/filepost.py +0 -0
  401. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
  402. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  403. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +0 -0
  404. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +0 -0
  405. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/six.py +0 -0
  406. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/poolmanager.py +0 -0
  407. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/request.py +0 -0
  408. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/response.py +0 -0
  409. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__init__.py +0 -0
  410. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/connection.py +0 -0
  411. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/proxy.py +0 -0
  412. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/queue.py +0 -0
  413. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/request.py +0 -0
  414. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/response.py +0 -0
  415. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/retry.py +0 -0
  416. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssl_.py +0 -0
  417. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +0 -0
  418. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssltransport.py +0 -0
  419. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/timeout.py +0 -0
  420. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/url.py +0 -0
  421. {vibego-0.2.11 → vibego-0.2.12}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/wait.py +0 -0
  422. {vibego-0.2.11 → vibego-0.2.12}/scripts/__init__.py +0 -0
  423. {vibego-0.2.11 → vibego-0.2.12}/scripts/log_writer.py +0 -0
  424. {vibego-0.2.11 → vibego-0.2.12}/scripts/master_healthcheck.py +0 -0
  425. {vibego-0.2.11 → vibego-0.2.12}/scripts/models/codex.sh +0 -0
  426. {vibego-0.2.11 → vibego-0.2.12}/scripts/models/common.sh +0 -0
  427. {vibego-0.2.11 → vibego-0.2.12}/scripts/models/gemini.sh +0 -0
  428. {vibego-0.2.11 → vibego-0.2.12}/scripts/requirements.txt +0 -0
  429. {vibego-0.2.11 → vibego-0.2.12}/scripts/start.sh +0 -0
  430. {vibego-0.2.11 → vibego-0.2.12}/scripts/stop_all.sh +0 -0
  431. {vibego-0.2.11 → vibego-0.2.12}/scripts/test_deps_check.sh +0 -0
  432. {vibego-0.2.11 → vibego-0.2.12}/setup.cfg +0 -0
  433. {vibego-0.2.11 → vibego-0.2.12}/tasks/__init__.py +0 -0
  434. {vibego-0.2.11 → vibego-0.2.12}/tasks/commands.py +0 -0
  435. {vibego-0.2.11 → vibego-0.2.12}/tasks/constants.py +0 -0
  436. {vibego-0.2.11 → vibego-0.2.12}/tasks/fsm.py +0 -0
  437. {vibego-0.2.11 → vibego-0.2.12}/tasks/models.py +0 -0
  438. {vibego-0.2.11 → vibego-0.2.12}/tasks/service.py +0 -0
  439. {vibego-0.2.11 → vibego-0.2.12}/tests/test_auto_compact.py +0 -0
  440. {vibego-0.2.11 → vibego-0.2.12}/tests/test_chat_menu_buttons.py +0 -0
  441. {vibego-0.2.11 → vibego-0.2.12}/tests/test_claudecode_jsonl.py +0 -0
  442. {vibego-0.2.11 → vibego-0.2.12}/tests/test_master_project_management.py +0 -0
  443. {vibego-0.2.11 → vibego-0.2.12}/tests/test_numbered_reply_inputs.py +0 -0
  444. {vibego-0.2.11 → vibego-0.2.12}/tests/test_plan_progress.py +0 -0
  445. {vibego-0.2.11 → vibego-0.2.12}/tests/test_task_create_flow.py +0 -0
  446. {vibego-0.2.11 → vibego-0.2.12}/tests/test_task_detail_back.py +0 -0
  447. {vibego-0.2.11 → vibego-0.2.12}/tests/test_task_list_entry.py +0 -0
  448. {vibego-0.2.11 → vibego-0.2.12}/vibego.egg-info/dependency_links.txt +0 -0
  449. {vibego-0.2.11 → vibego-0.2.12}/vibego.egg-info/entry_points.txt +0 -0
  450. {vibego-0.2.11 → vibego-0.2.12}/vibego.egg-info/requires.txt +0 -0
  451. {vibego-0.2.11 → vibego-0.2.12}/vibego.egg-info/top_level.txt +0 -0
  452. {vibego-0.2.11 → vibego-0.2.12}/vibego_cli/__main__.py +0 -0
  453. {vibego-0.2.11 → vibego-0.2.12}/vibego_cli/config.py +0 -0
  454. {vibego-0.2.11 → vibego-0.2.12}/vibego_cli/data/worker_requirements.txt +0 -0
  455. {vibego-0.2.11 → vibego-0.2.12}/vibego_cli/deps.py +0 -0
  456. {vibego-0.2.11 → vibego-0.2.12}/vibego_cli/main.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibego
3
- Version: 0.2.11
3
+ Version: 0.2.12
4
4
  Summary: vibego CLI:用于初始化与管理 Telegram Master Bot 的工具
5
5
  Author: Hypha
6
6
  License-Expression: LicenseRef-Proprietary
@@ -219,7 +219,7 @@ SEND_RETRY_BASE_DELAY = float(os.environ.get("SEND_RETRY_BASE_DELAY", "0.5"))
219
219
  SEND_FAILURE_NOTICE_COOLDOWN = float(os.environ.get("SEND_FAILURE_NOTICE_COOLDOWN", "30"))
220
220
  SESSION_INITIAL_BACKTRACK_BYTES = int(os.environ.get("SESSION_INITIAL_BACKTRACK_BYTES", "16384"))
221
221
  ENABLE_PLAN_PROGRESS = (os.environ.get("ENABLE_PLAN_PROGRESS", "1").strip().lower() not in {"0", "false", "no", "off"})
222
- AUTO_COMPACT_THRESHOLD = max(_env_int("AUTO_COMPACT_THRESHOLD", 10), 0)
222
+ AUTO_COMPACT_THRESHOLD = max(_env_int("AUTO_COMPACT_THRESHOLD", 0), 0)
223
223
 
224
224
  PLAN_STATUS_LABELS = {
225
225
  "completed": "✅",
@@ -967,6 +967,9 @@ async def _dispatch_prompt_to_model(
967
967
  return True, session_path
968
968
  await asyncio.sleep(0.3)
969
969
 
970
+ # 中断旧的延迟轮询(如果存在)
971
+ await _interrupt_long_poll(chat_id)
972
+
970
973
  watcher_task = asyncio.create_task(
971
974
  _watch_and_notify(
972
975
  chat_id,
@@ -3050,6 +3053,9 @@ CHAT_DELIVERED_HASHES: Dict[int, Dict[str, set[str]]] = {}
3050
3053
  CHAT_DELIVERED_OFFSETS: Dict[int, Dict[str, set[int]]] = {}
3051
3054
  CHAT_REPLY_COUNT: Dict[int, Dict[str, int]] = {}
3052
3055
  CHAT_COMPACT_STATE: Dict[int, Dict[str, Dict[str, Any]]] = {}
3056
+ # 长轮询状态:用于延迟轮询机制
3057
+ CHAT_LONG_POLL_STATE: Dict[int, Dict[str, Any]] = {}
3058
+ CHAT_LONG_POLL_LOCK: Optional[asyncio.Lock] = None # 在事件循环启动后初始化
3053
3059
  SUMMARY_REQUEST_TIMEOUT_SECONDS = 300.0
3054
3060
 
3055
3061
 
@@ -3992,6 +3998,9 @@ async def _ensure_session_watcher(chat_id: int) -> Optional[Path]:
3992
3998
  if watcher is not None and watcher.done():
3993
3999
  CHAT_WATCHERS.pop(chat_id, None)
3994
4000
 
4001
+ # 中断旧的延迟轮询(如果存在)
4002
+ await _interrupt_long_poll(chat_id)
4003
+
3995
4004
  CHAT_WATCHERS[chat_id] = asyncio.create_task(
3996
4005
  _watch_and_notify(
3997
4006
  chat_id,
@@ -4151,23 +4160,175 @@ async def _finalize_plan_progress(chat_id: int) -> None:
4151
4160
 
4152
4161
 
4153
4162
 
4163
+ async def _interrupt_long_poll(chat_id: int) -> None:
4164
+ """
4165
+ 中断指定 chat 的延迟轮询。
4166
+
4167
+ 当用户发送新消息时调用,确保旧的延迟轮询被终止,
4168
+ 为新的监听任务让路。
4169
+
4170
+ 线程安全:使用 asyncio.Lock 保护状态访问。
4171
+ """
4172
+ if CHAT_LONG_POLL_LOCK is None:
4173
+ # 锁未初始化(测试环境或启动早期)
4174
+ return
4175
+
4176
+ async with CHAT_LONG_POLL_LOCK:
4177
+ state = CHAT_LONG_POLL_STATE.get(chat_id)
4178
+ if state is not None:
4179
+ state["interrupted"] = True
4180
+ worker_log.info(
4181
+ "标记延迟轮询为待中断",
4182
+ extra={"chat": chat_id},
4183
+ )
4184
+
4185
+
4154
4186
  async def _watch_and_notify(chat_id: int, session_path: Path,
4155
4187
  max_wait: float, interval: float):
4188
+ """
4189
+ 监听会话文件并发送消息。
4190
+
4191
+ 两阶段轮询机制:
4192
+ - 阶段1(快速轮询):interval 间隔(通常 0.3 秒),直到首次发送成功
4193
+ - 阶段2(延迟轮询):180 秒间隔,最多 10 次,捕获长时间任务的后续输出
4194
+
4195
+ 异常安全:使用 try...finally 确保状态清理。
4196
+ """
4156
4197
  start = time.monotonic()
4157
- while True:
4158
- await asyncio.sleep(interval)
4159
- if max_wait > 0 and time.monotonic() - start > max_wait:
4160
- worker_log.warning(
4161
- "[session-map] chat=%s 长时间未获取到 Codex 输出,停止轮询",
4162
- chat_id,
4163
- extra=_session_extra(path=session_path),
4164
- )
4165
- return
4166
- if not session_path.exists():
4167
- continue
4168
- delivered = await _deliver_pending_messages(chat_id, session_path)
4169
- if delivered:
4170
- return
4198
+ first_delivery_done = False
4199
+ current_interval = interval # 初始为快速轮询间隔(0.3 秒)
4200
+ long_poll_rounds = 0
4201
+ long_poll_max_rounds = 10
4202
+ long_poll_interval = 180.0 # 3 分钟
4203
+
4204
+ try:
4205
+ while True:
4206
+ # 检查是否被新消息中断(使用锁保护)
4207
+ if CHAT_LONG_POLL_LOCK is not None:
4208
+ async with CHAT_LONG_POLL_LOCK:
4209
+ state = CHAT_LONG_POLL_STATE.get(chat_id)
4210
+ if state is not None and state.get("interrupted", False):
4211
+ worker_log.info(
4212
+ "延迟轮询被新消息中断",
4213
+ extra={
4214
+ **_session_extra(path=session_path),
4215
+ "chat": chat_id,
4216
+ "round": long_poll_rounds,
4217
+ },
4218
+ )
4219
+ return
4220
+
4221
+ await asyncio.sleep(current_interval)
4222
+
4223
+ # 检查超时(仅在快速轮询阶段)
4224
+ if not first_delivery_done and max_wait > 0 and time.monotonic() - start > max_wait:
4225
+ worker_log.warning(
4226
+ "[session-map] chat=%s 长时间未获取到 Codex 输出,停止轮询",
4227
+ chat_id,
4228
+ extra=_session_extra(path=session_path),
4229
+ )
4230
+ return
4231
+
4232
+ if not session_path.exists():
4233
+ continue
4234
+
4235
+ try:
4236
+ delivered = await _deliver_pending_messages(chat_id, session_path)
4237
+ except Exception as exc:
4238
+ worker_log.error(
4239
+ "消息发送时发生未预期异常",
4240
+ exc_info=exc,
4241
+ extra={
4242
+ **_session_extra(path=session_path),
4243
+ "chat": chat_id,
4244
+ },
4245
+ )
4246
+ delivered = False
4247
+
4248
+ # 首次发送成功,切换到延迟轮询模式
4249
+ if delivered and not first_delivery_done:
4250
+ first_delivery_done = True
4251
+ current_interval = long_poll_interval
4252
+ if CHAT_LONG_POLL_LOCK is not None:
4253
+ async with CHAT_LONG_POLL_LOCK:
4254
+ CHAT_LONG_POLL_STATE[chat_id] = {
4255
+ "active": True,
4256
+ "round": 0,
4257
+ "max_rounds": long_poll_max_rounds,
4258
+ "interrupted": False,
4259
+ }
4260
+ worker_log.info(
4261
+ "首次发送成功,启动延迟轮询模式",
4262
+ extra={
4263
+ **_session_extra(path=session_path),
4264
+ "chat": chat_id,
4265
+ "interval": long_poll_interval,
4266
+ "max_rounds": long_poll_max_rounds,
4267
+ },
4268
+ )
4269
+ continue
4270
+
4271
+ # 延迟轮询阶段
4272
+ if first_delivery_done:
4273
+ if delivered:
4274
+ # 又收到新消息,重置轮询计数
4275
+ long_poll_rounds = 0
4276
+ if CHAT_LONG_POLL_LOCK is not None:
4277
+ async with CHAT_LONG_POLL_LOCK:
4278
+ state = CHAT_LONG_POLL_STATE.get(chat_id)
4279
+ if state is not None:
4280
+ state["round"] = 0
4281
+ worker_log.info(
4282
+ "延迟轮询中收到新消息,重置计数",
4283
+ extra={
4284
+ **_session_extra(path=session_path),
4285
+ "chat": chat_id,
4286
+ },
4287
+ )
4288
+ else:
4289
+ # 无新消息,增加轮询计数
4290
+ long_poll_rounds += 1
4291
+ if CHAT_LONG_POLL_LOCK is not None:
4292
+ async with CHAT_LONG_POLL_LOCK:
4293
+ state = CHAT_LONG_POLL_STATE.get(chat_id)
4294
+ if state is not None:
4295
+ state["round"] = long_poll_rounds
4296
+
4297
+ if long_poll_rounds >= long_poll_max_rounds:
4298
+ worker_log.info(
4299
+ "延迟轮询达到最大次数,停止监听",
4300
+ extra={
4301
+ **_session_extra(path=session_path),
4302
+ "chat": chat_id,
4303
+ "total_rounds": long_poll_rounds,
4304
+ },
4305
+ )
4306
+ return
4307
+
4308
+ worker_log.debug(
4309
+ "延迟轮询中无新消息",
4310
+ extra={
4311
+ **_session_extra(path=session_path),
4312
+ "chat": chat_id,
4313
+ "round": f"{long_poll_rounds}/{long_poll_max_rounds}",
4314
+ },
4315
+ )
4316
+ continue
4317
+
4318
+ # 快速轮询阶段:如果已发送消息,退出
4319
+ if delivered:
4320
+ return
4321
+
4322
+ finally:
4323
+ # 确保无论如何都清理延迟轮询状态
4324
+ if CHAT_LONG_POLL_LOCK is not None:
4325
+ async with CHAT_LONG_POLL_LOCK:
4326
+ if chat_id in CHAT_LONG_POLL_STATE:
4327
+ CHAT_LONG_POLL_STATE.pop(chat_id, None)
4328
+ worker_log.debug(
4329
+ "监听任务退出,已清理延迟轮询状态",
4330
+ extra={"chat": chat_id},
4331
+ )
4171
4332
 
4172
4333
 
4173
4334
  def _read_pointer_path(pointer: Path) -> Optional[Path]:
@@ -5422,7 +5583,7 @@ async def on_task_desc_input(message: Message, state: FSMContext) -> None:
5422
5583
 
5423
5584
  @router.message(TaskDescriptionStates.waiting_confirm)
5424
5585
  async def on_task_desc_confirm_stage_text(message: Message, state: FSMContext) -> None:
5425
- """处理任务描述确认阶段的菜单指令。"""
5586
+ """处理任务描述确认阶段的菜单指令。支持按钮点击、数字编号和直接文本输入。"""
5426
5587
 
5427
5588
  data = await state.get_data()
5428
5589
  task_id = data.get("task_id")
@@ -5431,13 +5592,19 @@ async def on_task_desc_confirm_stage_text(message: Message, state: FSMContext) -
5431
5592
  await message.answer("会话已失效,请重新操作。", reply_markup=_build_worker_main_keyboard())
5432
5593
  return
5433
5594
 
5434
- token = _normalize_choice_token(message.text or "")
5435
- if _is_cancel_message(token) or token == _normalize_choice_token(TASK_DESC_CANCEL_TEXT):
5595
+ # 使用 _resolve_reply_choice() 智能解析用户输入,支持数字编号、按钮文本和直接文本
5596
+ options = [TASK_DESC_CONFIRM_TEXT, TASK_DESC_RETRY_TEXT, TASK_DESC_CANCEL_TEXT]
5597
+ resolved = _resolve_reply_choice(message.text, options=options)
5598
+ stripped = _strip_number_prefix((message.text or "").strip()).lower()
5599
+
5600
+ # 处理取消操作
5601
+ if resolved == options[2] or _is_cancel_message(resolved) or stripped in {"取消"}:
5436
5602
  await state.clear()
5437
5603
  await message.answer("已取消编辑任务描述。", reply_markup=_build_worker_main_keyboard())
5438
5604
  return
5439
5605
 
5440
- if token == _normalize_choice_token(TASK_DESC_RETRY_TEXT):
5606
+ # 处理重新输入操作
5607
+ if resolved == options[1] or stripped in {"重新输入"}:
5441
5608
  task = await TASK_SERVICE.get_task(task_id)
5442
5609
  if task is None:
5443
5610
  await state.clear()
@@ -5455,7 +5622,8 @@ async def on_task_desc_confirm_stage_text(message: Message, state: FSMContext) -
5455
5622
  )
5456
5623
  return
5457
5624
 
5458
- if token == _normalize_choice_token(TASK_DESC_CONFIRM_TEXT):
5625
+ # 处理确认更新操作
5626
+ if resolved == options[0] or stripped in {"确认", "确认更新"}:
5459
5627
  new_description = data.get("new_description")
5460
5628
  if new_description is None:
5461
5629
  await state.set_state(TaskDescriptionStates.waiting_content)
@@ -5486,8 +5654,9 @@ async def on_task_desc_confirm_stage_text(message: Message, state: FSMContext) -
5486
5654
  )
5487
5655
  return
5488
5656
 
5657
+ # 无效输入,提示用户
5489
5658
  await message.answer(
5490
- "当前处于确认阶段,请使用菜单中的按钮确认或重新输入。",
5659
+ "当前处于确认阶段,请选择确认、重新输入或取消,可直接输入编号或点击键盘按钮:",
5491
5660
  reply_markup=_build_task_desc_confirm_keyboard(),
5492
5661
  )
5493
5662
 
@@ -6869,7 +7038,9 @@ async def _ensure_worker_menu_button(bot: Bot) -> None:
6869
7038
  )
6870
7039
 
6871
7040
  async def main():
6872
- global _bot
7041
+ global _bot, CHAT_LONG_POLL_LOCK
7042
+ # 初始化长轮询锁
7043
+ CHAT_LONG_POLL_LOCK = asyncio.Lock()
6873
7044
  _bot = build_bot()
6874
7045
  try:
6875
7046
  await ensure_telegram_connectivity(_bot)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "vibego"
7
- version = "0.2.11"
7
+ version = "0.2.12"
8
8
  description = "vibego CLI:用于初始化与管理 Telegram Master Bot 的工具"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -39,3 +39,30 @@ include = ["vibego_cli", "tasks", "scripts"]
39
39
  [tool.setuptools.package-data]
40
40
  "vibego_cli" = ["data/*.txt"]
41
41
  "scripts" = ["*.sh", "models/*.sh"]
42
+
43
+ [tool.bumpversion]
44
+ current_version = "0.2.12"
45
+ parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
46
+ serialize = ["{major}.{minor}.{patch}"]
47
+ search = "{current_version}"
48
+ replace = "{new_version}"
49
+ regex = false
50
+ ignore_missing_version = false
51
+ tag = true
52
+ sign_tags = false
53
+ tag_name = "v{new_version}"
54
+ tag_message = "Bump version: {current_version} → {new_version}"
55
+ allow_dirty = false
56
+ commit = true
57
+ message = "chore: bump version {current_version} → {new_version}"
58
+ commit_args = ""
59
+
60
+ [[tool.bumpversion.files]]
61
+ filename = "pyproject.toml"
62
+ search = 'version = "{current_version}"'
63
+ replace = 'version = "{new_version}"'
64
+
65
+ [[tool.bumpversion.files]]
66
+ filename = "vibego_cli/__init__.py"
67
+ search = '__version__ = "{current_version}"'
68
+ replace = '__version__ = "{new_version}"'
@@ -0,0 +1,152 @@
1
+ #!/usr/bin/env bash
2
+ # 版本管理便捷脚本
3
+ # 使用方式:
4
+ # ./scripts/bump_version.sh patch
5
+ # ./scripts/bump_version.sh minor
6
+ # ./scripts/bump_version.sh major
7
+ # ./scripts/bump_version.sh show
8
+ # ./scripts/bump_version.sh --help
9
+
10
+ set -e
11
+
12
+ # 项目根目录
13
+ PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
14
+ cd "$PROJECT_ROOT"
15
+
16
+ # bump-my-version 路径
17
+ BUMP_CMD="/Users/david/.config/vibego/runtime/.venv/bin/bump-my-version"
18
+
19
+ # 检查 bump-my-version 是否存在
20
+ if [ ! -f "$BUMP_CMD" ]; then
21
+ echo "错误:找不到 bump-my-version"
22
+ echo "请先安装:pip install bump-my-version"
23
+ exit 1
24
+ fi
25
+
26
+ # 如果没有参数,显示帮助
27
+ if [ $# -eq 0 ]; then
28
+ echo "用法:"
29
+ echo " $0 patch 递增补丁版本 (0.2.11 → 0.2.12)"
30
+ echo " 自动提交:fix: bugfixes"
31
+ echo " $0 minor 递增次版本 (0.2.11 → 0.3.0)"
32
+ echo " 自动提交:feat: 添加新功能"
33
+ echo " $0 major 递增主版本 (0.2.11 → 1.0.0)"
34
+ echo " 自动提交:feat!: 重大变更"
35
+ echo " $0 show 显示当前版本"
36
+ echo " $0 --dry-run 预览变更(添加在 patch/minor/major 后)"
37
+ echo ""
38
+ echo "说明:"
39
+ echo " 脚本会自动提交当前未提交的修改,然后递增版本号。"
40
+ echo " 如果不想自动提交,请在参数中添加 --no-auto-commit"
41
+ echo ""
42
+ echo "示例:"
43
+ echo " $0 patch # 自动提交修改并递增补丁版本"
44
+ echo " $0 patch --dry-run # 预览补丁版本递增(不会提交)"
45
+ echo " $0 minor --no-auto-commit # 仅递增版本,不自动提交当前修改"
46
+ exit 0
47
+ fi
48
+
49
+ # 处理 show 命令
50
+ if [ "$1" = "show" ]; then
51
+ "$BUMP_CMD" show current_version
52
+ exit 0
53
+ fi
54
+
55
+ # 处理 --help
56
+ if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
57
+ "$BUMP_CMD" --help
58
+ exit 0
59
+ fi
60
+
61
+ # 检查是否禁用自动提交
62
+ AUTO_COMMIT=true
63
+ if [[ "$*" =~ "--no-auto-commit" ]]; then
64
+ AUTO_COMMIT=false
65
+ fi
66
+
67
+ # 检查是否是 dry-run
68
+ DRY_RUN=false
69
+ if [[ "$*" =~ "--dry-run" ]]; then
70
+ DRY_RUN=true
71
+ fi
72
+
73
+ # 获取版本类型
74
+ VERSION_TYPE="$1"
75
+
76
+ # 获取对应版本类型的 commit 消息
77
+ get_commit_message() {
78
+ case "$1" in
79
+ patch)
80
+ echo "fix: bugfixes"
81
+ ;;
82
+ minor)
83
+ echo "feat: 添加新功能"
84
+ ;;
85
+ major)
86
+ echo "feat!: 重大变更"
87
+ ;;
88
+ *)
89
+ echo ""
90
+ ;;
91
+ esac
92
+ }
93
+
94
+ # 检查版本类型是否有效
95
+ COMMIT_MSG=$(get_commit_message "$VERSION_TYPE")
96
+ if [ -z "$COMMIT_MSG" ]; then
97
+ # 如果不是有效的版本类型,直接传递给 bump-my-version
98
+ "$BUMP_CMD" bump "$@"
99
+ exit 0
100
+ fi
101
+
102
+ # 显示当前版本
103
+ echo "📦 当前版本:$("$BUMP_CMD" show current_version)"
104
+ echo ""
105
+
106
+ # 检查是否有未提交的修改
107
+ if [ "$AUTO_COMMIT" = true ] && [ "$DRY_RUN" = false ]; then
108
+ if ! git diff-index --quiet HEAD -- 2>/dev/null; then
109
+ echo "📝 检测到未提交的修改,准备创建 commit..."
110
+ echo ""
111
+
112
+ echo "Commit 消息:$COMMIT_MSG"
113
+ echo ""
114
+
115
+ # 显示将要提交的文件
116
+ echo "将要提交的文件:"
117
+ git status --short
118
+ echo ""
119
+
120
+ # 提交所有修改
121
+ git add .
122
+ git commit -m "$COMMIT_MSG"
123
+
124
+ echo "✅ 代码修改已提交"
125
+ echo ""
126
+ else
127
+ echo "ℹ️ 没有未提交的修改,跳过自动 commit"
128
+ echo ""
129
+ fi
130
+ fi
131
+
132
+ # 执行版本递增
133
+ echo "🚀 开始递增版本..."
134
+ echo ""
135
+
136
+ "$BUMP_CMD" bump "$@"
137
+
138
+ echo ""
139
+ echo "✅ 版本管理完成!"
140
+ echo ""
141
+ echo "📋 操作摘要:"
142
+ if [ "$AUTO_COMMIT" = true ] && [ "$DRY_RUN" = false ]; then
143
+ echo " 1. 已提交代码修改(如有)"
144
+ echo " 2. 已递增版本号"
145
+ echo " 3. 已创建版本 commit 和 tag"
146
+ else
147
+ echo " 1. 已递增版本号"
148
+ echo " 2. 已创建版本 commit 和 tag"
149
+ fi
150
+ echo ""
151
+ echo "💡 提示:如需推送到远程,请执行:"
152
+ echo " git push && git push --tags"
@@ -20,6 +20,10 @@ claude_project_key_from_workdir() {
20
20
  model_configure() {
21
21
  MODEL_NAME="ClaudeCode"
22
22
  MODEL_WORKDIR="${CLAUDE_WORKDIR:-${MODEL_WORKDIR:-$ROOT_DIR}}"
23
+ # 默认关闭文件快照,避免孤儿 CLI 持续写入 jsonl
24
+ CLAUDE_DISABLE_FILE_CHECKPOINTING="${CLAUDE_DISABLE_FILE_CHECKPOINTING:-1}"
25
+ CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING="${CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING:-$CLAUDE_DISABLE_FILE_CHECKPOINTING}"
26
+ export CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING
23
27
  local project_key
24
28
  if [[ -n "${CLAUDE_PROJECT_KEY:-}" ]]; then
25
29
  project_key="$CLAUDE_PROJECT_KEY"
@@ -151,6 +151,9 @@ export TMUX_LOG="$MODEL_LOG"
151
151
  export PROJECT_NAME="$PROJECT_NAME"
152
152
  export LOG_DIR="$LOG_DIR"
153
153
  export ROOT_DIR="$SOURCE_ROOT"
154
+ if [[ -n "${CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING:-}" ]]; then
155
+ export CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING
156
+ fi
154
157
 
155
158
  "$SOURCE_ROOT/scripts/start_tmux_codex.sh" --kill >/dev/null
156
159
 
@@ -117,13 +117,20 @@ run_tmux pipe-pane -o -t "$SESSION_NAME" "$PIPE_CMD"
117
117
 
118
118
  # 同步环境变量到 tmux 服务端,避免复用旧会话时丢失设置
119
119
  run_tmux set-environment -t "$SESSION_NAME" DISABLE_UPDATE_PROMPT "${DISABLE_UPDATE_PROMPT:-true}"
120
+ if [[ -n "${CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING:-}" ]]; then
121
+ run_tmux set-environment -t "$SESSION_NAME" CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING "${CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING}"
122
+ fi
120
123
 
121
124
  if (( RESTART )); then
122
125
  run_tmux send-keys -t "$SESSION_NAME" C-c
123
126
  sleep 1
124
127
  fi
125
128
 
126
- printf -v FINAL_CMD 'env DISABLE_UPDATE_PROMPT=%q %s' "${DISABLE_UPDATE_PROMPT:-true}" "$MODEL_CMD"
129
+ env_prefix="env $(printf '%q' "DISABLE_UPDATE_PROMPT=${DISABLE_UPDATE_PROMPT:-true}")"
130
+ if [[ -n "${CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING:-}" ]]; then
131
+ env_prefix+=" $(printf '%q' "CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING=${CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING}")"
132
+ fi
133
+ printf -v FINAL_CMD '%s %s' "$env_prefix" "$MODEL_CMD"
127
134
 
128
135
  if (( SESSION_CREATED )) || (( FORCE_START )); then
129
136
  run_tmux send-keys -t "$SESSION_NAME" "$FINAL_CMD" C-m
@@ -47,6 +47,62 @@ fi
47
47
 
48
48
  POINTER_BASENAME="${MODEL_POINTER_BASENAME:-current_session.txt}"
49
49
 
50
+ graceful_shutdown_claudecode() {
51
+ local session="$1"
52
+ local timeout="${2:-10}"
53
+ if ! command -v tmux >/dev/null 2>&1; then
54
+ return 0
55
+ fi
56
+ if ! tmux -u has-session -t "$session" >/dev/null 2>&1; then
57
+ return 0
58
+ fi
59
+ local pane_ids=()
60
+ while IFS= read -r pane; do
61
+ [[ -z "$pane" ]] && continue
62
+ pane_ids+=("$pane")
63
+ done < <(tmux -u list-panes -t "$session" -F "#{pane_id}" 2>/dev/null || true)
64
+ (( ${#pane_ids[@]} )) || return 0
65
+
66
+ local current_cmd has_claude=0
67
+ for pane in "${pane_ids[@]}"; do
68
+ current_cmd=$(tmux -u display-message -p -t "$pane" '#{pane_current_command}' 2>/dev/null || echo "")
69
+ if [[ "$current_cmd" == claude* ]]; then
70
+ has_claude=1
71
+ break
72
+ fi
73
+ done
74
+ (( has_claude )) || return 0
75
+
76
+ printf '[stop-bot] 检测到 ClaudeCode 会话,尝试发送 /exit (session=%s)\n' "$session"
77
+ for pane in "${pane_ids[@]}"; do
78
+ tmux -u send-keys -t "$pane" Escape
79
+ tmux -u send-keys -t "$pane" C-u
80
+ tmux -u send-keys -t "$pane" "/exit" C-m
81
+ done
82
+
83
+ local end_time=$(( $(date +%s) + timeout ))
84
+ while tmux -u has-session -t "$session" >/dev/null 2>&1; do
85
+ local still_running=0
86
+ for pane in "${pane_ids[@]}"; do
87
+ current_cmd=$(tmux -u display-message -p -t "$pane" '#{pane_current_command}' 2>/dev/null || echo "")
88
+ if [[ "$current_cmd" == claude* ]]; then
89
+ still_running=1
90
+ break
91
+ fi
92
+ done
93
+ if (( still_running == 0 )); then
94
+ printf '[stop-bot] ClaudeCode 会话已响应 /exit (session=%s)\n' "$session"
95
+ break
96
+ fi
97
+ if (( $(date +%s) >= end_time )); then
98
+ printf '[stop-bot] ClaudeCode /exit 超时,将继续执行强制关闭 (session=%s)\n' "$session" >&2
99
+ break
100
+ fi
101
+ sleep 0.5
102
+ done
103
+ return 0
104
+ }
105
+
50
106
  kill_tty_sessions() {
51
107
  local session="$1"
52
108
  if command -v tmux >/dev/null 2>&1 && tmux -u has-session -t "$session" >/dev/null 2>&1; then
@@ -64,8 +120,10 @@ kill_pid_file() {
64
120
  if [[ ! -f "$pid_file" ]]; then
65
121
  local fallback_dir
66
122
  fallback_dir="$(dirname "$pid_file")"
67
- [[ -d "$fallback_dir" ]] && clear_session_files "$fallback_dir"
68
- return
123
+ if [[ -d "$fallback_dir" ]]; then
124
+ clear_session_files "$fallback_dir"
125
+ fi
126
+ return 0
69
127
  fi
70
128
  local bot_pid
71
129
  bot_pid=$(cat "$pid_file")
@@ -79,7 +137,10 @@ kill_pid_file() {
79
137
  rm -f "$pid_file"
80
138
  local pid_dir
81
139
  pid_dir="$(dirname "$pid_file")"
82
- [[ -d "$pid_dir" ]] && clear_session_files "$pid_dir"
140
+ if [[ -d "$pid_dir" ]]; then
141
+ clear_session_files "$pid_dir"
142
+ fi
143
+ return 0
83
144
  }
84
145
 
85
146
  stop_single_worker() {
@@ -88,9 +149,11 @@ stop_single_worker() {
88
149
  log_dir="$(log_dir_for "$model_name" "$project_name")"
89
150
  pid_file="$log_dir/bot.pid"
90
151
  tmux_session="$(tmux_session_for "$project_name")"
152
+ graceful_shutdown_claudecode "$tmux_session" 15 || true
91
153
  kill_tty_sessions "$tmux_session"
92
154
  kill_pid_file "$pid_file"
93
155
  clear_session_files "$log_dir"
156
+ return 0
94
157
  }
95
158
 
96
159
  stop_all_workers() {
@@ -109,6 +172,7 @@ stop_all_workers() {
109
172
  if [[ -n "$sessions" ]]; then
110
173
  while IFS= read -r sess; do
111
174
  [[ -z "$sess" ]] && continue
175
+ graceful_shutdown_claudecode "$sess" 15 || true
112
176
  tmux -u kill-session -t "$sess" >/dev/null 2>&1 || true
113
177
  stopped=1
114
178
  done <<<"$sessions"