clean-metadata-tools.jsโข2.76 kB
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
console.log('๐งน CLEANING METADATA TOOL REFERENCES');
console.log('====================================\n');
// Find all metadata.json files
const metadataFiles = execSync('find teams -name "metadata.json"', { encoding: 'utf8' })
.trim()
.split('\n')
.filter(Boolean);
console.log(`๐ Processing ${metadataFiles.length} metadata files...\n`);
let processedCount = 0;
let errorCount = 0;
metadataFiles.forEach((filePath) => {
try {
const fullPath = path.resolve(filePath);
if (!fs.existsSync(fullPath)) {
console.log(`โ ๏ธ File not found: ${filePath}`);
errorCount++;
return;
}
// Read and parse JSON
const content = fs.readFileSync(fullPath, 'utf8');
const metadata = JSON.parse(content);
let modified = false;
// Remove tools requirements
if (metadata.requirements && metadata.requirements.tools) {
delete metadata.requirements.tools;
modified = true;
}
if (metadata.requirements && metadata.requirements.optional_tools) {
delete metadata.requirements.optional_tools;
modified = true;
}
// Clean up hooks that reference tools
if (metadata.hooks) {
if (metadata.hooks.recommended) {
metadata.hooks.recommended = metadata.hooks.recommended.filter(hook =>
!hook.includes('PostToolUse:')
);
if (metadata.hooks.recommended.length === 0) {
delete metadata.hooks.recommended;
}
modified = true;
}
if (metadata.hooks.optional) {
metadata.hooks.optional = metadata.hooks.optional.filter(hook =>
!hook.includes('PostToolUse:')
);
if (metadata.hooks.optional.length === 0) {
delete metadata.hooks.optional;
}
modified = true;
}
// Remove empty hooks object
if (Object.keys(metadata.hooks).length === 0) {
delete metadata.hooks;
modified = true;
}
}
if (modified) {
// Write back the cleaned metadata
fs.writeFileSync(fullPath, JSON.stringify(metadata, null, 2) + '\n', 'utf8');
processedCount++;
console.log(`โ
${filePath} - Tool references removed`);
} else {
console.log(`โ
${filePath} - No tool references found`);
}
} catch (error) {
console.error(`โ Error processing ${filePath}:`, error.message);
errorCount++;
}
});
console.log(`\n๐ METADATA CLEANUP COMPLETE!`);
console.log(`โ
Processed: ${processedCount} files`);
console.log(`โ Errors: ${errorCount} files`);
console.log(`๐ Total: ${metadataFiles.length} files`);