import { spawn } from 'node:child_process';
import { platform } from 'node:os';
import { existsSync } from 'node:fs';
import { createLogger } from './debug.js';
const log = createLogger('sleep');
let caffeinateStarted = false;
/**
 * takt実行中のmacOSスリープを防止する。
 * -d: ディスプレイスリープ防止（App Nap によるプロセス凍結を回避）
 * -i: アイドルスリープ防止
 * -s: システムスリープ防止（AC電源接続時のみ有効、蓋閉じでも動作継続）
 */
export function preventSleep() {
    if (caffeinateStarted) {
        return;
    }
    if (platform() !== 'darwin') {
        return;
    }
    const caffeinatePath = '/usr/bin/caffeinate';
    if (!existsSync(caffeinatePath)) {
        log.info('caffeinate not found, sleep prevention disabled');
        return;
    }
    const child = spawn(caffeinatePath, ['-dis', '-w', String(process.pid)], {
        stdio: 'ignore',
        detached: true,
    });
    child.unref();
    caffeinateStarted = true;
    log.debug('Started caffeinate for sleep prevention', { pid: child.pid });
}
/**
 * テスト用: caffeinateStarted フラグをリセットする
 */
export function resetPreventSleepState() {
    caffeinateStarted = false;
}
//# sourceMappingURL=sleep.js.map