recoder-shared
Version:
Shared types, utilities, and configurations for Recoder
992 lines (883 loc) • 24.7 kB
text/typescript
/**
* Project Planner Types
* Core types for the project planning system that ensures real code generation
*/
import { MonitoringConfig, RateLimitConfig } from "./ai-models";
import { CodePattern, SecurityValidation } from "./code-generation";
import { MonitoringConfiguration } from "./codeGeneration";
import { DataSource } from "./planning";
import { DataFlow, SecurityModel, FileStructure, AuthenticationConfig, RetryPolicy } from "./project";
// Additional missing type definitions
export interface ScalabilityPlan {
strategy: string;
metrics: string[];
thresholds: number[];
scaling_actions: string[];
}
export interface DeploymentStrategy {
type: string;
environment: string;
steps: string[];
rollback_plan: string;
}
export interface TechnologyStack {
frontend: string[];
backend: string[];
database: string[];
infrastructure: string[];
third_party: string[];
primary_language?: string;
framework?: string;
deployment_platform?: string;
}
export interface RealWorldConsideration {
type: string;
description: string;
impact: string;
mitigation: string[];
}
export interface ComponentConfiguration {
parameters: Record<string, any>;
environment_variables: Record<string, string>;
secrets: string[];
dependencies: string[];
}
export interface AuthenticationMethod {
type: string;
config: Record<string, any>;
security_level: string;
}
export interface RateLimitingConfig {
requests_per_minute: number;
burst_limit: number;
strategy: string;
}
export interface ValidationConfig {
schema: any;
rules: string[];
error_handling: string;
}
export interface EnvironmentVariable {
name: string;
value: string;
required: boolean;
sensitive: boolean;
}
export interface SecretConfig {
name: string;
source: string;
rotation_policy: string;
}
export interface DatabaseSchema {
name: string;
tables: string[];
relationships: string[];
constraints: string[];
}
export interface FallbackStrategy {
type: string;
conditions: string[];
actions: string[];
}
export interface TimeoutConfig {
connection_timeout: number;
request_timeout: number;
retry_timeout: number;
}
export interface CircuitBreakerConfig {
failure_threshold: number;
recovery_timeout: number;
half_open_max_calls: number;
}
export interface ServiceMonitoring {
health_check: string;
metrics: string[];
alerts: string[];
logs: string[];
}
export interface CostBenefitAnalysis {
benefits: string[];
costs: string[];
roi_calculation: string;
timeline: string;
}
export interface TestDataStrategy {
type: string;
generation_method: string;
volume: number;
privacy_level: string;
}
export interface ExternalDependencyStrategy {
dependency: string;
strategy: string;
fallback: string;
monitoring: string;
}
export interface PerformanceBenchmark {
metric: string;
target: number;
measurement_method: string;
frequency: string;
}
export interface EnvironmentConfiguration {
variables: Record<string, string>;
secrets: string[];
resources: string[];
networking: string[];
}
export interface AccessControl {
type: string;
permissions: string[];
restrictions: string[];
audit_trail: boolean;
}
export interface ProjectRequirement {
id: string;
type: 'functional' | 'non-functional' | 'integration' | 'business' | 'technical';
priority: 'critical' | 'high' | 'medium' | 'low';
description: string;
acceptance_criteria: string[];
dependencies: string[];
complexity: number; // 1-10 scale
estimated_hours: number;
tags: string[];
domain: ProjectDomain;
real_world_constraints: RealWorldConstraint[];
validation_steps: ValidationStep[];
}
export interface RealWorldConstraint {
type: 'legal' | 'regulatory' | 'technical' | 'business' | 'security' | 'performance';
description: string;
impact: 'blocking' | 'high' | 'medium' | 'low';
mitigation: string[];
validation_method: string;
}
export interface ValidationStep {
id: string;
description: string;
type: 'unit_test' | 'integration_test' | 'manual_test' | 'automated_check' | 'external_validation';
criteria: string;
tools: string[];
expected_outcome: string;
failure_action: string;
}
export interface ArchitecturalPlan {
id: string;
name: string;
description: string;
pattern: ArchitecturalPattern;
components: SystemComponent[];
data_flow: DataFlow[];
security_model: SecurityModel;
scalability_plan: ScalabilityPlan;
deployment_strategy: DeploymentStrategy;
technology_stack: TechnologyStack;
real_world_considerations: RealWorldConsideration[];
}
export interface SystemComponent {
id: string;
name: string;
type: 'frontend' | 'backend' | 'database' | 'cache' | 'queue' | 'storage' | 'external_service';
description: string;
responsibilities: string[];
interfaces: ComponentInterface[];
dependencies: string[];
configuration: ComponentConfiguration;
monitoring: MonitoringConfig;
real_implementation: RealImplementation;
}
export interface ComponentInterface {
name: string;
type: 'rest_api' | 'graphql' | 'websocket' | 'grpc' | 'event_bus' | 'database' | 'file_system';
specification: any; // OpenAPI, GraphQL schema, etc.
authentication: AuthenticationMethod;
rate_limiting: RateLimitingConfig;
validation: ValidationConfig;
real_endpoints: RealEndpoint[];
}
export interface RealEndpoint {
url: string;
method: string;
purpose: string;
request_schema: any;
response_schema: any;
side_effects: string[];
external_dependencies: string[];
business_logic: BusinessLogic[];
}
export interface BusinessLogic {
name: string;
description: string;
inputs: Parameter[];
outputs: Parameter[];
rules: BusinessRule[];
real_world_impact: string;
validation_method: string;
}
export interface BusinessRule {
condition: string;
action: string;
exception_handling: string;
audit_trail: boolean;
compliance_requirement?: string;
}
export interface RealImplementation {
technology: string;
version: string;
configuration: Record<string, any>;
environment_variables: EnvironmentVariable[];
secrets: SecretConfig[];
external_services: ExternalServiceConfig[];
database_schema: DatabaseSchema[];
file_structure: FileStructure[];
real_code_patterns: CodePattern[];
}
export interface ExternalServiceConfig {
name: string;
type: 'payment' | 'authentication' | 'storage' | 'notification' | 'analytics' | 'blockchain' | 'ai' | 'other';
provider: string;
plan: string;
configuration: ServiceConfiguration;
api_integration: ApiIntegration;
fallback_strategy: FallbackStrategy;
cost_analysis: CostAnalysis;
compliance_requirements: string[];
}
export interface ServiceConfiguration {
endpoint: string;
authentication: AuthenticationConfig;
rate_limits: RateLimitConfig;
timeouts: TimeoutConfig;
retry_policy: RetryPolicy;
circuit_breaker: CircuitBreakerConfig;
monitoring: ServiceMonitoring;
}
export interface ApiIntegration {
sdk_available: boolean;
sdk_language: string[];
rest_api: boolean;
graphql: boolean;
webhooks: boolean;
real_time: boolean;
batch_processing: boolean;
data_formats: string[];
authentication_methods: string[];
}
export interface ImplementationPlan {
id: string;
name: string;
description: string;
phases: ImplementationPhase[];
total_estimated_hours: number;
critical_path: string[];
risk_factors: RiskFactor[];
success_metrics: SuccessMetric[];
quality_gates: QualityGate[];
real_world_validations: RealWorldValidation[];
}
export interface ImplementationPhase {
id: string;
name: string;
description: string;
order: number;
estimated_hours: number;
tasks: ImplementationTask[];
deliverables: Deliverable[];
acceptance_criteria: string[];
dependencies: string[];
risks: string[];
real_world_tests: RealWorldTest[];
}
export interface ImplementationTask {
id: string;
name: string;
description: string;
type: 'development' | 'testing' | 'deployment' | 'configuration' | 'integration' | 'documentation';
estimated_hours: number;
complexity: number;
priority: number;
dependencies: string[];
deliverables: string[];
real_world_requirements: RealWorldRequirement[];
validation_criteria: TaskValidationCriteria[];
anti_mock_checks: AntiMockCheck[];
}
export interface RealWorldRequirement {
type: 'external_service' | 'database_operation' | 'file_operation' | 'network_call' | 'blockchain_transaction';
description: string;
configuration_needed: ConfigurationItem[];
validation_method: string;
success_criteria: string;
failure_handling: string;
}
export interface AntiMockCheck {
name: string;
description: string;
check_type: 'static_analysis' | 'runtime_verification' | 'integration_test' | 'manual_review';
criteria: string;
tools: string[];
automated: boolean;
severity: 'error' | 'warning' | 'info';
}
export interface RealWorldTest {
name: string;
description: string;
type: 'integration' | 'end_to_end' | 'performance' | 'security' | 'compliance' | 'user_acceptance' | 'reliability';
environment: 'development' | 'staging' | 'production';
data_requirements: TestDataRequirement[];
external_dependencies: string[];
success_criteria: string[];
real_world_impact: string;
}
export interface TestDataRequirement {
type: 'synthetic' | 'anonymized_production' | 'real_world_sample';
description: string;
volume: number;
characteristics: string[];
privacy_considerations: string[];
compliance_requirements: string[];
}
export interface RealWorldValidation {
name: string;
description: string;
validation_type: 'functional' | 'performance' | 'security' | 'compliance' | 'user_experience';
methodology: string;
tools: string[];
criteria: ValidationCriteria[];
real_world_scenarios: RealWorldScenario[];
}
export interface RealWorldScenario {
name: string;
description: string;
actors: string[];
steps: ScenarioStep[];
expected_outcomes: string[];
real_world_constraints: string[];
business_impact: string;
}
export interface ScenarioStep {
order: number;
description: string;
actor: string;
action: string;
expected_result: string;
real_world_implications: string[];
}
export interface MockDetectionResult {
is_mock: boolean;
confidence: number;
indicators: MockIndicator[];
real_world_alternatives: RealWorldAlternative[];
transformation_plan: TransformationPlan;
}
export interface MockIndicator {
type: 'hardcoded_data' | 'fake_service' | 'placeholder_logic' | 'dummy_authentication' | 'test_data';
location: string;
description: string;
severity: 'high' | 'medium' | 'low';
impact: string;
}
export interface RealWorldAlternative {
name: string;
description: string;
implementation_effort: number;
cost: number;
benefits: string[];
risks: string[];
timeline: string;
}
export interface TransformationPlan {
steps: TransformationStep[];
estimated_effort: number;
cost_benefit_analysis: CostBenefitAnalysis;
timeline: string;
risks: string[];
success_metrics: string[];
}
export interface TransformationStep {
order: number;
name: string;
description: string;
type: 'code_change' | 'configuration' | 'external_service' | 'database' | 'infrastructure';
estimated_hours: number;
dependencies: string[];
validation_steps: string[];
rollback_plan: string;
}
export interface ProjectDomain {
name: string;
type: 'fintech' | 'e_commerce' | 'social_media' | 'gaming' | 'enterprise' | 'blockchain' | 'ai_ml' | 'iot' | 'other';
characteristics: DomainCharacteristic[];
common_patterns: ArchitecturalPattern[];
typical_integrations: string[];
regulatory_requirements: string[];
security_considerations: string[];
scalability_patterns: string[];
}
export interface DomainCharacteristic {
name: string;
description: string;
importance: 'critical' | 'high' | 'medium' | 'low';
typical_solutions: string[];
common_pitfalls: string[];
best_practices: string[];
}
export interface ArchitecturalPattern {
name: string;
description: string;
use_cases: string[];
benefits: string[];
drawbacks: string[];
implementation_complexity: number;
real_world_examples: string[];
technology_requirements: string[];
}
export interface PlanningContext {
user_requirements: string;
project_type: string;
target_audience: string;
business_goals: string[];
technical_constraints: string[];
budget_constraints: BudgetConstraint[];
timeline_constraints: TimelineConstraint[];
compliance_requirements: string[];
existing_systems: ExistingSystem[];
team_capabilities: TeamCapability[];
}
export interface BudgetConstraint {
category: 'development' | 'infrastructure' | 'external_services' | 'licensing' | 'maintenance';
limit: number;
currency: string;
timeframe: string;
flexibility: 'fixed' | 'flexible' | 'negotiable';
}
export interface TimelineConstraint {
milestone: string;
deadline: string;
importance: 'critical' | 'high' | 'medium' | 'low';
dependencies: string[];
flexibility: 'fixed' | 'flexible' | 'negotiable';
}
export interface ExistingSystem {
name: string;
type: string;
version: string;
integration_points: string[];
migration_required: boolean;
data_migration: boolean;
constraints: string[];
deprecation_timeline?: string;
}
export interface TeamCapability {
skill: string;
level: 'beginner' | 'intermediate' | 'advanced' | 'expert';
team_members: number;
availability: number; // percentage
learning_curve: number; // weeks
external_support_needed: boolean;
}
export interface PlanningResult {
requirements: ProjectRequirement[];
architecture: ArchitecturalPlan;
implementation_plan: ImplementationPlan;
real_world_validations: RealWorldValidation[];
anti_mock_strategy: AntiMockStrategy;
success_metrics: SuccessMetric[];
risk_assessment: RiskAssessment;
cost_analysis: CostAnalysis;
timeline: ProjectTimeline;
quality_assurance: QualityAssurancePlan;
}
export interface AntiMockStrategy {
detection_methods: MockDetectionMethod[];
prevention_measures: PreventionMeasure[];
validation_checkpoints: ValidationCheckpoint[];
real_world_testing: RealWorldTestingPlan[];
continuous_monitoring: ContinuousMonitoring[];
}
export interface MockDetectionMethod {
name: string;
description: string;
automated: boolean;
frequency: 'continuous' | 'on_commit' | 'on_build' | 'on_deploy' | 'manual';
tools: string[];
accuracy: number;
false_positive_rate: number;
}
export interface PreventionMeasure {
name: string;
description: string;
implementation: 'code_review' | 'automated_check' | 'template_constraint' | 'runtime_validation';
enforcement_level: 'error' | 'warning' | 'info';
bypass_conditions: string[];
}
export interface ValidationCheckpoint {
phase: 'planning' | 'development' | 'testing' | 'deployment' | 'monitoring';
name: string;
description: string;
criteria: ValidationCriteria[];
automated: boolean;
blocking: boolean;
remediation_steps: string[];
}
export interface RealWorldTestingPlan {
name: string;
description: string;
environments: TestEnvironment[];
data_strategy: TestDataStrategy;
external_dependencies: ExternalDependencyStrategy[];
performance_benchmarks: PerformanceBenchmark[];
security_validations: SecurityValidation[];
}
export interface TestEnvironment {
name: string;
type: 'development' | 'staging' | 'production_like' | 'production';
configuration: EnvironmentConfiguration;
data_sources: DataSource[];
monitoring: MonitoringConfiguration;
access_controls: AccessControl[];
}
export interface ContinuousMonitoring {
metric: string;
description: string;
collection_method: string;
frequency: string;
alert_threshold: number;
alert_action: string;
dashboard_widget: DashboardWidget;
}
export interface DashboardWidget {
type: 'chart' | 'metric' | 'table' | 'alert' | 'log';
configuration: Record<string, any>;
refresh_rate: number;
access_level: 'public' | 'team' | 'admin';
}
// Common interfaces used across the system
export interface Parameter {
name: string;
type: string;
required: boolean;
description: string;
validation: ValidationRule[];
default_value?: any;
}
export interface ValidationRule {
type: string;
value: any;
message: string;
}
export interface ValidationCriteria {
name: string;
description: string;
type: 'automated' | 'manual' | 'hybrid';
pass_threshold: number;
measurement_unit: string;
tools: string[];
}
export interface ConfigurationItem {
key: string;
value: any;
type: 'string' | 'number' | 'boolean' | 'object' | 'array';
required: boolean;
description: string;
validation: ValidationRule[];
}
export interface TaskValidationCriteria {
name: string;
description: string;
type: 'unit_test' | 'integration_test' | 'manual_check' | 'automated_scan';
pass_criteria: string;
fail_criteria: string;
tools: string[];
}
export interface Deliverable {
name: string;
type: 'code' | 'documentation' | 'configuration' | 'deployment' | 'test' | 'infrastructure';
description: string;
acceptance_criteria: string[];
quality_standards: string[];
dependencies: string[];
}
export interface SuccessMetric {
name: string;
description: string;
type: 'quantitative' | 'qualitative';
measurement_method: string;
target_value: number;
current_value?: number;
unit: string;
frequency: string;
stakeholder: string;
}
export interface RiskFactor {
name: string;
description: string;
category: 'technical' | 'business' | 'timeline' | 'resource' | 'external';
probability: number; // 0-1
impact: number; // 1-10
mitigation_strategies: string[];
contingency_plans: string[];
monitoring_indicators: string[];
}
export interface QualityGate {
name: string;
description: string;
phase: 'planning' | 'development' | 'testing' | 'deployment' | 'production';
criteria: QualityGateCriteria[];
automated: boolean;
blocking: boolean;
escalation_procedure: string;
}
export interface QualityGateCriteria {
metric: string;
threshold: number;
operator: '>' | '<' | '=' | '>=' | '<=';
measurement_method: string;
tools: string[];
}
export interface RiskAssessment {
overall_risk_score: number;
risk_factors: RiskFactor[];
mitigation_plan: MitigationPlan;
contingency_strategies: ContingencyStrategy[];
monitoring_plan: RiskMonitoringPlan;
}
export interface MitigationPlan {
strategies: MitigationStrategy[];
timeline: string;
cost: number;
success_probability: number;
fallback_options: string[];
}
export interface MitigationStrategy {
risk_id: string;
strategy: string;
implementation_steps: string[];
cost: number;
timeline: string;
success_probability: number;
side_effects: string[];
}
export interface ContingencyStrategy {
trigger_conditions: string[];
actions: string[];
timeline: string;
resources_required: string[];
impact_assessment: string;
}
export interface RiskMonitoringPlan {
indicators: RiskIndicator[];
monitoring_frequency: string;
escalation_thresholds: EscalationThreshold[];
reporting_schedule: string;
stakeholder_notifications: string[];
}
export interface RiskIndicator {
name: string;
description: string;
measurement_method: string;
normal_range: [number, number];
warning_threshold: number;
critical_threshold: number;
data_source: string;
}
export interface EscalationThreshold {
level: 'warning' | 'critical' | 'emergency';
conditions: string[];
actions: string[];
stakeholders: string[];
timeline: string;
}
export interface CostAnalysis {
total_cost: number;
cost_breakdown: CostBreakdown[];
cost_over_time: CostProjection[];
cost_optimization_opportunities: CostOptimization[];
roi_analysis: ROIAnalysis;
}
export interface CostBreakdown {
category: string;
amount: number;
percentage: number;
timeline: string;
certainty: 'high' | 'medium' | 'low';
factors: string[];
}
export interface CostProjection {
period: string;
amount: number;
category: string;
assumptions: string[];
confidence_level: number;
}
export interface CostOptimization {
opportunity: string;
potential_savings: number;
implementation_cost: number;
timeline: string;
risks: string[];
benefits: string[];
}
export interface ROIAnalysis {
total_investment: number;
expected_return: number;
payback_period: number;
net_present_value: number;
internal_rate_of_return: number;
assumptions: string[];
sensitivity_analysis: SensitivityAnalysis[];
}
export interface SensitivityAnalysis {
variable: string;
impact_on_roi: number;
scenario_analysis: ScenarioAnalysis[];
}
export interface ScenarioAnalysis {
scenario: string;
probability: number;
roi_impact: number;
mitigation_strategies: string[];
}
export interface ProjectTimeline {
total_duration: number;
phases: TimelinePhase[];
milestones: Milestone[];
critical_path: string[];
buffer_time: number;
dependencies: TimelineDependency[];
}
export interface TimelinePhase {
name: string;
start_date: string;
end_date: string;
duration: number;
deliverables: string[];
dependencies: string[];
resources_required: string[];
}
export interface Milestone {
name: string;
date: string;
description: string;
deliverables: string[];
success_criteria: string[];
stakeholder_review: boolean;
}
export interface TimelineDependency {
from: string;
to: string;
type: 'finish_to_start' | 'start_to_start' | 'finish_to_finish' | 'start_to_finish';
lag: number;
constraint: string;
}
export interface QualityAssurancePlan {
quality_objectives: QualityObjective[];
quality_processes: QualityProcess[];
quality_metrics: QualityMetric[];
quality_gates: QualityGate[];
continuous_improvement: ContinuousImprovementPlan;
}
export interface QualityObjective {
name: string;
description: string;
target_value: number;
measurement_method: string;
frequency: string;
stakeholder: string;
}
export interface QualityProcess {
name: string;
description: string;
steps: ProcessStep[];
inputs: string[];
outputs: string[];
quality_controls: QualityControl[];
}
export interface ProcessStep {
order: number;
name: string;
description: string;
responsible_party: string;
inputs: string[];
outputs: string[];
quality_checks: string[];
}
export interface QualityControl {
name: string;
type: 'inspection' | 'testing' | 'review' | 'audit';
frequency: string;
criteria: string[];
corrective_actions: string[];
}
export interface QualityMetric {
name: string;
description: string;
calculation_method: string;
target_value: number;
current_value?: number;
trend: 'improving' | 'stable' | 'declining';
action_threshold: number;
}
export interface ContinuousImprovementPlan {
improvement_cycles: ImprovementCycle[];
feedback_mechanisms: FeedbackMechanism[];
learning_objectives: LearningObjective[];
knowledge_sharing: KnowledgeSharing[];
}
export interface ImprovementCycle {
name: string;
duration: string;
objectives: string[];
activities: string[];
success_metrics: string[];
retrospective_process: string;
}
export interface FeedbackMechanism {
name: string;
type: 'survey' | 'interview' | 'observation' | 'metrics' | 'review';
frequency: string;
participants: string[];
analysis_method: string;
action_planning: string;
}
export interface LearningObjective {
name: string;
description: string;
target_audience: string[];
learning_methods: string[];
success_criteria: string[];
timeline: string;
}
export interface KnowledgeSharing {
method: string;
frequency: string;
participants: string[];
content_types: string[];
storage_location: string;
access_controls: string[];
}
// Additional specialized interfaces for specific domains
export interface BlockchainRequirement extends ProjectRequirement {
network: string;
consensus_mechanism: string;
smart_contract_language: string;
gas_optimization: boolean;
security_audit_required: boolean;
compliance_standards: string[];
}
export interface FinTechRequirement extends ProjectRequirement {
regulatory_compliance: string[];
security_standards: string[];
audit_requirements: string[];
data_residency: string[];
payment_processing: boolean;
kyc_requirements: boolean;
}
export interface ECommerceRequirement extends ProjectRequirement {
payment_gateways: string[];
inventory_management: boolean;
order_fulfillment: boolean;
customer_support: boolean;
analytics_tracking: boolean;
mobile_optimization: boolean;
}