# V3 Statusline & Daemon Integration

## Overview

The V3 hooks system integrates with background daemons and statusline displays to provide real-time monitoring of swarm activity, implementation progress, and security status. This document covers the integration between hooks and the daemon infrastructure.

## Architecture

```
┌─────────────────────────────────────────────────────────────────────────┐
│                        Claude Code Session                               │
├─────────────────────────────────────────────────────────────────────────┤
│  SessionStart Hook                                                       │
│  └─> .claude/helpers/daemon-manager.sh start                            │
│       ├─> swarm-monitor.sh     (process detection, 3s interval)         │
│       ├─> metrics-db.mjs       (SQLite sync, 30s interval)              │
│       └─> hooks-daemon.mjs     (learning sync, 60s interval)            │
├─────────────────────────────────────────────────────────────────────────┤
│  Hooks System Integration                                                │
│  ├─> PreToolUse Hook   → Activity detection → Metrics update            │
│  ├─> PostToolUse Hook  → Outcome recording → Pattern learning           │
│  ├─> PreCommand Hook   → Risk assessment   → Security tracking          │
│  └─> PostTask Hook     → Progress update   → Statusline refresh         │
├─────────────────────────────────────────────────────────────────────────┤
│  statusline.sh (on-demand, <200ms)                                       │
│  └─> Reads from:                                                         │
│       ├─ .claude-flow/metrics.db      (SQLite, primary)                 │
│       ├─ .claude-flow/hooks.db        (ReasoningBank patterns)          │
│       └─ .claude-flow/metrics/*.json  (exported, legacy compat)         │
├─────────────────────────────────────────────────────────────────────────┤
│  SessionEnd Hook                                                         │
│  └─> .claude/helpers/daemon-manager.sh stop                             │
│       └─> Final metrics export, pattern consolidation                   │
└─────────────────────────────────────────────────────────────────────────┘
```

## Daemons

### 1. Daemon Manager (`daemon-manager.sh`)

Central control for all background processes with hooks integration.

```bash
# Start all daemons (called by SessionStart hook)
.claude/helpers/daemon-manager.sh start [swarm_interval] [metrics_interval] [hooks_interval]

# Default intervals: swarm=3s, metrics=30s, hooks=60s
.claude/helpers/daemon-manager.sh start 3 30 60

# Stop all daemons (called by SessionEnd hook)
.claude/helpers/daemon-manager.sh stop

# Restart with new configuration
.claude/helpers/daemon-manager.sh restart

# Check daemon status
.claude/helpers/daemon-manager.sh status
```

**PID Management:**
```
.claude-flow/pids/
├── swarm-monitor.pid      # Swarm monitoring daemon
├── metrics-daemon.pid     # Metrics collection daemon
└── hooks-daemon.pid       # Hooks learning daemon
```

**Log Files:**
```
.claude-flow/logs/
├── daemon.log             # Daemon manager operations
├── swarm-monitor.log      # Process detection logs
├── metrics-daemon.log     # Metrics sync logs
└── hooks-daemon.log       # Learning operation logs
```

### 2. Metrics Database Daemon (`metrics-db.mjs`)

SQLite-based metrics storage with hooks integration.

```bash
# Sync metrics from implementation
node .claude/helpers/metrics-db.mjs sync

# Export to JSON (statusline compatibility)
node .claude/helpers/metrics-db.mjs export

# Run as daemon
node .claude/helpers/metrics-db.mjs daemon [interval_seconds]

# Query specific metrics
node .claude/helpers/metrics-db.mjs query "SELECT * FROM hooks_metrics"
```

