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
TypeScript
/**
* 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