UNPKG

@simonecoelhosfo/optimizely-mcp-server

Version:

Optimizely MCP Server for AI assistants with integrated CLI tools

156 lines 5.11 kB
/** * Update Template Processor * * Processes UPDATE templates by merging template data with existing entity data, * validating update compatibility, and preparing processed templates for orchestration. * * Key Responsibilities: * - Merge template data with existing entity state * - Validate update operations won't break existing configurations * - Process template placeholders with context-aware resolution * - Prepare processed templates for EntityOrchestrator UPDATE methods * * Template Placeholder Processing: * - {EXISTING: field} → Extract from existing entity * - {CURRENT: field} → Show current value for context * - {FILL: field} → Validate required fields are provided * - {OPTIONAL: field} → Handle optional fields gracefully * - {REBALANCE: weights} → Auto-calculate traffic distributions * * @author Optimizely MCP Server * @version 1.0.0 */ import { UpdateTemplate } from './UpdateEntityTemplates.js'; export interface ProcessedUpdateTemplate { originalTemplate: UpdateTemplate; processedData: any; existingEntityData: any; mergeStrategy: 'replace' | 'merge' | 'additive' | 'rebalance'; validationResults: ValidationResult; contextualData: { currentValues: Record<string, any>; extractedReferences: Record<string, any>; autoCalculations: Record<string, any>; }; orchestrationHints: { requiredOperations: string[]; affectedEntities: string[]; createdEntities: string[]; riskLevel: 'low' | 'medium' | 'high'; }; } export interface ValidationResult { isValid: boolean; errors: string[]; warnings: string[]; requiredFields: string[]; conflictingFields: string[]; safetyChecks: { trafficTotals?: number; breakingChanges?: string[]; dependencyIssues?: string[]; }; } export interface UpdateTemplateContext { projectId: string; platform: 'feature' | 'web' | 'auto'; environment?: string; existingEntity: any; relatedEntities?: Record<string, any[]>; } export declare class UpdateTemplateProcessor { private logger; private validator; private payloadParser; /** * Process an UPDATE template with existing entity data */ processUpdateTemplate(template: UpdateTemplate, templateData: any, context: UpdateTemplateContext): Promise<ProcessedUpdateTemplate>; /** * CRITICAL: Apply intelligent corrections and parsing to processed data * This ensures ALL UPDATE template data goes through our auto-correction pipeline */ private applyIntelligentCorrections; /** * Apply weight corrections (percentage to basis points) */ private applyWeightCorrections; /** * Apply audience_conditions formatting (object to JSON string) */ private applyAudienceConditionsFormatting; /** * Apply Feature Experimentation specific corrections */ private applyFeatureExperimentationCorrections; /** * Apply Web Experimentation specific corrections */ private applyWebExperimentationCorrections; /** * Extract contextual data from existing entity and related entities */ private extractContextualData; /** * Process template placeholders with context-aware resolution */ private processTemplatePlaceholders; /** * Resolve individual template placeholders */ private resolvePlaceholder; /** * Get value from template data using dot notation */ private getTemplateDataValue; /** * Calculate traffic rebalancing for variations */ private calculateTrafficRebalancing; /** * Validate update template for compatibility and safety */ private validateUpdateTemplate; /** * Validate required fields using OpenAPI schema */ private validateRequiredFields; /** * Validate field type matches schema expectation */ private validateFieldType; /** * Validate compatibility with existing entity */ private validateCompatibility; /** * Perform safety checks for destructive operations */ private performSafetyChecks; /** * Calculate total traffic allocation */ private calculateTrafficTotal; /** * Generate orchestration hints for EntityOrchestrator */ private generateOrchestrationHints; /** * Merge template with existing entity data based on update type */ mergeTemplateWithExisting(processedTemplate: any, existingEntity: any, updateType: 'replace' | 'merge' | 'additive' | 'rebalance'): Promise<any>; /** * Perform additive operations (add new items to arrays) */ private performAdditiveOperation; /** * Perform rebalance operations (recalculate weights) */ private performRebalanceOperation; /** * Remove null, undefined, and empty fields from processed data * This ensures PATCH operations only include fields that are actually being updated */ private removeNullFields; } //# sourceMappingURL=UpdateTemplateProcessor.d.ts.map