Skip to content

Releases: Yahor777/repopilot-bridge

v3.10.1 — Фикс формулировки preflight в letaido-промпте

Choose a tag to compare

@Yahor777 Yahor777 released this 07 Jul 20:27

v3.10.1 — Фикс формулировки preflight в letaido-промпте

Маленький патч к v3.10.0. Без поведенческих изменений — только текст промпта подключения для letaido.com, чтобы агент не тратил ходы на холостые запросы к api-proxy.

Проблема

В v3.10.0 промпт для letaido.com заканчивался фразой:

«После одобрения обоих — preflight через api-proxy (он подставит X-API-Key в заголовок)»

Агенты читали это как «обращайся к api-proxy по специальному URL-префиксу» и перебирали варианты, каждый раз получая {"error":"Unknown API: …"}:

127.0.0.1:18081/proxy/<туннель>/session   → Unknown API: proxy
127.0.0.1:18081/<туннель>/session         → Unknown API: <туннель>
127.0.0.1:18081/https/<туннель>/session    → Unknown API: https
127.0.0.1:18081/outbound/<туннель>/session → Unknown API: outbound
127.0.0.1:18081/http/<туннель>/session     → Unknown API: http
127.0.0.1:18081/request/<туннель>/session → Unknown API: request

…и только потом догадывались сделать прямой curl https://<туннель>/health, который сразу возвращал 200.

Причина

api-proxy — прозрачный egress-прокси: он перехватывает исходящий трафик к allowlisted-домену на сетевом уровне и сам подставляет X-API-Key в заголовок. Никакого специального пути для вызова «через него» нет — нужно просто обращаться к туннелю напрямую.

Решение

Переформулирован блок preflight в letaido-промпте:

