/**
 * 로깅 헬퍼 함수
 *
 * 공통 필드(agentId, slot, memoryId, traceId)를 포함한 구조화된 로깅을 위한 헬퍼 함수
 *
 * MCP 스펙 준수:
 * - notifications/message 형식 준수
 * - 공통 컨텍스트 필드 포함
 * - PII 마스킹 자동 적용
 *
 * 참조:
 * - MCP 스펙: https://spec.modelcontextprotocol.io/specification/server/#logging
 */
import { logger } from './logger.js';
/**
 * 로깅 헬퍼 클래스
 * 공통 필드를 포함한 구조화된 로깅을 제공
 */
export class LoggingHelper {
    context;
    constructor(context = {}) {
        this.context = context;
    }
    /**
     * 컨텍스트 업데이트
     */
    updateContext(context) {
        this.context = { ...this.context, ...context };
    }
    /**
     * 컨텍스트 가져오기
     */
    getContext() {
        return { ...this.context };
    }
    /**
     * 메타데이터에 컨텍스트 병합
     */
    mergeContext(meta) {
        return {
            ...this.context,
            ...meta
        };
    }
    /**
     * 디버그 레벨 로그
     */
    debug(message, meta) {
        logger.debug(message, this.mergeContext(meta));
    }
    /**
     * 정보 레벨 로그
     */
    info(message, meta) {
        logger.info(message, this.mergeContext(meta));
    }
    /**
     * 경고 레벨 로그
     */
    warn(message, meta) {
        logger.warn(message, this.mergeContext(meta));
    }
    /**
     * 에러 레벨 로그
     */
    error(message, meta) {
        logger.error(message, this.mergeContext(meta));
    }
}
/**
 * 공통 필드를 포함한 로깅 헬퍼 함수
 *
 * @example
 * ```typescript
 * import { logWithContext } from './logging-helpers.js';
 *
 * logWithContext.info('메모리 조회 완료', {
 *   memoryId: 'mem_123',
 *   operation: 'recall'
 * });
 * ```
 */
export const logWithContext = {
    /**
     * 디버그 레벨 로그 (컨텍스트 포함)
     */
    debug(message, meta, context) {
        const mergedMeta = context ? { ...context, ...meta } : meta;
        logger.debug(message, mergedMeta);
    },
    /**
     * 정보 레벨 로그 (컨텍스트 포함)
     */
    info(message, meta, context) {
        const mergedMeta = context ? { ...context, ...meta } : meta;
        logger.info(message, mergedMeta);
    },
    /**
     * 경고 레벨 로그 (컨텍스트 포함)
     */
    warn(message, meta, context) {
        const mergedMeta = context ? { ...context, ...meta } : meta;
        logger.warn(message, mergedMeta);
    },
    /**
     * 에러 레벨 로그 (컨텍스트 포함)
     */
    error(message, meta, context) {
        const mergedMeta = context ? { ...context, ...meta } : meta;
        logger.error(message, mergedMeta);
    }
};
/**
 * 컨텍스트를 포함한 로깅 헬퍼 함수 생성
 *
 * @param context 기본 컨텍스트
 * @returns LoggingHelper 인스턴스
 *
 * @example
 * ```typescript
 * import { createLogger } from './logging-helpers.js';
 *
 * const logger = createLogger({
 *   agentId: 'default',
 *   slot: 'A'
 * });
 *
 * // logger는 자동으로 PII 마스킹을 적용합니다
 * logger.info('메모리 조회 완료', { memoryId: 'mem_123' });
 * ```
 */
export function createLogger(context = {}) {
    return new LoggingHelper(context);
}
//# sourceMappingURL=logging-helpers.js.map