/** * TIM SDK Logger Bridge — 副作用模块 * * 将腾讯云 IM SDK 的内部日志输出重定向到 ClawLink 的 logger 组件。 * SDK 内部原本直接调用 console.log/warn/error,此模块通过 * globalThis.__CLAWLINK_SDK_LOGGER 注入自定义 logger 适配器, * 使 SDK 日志走文件输出而非 stdout,避免污染 Gateway JSON 通道。 * * 必须在 @tencentcloud/chat 之前 import(副作用 import): * import './sdk-logger-init.js'; * import TencentCloudChat from '@tencentcloud/chat'; */ // node-polyfill.js removed — SDK now uses native Node.js APIs directly import { logger } from '../util/logger.js'; function formatArgs(...args: unknown[]): string { return args .map((a) => (typeof a === 'string' ? a : JSON.stringify(a))) .join(' '); } /** * SDK 内部 logger(变量 qe/Ye)期望的接口: * qe.log(...) — 普通日志 * qe.warn(...) — 警告 * qe.error(...) — 错误 * qe.info(...) — 信息 * qe.debug(...) — 调试 */ const sdkLoggerAdapter = { log(...args: unknown[]): void { logger.debug(`[tim-sdk] ${formatArgs(...args)}`); }, warn(...args: unknown[]): void { logger.warn(`[tim-sdk] ${formatArgs(...args)}`); }, error(...args: unknown[]): void { logger.error(`[tim-sdk] ${formatArgs(...args)}`); }, info(...args: unknown[]): void { logger.info(`[tim-sdk] ${formatArgs(...args)}`); }, debug(...args: unknown[]): void { logger.debug(`[tim-sdk] ${formatArgs(...args)}`); }, }; // 注入到 globalThis,SDK 加载时会检查此变量 (globalThis as Record).__CLAWLINK_SDK_LOGGER = sdkLoggerAdapter;