/**
 * large-file-warner.js — PreToolUse Hook
 * 狙擊手模式強化：>2MB 阻擋讀取，>500KB 警告。
 * 防止 Claude 把巨型檔案塞爆 context window。
 */
const fs = require('fs');
let d = '';
process.stdin.on('data', c => d += c);
process.stdin.on('end', () => {
  try {
    const input = JSON.parse(d);
    const filePath = input.tool_input?.file_path;
    if (!filePath) { process.stdout.write(d); return; }
    if (input.tool_input?.offset !== undefined || input.tool_input?.limit !== undefined) {
      process.stdout.write(d); return;
    }
    try {
      const stats = fs.statSync(filePath);
      const sizeKb = stats.size / 1024;
      if (stats.isFile()) {
        if (sizeKb > 2000) {
          process.stderr.write(`[large-file-warner] BLOCKED: ${filePath} (${sizeKb.toFixed(0)}KB) 超過 2MB 限制。請用 offset/limit 或 Grep 精準定位。\n`);
          process.exit(2);
        } else if (sizeKb > 500) {
          process.stderr.write(`[large-file-warner] WARNING: ${filePath} (${sizeKb.toFixed(0)}KB) 超過 500KB。建議加 offset/limit 參數。\n`);
        }
      }
    } catch (e) {}
  } catch (e) {}
  process.stdout.write(d);
});
