UNPKG

finops-mcp-server

Version:

MCP server for FinOps Center cost optimization integration

260 lines 6.78 kB
/** * Configuration and Utility Type Definitions * * This file contains TypeScript type definitions for server configuration, * command-line options, error response types, and logging interfaces. */ export interface ServerConfig { apiUrl: string; apiKey: string; customerId?: string; environment?: string; timeout?: number; retryAttempts?: number; logLevel?: LogLevel; maxConcurrentRequests?: number; requestQueueSize?: number; cacheEnabled?: boolean; cacheTTL?: number; validateSSL?: boolean; allowedOrigins?: string[]; rateLimitEnabled?: boolean; rateLimitRequests?: number; rateLimitWindow?: number; } export interface CommandLineArgs { "api-url"?: string; "api-key"?: string; "customer-id"?: string; environment?: string; timeout?: number; "retry-attempts"?: number; "log-level"?: string; "max-concurrent-requests"?: number; "cache-enabled"?: boolean; "cache-ttl"?: number; "validate-ssl"?: boolean; "rate-limit-enabled"?: boolean; "rate-limit-requests"?: number; "rate-limit-window"?: number; stdio?: boolean; help?: boolean; version?: boolean; } export interface EnvironmentConfig { name: string; apiUrl: string; description?: string; timeout?: number; retryAttempts?: number; rateLimitRequests?: number; rateLimitWindow?: number; } export interface EnvironmentConfigs { development: EnvironmentConfig; staging: EnvironmentConfig; production: EnvironmentConfig; [key: string]: EnvironmentConfig; } export declare enum LogLevel { DEBUG = "debug", INFO = "info", WARN = "warn", ERROR = "error", SILENT = "silent" } export interface LoggerConfig { level: LogLevel; format: "json" | "text"; timestamp: boolean; correlationId: boolean; redactSensitive: boolean; outputFile?: string; maxFileSize?: number; maxFiles?: number; } export interface ErrorResponse { error: { code: string; message: string; details?: any; timestamp?: string; correlationId?: string; stack?: string; }; } export interface ValidationErrorResponse extends ErrorResponse { error: { code: "VALIDATION_ERROR"; message: string; details: { field: string; value: any; constraint: string; expected?: string; }[]; timestamp: string; correlationId?: string; }; } export interface AuthenticationErrorResponse extends ErrorResponse { error: { code: "AUTHENTICATION_ERROR" | "AUTHORIZATION_ERROR"; message: string; details?: { reason: string; suggestion?: string; }; timestamp: string; correlationId?: string; }; } export interface NetworkErrorResponse extends ErrorResponse { error: { code: "NETWORK_ERROR" | "TIMEOUT_ERROR" | "CONNECTION_ERROR"; message: string; details?: { url?: string; method?: string; statusCode?: number; retryAttempt?: number; }; timestamp: string; correlationId?: string; }; } export interface Logger { debug(message: string, meta?: LogMeta): void; info(message: string, meta?: LogMeta): void; warn(message: string, meta?: LogMeta): void; error(message: string, error?: Error, meta?: LogMeta): void; child(meta: LogMeta): Logger; } export interface LogMeta { correlationId?: string; userId?: string; operation?: string; duration?: number; statusCode?: number; url?: string; method?: string; [key: string]: any; } export interface LogEntry { timestamp: string; level: LogLevel; message: string; meta?: LogMeta; error?: { name: string; message: string; stack?: string; }; } export interface PerformanceMetrics { requestCount: number; errorCount: number; averageResponseTime: number; p95ResponseTime: number; p99ResponseTime: number; successRate: number; lastResetTime: string; } export interface OperationMetrics { operation: string; count: number; totalDuration: number; averageDuration: number; minDuration: number; maxDuration: number; errorCount: number; lastExecuted: string; } export interface HealthCheck { name: string; status: "healthy" | "unhealthy" | "degraded"; message?: string; duration?: number; timestamp: string; details?: Record<string, any>; } export interface HealthStatus { status: "healthy" | "unhealthy" | "degraded"; timestamp: string; uptime: number; version: string; checks: HealthCheck[]; metrics?: PerformanceMetrics; } export interface ConfigValidationRule { field: string; required: boolean; type: "string" | "number" | "boolean" | "array" | "object"; validator?: (value: any) => boolean; errorMessage?: string; } export interface ConfigValidationResult { isValid: boolean; errors: Array<{ field: string; message: string; value?: any; }>; } export interface RetryConfig { attempts: number; delay: number; backoffFactor: number; maxDelay: number; retryCondition?: (error: Error) => boolean; } export interface CacheConfig { enabled: boolean; ttl: number; maxSize: number; keyPrefix?: string; } export interface RateLimitConfig { enabled: boolean; requests: number; window: number; skipSuccessfulRequests?: boolean; skipFailedRequests?: boolean; } export type ConfigKey = keyof ServerConfig; export type RequiredConfig = Pick<ServerConfig, "apiUrl" | "apiKey">; export type OptionalConfig = Partial<Omit<ServerConfig, "apiUrl" | "apiKey">>; export interface DefaultConfig { timeout: number; retryAttempts: number; logLevel: LogLevel; maxConcurrentRequests: number; requestQueueSize: number; cacheEnabled: boolean; cacheTTL: number; validateSSL: boolean; rateLimitEnabled: boolean; rateLimitRequests: number; rateLimitWindow: number; } export interface ConfigBuilder { fromCommandLine(args: CommandLineArgs): ConfigBuilder; fromEnvironment(env: string): ConfigBuilder; withDefaults(defaults?: Partial<ServerConfig>): ConfigBuilder; validate(): ConfigValidationResult; build(): ServerConfig; } export interface StartupConfig { server: ServerConfig; logger: LoggerConfig; performance: { metricsEnabled: boolean; metricsInterval: number; }; health: { enabled: boolean; endpoint?: string; interval: number; }; } //# sourceMappingURL=config.d.ts.map