The 'tool calls & reasoning' activity log dumped each text part verbatim, including the agent's BEGIN_PR_DESCRIPTION..END_PR_DESCRIPTION block — which is already published as the PR description, so it appeared twice (e.g. homelab PR #117). Strip that block from text parts, and drop a text entry that becomes empty after stripping. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
33 lines
1.5 KiB
Bash
Executable File
33 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Build activity log (tool calls + reasoning) from the event stream into /tmp/activity_log.md.
|
|
# Only dev agents (mode=pr) get an activity-log comment — comment-only roles (pm/qa)
|
|
# do no tool calls, so a trail would be empty/noise.
|
|
#
|
|
# Required env (provided by the workflow step): MODE
|
|
set -u
|
|
|
|
if [ "$MODE" != "pr" ]; then
|
|
echo "skipping activity log for comment-mode agent"; : > /tmp/activity_log.md; exit 0
|
|
fi
|
|
jq -r '
|
|
def trunc(n): if length > n then (.[0:n] + "…") else . end;
|
|
select(.type=="tool_use" or .type=="text") |
|
|
if .type=="text" then
|
|
# Drop the PR-description block from the reasoning trail — it is already published verbatim as
|
|
# the PR description, so repeating it here is redundant noise. Skip a text part that is nothing
|
|
# but that block (would otherwise be an empty "💬 " entry).
|
|
((.part.text // "")
|
|
| gsub("BEGIN_PR_DESCRIPTION.*?END_PR_DESCRIPTION"; ""; "m")
|
|
| gsub("\\A[[:space:]]+|[[:space:]]+\\z"; "")) as $t |
|
|
if $t == "" then empty else "💬 " + ($t | trunc(4000)) end
|
|
else
|
|
(.part.tool // "?") as $t |
|
|
((.part.state.title // (.part.state.input | tojson | trunc(160)) // "")) as $title |
|
|
"🔧 **" + $t + "**: `" + ($title | trunc(240)) + "`"
|
|
end
|
|
' /tmp/events.jsonl > /tmp/activity_log.md 2>/dev/null || true
|
|
n=$(wc -l < /tmp/activity_log.md 2>/dev/null || echo 0)
|
|
echo "activity log: $n entries"
|
|
[ "$n" -eq 0 ] && : > /tmp/activity_log.md
|
|
head -3 /tmp/activity_log.md
|