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
TypeScript
/**
* 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