UNPKG

@inso_web/els-mcp

Version:

MCP-сервер поверх INSO Error Logs Service. Read-only tools (search, analytics, fingerprinting, correlations) для подключения Claude Desktop/Code и ChatGPT к логам ошибок. Streamable HTTP transport + stdio для npx-запуска.

74 lines 2.78 kB
/** * Применяет `response_format` к массиву ErrorLog items. * * - `compact` (default): убирает `stack`, `componentStack`, `userAgent`, * обрезает `message` до 200 символов. Подходит для LLM-context-safe browse. * - `full`: возвращает items как есть. * - `summary`: только traceId/message/level/lastSeen/count. * * Также возвращает флаг `truncated` — true, если хотя бы один message был обрезан * (используется в `_meta.truncated`). */ const MESSAGE_MAX_COMPACT = 200; const MESSAGE_MAX_SUMMARY = 200; export function applyResponseFormat(items, format) { if (format === 'full') { return { items, truncated: false }; } if (format === 'summary') { let truncated = false; const result = items.map((row) => { const msg = row.message ?? ''; const sliced = msg.length > MESSAGE_MAX_SUMMARY ? msg.slice(0, MESSAGE_MAX_SUMMARY) : msg; if (sliced.length < msg.length) truncated = true; return { traceId: row.traceId, message: sliced, level: row.level, lastSeen: row.receivedAt, }; }); return { items: result, truncated }; } // compact (default) let truncated = false; const result = items.map((row) => { const msg = row.message ?? ''; const sliced = msg.length > MESSAGE_MAX_COMPACT ? msg.slice(0, MESSAGE_MAX_COMPACT) : msg; if (sliced.length < msg.length) truncated = true; return { traceId: row.traceId, level: row.level, message: sliced, serviceName: row.serviceName || null, url: row.url ?? null, fingerprint: row.fingerprint ?? null, receivedAt: row.receivedAt, }; }); return { items: result, truncated }; } /** * Сокращает поля одного ErrorLog (для get_log_details при compact-format). */ export function applyResponseFormatSingle(row, format) { if (format === 'full') return { log: row, truncated: false }; const msg = row.message ?? ''; const sliced = msg.length > MESSAGE_MAX_COMPACT ? msg.slice(0, MESSAGE_MAX_COMPACT) : msg; return { log: { traceId: row.traceId, level: row.level, message: sliced, serviceName: row.serviceName || null, url: row.url ?? null, fingerprint: row.fingerprint ?? null, receivedAt: row.receivedAt, }, truncated: sliced.length < msg.length, }; } //# sourceMappingURL=responseFormat.js.map