#!/usr/bin/env node // patch-x06: processLine() 中 return 应为 continue,小 part 跳过导致同行大 part 丢失 'use strict'; const fs = require('fs'); const path = require('path'); const SENTINEL = '// [PATCH-X06-CONTINUE]'; const target = path.join(__dirname, '..', '..', 'hooks', 'pre-compact-handoff.js'); if (!fs.existsSync(target)) { process.stdout.write('[SKIP] not found\n'); process.exit(0); } let raw = fs.readFileSync(target, 'utf8'); if (raw.includes(SENTINEL)) { process.stdout.write('[SKIP] already applied\n'); process.exit(0); } const useCRLF = raw.includes('\r\n'); let content = useCRLF ? raw.replace(/\r\n/g, '\n') : raw; const bak = target + '.bak.x06'; if (!fs.existsSync(bak)) fs.writeFileSync(bak, raw); const OLD = ' if (size < 500) return;'; const NEW = ` if (size < 500) continue; ${SENTINEL}`; if (!content.includes(OLD)) { process.stdout.write('[ERROR] old pattern not found\n'); process.exit(1); } content = content.replace(OLD, NEW); const final = useCRLF ? content.replace(/\n/g, '\r\n') : content; fs.writeFileSync(target, final, 'utf8'); const v = fs.readFileSync(target, 'utf8'); process.stdout.write(v.includes(SENTINEL) ? '[DONE] patch-x06 applied\n' : '[ERROR] verify failed\n'); process.exit(v.includes(SENTINEL) ? 0 : 1);