claude-buddy
Version:
Your friendly AI development companion for Claude Code - supercharge Claude Code with intelligent workflows and safety features
218 lines (199 loc) • 4.62 kB
text/typescript
/**
* Main API type definitions
*/
import {
PersonaActivationResult,
PersonaFeedback,
SystemAnalytics,
ActivePersona,
GeneratedPrompt
} from './personas.js';
import {
InputContext,
ParsedFlags,
FlagValidationResult,
LearningRecommendations
} from './context.js';
// Re-export imported types for easy access
export type {
PersonaActivationResult,
PersonaFeedback,
SystemAnalytics,
ActivePersona,
GeneratedPrompt,
InputContext,
ParsedFlags,
FlagValidationResult,
LearningRecommendations
};
/**
* Main processing result from PersonaSystem
*/
export interface ProcessingResult {
success: boolean;
personas?: PersonaActivationResult;
context: InputContext;
prompt: GeneratedPrompt;
flags: ParsedFlags;
validation: FlagValidationResult;
learning?: LearningRecommendations;
error?: string;
details?: string;
}
/**
* Persona system initialization options
*/
export interface PersonaSystemOptions {
configDir?: string;
enableLearning?: boolean;
enableCaching?: boolean;
logLevel?: 'debug' | 'info' | 'warn' | 'error';
}
/**
* Error types that can occur in the persona system
*/
export interface PersonaSystemError extends Error {
code: string;
context?: Record<string, unknown>;
recoverable: boolean;
}
/**
* Event types emitted by the persona system
*/
export type PersonaSystemEvent =
| 'persona_activated'
| 'persona_deactivated'
| 'collaboration_planned'
| 'error_occurred'
| 'learning_updated'
| 'config_reloaded';
/**
* Event data for persona system events
*/
export interface PersonaSystemEventData {
event: PersonaSystemEvent;
timestamp: string;
data: Record<string, unknown>;
}
/**
* Help information for persona system
*/
export interface PersonaSystemHelp {
flagHelp: string;
availablePersonas: string[];
commands: string[];
examples: string[];
}
/**
* Performance metrics for persona operations
*/
export interface PerformanceMetrics {
processingTime: number;
personaLoadTime: number;
flagParsingTime: number;
collaborationPlanningTime: number;
memoryUsage: number;
cacheHitRate?: number;
}
/**
* Debugging information
*/
export interface DebugInfo {
version: string;
config: Record<string, unknown>;
state: Record<string, unknown>;
performance: PerformanceMetrics;
errors: PersonaSystemError[];
}
/**
* Export types for external usage
*/
export interface PersonaSystemExports {
// Main classes
PersonaSystem: typeof import('../personas/index.js').PersonaSystem;
PersonaManager: typeof import('../personas/persona-manager.js').default;
PersonaFlagParser: typeof import('../personas/flag-parser.js').default;
PersonaLearningEngine: typeof import('../personas/learning-engine.js').default;
// Singleton instance
personaSystem: import('../personas/index.js').PersonaSystem;
// Type exports
types: {
ProcessingResult: ProcessingResult;
PersonaActivationResult: PersonaActivationResult;
InputContext: InputContext;
ParsedFlags: ParsedFlags;
ActivePersona: ActivePersona;
PersonaFeedback: PersonaFeedback;
SystemAnalytics: SystemAnalytics;
};
}
/**
* Command recommendation for specific use cases
*/
export interface CommandRecommendation {
command: string;
description: string;
suggestedFlags: string[];
useCase: string;
priority: 'low' | 'medium' | 'high';
}
/**
* Persona usage statistics
*/
export interface PersonaUsageStats {
totalActivations: number;
successfulActivations: number;
averageConfidence: number;
mostUsedPersonas: Array<{ name: string; count: number }>;
collaborationPatterns: Array<{ pattern: string; count: number }>;
timeRange: {
start: string;
end: string;
};
}
/**
* System status information
*/
export interface SystemStatus {
initialized: boolean;
healthy: boolean;
version: string;
uptime: number;
personasLoaded: number;
activePersonas: number;
lastError?: PersonaSystemError;
configValid: boolean;
}
/**
* Batch processing request
*/
export interface BatchProcessingRequest {
inputs: Array<{
id: string;
userInput: string;
context?: Partial<InputContext>;
}>;
options?: {
parallel?: boolean;
maxConcurrency?: number;
failFast?: boolean;
};
}
/**
* Batch processing result
*/
export interface BatchProcessingResult {
results: Array<{
id: string;
success: boolean;
result?: ProcessingResult;
error?: PersonaSystemError;
}>;
summary: {
total: number;
successful: number;
failed: number;
totalTime: number;
averageTime: number;
};
}