/** * 交互式环境检测工具 * * 自动检测是否应该使用交互式提示(inquirer) * 在非交互环境(AI、CI/CD)中返回 false */ /** * 检测当前是否为交互式环境 * * @returns true 如果在交互式终端环境,false 如果在非交互环境 * * 检测逻辑: * 0. OPTIMA_INTERACTIVE=1 - 显式启用(最高优先级) * 1. process.stdin.isTTY - 标准输入是否为终端 * 2. CI 环境变量 - 是否在 CI/CD 环境 * 3. 显式禁用标志 - 用户手动禁用交互模式 */ export declare function isInteractiveEnvironment(): boolean; /** * 确保参数已提供,否则抛出验证错误 * * 在非交互环境中使用此函数代替 inquirer.prompt() * * @param value - 参数值 * @param paramName - 参数名称(用于错误消息) * @param friendlyName - 友好名称(用于错误消息) * @returns 去除空格的参数值 * @throws ValidationError 如果值为空 * * @example * // 非交互模式下验证必需参数 * const title = requireParam(options.title, 'title', '商品名称'); * // 如果 options.title 为空,抛出:缺少必需参数: --title (商品名称) */ export declare function requireParam(value: string | undefined | null, paramName: string, friendlyName?: string): string; /** * 确保数值参数已提供且有效 * * @param value - 参数值 * @param paramName - 参数名称 * @param friendlyName - 友好名称 * @param min - 最小值(可选) * @param max - 最大值(可选) * @returns 解析后的数值 * @throws ValidationError 如果值无效 * * @example * // 验证价格参数(必须 > 0.01) * const price = requireNumberParam(options.price, 'price', '商品价格', 0.01); * * @example * // 验证库存参数(必须 >= 0) * const stock = requireNumberParam(options.stock, 'stock', '库存数量', 0); * * @example * // 验证重量参数(必须 0.1-1000 kg) * const weight = requireNumberParam(options.weight, 'weight', '重量', 0.1, 1000); */ export declare function requireNumberParam(value: string | undefined | null, paramName: string, friendlyName?: string, min?: number, max?: number): number; //# sourceMappingURL=interactive.d.ts.map