60 lines
1.8 KiB
Bash
Executable File
60 lines
1.8 KiB
Bash
Executable File
#!/bin/sh
|
|
# neuron-verify: one-command integrity audit for the Neuron install.
|
|
# Run any time; run especially after OS updates, brew operations, or anything
|
|
# that touches PATH.
|
|
|
|
FAIL=0
|
|
|
|
echo "== 1. Command resolution =="
|
|
for cmd in neuron opencode; do
|
|
echo "-- $cmd:"
|
|
type -a "$cmd" 2>/dev/null || echo " (not found)"
|
|
done
|
|
echo " [expect: neuron -> ~/.bun/bin or /opt/homebrew/bin -> repo launcher]"
|
|
echo " [expect: opencode -> NOT FOUND]"
|
|
|
|
echo ""
|
|
echo "== 2. Launcher symlink chain =="
|
|
for link in /Users/will/.bun/bin/neuron /opt/homebrew/bin/neuron; do
|
|
if [ -L "$link" ]; then
|
|
target=$(readlink "$link")
|
|
case "$target" in
|
|
*/opencode/bin/neuron) echo "OK $link -> $target" ;;
|
|
*) echo "BAD $link -> $target (points at wrong script)"; FAIL=1 ;;
|
|
esac
|
|
else
|
|
echo "MISSING $link"; FAIL=1
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "== 3. Binary fingerprint (compare against last build) =="
|
|
BIN="/Users/will/Development/neuron-technologies/opencode/packages/opencode/dist/opencode-darwin-arm64/bin/opencode"
|
|
if [ -x "$BIN" ]; then
|
|
shasum -a 256 "$BIN"
|
|
else
|
|
echo "no dist binary (launcher will use source mode)"; FAIL=1
|
|
fi
|
|
|
|
echo ""
|
|
echo "== 4. Launch history — look for sha256 values you don't recognize =="
|
|
LOG="${XDG_STATE_HOME:-$HOME/.local/state}/neuron-guard.jsonl"
|
|
if [ -f "$LOG" ]; then
|
|
grep '"event":"launch"' "$LOG" | tail -10
|
|
else
|
|
echo "no launch log yet"
|
|
fi
|
|
|
|
echo ""
|
|
echo "== 5. Vendor egress check =="
|
|
grep -c "opencode.ai\|anomalyco" "$LOG" 2>/dev/null | { read n; echo "$n vendor egress entries in guard log"; }
|
|
grep '"blocked":true' "$LOG" 2>/dev/null | tail -3
|
|
|
|
echo ""
|
|
echo "== 6. Upstream binaries on this machine =="
|
|
find /opt/homebrew/Cellar ~/Library -maxdepth 3 -iname "*opencode*" 2>/dev/null | head -5
|
|
ls ~/.bun/install/global/node_modules 2>/dev/null | grep -i opencode | head -3
|
|
echo "[empty is good]"
|
|
|
|
exit $FAIL
|