import chalk from 'chalk';
// 全局状态，由主程序设置
let globalPrettyMode = false;
/**
 * 设置全局 pretty 模式
 */
export function setGlobalPrettyMode(pretty) {
    globalPrettyMode = pretty;
}
/**
 * 获取全局 pretty 模式状态
 */
export function isGlobalPrettyMode() {
    return globalPrettyMode;
}
/**
 * 判断是否应该使用 pretty 模式
 * 优先级：命令级别 pretty 选项 > 全局 pretty 选项
 */
export function isPrettyMode(options) {
    if (options?.pretty !== undefined) {
        return options.pretty;
    }
    return globalPrettyMode;
}
/**
 * 输出成功响应
 */
export function outputSuccess(data, options) {
    if (isPrettyMode(options)) {
        // Pretty 模式：不输出 JSON，由调用方自行处理输出
        return;
    }
    const response = {
        success: true,
        data,
    };
    console.log(JSON.stringify(response));
}
/**
 * 输出错误响应并退出。
 *
 * `extra` 字段会浅合并进 `error` 对象——给业务侧失败（如 generation task status=failed）
 * 透传 task_id / retryable / status 等元数据用，让 Agent 既能从顶层 success:false 立即识别
 * 失败、又能拿到结构化字段执行 SKILL.md 里基于 error_code 的分支处理。
 *
 * `code` / `message` 始终覆盖 extra 里的同名字段，防止调用方误传冲突值。
 */
export function outputError(code, message, options, extra) {
    if (isPrettyMode(options)) {
        // Pretty 模式：使用带颜色的输出
        console.error(chalk.red('✗'), message);
        process.exit(1);
    }
    const response = {
        success: false,
        error: {
            ...(extra ?? {}),
            code,
            message,
        },
    };
    console.log(JSON.stringify(response));
    process.exit(1);
}
/**
 * Pretty 模式下的日志函数
 */
export const prettyLog = {
    success(message) {
        console.log(chalk.green('✓'), message);
    },
    error(message) {
        console.error(chalk.red('✗'), message);
    },
    info(message) {
        console.log(chalk.blue('ℹ'), message);
    },
    warning(message) {
        console.log(chalk.yellow('⚠'), message);
    },
};
//# sourceMappingURL=output.js.map