«После одобрения обоих — preflight обычными HTTP-запросами к эндпоинтам туннеля (https://<туннель>/session, /health, /git/status). Исходящий трафик к allowlisted-домену проходит через api-proxy как прозрачный прокси — он сам подставит X-API-Key в заголовок, никакого URL-префикса для прокси (вроде /proxy/ или /http/) не нужно, обращайся к туннелю напрямую.»

Что НЕ изменилось

  • Туннели, сессии, режимы — без изменений.
  • Промпты для prompt.ql.app и Сторонний сервис — без изменений.
  • task_prompt — без изменений.
  • Выбор AI-клиента и settings.json — без изменений.

Зеркалирование

Исправление внесено в build_prompts (start.sh, POSIX) и Build-Prompts (start.ps1, Windows). Версия поднята до 3.10.1.

Установка / обновление

Windows (PowerShell)

powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/Yahor777/repopilot-bridge/v3.10.1/bootstrap.ps1 | iex"

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/Yahor777/repopilot-bridge/v3.10.1/bootstrap.sh | bash

Установите повторно — настройки сохранятся. Существующие сессии продолжат работать; новый промпт применяется к новым сессиям после выбора letaido.com.

Полный список изменений

См. CHANGELOG.md.

v3.10.0 — Выбор AI-клиента (letaido.com / prompt.ql.app / сторонний сервис)

Choose a tag to compare

@Yahor777 Yahor777 released this 07 Jul 20:15

v3.10.0 — Выбор AI-клиента

RepoPilot Bridge теперь спрашивает «куда подключаемся» перед запуском и генерирует нативный промпт подключения под каждого клиента — вместо единого PromptQL-стиля.

Что нового

Экран выбора AI-клиента

При первом запуске (или если в settings.json нет поля aiClient) перед главным меню появляется выбор:

Куда подключаемся:
  1. letaido.com
  2. prompt.ql.app (Сейчас не активно)
  3. Сторонний сервис

Выбор сохраняется в settings.json рядом с tunnelProvider. Сменить можно позже: GA в настройках.

Нативные промпты под каждого клиента

Клиент Подход Что в промпте
letaido.com request_domain_access + request_secret(header=X-API-Key) через api-proxy нет несуществующей «custom API integration / provider id» — у letaido фиксированный каталог коннекторов
prompt.ql.app custom API integration с provider id / base_url / api_docs_url / header auth классический PromptQL-стиль (пока помечен «сейчас не активно»)
Сторонний сервис универсальный промпт без привязки к клиенту base_url + OpenAPI /openapi.json + header X-API-Key + preflight

Прочее

  • session.json теперь хранит aiClient; шапка менеджера сессий и меню сессии показывают AI-клиент рядом с туннелем.
  • task_prompt остаётся общим для всех клиентов.
  • Зеркальные изменения в start.sh (POSIX) и start.ps1 (Windows).
  • Версия поднята до 3.10.0: repo_tools.py, bootstrap.ps1, bootstrap-clean.ps1, README, QUICKSTART.

Установка / обновление

Windows (PowerShell)

powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/Yahor777/repopilot-bridge/v3.10.0/bootstrap.ps1 | iex"

macOS

curl -fsSL https://raw.githubusercontent.com/Yahor777/repopilot-bridge/v3.10.0/bootstrap.sh | bash

Linux

curl -fsSL https://raw.githubusercontent.com/Yahor777/repopilot-bridge/v3.10.0/bootstrap.sh | bash

Обновление с предыдущей версии

Установите повторно командой выше — настройки (settings.json, репозитории) сохранятся. При первом запуске после обновления появится экран выбора AI-клиента.

Совместимость

  • Старый settings.json без aiClient → экран выбора при следующем запуске, выбор туннеля не сбрасывается.
  • Старые session.json читаются с дефолтом other; connect-prompt.txt для существующих сессий не перегенерируется.

Полный список изменений

См. CHANGELOG.md.

v3.9.1 — Убрана анимация загрузки

Choose a tag to compare

@Yahor777 Yahor777 released this 07 Jul 14:51

v3.9.1 — исправление

Облажались с загрузочной анимацией в v3.9.0. Анимация моря (scripts/ocean.py) рендерилась плохо во многих терминалах и портила впечатление от запуска вместо того, чтобы украшать его.

Что исправлено

  • Удалена анимация моря (scripts/ocean.py) целиком.
  • Убрана интеграция splash из start.sh и start.ps1.
  • RepoPilot снова запускается напрямую в менеджер сессий, как было до 3.9.0.

Кросс-платформенный порт (macOS/Linux/Windows), авто-детекция ОС, POSIX-блок-листы и вся остальная функциональность 3.9.0 остались без изменений — убран только splash-экран.

Обновление

macOS / Linux:

bash ~/.local/share/RepoPilotBridge/app/uninstall.sh
curl -fsSL https://raw.githubusercontent.com/Yahor777/repopilot-bridge/v3.9.1/bootstrap.sh | bash

Windows (чистая переустановка):

powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/Yahor777/repopilot-bridge/v3.9.1/bootstrap-clean.ps1 | iex"

Извините за накладку с анимацией — в следующей итерации сделаем запуск чище.

v3.9.0 — Кросс-платформенный порт: macOS, Linux и Windows

Choose a tag to compare

@Yahor777 Yahor777 released this 07 Jul 14:40

🌊 RepoPilot Bridge 3.9.0 — теперь на Windows, macOS и Linux

Главный релиз: RepoPilot Bridge стал кросс-платформенным. Теперь он одинаково хорошо работает на Windows, macOS и Linux. PowerShell-скрипты остались для Windows, а рядом появились нативные bash-скрипты для macOS/Linux — две параллельные версии в одном репозитории.

При запуске repopilot теперь появляется красивая анимация моря с закатом и отливом — работает на всех трёх системах с автоматическим определением цветовой поддержки.


🖥️ Кросс-платформенное ядро

  • Авто-детекция ОС через sys.platform — сервер сам определяет Windows или POSIX.
  • Команды исполняются через cmd.exe на Windows и /bin/sh -c на macOS/Linux.
  • Метасимвольный фильтр адаптирован под семантику оболочки: на POSIX блокируются backticks и $(...), но % и ^ (не являющиеся метасимволами sh) больше не дают ложных срабатываний.
  • Расширены блок-листы опасных команд для macOS/POSIX: sudo, dd of=/dev/, mkfs, diskutil eraseDisk, launchctl bootout, defaults write, csrutil, nvram, pmset, fork-бомба :(){:|:&};:, > /dev/sd*, killall системных процессов, рекурсивные chmod/chown на системных путях.

📜 Новая POSIX-обвязка (bash, параллельно с PowerShell)

Файл Назначение
start.sh Менеджер сессий (TUI): выбор проекта, режима, запуск uvicorn + туннеля, генерация промптов
install.sh Установщик: поиск Python (Homebrew/python.org), venv, шим ~/.local/bin/repopilot, ярлык .command
doctor.sh Диагностика: все эндпоинты в read_only/autopilot/full, проверка POSIX-блокировок
uninstall.sh Деинсталляция: удаление runtime, конфига, шима, ярлыка, чистка PATH
bootstrap.sh One-shot установка: curl | bash

Кросс-платформенное управление процессами: PID через $! + фолбэки на pgrep/lsof/fuser/taskkill/netstat (для Windows Git Bash, где нет pgrep). UTF-8-safe HTTP через curl --data-binary @tmpfile.

🌅 Анимация моря с закатом

  • Новый scripts/ocean.py: море с волнами, закат, отлив, опускающееся солнце, баннер RepoPilot.
  • 4 цветовых режима с autodetect: truecolor (24-bit), 256-color, 16-color, монохром.
  • На Windows 10+ включает VT-обработку через ctypes, чтобы ANSI рендерился в cmd.exe.
  • Интегрирована в start.sh и start.ps1. Отключается через REPOPILOT_NO_SPLASH=1.
  • Режимы: --long, --loop, --no-banner, --test.

🧪 Smoke-тест без Mac

  • Dockerfile.smoke + scripts/smoke-test.sh: Linux-контейнер прогоняет doctor.sh, проверяя POSIX-ветку run_cmd и блок-листы без реального Mac.

🛡️ Усиление

  • start.sh и doctor.sh проверяют наличие curl и git с подсказками установки.
  • Нет bash 4+ фич — совместимо с macOS default bash 3.2.
  • mktemp имеет фолбэки для GNU/BSD различий.

📚 Документация

  • README.md, QUICKSTART.md, TROUBLESHOOTING.md теперь покрывают все три ОС: Homebrew, pbcopy/open, пути Homebrew на Apple Silicon vs Intel, Gatekeeper для .command, XDG-пути на Linux.
  • .editorconfig добавляет правила [*.{sh,command}] (LF, UTF-8 без BOM).

📦 Установка

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/Yahor777/repopilot-bridge/v3.9.0/bootstrap.sh | bash

Windows (PowerShell):

powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/Yahor777/repopilot-bridge/v3.9.0/bootstrap.ps1 | iex"

✅ Проверено

  • doctor.sh: 44/44 проверок прошли (HTTP, эндпоинты, блокировки sudo/dd/launchctl, метасимволы, изоляция, секреты, commit).
  • POSIX-ветка run_cmd: 22/22 проверки (имитация macOS).
  • Windows-ветка cmd.exe не сломана: /run echo → exit 0.
  • bash -n на всех 6 .sh + py_compile — без ошибок.
  • ocean.py во всех 4 цветовых режимах.

RepoPilot Bridge v3.8.13

Choose a tag to compare

@Yahor777 Yahor777 released this 05 Jul 17:25

Что исправлено

  • Для Tailscale Funnel provider id теперь включает RepoPilot session id.
  • Это не даёт PromptQL повторно использовать старый provider на том же стабильном *.ts.net host, у которого project_integrations.config_values мог остаться null.
  • Prompt подключения теперь прямо говорит: использовать provider id из свежей сессии и не брать старую интеграцию с похожим base_url/provider id без session suffix.
  • Bootstrap-ссылки и API version подняты до 3.8.13.

Почему это важно

Tailscale host обычно постоянный (monsterpc....ts.net), поэтому старый RepoPilot генерировал один и тот же provider id. PromptQL видел существующий provider и не создавал свежую protected credential card, из-за чего ключ не сохранялся и pre-flight падал до HTTP-запроса с Failed to resolve integration credentials.

Проверено

  • PowerShell parser для скриптов прошёл.
  • python -m py_compile server\repo_tools.py прошёл.
  • git diff --check прошёл.
  • Unit smoke генерации provider id: Tailscale получает session suffix, Cloudflare остаётся host-based.
  • doctor.ps1 -NoPause прошёл.
  • scripts\Test-RepoToolsDoctor.ps1 прошёл.

RepoPilot Bridge v3.8.12

Choose a tag to compare

@Yahor777 Yahor777 released this 05 Jul 17:18

Что исправлено

  • OpenAPI теперь публикует стандартную auth-схему RepoPilotApiKey для заголовка X-API-Key, а не просто повторяющийся header-параметр на каждом endpoint-е.
  • RepoPilot принимает ключ через X-API-Key и совместимый Authorization: Bearer, нормализуя случайные пробелы и префиксы.
  • Ошибки auth теперь пишут безопасную диагностику в audit: был ли credential, его длина и поддерживаемые заголовки, без записи самого ключа.
  • Prompt подключения теперь прямо говорит PromptQL: в protected credential card надо вставлять K = X-API-Key, а не provider id/name/base_url.
  • Troubleshooting дополнен кейсом Failed to resolve integration credentials: это значит, что ключ не сохранился в карточке PromptQL и запрос до RepoPilot ещё не дошёл.

Проверено

  • PowerShell parser для скриптов прошёл.
  • python -m py_compile server\repo_tools.py прошёл.
  • git diff --check прошёл.
  • Живой uvicorn smoke-test: /openapi.json содержит RepoPilotApiKey, /health работает с X-API-Key, /health работает с Authorization: Bearer, пустой ключ даёт 401.
  • doctor.ps1 -NoPause прошёл, включая новые OpenAPI/auth проверки.
  • scripts\Test-RepoToolsDoctor.ps1 прошёл.

RepoPilot Bridge v3.8.11

Choose a tag to compare

@Yahor777 Yahor777 released this 05 Jul 16:58

Что изменилось

  • RepoPilot теперь сразу распознаёт ответ Tailscale Funnel is not enabled on your tailnet и не ждёт полный timeout.
  • CLI достаёт ссылку login.tailscale.com/f/funnel, копирует её в буфер обмена и пытается открыть браузер для подтверждения Funnel.
  • Документация обновлена: установка и tailscale up идут из настроек RepoPilot, а включение Funnel подтверждается по ссылке Tailscale.
  • Bootstrap-ссылки и API version подняты до 3.8.11.

Проверено

  • Tailscale удалён с тестовой машины: команда tailscale отсутствует, winget list --id Tailscale.Tailscale пакет не находит.
  • PowerShell parser для скриптов прошёл.
  • python -m py_compile server\repo_tools.py прошёл.
  • git diff --check прошёл.
  • Симуляция лога Tailscale Funnel approval прошла: URL извлекается, ожидание завершается быстро.
  • doctor.ps1 -NoPause прошёл.
  • scripts\Test-RepoToolsDoctor.ps1 прошёл.

RepoPilot Bridge v3.8.10

Choose a tag to compare

@Yahor777 Yahor777 released this 05 Jul 16:46

Highlights

  • Added Tailscale login/start flow from RepoPilot settings via tailscale up.
  • Session startup now offers to run tailscale up when Tailscale is selected but not ready.
  • Tailscale Funnel now starts with --yes and explicit http://127.0.0.1: target to avoid hidden interactive prompts.
  • Tailscale URL wait is shorter and returns an actionable hint instead of looking stuck.
  • Bumped bootstrap links and API version to 3.8.10.

Validation

  • PowerShell parser passed for all scripts.
  • Python py_compile passed for server/repo_tools.py.
  • git diff --check passed.
  • Targeted Tailscale CLI test verified tailscale up and funnel --yes http://127.0.0.1: arguments.
  • Session history cleanup regression test passed.
  • Full doctor.ps1 -NoPause passed.
  • scripts/Test-RepoToolsDoctor.ps1 passed.

Notes

  • This follows Tailscale CLI docs: tailscale up authenticates/connects the device, and tailscale funnel supports --yes and local HTTP targets.

RepoPilot Bridge v3.8.9

Choose a tag to compare

@Yahor777 Yahor777 released this 05 Jul 16:37

Highlights

  • RepoPilot settings can now install Tailscale directly via winget.
  • Selecting Tailscale Funnel automatically offers installation when tailscale.exe is missing.
  • Settings show I = установить Tailscale через winget when Tailscale is selected but unavailable.
  • After installation, RepoPilot tells the user to sign in to Tailscale and press R to re-check readiness.
  • Bumped bootstrap links and API version to 3.8.9.

Validation

  • PowerShell parser passed for start, doctor, install, bootstrap, bootstrap-clean, uninstall, and Test-RepoToolsDoctor scripts.
  • Python py_compile passed for server/repo_tools.py.
  • git diff --check passed.
  • Fake winget Tailscale settings install test passed and verified package id Tailscale.Tailscale.
  • Session history cleanup regression test passed.
  • Full doctor.ps1 -NoPause passed.
  • scripts/Test-RepoToolsDoctor.ps1 passed.

RepoPilot Bridge v3.8.8

Choose a tag to compare

@Yahor777 Yahor777 released this 05 Jul 16:27

Highlights

  • Added cleanup for gray stopped session histories in the CLI manager.
  • Press U in the main manager to delete all stopped histories.
  • Open a stopped session and press D to delete just that history.
  • Deletion is guarded by live PID checks and only removes folders inside RepoPilot's sessions directory.
  • Bumped bootstrap links and API version to 3.8.8.

Validation

  • PowerShell parser passed for start, doctor, install, bootstrap, bootstrap-clean, uninstall, and Test-RepoToolsDoctor scripts.
  • Python py_compile passed for server/repo_tools.py.
  • git diff --check passed.
  • Focused session-history cleanup test passed with fake stopped and partial/live sessions.
  • Full doctor.ps1 -NoPause passed.
  • scripts/Test-RepoToolsDoctor.ps1 passed.