#!/bin/bash # call-sonnet.sh — wrapper to call Sonnet via claude CLI # Reads prompt from a file (arg 1), writes response to stdout # # Debug mode: set SONNET_DEBUG=1 for verbose tracing set -euo pipefail PROMPT_FILE="${1:?Usage: call-sonnet.sh PROMPT_FILE}" DEBUG="${SONNET_DEBUG:-0}" log() { [ "$DEBUG" = "1" ] && echo "[call-sonnet] $*" >&2 || true; } if [ ! -f "$PROMPT_FILE" ]; then echo "Prompt file not found: $PROMPT_FILE" >&2 exit 1 fi log "prompt file: $PROMPT_FILE ($(wc -c < "$PROMPT_FILE") bytes)" log "CLAUDECODE=${CLAUDECODE:-unset}" log "PWD=$PWD" log "which claude: $(which claude)" unset CLAUDECODE 2>/dev/null || true log "CLAUDECODE after unset: ${CLAUDECODE:-unset}" log "running: claude -p --model sonnet --tools '' < $PROMPT_FILE" log "claude PID will follow..." # Trace: run with strace if available and debug mode if [ "$DEBUG" = "2" ] && command -v strace &>/dev/null; then strace -f -e trace=network,read,write -o /tmp/sonnet-strace.log \ claude -p --model sonnet --tools "" < "$PROMPT_FILE" else claude -p --model sonnet --tools "" \ --debug-file /tmp/sonnet-debug.log \ < "$PROMPT_FILE" & CPID=$! log "claude PID: $CPID" wait $CPID EXIT=$? log "claude exited: $EXIT" exit $EXIT fi