UNPKG

@iflow-mcp/promptx

Version:

AI角色创建平台和智能工具开发平台,基于MCP协议提供专业AI能力注入

267 lines (266 loc) 8.9 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { createLogger: () => createLogger, debug: () => debug, default: () => index_default, error: () => error, info: () => info, log: () => log, verbose: () => verbose, warn: () => warn }); module.exports = __toCommonJS(index_exports); var import_pino = __toESM(require("pino"), 1); var import_path = __toESM(require("path"), 1); var import_os = __toESM(require("os"), 1); var import_fs = __toESM(require("fs"), 1); var defaultConfig = { level: process.env.LOG_LEVEL || "info", console: true, file: { dirname: import_path.default.join(import_os.default.homedir(), ".promptx", "logs") }, colors: true }; function getCallerInfo() { const stack = new Error().stack || ""; const stackLines = stack.split("\n"); for (let i = 2; i < stackLines.length; i++) { const line = stackLines[i]; if (line && !line.includes("node_modules/pino") && !line.includes("packages/logger") && !line.includes("@promptx/logger")) { const match = line.match(/at\s+(?:.*?\s+)?\(?(.*?):(\d+):(\d+)\)?/); if (match && match[1] && match[2]) { const fullPath = match[1]; const lineNum = parseInt(match[2], 10); let packageName = "app"; const packageMatch = fullPath.match(/packages\/([^\/]+)/) || fullPath.match(/@promptx\/([^\/]+)/); if (packageMatch) { packageName = `@promptx/${packageMatch[1]}`; } const filename = import_path.default.basename(fullPath); return { package: packageName, file: filename, line: lineNum }; } } } return { package: "app", file: "unknown", line: 0 }; } function createLogger(config = {}) { const finalConfig = { ...defaultConfig, ...config }; if (finalConfig.file) { const fileConfig = typeof finalConfig.file === "object" ? finalConfig.file : {}; const logDir = fileConfig.dirname || import_path.default.join(import_os.default.homedir(), ".promptx", "logs"); if (!import_fs.default.existsSync(logDir)) { import_fs.default.mkdirSync(logDir, { recursive: true }); } } const isElectron = process.versions && process.versions.electron; if (isElectron || process.env.PROMPTX_NO_WORKERS === "true") { if (finalConfig.file) { const fileConfig = typeof finalConfig.file === "object" ? finalConfig.file : {}; const logDir = fileConfig.dirname || import_path.default.join(import_os.default.homedir(), ".promptx", "logs"); const today = (/* @__PURE__ */ new Date()).toISOString().split("T")[0]; const logPath = import_path.default.join(logDir, `promptx-${today}.log`); const dest = import_pino.default.destination({ dest: logPath, sync: true // Use sync to avoid worker thread issues in Electron }); return (0, import_pino.default)({ level: finalConfig.level || "info", base: { pid: process.pid }, mixin: () => getCallerInfo(), // Simple formatting without pino-pretty to avoid worker threads formatters: { level: (label) => { return { level: label }; }, log: (obj) => { const { package: pkg, file, line, ...rest } = obj; return { ...rest, location: pkg && file ? `${pkg} [${file}:${line}]` : void 0 }; } } }, dest); } else { return (0, import_pino.default)({ level: finalConfig.level || "info", base: { pid: process.pid }, mixin: () => getCallerInfo(), formatters: { level: (label) => { return { level: label }; }, log: (obj) => { const { package: pkg, file, line, ...rest } = obj; return { ...rest, location: pkg && file ? `${pkg} [${file}:${line}]` : void 0 }; } } }); } } else { const targets = []; if (finalConfig.console) { targets.push({ target: "pino-pretty", level: finalConfig.level, options: { // MCP stdio模式下禁用颜色,避免ANSI转义码 colorize: process.env.MCP_TRANSPORT === "stdio" ? false : finalConfig.colors, translateTime: "SYS:yyyy-mm-dd HH:MM:ss.l", ignore: "hostname,pid,package,file,line", destination: 2, // 输出到 stderr (fd 2) - MCP官方最佳实践 messageFormat: "{package} [{file}:{line}] {msg}" } }); } if (finalConfig.file) { const fileConfig = typeof finalConfig.file === "object" ? finalConfig.file : {}; const logDir = fileConfig.dirname || import_path.default.join(import_os.default.homedir(), ".promptx", "logs"); const today = (/* @__PURE__ */ new Date()).toISOString().split("T")[0]; targets.push({ target: "pino/file", level: finalConfig.level, options: { destination: import_path.default.join(logDir, `promptx-${today}.log`) } }); targets.push({ target: "pino/file", level: "error", options: { destination: import_path.default.join(logDir, `promptx-error-${today}.log`) } }); } if (targets.length > 0) { return (0, import_pino.default)({ level: finalConfig.level || "info", base: { pid: process.pid }, mixin: () => getCallerInfo(), transport: { targets } }); } } return (0, import_pino.default)({ level: finalConfig.level || "info", base: { pid: process.pid }, mixin: () => getCallerInfo() }); } var logger = createLogger(); var error = (msgOrObj, objOrMsg) => { if (typeof msgOrObj === "string") { if (objOrMsg && typeof objOrMsg === "object") { logger.error(objOrMsg, msgOrObj); } else { logger.error(msgOrObj); } } else { logger.error(msgOrObj, objOrMsg || ""); } }; var warn = (msgOrObj, objOrMsg) => { if (typeof msgOrObj === "string") { if (objOrMsg && typeof objOrMsg === "object") { logger.warn(objOrMsg, msgOrObj); } else { logger.warn(msgOrObj); } } else { logger.warn(msgOrObj, objOrMsg || ""); } }; var info = (msgOrObj, objOrMsg) => { if (typeof msgOrObj === "string") { if (objOrMsg && typeof objOrMsg === "object") { logger.info(objOrMsg, msgOrObj); } else { logger.info(msgOrObj); } } else { logger.info(msgOrObj, objOrMsg || ""); } }; var debug = (msgOrObj, objOrMsg) => { if (typeof msgOrObj === "string") { if (objOrMsg && typeof objOrMsg === "object") { logger.debug(objOrMsg, msgOrObj); } else { logger.debug(msgOrObj); } } else { logger.debug(msgOrObj, objOrMsg || ""); } }; var verbose = (msgOrObj, objOrMsg) => { if (typeof msgOrObj === "string") { if (objOrMsg && typeof objOrMsg === "object") { logger.trace(objOrMsg, msgOrObj); } else { logger.trace(msgOrObj); } } else { logger.trace(msgOrObj, objOrMsg || ""); } }; var log = (level, msg, ...args) => { const method = logger[level]; if (typeof method === "function") { method(msg, ...args); } else { logger.info(msg, ...args); } }; var index_default = logger; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { createLogger, debug, error, info, log, verbose, warn }); //# sourceMappingURL=index.cjs.map