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

47 lines 2.33 kB
/** * Usage tracker. * * Пишет напрямую в Postgres `mcp_billing.usage_daily` (UPSERT per app+date+tool). * Со временем будет заменён на Redis INCR + hourly flush — интерфейс останется * тем же, так что вызывающий код не нужно будет править. * * Поведение: * - Silent fail при ошибке БД (как и audit) — usage tracking не блокирует tool-call. * - Fire-and-forget: caller вызывает через `void trackUsage(...)`. * - AI-tools (см. `isAiTool` из `./limits.ts`) дополнительно учитываются в * отдельной AI-квоте через `aiTodayUsage` + `checkAiQuota`. */ import type { Logger } from 'pino'; import { type McpPrismaClient } from '../audit/prisma.js'; import { type QuotaDecision, type Tier } from './limits.js'; export interface TrackUsageParams { appId: string; tool: string; bytesOut: number; /** Можно явно передать дату (для тестов). По умолчанию today UTC. */ date?: Date; } export interface UsageTrackerOptions { databaseUrl?: string; log?: Logger; prismaOverride?: McpPrismaClient | null; } export interface UsageTracker { trackUsage(params: TrackUsageParams): Promise<void>; /** * Возвращает текущее число использований за сегодня UTC (sum по всем tools). * Используется как source для `checkQuota`. */ todayUsage(appId: string, now?: Date): Promise<number>; checkQuota(appId: string, tier: Tier, now?: Date): Promise<QuotaDecision>; /** * Возвращает текущее число AI-tool вызовов за сегодня UTC (sum по * tools, отвечающим `isAiTool`). */ aiTodayUsage(appId: string, now?: Date): Promise<number>; checkAiQuota(appId: string, tier: Tier, now?: Date): Promise<QuotaDecision>; } export declare function createUsageTracker(opts?: UsageTrackerOptions): UsageTracker; export declare function getUsageTracker(opts?: UsageTrackerOptions): UsageTracker; export declare function setUsageTrackerForTests(t: UsageTracker | null): void; //# sourceMappingURL=tracker.d.ts.map