030a6bc793
The previous demo harness called the backend Python API directly, which didn't match what a user typing `./cli.py start <agent>` would actually see. The recording now goes through the real CLI surface: - claude-bottle.demo.json + scripts/demo-setup.sh stage a demo manifest (one bottle, FAKE_TOKEN env, one unreachable git upstream) alongside a dummy SSH identity at ~/.cache/claude-bottle-demo/. - docs/demo.tape types `./cli.py start demo`, answers the y/N preflight, and runs four bash probes via claude's `!` prefix (curl x3 + git push), so the recording shows real preflight output and real probe results. - scripts/demo.sh wraps setup -> cli.py -> teardown for human use; scripts/demo-record.sh does the same around `vhs docs/demo.tape`. - .gitignore picks up claude-bottle.json so a user's local manifest doesn't get tracked alongside .example / .demo siblings. scripts/demo_harness.py is removed -- its behavior is fully replaced by the cli.py + `!` flow. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
30 lines
962 B
Bash
Executable File
30 lines
962 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Human-runnable demo wrapper. Stages the demo manifest and dummy
|
|
# identity (see scripts/demo-setup.sh), launches `./cli.py start demo`
|
|
# interactively, then restores prior state. The recorded GIF
|
|
# (docs/demo.gif) goes through the same flow via docs/demo.tape.
|
|
#
|
|
# Once attached to claude inside the bottle, use the `!` prefix to run
|
|
# bash directly — e.g.
|
|
# ! curl --proxy "$HTTPS_PROXY" -sw 'status=%{http_code}\n' \
|
|
# -o /dev/null http://example.com/
|
|
# returns 403 because example.com is not on the bottle's allowlist.
|
|
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")/.."
|
|
|
|
if [ -z "${CLAUDE_BOTTLE_OAUTH_TOKEN:-}" ]; then
|
|
cat <<'EOF' >&2
|
|
demo: CLAUDE_BOTTLE_OAUTH_TOKEN is unset. The bottle launches claude,
|
|
which needs the token to authenticate. Set it in your shell env (e.g.
|
|
~/.zshrc) — see README §Auth — then re-run.
|
|
EOF
|
|
exit 1
|
|
fi
|
|
|
|
bash scripts/demo-setup.sh
|
|
trap 'bash scripts/demo-teardown.sh' EXIT
|
|
|
|
./cli.py start demo
|