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-запуска.

149 lines 4.76 kB
/** * Shared TypeScript types для ELS MCP-сервера. * * Источник истины `error-logs-service/prisma/schema.prisma` (model ErrorLog). * Здесь хранятся плоские DTO, удобные для MCP-tool responses. */ export type ErrorLevel = 'CRITICAL' | 'ERROR' | 'WARNING' | 'INFO' | 'DEBUG'; export type ErrorSource = 'CLIENT' | 'SERVER'; /** * ErrorLog в API-формате (как отдаёт ELS endpoint `GET /errors`). * * Все timestamp'ы ISO-8601 strings (после `.toISOString()` на стороне ELS). * Опциональные поля приходят как null или отсутствуют. */ export interface ErrorLog { id: string; traceId: string; message: string; stack: string | null; componentStack: string | null; url: string; timestamp: string; receivedAt: string; level: ErrorLevel | string; source: ErrorSource | string; browser: string; urlPath: string; errorCategory: string; appSlug: string; serviceName: string; deploymentEnv: string; userAgent: string; language: string | null; screenSize: string | null; viewportSize: string | null; referrer: string | null; ip: string; fingerprint: string | null; sessionId: string | null; appVersion: string | null; httpStatus?: number | null; durationMs?: number | null; aiDiagnosis?: unknown; } /** * Compact-вариант (response_format=compact): без stack/componentStack/userAgent, * message 200ch. */ export interface ErrorLogCompact { traceId: string; level: string; message: string; serviceName: string | null; url: string | null; fingerprint: string | null; receivedAt: string; } /** * Summary-вариант (response_format=summary): минимум для ranked list. */ export interface ErrorLogSummary { traceId: string; message: string; level: string; count?: number; lastSeen?: string; } export interface FacetValue { value: string; count: number; } export interface Facets { source?: FacetValue[]; level?: FacetValue[]; browser?: FacetValue[]; urlPath?: FacetValue[]; language?: FacetValue[]; ip?: FacetValue[]; errorCategory?: FacetValue[]; app?: FacetValue[]; serviceName?: FacetValue[]; deploymentEnv?: FacetValue[]; appVersion?: FacetValue[]; } export interface HistogramBucket { ts: string; count: number; byLevel?: Record<string, number>; } export interface SearchLogsRawResponse { items: ErrorLog[]; total: number; page: number; limit: number; totalPages: number; facets: Facets; histogram: HistogramBucket[]; } /** * ResponseMeta добавляется ко всем tool responses. * * Содержит `elsRequestId` (если ELS вернул), флаг `cached`, факт применения * redaction и пр. служебные поля. */ export interface ResponseMeta { elsRequestId?: string | null; cached: boolean; ttlSec?: number; redactionApplied: boolean; truncated?: boolean; degraded?: boolean; warnings?: string[]; } /** * Seek-cursor payload (внутренний, base64url-кодируется). * * Transitional wrapper над offset-based ELS API. Зашиваем page/limit, чтобы * сохранить совместимость до момента переключения ELS на seek-based * pagination формат cursor останется тот же. */ export interface CursorPayload { /** ISO timestamp anchor для seek-base (после миграции ELS). */ anchorReceivedAt: string; /** id записи, использованной как anchor. */ anchorId: string; /** Хэш текущих фильтров детект изменения filters между страницами. */ filtersHash: string; /** Версия cursor-формата (для future migrations). */ v: 1; /** Offset-based page для backwards-compat (до миграции ELS на seek). */ page?: number; /** Размер страницы (до миграции ELS на seek). */ limit?: number; } export type ResponseFormat = 'compact' | 'full' | 'summary'; /** * MCP-стандартный tool result. Совпадает по форме с CallToolResult из MCP SDK, * но даёт нам типизированный shortcut в handler'ах. */ export interface ToolResult { structuredContent?: Record<string, unknown>; content: Array<{ type: 'text'; text: string; }>; isError?: boolean; _meta?: Record<string, unknown>; } //# sourceMappingURL=types.d.ts.map