diff --git a/scripts/keisei-pet-update.sh b/scripts/keisei-pet-update.sh index cc66f8a..4401e86 100644 --- a/scripts/keisei-pet-update.sh +++ b/scripts/keisei-pet-update.sh @@ -96,11 +96,15 @@ case "$event" in [ -z "$short" ] && short="agent" id="${now}-$$-${RANDOM}" printf '%s|%s|%s\n' "$em" "$short" "$now" > "$AGENTS_DIR/$id" 2>/dev/null || true + printf '%s agent_start %s\n' "$(date -u +%FT%TZ)" "$short" >> "$HISTORY" 2>/dev/null || true exit 0 ;; agent_done) - # extract tokens from tool_response if present (Agent results carry usage) - tok="$(printf '%s' "$INPUT" | grep -oE 'total_tokens["[:space:]]*[:=]?[[:space:]]*[0-9]+' | grep -oE '[0-9]+' | head -1)" + # extract tokens from the PostToolUse Agent payload. Claude Code puts the + # sub-agent's usage at .tool_response.totalTokens (camelCase) — verified + # 2026-05-22. Fall back to summing .tool_response.usage if absent. + tok="$(printf '%s' "$INPUT" | jq -r '.tool_response.totalTokens // ((.tool_response.usage.input_tokens // 0) + (.tool_response.usage.output_tokens // 0)) // empty' 2>/dev/null)" + [ "${tok:-0}" = "0" ] && tok="" if [ -n "${tok:-}" ]; then prev=0; [ -f "$TOKENS_FILE" ] && prev="$(cat "$TOKENS_FILE" 2>/dev/null || echo 0)" echo $(( prev + tok )) > "$TOKENS_FILE" 2>/dev/null || true @@ -109,6 +113,7 @@ case "$event" in # stable per-agent id to match start↔done exactly). oldest="$(ls -1tr "$AGENTS_DIR" 2>/dev/null | head -1)" [ -n "$oldest" ] && rm -f "$AGENTS_DIR/$oldest" 2>/dev/null || true + printf '%s agent_done tok=%s\n' "$(date -u +%FT%TZ)" "${tok:-none}" >> "$HISTORY" 2>/dev/null || true exit 0 ;; plan)