**Extended Schema for Hooks:**
```sql
-- Hooks Activity Metrics
CREATE TABLE hooks_metrics (
  id INTEGER PRIMARY KEY,
  total_executions INTEGER,
  total_failures INTEGER,
  avg_execution_time REAL,
  patterns_learned INTEGER,
  routing_confidence REAL,
  last_updated TEXT
);

-- Per-Hook Statistics
CREATE TABLE hook_stats (
  hook_name TEXT PRIMARY KEY,
  category TEXT,
  execution_count INTEGER,
  success_rate REAL,
  avg_time_ms REAL,
  last_executed TEXT
);

-- Routing History
CREATE TABLE routing_history (
  id INTEGER PRIMARY KEY,
  task_hash TEXT,
  recommended_agent TEXT,
  confidence REAL,
  was_successful INTEGER,
  timestamp TEXT
);

-- Learning Patterns
CREATE TABLE learning_patterns (
  pattern_id TEXT PRIMARY KEY,
  category TEXT,
  quality_score REAL,
  usage_count INTEGER,
  created_at TEXT,
  last_used TEXT
);
```

### 3. Swarm Monitor Daemon (`swarm-monitor.sh`)

Real-time process detection with hooks event emission.

```bash
# Single check (returns JSON)
.claude/helpers/swarm-monitor.sh check

# Continuous monitoring with hooks notification
.claude/helpers/swarm-monitor.sh monitor [interval]

# Status with hooks metrics
.claude/helpers/swarm-monitor.sh status --include-hooks
```

**Output:**
```json
{
  "timestamp": "2025-01-05T12:00:00Z",
  "swarm": {
    "agentic_flow_processes": 3,
    "mcp_server_processes": 2,
    "estimated_agents": 5,
    "active": true,
    "coordination_active": true
  },
  "hooks": {
    "daemon_running": true,
    "patterns_loaded": 156,
    "routing_enabled": true
  }
}
```

### 4. Hooks Learning Daemon (`hooks-daemon.mjs`)

Background process for ReasoningBank consolidation.

```bash
# Run consolidation cycle
node .claude/helpers/hooks-daemon.mjs consolidate

# Run as daemon
node .claude/helpers/hooks-daemon.mjs daemon [interval_seconds]

# Export patterns
node .claude/helpers/hooks-daemon.mjs export --format json
```

**Operations:**
- **Trajectory pruning**: Remove low-quality trajectories
- **Pattern consolidation**: Merge similar patterns
- **Memory optimization**: Compress old patterns
- **Index rebuilding**: Optimize HNSW index

## Statusline Integration

### Format

```
▊ Claude Flow V3 ● agentic-flow@alpha  │  ⎇ v3
─────────────────────────────────────────────────────
🏗️  DDD Domains    [●●●●●]  5/5    ⚡ 1.0x → 2.49x-7.47x
🤖 Swarm Agents    ◉ [ 5/15]      🟢 CVE 3/3    💾 156 patterns
🔧 Architecture    DDD ●93%  │  Security ●CLEAN  │  Hooks ●ACTIVE
📊 Routing         89% accuracy │  Avg 4.2ms │  1547 operations
─────────────────────────────────────────────────────
```

### Statusline Script

```bash
#!/bin/bash
# .claude/statusline.sh - V3 with Hooks Integration

# Read from SQLite if available
if [ -f ".claude-flow/metrics.db" ]; then
  METRICS=$(node -e "
    const db = require('.claude/helpers/metrics-db.mjs');
    console.log(JSON.stringify(db.getStatuslineData()));
  " 2>/dev/null)

  # Extract values
  DDD_PROGRESS=$(echo "$METRICS" | jq -r '.ddd_progress // 0')
  ACTIVE_AGENTS=$(echo "$METRICS" | jq -r '.active_agents // 0')
  CVE_STATUS=$(echo "$METRICS" | jq -r '.cve_status // "PENDING"')
  PATTERNS=$(echo "$METRICS" | jq -r '.patterns_learned // 0')
  ROUTING_ACC=$(echo "$METRICS" | jq -r '.routing_accuracy // 0')
  HOOK_STATUS=$(echo "$METRICS" | jq -r '.hooks_status // "INACTIVE"')
fi

# Format output
printf "▊ Claude Flow V3 ● agentic-flow@alpha  │  ⎇ v3\n"
printf "─────────────────────────────────────────────────────\n"
printf "🏗️  DDD Domains    %s  │  ⚡ Performance targets active\n" "$DDD_PROGRESS"
printf "🤖 Swarm Agents    ◉ [%2d/15]      🟢 CVE %s    💾 %d patterns\n" "$ACTIVE_AGENTS" "$CVE_STATUS" "$PATTERNS"
printf "🔧 Hooks           %s  │  Routing %d%%  │  Learning %s\n" "$HOOK_STATUS" "$ROUTING_ACC" "ACTIVE"
printf "─────────────────────────────────────────────────────\n"
```

