diff options
| author | Ben Sima <ben@bensima.com> | 2025-11-22 13:42:24 -0500 |
|---|---|---|
| committer | Ben Sima <ben@bensima.com> | 2025-11-22 13:54:41 -0500 |
| commit | 326309f82408eb29c520ec83cff9bf66c9dd780a (patch) | |
| tree | 4cf9ba641d2673b81a83702b32498ff75c4e89f0 /Omni/Agent/monitor.sh | |
| parent | 8697fd8a11a1cf368db1e6c05afddf87906e8de3 (diff) | |
feat: implement t-rWcqsDZFM.3
Consolidated `monitor.sh` and `monitor-worker.sh` into a single
`monitor.sh` script.
1. Updated `Omni/Agent/monitor.sh`:
- Default behavior now uses `jq` to filter logs (formerly
`monitor-worker.sh` behavior). - Added `--raw` flag to support
raw log tailing (original `monitor.sh` behavior). - Accepts worker
name as an argument (e.g., `./monitor.sh --raw omni-worker-2`).
2. Deleted `Omni/Agent/monitor-worker.sh`. 3. Updated
`Omni/Agent/DESIGN.md` to reference the consolidated script. 4.
Verified syntax of the new script. 5. Ran tests for `Omni/Agent.hs`
(passed).
The new usage for `monitor.sh` is: ```bash ./Omni/Agent/monitor.sh
[worker-name] # Formatted output (default) ./Omni/Agent/monitor.sh
--raw [worker-name] # Raw output ```
Diffstat (limited to 'Omni/Agent/monitor.sh')
| -rwxr-xr-x | Omni/Agent/monitor.sh | 68 |
1 files changed, 57 insertions, 11 deletions
diff --git a/Omni/Agent/monitor.sh b/Omni/Agent/monitor.sh index 1626354..e57611f 100755 --- a/Omni/Agent/monitor.sh +++ b/Omni/Agent/monitor.sh @@ -1,29 +1,75 @@ #!/usr/bin/env bash # Omni/Agent/monitor.sh # Monitor the logs of a worker agent -# Usage: ./Omni/Agent/monitor.sh [worker-name] +# 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 -WORKER="${1:-omni-worker-1}" 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 [worker-name]" + echo "Usage: $0 [--raw] [worker-name]" exit 1 fi -LOG_FILE="$WORKER_DIR/_/llm/amp.log" - 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 -while [ ! -f "$LOG_FILE" ]; do - echo "Waiting for log file to be created..." - sleep 2 -done +if [ ! -f "$LOG_FILE" ]; then + echo "Waiting for log file at $LOG_FILE..." + while [ ! -f "$LOG_FILE" ]; do + sleep 1 + done +fi -# Tail the log file -tail -f "$LOG_FILE" +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 |
