mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-02 11:45:20 +02:00
a104471272
- cli-sync.ts: push-transcript command, show sessions with formatSessionTable(), upgrade cmdSetup() to interactively create .gstack-sync.json if missing - bin/gstack-sync: add push-transcript case and help text - test/lib-llm-summarize.test.ts: 10 tests with mocked fetch (429 retry, 5xx backoff, malformed response, no API key, cache) - test/lib-transcript-sync.test.ts: 22 tests for parsing, grouping, session file extraction, marker management, slug resolution - test/lib-sync-show.test.ts: 4 tests for formatSessionTable Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
87 lines
3.1 KiB
Bash
Executable File
87 lines
3.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# gstack-sync — team data sync CLI.
|
|
#
|
|
# Usage:
|
|
# gstack-sync setup — interactive auth flow
|
|
# gstack-sync status — show sync status
|
|
# gstack-sync test — validate full sync flow
|
|
# gstack-sync show [evals|ships|retros] — view team data
|
|
# gstack-sync push-{eval,retro,qa,ship,greptile} <file> — push data
|
|
# gstack-sync push-transcript — sync Claude session transcripts
|
|
# gstack-sync pull — pull team data to local cache
|
|
# gstack-sync drain — drain the offline queue
|
|
# gstack-sync logout — clear auth tokens
|
|
#
|
|
# Env overrides (for testing):
|
|
# GSTACK_DIR — override auto-detected gstack root
|
|
# GSTACK_STATE_DIR — override ~/.gstack state directory
|
|
set -euo pipefail
|
|
|
|
GSTACK_DIR="${GSTACK_DIR:-$(cd "$(dirname "$0")/.." && pwd)}"
|
|
|
|
case "${1:-}" in
|
|
setup)
|
|
exec bun run "$GSTACK_DIR/lib/cli-sync.ts" setup
|
|
;;
|
|
status)
|
|
exec bun run "$GSTACK_DIR/lib/cli-sync.ts" status
|
|
;;
|
|
push-eval)
|
|
FILE="${2:?Usage: gstack-sync push-eval <file.json>}"
|
|
exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-eval "$FILE"
|
|
;;
|
|
push-retro)
|
|
FILE="${2:?Usage: gstack-sync push-retro <file.json>}"
|
|
exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-retro "$FILE"
|
|
;;
|
|
push-qa)
|
|
FILE="${2:?Usage: gstack-sync push-qa <file.json>}"
|
|
exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-qa "$FILE"
|
|
;;
|
|
push-ship)
|
|
FILE="${2:?Usage: gstack-sync push-ship <file.json>}"
|
|
exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-ship "$FILE"
|
|
;;
|
|
push-greptile)
|
|
FILE="${2:?Usage: gstack-sync push-greptile <file.json>}"
|
|
exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-greptile "$FILE"
|
|
;;
|
|
push-transcript)
|
|
exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-transcript
|
|
;;
|
|
test)
|
|
exec bun run "$GSTACK_DIR/lib/cli-sync.ts" test
|
|
;;
|
|
show)
|
|
exec bun run "$GSTACK_DIR/lib/cli-sync.ts" show "${@:2}"
|
|
;;
|
|
pull)
|
|
exec bun run "$GSTACK_DIR/lib/cli-sync.ts" pull
|
|
;;
|
|
drain)
|
|
exec bun run "$GSTACK_DIR/lib/cli-sync.ts" drain
|
|
;;
|
|
logout)
|
|
exec bun run "$GSTACK_DIR/lib/cli-sync.ts" logout
|
|
;;
|
|
*)
|
|
echo "Usage: gstack-sync <command> [args]"
|
|
echo ""
|
|
echo "Commands:"
|
|
echo " setup Interactive auth flow (opens browser)"
|
|
echo " status Show sync status (queue, cache, connection)"
|
|
echo " test Validate full sync flow (push + pull)"
|
|
echo " show [evals|ships|retros|sessions] View team data in terminal"
|
|
echo " push-eval <file> Push eval result JSON to team store"
|
|
echo " push-retro <file> Push retro snapshot JSON"
|
|
echo " push-qa <file> Push QA report JSON"
|
|
echo " push-ship <file> Push ship log JSON"
|
|
echo " push-greptile <file> Push Greptile triage entry JSON"
|
|
echo " push-transcript Sync Claude session transcripts"
|
|
echo " pull Pull team data to local cache"
|
|
echo " drain Drain the offline sync queue"
|
|
echo " logout Clear auth tokens"
|
|
exit 1
|
|
;;
|
|
esac
|