From f94f9f672b79aad86efb713138293612c86caa7d Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Sun, 15 Mar 2026 00:44:02 +0000 Subject: [PATCH] feat(prdy): migrate @mosaic/prdy from v0 to v1 (#101) Co-authored-by: Jason Woltje Co-committed-by: Jason Woltje --- packages/prdy/package.json | 8 ++ packages/prdy/src/cli.ts | 100 +++++++++++++++++ packages/prdy/src/index.ts | 13 ++- packages/prdy/src/prd.ts | 199 +++++++++++++++++++++++++++++++++ packages/prdy/src/templates.ts | 93 +++++++++++++++ packages/prdy/src/types.ts | 38 +++++++ packages/prdy/src/wizard.ts | 103 +++++++++++++++++ pnpm-lock.yaml | 34 +++--- 8 files changed, 572 insertions(+), 16 deletions(-) create mode 100644 packages/prdy/src/cli.ts create mode 100644 packages/prdy/src/prd.ts create mode 100644 packages/prdy/src/templates.ts create mode 100644 packages/prdy/src/types.ts create mode 100644 packages/prdy/src/wizard.ts diff --git a/packages/prdy/package.json b/packages/prdy/package.json index e0c9a7d..7280f81 100644 --- a/packages/prdy/package.json +++ b/packages/prdy/package.json @@ -15,7 +15,15 @@ "typecheck": "tsc --noEmit", "test": "vitest run --passWithNoTests" }, + "dependencies": { + "@clack/prompts": "^0.9.0", + "commander": "^12.0.0", + "js-yaml": "^4.1.0", + "zod": "^3.22.0" + }, "devDependencies": { + "@types/js-yaml": "^4.0.9", + "@types/node": "^22.0.0", "typescript": "^5.8.0", "vitest": "^2.0.0" } diff --git a/packages/prdy/src/cli.ts b/packages/prdy/src/cli.ts new file mode 100644 index 0000000..1850e39 --- /dev/null +++ b/packages/prdy/src/cli.ts @@ -0,0 +1,100 @@ +import { Command } from 'commander'; + +import { createPrd, listPrds, loadPrd } from './prd.js'; +import { runPrdWizard } from './wizard.js'; + +interface InitCommandOptions { + readonly name: string; + readonly project: string; + readonly template?: 'software' | 'feature' | 'spike'; +} + +interface ListCommandOptions { + readonly project: string; +} + +interface ShowCommandOptions { + readonly project: string; + readonly id?: string; +} + +export function buildPrdyCli(): Command { + const program = new Command(); + program.name('mosaic').description('Mosaic CLI').exitOverride(); + + const prdy = program.command('prdy').description('PRD wizard commands'); + + prdy + .command('init') + .description('Create a PRD document') + .requiredOption('--name ', 'PRD name') + .requiredOption('--project ', 'Project path') + .option('--template