@the_cfdude/productboard-mcp
Version:
Model Context Protocol server for Productboard REST API with dynamic tool loading
152 lines (151 loc) • 3.79 kB
TypeScript
/**
* Basic context-aware features (simplified approach)
* Provides intelligent response adaptation and user context awareness
*/
export interface ContextData {
userId?: string;
sessionId?: string;
userPreferences?: {
dataFormat?: 'detailed' | 'standard' | 'basic';
includeMetadata?: boolean;
maxResults?: number;
timezone?: string;
language?: string;
};
recentQueries?: string[];
workspaceContext?: {
id?: string;
name?: string;
permissions?: string[];
};
instanceContext?: {
name?: string;
features?: string[];
limits?: Record<string, number>;
};
}
export interface ContextualResponse {
data: unknown;
metadata?: {
responseFormat?: string;
adaptations?: string[];
suggestions?: string[];
relatedActions?: string[];
};
userGuidance?: {
nextSteps?: string[];
tips?: string[];
warnings?: string[];
};
}
export interface AdaptationRule {
condition: (context: ContextData, query: string, response: unknown) => boolean;
adaptation: (context: ContextData, query: string, response: unknown) => ContextualResponse;
priority: number;
description: string;
}
/**
* Basic context-aware response adapter
*/
export declare class ContextAwareAdapter {
private adaptationRules;
private contextCache;
constructor();
/**
* Set user context for session
*/
setContext(sessionId: string, context: ContextData): void;
/**
* Get user context for session
*/
getContext(sessionId: string): ContextData;
/**
* Clear context for session
*/
clearContext(sessionId: string): void;
/**
* Adapt response based on context
*/
adaptResponse(sessionId: string, query: string, originalResponse: unknown): ContextualResponse;
/**
* Add custom adaptation rule
*/
addAdaptationRule(rule: AdaptationRule): void;
/**
* Initialize default adaptation rules
*/
private initializeDefaultRules;
/**
* Update recent queries for context
*/
private updateRecentQueries;
/**
* Check if response is a large dataset
*/
private isLargeDataset;
/**
* Check if response is an error
*/
private isErrorResponse;
/**
* Check if response contains detailed information
*/
private isDetailedResponse;
/**
* Check if response contains restricted data
*/
private containsRestrictedData;
/**
* Summarize large response
*/
private summarizeResponse;
/**
* Simplify detailed response
*/
private simplifyResponse;
/**
* Filter response by permissions
*/
private filterByPermissions;
/**
* Extract error information
*/
private extractErrorInfo;
/**
* Generate basic suggestions based on context and query
*/
private generateBasicSuggestions;
/**
* Generate related actions based on context and query
*/
private generateRelatedActions;
/**
* Generate next steps based on context and query
*/
private generateNextSteps;
/**
* Generate contextual tips
*/
private generateTips;
/**
* Generate error recovery steps
*/
private generateErrorRecoverySteps;
/**
* Generate error-specific tips
*/
private generateErrorTips;
/**
* Get context statistics
*/
getContextStats(): {
totalSessions: number;
activeRules: number;
averageAdaptations: number;
};
/**
* Clean old context data
*/
cleanOldContexts(_maxAgeMs?: number): number;
}
export declare const contextAwareAdapter: ContextAwareAdapter;