mono/packages/ai-tools/dist/index.js
2025-02-20 19:44:08 +01:00

163 lines
14 KiB
JavaScript

import * as path from 'path';
import { z } from 'zod';
import { Logger } from "tslog";
import * as winston from 'winston';
import TransportStream from 'winston-transport';
import { SeqTransport } from '@datalust/winston-seq';
import { createStream } from "rotating-file-stream";
import { CONFIG_DEFAULT } from '@polymech/commons';
import { sync as read } from '@polymech/fs/read';
import { sync as write } from '@polymech/fs/write';
import { sync as exists } from '@polymech/fs/exists';
export let logger = createLogger('osr-ai-tools');
export const TLogLevelNameSchema = z.enum(["silly", "trace", "debug", "info", "warn", "error", "fatal"]);
export var LogLevelEx;
(function (LogLevelEx) {
LogLevelEx[LogLevelEx["silly"] = 0] = "silly";
LogLevelEx[LogLevelEx["trace"] = 1] = "trace";
LogLevelEx[LogLevelEx["debug"] = 2] = "debug";
LogLevelEx[LogLevelEx["info"] = 3] = "info";
LogLevelEx[LogLevelEx["warn"] = 4] = "warn";
LogLevelEx[LogLevelEx["error"] = 5] = "error";
LogLevelEx[LogLevelEx["fatal"] = 6] = "fatal";
})(LogLevelEx = LogLevelEx || (LogLevelEx = {}));
export var ELogTargets;
(function (ELogTargets) {
ELogTargets[ELogTargets["Console"] = 1] = "Console";
ELogTargets[ELogTargets["FileText"] = 2] = "FileText";
ELogTargets[ELogTargets["FileJson"] = 4] = "FileJson";
ELogTargets[ELogTargets["Seq"] = 8] = "Seq";
})(ELogTargets = ELogTargets || (ELogTargets = {}));
export function createLogger(name, options) {
return new Logger({
name,
type: 'pretty',
...options,
});
}
export const defaultLogger = createLogger('DefaultLogger', {
minLevel: LogLevelEx.info
});
class JsonArrayFileTransport extends TransportStream {
filename;
constructor(opts) {
super(opts);
opts.filename = opts.filename;
this.filename = opts.filename || 'logs.json';
setImmediate(() => this.emit('opened'));
}
log(info, next) {
setImmediate(() => this.emit('logged', info));
const { level, message, exception, stack, ...props } = info;
const fileExists = exists(this.filename);
const existingLogs = fileExists
? read(this.filename, 'json')
: [];
const entry = {
level: info.level,
message: info.message,
timestamp: new Date().toISOString(),
...info
};
existingLogs.push(entry);
write(this.filename, existingLogs);
next();
}
close() {
setImmediate(() => this.emit('closed'));
}
flush() {
return new Promise((resolve, reject) => {
resolve(true);
});
}
}
class TSLogTransport extends TransportStream {
constructor(opts) {
super(opts);
setImmediate(() => this.emit('opened'));
}
log(info, next) {
setImmediate(() => this.emit('logged', info));
const { level, message, exception, stack, ...props } = info;
defaultLogger.info(info);
next();
}
}
export const winstonLogger = (name, file, targets = ELogTargets.Console | ELogTargets.FileJson) => {
const logger = winston.createLogger({
defaultMeta: { service: name },
level: 'debug',
transports: []
});
if (targets & ELogTargets.Console) {
//logger.add(new TSLogTransport({}))
logger.add(new winston.transports.Console({
format: winston.format.combine(winston.format.timestamp({ format: 'MM/DD/YYYY hh:mm:ss.SSS' }),
///winston.format.json(),
winston.format.colorize(), winston.format.printf(info => {
let message = null;
try {
message = JSON.stringify(info.message);
}
catch (e) {
}
return `[${info.level}] [${name}] | message: ${message.substring(0, 200)}`;
}))
}));
}
if (targets & ELogTargets.FileText) {
logger.add(new winston.transports.File({
format: winston.format.combine(winston.format.timestamp(), winston.format.timestamp({ format: 'MM/DD/YYYY hh:mm:ss.SSS' }), winston.format.json(), winston.format.printf(info => {
return JSON.stringify(info, null, 2);
})),
dirname: path.parse(file).dir,
filename: path.parse(file).base
}));
}
if (targets & ELogTargets.FileJson) {
logger.add(new JsonArrayFileTransport({
filename: file
}));
}
if (targets & ELogTargets.Seq) {
const config = CONFIG_DEFAULT();
if (config.seq) {
logger.add(new SeqTransport({
...config.seq,
onError: (e => { })
}));
}
}
return logger;
};
export const createFileLogger = (logger, level, file) => {
const rfs = createStream(file, {
size: "10M",
interval: "1d",
compress: "gzip", // compress rotated files
});
const log = new Logger({
type: "json",
attachedTransports: [
(logObj) => {
rfs.write(JSON.stringify(logObj) + "\n");
},
],
});
return log;
};
export const toolLoggerTS = (name, options) => {
let log = createLogger(name);
//log.settings.minLevel = options.logLevel
log = createFileLogger(log, options.logLevel, path.join(options.logs, `tools-${name}.json`));
return log;
};
export const toolLogger = (name, options = { logs: process.cwd() }) => {
const logPath = path.resolve(path.join(options.logs || './', `tools-${name}.json`));
const log = winstonLogger(name, logPath, ELogTargets.Console);
return log;
};
export * from './types.js';
export * from './types_kbot.js';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFDNUIsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUV2QixPQUFPLEVBQWtCLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUU5QyxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQTtBQUNsQyxPQUFPLGVBQWUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sdUJBQXVCLENBQUE7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUlwRCxNQUFNLENBQUMsSUFBSSxNQUFNLEdBQW9CLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQTtBQUNqRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUV4RyxNQUFNLENBQU4sSUFBWSxVQVFYO0FBUkQsV0FBWSxVQUFVO0lBQ2xCLDZDQUFLLENBQUE7SUFDTCw2Q0FBSyxDQUFBO0lBQ0wsNkNBQUssQ0FBQTtJQUNMLDJDQUFJLENBQUE7SUFDSiwyQ0FBSSxDQUFBO0lBQ0osNkNB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