@agimon-ai/foundation-file-logger 0.26.13 → 0.26.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"installConsoleFileLogger.cjs","names":["FileTransport"],"sources":["../src/installConsoleFileLogger.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { createLogger as createUniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport type { LogContext, LogLevel, UniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { FileTransport } from './transports';\nimport type { FileTransportOptions } from './types';\n\ntype ConsoleMethod = 'log' | 'info' | 'warn' | 'error' | 'debug' | 'trace';\n\ntype ConsoleFileLoggerState = {\n isForwarding: boolean;\n logger?: UniversalLogger;\n originals: Partial<Record<ConsoleMethod, (...args: unknown[]) => void>>;\n};\n\nconst STATE_KEY = '__agimon_console_file_logger_state__';\n\nexport type InstallConsoleFileLoggerOptions = {\n readonly service: string;\n readonly level?: LogLevel;\n readonly context?: LogContext;\n readonly logDir?: string;\n readonly fileName?: string;\n readonly file?: Omit<FileTransportOptions, 'path'> & { readonly path?: string };\n};\n\nfunction getState(): ConsoleFileLoggerState {\n const globalStore = globalThis as typeof globalThis & {\n [STATE_KEY]?: ConsoleFileLoggerState;\n };\n\n if (!globalStore[STATE_KEY]) {\n globalStore[STATE_KEY] = {\n isForwarding: false,\n originals: {},\n };\n }\n\n return globalStore[STATE_KEY];\n}\n\nfunction resolveFilePath(options: InstallConsoleFileLoggerOptions): string {\n if (options.file?.path) {\n return options.file.path;\n }\n\n const directory = options.logDir || process.env.AGIMON_LOG_DIR || join(process.cwd(), '.logs');\n const fileName = options.fileName || `${options.service}.log`;\n\n return join(directory, fileName);\n}\n\nfunction normalizeConsoleArgs(method: ConsoleMethod, args: unknown[]): { message: string; rest: unknown[] } {\n if (args.length === 0) {\n return { message: `console.${method}`, rest: [] };\n }\n\n if (typeof args[0] === 'string') {\n return { message: args[0], rest: args.slice(1) };\n }\n\n if (args[0] instanceof Error) {\n return { message: args[0].message, rest: args };\n }\n\n return { message: `console.${method}`, rest: args };\n}\n\nfunction forwardToFileLogger(logger: UniversalLogger, method: ConsoleMethod, args: unknown[]): void {\n const { message, rest } = normalizeConsoleArgs(method, args);\n\n switch (method) {\n case 'log':\n case 'info':\n logger.info(message, ...rest);\n break;\n case 'warn':\n logger.warn(message, ...rest);\n break;\n case 'debug':\n logger.debug(message, ...rest);\n break;\n case 'trace':\n logger.trace(message, ...rest);\n break;\n case 'error': {\n const [maybeError, ...others] = rest;\n if (maybeError instanceof Error) {\n logger.error(message, maybeError, ...others);\n } else {\n logger.error(message, undefined, ...rest);\n }\n break;\n }\n }\n}\n\nexport function installConsoleFileLogger(options: InstallConsoleFileLoggerOptions): UniversalLogger {\n const state = getState();\n if (state.logger) {\n return state.logger;\n }\n\n const filePath = resolveFilePath(options);\n const fileTransport = new FileTransport({\n path: filePath,\n append: options.file?.append,\n ensureDir: options.file?.ensureDir,\n level: options.file?.level,\n formatter: options.file?.formatter,\n });\n\n const logger = createUniversalLogger({\n service: options.service,\n level: options.level || 'info',\n context: options.context,\n transports: [fileTransport],\n });\n\n const methods: ConsoleMethod[] = ['log', 'info', 'warn', 'error', 'debug', 'trace'];\n for (const method of methods) {\n const original = console[method].bind(console);\n state.originals[method] = original;\n\n (console as Console)[method] = (...args: unknown[]) => {\n original(...args);\n\n if (state.isForwarding) {\n return;\n }\n\n state.isForwarding = true;\n try {\n forwardToFileLogger(logger, method, args);\n } finally {\n state.isForwarding = false;\n }\n };\n }\n\n state.logger = logger;\n return logger;\n}\n"],"mappings":"2LAcA,MAAM,EAAY,uCAWlB,SAAS,GAAmC,CAC1C,IAAM,EAAc,WAWpB,OAPK,EAAY,KACf,EAAY,GAAa,CACvB,aAAc,GACd,UAAW,EAAE,CACd,EAGI,EAAY,GAGrB,SAAS,EAAgB,EAAkD,CAQzE,OAPI,EAAQ,MAAM,KACT,EAAQ,KAAK,MAMtB,EAAA,EAAA,MAHkB,EAAQ,QAAU,QAAQ,IAAI,iBAAA,EAAA,EAAA,MAAuB,QAAQ,KAAK,CAAE,QAAQ,CAC7E,EAAQ,UAAY,GAAG,EAAQ,QAAQ,MAExB,CAGlC,SAAS,EAAqB,EAAuB,EAAuD,CAa1G,OAZI,EAAK,SAAW,EACX,CAAE,QAAS,WAAW,IAAU,KAAM,EAAE,CAAE,CAG/C,OAAO,EAAK,IAAO,SACd,CAAE,QAAS,EAAK,GAAI,KAAM,EAAK,MAAM,EAAE,CAAE,CAG9C,EAAK,aAAc,MACd,CAAE,QAAS,EAAK,GAAG,QAAS,KAAM,EAAM,CAG1C,CAAE,QAAS,WAAW,IAAU,KAAM,EAAM,CAGrD,SAAS,EAAoB,EAAyB,EAAuB,EAAuB,CAClG,GAAM,CAAE,UAAS,QAAS,EAAqB,EAAQ,EAAK,CAE5D,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QAAS,CACZ,GAAM,CAAC,EAAY,GAAG,GAAU,EAC5B,aAAsB,MACxB,EAAO,MAAM,EAAS,EAAY,GAAG,EAAO,CAE5C,EAAO,MAAM,EAAS,IAAA,GAAW,GAAG,EAAK,CAE3C,QAKN,SAAgB,EAAyB,EAA2D,CAClG,IAAM,EAAQ,GAAU,CACxB,GAAI,EAAM,OACR,OAAO,EAAM,OAIf,IAAM,EAAgB,IAAIA,EAAAA,cAAc,CACtC,KAFe,EAAgB,EAEjB,CACd,OAAQ,EAAQ,MAAM,OACtB,UAAW,EAAQ,MAAM,UACzB,MAAO,EAAQ,MAAM,MACrB,UAAW,EAAQ,MAAM,UAC1B,CAAC,CAEI,GAAA,EAAA,EAAA,cAA+B,CACnC,QAAS,EAAQ,QACjB,MAAO,EAAQ,OAAS,OACxB,QAAS,EAAQ,QACjB,WAAY,CAAC,EAAc,CAC5B,CAAC,CAGF,IAAK,IAAM,IAAU,CADa,MAAO,OAAQ,OAAQ,QAAS,QAAS,QAC/C,CAAE,CAC5B,IAAM,EAAW,QAAQ,GAAQ,KAAK,QAAQ,CAC9C,EAAM,UAAU,GAAU,EAEzB,QAAoB,IAAW,GAAG,IAAoB,CACrD,KAAS,GAAG,EAAK,CAEb,GAAM,aAIV,GAAM,aAAe,GACrB,GAAI,CACF,EAAoB,EAAQ,EAAQ,EAAK,QACjC,CACR,EAAM,aAAe,MAM3B,MADA,GAAM,OAAS,EACR"}
1
+ {"version":3,"file":"installConsoleFileLogger.cjs","names":["FileTransport"],"sources":["../src/installConsoleFileLogger.ts"],"sourcesContent":["import { join } from 'node:path';\nimport type { LogContext, LogLevel, UniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { createLogger as createUniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { FileTransport } from './transports';\nimport type { FileTransportOptions } from './types';\n\ntype ConsoleMethod = 'log' | 'info' | 'warn' | 'error' | 'debug' | 'trace';\n\ntype ConsoleFileLoggerState = {\n isForwarding: boolean;\n logger?: UniversalLogger;\n originals: Partial<Record<ConsoleMethod, (...args: unknown[]) => void>>;\n};\n\nconst STATE_KEY = '__agimon_console_file_logger_state__';\n\nexport type InstallConsoleFileLoggerOptions = {\n readonly service: string;\n readonly level?: LogLevel;\n readonly context?: LogContext;\n readonly logDir?: string;\n readonly fileName?: string;\n readonly file?: Omit<FileTransportOptions, 'path'> & { readonly path?: string };\n};\n\nfunction getState(): ConsoleFileLoggerState {\n const globalStore = globalThis as typeof globalThis & {\n [STATE_KEY]?: ConsoleFileLoggerState;\n };\n\n if (!globalStore[STATE_KEY]) {\n globalStore[STATE_KEY] = {\n isForwarding: false,\n originals: {},\n };\n }\n\n return globalStore[STATE_KEY];\n}\n\nfunction resolveFilePath(options: InstallConsoleFileLoggerOptions): string {\n if (options.file?.path) {\n return options.file.path;\n }\n\n const directory = options.logDir || process.env.AGIMON_LOG_DIR || join(process.cwd(), '.logs');\n const fileName = options.fileName || `${options.service}.log`;\n\n return join(directory, fileName);\n}\n\nfunction normalizeConsoleArgs(method: ConsoleMethod, args: unknown[]): { message: string; rest: unknown[] } {\n if (args.length === 0) {\n return { message: `console.${method}`, rest: [] };\n }\n\n if (typeof args[0] === 'string') {\n return { message: args[0], rest: args.slice(1) };\n }\n\n if (args[0] instanceof Error) {\n return { message: args[0].message, rest: args };\n }\n\n return { message: `console.${method}`, rest: args };\n}\n\nfunction forwardToFileLogger(logger: UniversalLogger, method: ConsoleMethod, args: unknown[]): void {\n const { message, rest } = normalizeConsoleArgs(method, args);\n\n switch (method) {\n case 'log':\n case 'info':\n logger.info(message, ...rest);\n break;\n case 'warn':\n logger.warn(message, ...rest);\n break;\n case 'debug':\n logger.debug(message, ...rest);\n break;\n case 'trace':\n logger.trace(message, ...rest);\n break;\n case 'error': {\n const [maybeError, ...others] = rest;\n if (maybeError instanceof Error) {\n logger.error(message, maybeError, ...others);\n } else {\n logger.error(message, undefined, ...rest);\n }\n break;\n }\n }\n}\n\nexport function installConsoleFileLogger(options: InstallConsoleFileLoggerOptions): UniversalLogger {\n const state = getState();\n if (state.logger) {\n return state.logger;\n }\n\n const filePath = resolveFilePath(options);\n const fileTransport = new FileTransport({\n path: filePath,\n append: options.file?.append,\n ensureDir: options.file?.ensureDir,\n level: options.file?.level,\n formatter: options.file?.formatter,\n });\n\n const logger = createUniversalLogger({\n service: options.service,\n level: options.level || 'info',\n context: options.context,\n transports: [fileTransport],\n });\n\n const methods: ConsoleMethod[] = ['log', 'info', 'warn', 'error', 'debug', 'trace'];\n for (const method of methods) {\n const original = console[method].bind(console);\n state.originals[method] = original;\n\n (console as Console)[method] = (...args: unknown[]) => {\n original(...args);\n\n if (state.isForwarding) {\n return;\n }\n\n state.isForwarding = true;\n try {\n forwardToFileLogger(logger, method, args);\n } finally {\n state.isForwarding = false;\n }\n };\n }\n\n state.logger = logger;\n return logger;\n}\n"],"mappings":"2LAcA,MAAM,EAAY,uCAWlB,SAAS,GAAmC,CAC1C,IAAM,EAAc,WAWpB,OAPK,EAAY,KACf,EAAY,GAAa,CACvB,aAAc,GACd,UAAW,EAAE,CACd,EAGI,EAAY,GAGrB,SAAS,EAAgB,EAAkD,CAQzE,OAPI,EAAQ,MAAM,KACT,EAAQ,KAAK,MAMtB,EAAA,EAAA,MAHkB,EAAQ,QAAU,QAAQ,IAAI,iBAAA,EAAA,EAAA,MAAuB,QAAQ,KAAK,CAAE,QAAQ,CAC7E,EAAQ,UAAY,GAAG,EAAQ,QAAQ,MAExB,CAGlC,SAAS,EAAqB,EAAuB,EAAuD,CAa1G,OAZI,EAAK,SAAW,EACX,CAAE,QAAS,WAAW,IAAU,KAAM,EAAE,CAAE,CAG/C,OAAO,EAAK,IAAO,SACd,CAAE,QAAS,EAAK,GAAI,KAAM,EAAK,MAAM,EAAE,CAAE,CAG9C,EAAK,aAAc,MACd,CAAE,QAAS,EAAK,GAAG,QAAS,KAAM,EAAM,CAG1C,CAAE,QAAS,WAAW,IAAU,KAAM,EAAM,CAGrD,SAAS,EAAoB,EAAyB,EAAuB,EAAuB,CAClG,GAAM,CAAE,UAAS,QAAS,EAAqB,EAAQ,EAAK,CAE5D,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QAAS,CACZ,GAAM,CAAC,EAAY,GAAG,GAAU,EAC5B,aAAsB,MACxB,EAAO,MAAM,EAAS,EAAY,GAAG,EAAO,CAE5C,EAAO,MAAM,EAAS,IAAA,GAAW,GAAG,EAAK,CAE3C,QAKN,SAAgB,EAAyB,EAA2D,CAClG,IAAM,EAAQ,GAAU,CACxB,GAAI,EAAM,OACR,OAAO,EAAM,OAIf,IAAM,EAAgB,IAAIA,EAAAA,cAAc,CACtC,KAFe,EAAgB,EAEjB,CACd,OAAQ,EAAQ,MAAM,OACtB,UAAW,EAAQ,MAAM,UACzB,MAAO,EAAQ,MAAM,MACrB,UAAW,EAAQ,MAAM,UAC1B,CAAC,CAEI,GAAA,EAAA,EAAA,cAA+B,CACnC,QAAS,EAAQ,QACjB,MAAO,EAAQ,OAAS,OACxB,QAAS,EAAQ,QACjB,WAAY,CAAC,EAAc,CAC5B,CAAC,CAGF,IAAK,IAAM,IAAU,CADa,MAAO,OAAQ,OAAQ,QAAS,QAAS,QAC/C,CAAE,CAC5B,IAAM,EAAW,QAAQ,GAAQ,KAAK,QAAQ,CAC9C,EAAM,UAAU,GAAU,EAEzB,QAAoB,IAAW,GAAG,IAAoB,CACrD,KAAS,GAAG,EAAK,CAEb,GAAM,aAIV,GAAM,aAAe,GACrB,GAAI,CACF,EAAoB,EAAQ,EAAQ,EAAK,QACjC,CACR,EAAM,aAAe,MAM3B,MADA,GAAM,OAAS,EACR"}
@@ -1 +1 @@
1
- {"version":3,"file":"installConsoleFileLogger.mjs","names":["createUniversalLogger"],"sources":["../src/installConsoleFileLogger.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { createLogger as createUniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport type { LogContext, LogLevel, UniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { FileTransport } from './transports';\nimport type { FileTransportOptions } from './types';\n\ntype ConsoleMethod = 'log' | 'info' | 'warn' | 'error' | 'debug' | 'trace';\n\ntype ConsoleFileLoggerState = {\n isForwarding: boolean;\n logger?: UniversalLogger;\n originals: Partial<Record<ConsoleMethod, (...args: unknown[]) => void>>;\n};\n\nconst STATE_KEY = '__agimon_console_file_logger_state__';\n\nexport type InstallConsoleFileLoggerOptions = {\n readonly service: string;\n readonly level?: LogLevel;\n readonly context?: LogContext;\n readonly logDir?: string;\n readonly fileName?: string;\n readonly file?: Omit<FileTransportOptions, 'path'> & { readonly path?: string };\n};\n\nfunction getState(): ConsoleFileLoggerState {\n const globalStore = globalThis as typeof globalThis & {\n [STATE_KEY]?: ConsoleFileLoggerState;\n };\n\n if (!globalStore[STATE_KEY]) {\n globalStore[STATE_KEY] = {\n isForwarding: false,\n originals: {},\n };\n }\n\n return globalStore[STATE_KEY];\n}\n\nfunction resolveFilePath(options: InstallConsoleFileLoggerOptions): string {\n if (options.file?.path) {\n return options.file.path;\n }\n\n const directory = options.logDir || process.env.AGIMON_LOG_DIR || join(process.cwd(), '.logs');\n const fileName = options.fileName || `${options.service}.log`;\n\n return join(directory, fileName);\n}\n\nfunction normalizeConsoleArgs(method: ConsoleMethod, args: unknown[]): { message: string; rest: unknown[] } {\n if (args.length === 0) {\n return { message: `console.${method}`, rest: [] };\n }\n\n if (typeof args[0] === 'string') {\n return { message: args[0], rest: args.slice(1) };\n }\n\n if (args[0] instanceof Error) {\n return { message: args[0].message, rest: args };\n }\n\n return { message: `console.${method}`, rest: args };\n}\n\nfunction forwardToFileLogger(logger: UniversalLogger, method: ConsoleMethod, args: unknown[]): void {\n const { message, rest } = normalizeConsoleArgs(method, args);\n\n switch (method) {\n case 'log':\n case 'info':\n logger.info(message, ...rest);\n break;\n case 'warn':\n logger.warn(message, ...rest);\n break;\n case 'debug':\n logger.debug(message, ...rest);\n break;\n case 'trace':\n logger.trace(message, ...rest);\n break;\n case 'error': {\n const [maybeError, ...others] = rest;\n if (maybeError instanceof Error) {\n logger.error(message, maybeError, ...others);\n } else {\n logger.error(message, undefined, ...rest);\n }\n break;\n }\n }\n}\n\nexport function installConsoleFileLogger(options: InstallConsoleFileLoggerOptions): UniversalLogger {\n const state = getState();\n if (state.logger) {\n return state.logger;\n }\n\n const filePath = resolveFilePath(options);\n const fileTransport = new FileTransport({\n path: filePath,\n append: options.file?.append,\n ensureDir: options.file?.ensureDir,\n level: options.file?.level,\n formatter: options.file?.formatter,\n });\n\n const logger = createUniversalLogger({\n service: options.service,\n level: options.level || 'info',\n context: options.context,\n transports: [fileTransport],\n });\n\n const methods: ConsoleMethod[] = ['log', 'info', 'warn', 'error', 'debug', 'trace'];\n for (const method of methods) {\n const original = console[method].bind(console);\n state.originals[method] = original;\n\n (console as Console)[method] = (...args: unknown[]) => {\n original(...args);\n\n if (state.isForwarding) {\n return;\n }\n\n state.isForwarding = true;\n try {\n forwardToFileLogger(logger, method, args);\n } finally {\n state.isForwarding = false;\n }\n };\n }\n\n state.logger = logger;\n return logger;\n}\n"],"mappings":"6JAcA,MAAM,EAAY,uCAWlB,SAAS,GAAmC,CAC1C,IAAM,EAAc,WAWpB,OAPK,EAAY,KACf,EAAY,GAAa,CACvB,aAAc,GACd,UAAW,EAAE,CACd,EAGI,EAAY,GAGrB,SAAS,EAAgB,EAAkD,CAQzE,OAPI,EAAQ,MAAM,KACT,EAAQ,KAAK,KAMf,EAHW,EAAQ,QAAU,QAAQ,IAAI,gBAAkB,EAAK,QAAQ,KAAK,CAAE,QAAQ,CAC7E,EAAQ,UAAY,GAAG,EAAQ,QAAQ,MAExB,CAGlC,SAAS,EAAqB,EAAuB,EAAuD,CAa1G,OAZI,EAAK,SAAW,EACX,CAAE,QAAS,WAAW,IAAU,KAAM,EAAE,CAAE,CAG/C,OAAO,EAAK,IAAO,SACd,CAAE,QAAS,EAAK,GAAI,KAAM,EAAK,MAAM,EAAE,CAAE,CAG9C,EAAK,aAAc,MACd,CAAE,QAAS,EAAK,GAAG,QAAS,KAAM,EAAM,CAG1C,CAAE,QAAS,WAAW,IAAU,KAAM,EAAM,CAGrD,SAAS,EAAoB,EAAyB,EAAuB,EAAuB,CAClG,GAAM,CAAE,UAAS,QAAS,EAAqB,EAAQ,EAAK,CAE5D,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QAAS,CACZ,GAAM,CAAC,EAAY,GAAG,GAAU,EAC5B,aAAsB,MACxB,EAAO,MAAM,EAAS,EAAY,GAAG,EAAO,CAE5C,EAAO,MAAM,EAAS,IAAA,GAAW,GAAG,EAAK,CAE3C,QAKN,SAAgB,EAAyB,EAA2D,CAClG,IAAM,EAAQ,GAAU,CACxB,GAAI,EAAM,OACR,OAAO,EAAM,OAIf,IAAM,EAAgB,IAAI,EAAc,CACtC,KAFe,EAAgB,EAEjB,CACd,OAAQ,EAAQ,MAAM,OACtB,UAAW,EAAQ,MAAM,UACzB,MAAO,EAAQ,MAAM,MACrB,UAAW,EAAQ,MAAM,UAC1B,CAAC,CAEI,EAASA,EAAsB,CACnC,QAAS,EAAQ,QACjB,MAAO,EAAQ,OAAS,OACxB,QAAS,EAAQ,QACjB,WAAY,CAAC,EAAc,CAC5B,CAAC,CAGF,IAAK,IAAM,IAAU,CADa,MAAO,OAAQ,OAAQ,QAAS,QAAS,QAC/C,CAAE,CAC5B,IAAM,EAAW,QAAQ,GAAQ,KAAK,QAAQ,CAC9C,EAAM,UAAU,GAAU,EAEzB,QAAoB,IAAW,GAAG,IAAoB,CACrD,KAAS,GAAG,EAAK,CAEb,GAAM,aAIV,GAAM,aAAe,GACrB,GAAI,CACF,EAAoB,EAAQ,EAAQ,EAAK,QACjC,CACR,EAAM,aAAe,MAM3B,MADA,GAAM,OAAS,EACR"}
1
+ {"version":3,"file":"installConsoleFileLogger.mjs","names":["createUniversalLogger"],"sources":["../src/installConsoleFileLogger.ts"],"sourcesContent":["import { join } from 'node:path';\nimport type { LogContext, LogLevel, UniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { createLogger as createUniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { FileTransport } from './transports';\nimport type { FileTransportOptions } from './types';\n\ntype ConsoleMethod = 'log' | 'info' | 'warn' | 'error' | 'debug' | 'trace';\n\ntype ConsoleFileLoggerState = {\n isForwarding: boolean;\n logger?: UniversalLogger;\n originals: Partial<Record<ConsoleMethod, (...args: unknown[]) => void>>;\n};\n\nconst STATE_KEY = '__agimon_console_file_logger_state__';\n\nexport type InstallConsoleFileLoggerOptions = {\n readonly service: string;\n readonly level?: LogLevel;\n readonly context?: LogContext;\n readonly logDir?: string;\n readonly fileName?: string;\n readonly file?: Omit<FileTransportOptions, 'path'> & { readonly path?: string };\n};\n\nfunction getState(): ConsoleFileLoggerState {\n const globalStore = globalThis as typeof globalThis & {\n [STATE_KEY]?: ConsoleFileLoggerState;\n };\n\n if (!globalStore[STATE_KEY]) {\n globalStore[STATE_KEY] = {\n isForwarding: false,\n originals: {},\n };\n }\n\n return globalStore[STATE_KEY];\n}\n\nfunction resolveFilePath(options: InstallConsoleFileLoggerOptions): string {\n if (options.file?.path) {\n return options.file.path;\n }\n\n const directory = options.logDir || process.env.AGIMON_LOG_DIR || join(process.cwd(), '.logs');\n const fileName = options.fileName || `${options.service}.log`;\n\n return join(directory, fileName);\n}\n\nfunction normalizeConsoleArgs(method: ConsoleMethod, args: unknown[]): { message: string; rest: unknown[] } {\n if (args.length === 0) {\n return { message: `console.${method}`, rest: [] };\n }\n\n if (typeof args[0] === 'string') {\n return { message: args[0], rest: args.slice(1) };\n }\n\n if (args[0] instanceof Error) {\n return { message: args[0].message, rest: args };\n }\n\n return { message: `console.${method}`, rest: args };\n}\n\nfunction forwardToFileLogger(logger: UniversalLogger, method: ConsoleMethod, args: unknown[]): void {\n const { message, rest } = normalizeConsoleArgs(method, args);\n\n switch (method) {\n case 'log':\n case 'info':\n logger.info(message, ...rest);\n break;\n case 'warn':\n logger.warn(message, ...rest);\n break;\n case 'debug':\n logger.debug(message, ...rest);\n break;\n case 'trace':\n logger.trace(message, ...rest);\n break;\n case 'error': {\n const [maybeError, ...others] = rest;\n if (maybeError instanceof Error) {\n logger.error(message, maybeError, ...others);\n } else {\n logger.error(message, undefined, ...rest);\n }\n break;\n }\n }\n}\n\nexport function installConsoleFileLogger(options: InstallConsoleFileLoggerOptions): UniversalLogger {\n const state = getState();\n if (state.logger) {\n return state.logger;\n }\n\n const filePath = resolveFilePath(options);\n const fileTransport = new FileTransport({\n path: filePath,\n append: options.file?.append,\n ensureDir: options.file?.ensureDir,\n level: options.file?.level,\n formatter: options.file?.formatter,\n });\n\n const logger = createUniversalLogger({\n service: options.service,\n level: options.level || 'info',\n context: options.context,\n transports: [fileTransport],\n });\n\n const methods: ConsoleMethod[] = ['log', 'info', 'warn', 'error', 'debug', 'trace'];\n for (const method of methods) {\n const original = console[method].bind(console);\n state.originals[method] = original;\n\n (console as Console)[method] = (...args: unknown[]) => {\n original(...args);\n\n if (state.isForwarding) {\n return;\n }\n\n state.isForwarding = true;\n try {\n forwardToFileLogger(logger, method, args);\n } finally {\n state.isForwarding = false;\n }\n };\n }\n\n state.logger = logger;\n return logger;\n}\n"],"mappings":"6JAcA,MAAM,EAAY,uCAWlB,SAAS,GAAmC,CAC1C,IAAM,EAAc,WAWpB,OAPK,EAAY,KACf,EAAY,GAAa,CACvB,aAAc,GACd,UAAW,EAAE,CACd,EAGI,EAAY,GAGrB,SAAS,EAAgB,EAAkD,CAQzE,OAPI,EAAQ,MAAM,KACT,EAAQ,KAAK,KAMf,EAHW,EAAQ,QAAU,QAAQ,IAAI,gBAAkB,EAAK,QAAQ,KAAK,CAAE,QAAQ,CAC7E,EAAQ,UAAY,GAAG,EAAQ,QAAQ,MAExB,CAGlC,SAAS,EAAqB,EAAuB,EAAuD,CAa1G,OAZI,EAAK,SAAW,EACX,CAAE,QAAS,WAAW,IAAU,KAAM,EAAE,CAAE,CAG/C,OAAO,EAAK,IAAO,SACd,CAAE,QAAS,EAAK,GAAI,KAAM,EAAK,MAAM,EAAE,CAAE,CAG9C,EAAK,aAAc,MACd,CAAE,QAAS,EAAK,GAAG,QAAS,KAAM,EAAM,CAG1C,CAAE,QAAS,WAAW,IAAU,KAAM,EAAM,CAGrD,SAAS,EAAoB,EAAyB,EAAuB,EAAuB,CAClG,GAAM,CAAE,UAAS,QAAS,EAAqB,EAAQ,EAAK,CAE5D,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,OACH,EAAO,KAAK,EAAS,GAAG,EAAK,CAC7B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QACH,EAAO,MAAM,EAAS,GAAG,EAAK,CAC9B,MACF,IAAK,QAAS,CACZ,GAAM,CAAC,EAAY,GAAG,GAAU,EAC5B,aAAsB,MACxB,EAAO,MAAM,EAAS,EAAY,GAAG,EAAO,CAE5C,EAAO,MAAM,EAAS,IAAA,GAAW,GAAG,EAAK,CAE3C,QAKN,SAAgB,EAAyB,EAA2D,CAClG,IAAM,EAAQ,GAAU,CACxB,GAAI,EAAM,OACR,OAAO,EAAM,OAIf,IAAM,EAAgB,IAAI,EAAc,CACtC,KAFe,EAAgB,EAEjB,CACd,OAAQ,EAAQ,MAAM,OACtB,UAAW,EAAQ,MAAM,UACzB,MAAO,EAAQ,MAAM,MACrB,UAAW,EAAQ,MAAM,UAC1B,CAAC,CAEI,EAASA,EAAsB,CACnC,QAAS,EAAQ,QACjB,MAAO,EAAQ,OAAS,OACxB,QAAS,EAAQ,QACjB,WAAY,CAAC,EAAc,CAC5B,CAAC,CAGF,IAAK,IAAM,IAAU,CADa,MAAO,OAAQ,OAAQ,QAAS,QAAS,QAC/C,CAAE,CAC5B,IAAM,EAAW,QAAQ,GAAQ,KAAK,QAAQ,CAC9C,EAAM,UAAU,GAAU,EAEzB,QAAoB,IAAW,GAAG,IAAoB,CACrD,KAAS,GAAG,EAAK,CAEb,GAAM,aAIV,GAAM,aAAe,GACrB,GAAI,CACF,EAAoB,EAAQ,EAAQ,EAAK,QACjC,CACR,EAAM,aAAe,MAM3B,MADA,GAAM,OAAS,EACR"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.cjs","names":["ConsoleTransport","FileTransport"],"sources":["../src/logger.ts"],"sourcesContent":["import { ConsoleTransport, createLogger as createUniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport type { UniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { FileTransport } from './transports';\nimport type { FileLoggerOptions } from './types';\n\nexport function createFileLogger(options: FileLoggerOptions): UniversalLogger {\n const transports = [new ConsoleTransport(), new FileTransport(options.file), ...(options.additionalTransports ?? [])];\n\n return createUniversalLogger({\n service: options.service,\n level: options.level,\n environment: options.environment,\n context: options.context,\n transports,\n });\n}\n"],"mappings":"oKAKA,SAAgB,EAAiB,EAA6C,CAC5E,IAAM,EAAa,CAAC,IAAIA,EAAAA,iBAAoB,IAAIC,EAAAA,cAAc,EAAQ,KAAK,CAAE,GAAI,EAAQ,sBAAwB,EAAE,CAAE,CAErH,OAAA,EAAA,EAAA,cAA6B,CAC3B,QAAS,EAAQ,QACjB,MAAO,EAAQ,MACf,YAAa,EAAQ,YACrB,QAAS,EAAQ,QACjB,aACD,CAAC"}
1
+ {"version":3,"file":"logger.cjs","names":["ConsoleTransport","FileTransport"],"sources":["../src/logger.ts"],"sourcesContent":["import type { UniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { ConsoleTransport, createLogger as createUniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { FileTransport } from './transports';\nimport type { FileLoggerOptions } from './types';\n\nexport function createFileLogger(options: FileLoggerOptions): UniversalLogger {\n const transports = [new ConsoleTransport(), new FileTransport(options.file), ...(options.additionalTransports ?? [])];\n\n return createUniversalLogger({\n service: options.service,\n level: options.level,\n environment: options.environment,\n context: options.context,\n transports,\n });\n}\n"],"mappings":"oKAKA,SAAgB,EAAiB,EAA6C,CAC5E,IAAM,EAAa,CAAC,IAAIA,EAAAA,iBAAoB,IAAIC,EAAAA,cAAc,EAAQ,KAAK,CAAE,GAAI,EAAQ,sBAAwB,EAAE,CAAE,CAErH,OAAA,EAAA,EAAA,cAA6B,CAC3B,QAAS,EAAQ,QACjB,MAAO,EAAQ,MACf,YAAa,EAAQ,YACrB,QAAS,EAAQ,QACjB,aACD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.mjs","names":["createUniversalLogger"],"sources":["../src/logger.ts"],"sourcesContent":["import { ConsoleTransport, createLogger as createUniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport type { UniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { FileTransport } from './transports';\nimport type { FileLoggerOptions } from './types';\n\nexport function createFileLogger(options: FileLoggerOptions): UniversalLogger {\n const transports = [new ConsoleTransport(), new FileTransport(options.file), ...(options.additionalTransports ?? [])];\n\n return createUniversalLogger({\n service: options.service,\n level: options.level,\n environment: options.environment,\n context: options.context,\n transports,\n });\n}\n"],"mappings":"kJAKA,SAAgB,EAAiB,EAA6C,CAC5E,IAAM,EAAa,CAAC,IAAI,EAAoB,IAAI,EAAc,EAAQ,KAAK,CAAE,GAAI,EAAQ,sBAAwB,EAAE,CAAE,CAErH,OAAOA,EAAsB,CAC3B,QAAS,EAAQ,QACjB,MAAO,EAAQ,MACf,YAAa,EAAQ,YACrB,QAAS,EAAQ,QACjB,aACD,CAAC"}
1
+ {"version":3,"file":"logger.mjs","names":["createUniversalLogger"],"sources":["../src/logger.ts"],"sourcesContent":["import type { UniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { ConsoleTransport, createLogger as createUniversalLogger } from '@agimon-ai/foundation-universal-logger';\nimport { FileTransport } from './transports';\nimport type { FileLoggerOptions } from './types';\n\nexport function createFileLogger(options: FileLoggerOptions): UniversalLogger {\n const transports = [new ConsoleTransport(), new FileTransport(options.file), ...(options.additionalTransports ?? [])];\n\n return createUniversalLogger({\n service: options.service,\n level: options.level,\n environment: options.environment,\n context: options.context,\n transports,\n });\n}\n"],"mappings":"kJAKA,SAAgB,EAAiB,EAA6C,CAC5E,IAAM,EAAa,CAAC,IAAI,EAAoB,IAAI,EAAc,EAAQ,KAAK,CAAE,GAAI,EAAQ,sBAAwB,EAAE,CAAE,CAErH,OAAOA,EAAsB,CAC3B,QAAS,EAAQ,QACjB,MAAO,EAAQ,MACf,YAAa,EAAQ,YACrB,QAAS,EAAQ,QACjB,aACD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"file.cjs","names":["JsonLogFormatter"],"sources":["../../src/transports/file.ts"],"sourcesContent":["import { appendFile, mkdir, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport { JsonLogFormatter } from '@agimon-ai/foundation-universal-logger';\nimport type { LogEntry, Transport } from '@agimon-ai/foundation-universal-logger';\nimport type { FileTransportOptions } from '../types';\n\nexport class FileTransport implements Transport {\n name = 'file';\n level?: FileTransportOptions['level'];\n\n private readonly filePath: string;\n private readonly append: boolean;\n private readonly ensureDir: boolean;\n private readonly formatter: NonNullable<FileTransportOptions['formatter']>;\n private initialized = false;\n private writeQueue: Promise<void> = Promise.resolve();\n\n constructor(options: FileTransportOptions) {\n this.filePath = options.path;\n this.append = options.append ?? true;\n this.ensureDir = options.ensureDir ?? true;\n this.level = options.level;\n this.formatter = options.formatter ?? new JsonLogFormatter();\n }\n\n private async initialize(): Promise<void> {\n if (this.initialized) {\n return;\n }\n\n if (this.ensureDir) {\n await mkdir(dirname(this.filePath), { recursive: true });\n }\n\n if (!this.append) {\n await writeFile(this.filePath, '', 'utf8');\n }\n\n this.initialized = true;\n }\n\n async log(entry: LogEntry): Promise<void> {\n await this.initialize();\n\n const line = `${this.formatter.format(entry)}\\n`;\n this.writeQueue = this.writeQueue.then(() => appendFile(this.filePath, line, 'utf8')).catch(() => undefined);\n await this.writeQueue;\n }\n}\n"],"mappings":"gLAMA,IAAa,EAAb,KAAgD,CAC9C,KAAO,OACP,MAEA,SACA,OACA,UACA,UACA,YAAsB,GACtB,WAAoC,QAAQ,SAAS,CAErD,YAAY,EAA+B,CACzC,KAAK,SAAW,EAAQ,KACxB,KAAK,OAAS,EAAQ,QAAU,GAChC,KAAK,UAAY,EAAQ,WAAa,GACtC,KAAK,MAAQ,EAAQ,MACrB,KAAK,UAAY,EAAQ,WAAa,IAAIA,EAAAA,iBAG5C,MAAc,YAA4B,CACpC,AAYJ,KAAK,eARD,KAAK,WACP,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,SAAoB,KAAK,SAAS,CAAE,CAAE,UAAW,GAAM,CAAC,CAGrD,KAAK,QACR,MAAA,EAAA,EAAA,WAAgB,KAAK,SAAU,GAAI,OAAO,CAGzB,IAGrB,MAAM,IAAI,EAAgC,CACxC,MAAM,KAAK,YAAY,CAEvB,IAAM,EAAO,GAAG,KAAK,UAAU,OAAO,EAAM,CAAC,IAC7C,KAAK,WAAa,KAAK,WAAW,UAAA,EAAA,EAAA,YAAsB,KAAK,SAAU,EAAM,OAAO,CAAC,CAAC,UAAY,IAAA,GAAU,CAC5G,MAAM,KAAK"}
1
+ {"version":3,"file":"file.cjs","names":["JsonLogFormatter"],"sources":["../../src/transports/file.ts"],"sourcesContent":["import { appendFile, mkdir, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport type { LogEntry, Transport } from '@agimon-ai/foundation-universal-logger';\nimport { JsonLogFormatter } from '@agimon-ai/foundation-universal-logger';\nimport type { FileTransportOptions } from '../types';\n\nexport class FileTransport implements Transport {\n name = 'file';\n level?: FileTransportOptions['level'];\n\n private readonly filePath: string;\n private readonly append: boolean;\n private readonly ensureDir: boolean;\n private readonly formatter: NonNullable<FileTransportOptions['formatter']>;\n private initialized = false;\n private writeQueue: Promise<void> = Promise.resolve();\n\n constructor(options: FileTransportOptions) {\n this.filePath = options.path;\n this.append = options.append ?? true;\n this.ensureDir = options.ensureDir ?? true;\n this.level = options.level;\n this.formatter = options.formatter ?? new JsonLogFormatter();\n }\n\n private async initialize(): Promise<void> {\n if (this.initialized) {\n return;\n }\n\n if (this.ensureDir) {\n await mkdir(dirname(this.filePath), { recursive: true });\n }\n\n if (!this.append) {\n await writeFile(this.filePath, '', 'utf8');\n }\n\n this.initialized = true;\n }\n\n async log(entry: LogEntry): Promise<void> {\n await this.initialize();\n\n const line = `${this.formatter.format(entry)}\\n`;\n this.writeQueue = this.writeQueue.then(() => appendFile(this.filePath, line, 'utf8')).catch(() => undefined);\n await this.writeQueue;\n }\n}\n"],"mappings":"gLAMA,IAAa,EAAb,KAAgD,CAC9C,KAAO,OACP,MAEA,SACA,OACA,UACA,UACA,YAAsB,GACtB,WAAoC,QAAQ,SAAS,CAErD,YAAY,EAA+B,CACzC,KAAK,SAAW,EAAQ,KACxB,KAAK,OAAS,EAAQ,QAAU,GAChC,KAAK,UAAY,EAAQ,WAAa,GACtC,KAAK,MAAQ,EAAQ,MACrB,KAAK,UAAY,EAAQ,WAAa,IAAIA,EAAAA,iBAG5C,MAAc,YAA4B,CACpC,AAYJ,KAAK,eARD,KAAK,WACP,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,SAAoB,KAAK,SAAS,CAAE,CAAE,UAAW,GAAM,CAAC,CAGrD,KAAK,QACR,MAAA,EAAA,EAAA,WAAgB,KAAK,SAAU,GAAI,OAAO,CAGzB,IAGrB,MAAM,IAAI,EAAgC,CACxC,MAAM,KAAK,YAAY,CAEvB,IAAM,EAAO,GAAG,KAAK,UAAU,OAAO,EAAM,CAAC,IAC7C,KAAK,WAAa,KAAK,WAAW,UAAA,EAAA,EAAA,YAAsB,KAAK,SAAU,EAAM,OAAO,CAAC,CAAC,UAAY,IAAA,GAAU,CAC5G,MAAM,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"file.mjs","names":[],"sources":["../../src/transports/file.ts"],"sourcesContent":["import { appendFile, mkdir, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport { JsonLogFormatter } from '@agimon-ai/foundation-universal-logger';\nimport type { LogEntry, Transport } from '@agimon-ai/foundation-universal-logger';\nimport type { FileTransportOptions } from '../types';\n\nexport class FileTransport implements Transport {\n name = 'file';\n level?: FileTransportOptions['level'];\n\n private readonly filePath: string;\n private readonly append: boolean;\n private readonly ensureDir: boolean;\n private readonly formatter: NonNullable<FileTransportOptions['formatter']>;\n private initialized = false;\n private writeQueue: Promise<void> = Promise.resolve();\n\n constructor(options: FileTransportOptions) {\n this.filePath = options.path;\n this.append = options.append ?? true;\n this.ensureDir = options.ensureDir ?? true;\n this.level = options.level;\n this.formatter = options.formatter ?? new JsonLogFormatter();\n }\n\n private async initialize(): Promise<void> {\n if (this.initialized) {\n return;\n }\n\n if (this.ensureDir) {\n await mkdir(dirname(this.filePath), { recursive: true });\n }\n\n if (!this.append) {\n await writeFile(this.filePath, '', 'utf8');\n }\n\n this.initialized = true;\n }\n\n async log(entry: LogEntry): Promise<void> {\n await this.initialize();\n\n const line = `${this.formatter.format(entry)}\\n`;\n this.writeQueue = this.writeQueue.then(() => appendFile(this.filePath, line, 'utf8')).catch(() => undefined);\n await this.writeQueue;\n }\n}\n"],"mappings":"sLAMA,IAAa,EAAb,KAAgD,CAC9C,KAAO,OACP,MAEA,SACA,OACA,UACA,UACA,YAAsB,GACtB,WAAoC,QAAQ,SAAS,CAErD,YAAY,EAA+B,CACzC,KAAK,SAAW,EAAQ,KACxB,KAAK,OAAS,EAAQ,QAAU,GAChC,KAAK,UAAY,EAAQ,WAAa,GACtC,KAAK,MAAQ,EAAQ,MACrB,KAAK,UAAY,EAAQ,WAAa,IAAI,EAG5C,MAAc,YAA4B,CACpC,AAYJ,KAAK,eARD,KAAK,WACP,MAAM,EAAM,EAAQ,KAAK,SAAS,CAAE,CAAE,UAAW,GAAM,CAAC,CAGrD,KAAK,QACR,MAAM,EAAU,KAAK,SAAU,GAAI,OAAO,CAGzB,IAGrB,MAAM,IAAI,EAAgC,CACxC,MAAM,KAAK,YAAY,CAEvB,IAAM,EAAO,GAAG,KAAK,UAAU,OAAO,EAAM,CAAC,IAC7C,KAAK,WAAa,KAAK,WAAW,SAAW,EAAW,KAAK,SAAU,EAAM,OAAO,CAAC,CAAC,UAAY,IAAA,GAAU,CAC5G,MAAM,KAAK"}
1
+ {"version":3,"file":"file.mjs","names":[],"sources":["../../src/transports/file.ts"],"sourcesContent":["import { appendFile, mkdir, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport type { LogEntry, Transport } from '@agimon-ai/foundation-universal-logger';\nimport { JsonLogFormatter } from '@agimon-ai/foundation-universal-logger';\nimport type { FileTransportOptions } from '../types';\n\nexport class FileTransport implements Transport {\n name = 'file';\n level?: FileTransportOptions['level'];\n\n private readonly filePath: string;\n private readonly append: boolean;\n private readonly ensureDir: boolean;\n private readonly formatter: NonNullable<FileTransportOptions['formatter']>;\n private initialized = false;\n private writeQueue: Promise<void> = Promise.resolve();\n\n constructor(options: FileTransportOptions) {\n this.filePath = options.path;\n this.append = options.append ?? true;\n this.ensureDir = options.ensureDir ?? true;\n this.level = options.level;\n this.formatter = options.formatter ?? new JsonLogFormatter();\n }\n\n private async initialize(): Promise<void> {\n if (this.initialized) {\n return;\n }\n\n if (this.ensureDir) {\n await mkdir(dirname(this.filePath), { recursive: true });\n }\n\n if (!this.append) {\n await writeFile(this.filePath, '', 'utf8');\n }\n\n this.initialized = true;\n }\n\n async log(entry: LogEntry): Promise<void> {\n await this.initialize();\n\n const line = `${this.formatter.format(entry)}\\n`;\n this.writeQueue = this.writeQueue.then(() => appendFile(this.filePath, line, 'utf8')).catch(() => undefined);\n await this.writeQueue;\n }\n}\n"],"mappings":"sLAMA,IAAa,EAAb,KAAgD,CAC9C,KAAO,OACP,MAEA,SACA,OACA,UACA,UACA,YAAsB,GACtB,WAAoC,QAAQ,SAAS,CAErD,YAAY,EAA+B,CACzC,KAAK,SAAW,EAAQ,KACxB,KAAK,OAAS,EAAQ,QAAU,GAChC,KAAK,UAAY,EAAQ,WAAa,GACtC,KAAK,MAAQ,EAAQ,MACrB,KAAK,UAAY,EAAQ,WAAa,IAAI,EAG5C,MAAc,YAA4B,CACpC,AAYJ,KAAK,eARD,KAAK,WACP,MAAM,EAAM,EAAQ,KAAK,SAAS,CAAE,CAAE,UAAW,GAAM,CAAC,CAGrD,KAAK,QACR,MAAM,EAAU,KAAK,SAAU,GAAI,OAAO,CAGzB,IAGrB,MAAM,IAAI,EAAgC,CACxC,MAAM,KAAK,YAAY,CAEvB,IAAM,EAAO,GAAG,KAAK,UAAU,OAAO,EAAM,CAAC,IAC7C,KAAK,WAAa,KAAK,WAAW,SAAW,EAAW,KAAK,SAAU,EAAM,OAAO,CAAC,CAAC,UAAY,IAAA,GAAU,CAC5G,MAAM,KAAK"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agimon-ai/foundation-file-logger",
3
- "version": "0.26.13",
3
+ "version": "0.26.15",
4
4
  "description": "Node-oriented logger that outputs to both console and file",
5
5
  "homepage": "https://agimon.ai",
6
6
  "main": "./dist/index.cjs",
@@ -11,7 +11,7 @@
11
11
  "access": "public"
12
12
  },
13
13
  "dependencies": {
14
- "@agimon-ai/foundation-universal-logger": "0.26.13"
14
+ "@agimon-ai/foundation-universal-logger": "0.26.15"
15
15
  },
16
16
  "devDependencies": {
17
17
  "@types/node": "25.6.0",