mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-08 22:35:36 +02:00
feat: wire setup-gbrain + brain-restore + brain-uninstall to use the helper
setup-gbrain Step 7 now invokes gstack-gbrain-source-wireup --strict after
gstack-brain-init + gbrain_sync_mode is set. Strict mode means the user sees
the failure rather than silently ending up with an unwired brain.
bin/gstack-brain-init drops 60 lines of dead code: the HTTP POST to
${GBRAIN_URL}/ingest-repo, the GBRAIN_URL_VAL/GBRAIN_TOKEN_VAL probes, the
consumers.json writer, and the chore commit step. CONSUMERS_FILE variable
declaration removed. The closing message no longer points at the dead
gstack-brain-consumer add path.
bin/gstack-brain-restore drops the 18-line consumers.json token-rehydration
block (was a no-op for the only consumer that ever existed). Adds a
best-effort wireup invocation after the brain-repo clone so 2nd-Mac restore
gets gbrain federation automatically. Failure prints a stderr WARNING but
does not abort the restore — restore's primary job is the git clone.
bin/gstack-brain-uninstall calls the helper's --uninstall mode (which
removes the gbrain source registration, the git worktree, and the
future-launchd-plist stub) before the existing legacy consumers.json
removal. Ordering is fragile-by-design: helper derives source-id via
multi-fallback so it works even after .git is destroyed.
bin/gstack-brain-consumer gets a DEPRECATED header note. Stays in the tree
for one cycle of grace; removal in v1.13.0.0.
setup-gbrain/SKILL.md is regenerated from the .tmpl via gen:skill-docs.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -19,7 +19,8 @@
|
||||
# 3. rsync-copy tracked files into ~/.gstack/ with skip-if-same-hash
|
||||
# 4. Move staging's .git into ~/.gstack/.git
|
||||
# 5. Register local git config merge drivers (they don't clone from remote)
|
||||
# 6. Rehydrate consumers.json endpoints; prompt for tokens
|
||||
# 6. Wire the cloned brain into gbrain via gstack-gbrain-source-wireup
|
||||
# (best-effort; restore continues even if gbrain wireup fails)
|
||||
#
|
||||
# Env:
|
||||
# GSTACK_HOME — override ~/.gstack
|
||||
@@ -195,25 +196,6 @@ sys.exit(0)
|
||||
HOOK_EOF
|
||||
chmod +x "$HOOK"
|
||||
|
||||
# ---- rehydrate consumers, prompt for tokens ----
|
||||
if [ -f "$GSTACK_HOME/consumers.json" ]; then
|
||||
echo ""
|
||||
echo "Consumer registry restored. Tokens are machine-local and NOT synced."
|
||||
echo "Run these for each consumer to re-enter tokens:"
|
||||
python3 - "$GSTACK_HOME/consumers.json" <<'PYEOF'
|
||||
import sys, json
|
||||
try:
|
||||
with open(sys.argv[1]) as f:
|
||||
data = json.load(f)
|
||||
except Exception:
|
||||
sys.exit(0)
|
||||
for c in data.get("consumers", []):
|
||||
name = c.get("name", "")
|
||||
token_ref = c.get("token_ref", f"{name}_token")
|
||||
print(f" gstack-config set {token_ref} <your-token>")
|
||||
PYEOF
|
||||
fi
|
||||
|
||||
# ---- write remote helper file if missing ----
|
||||
if [ ! -f "$REMOTE_FILE" ]; then
|
||||
echo "$REMOTE_URL" > "$REMOTE_FILE"
|
||||
@@ -222,6 +204,12 @@ if [ ! -f "$REMOTE_FILE" ]; then
|
||||
echo "Wrote $REMOTE_FILE for future skill-run auto-detection."
|
||||
fi
|
||||
|
||||
# ---- wire the cloned brain into gbrain (best-effort) ----
|
||||
WIREUP_BIN="$SCRIPT_DIR/gstack-gbrain-source-wireup"
|
||||
if [ -x "$WIREUP_BIN" ]; then
|
||||
"$WIREUP_BIN" || >&2 echo "WARNING: gbrain wireup failed; run $WIREUP_BIN manually after fixing prereqs"
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
|
||||
gstack-brain-restore complete.
|
||||
|
||||
Reference in New Issue
Block a user