const { execSync } = require('child_process') const path = require('path') const PROJECT_ROOT = path.resolve(__dirname, '../..') let input = '' process.stdin.on('data', chunk => { input += chunk }) process.stdin.on('end', () => { try { const data = JSON.parse(input) const filePath = data.tool_input?.file_path if (!filePath) process.exit(0) const ext = path.extname(filePath).toLowerCase() if (ext === '.php') { try { const result = execSync( `php vendor/bin/phpstan analyse "${filePath}" --level=5 --no-progress --error-format=raw`, { cwd: PROJECT_ROOT, encoding: 'utf8', timeout: 30000 } ) if (result.trim()) { process.stderr.write('[PHPStan]\n' + result.trim() + '\n') } } catch (e) { if (e.stdout?.trim()) { process.stderr.write('[PHPStan]\n' + e.stdout.trim() + '\n') } } } if (['.js', '.jsx'].includes(ext) && filePath.includes('src')) { try { execSync( `npx eslint "${filePath}" --max-warnings 0`, { cwd: PROJECT_ROOT, encoding: 'utf8', timeout: 30000 } ) } catch (e) { if (e.stdout?.trim()) { process.stderr.write('[ESLint]\n' + e.stdout.trim() + '\n') } } } } catch { // JSON parse error - ignore } })