feat(prd): one transitional PRD authority — RI-4-001 (#1275) (#1294)
ci/woodpecker/push/publish Pipeline was canceled

Co-authored-by: fargo <[email protected]>
This commit was merged in pull request #1294.
This commit is contained in:
2026-08-18 05:56:51 +00:00
committed by jarvis
parent d7e303d3c0
commit d92de53399
12 changed files with 1552 additions and 59 deletions
+32 -5
View File
@@ -256,14 +256,41 @@ async function planMission(
console.log(`Planning mission: ${mission.name}\n`);
try {
const { runPrdWizard } = await import('@mosaicstack/prdy');
await runPrdWizard({
// Thin adapter: the PRD authority (create + mission↔PRD linkage) lives in
// PrdService — no second writer path. The mission's updatedAt serves as
// its version marker (the gateway exposes no numeric mission version).
const { PrdService, runPrdWizard } = await import('@mosaicstack/prdy');
const service = new PrdService({ projectPath: process.cwd() });
if (process.stdout.isTTY) {
const created = await runPrdWizard({
name: mission.name,
projectPath: process.cwd(),
interactive: true,
});
const linked = await service.linkMission({
prdId: created.id,
missionId: mission.id,
missionVersion: mission.updatedAt,
requirementIds: [],
});
console.log(
`\nMission ${mission.id} linked to PRD ${linked.id} v${linked.version} (docs/prdy/).`,
);
return;
}
const doc = await service.planForMission({
name: mission.name,
projectPath: process.cwd(),
interactive: true,
missionId: mission.id,
missionVersion: mission.updatedAt,
requirementIds: [],
});
console.log(
`PRD created and linked: ${doc.id} v${doc.version} — mission ${mission.id} (docs/prdy/).`,
);
} catch (err) {
console.error(`PRD wizard failed: ${err instanceof Error ? err.message : String(err)}`);
console.error(`PRD planning failed: ${err instanceof Error ? err.message : String(err)}`);
process.exit(1);
}
}