Some checks are pending
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / preflight (push) Waiting to run
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / vps-smoke (push) Waiting to run
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:frustration-matrix,kei-frustration-loop,kei-skill-importer,kei-projects-index,kei-projects-watcher,kei-gdrive-import,kei-leak-matrix,kei-skills,kei-gateway,kei-cron-scheduler,kei-export-trajectories,kei-backend-daytona,kei-d… (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-compute-baremetal,kei-compute-vultr,kei-compute-linode,kei-compute-digitalocean,kei-svc-systemd,kei-llm-bridge-mlx name:hosted-sleep-compute]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-diff,kei-scheduler,kei-watch,kei-prune,kei-discover,kei-brain-view,kei-hibernate,kei-ledger-sign,kei-fork name:wave13-15]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-git-gitea,kei-git-forgejo,kei-git-gitlab,kei-git-bitbucket,kei-memory-sled,kei-memory-redis,kei-memory-postgres,kei-memory-sqlite,kei-auth-google,kei-auth-apple,kei-auth-magiclink,kei-auth-webauthn,kei-notify-slack,kei-n… (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-ledger,kei-migrate,kei-changelog,kei-memory,kei-store,kei-conflict-scan,kei-refactor-engine,kei-graph-check,kei-shared,kei-dna-index,kei-pet name:core]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-machine-probe,kei-llm-ollama,kei-llm-llamacpp,kei-llm-mlx,kei-llm-router,kei-model name:llm-stack]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-router,kei-sage,kei-task,kei-chat-store,kei-crossdomain,kei-search-core,kei-content-store,kei-social-store,kei-curator,kei-auth,kei-artifact name:mcp-lbm]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:keisei,kei-forge,kei-runtime,kei-runtime-core,kei-atom-discovery,kei-agent-runtime,kei-capability,kei-provision,kei-entity-store,kei-pipe,kei-cache,kei-spawn,kei-replay name:atom-substrate]) (push) Blocked by required conditions
PATENT-LEAK (HIGH):
- hooks/no-python-without-approval.sh: genesis-verify пример → my-project
- docs/encyclopedia/rust-crates-H-N.md: убран термин «Genesis IP, ITAR»
PATENT-LEAK (MEDIUM):
- CHANGELOG: project-vortex → reduced scope
- _blocks/registries (submodule bump): убраны имена приватных
project-specialists из комментария agent-profiles.toml
- docs/encyclopedia/skills-and-agents.md: ML/RL/CfC → ML/RL
CLASSICAL-SAFETY (MEDIUM):
- install/lib-preflight.sh: eval "$version_cmd" → bash -c "..."
(защита от инъекции если providers.toml расширят)
- _primitives/provision-{vultr,hetzner}.sh: /tmp/$$ → mktemp
(устраняет symlink TOCTOU race)
- web-install.sh: chmod 600 + umask 077 на ~/.keisei-install.log
(Forgejo admin creds + токены в логе)
- scripts/regen-counts.sh: eval "$1" → bash -c
NOT FIXED (требуют действий юзера):
- HIGH: @keisei scope не зарегистрирован на npmjs.org — typosquat
возможен пока не задан NPM_TOKEN и не сделан publish
- HIGH: install.keisei.app DNS не настроен — DNS-hijack возможен
- LOW: parfionovich@keilab.io в SECURITY.md, plugin.json, ~40 Cargo
файлах — intentional contact, оставлен
Локальный git author установлен на parfionovich@keilab.io вместо
parfionovichd@icloud.com (только для будущих коммитов в этом репо).
92 lines
4.2 KiB
Bash
Executable file
92 lines
4.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# web-install.sh — curl-pipeable bootstrapper for KeiSeiKit.
|
|
#
|
|
# Designed to be served as a static file (e.g. install.keisei.app) and run
|
|
# from a fresh machine via:
|
|
#
|
|
# curl -fsSL https://install.keisei.app | bash
|
|
# curl -fsSL https://install.keisei.app | bash -s -- --profile=dev --yes
|
|
#
|
|
# This script's ONLY job is: prereq → clone → delegate to ./bootstrap.sh.
|
|
# All real work lives in the kit's existing bootstrap.sh (prereqs, profile,
|
|
# install.sh wrap). Two scripts, one source of truth — DO NOT duplicate
|
|
# logic here.
|
|
#
|
|
# Env / args:
|
|
# KEISEI_ROOT install dir (default: $HOME/.local/share/keisei)
|
|
# KEISEI_REPO git URL (default: https://keigit.com/keisei/KeiSeiKit-1.0.git)
|
|
# KEISEI_REF branch/tag/sha (default: main)
|
|
# --profile=NAME passed through to ./bootstrap.sh
|
|
# --yes passed through to ./bootstrap.sh
|
|
# --ref=REF override KEISEI_REF
|
|
# --root=DIR override KEISEI_ROOT
|
|
|
|
set -euo pipefail
|
|
|
|
KEISEI_ROOT="${KEISEI_ROOT:-$HOME/.local/share/keisei}"
|
|
KEISEI_REPO="${KEISEI_REPO:-https://keigit.com/keisei/KeiSeiKit-1.0.git}"
|
|
KEISEI_REF="${KEISEI_REF:-main}"
|
|
|
|
PASS_THROUGH=()
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
--ref=*) KEISEI_REF="${arg#--ref=}" ;;
|
|
--root=*) KEISEI_ROOT="${arg#--root=}" ;;
|
|
-h|--help) sed -n '1,22p' "$0" | sed 's|^# \{0,1\}||'; exit 0 ;;
|
|
*) PASS_THROUGH+=("$arg") ;;
|
|
esac
|
|
done
|
|
|
|
LOG="$HOME/.keisei-install.log"
|
|
mkdir -p "$(dirname "$LOG")"
|
|
# chmod 600 чтобы Forgejo admin creds в логе не были world-readable
|
|
# (security MEDIUM audit 2026-05-18).
|
|
( umask 077 && : > "$LOG" )
|
|
chmod 600 "$LOG" 2>/dev/null || true
|
|
exec > >(tee -a "$LOG") 2>&1
|
|
|
|
say() { printf "\033[1;36m[web-install]\033[0m %s\n" "$*"; }
|
|
die() { printf "\033[1;31m[err]\033[0m %s\n" "$*" >&2; exit 1; }
|
|
|
|
# ── splash ─────────────────────────────────────────────────────────────────
|
|
cat <<'EOF'
|
|
|
|
╔═══════════════════════════════════════════════════════╗
|
|
║ KeiSeiKit · Exobrain installer ║
|
|
║ Portable Rust agent substrate for AI coding tools ║
|
|
╚═══════════════════════════════════════════════════════╝
|
|
|
|
EOF
|
|
say "log: $LOG"
|
|
|
|
# ── prereq: git (the only thing bootstrap.sh can't self-install) ───────────
|
|
command -v git >/dev/null || die "missing: git (brew install git / apt install git)"
|
|
|
|
# ── auth probe for private repo ────────────────────────────────────────────
|
|
case "$KEISEI_REPO" in
|
|
git@github.com:*)
|
|
say "checking GitHub SSH auth"
|
|
if ! ssh -o BatchMode=yes -o StrictHostKeyChecking=accept-new -T git@github.com 2>&1 \
|
|
| grep -qE "successfully authenticated"; then
|
|
die "GitHub SSH key not authorised. Add your public key at https://github.com/settings/keys, then re-run."
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
# ── clone or pull (idempotent) ─────────────────────────────────────────────
|
|
mkdir -p "$(dirname "$KEISEI_ROOT")"
|
|
if [ -d "$KEISEI_ROOT/.git" ]; then
|
|
say "pulling $KEISEI_REF in $KEISEI_ROOT"
|
|
git -C "$KEISEI_ROOT" fetch --depth=1 origin "$KEISEI_REF"
|
|
git -C "$KEISEI_ROOT" reset --hard "origin/$KEISEI_REF"
|
|
else
|
|
say "cloning $KEISEI_REPO ($KEISEI_REF) → $KEISEI_ROOT"
|
|
git clone --depth=1 --branch "$KEISEI_REF" "$KEISEI_REPO" "$KEISEI_ROOT"
|
|
fi
|
|
git -C "$KEISEI_ROOT" submodule update --init --recursive 2>/dev/null || true
|
|
|
|
# ── delegate to kit's own bootstrap.sh ─────────────────────────────────────
|
|
[ -x "$KEISEI_ROOT/bootstrap.sh" ] || die "kit's bootstrap.sh not found in $KEISEI_ROOT"
|
|
say "delegating to $KEISEI_ROOT/bootstrap.sh ${PASS_THROUGH[*]:-}"
|
|
cd "$KEISEI_ROOT"
|
|
exec ./bootstrap.sh "${PASS_THROUGH[@]}"
|