UNPKG

@simonecoelhosfo/optimizely-mcp-server

Version:

Optimizely MCP Server for AI assistants with integrated CLI tools

181 lines 10.8 kB
/** * System Template Registry for Template Orchestration * * Maps system_template_id values used in orchestration templates to the actual * MODEL_FRIENDLY_TEMPLATES keys. This provides the bridge between orchestration * templates and the MCP tools' expected template structures. * * @module SystemTemplateRegistry */ // Comprehensive System Template Registry // Maps system_template_id values to MODEL_FRIENDLY_TEMPLATES keys export const SYSTEM_TEMPLATE_REGISTRY = { // ===== FEATURE EXPERIMENTATION ENTITIES ===== // Flag Templates "flag_create": { templateKey: "flag", operation: "create", platform: "feature" }, "flag_v1": { templateKey: "flag", operation: "create", platform: "feature" }, "flag_update": { templateKey: "flag_simple_update", operation: "update", platform: "feature" }, "flag_simple_update": { templateKey: "flag_simple_update", operation: "update", platform: "feature" }, "flag_simple_update_v1": { templateKey: "flag_simple_update", operation: "update", platform: "feature" }, "flag_variation_addition": { templateKey: "flag_variation_addition", operation: "update", platform: "feature" }, "flag_variation_addition_v1": { templateKey: "flag_variation_addition", operation: "update", platform: "feature" }, "flag_remove_rule": { templateKey: "flag_remove_rule", operation: "update", platform: "feature" }, "flag_remove_rule_v1": { templateKey: "flag_remove_rule", operation: "update", platform: "feature" }, // Rule & Ruleset Templates "rule_create": { templateKey: "rule", operation: "create", platform: "feature" }, "rule_basic_v1": { templateKey: "rule", operation: "create", platform: "feature" }, "rule_advanced_v1": { templateKey: "rule_advanced", operation: "create", platform: "feature" }, "ruleset_create": { templateKey: "ruleset", operation: "create", platform: "feature" }, "ruleset_basic_v1": { templateKey: "ruleset", operation: "create", platform: "feature" }, "ruleset_advanced_v1": { templateKey: "ruleset_advanced", operation: "create", platform: "feature" }, "ruleset_update": { templateKey: "ruleset", operation: "update", platform: "feature" }, // Feature & Variable Templates "feature_create": { templateKey: "feature", operation: "create", platform: "feature" }, "feature_v1": { templateKey: "feature", operation: "create", platform: "feature" }, "variable_create": { templateKey: "variable", operation: "create", platform: "feature" }, "variable_v1": { templateKey: "variable", operation: "create", platform: "feature" }, "variable_definition_create": { templateKey: "variable_definition", operation: "create", platform: "feature" }, "variable_definition_v1": { templateKey: "variable_definition", operation: "create", platform: "feature" }, // ===== WEB EXPERIMENTATION ENTITIES ===== // Page Templates "page_create": { templateKey: "page", operation: "create", platform: "web" }, "page_basic_v1": { templateKey: "page", operation: "create", platform: "web" }, "page_advanced_v1": { templateKey: "page_advanced", operation: "create", platform: "web" }, "page_update": { templateKey: "page", operation: "update", platform: "web" }, // Campaign Templates "campaign_create": { templateKey: "campaign", operation: "create", platform: "web" }, "campaign_v1": { templateKey: "campaign", operation: "create", platform: "web" }, "campaign_update": { templateKey: "campaign", operation: "update", platform: "web" }, // Experiment Templates (Web) "experiment_create": { templateKey: "experiment", operation: "create", platform: "web" }, "experiment_web_v1": { templateKey: "experiment", operation: "create", platform: "web" }, "experiment_update": { templateKey: "experiment", operation: "update", platform: "web" }, "personalization_experiment_create": { templateKey: "personalization_experiment", operation: "create", platform: "web" }, "personalization_experiment_v1": { templateKey: "personalization_experiment", operation: "create", platform: "web" }, // Extension Templates "extension_create": { templateKey: "extension", operation: "create", platform: "web" }, "extension_v1": { templateKey: "extension", operation: "create", platform: "web" }, "extension_update": { templateKey: "extension", operation: "update", platform: "web" }, // List Attribute Templates (Web specific) "list_attribute_create": { templateKey: "list_attribute", operation: "create", platform: "web" }, "list_attribute_v1": { templateKey: "list_attribute", operation: "create", platform: "web" }, // ===== SHARED ENTITIES (BOTH PLATFORMS) ===== // Event Templates "event_create": { templateKey: "event", operation: "create", platform: "both" }, "event_v1": { templateKey: "event", operation: "create", platform: "both" }, "event_update": { templateKey: "event", operation: "update", platform: "both" }, // Audience Templates "audience_create": { templateKey: "audience", operation: "create", platform: "both" }, "audience_v1": { templateKey: "audience", operation: "create", platform: "both" }, "audience_update": { templateKey: "audience", operation: "update", platform: "both" }, // Attribute Templates "attribute_create": { templateKey: "attribute", operation: "create", platform: "both" }, "attribute_v1": { templateKey: "attribute", operation: "create", platform: "both" }, "attribute_update": { templateKey: "attribute", operation: "update", platform: "both" }, // Project Templates "project_create": { templateKey: "project", operation: "create", platform: "both" }, "project_v1": { templateKey: "project", operation: "create", platform: "both" }, "project_update": { templateKey: "project", operation: "update", platform: "both" }, // Environment Templates "environment_create": { templateKey: "environment", operation: "create", platform: "both" }, "environment_v1": { templateKey: "environment", operation: "create", platform: "both" }, "environment_update": { templateKey: "environment", operation: "update", platform: "both" }, // Webhook Templates "webhook_create": { templateKey: "webhook", operation: "create", platform: "both" }, "webhook_v1": { templateKey: "webhook", operation: "create", platform: "both" }, "webhook_update": { templateKey: "webhook", operation: "update", platform: "both" }, // Group Templates (Mutual Exclusion) "group_create": { templateKey: "group", operation: "create", platform: "both" }, "group_v1": { templateKey: "group", operation: "create", platform: "both" }, "group_update": { templateKey: "group", operation: "update", platform: "both" }, // Variation Templates "variation_create": { templateKey: "variation", operation: "create", platform: "both" }, "variation_v1": { templateKey: "variation", operation: "create", platform: "both" }, "variation_update": { templateKey: "variation", operation: "update", platform: "both" }, // Segment Templates "segment_create": { templateKey: "segment", operation: "create", platform: "both" }, "segment_v1": { templateKey: "segment", operation: "create", platform: "both" }, // Results Templates (Read-only) "results_get": { templateKey: "results", operation: "get", platform: "web" }, "results_v1": { templateKey: "results", operation: "get", platform: "web" }, // Collaborator Templates (Read-only) "collaborator_get": { templateKey: "collaborator", operation: "get", platform: "both" }, "collaborator_v1": { templateKey: "collaborator", operation: "get", platform: "both" }, // ===== CONCEPTUAL/WORKFLOW TEMPLATES ===== // These don't create entities but provide guidance "ruleset_concepts": { templateKey: "ruleset_concepts", operation: "get", platform: "feature" }, "ruleset_concepts_v1": { templateKey: "ruleset_concepts", operation: "get", platform: "feature" }, "traffic_allocation_concepts": { templateKey: "traffic_allocation_concepts", operation: "get", platform: "both" }, "traffic_allocation_concepts_v1": { templateKey: "traffic_allocation_concepts", operation: "get", platform: "both" }, }; /** * Helper function to validate platform compatibility * @param systemTemplateId The system template ID to check * @param projectPlatform The platform of the current project * @returns True if the template is compatible with the platform */ export function isTemplateCompatibleWithPlatform(systemTemplateId, projectPlatform) { const template = SYSTEM_TEMPLATE_REGISTRY[systemTemplateId]; if (!template) return false; return template.platform === 'both' || template.platform === projectPlatform; } /** * Helper function to get all templates for a specific platform * @param platform The platform to filter templates for * @returns Array of system template IDs compatible with the platform */ export function getTemplatesForPlatform(platform) { return Object.entries(SYSTEM_TEMPLATE_REGISTRY) .filter(([_, template]) => platform === 'both' || template.platform === 'both' || template.platform === platform) .map(([id]) => id); } /** * Entity type mappings for platform validation * Maps entity types to their compatible platforms */ export const ENTITY_PLATFORM_COMPATIBILITY = { // Feature Experimentation only flag: ['feature'], rule: ['feature'], ruleset: ['feature'], feature: ['feature'], variable: ['feature'], variable_definition: ['feature'], // Web Experimentation only page: ['web'], campaign: ['web'], experiment: ['web'], // Note: Web experiments only; Feature uses rulesets personalization_experiment: ['web'], extension: ['web'], list_attribute: ['web'], results: ['web'], // Both platforms event: ['web', 'feature'], audience: ['web', 'feature'], attribute: ['web', 'feature'], project: ['web', 'feature'], environment: ['web', 'feature'], webhook: ['web', 'feature'], group: ['web', 'feature'], variation: ['web', 'feature'], segment: ['web', 'feature'], collaborator: ['web', 'feature'], }; /** * Get the ModelFriendlyTemplate key for a system template ID * @param systemTemplateId The system template ID * @returns The corresponding ModelFriendlyTemplate key or undefined */ export function getTemplateKey(systemTemplateId) { return SYSTEM_TEMPLATE_REGISTRY[systemTemplateId]?.templateKey; } /** * Get template info for a system template ID * @param systemTemplateId The system template ID * @returns The template information or undefined */ export function getTemplateInfo(systemTemplateId) { return SYSTEM_TEMPLATE_REGISTRY[systemTemplateId]; } //# sourceMappingURL=SystemTemplateRegistry.js.map