@@ -53,6 +53,7 @@ wiggum() {
5353 break
5454 fi
5555
56+ local start_time=$(date -Iseconds)
5657 local output=$({
5758 cat "$prompt_file"
5859 cat <<EOF
@@ -77,19 +78,32 @@ ONLY WORK ON A SINGLE TASK.
7778EOF
7879 } | claude -p \
7980 --dangerously-skip-permissions \
80- --output-format=stream- json \
81- --model "${model:-opus}" \
82- --verbose )
81+ --output-format=json \
82+ --model "${model:-opus}")
83+ local end_time=$(date -Iseconds )
8384
8485 if [[ "$output" == *"WIGGUM:OVER"* ]]; then
8586 echo "Work complete (WIGGUM:OVER)"
8687 break
8788 fi
8889
89- local log_json=$(echo "$output" | grep -oE 'WIGGUM_LOG:\{[^}]+\}' | head -1 | sed 's/WIGGUM_LOG://' | sed 's/\\"/"/g')
90+ local result_text=$(echo "$output" | jq -r '.result // empty')
91+ local log_json=$(echo "$result_text" | grep -oE 'WIGGUM_LOG:\{[^}]+\}' | head -1 | sed 's/WIGGUM_LOG://')
92+ local input_tokens=$(echo "$output" | jq -r '.usage.input_tokens // 0')
93+ local output_tokens=$(echo "$output" | jq -r '.usage.output_tokens // 0')
94+ local start_epoch=$(date -j -f "%Y-%m-%dT%H:%M:%S" "${start_time%[-+]*}" "+%s" 2>/dev/null)
95+ local end_epoch=$(date -j -f "%Y-%m-%dT%H:%M:%S" "${end_time%[-+]*}" "+%s" 2>/dev/null)
96+ local duration_secs=$((end_epoch - start_epoch))
97+
9098 if [[ -n "$log_json" ]]; then
91- local ts=$(date -Iseconds)
92- local entry=$(echo "$log_json" | jq --arg ts "$ts" --argjson iter "$iteration" '. + {timestamp: $ts, iteration: $iter}')
99+ local entry=$(echo "$log_json" | jq \
100+ --arg start "$start_time" \
101+ --arg end "$end_time" \
102+ --argjson iter "$iteration" \
103+ --argjson input "${input_tokens:-0}" \
104+ --argjson output "${output_tokens:-0}" \
105+ --argjson duration "$duration_secs" \
106+ '. + {iteration: $iter, start_time: $start, end_time: $end, duration_secs: $duration, input_tokens: $input, output_tokens: $output}')
93107
94108 if [[ -f "wiggum_log.json" ]]; then
95109 jq --argjson entry "$entry" '. += [$entry]' wiggum_log.json > wiggum_log.json.tmp && mv wiggum_log.json.tmp wiggum_log.json
98112 fi
99113
100114 echo -e "\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
101- echo "$entry" | jq '. '
115+ echo "$entry" | jq -r '"Success: \(.success)\nSummary: \(.summary)\nSteps: \(.steps_taken | join(", "))\nCommands: \(.commands_run | join(", "))\nIssues: \(.issues_encountered | if length == 0 then "none" else join(", ") end)\nDuration: \(.duration_secs)s\nTokens: \(.input_tokens) in / \(.output_tokens) out" '
102116 echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
103117 fi
104118
0 commit comments