UNPKG

bc-code-intelligence-mcp

Version:

BC Code Intelligence MCP Server - Complete Specialist Bundle with AI-driven expert consultation, seamless handoffs, and context-preserving workflows

98 lines 3.17 kB
/** * Specialist Discovery Service * * Analyzes user queries and suggests relevant specialists based on keywords, * expertise domains, and conversation context. */ import { SpecialistDefinition } from './specialist-loader.js'; import { MultiContentLayerService } from './multi-content-layer-service.js'; export interface SpecialistSuggestion { specialist: SpecialistDefinition; confidence: number; reasons: string[]; keywords_matched: string[]; domain_match?: string; match_type?: 'name_match' | 'content_match' | 'keyword_match'; } export interface DiscoveryContext { query?: string; current_domain?: string; conversation_history?: string[]; user_preferences?: { expertise_level?: 'beginner' | 'intermediate' | 'expert'; communication_style?: 'detailed' | 'concise' | 'conversational'; }; } export declare class SpecialistDiscoveryService { private layerService; private specialists; private keywordMappings; private initialized; constructor(layerService: MultiContentLayerService); /** * Initialize the discovery service with specialist data */ initialize(): Promise<void>; /** * Suggest specialists for a given query and context */ suggestSpecialists(context: DiscoveryContext, maxSuggestions?: number): Promise<SpecialistSuggestion[]>; /** * Get the best single specialist suggestion */ getBestSpecialist(context: DiscoveryContext): Promise<SpecialistSuggestion | null>; /** * Get specialists by domain */ getSpecialistsByDomain(domain: string): Promise<SpecialistDefinition[]>; /** * Get all available specialists grouped by their primary domains */ getSpecialistsByCategory(): Promise<Record<string, SpecialistDefinition[]>>; /** * Get a specific specialist by ID */ getSpecialistById(specialistId: string): Promise<SpecialistDefinition | null>; /** * Find specialist by partial/fuzzy name matching * Handles cases like "Sam" -> "sam-coder", "Dean" -> "dean-debug", etc. */ findSpecialistByName(partialName: string): Promise<SpecialistDefinition | null>; /** * Analyze how well a specialist matches the given context */ private analyzeSpecialistMatch; /** * Build keyword mappings for efficient matching */ private buildKeywordMappings; /** * Get default specialists for when no query is provided */ private getDefaultSpecialists; /** * Ensure the service is initialized */ private ensureInitialized; /** * Format specialist suggestions for display */ formatSuggestions(suggestions: SpecialistSuggestion[]): string; /** * Generate an example query for a specialist */ private generateExampleQuery; /** * Extract the specialist name from a query string */ private extractNameFromQuery; /** * Get all available specialists with basic info */ getAllSpecialistsInfo(): Promise<Array<{ id: string; title: string; role: string; }>>; } //# sourceMappingURL=specialist-discovery.d.ts.map