@simonecoelhosfo/optimizely-mcp-server
Version:
Optimizely MCP Server for AI assistants with integrated CLI tools
81 lines • 2.82 kB
TypeScript
/**
* 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