KeiSeiKit-1.0/install/lib-substrate.sh
Parfii-bot 0be354a920 KeiSeiKit-public — clean state
Single-commit clean baseline after security scrub of niche-tells,
project codenames, internal jargon, and contributor-email leaks.

Contents:
- 100 Rust crates (_primitives/_rust/)
- 37 agent manifests (_manifests/) + generated specs (_generated/)
- 67 user-invocable skills (skills/)
- 33 hooks (hooks/)
- Composition blocks (_blocks/)
- Documentation (docs/, README.md)
- TS adapter packages (_ts_packages/)
- Assembler (_assembler/)
- Roles (_roles/)
- Templates (_templates/)
- Forgejo CI (.forgejo/)

Author: Denis Parfionovich <info@greendragon.info>

License: see LICENSE.
2026-05-01 12:09:03 +08:00

94 lines
3.6 KiB
Bash

# shellcheck shell=bash
# lib-substrate.sh — substrate-binary mirror (Wave 39).
#
# Always-copy substrate-core binaries (kei-fork, kei-ledger, kei-spawn,
# kei-agent-runtime, etc.) from the source repo's pre-built target/release/
# into the agent install dir, so the user gets `kei-fork list` etc.
# immediately after install — without depending on the scoped workspace
# build (which only contains the installed-profile subset).
#
# Two tiers:
# substrate_core — always copied (substrate spine + most LBM crates)
# substrate_cortex — copied only when PROFILE matches cortex|full
#
# Requires: say from lib-log.sh.
# Reads globals: $KIT_DIR, $AGENTS_DIR, $PROFILE.
# Echo space-separated names of always-copy substrate binaries.
substrate_core_binaries() {
printf '%s\n' \
kei-fork kei-ledger kei-spawn kei-agent-runtime \
kei-capability kei-pet kei-shared kei-store kei-memory \
kei-pipe kei-cache kei-replay kei-runtime \
kei-atom-discovery kei-task kei-search-core \
kei-content-store kei-router kei-sage kei-curator \
kei-auth kei-artifact keisei \
kei-conflict-scan kei-refactor-engine kei-graph-check \
kei-diff kei-scheduler kei-watch kei-prune kei-discover \
kei-brain-view kei-hibernate kei-ledger-sign kei-dna-index \
kei-entity-store kei-crossdomain kei-social-store \
kei-chat-store kei-provision kei-changelog kei-migrate \
frustration-matrix \
ssh-check firewall-diff mock-render visual-diff tokens-sync
}
# Echo cortex-profile-only binaries.
substrate_cortex_binaries() {
printf '%s\n' kei-cortex kei-mcp kei-tty kei-skill-importer
}
# Install one prebuilt binary src->dst with mode 755. Idempotent.
# Args: $1=src absolute path, $2=dst absolute path. Uses install(1) when
# available (POSIX-portable), falls back to cp+chmod.
# Returns 0 on success, 1 if src missing/unexecutable.
_install_one_binary() {
local src="$1" dst="$2"
[ -f "$src" ] && [ -x "$src" ] || return 1
mkdir -p "$(dirname "$dst")"
if command -v install >/dev/null 2>&1; then
install -m 755 "$src" "$dst" 2>/dev/null && return 0
fi
cp -f "$src" "$dst" && chmod 755 "$dst"
}
# Mirror pre-built substrate binaries from $KIT_DIR to ~/.cargo/bin/.
# Idempotent — re-running after files exist is fine (refreshes content;
# a newer source will replace an older mirror, never errors).
# No-op when source dir doesn't exist (release-asset extract pending).
#
# Architecture (v0.18+): single canonical install location is ~/.cargo/bin/,
# present in PATH for any user with rustup. Eliminates dual-location drift
# (the kei-ledger v9 incident root cause).
copy_prebuilt_substrate_binaries() {
local src_dir="$KIT_DIR/_primitives/_rust/target/release"
local dst_dir="$HOME/.cargo/bin"
[ -d "$src_dir" ] || return 0
mkdir -p "$dst_dir"
local copied=0 missing=0 name profile_match=0
case "${PROFILE:-}" in
cortex|full) profile_match=1 ;;
esac
while IFS= read -r name; do
[ -z "$name" ] && continue
if _install_one_binary "$src_dir/$name" "$dst_dir/$name" 2>/dev/null; then
copied=$((copied+1))
else
missing=$((missing+1))
fi
done < <(substrate_core_binaries)
if [ "$profile_match" = "1" ]; then
while IFS= read -r name; do
[ -z "$name" ] && continue
if _install_one_binary "$src_dir/$name" "$dst_dir/$name" 2>/dev/null; then
copied=$((copied+1))
else
missing=$((missing+1))
fi
done < <(substrate_cortex_binaries)
fi
if [ "$copied" -gt 0 ]; then
say " installed $copied substrate binar(y/ies) -> ~/.cargo/bin/"
elif [ "$missing" -gt 0 ]; then
say " no pre-built substrate binaries found in $src_dir (rely on cargo build)"
fi
}