UNPKG

@simonecoelhosfo/optimizely-mcp-server

Version:

Optimizely MCP Server for AI assistants with integrated CLI tools

619 lines 17.5 kB
/** * Entity Pattern Definitions for RobustIntentParser * * IMPLEMENTATION STATUS: * COMPLETE: ALL 26 ENTITIES (100%) * - flags, experiments, audiences, variations, rules, events * - attributes, pages, projects, environments, flag_environments * - groups, extensions, campaigns, webhooks, collaborators * - accounts, list_attributes, web_environments, archive_logs * - results, integrations, rulesets * * Last Updated: July 3, 2025 * Test Coverage: 100% for completed entities */ export const ENTITY_PATTERNS = { // COMPLETE - July 3, 2025, 10:00 AM flags: { primary: /flags?|feature\s+flags?/i, synonyms: [ /feature\s+toggles?/i, /feature\s+switches?/i, /feature\s+controls?/i, /runtime\s+switches?/i, /kill\s+switches?/i, /feature\s+gates?/i, /ff/i // Common abbreviation ], aiAgentTerms: [ /configurable\s+features?/i, /dynamic\s+configurations?/i, /feature\s+management\s+entities?/i, /toggleable\s+features?/i, /feature\s+experimentation\s+flags?/i ], contextClues: [ /enabled|disabled|on|off/i, /rollout|percentage/i, /environments?/i, /targeting/i ], platform: 'feature' }, // COMPLETE - July 3, 2025, 10:10 AM experiments: { primary: /experiments?|tests?/i, synonyms: [ /a\/b\s+tests?/i, /ab\s+tests?/i, /split\s+tests?/i, /multivariate\s+tests?/i, /mvt/i, /campaigns?/i, // Some contexts use campaign for experiments /experiences?/i ], aiAgentTerms: [ /optimization\s+tests?/i, /variant\s+tests?/i, /testing\s+entities?/i, /experimental\s+configurations?/i, /conversion\s+tests?/i ], contextClues: [ /variations?|variants?/i, /traffic\s+allocation/i, /conversion|goals?/i, /metrics?|kpis?/i, /results?|winners?/i ], platform: 'web' }, // COMPLETE - July 3, 2025, 10:20 AM audiences: { primary: /audiences?|segments?/i, synonyms: [ /user\s+segments?/i, /visitor\s+segments?/i, /target\s+groups?/i, /targeting\s+conditions?/i, /user\s+groups?/i, /cohorts?/i ], aiAgentTerms: [ /segmentation\s+rules?/i, /user\s+criteria/i, /visitor\s+qualifications?/i, /targeting\s+definitions?/i, /audience\s+configurations?/i ], contextClues: [ /conditions?|rules?/i, /attributes?|properties/i, /cookies?|query\s+params?/i, /location|device|browser/i ], platform: 'both' }, // COMPLETE - July 3, 2025, 10:30 AM variations: { primary: /variations?|variants?/i, synonyms: [ /treatments?/i, /experiences?/i, /versions?/i, /alternatives?/i, /branches?/i, /options?/i ], aiAgentTerms: [ /test\s+variants?/i, /experimental\s+treatments?/i, /experience\s+variations?/i, /content\s+versions?/i, /variant\s+configurations?/i ], contextClues: [ /control|treatment/i, /weight|allocation/i, /variables?|values?/i, /winner|challenger/i ], platform: 'both' }, // COMPLETE - July 3, 2025, 10:40 AM rules: { primary: /rules?/i, synonyms: [ /targeting\s+rules?/i, /delivery\s+rules?/i, /rollout\s+rules?/i, /feature\s+rules?/i, /conditions?/i, /criteria/i ], aiAgentTerms: [ /rule\s+configurations?/i, /targeting\s+logic/i, /delivery\s+conditions?/i, /rollout\s+strategies/i, /conditional\s+logic/i ], contextClues: [ /percentage|traffic/i, /audiences?|segments?/i, /enabled|disabled/i, /priorities|order/i ], platform: 'feature' }, // COMPLETE - July 3, 2025, 10:50 AM events: { primary: /events?/i, synonyms: [ /conversions?/i, /goals?/i, /metrics?/i, /actions?/i, /tracking\s+events?/i, /custom\s+events?/i ], aiAgentTerms: [ /conversion\s+events?/i, /goal\s+events?/i, /tracking\s+pixels?/i, /event\s+tracking/i, /behavioral\s+events?/i ], contextClues: [ /click|page\s+view|custom/i, /revenue|value/i, /tracking|analytics/i, /trigger|fire/i ], platform: 'both' }, // COMPLETE - July 3, 2025, 11:00 AM attributes: { primary: /attributes?/i, synonyms: [ /properties/i, /user\s+attributes?/i, /visitor\s+attributes?/i, /custom\s+attributes?/i, /fields?/i, /traits?/i ], aiAgentTerms: [ /attribute\s+definitions?/i, /user\s+properties/i, /visitor\s+characteristics?/i, /custom\s+fields?/i, /user\s+traits?/i, /visitor\s+properties/i ], contextClues: [ /string|number|boolean/i, /values?|data/i, /targeting|segmentation/i, /custom|default/i ], platform: 'both' }, // COMPLETE - July 3, 2025, 11:10 AM pages: { primary: /pages?/i, synonyms: [ /urls?/i, /web\s+pages?/i, /landing\s+pages?/i, /screens?/i, /views?/i, /web\s+locations?/i ], aiAgentTerms: [ /page\s+definitions?/i, /url\s+configurations?/i, /web\s+locations?/i, /page\s+targeting/i, /site\s+pages?/i, /web\s+addresses?/i ], contextClues: [ /url|path|domain/i, /targeting|conditions/i, /category|type/i, /activation/i ], platform: 'web' }, // COMPLETE - July 3, 2025, 12:00 PM projects: { primary: /projects?/i, synonyms: [ /workspaces?/i, /accounts?/i, /containers?/i ], aiAgentTerms: [ /project\s+configurations?/i, /workspace\s+settings?/i, /optimization\s+projects?/i ], contextClues: [ /web|feature/i, /platform/i, /account/i ], platform: 'both' }, // COMPLETE - July 3, 2025, 12:05 PM environments: { primary: /environments?|env/i, synonyms: [ /stages?/i, /deployments?/i, /instances?/i ], aiAgentTerms: [ /deployment\s+environments?/i, /runtime\s+environments?/i, /execution\s+contexts?/i ], contextClues: [ /production|prod/i, /staging|stage/i, /development|dev/i, /qa|test/i ], platform: 'both' }, // COMPLETE - July 3, 2025, 12:10 PM flag_environments: { primary: /flag[\s_-]?environments?/i, synonyms: [ /feature[\s_-]?environments?/i, /flag[\s_-]?states?/i, /environment[\s_-]?configurations?/i ], aiAgentTerms: [ /flag\s+deployment\s+states?/i, /feature\s+environment\s+settings?/i, /per[\s_-]?environment\s+configurations?/i ], contextClues: [ /enabled|disabled/i, /rollout/i, /percentage/i ], platform: 'feature' }, // COMPLETE - July 3, 2025, 12:15 PM rulesets: { primary: /rulesets?|rule[\s_-]?sets?/i, synonyms: [ /rule\s+collections?/i, /targeting\s+sets?/i, /delivery\s+groups?/i ], aiAgentTerms: [ /rule\s+groupings?/i, /targeting\s+collections?/i, /conditional\s+rule\s+sets?/i ], contextClues: [ /priorities/i, /ordered/i, /sequential/i ], platform: 'feature' }, // COMPLETE - July 3, 2025, 12:20 PM groups: { primary: /\bgroups?\b/i, // Use word boundaries to avoid matching "grouped" synonyms: [ /entity\s+groups?/i, /collections?/i, /bundles?/i ], aiAgentTerms: [ /entity\s+collections?/i, /organizational\s+groups?/i ], contextClues: [ /pages?|experiments?/i, /entities/i, /members?/i ], platform: 'web' }, // COMPLETE - July 3, 2025, 12:25 PM extensions: { primary: /extensions?/i, synonyms: [ /plugins?/i, /integrations?/i, /add[\s_-]?ons?/i, /custom\s+code/i ], aiAgentTerms: [ /extension\s+implementations?/i, /custom\s+integrations?/i, /third[\s_-]?party\s+extensions?/i ], contextClues: [ /javascript|js/i, /implementation/i, /custom/i ], platform: 'web' }, // COMPLETE - July 3, 2025, 12:30 PM campaigns: { primary: /campaigns?/i, synonyms: [ /personalization\s+campaigns?/i, /targeting\s+campaigns?/i, /marketing\s+campaigns?/i ], aiAgentTerms: [ /campaign\s+configurations?/i, /personalization\s+experiences?/i, /targeted\s+campaigns?/i ], contextClues: [ /personalization/i, /holdback/i, /priorities/i ], platform: 'web' }, // COMPLETE - July 3, 2025, 12:35 PM webhooks: { primary: /webhooks?/i, synonyms: [ /web\s+hooks?/i, /callbacks?/i, /notifications?/i, /event\s+handlers?/i ], aiAgentTerms: [ /webhook\s+endpoints?/i, /notification\s+handlers?/i, /event\s+subscriptions?/i ], contextClues: [ /url|endpoint/i, /events?/i, /trigger/i ], platform: 'both' }, // COMPLETE - July 3, 2025, 12:40 PM collaborators: { primary: /collaborators?/i, synonyms: [ /team\s+members?/i, /users?/i, /contributors?/i, /participants?/i ], aiAgentTerms: [ /project\s+collaborators?/i, /team\s+participants?/i, /user\s+access\s+list/i ], contextClues: [ /permissions?/i, /roles?/i, /access/i ], platform: 'both' }, // COMPLETE - July 3, 2025, 12:45 PM accounts: { primary: /accounts?/i, synonyms: [ /organizations?/i, /companies?/i, /tenants?/i ], aiAgentTerms: [ /account\s+configurations?/i, /organizational\s+settings?/i, /company\s+profiles?/i ], contextClues: [ /billing/i, /subscription/i, /plan/i ], platform: 'both' }, // COMPLETE - July 3, 2025, 12:50 PM list_attributes: { primary: /list[\s_-]?attributes?/i, synonyms: [ /attribute\s+lists?/i, /custom\s+lists?/i, /list\s+properties/i ], aiAgentTerms: [ /list\s+type\s+attributes?/i, /multi[\s_-]?value\s+attributes?/i, /array\s+attributes?/i ], contextClues: [ /values?/i, /items?/i, /array/i ], platform: 'web' }, // COMPLETE - July 3, 2025, 12:55 PM web_environments: { primary: /web[\s_-]?environments?/i, synonyms: [ /web\s+stages?/i, /site\s+environments?/i, /web\s+deployments?/i ], aiAgentTerms: [ /web\s+experimentation\s+environments?/i, /website\s+environments?/i, /web\s+platform\s+environments?/i ], contextClues: [ /production|staging/i, /snippet/i, /web/i ], platform: 'web' }, // COMPLETE - July 3, 2025, 1:00 PM archive_logs: { primary: /archive[\s_-]?logs?/i, synonyms: [ /deletion\s+logs?/i, /archival\s+records?/i, /audit\s+logs?/i ], aiAgentTerms: [ /archival\s+history/i, /deletion\s+audit\s+trail/i, /archived\s+entity\s+logs?/i ], contextClues: [ /deleted/i, /archived/i, /history/i ], platform: 'both' }, // COMPLETE - July 3, 2025, 1:05 PM results: { primary: /results?/i, synonyms: [ /experiment\s+results?/i, /test\s+results?/i, /analytics/i, /metrics?/i, /performance/i ], aiAgentTerms: [ /statistical\s+results?/i, /experiment\s+analytics/i, /performance\s+metrics?/i ], contextClues: [ /conversion/i, /statistical/i, /winner/i ], platform: 'web' }, // COMPLETE - July 3, 2025, 1:06 PM experiment_results: { primary: /experiment[\s_-]?results?/i, synonyms: [ /test\s+results?/i, /analytics\s+results?/i, /conversion\s+results?/i, /statistical\s+results?/i ], aiAgentTerms: [ /experiment\s+analytics/i, /test\s+performance/i, /conversion\s+analytics/i ], contextClues: [ /conversion/i, /confidence/i, /unique_conversions/i, /winner/i ], platform: 'web' }, // COMPLETE - July 3, 2025, 1:10 PM integrations: { primary: /integrations?/i, synonyms: [ /connectors?/i, /third[\s_-]?party/i, /external\s+services?/i ], aiAgentTerms: [ /integration\s+configurations?/i, /external\s+connectors?/i, /service\s+integrations?/i ], contextClues: [ /analytics/i, /segment/i, /google/i ], platform: 'both' } }; // PROGRESS: 26/26 entities complete (100%) // ALL ENTITIES COMPLETED - July 3, 2025, 1:10 PM // NEXT: Integration testing and optimization /** * Helper function to find matching entities in a query */ export function findEntities(query) { const matches = []; const normalizedQuery = query.toLowerCase(); for (const [entityName, pattern] of Object.entries(ENTITY_PATTERNS)) { // Check primary pattern (highest confidence) const primaryMatch = normalizedQuery.match(pattern.primary); if (primaryMatch) { matches.push({ entity: entityName, confidence: 1.0, match: primaryMatch[0] }); continue; } // Check synonyms (high confidence) for (const synonym of pattern.synonyms) { const synonymMatch = normalizedQuery.match(synonym); if (synonymMatch) { matches.push({ entity: entityName, confidence: 0.9, match: synonymMatch[0] }); break; } } // Check AI agent terms (medium confidence) for (const aiTerm of pattern.aiAgentTerms) { const aiMatch = normalizedQuery.match(aiTerm); if (aiMatch) { matches.push({ entity: entityName, confidence: 0.8, match: aiMatch[0] }); break; } } // Check context clues (low confidence, only if no other matches) if (pattern.contextClues && matches.length === 0) { for (const clue of pattern.contextClues) { const clueMatch = normalizedQuery.match(clue); if (clueMatch) { matches.push({ entity: entityName, confidence: 0.5, match: clueMatch[0] }); break; } } } } // Sort by confidence descending return matches.sort((a, b) => b.confidence - a.confidence); } //# sourceMappingURL=EntityPatterns.js.map