mirror of
https://github.com/garrytan/gstack.git
synced 2026-06-17 23:30:09 +02:00
4274b1204d
The skill doc has been telling users to run `gstack-ios-qa-daemon` and `gstack-ios-qa-mint` since v1.41.0.0, but neither binary actually existed. Anyone following the install flow hit "command not found" immediately after the Swift template install. Adds the missing pieces: - bin/gstack-ios-qa-daemon — bash shim that execs `bun run ios-qa/daemon/src/index.ts`. Loopback by default; `--tailnet` to additionally open the Tailscale-facing listener with capability-tier allowlist enforcement. - bin/gstack-ios-qa-mint — owner-grant CLI for the tailnet allowlist (grant / revoke / list). Writes ~/.gstack/ios-qa-allowlist.json at mode 0600. Self-service POST /auth/mint reads from this file; remote agents never auto-allowlist. - ios-qa/daemon/src/cli-mint.ts — TS implementation behind the shim. Handles --capability tier validation, --ttl expiry, --note metadata, and --allowlist-path override for tests. - ios-qa/daemon/src/allowlist.ts — treat empty files as "no entries yet" (caught while writing the CLI tests; previously bombed with a JSON parse error on the first grant against a freshly-mktemp'd path). Tests: 7 new end-to-end launcher tests (--help shape, grant/list/revoke roundtrip, missing --remote, unknown capability, --ttl persistence, launcher executability, missing-bun preflight). All 81 daemon tests pass. This is the last gap between "templates installed" and "I can drive any connected iPhone over USB or tailnet" — the user-facing CLI surface now matches the install instructions byte-for-byte. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
29 lines
858 B
Bash
Executable File
29 lines
858 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# gstack-ios-qa-mint — manage the tailnet allowlist for remote iOS QA agents.
|
|
#
|
|
# This is the owner-grant path: it writes identities into the local allowlist
|
|
# so a remote agent on the tailnet can self-service mint a session token via
|
|
# POST /auth/mint against the daemon.
|
|
#
|
|
# Run `gstack-ios-qa-mint --help` for full usage.
|
|
#
|
|
# Allowlist file: ~/.gstack/ios-qa-allowlist.json (mode 0600).
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
GSTACK_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
ENTRY="$GSTACK_DIR/ios-qa/daemon/src/cli-mint.ts"
|
|
|
|
if [ ! -f "$ENTRY" ]; then
|
|
echo "gstack-ios-qa-mint: missing $ENTRY (gstack install incomplete?)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v bun >/dev/null 2>&1; then
|
|
echo "gstack-ios-qa-mint: bun runtime not on PATH — install from https://bun.sh" >&2
|
|
exit 1
|
|
fi
|
|
|
|
exec bun run "$ENTRY" "$@"
|