packages/chat-data/src/providers/projectDetail.ts

import { buildProjectDetail } from '../projects'; import type { ProjectDetailProvider, ProjectRepository } from './types';

type ProjectDetailProviderOptions = { repository: ProjectRepository; };

async function resolveProject(repository: ProjectRepository, identifier: string) { const normalized = identifier.trim(); if (!normalized) { return undefined; } const bySlug = await repository.getProjectBySlug(normalized); if (bySlug) { return bySlug; } return repository.getProjectByName(normalized); }

export function createProjectDetailProvider(options: ProjectDetailProviderOptions): ProjectDetailProvider { const { repository } = options; return { async getProjectDetail(projectId) { const project = await resolveProject(repository, projectId); if (!project) { throw new Error(Project not found: ${projectId}); } return buildProjectDetail(project); }, }; }