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

const wikiDir = path.join(__dirname, '../../../../docs/aiagent/wiki');

function walkDir(dir, callback) {
    fs.readdirSync(dir).forEach(f => {
        const dirPath = path.join(dir, f);
        const isDirectory = fs.statSync(dirPath).isDirectory();
        if (isDirectory) {
            walkDir(dirPath, callback);
        } else {
            callback(dirPath);
        }
    });
}

if (!fs.existsSync(wikiDir)) {
    console.error(`Wiki directory does not exist: ${wikiDir}`);
    process.exit(1);
}

console.log('Scanning wiki directory for Markdown files to remove categories...');
walkDir(wikiDir, filePath => {
    if (!filePath.endsWith('.md')) return;
    
    const basename = path.basename(filePath);
    if (basename === 'index.md' || basename === 'log.md' || basename === 'AGENTS.md' || basename === 'CLAUDE.md') {
        return;
    }

    let content = fs.readFileSync(filePath, 'utf8');
    
    // YAMLフロントマターのマッチ
    const yamlRegex = /^---([\s\S]*?)---/;
    const match = content.match(yamlRegex);
    if (!match) return;

    let frontmatter = match[1];
    let originalFrontmatter = frontmatter;

    // categories: ... の行を削除（複数行や配列形式の改行にも対応できるよう、シンプルな正規表現）
    // 形式例：
    // categories: ["TODO"]
    // もしくは改行されてネストしている場合など。今回のサブエージェントの出力形式は categories: ["TODO"] のような一行だったはずです。
    // 一行の形式と、配列でインデントされている形式の両方を想定します。
    
    // categories: [...] の一行マッチ
    const categoriesLineRegex = /^categories:\s*\[.*\]\s*$/m;
    if (categoriesLineRegex.test(frontmatter)) {
        frontmatter = frontmatter.replace(categoriesLineRegex, '');
    } else {
        // ネスト形式 (categories:\n  - TODO) のチェックと削除
        const categoriesNestRegex = /^categories:\s*\n(\s*-\s*.*\n)+/m;
        if (categoriesNestRegex.test(frontmatter)) {
            frontmatter = frontmatter.replace(categoriesNestRegex, '');
        }
    }

    // 空行が連続した場合はクリーンアップ
    frontmatter = frontmatter.replace(/\n\s*\n/g, '\n');

    if (frontmatter !== originalFrontmatter) {
        content = content.replace(yamlRegex, `---${frontmatter}---`);
        fs.writeFileSync(filePath, content, 'utf8');
        console.log(`Removed categories from: ${path.relative(path.join(__dirname, '..'), filePath)}`);
    }
});

console.log('Category removal completed.');

