mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-12 19:44:48 +01:00
capy/skill/gstack/ is the Drive skill's source of truth. scripts/install.sh is a frozen bootstrapper: it prints gstack-capy-skill: wrapper <n> (<path>), clones or fetches under .gstack-capy-install.lock, reads the remote capy/support.env (FETCH_HEAD), fast-forwards a clean unpinned checkout below GSTACK_MIN_REVISION (refusing dirty, diverged or pinned checkouts with the exact commands; GSTACK_CAPY_AUTO_UPGRADE=0 disables), and execs the checkout's own bin/gstack-capy-session with GSTACK_CAPY_LOCK_HELD=1 so the held lock is never taken twice. Offline it says the remote minimum is unknown. A Drive copy older than GSTACK_CAPY_MIN_WRAPPER prints an owner action (CAPY_WRAPPER_STALE). SKILL.md: check at session start, install lazily before the first workflow, the GSTACK_LAUNCH line, the trailer rule, the subagent first-report line, gstack-pregate sealed before any push, and the autoplan/DRIVER.md pointer. The context-budget fixture gains the skill's entry. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
30 lines
1.7 KiB
Bash
Executable File
30 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# gstack-capy-session — the full Capy skill wrapper: the checkout-owned half
|
|
# of a Capy session start. The frozen bootstrapper the Drive skill holds
|
|
# (capy/skill/gstack/scripts/install.sh) clones or fast-forwards this checkout
|
|
# and execs this script with its own arguments plus:
|
|
# GSTACK_CAPY_WRAPPER_REV / GSTACK_CAPY_WRAPPER_PATH the bootstrapper that ran
|
|
# GSTACK_CAPY_REMOTE_MIN the supported minimum from origin's capy/support.env, or `unknown`
|
|
# GSTACK_CAPY_UPGRADED_FROM the version it fast-forwarded from (setup is never skipped then)
|
|
# GSTACK_CAPY_LOCK_HELD=1 install mode: .gstack-capy-install.lock is held on an
|
|
# inherited descriptor; nothing here takes it again
|
|
# Because this file moves with the checkout, session-start behavior can change
|
|
# without anyone recopying the Drive skill.
|
|
#
|
|
# Usage: gstack-capy-session [--check] --root <checkout> [gstack-capy-install arguments]
|
|
# --check certify only (bin/gstack-capy-install --check: the doctor with the
|
|
# launch PATH and the remote minimum, the verdict, the launch line)
|
|
# default install or repair (bin/gstack-capy-install)
|
|
# The last line is the `gstack:` trailer; the exit status is the installer's.
|
|
set -u
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
|
|
prev=""
|
|
for a in "$@"; do [ "$prev" = --root ] && ROOT="$a"; prev="$a"; done
|
|
INSTALLER="$ROOT/bin/gstack-capy-install"
|
|
if [ ! -x "$INSTALLER" ]; then
|
|
echo "gstack: fail installer — $INSTALLER is missing; fix: bash ${GSTACK_CAPY_WRAPPER_PATH:-<skill>/scripts/install.sh} (re-clones or fast-forwards)"
|
|
exit 1
|
|
fi
|
|
[ "${GSTACK_CAPY_REMOTE_MIN:-}" = unknown ] && echo "gstack-capy-session: remote minimum unknown (fetch failed); the revision row is local only"
|
|
exec "$INSTALLER" "$@"
|