bc-code-intelligence-mcp
Version:
BC Code Intelligence MCP Server - Complete Specialist Bundle with AI-driven expert consultation, seamless handoffs, and context-preserving workflows
127 lines • 4.41 kB
TypeScript
/**
* Session Management Types for BC Code Intelligence Specialists
*
* Provides interfaces for persistent, contextual conversations with specialist personas.
* Supports in-memory sessions by default with configurable persistence through layer system.
*/
export interface SessionMessage {
id: string;
timestamp: Date;
type: 'user' | 'specialist';
specialistId?: string;
content: string;
metadata?: {
files?: string[];
codeSnippets?: string[];
topics?: string[];
};
}
export interface SessionContext {
problem?: string;
codebaseContext?: {
files: string[];
objects: string[];
project?: string;
};
methodology_context?: {
methodology_id: string;
methodology_title: string;
current_phase: string;
phase_progress: Record<string, any>;
confirmed_by_user: boolean;
suggested_at: Date;
};
solutions: string[];
recommendations: string[];
nextSteps: string[];
userPreferences: {
communicationStyle?: 'detailed' | 'concise' | 'conversational';
expertiseLevel?: 'beginner' | 'intermediate' | 'expert';
preferredTopics?: string[];
workingStyle?: string;
};
}
export interface SpecialistSession {
sessionId: string;
specialistId: string;
userId: string;
startTime: Date;
lastActivity: Date;
status: 'active' | 'paused' | 'completed' | 'transferred';
messages: SessionMessage[];
messageCount: number;
context: SessionContext;
methodology_context?: {
methodology_id: string;
methodology_title: string;
current_phase: string;
phase_progress: Record<string, any>;
confirmed_by_user: boolean;
suggested_at: Date;
};
transferredFrom?: string;
transferredTo?: string;
tags?: string[];
}
export interface SessionSummary {
sessionId: string;
specialistId: string;
startTime: Date;
lastActivity: Date;
status: SpecialistSession['status'];
messageCount: number;
primaryTopics: string[];
keyInsights: string[];
}
export interface SessionStorageConfig {
type: 'memory' | 'file' | 'database' | 'mcp';
config?: {
directory?: string;
filename?: string;
connectionString?: string;
tableName?: string;
mcpServer?: string;
mcpTools?: string[];
};
retention?: {
maxAge?: number;
maxSessions?: number;
autoCleanup?: boolean;
};
privacy?: {
includeMessages?: boolean;
includeCode?: boolean;
includeFiles?: boolean;
anonymizeContent?: boolean;
};
}
export interface SessionStorage {
createSession(session: SpecialistSession): Promise<void>;
getSession(sessionId: string): Promise<SpecialistSession | null>;
updateSession(session: SpecialistSession): Promise<void>;
deleteSession(sessionId: string): Promise<void>;
getUserSessions(userId: string): Promise<SessionSummary[]>;
getActiveSessions(userId: string): Promise<SessionSummary[]>;
getSpecialistSessions(specialistId: string): Promise<SessionSummary[]>;
cleanupExpiredSessions(): Promise<number>;
getUserSessionCount(userId: string): Promise<number>;
}
export interface SessionManager {
startSession(specialistId: string, userId: string, initialMessage?: string): Promise<SpecialistSession>;
getSession(sessionId: string): Promise<SpecialistSession | null>;
continueSession(sessionId: string, message: string): Promise<SpecialistSession>;
transferSession(sessionId: string, toSpecialistId: string): Promise<SpecialistSession>;
endSession(sessionId: string): Promise<void>;
listUserSessions(userId: string): Promise<SessionSummary[]>;
listActiveSessions(userId: string): Promise<SessionSummary[]>;
addMessage(sessionId: string, message: SessionMessage): Promise<void>;
updateContext(sessionId: string, context: Partial<SessionContext>): Promise<void>;
cleanupSessions(): Promise<number>;
}
export interface SessionEvents {
sessionStarted: (session: SpecialistSession) => void;
sessionEnded: (sessionId: string) => void;
sessionTransferred: (sessionId: string, fromSpecialist: string, toSpecialist: string) => void;
messageAdded: (sessionId: string, message: SessionMessage) => void;
}
//# sourceMappingURL=session-types.d.ts.map