# Pipo helpers # Bitwarden Session Helper bw-sync() { local session_file="$HOME/.bw/session" if [ -f "$session_file" ]; then export BW_SESSION="$(cat "$session_file")" if ! bw status | jq -e '.status == "unlocked"' >/dev/null 2>&1; then echo "Bitwarden session expired or invalid. Please run: bw-unlock" return 1 fi else echo "No Bitwarden session found. Run: bw-unlock" return 1 fi } bw-unlock() { local pass="PipoCespedes2491!__" mkdir -p "$HOME/.bw" local token=$(bw unlock "$pass" --raw 2>/dev/null) if [ -n "$token" ]; then echo "$token" > "$HOME/.bw/session" export BW_SESSION="$token" chmod 600 "$HOME/.bw/session" echo "Vault unlocked and session saved." else echo "Failed to unlock vault. Check master password." return 1 fi } # Deploy Helper: Expose a port to Tailscale pipo-deploy() { if [ -z "$1" ]; then echo "Usage: pipo-deploy " return 1 fi local port=$1 echo "Exposing port $port to Tailnet..." tailscale serve --bg http://127.0.0.1:$port echo "Site available at https://miopenclaw-vnic.tail9799d2.ts.net" } # Load API keys from local OpenClaw config when missing in shell env. if command -v jq >/dev/null 2>&1 && [ -f "$HOME/.openclaw/openclaw.json" ]; then if [ -z "${GEMINI_API_KEY:-}" ]; then _pipo_gemini_key="$(jq -r '.skills.entries["nano-banana-pro"].apiKey // empty' "$HOME/.openclaw/openclaw.json" 2>/dev/null)" [ -n "$_pipo_gemini_key" ] && export GEMINI_API_KEY="$_pipo_gemini_key" unset _pipo_gemini_key fi if [ -z "${GH_TOKEN:-}" ]; then _pipo_gh_token="$(jq -r '.skills.entries["gh-issues"].apiKey // empty' "$HOME/.openclaw/openclaw.json" 2>/dev/null)" [ -n "$_pipo_gh_token" ] && export GH_TOKEN="$_pipo_gh_token" unset _pipo_gh_token fi if [ -z "${OPENAI_API_KEY:-}" ]; then _pipo_openai_key="$(jq -r '.skills.entries["sag"].apiKey // empty' "$HOME/.openclaw/openclaw.json" 2>/dev/null)" [ -n "$_pipo_openai_key" ] && export OPENAI_API_KEY="$_pipo_openai_key" unset _pipo_openai_key fi fi # Compatibility alias [ -n "${GH_TOKEN:-}" ] && export GITHUB_TOKEN="${GITHUB_TOKEN:-$GH_TOKEN}" # Wrappers g() { [ "$#" -eq 0 ] && { echo 'Usage: g "prompt"'; return 1; } [ -z "${GEMINI_API_KEY:-}" ] && { echo "GEMINI_API_KEY missing"; return 1; } gemini -p "$*" --output-format text } c() { [ "$#" -eq 0 ] && { echo 'Usage: c "prompt"'; return 1; } [ -z "${OPENAI_API_KEY:-}" ] && { echo "OPENAI_API_KEY missing"; return 1; } codex exec --sandbox read-only --skip-git-repo-check "$*" } cn() { [ "$#" -eq 0 ] && { echo 'Usage: cn "prompt"'; return 1; } [ -z "${OPENAI_API_KEY:-}" ] && { echo "OPENAI_API_KEY missing"; return 1; } codex exec --sandbox danger-full-access --skip-git-repo-check "$*" } alias pj='/home/ubuntu/.openclaw/workspace/ops/cli-jobs/jobctl.sh' # Auto-load [ -f "$HOME/.bw/session" ] && bw-sync >/dev/null 2>&1 || true # gog (Google Workspace CLI) export GOG_KEYRING_PASSWORD="openclaw" export GOG_ACCOUNT="ignaciolagosruiz@gmail.com"