summaryrefslogtreecommitdiff
path: root/Omni/Agent/monitor.sh
blob: e57611f17b772b83b1ed90ca5f1dbd3b416cac45 (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/env bash
# Omni/Agent/monitor.sh
# Monitor the logs of a worker agent
# Usage: ./Omni/Agent/monitor.sh [--raw] [worker-name]

set -e

RAW_MODE=false
WORKER="omni-worker-1"

# Parse arguments
while [[ "$#" -gt 0 ]]; do
    case $1 in
        --raw) RAW_MODE=true ;;
        *) WORKER="$1" ;;
    esac
    shift
done

REPO_ROOT="$(git rev-parse --show-toplevel)"
WORKER_DIR="$REPO_ROOT/../$WORKER"
LOG_FILE="$WORKER_DIR/_/llm/amp.log"

if [ ! -d "$WORKER_DIR" ]; then
    echo "Error: Worker directory '$WORKER_DIR' not found."
    echo "Usage: $0 [--raw] [worker-name]"
    exit 1
fi

echo "Monitoring worker: $WORKER"
echo "Watching log: $LOG_FILE"
if [ "$RAW_MODE" = true ]; then
    echo "Mode: RAW output"
else
    echo "Mode: FORMATTED output"
fi
echo "---------------------------------------------------"

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

if [ "$RAW_MODE" = true ]; then
    tail -f "$LOG_FILE"
else
    # Tail the log and use jq to parse/filter relevant events
    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
    '
fi