mcp-openai-complete
Version:
MCP server for OpenAI text completion
74 lines • 2.23 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.isValidCompletionArgs = exports.sleep = exports.logger = void 0;
const constants_js_1 = require("./constants.js");
/**
* Helper function to log messages with timestamp and context
*/
const logMessage = (level, context, message, ...args) => {
const timestamp = new Date().toISOString();
const formattedMessage = `[${timestamp}] [${level}] [${context}] ${message}`;
switch (level) {
case 'ERROR':
console.error(formattedMessage, ...args);
break;
case 'WARN':
console.warn(formattedMessage, ...args);
break;
default:
console.log(formattedMessage, ...args);
}
};
/**
* Logger utility for consistent logging
*/
exports.logger = {
info: (context, message, ...args) => {
logMessage('INFO', context, message, ...args);
},
error: (context, message, ...args) => {
logMessage('ERROR', context, message, ...args);
},
debug: (context, message, ...args) => {
if (constants_js_1.DEBUG) {
logMessage('DEBUG', context, message, ...args);
}
},
warn: (context, message, ...args) => {
logMessage('WARN', context, message, ...args);
},
};
/**
* Sleep for a specified number of milliseconds
*/
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
exports.sleep = sleep;
/**
* Validate completion arguments
*/
const isValidCompletionArgs = (args) => {
if (typeof args !== 'object' || args === null) {
return false;
}
const candidate = args;
// Prompt is required
if (typeof candidate.prompt !== 'string') {
return false;
}
// Check optional numeric parameters
const optionalNumericParams = [
'max_tokens',
'temperature',
'top_p',
'frequency_penalty',
'presence_penalty',
];
for (const param of optionalNumericParams) {
if (candidate[param] !== undefined && typeof candidate[param] !== 'number') {
return false;
}
}
return true;
};
exports.isValidCompletionArgs = isValidCompletionArgs;
//# sourceMappingURL=utils.js.map
;