Files
myeasycms-v2/apps/dev-tool/app/prds/_lib/server/prd-loader.ts
Giancarlo Buomprisco 7ebff31475 Next.js Supabase V3 (#463)
Version 3 of the kit:
- Radix UI replaced with Base UI (using the Shadcn UI patterns)
- next-intl replaces react-i18next
- enhanceAction deprecated; usage moved to next-safe-action
- main layout now wrapped with [locale] path segment
- Teams only mode
- Layout updates
- Zod v4
- Next.js 16.2
- Typescript 6
- All other dependencies updated
- Removed deprecated Edge CSRF
- Dynamic Github Action runner
2026-03-24 13:40:38 +08:00

49 lines
1.3 KiB
TypeScript

import { PRDManager } from '@kit/mcp-server/prd-manager';
import { relative } from 'node:path';
interface PRDSummary {
filename: string;
title: string;
lastUpdated: string;
progress: number;
totalStories: number;
completedStories: number;
}
export async function loadPRDs(): Promise<PRDSummary[]> {
try {
PRDManager.setRootPath(relative(process.cwd(), '../..'));
// Use the actual PRDManager to list PRDs
const prdFiles = await PRDManager.listPRDs();
const prdSummaries: PRDSummary[] = [];
// Load each PRD to get its details
for (const filename of prdFiles) {
try {
const content = await PRDManager.getPRDContent(filename);
const prd = JSON.parse(content);
prdSummaries.push({
filename,
title: prd.introduction.title,
lastUpdated: prd.metadata.lastUpdated,
progress: prd.progress.overall,
totalStories: prd.progress.total,
completedStories: prd.progress.completed,
});
} catch (prdError) {
console.error(`Failed to load PRD ${filename}:`, prdError);
// Continue with other PRDs even if one fails
}
}
return prdSummaries;
} catch (error) {
console.error('Failed to load PRDs:', error);
return [];
}
}