@wonderwhy-er/desktop-commander
Version:
MCP server for terminal operations and file editing
130 lines (129 loc) • 3.58 kB
TypeScript
export interface ToolUsageStats {
filesystemOperations: number;
terminalOperations: number;
editOperations: number;
searchOperations: number;
configOperations: number;
processOperations: number;
totalToolCalls: number;
successfulCalls: number;
failedCalls: number;
toolCounts: Record<string, number>;
firstUsed: number;
lastUsed: number;
totalSessions: number;
lastFeedbackPrompt: number;
lastFeedbackPromptDate?: string;
feedbackAttempts?: number;
}
export interface OnboardingState {
promptsUsed: boolean;
attemptsShown: number;
lastShownAt: number;
}
export interface UsageSession {
sessionStart: number;
lastActivity: number;
commandsInSession: number;
promptedThisSession: boolean;
}
declare class UsageTracker {
private currentSession;
/**
* Get default usage stats
*/
private getDefaultStats;
/**
* Get current usage stats from config
*/
getStats(): Promise<ToolUsageStats>;
/**
* Save usage stats to config
*/
private saveStats;
/**
* Determine which category a tool belongs to
*/
private getToolCategory;
/**
* Check if we're in a new session
*/
private isNewSession;
/**
* Update session tracking
*/
private updateSession;
/**
* Track a successful tool call
*/
trackSuccess(toolName: string): Promise<ToolUsageStats>;
/**
* Track a failed tool call
*/
trackFailure(toolName: string): Promise<ToolUsageStats>;
/**
* Check if user should be prompted for feedback based on usage patterns
*/
shouldPromptForFeedback(): Promise<boolean>;
/**
* Get a random feedback prompt message with strong CTAs and clear actions
* NEW 2025 Survey - 3 variants for fresh analytics tracking
*/
getFeedbackPromptMessage(): Promise<{
variant: string;
message: string;
}>;
/**
* Check if user should be prompted for error feedback
*/
shouldPromptForErrorFeedback(): Promise<boolean>;
/**
* Mark that user was prompted for feedback
*/
markFeedbackPrompted(): Promise<void>;
/**
* Mark that user has given feedback
*/
markFeedbackGiven(): Promise<void>;
/**
* Get usage summary for debugging/admin purposes
*/
getUsageSummary(): Promise<string>;
/**
* Get onboarding state from config
*/
getOnboardingState(): Promise<OnboardingState>;
/**
* Save onboarding state to config
*/
saveOnboardingState(state: OnboardingState): Promise<void>;
/**
* Check if user should see onboarding invitation - SIMPLE VERSION
*/
shouldShowOnboarding(): Promise<boolean>;
/**
* Get onboarding message for new users - DIRECT 5-OPTION LIST (V2)
*/
getOnboardingMessage(): Promise<{
variant: string;
message: string;
}>;
/**
* Mark that onboarding message was shown - SIMPLE VERSION
*/
markOnboardingShown(variant: string): Promise<void>;
/**
* Mark that user used prompts after seeing onboarding invitation - SIMPLE VERSION
*/
markOnboardingPromptsUsed(): Promise<void>;
/**
* Mark that user has used a specific prompt (for analytics)
*/
markPromptUsed(promptId: string, category: string): Promise<void>;
/**
* Reset onboarding state for testing purposes - SIMPLE VERSION
*/
resetOnboardingState(): Promise<void>;
}
export declare const usageTracker: UsageTracker;
export {};