vibego 1.0.7__tar.gz → 1.0.13__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.
- {vibego-1.0.7/vibego.egg-info → vibego-1.0.13}/PKG-INFO +1 -1
- {vibego-1.0.7 → vibego-1.0.13}/bot.py +218 -73
- {vibego-1.0.7 → vibego-1.0.13}/pyproject.toml +2 -2
- {vibego-1.0.7 → vibego-1.0.13}/scripts/session_pointer_watch.py +7 -2
- {vibego-1.0.7 → vibego-1.0.13}/scripts/start_tmux_codex.sh +4 -1
- {vibego-1.0.7 → vibego-1.0.13}/tasks/service.py +1 -46
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_chat_menu_buttons.py +7 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_session_lock.py +92 -7
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_session_pointer_watch.py +1 -1
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_task_create_flow.py +16 -17
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_task_description.py +201 -15
- {vibego-1.0.7 → vibego-1.0.13/vibego.egg-info}/PKG-INFO +1 -1
- {vibego-1.0.7 → vibego-1.0.13}/vibego_cli/__init__.py +1 -1
- {vibego-1.0.7 → vibego-1.0.13}/LICENSE +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/MANIFEST.in +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/README.md +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/config/projects.json.example +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/logging_setup.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/master.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/project_repository.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/__main__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/__pip-runner__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/build_env.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cache.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/autocompletion.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/base_command.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/cmdoptions.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/command_context.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/index_command.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/main.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/main_parser.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/parser.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/progress_bars.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/req_command.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/spinners.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/status_codes.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/cache.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/check.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/completion.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/configuration.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/debug.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/download.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/freeze.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/hash.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/help.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/index.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/inspect.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/install.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/list.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/lock.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/search.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/show.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/uninstall.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/wheel.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/configuration.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/base.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/installed.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/sdist.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/wheel.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/exceptions.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/collector.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/package_finder.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/sources.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/_distutils.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/_sysconfig.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/base.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/main.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/_json.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/base.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_compat.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_dists.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_envs.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/pkg_resources.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/candidate.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/direct_url.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/format_control.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/index.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/installation_report.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/link.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/pylock.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/scheme.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/search_scope.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/selection_prefs.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/target_python.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/wheel.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/auth.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/cache.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/download.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/lazy_wheel.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/session.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/utils.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/xmlrpc.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/build_tracker.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata_editable.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata_legacy.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel_editable.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel_legacy.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/check.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/freeze.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/editable_legacy.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/wheel.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/prepare.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/pyproject.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/constructors.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_dependency_group.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_file.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_install.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_set.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_uninstall.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/base.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/legacy/resolver.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/base.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/factory.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/provider.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/reporter.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/requirements.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/resolver.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/self_outdated_check.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/_jaraco_text.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/_log.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/appdirs.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/compat.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/compatibility_tags.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/datetime.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/deprecation.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/direct_url_helpers.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/egg_link.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/entrypoints.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/filesystem.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/filetypes.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/glibc.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/hashes.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/logging.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/misc.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/packaging.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/retry.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/setuptools_build.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/subprocess.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/temp_dir.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/unpacking.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/urls.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/virtualenv.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/wheel.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/bazaar.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/git.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/mercurial.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/subversion.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/versioncontrol.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/wheel_builder.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/_cmd.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/adapter.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/cache.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/controller.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/filewrapper.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/heuristics.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/serialize.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/wrapper.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/__main__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/core.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__main__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_implementation.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_lint_dependency_groups.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_pip_wrapper.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_toml_compat.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/compat.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/resources.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/scripts.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/util.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/__main__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/distro.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/codec.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/compat.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/core.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/idnadata.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/intranges.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/package_data.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/uts46data.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/exceptions.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/ext.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/fallback.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_elffile.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_manylinux.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_musllinux.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_parser.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_structures.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_tokenizer.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/_spdx.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/markers.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/metadata.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/requirements.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/specifiers.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/tags.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/utils.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/version.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pkg_resources/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/__main__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/android.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/api.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/macos.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/unix.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/version.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/windows.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/__main__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/console.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/filter.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/filters/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatter.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/_mapping.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexer.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/_mapping.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/python.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/modeline.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/plugin.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/regexopt.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/scanner.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/sphinxext.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/style.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/styles/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/styles/_mapping.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/token.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/unistring.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/util.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_impl.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/__version__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/_internal_utils.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/adapters.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/api.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/auth.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/certs.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/compat.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/cookies.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/exceptions.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/help.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/hooks.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/models.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/packages.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/sessions.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/status_codes.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/structures.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/utils.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/providers.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/reporters.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/structs.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/__main__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_cell_widths.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_emoji_codes.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_emoji_replace.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_export_format.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_extension.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_fileno.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_inspect.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_log_render.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_loop.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_null_file.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_palettes.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_pick.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_ratio.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_spinners.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_stack.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_timer.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_win32_console.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_windows.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_windows_renderer.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_wrap.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/abc.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/align.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/ansi.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/bar.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/box.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/cells.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/color.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/color_triplet.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/columns.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/console.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/constrain.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/containers.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/control.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/default_styles.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/diagnose.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/emoji.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/errors.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/file_proxy.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/filesize.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/highlighter.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/json.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/jupyter.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/layout.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/live.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/live_render.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/logging.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/markup.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/measure.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/padding.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/pager.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/palette.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/panel.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/pretty.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/progress.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/progress_bar.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/prompt.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/protocol.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/region.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/repr.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/rule.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/scope.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/screen.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/segment.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/spinner.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/status.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/style.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/styled.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/syntax.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/table.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/terminal_theme.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/text.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/theme.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/themes.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/traceback.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/tree.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_parser.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_re.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_types.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli_w/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli_w/_writer.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_api.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_macos.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_openssl.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_ssl_constants.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_windows.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/_collections.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/_version.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/connection.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/connectionpool.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/appengine.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/socks.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/exceptions.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/fields.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/filepost.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/six.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/poolmanager.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/request.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/response.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/connection.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/proxy.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/queue.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/request.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/response.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/retry.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssl_.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssltransport.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/timeout.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/url.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/wait.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/bump_version.sh +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/log_writer.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/master_healthcheck.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/models/claudecode.sh +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/models/codex.sh +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/models/common.sh +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/models/gemini.sh +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/publish.sh +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/requirements.txt +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/run_bot.sh +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/start.sh +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/stop_all.sh +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/stop_bot.sh +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/scripts/test_deps_check.sh +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/setup.cfg +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tasks/__init__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tasks/commands.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tasks/constants.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tasks/fsm.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tasks/models.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_attachment_prompt_format.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_auto_compact.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_claudecode_jsonl.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_long_poll_mechanism.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_markdown_guard.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_master_project_management.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_master_restart.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_master_update_notifications.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_numbered_reply_inputs.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_plan_progress.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_task_detail_back.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_task_list_entry.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_telegram_markdown_renderer.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_unescape_markdown.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/tests/test_version_display.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/vibego.egg-info/SOURCES.txt +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/vibego.egg-info/dependency_links.txt +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/vibego.egg-info/entry_points.txt +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/vibego.egg-info/requires.txt +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/vibego.egg-info/top_level.txt +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/vibego_cli/__main__.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/vibego_cli/config.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/vibego_cli/data/worker_requirements.txt +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/vibego_cli/deps.py +0 -0
- {vibego-1.0.7 → vibego-1.0.13}/vibego_cli/main.py +0 -0
|
@@ -20,6 +20,7 @@ from aiogram.filters import Command, CommandStart
|
|
|
20
20
|
from aiogram.filters.command import CommandObject
|
|
21
21
|
from aiogram.fsm.context import FSMContext
|
|
22
22
|
from aiogram.fsm.storage.memory import MemoryStorage
|
|
23
|
+
from aiogram.dispatcher.event.bases import SkipHandler
|
|
23
24
|
from aiogram.types import (
|
|
24
25
|
Message,
|
|
25
26
|
BufferedInputFile,
|
|
@@ -258,6 +259,7 @@ SEND_FAILURE_NOTICE_COOLDOWN = float(os.environ.get("SEND_FAILURE_NOTICE_COOLDOW
|
|
|
258
259
|
SESSION_INITIAL_BACKTRACK_BYTES = int(os.environ.get("SESSION_INITIAL_BACKTRACK_BYTES", "16384"))
|
|
259
260
|
ENABLE_PLAN_PROGRESS = (os.environ.get("ENABLE_PLAN_PROGRESS", "1").strip().lower() not in {"0", "false", "no", "off"})
|
|
260
261
|
AUTO_COMPACT_THRESHOLD = max(_env_int("AUTO_COMPACT_THRESHOLD", 0), 0)
|
|
262
|
+
SESSION_LOCK_REQUIRED = (os.environ.get("SESSION_LOCK_REQUIRED", "1").strip().lower() not in {"0", "false", "no", "off"})
|
|
261
263
|
|
|
262
264
|
PLAN_STATUS_LABELS = {
|
|
263
265
|
"completed": "✅",
|
|
@@ -989,6 +991,22 @@ async def _dispatch_prompt_to_model(
|
|
|
989
991
|
) -> tuple[bool, Optional[Path]]:
|
|
990
992
|
"""Handle session binding, acknowledgement, and watcher setup after pushing a prompt."""
|
|
991
993
|
|
|
994
|
+
if _is_menu_control_message(prompt):
|
|
995
|
+
worker_log.warning(
|
|
996
|
+
"Rejected menu control prompt before tmux dispatch",
|
|
997
|
+
extra={
|
|
998
|
+
"chat": chat_id,
|
|
999
|
+
**_session_extra(),
|
|
1000
|
+
"token": _normalize_choice_token(prompt),
|
|
1001
|
+
},
|
|
1002
|
+
)
|
|
1003
|
+
await _reply_to_chat(
|
|
1004
|
+
chat_id,
|
|
1005
|
+
"Skip/Cancel inputs are ignored outside interactive menus. Please send an actual prompt.",
|
|
1006
|
+
reply_to=reply_to,
|
|
1007
|
+
)
|
|
1008
|
+
return False, None
|
|
1009
|
+
|
|
992
1010
|
prev_watcher = CHAT_WATCHERS.pop(chat_id, None)
|
|
993
1011
|
if prev_watcher is not None:
|
|
994
1012
|
if not prev_watcher.done():
|
|
@@ -1038,6 +1056,7 @@ async def _dispatch_prompt_to_model(
|
|
|
1038
1056
|
pointer_path = resolve_path(CODEX_SESSION_FILE_PATH)
|
|
1039
1057
|
|
|
1040
1058
|
lock_session = _read_session_lock_path()
|
|
1059
|
+
lock_required = _is_session_lock_enforced()
|
|
1041
1060
|
if lock_session is not None:
|
|
1042
1061
|
if session_path is None:
|
|
1043
1062
|
worker_log.info(
|
|
@@ -1056,53 +1075,65 @@ async def _dispatch_prompt_to_model(
|
|
|
1056
1075
|
_sync_pointer_with_lock(pointer_path, lock_session)
|
|
1057
1076
|
session_path = lock_session
|
|
1058
1077
|
else:
|
|
1059
|
-
if
|
|
1060
|
-
session_path = _read_pointer_path(pointer_path)
|
|
1061
|
-
if session_path is not None:
|
|
1062
|
-
worker_log.info(
|
|
1063
|
-
"[session-map] chat=%s pointer -> %s",
|
|
1064
|
-
chat_id,
|
|
1065
|
-
session_path,
|
|
1066
|
-
extra=_session_extra(path=session_path),
|
|
1067
|
-
)
|
|
1068
|
-
elif session_path is not None:
|
|
1078
|
+
if session_path is not None:
|
|
1069
1079
|
worker_log.info(
|
|
1070
1080
|
"[session-map] chat=%s reuse session %s",
|
|
1071
1081
|
chat_id,
|
|
1072
1082
|
session_path,
|
|
1073
1083
|
extra=_session_extra(path=session_path),
|
|
1074
1084
|
)
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
chat_id,
|
|
1091
|
-
session_path,
|
|
1092
|
-
extra=_session_extra(path=session_path),
|
|
1093
|
-
)
|
|
1094
|
-
if _is_claudecode_model():
|
|
1095
|
-
fallback = _find_latest_claudecode_rollout(pointer_path)
|
|
1096
|
-
if fallback is not None and fallback != session_path:
|
|
1097
|
-
_update_pointer(pointer_path, fallback)
|
|
1098
|
-
session_path = fallback
|
|
1085
|
+
elif lock_required:
|
|
1086
|
+
await _reply_to_chat(
|
|
1087
|
+
chat_id,
|
|
1088
|
+
_session_lock_missing_message(),
|
|
1089
|
+
reply_to=reply_to,
|
|
1090
|
+
)
|
|
1091
|
+
worker_log.error(
|
|
1092
|
+
"[session-lock] Session lock required but missing",
|
|
1093
|
+
extra={"chat": chat_id, "lock_file": SESSION_LOCK_FILE_PATH or "-"},
|
|
1094
|
+
)
|
|
1095
|
+
return False, None
|
|
1096
|
+
else:
|
|
1097
|
+
if pointer_path is not None and session_path is None:
|
|
1098
|
+
session_path = _read_pointer_path(pointer_path)
|
|
1099
|
+
if session_path is not None:
|
|
1099
1100
|
worker_log.info(
|
|
1100
|
-
"[session-map] chat=%s
|
|
1101
|
+
"[session-map] chat=%s pointer -> %s",
|
|
1101
1102
|
chat_id,
|
|
1102
1103
|
session_path,
|
|
1103
1104
|
extra=_session_extra(path=session_path),
|
|
1104
1105
|
)
|
|
1105
1106
|
|
|
1107
|
+
target_cwd = CODEX_WORKDIR if CODEX_WORKDIR else None
|
|
1108
|
+
if pointer_path is not None:
|
|
1109
|
+
current_cwd = _read_session_meta_cwd(session_path) if session_path else None
|
|
1110
|
+
if session_path is None or (target_cwd and current_cwd != target_cwd):
|
|
1111
|
+
latest = _find_latest_rollout_for_cwd(pointer_path, target_cwd)
|
|
1112
|
+
if latest is not None:
|
|
1113
|
+
try:
|
|
1114
|
+
SESSION_OFFSETS[str(latest)] = latest.stat().st_size
|
|
1115
|
+
except FileNotFoundError:
|
|
1116
|
+
SESSION_OFFSETS[str(latest)] = 0
|
|
1117
|
+
_update_pointer(pointer_path, latest)
|
|
1118
|
+
session_path = latest
|
|
1119
|
+
worker_log.info(
|
|
1120
|
+
"[session-map] chat=%s (lock disabled) switch to cwd-matched %s",
|
|
1121
|
+
chat_id,
|
|
1122
|
+
session_path,
|
|
1123
|
+
extra=_session_extra(path=session_path),
|
|
1124
|
+
)
|
|
1125
|
+
if _is_claudecode_model():
|
|
1126
|
+
fallback = _find_latest_claudecode_rollout(pointer_path)
|
|
1127
|
+
if fallback is not None and fallback != session_path:
|
|
1128
|
+
_update_pointer(pointer_path, fallback)
|
|
1129
|
+
session_path = fallback
|
|
1130
|
+
worker_log.info(
|
|
1131
|
+
"[session-map] chat=%s (lock disabled) fallback to ClaudeCode session %s",
|
|
1132
|
+
chat_id,
|
|
1133
|
+
session_path,
|
|
1134
|
+
extra=_session_extra(path=session_path),
|
|
1135
|
+
)
|
|
1136
|
+
|
|
1106
1137
|
needs_session_wait = session_path is None
|
|
1107
1138
|
if needs_session_wait and pointer_path is None:
|
|
1108
1139
|
await _reply_to_chat(
|
|
@@ -1802,6 +1833,17 @@ async def _enqueue_media_group_message(message: Message, text_part: Optional[str
|
|
|
1802
1833
|
async def _handle_prompt_dispatch(message: Message, prompt: str) -> None:
|
|
1803
1834
|
"""Wrapper routine that pushes prompts to the model."""
|
|
1804
1835
|
|
|
1836
|
+
if _is_menu_control_message(prompt):
|
|
1837
|
+
worker_log.info(
|
|
1838
|
+
"Dropped menu control prompt during dispatch",
|
|
1839
|
+
extra={
|
|
1840
|
+
**_session_extra(),
|
|
1841
|
+
"chat": getattr(message.chat, "id", None),
|
|
1842
|
+
"token": _normalize_choice_token(prompt),
|
|
1843
|
+
},
|
|
1844
|
+
)
|
|
1845
|
+
return
|
|
1846
|
+
|
|
1805
1847
|
if ENV_ISSUES:
|
|
1806
1848
|
message_text = _format_env_issue_message()
|
|
1807
1849
|
worker_log.warning(
|
|
@@ -1840,8 +1882,33 @@ BOT_COMMANDS: list[tuple[str, str]] = [
|
|
|
1840
1882
|
COMMAND_KEYWORDS: set[str] = {command for command, _ in BOT_COMMANDS}
|
|
1841
1883
|
COMMAND_KEYWORDS.update({"task_child", "task_children", "task_delete"})
|
|
1842
1884
|
|
|
1843
|
-
|
|
1844
|
-
|
|
1885
|
+
def _button_text_variants(env_key: str, fallback: Sequence[str]) -> tuple[str, ...]:
|
|
1886
|
+
"""Return button label candidates sourced from env or fallback list."""
|
|
1887
|
+
|
|
1888
|
+
raw = (os.environ.get(env_key) or "").strip()
|
|
1889
|
+
if not raw:
|
|
1890
|
+
return tuple(fallback)
|
|
1891
|
+
variants = []
|
|
1892
|
+
for segment in raw.split("|"):
|
|
1893
|
+
cleaned = segment.strip()
|
|
1894
|
+
if cleaned and cleaned not in variants:
|
|
1895
|
+
variants.append(cleaned)
|
|
1896
|
+
return tuple(variants or fallback)
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
WORKER_MENU_BUTTON_TEXT_VARIANTS = _button_text_variants(
|
|
1900
|
+
"WORKER_MENU_BUTTON_TEXTS",
|
|
1901
|
+
("📋 Task List", "📋 任务列表"),
|
|
1902
|
+
)
|
|
1903
|
+
WORKER_CREATE_TASK_BUTTON_TEXT_VARIANTS = _button_text_variants(
|
|
1904
|
+
"WORKER_CREATE_TASK_BUTTON_TEXTS",
|
|
1905
|
+
("➕ Create Task", "➕ 创建任务"),
|
|
1906
|
+
)
|
|
1907
|
+
|
|
1908
|
+
WORKER_MENU_BUTTON_TEXT = WORKER_MENU_BUTTON_TEXT_VARIANTS[0]
|
|
1909
|
+
WORKER_CREATE_TASK_BUTTON_TEXT = WORKER_CREATE_TASK_BUTTON_TEXT_VARIANTS[0]
|
|
1910
|
+
WORKER_MENU_BUTTON_TEXT_SET = set(WORKER_MENU_BUTTON_TEXT_VARIANTS)
|
|
1911
|
+
WORKER_CREATE_TASK_BUTTON_TEXT_SET = set(WORKER_CREATE_TASK_BUTTON_TEXT_VARIANTS)
|
|
1845
1912
|
|
|
1846
1913
|
TASK_ID_VALID_PATTERN = re.compile(r"^TASK_[A-Z0-9_]+$")
|
|
1847
1914
|
TASK_ID_USAGE_TIP = "Invalid task ID format. Use patterns like TASK_0001."
|
|
@@ -2260,6 +2327,12 @@ def _is_cancel_message(value: Optional[str]) -> bool:
|
|
|
2260
2327
|
return lowered in cancel_tokens
|
|
2261
2328
|
|
|
2262
2329
|
|
|
2330
|
+
def _is_menu_control_message(value: Optional[str]) -> bool:
|
|
2331
|
+
"""Return True when the payload represents a generic Skip/Cancel menu action."""
|
|
2332
|
+
|
|
2333
|
+
return _is_skip_message(value) or _is_cancel_message(value)
|
|
2334
|
+
|
|
2335
|
+
|
|
2263
2336
|
_MARKDOWN_ESCAPE_RE = re.compile(r"([_*\[\]()~`>#+=|{}.!])")
|
|
2264
2337
|
TASK_REFERENCE_PATTERN = re.compile(r"/?TASK[_]?\d{4,}")
|
|
2265
2338
|
|
|
@@ -2355,6 +2428,9 @@ MODEL_PUSH_SUPPLEMENT_STATUSES: set[str] = {
|
|
|
2355
2428
|
"research",
|
|
2356
2429
|
"test",
|
|
2357
2430
|
}
|
|
2431
|
+
PUSH_MODEL_SUPPLEMENT_IN_PROGRESS_TEXT = (
|
|
2432
|
+
"A supplementary description prompt is already active. Please respond or tap Skip/Cancel."
|
|
2433
|
+
)
|
|
2358
2434
|
|
|
2359
2435
|
SUMMARY_COMMAND_PREFIX = "/task_summary_request_"
|
|
2360
2436
|
SUMMARY_COMMAND_ALIASES: tuple[str, ...] = (
|
|
@@ -3030,6 +3106,9 @@ async def _build_history_context_for_model(task_id: str) -> tuple[str, int]:
|
|
|
3030
3106
|
return "\n".join(trimmed_lines), len(trimmed_lines)
|
|
3031
3107
|
|
|
3032
3108
|
|
|
3109
|
+
SKIPPED_TASK_HISTORY_ACTIONS: set[str] = {"push_model", "summary_request"}
|
|
3110
|
+
|
|
3111
|
+
|
|
3033
3112
|
async def _log_task_action(
|
|
3034
3113
|
task_id: str,
|
|
3035
3114
|
*,
|
|
@@ -3043,11 +3122,20 @@ async def _log_task_action(
|
|
|
3043
3122
|
) -> None:
|
|
3044
3123
|
"""Encapsulate task event writing and record logs when exceptions occur to avoid interrupting the main process."""
|
|
3045
3124
|
|
|
3125
|
+
action_token = (action or "").strip()
|
|
3126
|
+
if action_token in SKIPPED_TASK_HISTORY_ACTIONS:
|
|
3127
|
+
worker_log.debug(
|
|
3128
|
+
"Skipped logging task action in history: task_id=%s action=%s",
|
|
3129
|
+
task_id,
|
|
3130
|
+
action_token,
|
|
3131
|
+
extra=_session_extra(),
|
|
3132
|
+
)
|
|
3133
|
+
return
|
|
3046
3134
|
data_payload: Optional[Dict[str, Any]]
|
|
3047
3135
|
if payload is None:
|
|
3048
|
-
data_payload = {"action":
|
|
3136
|
+
data_payload = {"action": action_token}
|
|
3049
3137
|
else:
|
|
3050
|
-
data_payload = {"action":
|
|
3138
|
+
data_payload = {"action": action_token, **payload}
|
|
3051
3139
|
try:
|
|
3052
3140
|
await TASK_SERVICE.log_task_event(
|
|
3053
3141
|
task_id,
|
|
@@ -4318,29 +4406,12 @@ async def _log_model_reply_event(
|
|
|
4318
4406
|
session_path: Path,
|
|
4319
4407
|
event_offset: int,
|
|
4320
4408
|
) -> None:
|
|
4321
|
-
"""
|
|
4409
|
+
"""Model replies are no longer persisted to history."""
|
|
4322
4410
|
|
|
4323
|
-
|
|
4324
|
-
|
|
4325
|
-
"
|
|
4326
|
-
|
|
4327
|
-
"offset": event_offset,
|
|
4328
|
-
}
|
|
4329
|
-
if content:
|
|
4330
|
-
payload["content"] = content[:MODEL_REPLY_PAYLOAD_LIMIT]
|
|
4331
|
-
try:
|
|
4332
|
-
await TASK_SERVICE.log_task_event(
|
|
4333
|
-
task_id,
|
|
4334
|
-
event_type=HISTORY_EVENT_MODEL_REPLY,
|
|
4335
|
-
actor=f"model/{ACTIVE_MODEL or 'codex'}",
|
|
4336
|
-
new_value=trimmed,
|
|
4337
|
-
payload=payload,
|
|
4338
|
-
)
|
|
4339
|
-
except ValueError:
|
|
4340
|
-
worker_log.warning(
|
|
4341
|
-
"The model reply writes fail: Task does not exist",
|
|
4342
|
-
extra={"task_id": task_id, **_session_extra(path=session_path)},
|
|
4343
|
-
)
|
|
4411
|
+
worker_log.debug(
|
|
4412
|
+
"Skipping history write for model reply",
|
|
4413
|
+
extra={"task_id": task_id, "session": str(session_path)},
|
|
4414
|
+
)
|
|
4344
4415
|
|
|
4345
4416
|
|
|
4346
4417
|
async def _maybe_finalize_summary(
|
|
@@ -4813,6 +4884,7 @@ async def _ensure_session_watcher(chat_id: int) -> Optional[Path]:
|
|
|
4813
4884
|
target_cwd = CODEX_WORKDIR or None
|
|
4814
4885
|
|
|
4815
4886
|
lock_session = _read_session_lock_path()
|
|
4887
|
+
lock_required = _is_session_lock_enforced()
|
|
4816
4888
|
if lock_session is not None:
|
|
4817
4889
|
if session_path is None or session_path != lock_session:
|
|
4818
4890
|
worker_log.info(
|
|
@@ -4824,6 +4896,12 @@ async def _ensure_session_watcher(chat_id: int) -> Optional[Path]:
|
|
|
4824
4896
|
_sync_pointer_with_lock(pointer_path, lock_session)
|
|
4825
4897
|
session_path = lock_session
|
|
4826
4898
|
else:
|
|
4899
|
+
if lock_required:
|
|
4900
|
+
worker_log.error(
|
|
4901
|
+
"[session-lock] Session lock required but missing during watcher ensure",
|
|
4902
|
+
extra={"chat": chat_id, "lock_file": SESSION_LOCK_FILE_PATH or "-"},
|
|
4903
|
+
)
|
|
4904
|
+
return None
|
|
4827
4905
|
if session_path is None and pointer_path is not None:
|
|
4828
4906
|
session_path = _read_pointer_path(pointer_path)
|
|
4829
4907
|
if session_path is not None:
|
|
@@ -5310,6 +5388,23 @@ def _session_lock_file() -> Optional[Path]:
|
|
|
5310
5388
|
return resolve_path(SESSION_LOCK_FILE_PATH)
|
|
5311
5389
|
|
|
5312
5390
|
|
|
5391
|
+
def _is_session_lock_enforced() -> bool:
|
|
5392
|
+
"""Return True when the worker must rely on the captured session lock."""
|
|
5393
|
+
|
|
5394
|
+
return SESSION_LOCK_REQUIRED and bool(SESSION_LOCK_FILE_PATH)
|
|
5395
|
+
|
|
5396
|
+
|
|
5397
|
+
def _session_lock_missing_message() -> str:
|
|
5398
|
+
"""Build a human-readable error when the session lock is missing."""
|
|
5399
|
+
|
|
5400
|
+
target = SESSION_LOCK_FILE_PATH or "session_lock.json"
|
|
5401
|
+
return (
|
|
5402
|
+
"当前 worker 未检测到会话锁,无法定位本项目独占的模型会话。\n"
|
|
5403
|
+
f"缺失的锁文件:{target}\n"
|
|
5404
|
+
"请在对应项目目录重新执行 scripts/run_bot.sh(或等效启动脚本)以捕获新的 tmux 会话。"
|
|
5405
|
+
)
|
|
5406
|
+
|
|
5407
|
+
|
|
5313
5408
|
def _read_session_lock_path() -> Optional[Path]:
|
|
5314
5409
|
"""Read the persisted session lock and return the rollout path when valid."""
|
|
5315
5410
|
|
|
@@ -6069,7 +6164,7 @@ async def on_task_list(message: Message) -> None:
|
|
|
6069
6164
|
await _handle_task_list_request(message)
|
|
6070
6165
|
|
|
6071
6166
|
|
|
6072
|
-
@router.message(F.text
|
|
6167
|
+
@router.message(F.text.in_(WORKER_MENU_BUTTON_TEXT_SET))
|
|
6073
6168
|
async def on_task_list_button(message: Message) -> None:
|
|
6074
6169
|
await _handle_task_list_request(message)
|
|
6075
6170
|
|
|
@@ -6104,7 +6199,7 @@ async def _dispatch_task_new_command(source_message: Message, actor: Optional[Us
|
|
|
6104
6199
|
await dp.feed_update(bot_instance, update)
|
|
6105
6200
|
|
|
6106
6201
|
|
|
6107
|
-
@router.message(F.text
|
|
6202
|
+
@router.message(F.text.in_(WORKER_CREATE_TASK_BUTTON_TEXT_SET))
|
|
6108
6203
|
async def on_task_create_button(message: Message, state: FSMContext) -> None:
|
|
6109
6204
|
await state.clear()
|
|
6110
6205
|
try:
|
|
@@ -6791,6 +6886,10 @@ async def on_task_push_model(callback: CallbackQuery, state: FSMContext) -> None
|
|
|
6791
6886
|
await callback.answer("Callback parameter error.", show_alert=True)
|
|
6792
6887
|
return
|
|
6793
6888
|
_, _, task_id = parts
|
|
6889
|
+
current_state = await state.get_state()
|
|
6890
|
+
existing_context: Dict[str, Any] = {}
|
|
6891
|
+
if current_state == TaskPushStates.waiting_supplement.state:
|
|
6892
|
+
existing_context = await state.get_data()
|
|
6794
6893
|
task = await TASK_SERVICE.get_task(task_id)
|
|
6795
6894
|
if task is None:
|
|
6796
6895
|
await callback.answer("Task does not exist", show_alert=True)
|
|
@@ -6801,10 +6900,20 @@ async def on_task_push_model(callback: CallbackQuery, state: FSMContext) -> None
|
|
|
6801
6900
|
actor = _actor_from_callback(callback)
|
|
6802
6901
|
chat_id = callback.message.chat.id if callback.message else callback.from_user.id
|
|
6803
6902
|
if task.status in MODEL_PUSH_SUPPLEMENT_STATUSES:
|
|
6903
|
+
origin_message = callback.message
|
|
6904
|
+
origin_message_id = origin_message.message_id if origin_message else None
|
|
6905
|
+
if (
|
|
6906
|
+
current_state == TaskPushStates.waiting_supplement.state
|
|
6907
|
+
and existing_context.get("task_id") == task_id
|
|
6908
|
+
and existing_context.get("origin_message_id") == origin_message_id
|
|
6909
|
+
):
|
|
6910
|
+
await callback.answer(PUSH_MODEL_SUPPLEMENT_IN_PROGRESS_TEXT)
|
|
6911
|
+
return
|
|
6804
6912
|
await state.clear()
|
|
6805
6913
|
await state.update_data(
|
|
6806
6914
|
task_id=task_id,
|
|
6807
|
-
origin_message=
|
|
6915
|
+
origin_message=origin_message,
|
|
6916
|
+
origin_message_id=origin_message_id,
|
|
6808
6917
|
chat_id=chat_id,
|
|
6809
6918
|
actor=actor,
|
|
6810
6919
|
)
|
|
@@ -6904,16 +7013,31 @@ async def on_task_push_model_fill(callback: CallbackQuery, state: FSMContext) ->
|
|
|
6904
7013
|
await callback.answer("Callback parameter error.", show_alert=True)
|
|
6905
7014
|
return
|
|
6906
7015
|
_, _, task_id = parts
|
|
7016
|
+
current_state = await state.get_state()
|
|
7017
|
+
existing_context: Dict[str, Any] = {}
|
|
7018
|
+
if current_state == TaskPushStates.waiting_supplement.state:
|
|
7019
|
+
existing_context = await state.get_data()
|
|
6907
7020
|
task = await TASK_SERVICE.get_task(task_id)
|
|
6908
7021
|
if task is None:
|
|
6909
7022
|
await state.clear()
|
|
6910
7023
|
await callback.answer("Task does not exist", show_alert=True)
|
|
6911
7024
|
return
|
|
6912
7025
|
actor = _actor_from_callback(callback)
|
|
7026
|
+
origin_message = callback.message
|
|
7027
|
+
origin_message_id = origin_message.message_id if origin_message else None
|
|
7028
|
+
if (
|
|
7029
|
+
current_state == TaskPushStates.waiting_supplement.state
|
|
7030
|
+
and existing_context.get("task_id") == task_id
|
|
7031
|
+
and existing_context.get("origin_message_id") == origin_message_id
|
|
7032
|
+
):
|
|
7033
|
+
await callback.answer(PUSH_MODEL_SUPPLEMENT_IN_PROGRESS_TEXT)
|
|
7034
|
+
return
|
|
7035
|
+
await state.clear()
|
|
6913
7036
|
await state.update_data(
|
|
6914
7037
|
task_id=task_id,
|
|
6915
|
-
origin_message=
|
|
6916
|
-
|
|
7038
|
+
origin_message=origin_message,
|
|
7039
|
+
origin_message_id=origin_message_id,
|
|
7040
|
+
chat_id=origin_message.chat.id if origin_message else callback.from_user.id,
|
|
6917
7041
|
actor=actor,
|
|
6918
7042
|
)
|
|
6919
7043
|
await state.set_state(TaskPushStates.waiting_supplement)
|
|
@@ -6931,18 +7055,18 @@ async def on_task_push_model_supplement(message: Message, state: FSMContext) ->
|
|
|
6931
7055
|
if resolved == "Cancel" or trimmed == "Cancel":
|
|
6932
7056
|
await state.clear()
|
|
6933
7057
|
await message.answer("Push to the model cancelled.", reply_markup=_build_worker_main_keyboard())
|
|
6934
|
-
|
|
7058
|
+
raise SkipHandler()
|
|
6935
7059
|
data = await state.get_data()
|
|
6936
7060
|
task_id = data.get("task_id")
|
|
6937
7061
|
if not task_id:
|
|
6938
7062
|
await state.clear()
|
|
6939
7063
|
await message.answer("The push session has expired, please click the button again.", reply_markup=_build_worker_main_keyboard())
|
|
6940
|
-
|
|
7064
|
+
raise SkipHandler()
|
|
6941
7065
|
task = await TASK_SERVICE.get_task(task_id)
|
|
6942
7066
|
if task is None:
|
|
6943
7067
|
await state.clear()
|
|
6944
7068
|
await message.answer("Task not found. Push cancelled.", reply_markup=_build_worker_main_keyboard())
|
|
6945
|
-
|
|
7069
|
+
raise SkipHandler()
|
|
6946
7070
|
supplement: Optional[str] = None
|
|
6947
7071
|
if trimmed and resolved != SKIP_TEXT:
|
|
6948
7072
|
if len(trimmed) > DESCRIPTION_MAX_LENGTH:
|
|
@@ -6950,7 +7074,7 @@ async def on_task_push_model_supplement(message: Message, state: FSMContext) ->
|
|
|
6950
7074
|
f"Supplementary task description cannot exceed {DESCRIPTION_MAX_LENGTH} characters. Please re-enter:",
|
|
6951
7075
|
reply_markup=_build_description_keyboard(),
|
|
6952
7076
|
)
|
|
6953
|
-
|
|
7077
|
+
raise SkipHandler()
|
|
6954
7078
|
supplement = raw_text.strip()
|
|
6955
7079
|
chat_id = data.get("chat_id") or message.chat.id
|
|
6956
7080
|
origin_message = data.get("origin_message")
|
|
@@ -6971,11 +7095,11 @@ async def on_task_push_model_supplement(message: Message, state: FSMContext) ->
|
|
|
6971
7095
|
extra={"task_id": task_id, "status": task.status if task else None},
|
|
6972
7096
|
)
|
|
6973
7097
|
await message.answer("Push failed: missing template configuration.", reply_markup=_build_worker_main_keyboard())
|
|
6974
|
-
|
|
7098
|
+
raise SkipHandler()
|
|
6975
7099
|
await state.clear()
|
|
6976
7100
|
if not success:
|
|
6977
7101
|
await message.answer("Push failed: model is not ready. Please retry shortly.", reply_markup=_build_worker_main_keyboard())
|
|
6978
|
-
|
|
7102
|
+
raise SkipHandler()
|
|
6979
7103
|
preview_block, preview_parse_mode = _wrap_text_in_code_block(prompt)
|
|
6980
7104
|
await _reply_to_chat(
|
|
6981
7105
|
chat_id,
|
|
@@ -6986,6 +7110,7 @@ async def on_task_push_model_supplement(message: Message, state: FSMContext) ->
|
|
|
6986
7110
|
)
|
|
6987
7111
|
if session_path is not None:
|
|
6988
7112
|
await _send_session_ack(chat_id, session_path, reply_to=origin_message)
|
|
7113
|
+
raise SkipHandler()
|
|
6989
7114
|
|
|
6990
7115
|
|
|
6991
7116
|
@router.callback_query(F.data.startswith("task:history:"))
|
|
@@ -8083,10 +8208,14 @@ async def on_start(m: Message):
|
|
|
8083
8208
|
await m.answer(_format_env_issue_message())
|
|
8084
8209
|
|
|
8085
8210
|
@router.message(F.text)
|
|
8086
|
-
async def on_text(m: Message):
|
|
8211
|
+
async def on_text(m: Message, state: FSMContext | None = None):
|
|
8087
8212
|
# Automatically record chat when first received message_id to state document
|
|
8088
8213
|
_auto_record_chat_id(m.chat.id)
|
|
8089
8214
|
|
|
8215
|
+
current_state: Optional[str] = None
|
|
8216
|
+
if state is not None:
|
|
8217
|
+
current_state = await state.get_state()
|
|
8218
|
+
|
|
8090
8219
|
prompt = (m.text or "").strip()
|
|
8091
8220
|
if not prompt:
|
|
8092
8221
|
return await m.answer("Please enter a non-empty prompt word")
|
|
@@ -8096,6 +8225,22 @@ async def on_text(m: Message):
|
|
|
8096
8225
|
return
|
|
8097
8226
|
if prompt.startswith("/"):
|
|
8098
8227
|
return
|
|
8228
|
+
if current_state:
|
|
8229
|
+
worker_log.debug(
|
|
8230
|
+
"Suppressed model dispatch due to active wizard state",
|
|
8231
|
+
extra={**_session_extra(), "chat": m.chat.id, "state": current_state},
|
|
8232
|
+
)
|
|
8233
|
+
return
|
|
8234
|
+
if _is_menu_control_message(prompt):
|
|
8235
|
+
worker_log.info(
|
|
8236
|
+
"Suppressed stray menu control input without active wizard",
|
|
8237
|
+
extra={
|
|
8238
|
+
**_session_extra(),
|
|
8239
|
+
"chat": getattr(m.chat, "id", None),
|
|
8240
|
+
"token": _normalize_choice_token(prompt),
|
|
8241
|
+
},
|
|
8242
|
+
)
|
|
8243
|
+
return
|
|
8099
8244
|
await _handle_prompt_dispatch(m, prompt)
|
|
8100
8245
|
|
|
8101
8246
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "vibego"
|
|
7
|
-
version = "1.0.
|
|
7
|
+
version = "1.0.13"
|
|
8
8
|
description = "vibego CLI: tools for bootstrapping and managing the Telegram Master Bot"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -42,7 +42,7 @@ include = ["vibego_cli", "tasks", "scripts"]
|
|
|
42
42
|
"scripts" = ["*.sh", "models/*.sh"]
|
|
43
43
|
|
|
44
44
|
[tool.bumpversion]
|
|
45
|
-
current_version = "1.0.
|
|
45
|
+
current_version = "1.0.13"
|
|
46
46
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
|
47
47
|
serialize = ["{major}.{minor}.{patch}"]
|
|
48
48
|
search = "{current_version}"
|
|
@@ -239,8 +239,13 @@ def main(argv: Optional[list[str]] = None) -> int:
|
|
|
239
239
|
observer.join(timeout=5)
|
|
240
240
|
|
|
241
241
|
if session_path is None:
|
|
242
|
-
log.error(
|
|
243
|
-
|
|
242
|
+
log.error(
|
|
243
|
+
"Failed to detect rollout file within timeout %.1fs (tmux session=%s, project=%s)",
|
|
244
|
+
args.timeout,
|
|
245
|
+
args.tmux_session or "-",
|
|
246
|
+
args.project or "-",
|
|
247
|
+
)
|
|
248
|
+
return 1
|
|
244
249
|
|
|
245
250
|
_write_pointer(pointer_path, session_path)
|
|
246
251
|
_write_lock(
|
|
@@ -163,7 +163,10 @@ if (( ! DRY_RUN )); then
|
|
|
163
163
|
WATCH_ARGS+=("--additional-root" "$(dirname "$SESSION_POINTER_FILE")/sessions")
|
|
164
164
|
WATCH_ARGS+=("--timeout" "$SESSION_CAPTURE_TIMEOUT")
|
|
165
165
|
WATCH_ARGS+=("--poll" "$SESSION_CAPTURE_POLL_INTERVAL")
|
|
166
|
-
"${WATCH_ARGS[@]}"
|
|
166
|
+
if ! "${WATCH_ARGS[@]}"; then
|
|
167
|
+
echo "Failed to capture Codex/Claude session log for tmux session '$SESSION_NAME'. Please check CLI startup output." >&2
|
|
168
|
+
exit 1
|
|
169
|
+
fi
|
|
167
170
|
fi
|
|
168
171
|
|
|
169
172
|
exit 0
|
|
@@ -445,15 +445,6 @@ class TaskService:
|
|
|
445
445
|
0,
|
|
446
446
|
),
|
|
447
447
|
)
|
|
448
|
-
await self._insert_history(
|
|
449
|
-
db,
|
|
450
|
-
task_id,
|
|
451
|
-
"create",
|
|
452
|
-
None,
|
|
453
|
-
title,
|
|
454
|
-
actor,
|
|
455
|
-
created_at=now,
|
|
456
|
-
)
|
|
457
448
|
await db.commit()
|
|
458
449
|
return TaskRecord(
|
|
459
450
|
id=task_id,
|
|
@@ -605,10 +596,8 @@ class TaskService:
|
|
|
605
596
|
raise ValueError("Task does not exist")
|
|
606
597
|
updates = []
|
|
607
598
|
params: List[object] = []
|
|
608
|
-
history_items: List[Tuple[str, Optional[str], Optional[str]]] = []
|
|
609
599
|
if title is not None and title != row["title"]:
|
|
610
600
|
updates.append("title = ?")
|
|
611
|
-
history_items.append(("title", row["title"], title))
|
|
612
601
|
params.append(title)
|
|
613
602
|
if status is not None:
|
|
614
603
|
normalized_status = self._normalize_status_token(status, context="update")
|
|
@@ -624,35 +613,28 @@ class TaskService:
|
|
|
624
613
|
status_value = None
|
|
625
614
|
if status_value is not None and status_value != row["status"]:
|
|
626
615
|
updates.append("status = ?")
|
|
627
|
-
history_items.append(("status", row["status"], status_value))
|
|
628
616
|
params.append(status_value)
|
|
629
617
|
if priority is not None and priority != row["priority"]:
|
|
630
618
|
updates.append("priority = ?")
|
|
631
|
-
history_items.append(("priority", str(row["priority"]), str(priority)))
|
|
632
619
|
params.append(priority)
|
|
633
620
|
if task_type is not None and task_type != row["task_type"]:
|
|
634
621
|
updates.append("task_type = ?")
|
|
635
|
-
history_items.append(("task_type", row["task_type"], task_type))
|
|
636
622
|
params.append(task_type)
|
|
637
623
|
if tags is not None:
|
|
638
624
|
tags_json = json.dumps(list(tags))
|
|
639
625
|
if tags_json != row["tags"]:
|
|
640
626
|
updates.append("tags = ?")
|
|
641
|
-
history_items.append(("tags", row["tags"], tags_json))
|
|
642
627
|
params.append(tags_json)
|
|
643
628
|
if due_date is not None and due_date != row["due_date"]:
|
|
644
629
|
updates.append("due_date = ?")
|
|
645
|
-
history_items.append(("due_date", row["due_date"], due_date))
|
|
646
630
|
params.append(due_date)
|
|
647
631
|
if description is not None and description != row["description"]:
|
|
648
632
|
updates.append("description = ?")
|
|
649
|
-
history_items.append(("description", row["description"], description))
|
|
650
633
|
params.append(description)
|
|
651
634
|
if archived is not None:
|
|
652
635
|
archived_int = 1 if archived else 0
|
|
653
636
|
if archived_int != row["archived"]:
|
|
654
637
|
updates.append("archived = ?")
|
|
655
|
-
history_items.append(("archived", str(row["archived"]), str(archived_int)))
|
|
656
638
|
params.append(archived_int)
|
|
657
639
|
if updates:
|
|
658
640
|
now = shanghai_now_iso()
|
|
@@ -663,16 +645,6 @@ class TaskService:
|
|
|
663
645
|
f"UPDATE tasks SET {' , '.join(updates)} WHERE id = ?",
|
|
664
646
|
params,
|
|
665
647
|
)
|
|
666
|
-
for field, old, new in history_items:
|
|
667
|
-
await self._insert_history(
|
|
668
|
-
db,
|
|
669
|
-
task_id,
|
|
670
|
-
field,
|
|
671
|
-
old,
|
|
672
|
-
new,
|
|
673
|
-
actor,
|
|
674
|
-
created_at=now,
|
|
675
|
-
)
|
|
676
648
|
await db.commit()
|
|
677
649
|
updated = await self.get_task(task_id)
|
|
678
650
|
if updated is None:
|
|
@@ -687,7 +659,7 @@ class TaskService:
|
|
|
687
659
|
content: str,
|
|
688
660
|
actor: Optional[str],
|
|
689
661
|
) -> TaskNoteRecord:
|
|
690
|
-
"""Append a note to a task
|
|
662
|
+
"""Append a note to a task (notes no longer create task history entries)."""
|
|
691
663
|
|
|
692
664
|
canonical_task_id = self._canonical_task_id(task_id)
|
|
693
665
|
if not canonical_task_id:
|
|
@@ -711,23 +683,6 @@ class TaskService:
|
|
|
711
683
|
(task_id, note_type, content, now),
|
|
712
684
|
)
|
|
713
685
|
note_id = cursor.lastrowid
|
|
714
|
-
payload = {
|
|
715
|
-
"action": "add_note",
|
|
716
|
-
"note_type": note_type,
|
|
717
|
-
"note_id": note_id,
|
|
718
|
-
"content_length": len(content or ""),
|
|
719
|
-
}
|
|
720
|
-
await self._insert_history(
|
|
721
|
-
db,
|
|
722
|
-
task_id,
|
|
723
|
-
"note",
|
|
724
|
-
None,
|
|
725
|
-
content,
|
|
726
|
-
actor,
|
|
727
|
-
event_type="task_action",
|
|
728
|
-
payload=json.dumps(payload, ensure_ascii=False),
|
|
729
|
-
created_at=now,
|
|
730
|
-
)
|
|
731
686
|
await db.commit()
|
|
732
687
|
return TaskNoteRecord(
|
|
733
688
|
id=note_id,
|