# Launch a Claude Code window pre-configured as a GenDesign autonomous bot. # # Usage: .\scripts\start-bot.ps1 reviewer # roles: analyst | backend | frontend | reviewer | qa # # Выставляет per-bot identity + токены (для forgejo MCP И curl-fallback), bot-remote, # verify, затем запускает `claude`. Внутри окна: /work-as- -> /loop. # # Требует: scripts/setup-bot-env.ps1 уже выполнен (FORGEJO_TOKEN_, *_BOTS в User env). param( [Parameter(Mandatory = $true)] [ValidateSet('analyst', 'backend', 'frontend', 'reviewer', 'qa')] [string]$Role ) $ErrorActionPreference = 'Stop' $roleUp = $Role.ToUpper() $bot = "bot-$Role" $token = [Environment]::GetEnvironmentVariable("FORGEJO_TOKEN_$roleUp", "User") if (-not $token) { Write-Error "FORGEJO_TOKEN_$roleUp не выставлен в User env. Запусти scripts/setup-bot-env.ps1 сначала." return } $url = [Environment]::GetEnvironmentVariable("FORGEJO_URL_BOTS", "User") $repo = [Environment]::GetEnvironmentVariable("FORGEJO_REPO_BOTS", "User") # forgejo MCP (goern) читает FORGEJO_ACCESS_TOKEN — MCP-процесс наследует его при старте claude. $env:FORGEJO_ACCESS_TOKEN = $token # curl-fallback + in-session pre-flight $env:FORGEJO_TOKEN = $token $env:BOT_USERNAME = $bot $env:FORGEJO_URL = $url $env:FORGEJO_REPO = $repo # git identity — иначе commit author = lekss361 $env:GIT_AUTHOR_NAME = $bot $env:GIT_AUTHOR_EMAIL = "$bot@gendsgn.local" $env:GIT_COMMITTER_NAME = $bot $env:GIT_COMMITTER_EMAIL = "$bot@gendsgn.local" # bot-remote для push audit-log (токен в URL — только локально) git remote remove forgejo-bot 2>$null | Out-Null git remote add forgejo-bot "https://$($bot):$token@git.gendsgn.ru/lekss361/gendesign.git" # verify: PAT принадлежит ожидаемому боту $me = (curl.exe -sS -H "Authorization: token $token" "$url/api/v1/user" | ConvertFrom-Json).login if ($me -ne $bot) { Write-Error "Identity mismatch: PAT принадлежит '$me', ожидался '$bot'. Проверь FORGEJO_TOKEN_$roleUp." return } Write-Host "OK bot=$bot" -ForegroundColor Green Write-Host "OK forgejo MCP token set (FORGEJO_ACCESS_TOKEN) + git identity + forgejo-bot remote" -ForegroundColor Green Write-Host "" Write-Host "В окне Claude (Opus 4.8 для reviewer): /work-as-$Role -> затем /loop" -ForegroundColor Cyan claude