/** * Performance Configuration for Assessment Engine * * Centralizes performance-related magic numbers that were previously * scattered across multiple modules. Supports JSON configuration files * for runtime tuning via CLI flags. * * @public * @module assessment/performance * @see https://github.com/triepod-ai/inspector-assessment/issues/37 */ import type { Logger } from "../lib/logger.js"; /** * Performance configuration for assessment execution. * Controls batching, timeouts, concurrency, and resource limits. * @public */ export interface PerformanceConfig { /** * Interval in milliseconds between progress batch flushes. * Controls how often batched test results are emitted. * @default 500 */ batchFlushIntervalMs: number; /** * Batch size for functionality assessment progress events. * Smaller than security batch size because functionality tests are fewer. * @default 5 */ functionalityBatchSize: number; /** * Batch size for security assessment progress events. * @default 10 */ securityBatchSize: number; /** * Timeout for individual test scenario execution in milliseconds. * Applied via Promise.race in TestScenarioEngine. * @default 5000 */ testTimeoutMs: number; /** * Timeout for individual security payload tests in milliseconds. * Fallback when not specified in assessment configuration. * @default 5000 */ securityTestTimeoutMs: number; /** * Warning threshold for queue depth monitoring. * Triggers warning when task queue exceeds this size. * * Derivation: Advanced security assessments can legitimately queue: * 29 tools x 140 payloads (across 23 attack patterns) = 4,060 tasks * * Threshold of 10,000 provides ~146% headroom to accommodate larger * tool sets while catching true runaway scenarios. * @default 10000 */ queueWarningThreshold: number; /** * Maximum EventEmitter listeners to prevent Node.js warnings. * Assessment operations require more listeners than Node's default (10). * @default 50 */ eventEmitterMaxListeners: number; /** * Maximum retry attempts for transient errors in security tests. * Payload-level retry with exponential backoff for connection errors. * @default 2 * @see https://github.com/triepod-ai/inspector-assessment/issues/157 */ securityRetryMaxAttempts: number; /** * Initial backoff delay in milliseconds for security test retries. * Uses exponential backoff: delay * 2^attempt (100ms → 200ms → 400ms) * @default 100 * @see https://github.com/triepod-ai/inspector-assessment/issues/157 */ securityRetryBackoffMs: number; } /** * Default performance configuration. * These values preserve existing behavior across all modules. * @public */ export declare const DEFAULT_PERFORMANCE_CONFIG: Readonly>; /** * Performance presets for common use cases. * @public */ export declare const PERFORMANCE_PRESETS: { /** Default configuration - balanced performance */ readonly default: Readonly>; /** Optimized for speed with larger batches */ readonly fast: Readonly<{ functionalityBatchSize: 10; securityBatchSize: 20; batchFlushIntervalMs: number; testTimeoutMs: number; securityTestTimeoutMs: number; queueWarningThreshold: number; eventEmitterMaxListeners: number; securityRetryMaxAttempts: number; securityRetryBackoffMs: number; }>; /** Conservative settings for resource-constrained environments */ readonly resourceConstrained: Readonly<{ functionalityBatchSize: 3; securityBatchSize: 5; queueWarningThreshold: 5000; batchFlushIntervalMs: number; testTimeoutMs: number; securityTestTimeoutMs: number; eventEmitterMaxListeners: number; securityRetryMaxAttempts: number; securityRetryBackoffMs: number; }>; }; /** * Validate a partial performance config. * Ensures values are within reasonable bounds. * * Uses Zod schema validation under the hood (Issue #84). * * @public * @param config - Partial config to validate * @returns Array of validation error messages (empty if valid) */ export declare function validatePerformanceConfig(config: Partial): string[]; /** * Merge a partial config with defaults. * User-provided values override defaults. * * @public * @param partial - Partial config to merge * @returns Complete config with defaults applied */ export declare function mergeWithDefaults(partial: Partial): Required; /** * Load performance configuration from a JSON file. * Partial configs are validated and merged with defaults. * * @public * @param configPath - Path to JSON configuration file * @param logger - Optional logger for diagnostic output * @returns Complete configuration with defaults applied * @throws Error if config file has validation errors */ export declare function loadPerformanceConfig(configPath?: string, logger?: Logger): Required; //# sourceMappingURL=performanceConfig.d.ts.map