d81e403f01
COMPLETED TASKS: ✅ 06-01: Workout Swap System - Added swapped_from_id to workout_logs - Created workout_swaps table for history - POST /api/workouts/:id/swap endpoint - GET /api/workouts/available endpoint - Reversible swaps with audit trail ✅ 06-02: Muscle Group Recovery Tracking - Created muscle_group_recovery table - Implemented calculateRecoveryScore() function - GET /api/recovery/muscle-groups endpoint - GET /api/recovery/most-recovered endpoint - Auto-tracking on workout log completion ✅ 06-03: Smart Workout Recommendations - GET /api/recommendations/smart-workout endpoint - 7-day workout analysis algorithm - Recovery-based filtering (>30% threshold) - Top 3 recommendations with context - Context-aware reasoning messages DATABASE CHANGES: - Added 4 new tables: muscle_group_recovery, workout_swaps, custom_workouts, custom_workout_exercises - Extended workout_logs with: swapped_from_id, source_type, custom_workout_id, custom_workout_exercise_id - Created 7 new indexes for performance IMPLEMENTATION: - Recovery service with 4 core functions - 2 new route handlers (recovery, smartRecommendations) - Updated workouts router with swap endpoints - Integrated recovery tracking into POST /api/logs - Full error handling and logging TESTING: - Test file created: /backend/test/phase-06-tests.js - Ready for E2E and staging validation STATUS: Ready for frontend integration and production review Branch: feature/06-phase-06
272 lines
5.9 KiB
JSON
272 lines
5.9 KiB
JSON
{
|
|
"hooks": {
|
|
"PreToolUse": [
|
|
{
|
|
"matcher": "Bash",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node .claude/helpers/hook-handler.cjs pre-bash",
|
|
"timeout": 5000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"PostToolUse": [
|
|
{
|
|
"matcher": "Write|Edit|MultiEdit",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node .claude/helpers/hook-handler.cjs post-edit",
|
|
"timeout": 10000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"UserPromptSubmit": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node .claude/helpers/hook-handler.cjs route",
|
|
"timeout": 10000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"SessionStart": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node .claude/helpers/hook-handler.cjs session-restore",
|
|
"timeout": 15000
|
|
},
|
|
{
|
|
"type": "command",
|
|
"command": "node .claude/helpers/auto-memory-hook.mjs import",
|
|
"timeout": 8000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"SessionEnd": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node .claude/helpers/hook-handler.cjs session-end",
|
|
"timeout": 10000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"Stop": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node .claude/helpers/auto-memory-hook.mjs sync",
|
|
"timeout": 10000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"PreCompact": [
|
|
{
|
|
"matcher": "manual",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node .claude/helpers/hook-handler.cjs compact-manual"
|
|
},
|
|
{
|
|
"type": "command",
|
|
"command": "node .claude/helpers/hook-handler.cjs session-end",
|
|
"timeout": 5000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"matcher": "auto",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node .claude/helpers/hook-handler.cjs compact-auto"
|
|
},
|
|
{
|
|
"type": "command",
|
|
"command": "node .claude/helpers/hook-handler.cjs session-end",
|
|
"timeout": 6000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"SubagentStart": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node .claude/helpers/hook-handler.cjs status",
|
|
"timeout": 3000
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"statusLine": {
|
|
"type": "command",
|
|
"command": "node .claude/helpers/statusline.cjs"
|
|
},
|
|
"permissions": {
|
|
"allow": [
|
|
"Bash(npx @claude-flow*)",
|
|
"Bash(npx claude-flow*)",
|
|
"Bash(node .claude/*)",
|
|
"mcp__claude-flow__:*"
|
|
],
|
|
"deny": [
|
|
"Read(./.env)",
|
|
"Read(./.env.*)"
|
|
]
|
|
},
|
|
"attribution": {
|
|
"commit": "Co-Authored-By: claude-flow <ruv@ruv.net>",
|
|
"pr": "🤖 Generated with [claude-flow](https://github.com/ruvnet/claude-flow)"
|
|
},
|
|
"env": {
|
|
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1",
|
|
"CLAUDE_FLOW_V3_ENABLED": "true",
|
|
"CLAUDE_FLOW_HOOKS_ENABLED": "true"
|
|
},
|
|
"claudeFlow": {
|
|
"version": "3.0.0",
|
|
"enabled": true,
|
|
"modelPreferences": {
|
|
"default": "claude-opus-4-6",
|
|
"routing": "claude-haiku-4-5-20251001"
|
|
},
|
|
"agentTeams": {
|
|
"enabled": true,
|
|
"teammateMode": "auto",
|
|
"taskListEnabled": true,
|
|
"mailboxEnabled": true,
|
|
"coordination": {
|
|
"autoAssignOnIdle": true,
|
|
"trainPatternsOnComplete": true,
|
|
"notifyLeadOnComplete": true,
|
|
"sharedMemoryNamespace": "agent-teams"
|
|
},
|
|
"hooks": {
|
|
"teammateIdle": {
|
|
"enabled": true,
|
|
"autoAssign": true,
|
|
"checkTaskList": true
|
|
},
|
|
"taskCompleted": {
|
|
"enabled": true,
|
|
"trainPatterns": true,
|
|
"notifyLead": true
|
|
}
|
|
}
|
|
},
|
|
"swarm": {
|
|
"topology": "hierarchical-mesh",
|
|
"maxAgents": 15
|
|
},
|
|
"memory": {
|
|
"backend": "hybrid",
|
|
"enableHNSW": true,
|
|
"learningBridge": {
|
|
"enabled": true
|
|
},
|
|
"memoryGraph": {
|
|
"enabled": true
|
|
},
|
|
"agentScopes": {
|
|
"enabled": true
|
|
}
|
|
},
|
|
"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"
|
|
],
|
|
"retention": {
|
|
"shortTerm": "24h",
|
|
"longTerm": "30d"
|
|
}
|
|
},
|
|
"adr": {
|
|
"autoGenerate": true,
|
|
"directory": "/docs/adr",
|
|
"template": "madr"
|
|
},
|
|
"ddd": {
|
|
"trackDomains": true,
|
|
"validateBoundedContexts": true,
|
|
"directory": "/docs/ddd"
|
|
},
|
|
"security": {
|
|
"autoScan": true,
|
|
"scanOnEdit": true,
|
|
"cveCheck": true,
|
|
"threatModel": true
|
|
}
|
|
}
|
|
} |