chore: ROADMAP Phase 8, parallel AI team script, docker and infra updates
- ROADMAP.md: add Phase 8 — Freifunk / Community Mesh Networking with F0-F8 checkboxes; F0-F2 marked complete - scripts/ai_team.py: rewrite to support asyncio.gather parallel agent runs; add --sprint flag with predefined work packages (audit, phase1-hardening, phase2-tests, phase1-infra, status); add --parallel for ad-hoc concurrent agent invocations; output written to logs/ai_team/<sprint>_<timestamp>/<agent>.md - scripts/dev-shell.sh: convenience development shell helper - docker: update Dockerfiles for quicproquo rename and new server flags - .gitignore: add qpq-state artifacts (*.bin, *.session, *.pending.ks, *.convdb*)
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
# Usage:
|
||||
# ./scripts/chat-test.sh
|
||||
#
|
||||
# Requirements: docker, docker compose, tmux
|
||||
# Requirements: docker (or podman + podman-compose), tmux
|
||||
# Exit: Ctrl+D in both panes, or: tmux kill-session -t qpc-chat
|
||||
|
||||
set -euo pipefail
|
||||
@@ -15,7 +15,6 @@ set -euo pipefail
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
COMPOSE_FILE="$PROJECT_ROOT/docker/docker-compose.chat-test.yml"
|
||||
COMPOSE="docker compose -f $COMPOSE_FILE -p qpc-chat-test"
|
||||
|
||||
# ── Colors ────────────────────────────────────────────────────────────────────
|
||||
|
||||
@@ -27,6 +26,37 @@ step() { echo -e "${GREEN}==> $1${NC}"; }
|
||||
info() { echo -e " ${CYAN}$1${NC}"; }
|
||||
error() { echo -e "${RED}ERROR: $1${NC}" >&2; }
|
||||
|
||||
# ── Preflight checks ─────────────────────────────────────────────────────────
|
||||
|
||||
# Prefer docker; fall back to podman.
|
||||
if command -v docker &>/dev/null; then
|
||||
if ! docker compose version &>/dev/null; then
|
||||
error "docker compose (v2 plugin) is required."
|
||||
echo " See: https://docs.docker.com/compose/install/"
|
||||
exit 1
|
||||
fi
|
||||
COMPOSE_BIN="docker compose"
|
||||
elif command -v podman &>/dev/null; then
|
||||
if ! command -v podman-compose &>/dev/null; then
|
||||
error "podman-compose is required when using podman."
|
||||
echo " pip install podman-compose"
|
||||
exit 1
|
||||
fi
|
||||
COMPOSE_BIN="podman-compose"
|
||||
else
|
||||
error "docker or podman is required but neither is installed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
COMPOSE="$COMPOSE_BIN -f $COMPOSE_FILE -p qpc-chat-test"
|
||||
|
||||
if ! command -v tmux &>/dev/null; then
|
||||
error "tmux is required but not installed."
|
||||
echo " macOS: brew install tmux"
|
||||
echo " Linux: sudo apt-get install tmux"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ── Cleanup on exit ──────────────────────────────────────────────────────────
|
||||
|
||||
cleanup() {
|
||||
@@ -36,26 +66,6 @@ cleanup() {
|
||||
}
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
# ── Preflight checks ─────────────────────────────────────────────────────────
|
||||
|
||||
if ! command -v docker &>/dev/null; then
|
||||
error "docker is required but not installed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! docker compose version &>/dev/null; then
|
||||
error "docker compose (v2 plugin) is required."
|
||||
echo " See: https://docs.docker.com/compose/install/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v tmux &>/dev/null; then
|
||||
error "tmux is required but not installed."
|
||||
echo " macOS: brew install tmux"
|
||||
echo " Linux: sudo apt-get install tmux"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ── Step 1: Build ─────────────────────────────────────────────────────────────
|
||||
|
||||
step "Building Docker image (server + client)..."
|
||||
|
||||
Reference in New Issue
Block a user