UNPKG

supa-seed

Version:

A constraint-aware, framework-agnostic database seeding framework with deep PostgreSQL business logic discovery and MakerKit integration support

475 lines 16.8 kB
/** * Archetype Types and Configuration System * Comprehensive type definitions with 10+ archetype categories, behavior patterns, and generation configurations * Part of Task 4.1: Platform-specific archetype system (individual/team/hybrid architectures) */ import type { ContentDomainType, PlatformArchitectureType } from '../features/detection/detection-types'; export type { UserArchetype, IdentityProviderType } from '../auth/auth-types'; /** * Extended archetype categories for comprehensive coverage */ export type ArchetypeCategory = 'creator' | 'consumer' | 'collaborator' | 'curator' | 'analyst' | 'administrator' | 'enterprise' | 'professional' | 'casual' | 'power_user' | 'mobile_first' | 'security_focused'; /** * Behavior pattern engine for realistic user scenarios */ export interface BehaviorPattern { /** Activity level and frequency */ activity: { /** Sessions per week */ sessionsPerWeek: number; /** Average session duration in minutes */ avgSessionDuration: number; /** Peak activity hours (0-23) */ peakHours: number[]; /** Preferred days of week */ preferredDays: ('monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday')[]; }; /** Content interaction patterns */ contentInteraction: { /** Ratio of content creation vs consumption */ creationToConsumptionRatio: number; /** Types of content preferred */ preferredContentTypes: string[]; /** Sharing behavior frequency */ sharingFrequency: 'never' | 'rarely' | 'sometimes' | 'often' | 'always'; /** Comment/feedback behavior */ engagementLevel: 'passive' | 'occasional' | 'active' | 'very_active'; }; /** Social interaction patterns */ socialBehavior: { /** Collaboration preference */ collaborationStyle: 'solo' | 'small_group' | 'large_group' | 'flexible'; /** Network size preference */ networkSize: 'small' | 'medium' | 'large' | 'unlimited'; /** Privacy preference */ privacyLevel: 'public' | 'limited' | 'private' | 'custom'; /** Leadership tendency */ leadershipTendency: 'follower' | 'contributor' | 'leader' | 'independent'; }; /** Technology adoption patterns */ technologyAdoption: { /** Feature adoption speed */ adoptionSpeed: 'early' | 'mainstream' | 'late' | 'laggard'; /** Complexity tolerance */ complexityTolerance: 'low' | 'medium' | 'high' | 'expert'; /** Platform loyalty */ platformLoyalty: 'switcher' | 'loyal' | 'multi_platform' | 'ecosystem_dependent'; }; } /** * Platform-specific behavior customizations */ export interface PlatformBehavior { /** Platform architecture alignment */ architecture: PlatformArchitectureType; /** Domain-specific behaviors */ domainBehaviors: Record<ContentDomainType, { /** Activity multiplier for this domain */ activityMultiplier: number; /** Preferred interaction types */ preferredInteractions: string[]; /** Content creation patterns */ contentPatterns: { frequency: 'rare' | 'occasional' | 'regular' | 'frequent'; types: string[]; quality: 'basic' | 'standard' | 'high' | 'professional'; }; }>; /** Account type preferences */ accountTypePreferences: { personal: { likelihood: number; setupCount: number; privacyLevel: 'public' | 'limited' | 'private'; }; team: { likelihood: number; teamSize: number; role: 'member' | 'admin' | 'owner'; }; }; } /** * Comprehensive archetype generation configuration */ export interface ArchetypeGenerationConfig { /** Configuration metadata */ metadata: { version: string; lastUpdated: Date; author?: string; }; /** Generation strategy */ strategy: { /** How to select archetypes */ selectionStrategy: 'random' | 'weighted' | 'balanced' | 'custom'; /** Distribution across categories */ categoryDistribution: Record<ArchetypeCategory, number>; /** Ensure diversity across platforms */ enforceDiversity: boolean; /** Custom archetype weights */ customWeights?: Record<string, number>; }; /** Behavior pattern configuration */ behaviorGeneration: { /** Enable realistic behavior patterns */ enableRealisticPatterns: boolean; /** Seasonal behavior variations */ seasonalVariations: boolean; /** Time-based activity patterns */ timeBasedPatterns: boolean; /** Cross-platform behavior consistency */ crossPlatformConsistency: number; }; /** Content generation settings */ contentGeneration: { /** Generate user-specific content preferences */ personalizedPreferences: boolean; /** Content quality distribution */ qualityDistribution: { basic: number; standard: number; high: number; professional: number; }; /** Multi-language content support */ multiLanguageSupport: boolean; /** Content scheduling patterns */ schedulingPatterns: boolean; }; /** Archetype validation */ validation: { /** Ensure archetype uniqueness */ enforceUniqueness: boolean; /** Validate behavior pattern consistency */ validateBehaviorConsistency: boolean; /** Check platform compatibility */ checkPlatformCompatibility: boolean; /** Custom validation rules */ customValidationRules?: Array<(archetype: any) => { valid: boolean; errors: string[]; }>; }; /** Testing and debugging */ testing: { /** Enable debug logging */ debugMode: boolean; /** Generate test data sets */ generateTestSets: boolean; /** Include behavior simulation data */ includeBehaviorSimulation: boolean; /** Export archetype analysis */ exportAnalysis: boolean; }; } /** * Individual creator archetype template */ export interface IndividualArchetype { /** Base archetype information */ id: string; name: string; description: string; category: ArchetypeCategory; /** Individual-specific properties */ individual: { /** Personal brand focus */ personalBrand: 'minimal' | 'moderate' | 'strong' | 'professional'; /** Content creation motivation */ motivation: 'hobby' | 'passion' | 'professional' | 'business'; /** Skill level */ skillLevel: 'beginner' | 'intermediate' | 'advanced' | 'expert'; /** Time investment */ timeInvestment: 'minimal' | 'moderate' | 'significant' | 'full_time'; }; /** Content strategy */ contentStrategy: { /** Primary content types */ primaryTypes: string[]; /** Publishing frequency */ frequency: 'sporadic' | 'weekly' | 'daily' | 'multiple_daily'; /** Quality focus */ qualityFocus: 'quantity' | 'quality' | 'balanced' | 'perfectionist'; /** Audience interaction */ audienceInteraction: 'minimal' | 'responsive' | 'proactive' | 'community_focused'; }; /** Platform behavior */ platformBehavior: PlatformBehavior; /** Base behavior patterns */ behaviorPattern: BehaviorPattern; } /** * Team/organization archetype template */ export interface TeamArchetype { /** Base archetype information */ id: string; name: string; description: string; category: ArchetypeCategory; /** Team-specific properties */ team: { /** Team size preference */ teamSize: 'small' | 'medium' | 'large' | 'enterprise'; /** Organization type */ organizationType: 'startup' | 'agency' | 'corporation' | 'nonprofit' | 'government'; /** Collaboration style */ collaborationStyle: 'hierarchical' | 'flat' | 'matrix' | 'agile'; /** Decision making process */ decisionMaking: 'centralized' | 'distributed' | 'consensus' | 'delegated'; }; /** Role distribution */ roleDistribution: { /** Admin/owner percentage */ admins: number; /** Regular member percentage */ members: number; /** Viewer/guest percentage */ viewers: number; /** Specialized roles */ specializedRoles?: Record<string, number>; }; /** Team behavior patterns */ teamBehavior: { /** Meeting frequency */ meetingFrequency: 'rare' | 'weekly' | 'daily' | 'constant'; /** Communication style */ communicationStyle: 'formal' | 'casual' | 'mixed' | 'contextual'; /** Project management approach */ projectManagement: 'ad_hoc' | 'structured' | 'agile' | 'waterfall'; /** Knowledge sharing */ knowledgeSharing: 'minimal' | 'documentation' | 'collaborative' | 'open'; }; /** Platform behavior */ platformBehavior: PlatformBehavior; } /** * Hybrid archetype combining individual and team behaviors */ export interface HybridArchetype { /** Base archetype information */ id: string; name: string; description: string; category: ArchetypeCategory; /** Hybrid-specific properties */ hybrid: { /** Individual vs team time split (0-1) */ individualTeamSplit: number; /** Role switching frequency */ roleSwitchingFrequency: 'rare' | 'occasional' | 'frequent' | 'contextual'; /** Context adaptation speed */ adaptationSpeed: 'slow' | 'moderate' | 'fast' | 'instant'; }; /** Individual behavior component */ individualBehavior: Partial<IndividualArchetype>; /** Team behavior component */ teamBehavior: Partial<TeamArchetype>; /** Context switching rules */ contextSwitching: { /** Triggers for individual mode */ individualTriggers: string[]; /** Triggers for team mode */ teamTriggers: string[]; /** Default mode */ defaultMode: 'individual' | 'team' | 'adaptive'; }; } /** * Domain-specific archetype extensions */ export interface DomainArchetypeExtension { /** Domain identifier */ domain: ContentDomainType; /** Domain-specific properties */ domainProperties: Record<string, any>; /** Domain behavior patterns */ domainBehaviors: { /** Typical use cases */ useCases: string[]; /** Interaction patterns */ interactionPatterns: string[]; /** Content preferences */ contentPreferences: { types: string[]; formats: string[]; complexity: 'simple' | 'moderate' | 'complex' | 'expert'; }; }; /** Domain-specific metrics */ domainMetrics: { /** Engagement indicators */ engagementIndicators: string[]; /** Success metrics */ successMetrics: string[]; /** Performance benchmarks */ performanceBenchmarks: Record<string, number>; }; } /** * Archetype generation result */ export interface ArchetypeGenerationResult { /** Whether generation was successful */ success: boolean; /** Generated archetypes */ archetypes: { individual: IndividualArchetype[]; team: TeamArchetype[]; hybrid: HybridArchetype[]; }; /** Generation statistics */ statistics: { /** Total archetypes generated */ totalGenerated: number; /** Distribution by category */ categoryDistribution: Record<ArchetypeCategory, number>; /** Distribution by platform */ platformDistribution: Record<PlatformArchitectureType, number>; /** Diversity score (0-1) */ diversityScore: number; }; /** Validation results */ validationResults: { /** Overall validation status */ isValid: boolean; /** Validation errors */ errors: string[]; /** Validation warnings */ warnings: string[]; /** Suggestions for improvement */ suggestions: string[]; }; /** Generation metadata */ metadata: { /** Generation timestamp */ generatedAt: Date; /** Configuration used */ configuration: ArchetypeGenerationConfig; /** Generation time in milliseconds */ generationTime: number; }; } /** * Archetype manager configuration */ export interface ArchetypeManagerConfig { /** Enable archetype system */ enabled: boolean; /** Default generation configuration */ defaultGeneration: ArchetypeGenerationConfig; /** Platform-specific overrides */ platformOverrides: Record<PlatformArchitectureType, Partial<ArchetypeGenerationConfig>>; /** Domain-specific overrides */ domainOverrides: Record<ContentDomainType, Partial<ArchetypeGenerationConfig>>; /** Caching configuration */ caching: { /** Enable archetype caching */ enabled: boolean; /** Cache TTL in seconds */ ttl: number; /** Maximum cache size */ maxSize: number; }; /** Performance settings */ performance: { /** Maximum concurrent generations */ maxConcurrentGenerations: number; /** Generation timeout in milliseconds */ generationTimeout: number; /** Enable performance monitoring */ enableMonitoring: boolean; }; } /** * Contextual behavior generation parameters */ export interface BehaviorContext { /** Temporal context */ temporal: { season?: 'spring' | 'summer' | 'fall' | 'winter'; dayOfWeek?: 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday'; timeOfDay?: 'morning' | 'afternoon' | 'evening' | 'night'; timeZone?: string; }; /** Platform context */ platform: { architecture: PlatformArchitectureType; domain: ContentDomainType; deviceType?: 'mobile' | 'tablet' | 'desktop'; connectionType?: 'slow' | 'medium' | 'fast'; }; /** Social context */ social: { groupSize?: number; socialSetting?: 'private' | 'semi_private' | 'public'; eventType?: 'casual' | 'formal' | 'celebration' | 'work'; }; /** Environmental context */ environment: { location?: 'home' | 'office' | 'public' | 'outdoor' | 'travel'; mood?: 'focused' | 'relaxed' | 'social' | 'productive'; urgency?: 'low' | 'medium' | 'high' | 'urgent'; }; } /** * Contextual behavior response */ export interface ContextualBehaviorResponse { /** Behavior likelihood given context (0-1) */ likelihood: number; /** Suggested actions */ suggestedActions: { action: string; probability: number; context: string; }[]; /** Content preferences for this context */ contentPreferences: { types: string[]; urgency: 'low' | 'medium' | 'high'; quality: 'quick' | 'standard' | 'polished'; }; /** Social behavior adjustments */ socialAdjustments: { collaborationWillingness: number; communicationStyle: 'brief' | 'detailed' | 'casual' | 'formal'; responseTime: 'immediate' | 'quick' | 'standard' | 'delayed'; }; } /** * Archetype utilities and helper functions */ export interface ArchetypeUtils { /** Validate archetype consistency */ validateArchetype(archetype: any): { valid: boolean; errors: string[]; }; /** Generate behavior for context */ generateContextualBehavior(archetype: any, context: BehaviorContext): ContextualBehaviorResponse; /** Merge archetype configurations */ mergeConfigurations(base: ArchetypeGenerationConfig, override: Partial<ArchetypeGenerationConfig>): ArchetypeGenerationConfig; /** Calculate diversity score */ calculateDiversityScore(archetypes: any[]): number; /** Export archetype analysis */ exportAnalysis(archetypes: any[]): string; } /** * Default archetype generation configuration */ export declare function createDefaultArchetypeConfig(): ArchetypeGenerationConfig; /** * Archetype category utilities */ export declare const ArchetypeCategoryUtils: { /** Get all available categories */ getAllCategories(): ArchetypeCategory[]; /** Get category description */ getCategoryDescription(category: ArchetypeCategory): string; /** Check if category is compatible with platform */ isCategoryCompatible(category: ArchetypeCategory, platform: PlatformArchitectureType): boolean; }; export default ArchetypeGenerationConfig; //# sourceMappingURL=archetype-types.d.ts.map