#!/usr/bin/env bash # agent-home-kit: развернуть дом агента в пустой каталог. # ./install.sh <каталог> --agent <Имя> [--slug <латиница>] [--coord <проект координатора>] [--no-git] set -euo pipefail KIT="$(cd "$(dirname "$0")" && pwd)" [ $# -ge 1 ] || { sed -n 2,3p "$0"; exit 2; } DEST="$1"; shift AGENT="Agent"; SLUG=""; COORD=""; GIT=1 while [ $# -gt 0 ]; do case "$1" in --agent) AGENT="$2"; shift 2 ;; --slug) SLUG="$2"; shift 2 ;; --coord) COORD="$2"; shift 2 ;; --no-git) GIT=0; shift ;; *) echo "неизвестный ключ: $1" >&2; exit 2 ;; esac done SLUG="${SLUG:-$(printf '%s' "$AGENT" | tr 'A-Z' 'a-z' | tr -c 'a-z0-9-' '-' | sed 's/-*$//')}" COORD="${COORD:-$AGENT}" if [ -e "$DEST" ] && [ -n "$(ls -A "$DEST" 2>/dev/null)" ]; then echo "каталог $DEST не пуст — дом разворачивается только в пустой" >&2; exit 1 fi mkdir -p "$DEST" DEST="$(cd "$DEST" && pwd)" cp -r "$KIT/template/." "$DEST/" mkdir -p "$DEST/bin" "$DEST/state/sessions" "$DEST/state/witness" "$DEST/state/dispatch" \ "$DEST/state/wake/ladder" "$DEST/journal/letters" "$DEST/private" "$DEST/var" "$DEST/work" cp "$KIT"/bin/*.py "$DEST/bin/" chmod +x "$DEST"/bin/*.py python3 - "$KIT/kit.example.json" "$DEST/kit.json" "$AGENT" "$SLUG" "$COORD" <<'PY' import json, sys src, dst, agent, slug, coord = sys.argv[1:] c = json.load(open(src, encoding="utf-8")) c.update(agent_name=agent, agent_slug=slug, coord_project=coord, unit_prefix=slug + "-", nodes={"local": {"ssh": "", "max_runs": 1}}) json.dump(c, open(dst, "w", encoding="utf-8"), ensure_ascii=False, indent=2) PY DATE="$(date +%F)" find "$DEST" -type f \( -name '*.md' -o -name '*.json' \) -not -path "$DEST/kit.json" -print0 | xargs -0 sed -i -e "s|{{AGENT_NAME}}|$AGENT|g" -e "s|{{HOME}}|$DEST|g" -e "s|{{CANON_PREFIX}}|home:|g" \ -e "s|{{COORD_PROJECT}}|$COORD|g" -e "s|{{DATE}}|$DATE|g" printf 'private/\nvar/\nstate/wake/mirror/\n' > "$DEST/.gitignore" chmod 700 "$DEST/private" if [ "$GIT" = 1 ]; then git -C "$DEST" init -q git -C "$DEST" add -A git -C "$DEST" -c user.name="$AGENT" -c user.email="$SLUG@localhost" commit -qm "дом $AGENT развёрнут из agent-home-kit" fi python3 "$DEST/bin/kit.py" check echo "первое пробуждение: python3 $DEST/bin/wake-ladder.py next <метка-сессии> --project \"$COORD\""