summaryrefslogtreecommitdiff
path: root/Omni/Agent/monitor-worker.sh
blob: 2638e2d7289366c8af4848c467644e7ac2e95754 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env bash
set -e

# Omni/Agent/monitor-worker.sh
# Monitors the worker agent's activity by filtering the debug log.
# Usage: ./Omni/Agent/monitor-worker.sh [worker-directory-name]

WORKER_NAME="${1:-omni-worker-1}"
REPO_ROOT="$(git rev-parse --show-toplevel)"
WORKER_PATH="$REPO_ROOT/../$WORKER_NAME"
LOG_FILE="$WORKER_PATH/_/llm/amp.log"

if [ ! -f "$LOG_FILE" ]; then
    echo "Waiting for log file at $LOG_FILE..."
    while [ ! -f "$LOG_FILE" ]; do sleep 1; done
fi

echo "Monitoring Worker Agent in '$WORKER_PATH'..."
echo "Press Ctrl+C to stop."
echo "------------------------------------------------"

# Tail the log and use jq to parse/filter relevant events
# We handle JSON parse errors gracefully (in case of partial writes)
tail -f "$LOG_FILE" | grep --line-buffered "^{" | jq -R -r '
try (
    fromjson | 
    if .message == "executing 1 tools in 1 batch(es)" then
        "🤖  THOUGHT: Planning tool execution (" + (.batches[0][0] // "unknown") + ")"
    elif .message == "Tool Bash - checking permissions" then
        empty
    elif .message == "Tool Bash permitted - action: allow" then
        "🔧  TOOL: Bash command executed"
    elif .toolName != null and .message == "Processing tool completion for ledger" then
        "✅  TOOL: " + .toolName + " completed"
    elif .message == "ide-fs" and .method == "readFile" then
        "📂  READ: " + .path
    elif .message == "System prompt build complete (no changes)" then
        "🧠  THINKING..."
    elif .message == "System prompt build complete (first build)" then
        "🚀  STARTING new task context"
    elif .level == "error" then
        "❌  ERROR: " + .message
    else
        empty
    end
) catch empty
'