feat: turborepo monorepo scaffold and provisioning
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -35,6 +35,16 @@ export interface ProjectChatContext {
|
||||
q3?: string;
|
||||
updatedAt?: string;
|
||||
};
|
||||
/** Gitea monorepo */
|
||||
giteaRepo?: string | null;
|
||||
giteaRepoUrl?: string | null;
|
||||
/** Turborepo apps */
|
||||
apps?: Array<{
|
||||
name: string;
|
||||
path: string;
|
||||
domain?: string | null;
|
||||
coolifyServiceUuid?: string | null;
|
||||
}>;
|
||||
};
|
||||
|
||||
/** Phase-specific artifacts */
|
||||
@@ -261,6 +271,9 @@ export async function buildProjectContextForChat(
|
||||
githubRepoUrl: projectData.githubRepoUrl ?? null,
|
||||
extensionLinked: projectData.extensionLinked ?? false,
|
||||
visionAnswers: projectData.visionAnswers ?? {},
|
||||
giteaRepo: projectData.giteaRepo ?? null,
|
||||
giteaRepoUrl: projectData.giteaRepoUrl ?? null,
|
||||
apps: projectData.apps ?? [],
|
||||
},
|
||||
phaseData: {
|
||||
canonicalProductModel: projectData.phaseData?.canonicalProductModel ?? null,
|
||||
@@ -342,6 +355,19 @@ export function formatContextForPrompt(context: ProjectChatContext): string {
|
||||
`Phase: ${context.project.currentPhase} (${context.project.phaseStatus})`
|
||||
);
|
||||
|
||||
// Monorepo info
|
||||
if (context.project.giteaRepo) {
|
||||
sections.push(`\n## Monorepo (Turborepo)`);
|
||||
sections.push(`Repository: ${context.project.giteaRepoUrl ?? context.project.giteaRepo}`);
|
||||
if (context.project.apps && context.project.apps.length > 0) {
|
||||
sections.push(`Apps:`);
|
||||
for (const app of context.project.apps) {
|
||||
const domain = app.domain ? ` → https://${app.domain}` : '';
|
||||
sections.push(` • ${app.name} (${app.path})${domain}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Knowledge summary
|
||||
if (context.knowledgeSummary.totalCount > 0) {
|
||||
sections.push(`\nKnowledge Items: ${context.knowledgeSummary.totalCount} total`);
|
||||
|
||||
Reference in New Issue
Block a user