bc-code-intelligence-mcp
Version:
BC Code Intelligence MCP Server - Complete Specialist Bundle with AI-driven expert consultation, seamless handoffs, and context-preserving workflows
156 lines • 5.14 kB
TypeScript
/**
* Roleplay Engine Types
*
* Defines interfaces for personality-driven specialist interactions,
* ensuring consistent character adoption and contextual responses.
*/
import { SpecialistDefinition } from '../services/specialist-loader.js';
import { SpecialistSession, SessionContext } from './session-types.js';
import { AtomicTopic } from './bc-knowledge.js';
/**
* Context for generating specialist responses
*/
export interface RoleplayContext {
session: SpecialistSession;
specialist: SpecialistDefinition;
userMessage: string;
conversationHistory: string[];
requiresIntroduction?: boolean;
relevantTopics?: AtomicTopic[];
codeContext?: {
files: string[];
codeSnippets: string[];
bcObjects: string[];
};
problemType?: string;
urgency?: 'low' | 'medium' | 'high';
complexity?: 'simple' | 'moderate' | 'complex';
}
/**
* Personality traits that drive response generation
*/
export interface PersonalityTraits {
communication_style: string;
expertise_focus: string[];
problem_approach: string;
collaboration_style: string;
characteristic_phrases: string[];
}
/**
* Generated specialist response with metadata
*/
export interface SpecialistResponse {
content: string;
specialist_id: string;
personality_elements: {
greeting_used: boolean;
characteristic_phrases: string[];
expertise_demonstrated: string[];
communication_style_applied: string;
};
topics_referenced: string[];
knowledge_applied: {
topic_id: string;
application_context: string;
}[];
suggested_handoffs?: {
specialist_id: string;
reason: string;
}[];
context_updates?: Partial<SessionContext> & {
methodology_suggested?: boolean;
};
recommendations_added?: string[];
response_type: 'guidance' | 'solution' | 'question' | 'handoff' | 'encouragement' | 'methodology_onboarding' | 'methodology_suggestion' | 'direct_specialist_response';
confidence_level: 'high' | 'medium' | 'low';
}
/**
* Template for specialist response patterns
*/
export interface ResponseTemplate {
trigger_keywords: string[];
specialist_types: string[];
template_pattern: string;
personality_emphasis: string[];
knowledge_domains: string[];
}
/**
* Configuration for roleplay behavior
*/
export interface RoleplayConfig {
personality_strength: 'subtle' | 'moderate' | 'strong';
response_length: 'concise' | 'detailed' | 'adaptive';
knowledge_integration: 'minimal' | 'balanced' | 'comprehensive';
suggest_handoffs: boolean;
suggest_collaborations: boolean;
learn_user_preferences: boolean;
adapt_communication_style: boolean;
}
/**
* Main roleplay engine interface
*/
export interface RoleplayEngine {
/**
* Generate a personality-driven response from a specialist
*/
generateResponse(context: RoleplayContext): Promise<SpecialistResponse>;
/**
* Analyze user message to suggest appropriate specialist
*/
suggestSpecialist(userMessage: string, currentContext?: SessionContext): Promise<{
specialist_id: string;
confidence: number;
reasoning: string;
}[]>;
/**
* Generate a specialist greeting for session start
*/
generateGreeting(specialist: SpecialistDefinition, context?: Partial<SessionContext>): Promise<SpecialistResponse>;
/**
* Generate handoff message when transferring between specialists
*/
generateHandoff(fromSpecialist: SpecialistDefinition, toSpecialist: SpecialistDefinition, context: RoleplayContext): Promise<{
farewell: SpecialistResponse;
introduction: SpecialistResponse;
}>;
/**
* Update configuration
*/
updateConfig(config: Partial<RoleplayConfig>): void;
/**
* Get personality analysis for a specialist
*/
analyzePersonality(specialist: SpecialistDefinition): PersonalityTraits;
}
/**
* Knowledge retrieval interface for context-aware responses
*/
export interface KnowledgeRetriever {
/**
* Find relevant topics based on user message and specialist expertise
*/
findRelevantTopics(userMessage: string, specialistExpertise: string[], limit?: number): Promise<AtomicTopic[]>;
/**
* Find relevant topics within methodology context
*/
findRelevantTopicsInMethodology(userMessage: string, methodologyContext: any, specialistExpertise: string[], limit?: number): Promise<AtomicTopic[]>;
/**
* Get related topics for deeper context
*/
getRelatedTopics(topicId: string, limit?: number): Promise<AtomicTopic[]>;
/**
* Search for solutions in specialist's domain
*/
searchSolutions(problemDescription: string, domains: string[], limit?: number): Promise<AtomicTopic[]>;
}
/**
* Response quality metrics for evaluation and improvement
*/
export interface ResponseMetrics {
personality_score: number;
relevance_score: number;
knowledge_score: number;
helpfulness_score: number;
consistency_score: number;
}
//# sourceMappingURL=roleplay-types.d.ts.map