### Performance

| Component | Target | Typical |
|-----------|--------|---------|
| statusline.sh total | <200ms | 138ms |
| SQLite query | <50ms | 12ms |
| JSON export | <100ms | 45ms |
| Hooks metrics | <20ms | 8ms |

## Hook Configuration

### Claude Settings (`~/.claude/settings.json`)

```json
{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "timeout": 5000,
            "command": "/workspaces/claude-flow/.claude/helpers/daemon-manager.sh start 3 30 60"
          }
        ]
      }
    ],
    "SessionEnd": [
      {
        "hooks": [
          {
            "type": "command",
            "timeout": 3000,
            "command": "/workspaces/claude-flow/.claude/helpers/daemon-manager.sh stop"
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "hooks": [
          {
            "type": "command",
            "timeout": 100,
            "command": "node .claude/helpers/hooks-daemon.mjs notify-activity"
          }
        ]
      }
    ]
  },
  "statusLine": {
    "type": "command",
    "command": "/workspaces/claude-flow/.claude/statusline.sh"
  }
}
```

### V3 Project Settings (`.claude-flow/config.json`)

```json
{
  "daemons": {
    "enabled": true,
    "swarmMonitor": {
      "enabled": true,
      "interval": 3000
    },
    "metricsSync": {
      "enabled": true,
      "interval": 30000,
      "database": ".claude-flow/metrics.db"
    },
    "hooksLearning": {
      "enabled": true,
      "interval": 60000,
      "database": ".claude-flow/hooks.db"
    }
  },
  "statusline": {
    "enabled": true,
    "refreshOnHook": true,
    "showHooksMetrics": true,
    "showSwarmActivity": true
  }
}
```

## Event Flow

### 1. Session Start

```
SessionStart Hook Triggered
    │
    ├─> daemon-manager.sh start
    │   ├─> Start swarm-monitor.sh (every 3s)
    │   ├─> Start metrics-db.mjs daemon (every 30s)
    │   └─> Start hooks-daemon.mjs (every 60s)
    │
    ├─> Initialize ReasoningBank
    │   ├─> Load patterns from .claude-flow/hooks.db
    │   └─> Warm HNSW index for retrieval
    │
    └─> First statusline render
```

### 2. During Session

```
Tool Use (e.g., Edit)
    │
    ├─> PreToolUse Hook
    │   ├─> hooks-daemon.mjs notify-activity
    │   └─> Increment metrics counter
    │
    ├─> Tool Execution
    │
    └─> PostToolUse Hook
        ├─> Record outcome to ReasoningBank
        ├─> Update hooks_metrics table
        └─> (If successful) Queue pattern distillation
```

### 3. Background Sync

```
Every 30 seconds (metrics-db.mjs daemon):
    │
    ├─> Scan V3 implementation files
    │   ├─> Count files per module
    │   └─> Calculate DDD progress
    │
    ├─> Check security status
    │   └─> CVE remediation count
    │
    ├─> Export JSON for statusline
    │
    └─> Log sync completion

Every 60 seconds (hooks-daemon.mjs):
    │
    ├─> Consolidate ReasoningBank patterns
    │   ├─> Prune low-quality trajectories
    │   └─> Merge duplicate patterns
    │
    ├─> Update hook_stats table
    │
    └─> Optimize HNSW index if needed
```

