Files
autocoder/start_ui.sh
Auto e9873a2642 feat: migrate browser automation from Playwright MCP to CLI, fix headless setting
Major changes across 21 files (755 additions, 196 deletions):

Browser Automation Migration:
- Add versioned project migration system (prompts.py) with content-based
  detection and section-level regex replacement for coding/testing prompts
- Migrate STEP 5 (browser verification) and BROWSER AUTOMATION sections
  in coding prompt template to use playwright-cli commands
- Migrate STEP 2 and AVAILABLE TOOLS sections in testing prompt template
- Migration auto-runs at agent startup (autonomous_agent_demo.py), copies
  playwright-cli skill, scaffolds .playwright/cli.config.json, updates
  .gitignore, and stamps .migration_version file
- Add playwright-cli command validation to security allowlist (security.py)
  with tests for allowed subcommands and blocked eval/run-code

Headless Browser Setting Fix:
- Add _apply_playwright_headless() to process_manager.py that reads/updates
  .playwright/cli.config.json before agent subprocess launch
- Remove dead PLAYWRIGHT_HEADLESS env var that was never consumed
- Settings UI toggle now correctly controls visible browser window

Playwright CLI Auto-Install:
- Add ensurePlaywrightCli() to lib/cli.js for npm global entry point
- Add playwright-cli detection + npm install to start.bat, start.sh,
  start_ui.bat, start_ui.sh for all startup paths

Other Improvements:
- Add project folder path tooltip to ProjectSelector.tsx dropdown items
- Remove legacy Playwright MCP server configuration from client.py
- Update CLAUDE.md with playwright-cli skill documentation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 13:37:03 +02:00

94 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
cd "$(dirname "$0")"
# AutoForge UI Launcher for Unix/Linux/macOS
# This script launches the web UI for the autonomous coding agent.
echo ""
echo "===================================="
echo " AutoForge UI"
echo "===================================="
echo ""
# Check if Claude CLI is installed
if ! command -v claude &> /dev/null; then
echo "[!] Claude CLI not found"
echo ""
echo " The agent requires Claude CLI to work."
echo " Install it from: https://claude.ai/download"
echo ""
echo " After installing, run: claude login"
echo ""
else
echo "[OK] Claude CLI found"
# Note: Claude CLI no longer stores credentials in ~/.claude/.credentials.json
# We can't reliably check auth status without making an API call
if [ -d "$HOME/.claude" ]; then
echo " (If you're not logged in, run: claude login)"
else
echo "[!] Claude CLI not configured - run 'claude login' first"
fi
fi
echo ""
# Check if Python is available
if ! command -v python3 &> /dev/null; then
if ! command -v python &> /dev/null; then
echo "ERROR: Python not found"
echo "Please install Python from https://python.org"
exit 1
fi
PYTHON_CMD="python"
else
PYTHON_CMD="python3"
fi
# Check if venv exists with correct structure for this platform
# Windows venvs have Scripts/, Linux/macOS have bin/
if [ ! -f "venv/bin/activate" ]; then
if [ -d "venv" ]; then
echo "[INFO] Detected incompatible virtual environment (possibly created on Windows)"
echo "[INFO] Recreating virtual environment for this platform..."
rm -rf venv
if [ -d "venv" ]; then
echo "[ERROR] Failed to remove existing virtual environment"
echo "Please manually delete the 'venv' directory and try again:"
echo " rm -rf venv"
exit 1
fi
else
echo "Creating virtual environment..."
fi
$PYTHON_CMD -m venv venv
if [ $? -ne 0 ]; then
echo "[ERROR] Failed to create virtual environment"
echo "Please ensure the venv module is installed:"
echo " Ubuntu/Debian: sudo apt install python3-venv"
echo " Or try: $PYTHON_CMD -m ensurepip"
exit 1
fi
fi
# Activate the virtual environment
source venv/bin/activate
if [ $? -ne 0 ]; then
echo "[ERROR] Failed to activate virtual environment"
echo "The venv may be corrupted. Try: rm -rf venv && ./start_ui.sh"
exit 1
fi
# Install dependencies
echo "Installing dependencies..."
pip install -r requirements.txt --quiet
# Ensure playwright-cli is available for browser automation
if ! command -v playwright-cli &> /dev/null; then
echo "Installing playwright-cli for browser automation..."
npm install -g @playwright/cli --quiet 2>/dev/null
if [ $? -ne 0 ]; then
echo "Note: Could not install playwright-cli. Install manually: npm install -g @playwright/cli"
fi
fi
# Run the Python launcher
python start_ui.py "$@"