{ "hooks": { "PreToolUse": [ { "matcher": "^(Write|Edit|MultiEdit)$", "hooks": [ { "type": "command", "command": "[ -n \"$TOOL_INPUT_file_path\" ] && npx @claude-flow/cli@latest hooks pre-edit --file \"$TOOL_INPUT_file_path\" 2>/dev/null || true", "timeout": 5000, "continueOnError": true } ] }, { "matcher": "^Bash$", "hooks": [ { "type": "command", "command": "[ -n \"$TOOL_INPUT_command\" ] && npx @claude-flow/cli@latest hooks pre-command --command \"$TOOL_INPUT_command\" 2>/dev/null || true", "timeout": 5000, "continueOnError": true } ] }, { "matcher": "^Task$", "hooks": [ { "type": "command", "command": "[ -n \"$TOOL_INPUT_prompt\" ] && npx @claude-flow/cli@latest hooks pre-task --task-id \"task-$(date +%s)\" --description \"$TOOL_INPUT_prompt\" 2>/dev/null || true", "timeout": 5000, "continueOnError": true } ] } ], "PostToolUse": [ { "matcher": "^(Write|Edit|MultiEdit)$", "hooks": [ { "type": "command", "command": "[ -n \"$TOOL_INPUT_file_path\" ] && npx @claude-flow/cli@latest hooks post-edit --file \"$TOOL_INPUT_file_path\" --success \"${TOOL_SUCCESS:-true}\" 2>/dev/null || true", "timeout": 5000, "continueOnError": true } ] }, { "matcher": "^Bash$", "hooks": [ { "type": "command", "command": "[ -n \"$TOOL_INPUT_command\" ] && npx @claude-flow/cli@latest hooks post-command --command \"$TOOL_INPUT_command\" --success \"${TOOL_SUCCESS:-true}\" 2>/dev/null || true", "timeout": 5000, "continueOnError": true } ] }, { "matcher": "^Task$", "hooks": [ { "type": "command", "command": "[ -n \"$TOOL_RESULT_agent_id\" ] && npx @claude-flow/cli@latest hooks post-task --task-id \"$TOOL_RESULT_agent_id\" --success \"${TOOL_SUCCESS:-true}\" 2>/dev/null || true", "timeout": 5000, "continueOnError": true } ] } ], "UserPromptSubmit": [ { "hooks": [ { "type": "command", "command": "[ -n \"$PROMPT\" ] && npx @claude-flow/cli@latest hooks route --task \"$PROMPT\" || true", "timeout": 5000, "continueOnError": true } ] } ], "SessionStart": [ { "hooks": [ { "type": "command", "command": "npx @claude-flow/cli@latest daemon start --quiet 2>/dev/null || true", "timeout": 5000, "continueOnError": true }, { "type": "command", "command": "[ -n \"$SESSION_ID\" ] && npx @claude-flow/cli@latest hooks session-restore --session-id \"$SESSION_ID\" 2>/dev/null || true", "timeout": 10000, "continueOnError": true } ] } ], "Stop": [ { "hooks": [ { "type": "command", "command": "echo '{\"ok\": true}'", "timeout": 1000 } ] } ], "Notification": [ { "hooks": [ { "type": "command", "command": "[ -n \"$NOTIFICATION_MESSAGE\" ] && npx @claude-flow/cli@latest memory store --namespace notifications --key \"notify-$(date +%s)\" --value \"$NOTIFICATION_MESSAGE\" 2>/dev/null || true", "timeout": 3000, "continueOnError": true } ] } ] }, "statusLine": { "type": "command", "command": "npx @claude-flow/cli@latest hooks statusline 2>/dev/null || node .claude/helpers/statusline.cjs 2>/dev/null || echo \"▊ Claude Flow V3\"", "refreshMs": 5000, "enabled": true }, "permissions": { "allow": [ "Bash(npx claude-flow:*)", "Bash(npx @claude-flow/cli:*)", "mcp__claude-flow__:*" ], "deny": [] }, "claudeFlow": { "version": "3.0.0", "project": "7sense", "description": "Bioacoustics platform - transforming bird calls into navigable geometric space", "enabled": true, "modelPreferences": { "default": "claude-opus-4-5-20251101", "routing": "claude-3-5-haiku-20241022" }, "swarm": { "topology": "hierarchical-mesh", "maxAgents": 12 }, "memory": { "backend": "hybrid", "enableHNSW": true, "namespaces": ["patterns", "motifs", "species", "corrections"] }, "neural": { "enabled": true }, "daemon": { "autoStart": true, "workers": [ "map", "audit", "optimize", "consolidate", "testgaps", "ultralearn", "deepdive", "document", "refactor", "benchmark" ], "schedules": { "audit": { "interval": "1h", "priority": "critical" }, "optimize": { "interval": "30m", "priority": "high" }, "consolidate": { "interval": "2h", "priority": "low" }, "document": { "interval": "1h", "priority": "normal", "triggers": [ "adr-update", "api-change" ] }, "deepdive": { "interval": "4h", "priority": "normal", "triggers": [ "complex-change" ] }, "ultralearn": { "interval": "1h", "priority": "normal" } } }, "learning": { "enabled": true, "autoTrain": true, "patterns": [ "coordination", "optimization", "prediction", "bioacoustic-clustering", "motif-detection" ], "retention": { "shortTerm": "24h", "longTerm": "30d" } }, "adr": { "autoGenerate": true, "directory": "/docs/adr", "template": "madr", "total": 9, "adrs": [ "ADR-001: System Architecture", "ADR-002: DDD Bounded Contexts", "ADR-003: Security Architecture", "ADR-004: Performance Optimization", "ADR-005: Self-Learning & Hooks", "ADR-006: Data Architecture", "ADR-007: ML Inference Pipeline", "ADR-008: API Design", "ADR-009: Visualization & UI" ] }, "ddd": { "trackDomains": true, "validateBoundedContexts": true, "directory": "/docs/ddd", "contexts": [ "audio-ingestion", "embedding", "vector-space", "learning", "analysis", "interpretation" ], "cratePrefix": "sevensense" }, "security": { "autoScan": true, "scanOnEdit": true, "cveCheck": true, "threatModel": true, "dataClassification": ["public", "research", "protected-species"] }, "pipeline": { "description": "Audio → Mel Spectrogram → Perch 2.0 → HNSW → GNN → RAB", "embedding": { "model": "perch-2.0", "dimensions": 1536, "sampleRate": 32000, "windowSize": "5s" }, "vectorSpace": { "index": "HNSW", "params": { "M": 32, "efConstruction": 200, "efSearch": 128 } }, "targets": { "hnswSpeedup": "150x", "queryLatency": "<100ms", "ingestion": "10k vectors/sec" } } } }