package composer import ( "context" "fmt" "time" "github.com/google/uuid" ) // Enterprise plugin stubs - disable enterprise features but allow core system to function // EnterprisePlugins manages enterprise plugin integrations (stub) type EnterprisePlugins struct { specKitClient *SpecKitClient config *EnterpriseConfig } // EnterpriseConfig holds configuration for enterprise features type EnterpriseConfig struct { SpecKitServiceURL string `json:"spec_kit_service_url"` EnableSpecKit bool `json:"enable_spec_kit"` DefaultTimeout time.Duration `json:"default_timeout"` MaxConcurrentCalls int `json:"max_concurrent_calls"` RetryAttempts int `json:"retry_attempts"` FallbackToCommunity bool `json:"fallback_to_community"` } // SpecKitWorkflowRequest represents a request to execute spec-kit workflow type SpecKitWorkflowRequest struct { ProjectName string `json:"project_name"` Description string `json:"description"` RepositoryURL string `json:"repository_url,omitempty"` ChorusMetadata map[string]interface{} `json:"chorus_metadata"` WorkflowPhases []string `json:"workflow_phases"` CustomTemplates map[string]string `json:"custom_templates,omitempty"` } // SpecKitWorkflowResponse represents the response from spec-kit service type SpecKitWorkflowResponse struct { ProjectID string `json:"project_id"` Status string `json:"status"` PhasesCompleted []string `json:"phases_completed"` Artifacts []SpecKitArtifact `json:"artifacts"` QualityMetrics map[string]float64 `json:"quality_metrics"` ProcessingTime time.Duration `json:"processing_time"` Metadata map[string]interface{} `json:"metadata"` } // SpecKitArtifact represents an artifact generated by spec-kit type SpecKitArtifact struct { Type string `json:"type"` Phase string `json:"phase"` Content map[string]interface{} `json:"content"` FilePath string `json:"file_path"` Metadata map[string]interface{} `json:"metadata"` CreatedAt time.Time `json:"created_at"` Quality float64 `json:"quality"` } // EnterpriseFeatures represents what enterprise features are available type EnterpriseFeatures struct { SpecKitEnabled bool `json:"spec_kit_enabled"` CustomTemplates bool `json:"custom_templates"` AdvancedAnalytics bool `json:"advanced_analytics"` PrioritySupport bool `json:"priority_support"` WorkflowQuota int `json:"workflow_quota"` RemainingWorkflows int `json:"remaining_workflows"` LicenseTier string `json:"license_tier"` } // NewEnterprisePlugins creates a new enterprise plugin manager (stub) func NewEnterprisePlugins( specKitClient *SpecKitClient, config *EnterpriseConfig, ) *EnterprisePlugins { return &EnterprisePlugins{ specKitClient: specKitClient, config: config, } } // CheckEnterpriseFeatures returns community features only (stub) func (ep *EnterprisePlugins) CheckEnterpriseFeatures( ctx context.Context, deploymentID uuid.UUID, projectContext map[string]interface{}, ) (*EnterpriseFeatures, error) { // Return community-only features return &EnterpriseFeatures{ SpecKitEnabled: false, CustomTemplates: false, AdvancedAnalytics: false, PrioritySupport: false, WorkflowQuota: 0, RemainingWorkflows: 0, LicenseTier: "community", }, nil } // All other enterprise methods return "not available" errors func (ep *EnterprisePlugins) ExecuteSpecKitWorkflow(ctx context.Context, deploymentID uuid.UUID, request *SpecKitWorkflowRequest) (*SpecKitWorkflowResponse, error) { return nil, fmt.Errorf("spec-kit workflows require enterprise license - community version active") } func (ep *EnterprisePlugins) GetWorkflowTemplate(ctx context.Context, deploymentID uuid.UUID, templateType string) (map[string]interface{}, error) { return nil, fmt.Errorf("custom templates require enterprise license - community version active") } func (ep *EnterprisePlugins) GetEnterpriseAnalytics(ctx context.Context, deploymentID uuid.UUID, timeRange string) (map[string]interface{}, error) { return nil, fmt.Errorf("advanced analytics require enterprise license - community version active") }