Files
wifi-densepose/docs/hooks/TROUBLESHOOTING.md
ruv d803bfe2b1 Squashed 'vendor/ruvector/' content from commit b64c2172
git-subtree-dir: vendor/ruvector
git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
2026-02-28 14:39:40 -05:00

734 lines
12 KiB
Markdown

# RuVector Hooks Troubleshooting Guide
Solutions for common issues with the RuVector hooks system.
## Table of Contents
1. [Quick Diagnostics](#quick-diagnostics)
2. [Installation Issues](#installation-issues)
3. [Hook Execution Issues](#hook-execution-issues)
4. [Intelligence Layer Issues](#intelligence-layer-issues)
5. [Performance Issues](#performance-issues)
6. [Platform-Specific Issues](#platform-specific-issues)
7. [Migration Issues](#migration-issues)
8. [Debug Mode](#debug-mode)
---
## Quick Diagnostics
### Run Full Diagnostic
```bash
# Check overall health
npx ruvector hooks stats --verbose
# Validate configuration
npx ruvector hooks validate-config
# Test hook execution
npx ruvector hooks pre-edit --file test.ts
npx ruvector hooks post-edit --file test.ts --success true
```
### Common Symptoms and Solutions
| Symptom | Likely Cause | Solution |
|---------|--------------|----------|
| Hooks not running | Missing settings.json | Run `hooks install` |
| "Command not found" | CLI not in PATH | Use `npx ruvector` |
| No agent assignment | Intelligence disabled | Set `RUVECTOR_INTELLIGENCE_ENABLED=true` |
| Slow hook execution | Large memory | Clean old trajectories |
| Windows errors | Shell mismatch | Check shell wrapper |
---
## Installation Issues
### Problem: `hooks init` fails
**Symptoms:**
```
Error: Failed to create .ruvector directory
Permission denied
```
**Solutions:**
1. Check directory permissions:
```bash
ls -la .
# Ensure you have write access
```
2. Create directory manually:
```bash
mkdir -p .ruvector/intelligence
npx ruvector hooks init
```
3. Use sudo (last resort):
```bash
sudo npx ruvector hooks init
sudo chown -R $USER:$USER .ruvector
```
---
### Problem: `hooks install` doesn't update settings
**Symptoms:**
- `.claude/settings.json` unchanged
- Old hooks still running
**Solutions:**
1. Use `--force` flag:
```bash
npx ruvector hooks install --force
```
2. Check backup and restore:
```bash
# View backup
cat .claude/settings.json.backup
# If needed, restore and try again
cp .claude/settings.json.backup .claude/settings.json
npx ruvector hooks install --force
```
3. Manually edit settings:
```bash
# Open and verify hook section
code .claude/settings.json
```
---
### Problem: "npx ruvector" command not found
**Symptoms:**
```
npm ERR! could not determine executable to run
```
**Solutions:**
1. Install globally:
```bash
npm install -g @ruvector/cli
ruvector hooks init
```
2. Check npm configuration:
```bash
npm config get prefix
# Ensure this is in your PATH
```
3. Use npx with package:
```bash
npx @ruvector/cli hooks init
```
---
## Hook Execution Issues
### Problem: Hooks not triggering
**Symptoms:**
- No output when editing files
- Session start message missing
- Intelligence not active
**Diagnosis:**
```bash
# Check settings.json has hooks
cat .claude/settings.json | jq '.hooks'
# Should show PreToolUse, PostToolUse, etc.
```
**Solutions:**
1. Reinstall hooks:
```bash
npx ruvector hooks install --force
```
2. Check matcher patterns:
```json
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash", // Case-sensitive!
"hooks": [...]
}]
}
}
```
3. Verify Claude Code is loading settings:
```bash
# Restart Claude Code to reload settings
```
---
### Problem: Hook timeout
**Symptoms:**
```
Warning: Hook timeout after 3000ms
```
**Solutions:**
1. Increase timeout in settings:
```json
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash",
"hooks": [{
"timeout": 5000, // Increase to 5 seconds
"command": "..."
}]
}]
}
}
```
2. Check for slow operations:
```bash
# Time hook execution
time npx ruvector hooks pre-edit --file test.ts
```
3. Reduce hook complexity:
- Disable neural training in pre-hooks
- Use async for heavy operations
- Cache repeated lookups
---
### Problem: Hook blocks tool execution
**Symptoms:**
- Edit operations not completing
- "continue: false" in output
**Diagnosis:**
```bash
# Test hook directly
npx ruvector hooks pre-edit --file problematic-file.ts
# Check response
# { "continue": false, "reason": "..." }
```
**Solutions:**
1. Check protected files:
```bash
# If file is protected, you'll see:
# { "continue": false, "reason": "Protected file" }
# Add to exceptions in config.toml
[hooks]
protected_exceptions = [".env.local"]
```
2. Disable blocking:
```json
{
"hooks": {
"PreToolUse": [{
"matcher": "Write",
"hooks": [{
"command": "...",
"continueOnError": true // Never block on error
}]
}]
}
}
```
---
## Intelligence Layer Issues
### Problem: No agent suggestions
**Symptoms:**
- `assignedAgent` always null
- No intelligence guidance
**Diagnosis:**
```bash
# Check intelligence status
npx ruvector hooks stats
# Expected output:
# Patterns: N
# Memories: N
# Status: Ready
```
**Solutions:**
1. Enable intelligence:
```bash
export RUVECTOR_INTELLIGENCE_ENABLED=true
```
2. Check data files exist:
```bash
ls -la .ruvector/intelligence/
# Should show patterns.json, memory.json, etc.
```
3. Initialize fresh data:
```bash
npx ruvector hooks init --force
```
---
### Problem: Poor agent suggestions
**Symptoms:**
- Wrong agent assigned to file types
- Low confidence scores
**Diagnosis:**
```bash
# Check patterns
npx ruvector hooks stats --verbose
# Look for:
# Top Patterns:
# 1. edit_rs_in_xxx → rust-developer (Q=0.82)
```
**Solutions:**
1. Reset learning data:
```bash
rm .ruvector/intelligence/patterns.json
rm .ruvector/intelligence/trajectories.json
# Will rebuild from scratch
```
2. Import team patterns:
```bash
npx ruvector hooks import --input team-patterns.json
```
3. Wait for learning:
- Patterns improve with use
- 50+ edits needed for good suggestions
---
### Problem: Memory search slow or failing
**Symptoms:**
- Memory search timeout
- "Error: Failed to load memory"
**Diagnosis:**
```bash
# Check memory size
ls -la .ruvector/intelligence/memory.json
# If >10MB, consider cleanup
```
**Solutions:**
1. Clean old memories:
```bash
# Backup first
cp .ruvector/intelligence/memory.json memory-backup.json
# Keep only recent
node -e "
const fs = require('fs');
const data = JSON.parse(fs.readFileSync('.ruvector/intelligence/memory.json'));
const recent = data.slice(-1000); // Keep last 1000
fs.writeFileSync('.ruvector/intelligence/memory.json', JSON.stringify(recent));
"
```
2. Rebuild HNSW index:
```bash
rm .ruvector/intelligence/memory.rvdb
# Will rebuild on next use
```
---
## Performance Issues
### Problem: High hook overhead
**Symptoms:**
- Slow file operations
- Noticeable delay on every edit
**Diagnosis:**
```bash
# Time individual hooks
time npx ruvector hooks pre-edit --file test.ts
time npx ruvector hooks post-edit --file test.ts --success true
# Target: <50ms each
```
**Solutions:**
1. Disable neural training:
```bash
# In config.toml
[intelligence]
neural_training = false
```
2. Reduce memory operations:
```toml
[hooks]
store_memory = false # Disable memory storage
```
3. Use async post-hooks:
```json
{
"hooks": {
"PostToolUse": [{
"matcher": "Write",
"hooks": [{
"command": "...",
"async": true // Don't wait for completion
}]
}]
}
}
```
---
### Problem: Large intelligence data files
**Symptoms:**
- `.ruvector/intelligence/` >100MB
- Slow startup
**Solutions:**
1. Set retention limits:
```toml
# In config.toml
[intelligence]
max_trajectories = 1000
max_memories = 10000
```
2. Clean old data:
```bash
# Export current patterns
npx ruvector hooks export --output patterns-backup.json --include patterns
# Reset
rm -rf .ruvector/intelligence/*
# Re-import patterns
npx ruvector hooks import --input patterns-backup.json
```
---
## Platform-Specific Issues
### Windows Issues
#### Problem: "/bin/bash not found"
**Symptoms:**
```
'/bin/bash' is not recognized as an internal or external command
```
**Solution:**
Check that hooks use Windows-compatible shell:
```json
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash",
"hooks": [{
"command": "cmd /c 'npx ruvector hooks pre-command'"
}]
}]
}
}
```
Or reinstall hooks (auto-detects platform):
```bash
npx ruvector hooks install --force
```
#### Problem: Path separator issues
**Symptoms:**
- File paths not recognized
- "File not found" errors
**Solution:**
Ensure paths use forward slashes or escaped backslashes:
```bash
# Good
npx ruvector hooks pre-edit --file "src/app.ts"
# Bad on Windows
npx ruvector hooks pre-edit --file "src\app.ts"
```
#### Problem: jq not found
**Symptoms:**
```
'jq' is not recognized as an internal or external command
```
**Solutions:**
1. Install jq:
```bash
# Using chocolatey
choco install jq
# Using scoop
scoop install jq
```
2. Or use jq-free hooks:
```bash
npx ruvector hooks install --template minimal
```
---
### macOS Issues
#### Problem: Permission denied
**Symptoms:**
```
Error: EACCES: permission denied
```
**Solutions:**
1. Fix npm permissions:
```bash
sudo chown -R $(whoami) ~/.npm
```
2. Use nvm:
```bash
# Install nvm and use it for npm
nvm install node
nvm use node
```
---
### Linux Issues
#### Problem: Node.js version too old
**Symptoms:**
```
SyntaxError: Unexpected token '.'
```
**Solution:**
Update Node.js:
```bash
# Using nvm
nvm install 18
nvm use 18
# Or using package manager
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
```
---
## Migration Issues
### Problem: Migration data loss
**Symptoms:**
- Fewer patterns after migration
- Missing memories
**Diagnosis:**
```bash
# Compare counts
echo "Before: $(jq '.length' old-patterns.json)"
echo "After: $(npx ruvector hooks stats --json | jq '.patterns')"
```
**Solutions:**
1. Use validation:
```bash
npx ruvector hooks migrate --from old-data --validate
```
2. Merge instead of replace:
```bash
npx ruvector hooks migrate --from old-data --merge
```
3. Restore from backup:
```bash
cp .ruvector/intelligence/backup-*/* .ruvector/intelligence/
```
---
### Problem: SQLite migration format error
**Symptoms:**
```
Error: Unknown embedding format in memory.db
```
**Solution:**
SQLite migration requires format detection. For MVP, use JSON export:
```bash
# Export from source as JSON first
npx claude-flow memory export --output memory.json
# Then import
npx ruvector hooks import --input memory.json
```
---
## Debug Mode
### Enable Debug Output
```bash
# Set environment variable
export CLAUDE_FLOW_DEBUG=true
export RUVECTOR_DEBUG=true
# Run with debug
npx ruvector hooks pre-edit --file test.ts --debug
```
### Debug Output Interpretation
```
DEBUG: Loading config from .ruvector/config.toml
DEBUG: Intelligence enabled: true
DEBUG: Q-table loaded: 89 patterns
DEBUG: Memory loaded: 543 vectors
DEBUG: Encoding state for test.ts
DEBUG: State key: edit_ts_in_project
DEBUG: Q-values: { "typescript-developer": 0.82, "coder": 0.45 }
DEBUG: Selected agent: typescript-developer (confidence: 0.82)
```
### View Hook Logs
```bash
# Today's logs
cat .ruvector/logs/hooks-$(date +%Y-%m-%d).log
# Tail logs
tail -f .ruvector/logs/hooks-*.log
```
### Test Hooks Manually
```bash
# Test pre-edit
echo '{"tool_input":{"file_path":"test.ts"}}' | npx ruvector hooks pre-edit --stdin
# Test post-edit
echo '{"tool_input":{"file_path":"test.ts"},"tool_result":{"success":true}}' | npx ruvector hooks post-edit --stdin
```
---
## Getting Help
### Gather Diagnostic Info
```bash
# Create diagnostic report
{
echo "=== RuVector Version ==="
npx ruvector --version
echo -e "\n=== Node Version ==="
node --version
echo -e "\n=== Platform ==="
uname -a
echo -e "\n=== Hooks Stats ==="
npx ruvector hooks stats --json
echo -e "\n=== Config ==="
cat .ruvector/config.toml
echo -e "\n=== Settings ==="
cat .claude/settings.json | jq '.hooks'
} > ruvector-diagnostic.txt
echo "Diagnostic saved to ruvector-diagnostic.txt"
```
### Report Issues
1. Create diagnostic report (above)
2. Open issue: https://github.com/ruvnet/ruvector/issues
3. Include:
- Diagnostic report
- Steps to reproduce
- Expected vs actual behavior
---
## See Also
- [User Guide](USER_GUIDE.md) - Getting started
- [CLI Reference](CLI_REFERENCE.md) - Command documentation
- [Architecture](ARCHITECTURE.md) - Technical details
- [Migration Guide](MIGRATION.md) - Upgrade from other systems