/** * Feature Flags Configuration * * Allows users to enable/disable features via `.vaspera/config.yaml`. * * Example configuration: * ```yaml * version: 1 * * agents: * security: * enabled: true * weight: 1.0 * reliability: * enabled: true * weight: 0.8 * typesafety: * enabled: false * redteam: * enabled: true * weight: 0.5 * * scanners: * semgrep: * enabled: true * timeout: 120000 * gitleaks: * enabled: true * npm-audit: * enabled: true * * features: * multiModel: false * costTracking: true * autofix: true * incrementalScan: true * ``` * * @module config/flags */ import { z } from "zod"; /** * Agent configuration */ export declare const AgentConfigSchema: z.ZodObject<{ /** Whether agent is enabled */ enabled: z.ZodDefault; /** Agent weight for consensus (0-1) */ weight: z.ZodDefault; /** Model to use for this agent */ model: z.ZodOptional; /** Temperature for this agent */ temperature: z.ZodOptional; /** Custom prompt additions */ promptAdditions: z.ZodOptional; }, "strip", z.ZodTypeAny, { enabled: boolean; weight: number; model?: string | undefined; temperature?: number | undefined; promptAdditions?: string | undefined; }, { enabled?: boolean | undefined; model?: string | undefined; weight?: number | undefined; temperature?: number | undefined; promptAdditions?: string | undefined; }>; export type AgentConfig = z.infer; /** * Scanner configuration */ export declare const ScannerConfigSchema: z.ZodObject<{ /** Whether scanner is enabled */ enabled: z.ZodDefault; /** Scanner timeout in ms */ timeout: z.ZodOptional; /** Custom rules directory */ rulesDir: z.ZodOptional; /** Additional scanner-specific options */ options: z.ZodOptional>; }, "strip", z.ZodTypeAny, { enabled: boolean; timeout?: number | undefined; options?: Record | undefined; rulesDir?: string | undefined; }, { enabled?: boolean | undefined; timeout?: number | undefined; options?: Record | undefined; rulesDir?: string | undefined; }>; export type ScannerConfig = z.infer; /** * Feature flags */ export declare const FeatureFlagsSchema: z.ZodObject<{ /** Enable multi-model consensus */ multiModel: z.ZodDefault; /** Enable cost tracking */ costTracking: z.ZodDefault; /** Enable auto-fix suggestions */ autofix: z.ZodDefault; /** Enable incremental scanning */ incrementalScan: z.ZodDefault; /** Enable scanner caching */ scannerCache: z.ZodDefault; /** Enable cross-verification */ crossVerification: z.ZodDefault; /** Enable Sigstore signing */ sigstoreSigning: z.ZodDefault; /** Enable SARIF export */ sarifExport: z.ZodDefault; /** Enable compliance mapping */ complianceMapping: z.ZodDefault; /** Enable OpenTelemetry */ otel: z.ZodDefault; /** Enable plugin system */ plugins: z.ZodDefault; /** Enable red team mode */ redteam: z.ZodDefault; }, "strip", z.ZodTypeAny, { redteam: boolean; autofix: boolean; complianceMapping: boolean; plugins: boolean; multiModel: boolean; costTracking: boolean; incrementalScan: boolean; scannerCache: boolean; crossVerification: boolean; sigstoreSigning: boolean; sarifExport: boolean; otel: boolean; }, { redteam?: boolean | undefined; autofix?: boolean | undefined; complianceMapping?: boolean | undefined; plugins?: boolean | undefined; multiModel?: boolean | undefined; costTracking?: boolean | undefined; incrementalScan?: boolean | undefined; scannerCache?: boolean | undefined; crossVerification?: boolean | undefined; sigstoreSigning?: boolean | undefined; sarifExport?: boolean | undefined; otel?: boolean | undefined; }>; export type FeatureFlags = z.infer; /** * Full configuration schema */ export declare const VasperaConfigSchema: z.ZodObject<{ /** Config version */ version: z.ZodDefault>; /** Agent configurations */ agents: z.ZodDefault; /** Agent weight for consensus (0-1) */ weight: z.ZodDefault; /** Model to use for this agent */ model: z.ZodOptional; /** Temperature for this agent */ temperature: z.ZodOptional; /** Custom prompt additions */ promptAdditions: z.ZodOptional; }, "strip", z.ZodTypeAny, { enabled: boolean; weight: number; model?: string | undefined; temperature?: number | undefined; promptAdditions?: string | undefined; }, { enabled?: boolean | undefined; model?: string | undefined; weight?: number | undefined; temperature?: number | undefined; promptAdditions?: string | undefined; }>>>; /** Scanner configurations */ scanners: z.ZodDefault; /** Scanner timeout in ms */ timeout: z.ZodOptional; /** Custom rules directory */ rulesDir: z.ZodOptional; /** Additional scanner-specific options */ options: z.ZodOptional>; }, "strip", z.ZodTypeAny, { enabled: boolean; timeout?: number | undefined; options?: Record | undefined; rulesDir?: string | undefined; }, { enabled?: boolean | undefined; timeout?: number | undefined; options?: Record | undefined; rulesDir?: string | undefined; }>>>; /** Feature flags */ features: z.ZodDefault; /** Enable cost tracking */ costTracking: z.ZodDefault; /** Enable auto-fix suggestions */ autofix: z.ZodDefault; /** Enable incremental scanning */ incrementalScan: z.ZodDefault; /** Enable scanner caching */ scannerCache: z.ZodDefault; /** Enable cross-verification */ crossVerification: z.ZodDefault; /** Enable Sigstore signing */ sigstoreSigning: z.ZodDefault; /** Enable SARIF export */ sarifExport: z.ZodDefault; /** Enable compliance mapping */ complianceMapping: z.ZodDefault; /** Enable OpenTelemetry */ otel: z.ZodDefault; /** Enable plugin system */ plugins: z.ZodDefault; /** Enable red team mode */ redteam: z.ZodDefault; }, "strip", z.ZodTypeAny, { redteam: boolean; autofix: boolean; complianceMapping: boolean; plugins: boolean; multiModel: boolean; costTracking: boolean; incrementalScan: boolean; scannerCache: boolean; crossVerification: boolean; sigstoreSigning: boolean; sarifExport: boolean; otel: boolean; }, { redteam?: boolean | undefined; autofix?: boolean | undefined; complianceMapping?: boolean | undefined; plugins?: boolean | undefined; multiModel?: boolean | undefined; costTracking?: boolean | undefined; incrementalScan?: boolean | undefined; scannerCache?: boolean | undefined; crossVerification?: boolean | undefined; sigstoreSigning?: boolean | undefined; sarifExport?: boolean | undefined; otel?: boolean | undefined; }>>; /** Default model for agents */ defaultModel: z.ZodDefault; /** Default temperature */ defaultTemperature: z.ZodDefault; /** Certification settings */ certification: z.ZodDefault; /** Required agent agreement ratio */ requiredAgreement: z.ZodDefault; /** Maximum findings per agent */ maxFindingsPerAgent: z.ZodDefault; /** Auto-finalize when complete */ autoFinalize: z.ZodDefault; }, "strip", z.ZodTypeAny, { minConfidence: number; requiredAgreement: number; maxFindingsPerAgent: number; autoFinalize: boolean; }, { minConfidence?: number | undefined; requiredAgreement?: number | undefined; maxFindingsPerAgent?: number | undefined; autoFinalize?: boolean | undefined; }>>; /** Cost tracking settings */ cost: z.ZodDefault; /** Warning threshold (percentage of budget) */ warningThreshold: z.ZodDefault; /** Abort on budget exceeded */ abortOnBudget: z.ZodDefault; }, "strip", z.ZodTypeAny, { warningThreshold: number; abortOnBudget: boolean; maxBudget?: number | undefined; }, { maxBudget?: number | undefined; warningThreshold?: number | undefined; abortOnBudget?: boolean | undefined; }>>; /** Plugin settings */ plugins: z.ZodDefault; /** Load plugins from npm */ loadNpm: z.ZodDefault; /** Run plugins in sandbox */ sandbox: z.ZodDefault; /** Plugin-specific configs */ configs: z.ZodDefault>>; }, "strip", z.ZodTypeAny, { configs: Record>; sandbox: boolean; loadLocal: boolean; loadNpm: boolean; }, { configs?: Record> | undefined; sandbox?: boolean | undefined; loadLocal?: boolean | undefined; loadNpm?: boolean | undefined; }>>; }, "strip", z.ZodTypeAny, { version: 1; agents: Record; scanners: Record | undefined; rulesDir?: string | undefined; }>; plugins: { configs: Record>; sandbox: boolean; loadLocal: boolean; loadNpm: boolean; }; cost: { warningThreshold: number; abortOnBudget: boolean; maxBudget?: number | undefined; }; features: { redteam: boolean; autofix: boolean; complianceMapping: boolean; plugins: boolean; multiModel: boolean; costTracking: boolean; incrementalScan: boolean; scannerCache: boolean; crossVerification: boolean; sigstoreSigning: boolean; sarifExport: boolean; otel: boolean; }; defaultModel: string; defaultTemperature: number; certification: { minConfidence: number; requiredAgreement: number; maxFindingsPerAgent: number; autoFinalize: boolean; }; }, { version?: 1 | undefined; agents?: Record | undefined; scanners?: Record | undefined; rulesDir?: string | undefined; }> | undefined; plugins?: { configs?: Record> | undefined; sandbox?: boolean | undefined; loadLocal?: boolean | undefined; loadNpm?: boolean | undefined; } | undefined; cost?: { maxBudget?: number | undefined; warningThreshold?: number | undefined; abortOnBudget?: boolean | undefined; } | undefined; features?: { redteam?: boolean | undefined; autofix?: boolean | undefined; complianceMapping?: boolean | undefined; plugins?: boolean | undefined; multiModel?: boolean | undefined; costTracking?: boolean | undefined; incrementalScan?: boolean | undefined; scannerCache?: boolean | undefined; crossVerification?: boolean | undefined; sigstoreSigning?: boolean | undefined; sarifExport?: boolean | undefined; otel?: boolean | undefined; } | undefined; defaultModel?: string | undefined; defaultTemperature?: number | undefined; certification?: { minConfidence?: number | undefined; requiredAgreement?: number | undefined; maxFindingsPerAgent?: number | undefined; autoFinalize?: boolean | undefined; } | undefined; }>; export type VasperaConfig = z.infer; /** * Default configuration */ export declare const DEFAULT_CONFIG: VasperaConfig; /** * Load configuration from .vaspera/config.yaml */ export declare function loadConfig(projectPath: string): Promise; /** * Clear config cache */ export declare function clearConfigCache(): void; /** * Check if a feature is enabled */ export declare function isFeatureEnabled(config: VasperaConfig, feature: keyof FeatureFlags): boolean; /** * Check if an agent is enabled */ export declare function isAgentEnabled(config: VasperaConfig, agent: string): boolean; /** * Get agent weight */ export declare function getAgentWeight(config: VasperaConfig, agent: string): number; /** * Check if a scanner is enabled */ export declare function isScannerEnabled(config: VasperaConfig, scanner: string): boolean; /** * Get scanner timeout */ export declare function getScannerTimeout(config: VasperaConfig, scanner: string, defaultTimeout?: number): number; /** * Generate sample configuration file */ export declare function generateSampleConfig(): string; /** * Save configuration to file */ export declare function saveConfig(projectPath: string, config: VasperaConfig): Promise; //# sourceMappingURL=flags.d.ts.map