/**
 * SoloForge 统一日志模块
 *
 * 替代散落在 src 中的 console.log / console.error / console.warn。
 * 区分用户可见输出、调试日志、错误日志，支持 --json 模式和测试静默。
 */
// ── 日志级别 ──
import { ENV } from "./env.js";
// ── 全局状态 ──
let _silenced = false; // 测试模式：抑制所有输出
let _jsonMode = false; // --json 模式：stdout 只允许 JSON
let _debugEnabled = false; // 是否输出 debug 级别日志
/**
 * 初始化日志器状态。
 * 在 CLI 入口和测试 setup 中调用。
 */
export function initLogger(opts) {
    if (opts?.json !== undefined)
        _jsonMode = opts.json;
    if (opts?.silent !== undefined)
        _silenced = opts.silent;
    if (opts?.debug !== undefined)
        _debugEnabled = opts.debug;
}
/**
 * 从环境变量初始化（兼容 SOLOFORGE_DEBUG）。
 */
export function initLoggerFromEnv() {
    _debugEnabled = process.env[ENV.DEBUG] === "1";
    _silenced = process.env[ENV.SILENT] === "1";
}
/**
 * 重置日志器状态（测试 teardown 用）。
 */
export function resetLogger() {
    _silenced = false;
    _jsonMode = false;
    _debugEnabled = false;
}
// ── 内部输出函数 ──
function stderrWrite(...args) {
    if (_silenced)
        return;
    console.error(...args);
}
function stdoutWrite(...args) {
    if (_silenced)
        return;
    // eslint-disable-next-line no-console -- 日志模块自身使用 console.log 输出到 stdout
    console.log(...args);
}
// ── 用户可见输出（stdout） ──
/**
 * 用户可见信息。输出到 stdout。
 * CLI 的 --json 模式由调用方自行判断是否输出。
 */
export function userInfo(...args) {
    stdoutWrite(...args);
}
/**
 * 用户可见警告。输出到 stderr，--json 模式下也输出（不污染 stdout）。
 */
export function userWarn(...args) {
    stderrWrite(...args);
}
/**
 * 用户可见错误。输出到 stderr，--json 模式下也输出。
 */
export function userError(...args) {
    stderrWrite(...args);
}
/**
 * 用户可见输出（强制 stdout，仅用于 --json 的 JSON.stringify 结果）。
 * 调用方需确保只传 JSON 字符串。
 */
export function userJson(payload) {
    stdoutWrite(payload);
}
// ── 调试日志（stderr） ──
/**
 * 调试日志。仅 SOLOFORGE_DEBUG=1 时输出到 stderr。
 * 所有引擎内部 trace 应使用此函数。
 */
export function debug(module, ...args) {
    if (!_debugEnabled || _silenced)
        return;
    stderrWrite(`[soloForge] ${module}:`, ...args);
}
// ── 内部警告（stderr） ──
/**
 * 内部警告：非用户直接可见，但运维/诊断需要。
 * 始终输出到 stderr（除非静默模式）。
 */
export function internalWarn(module, ...args) {
    if (_silenced)
        return;
    stderrWrite(`[soloForge] ${module}:`, ...args);
}
/**
 * JSON 安全错误：在 --json 模式下，将错误写入 stderr 而非 stdout。
 */
export function jsonSafeError(...args) {
    stderrWrite(...args);
}
// ── 查询当前状态 ──
export function isJsonMode() { return _jsonMode; }
export function isSilenced() { return _silenced; }
export function isDebugEnabled() { return _debugEnabled; }
// ── 兼容旧 debugLog ──
/**
 * 向后兼容旧 debugLog()。新代码应使用 debug()。
 */
export function debugLog(...args) {
    if (!_debugEnabled || _silenced)
        return;
    stderrWrite("[soloForge]", ...args);
}
//# sourceMappingURL=logger.js.map