Complete real-time monitoring dashboard for Claude Code Features: - FastAPI backend with REST API and WebSocket - React + TypeScript frontend with dark theme - SQLite database for event storage - 6 hook scripts for Claude Code events - Docker deployment setup - Real-time event tracking and statistics - Event filtering (ALL, TOOLS, AGENTS, PROMPTS, SESSIONS) - Connection status indicator - Reset stats functionality Tech Stack: - Backend: Python 3.11, FastAPI, SQLAlchemy, WebSockets - Frontend: React 18, TypeScript, Vite - Database: SQLite - Deployment: Docker, Docker Compose 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
47 lines
1.3 KiB
Bash
Executable File
47 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Post Tool Use Hook for Claude Code Monitor
|
|
# Captures tool execution events and sends them to the backend
|
|
|
|
# Read JSON from stdin
|
|
INPUT=$(cat)
|
|
|
|
# Extract fields using jq
|
|
SESSION_ID=$(echo "$INPUT" | jq -r '.session_id // "unknown"')
|
|
TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name // null')
|
|
TOOL_INPUT=$(echo "$INPUT" | jq -c '.tool_input // {}')
|
|
TOOL_OUTPUT=$(echo "$INPUT" | jq -r '.tool_response // null')
|
|
TIMESTAMP=$(echo "$INPUT" | jq -r '.timestamp // (now | tonumber)')
|
|
SUCCESS=$(echo "$INPUT" | jq -r '.success // true')
|
|
|
|
# Build payload for backend
|
|
PAYLOAD=$(jq -n \
|
|
--arg session_id "$SESSION_ID" \
|
|
--arg event_type "PostToolUse" \
|
|
--arg tool_name "$TOOL_NAME" \
|
|
--argjson tool_input "$TOOL_INPUT" \
|
|
--arg tool_output "$TOOL_OUTPUT" \
|
|
--arg timestamp "$TIMESTAMP" \
|
|
--argjson success "$SUCCESS" \
|
|
'{
|
|
session_id: $session_id,
|
|
event_type: $event_type,
|
|
tool_name: $tool_name,
|
|
tool_input: $tool_input,
|
|
tool_output: $tool_output,
|
|
timestamp: ($timestamp | tonumber),
|
|
success: $success
|
|
}')
|
|
|
|
# Send to backend API (asynchronous, non-blocking)
|
|
curl -X POST \
|
|
-H "Content-Type: application/json" \
|
|
-d "$PAYLOAD" \
|
|
http://localhost:8000/api/events \
|
|
--max-time 2 \
|
|
--silent \
|
|
--show-error \
|
|
> /dev/null 2>&1 &
|
|
|
|
# Exit immediately (don't wait for curl)
|
|
exit 0
|