@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-запуска.
60 lines • 2.51 kB
TypeScript
/**
* Cache TTL policies per "tool class".
*
* Источник: `todo/error-logs-service/mcp/05-high-load.md` § 2.1.
*
* Class имена используются:
* - как `tool_class` label в Prometheus метриках (`mcp_cache_hit_ratio`);
* - как первая часть Redis key namespace (`mcp:cache:{class}:...`).
*
* Изменения дефолтов делайте здесь, не в `cachedElsClient.ts` — chair pattern.
*
* Значения можно override через ENV `MCP_CACHE_TTL_OVERRIDE_{CLASS}=secs`
* (см. `src/config.ts`).
*/
export declare const CACHE_POLICIES: {
readonly log_details: 3600;
readonly traffic_long: 300;
readonly traffic_short: 60;
readonly top_messages: 120;
readonly stats_breakdown: 120;
readonly search_recent: 15;
readonly list_apps: 30;
readonly heatmap: 300;
readonly histogram: 60;
readonly baseline: 300;
readonly version_timeline: 300;
readonly grouped_errors: 120;
};
export type CacheClass = keyof typeof CACHE_POLICIES;
export interface CachePolicyOverrides {
[k: string]: number | undefined;
}
/**
* Объединяет дефолтные политики с user overrides из конфига.
*/
export declare function resolvePolicies(overrides?: CachePolicyOverrides): Record<CacheClass, number>;
/**
* Стабильный sha256 hash от объекта параметров (отсортированные ключи).
*
* НЕ криптографически стойкий — это просто детерминированный fingerprint.
* Используется для построения cache key (paramsHash).
*
* Возвращает base64url-encoded 16 chars.
*/
export declare function paramsHash(params: Record<string, unknown>): string;
/**
* Tenant-isolated cache key builder.
*
* **Обязательная** проверка: в key всегда присутствует tenant-идентификатор
* (`appSlug` или `keyPrefix`). Иначе — `Error`.
*
* Формат:
* `mcp:cache:{scope}:{tenant}:{...parts}`
*
* Это **единственный** разрешённый путь создания cache key в проекте.
*
* @throws Error если tenant=null AND keyPrefix=empty (cross-tenant leak guard)
*/
export declare function tenantKey(scope: string, appSlug: string | null, parts: Array<string | number>, fallbackKeyPrefix?: string): string;
//# sourceMappingURL=policies.d.ts.map