import { ProjectsService } from '../projects/projects.service.js'; import { providerFactory } from '../../core/provider.factory.js'; import { SecretsService } from '../secrets/secrets.service.js'; import { Project } from '../../core/types.js'; export class ProvisioningService { constructor( private readonly projectsService: ProjectsService, private readonly secretsService: SecretsService, ) {} async provisionProject(projectId: string): Promise<{ project: Project }> { const project = await this.projectsService.getProject(projectId); if (!project) { throw new Error('Project not found'); } const provider = providerFactory.create(project.provider); const secrets = await this.secretsService.getProviderSecrets(project.provider, project.tenantId); const created = await provider.createProject(project.name, secrets); const updated = await this.projectsService.updateProject(projectId, { status: 'provisioned', externalId: created.externalId, }); return { project: updated }; } }