const fs = require('fs');
const path = require('path');

const buildDir = '/home/node/.openclaw/workspace/agents/bunbun/builds/agent-police-department-claude-code-agent-governan';
const filesToCheck = [
  'lib/detectors.js',
  'lib/policy.js',
  'lib/audit.js',
  'lib/hash.js',
  'background.js',
  'content_script.js',
  'popup.js'
];

let issues = [];

for (const file of filesToCheck) {
  const filePath = path.join(buildDir, file);
  if (!fs.existsSync(filePath)) continue;
  const content = fs.readFileSync(filePath, 'utf-8');
  const lines = content.split('\n');
  
  for (let i = 0; i < lines.length; i++) {
    const line = lines[i].trim();
    
    // Flag functions that are ONLY a return statement (skeleton)
    if (line.match(/^function\s+\w+\s*\([^)]*\)\s*\{\s*return\s+null\s*;\s*\}$/)) {
      issues.push(`${file}:${i+1}: skeleton function (return null)`);
    }
    if (line.match(/^function\s+\w+\s*\([^)]*\)\s*\{\s*return\s*;\s*\}$/)) {
      issues.push(`${file}:${i+1}: skeleton function (empty return)`);
    }
    if (line.match(/^\w+\s*=>\s*null\s*;?$/)) {
      issues.push(`${file}:${i+1}: skeleton arrow function (return null)`);
    }
    
    // Flag TODO/FIXME/PLACEHOLDER in actual code (not comments about placeholders)
    if (line.match(/TODO\s*[:\-]/i) || line.match(/FIXME\s*[:\-]/i)) {
      issues.push(`${file}:${i+1}: TODO/FIXME marker`);
    }
    if (line.match(/NOT\s+IMPLEMENTED/i) || line.match(/STUB\s*\(/i)) {
      issues.push(`${file}:${i+1}: not implemented/stub marker`);
    }
  }
}

if (issues.length > 0) {
  console.log('Anti-skeleton check: ISSUES FOUND');
  for (const issue of issues) {
    console.log('  - ' + issue);
  }
  process.exit(1);
} else {
  console.log('Anti-skeleton check: PASSED — no skeleton code detected');
  process.exit(0);
}