### 4. Session End

```
SessionEnd Hook Triggered
    │
    ├─> daemon-manager.sh stop
    │   ├─> SIGTERM to all daemons
    │   └─> Wait for graceful shutdown
    │
    ├─> Final ReasoningBank consolidation
    │   └─> Export learned patterns
    │
    ├─> Final metrics sync
    │   └─> Export to JSON
    │
    └─> Log session summary
```

## Metrics Tracked

### Hooks Performance

| Metric | Description | Update Frequency |
|--------|-------------|------------------|
| `total_executions` | Total hook invocations | Real-time |
| `total_failures` | Failed hook executions | Real-time |
| `avg_execution_time` | Average hook time (ms) | Every 30s |
| `patterns_learned` | ReasoningBank patterns | Every 60s |
| `routing_accuracy` | Task routing success rate | Every 60s |
| `routing_confidence` | Average routing confidence | Every 60s |

### Per-Hook Statistics

| Metric | Description |
|--------|-------------|
| `hook_name` | Hook identifier |
| `category` | pre-edit, post-edit, routing, etc. |
| `execution_count` | Times executed |
| `success_rate` | Success percentage |
| `avg_time_ms` | Average execution time |
| `last_executed` | Timestamp of last execution |

### Learning Metrics

| Metric | Description |
|--------|-------------|
| `trajectories_stored` | Total trajectories in ReasoningBank |
| `patterns_distilled` | Memories extracted from trajectories |
| `consolidation_runs` | Pattern consolidation cycles |
| `index_size` | HNSW index entry count |
| `avg_retrieval_time` | Pattern retrieval latency |

## Troubleshooting

### Daemons Not Starting

```bash
# Check daemon status
.claude/helpers/daemon-manager.sh status

# View logs
tail -f .claude-flow/logs/daemon.log

# Check for stale PID files
ls -la .claude-flow/pids/

# Manual cleanup and restart
rm .claude-flow/pids/*.pid
.claude/helpers/daemon-manager.sh start
```

### Statusline Not Updating

```bash
# Force metrics sync
node .claude/helpers/metrics-db.mjs sync

# Check SQLite database
sqlite3 .claude-flow/metrics.db "SELECT * FROM hooks_metrics"

# Verify statusline script
bash -x .claude/statusline.sh
```

### ReasoningBank Issues

```bash
# Check hooks database
node .claude/helpers/hooks-daemon.mjs status

# Force consolidation
node .claude/helpers/hooks-daemon.mjs consolidate --force

# Rebuild patterns
node .claude/helpers/hooks-daemon.mjs rebuild-index
```

### High CPU from Daemons

```bash
# Increase daemon intervals
.claude/helpers/daemon-manager.sh restart 10 60 120

# Disable non-essential daemons
.claude/helpers/daemon-manager.sh start --no-hooks-daemon
```

## Files Reference

```
.claude/
├── statusline.sh                    # Main statusline script
├── settings.json                    # Claude settings with hooks
└── helpers/
    ├── daemon-manager.sh            # Daemon lifecycle
    ├── metrics-db.mjs               # Metrics SQLite engine
    ├── swarm-monitor.sh             # Process detection
    └── hooks-daemon.mjs             # Learning background process

.claude-flow/
├── metrics.db                       # Main metrics database
├── hooks.db                         # ReasoningBank storage
├── config.json                      # V3 configuration
├── pids/
│   ├── swarm-monitor.pid
│   ├── metrics-daemon.pid
│   └── hooks-daemon.pid
├── logs/
│   ├── daemon.log
│   ├── swarm-monitor.log
│   ├── metrics-daemon.log
│   └── hooks-daemon.log
└── metrics/
    ├── v3-progress.json             # Exported V3 metrics
    ├── swarm-activity.json          # Exported swarm status
    └── hooks-metrics.json           # Exported hooks metrics
```
