UNPKG

@jimmy2822/claude-code-sub-agents-mode

Version:

TypeScript Clean Architecture Multi-Agent Framework for Claude Code CLI Integration

73 lines (61 loc) 2.25 kB
/** * Create Project Use Case - Application Layer * Business logic for creating a new project */ import { Project, ProjectStatus, Requirement, AcceptanceCriteria } from '../../domain/entities/Project'; import { IProjectRepository } from '../../domain/repositories/IProjectRepository'; import { ProjectAnalyzer } from '../services/ProjectAnalyzer'; import { RequirementAnalyzer } from '../services/RequirementAnalyzer'; export interface CreateProjectInput { requirement: string; } export interface CreateProjectOutput { project: Project; success: boolean; message?: string; } export class CreateProjectUseCase { constructor( private projectRepository: IProjectRepository, private projectAnalyzer: ProjectAnalyzer, private requirementAnalyzer: RequirementAnalyzer ) {} async execute(input: CreateProjectInput): Promise<CreateProjectOutput> { try { // Generate new project ID const projectId = await this.projectRepository.getNextId(); // Analyze requirements const requirements = await this.requirementAnalyzer.analyze(input.requirement); // Generate acceptance criteria const acceptanceCriteria = await this.requirementAnalyzer.generateAcceptanceCriteria(requirements); // Create project entity const project = new Project( projectId, input.requirement, 'analyzing' as ProjectStatus, 'requirement_analysis', requirements, acceptanceCriteria ); // Analyze project complexity and generate plan const analysis = await this.projectAnalyzer.analyze(project); project.plan = analysis.plan; // Update status to awaiting approval project.updateStatus('awaiting_approval'); project.addUpdate('Project analysis complete - awaiting approval'); // Save to repository await this.projectRepository.save(project); return { project, success: true, message: `Project #${projectId} created successfully` }; } catch (error) { return { project: null as any, success: false, message: `Failed to create project: ${error instanceof Error ? error.message : 'Unknown error'}` }; } } }