UNPKG

@simonecoelhosfo/optimizely-mcp-server

Version:

Optimizely MCP Server for AI assistants with integrated CLI tools

81 lines 2.82 kB
/** * COMPREHENSIVE AUDIENCE REFERENCE RESOLVER * * This class provides the MOST ROBUST solution for handling audience references * in ANY format across the entire pipeline. It prevents format mismatch errors * by normalizing ALL possible audience reference formats to the correct API format. * * DESIGN PRINCIPLES: * 1. Accept ANY reasonable audience reference format * 2. Normalize to the correct API format * 3. Provide clear logging and error messages * 4. Never fail silently - always log what transformations were made * 5. Defensive programming - handle edge cases gracefully */ export interface AudienceReference { id?: string | number; name?: string; key?: string; audience_id?: string | number; } export interface AudienceRefObject { ref?: AudienceReference; auto_create?: boolean; template?: any; } export interface ResolvedAudienceConditions { audience_conditions: any[]; transformations_applied: string[]; source_format: string; created?: boolean; createdAudience?: any; } export declare class AudienceReferenceResolver { private logger; private entityRouter; constructor(entityRouter?: any); /** * MAIN METHOD: Resolve ANY audience reference format to API format * * Handles ALL possible input formats: * - audience: "Target Users" * - audience: { ref: { name: "Target Users" } } * - audience: { ref: { id: 123 } } * - audiences: { ref: { name: "Target Users" } } * - audience_conditions: ["or", { "audience_id": 123 }] * - Direct audience ID/name strings */ resolveAudienceReference(input: any, projectId: string): Promise<ResolvedAudienceConditions | null>; /** * STEP 1: Normalize ALL possible input formats to a standard reference object */ private normalizeInputFormat; /** * STEP 2: Resolve reference to actual audience entity */ private resolveReference; /** * STEP 3: Convert resolved audience to API format */ private convertToAPIFormat; /** * STEP 4: Log all transformations for debugging */ private logTransformations; /** * UTILITY: Extract audience references from ab_test object */ static extractAudienceFromABTest(abTestData: any): any; /** * UTILITY: Apply resolved audience conditions to ab_test object * ENHANCED: Process multiple audiences before deleting the field */ static applyAudienceConditions(abTestData: any, audienceConditions: any[]): void; /** * Create a new audience from template specification * This handles the auto_create directive for inline audience definitions */ private createAudienceFromTemplate; } export default AudienceReferenceResolver; //# sourceMappingURL=AudienceReferenceResolver.d.ts.map