@prodara/cli 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ export declare function printHelp(version: string): void;
3
+ export declare function printVersion(wrapperVersion: string, localVersion: string | null): void;
4
+ export declare function main(): void;
3
5
  //# sourceMappingURL=bin.d.ts.map
package/dist/bin.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAyHA,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAmC/C;AAED,wBAAgB,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAStF;AAED,wBAAgB,IAAI,IAAI,IAAI,CA6F3B"}
package/dist/bin.js CHANGED
@@ -14,9 +14,12 @@ import { execFileSync } from 'node:child_process';
14
14
  import { readFileSync, existsSync } from 'node:fs';
15
15
  import { resolve, dirname } from 'node:path';
16
16
  import { fileURLToPath } from 'node:url';
17
+ import { createRequire } from 'node:module';
18
+ import pc from 'picocolors';
17
19
  import { resolveLocal, checkVersionCompatibility } from './resolve.js';
18
20
  const __filename = fileURLToPath(import.meta.url);
19
21
  const __dirname = dirname(__filename);
22
+ const require = createRequire(import.meta.url);
20
23
  function getWrapperVersion() {
21
24
  const pkgPath = resolve(__dirname, '..', 'package.json');
22
25
  if (existsSync(pkgPath)) {
@@ -31,16 +34,167 @@ function getWrapperVersion() {
31
34
  }
32
35
  return '0.0.0';
33
36
  }
34
- function main() {
37
+ /**
38
+ * Resolve the CLI entry from the compiler bundled inside @prodara/cli's own
39
+ * node_modules. Uses createRequire for maximum Node.js compatibility.
40
+ */
41
+ function resolveBundledCompiler() {
42
+ try {
43
+ // Resolve the compiler package.json first, then derive the CLI entry
44
+ const pkgPath = require.resolve('@prodara/compiler/package.json');
45
+ const entry = resolve(dirname(pkgPath), 'dist', 'cli', 'main.js');
46
+ if (existsSync(entry))
47
+ return entry;
48
+ return null;
49
+ }
50
+ catch {
51
+ return null;
52
+ }
53
+ }
54
+ const COMMAND_GROUPS = [
55
+ {
56
+ group: 'Core',
57
+ commands: [
58
+ { name: 'build', description: 'Full build pipeline: compile → workflow → review → verify' },
59
+ { name: 'init', description: 'Scaffold a new Prodara project' },
60
+ { name: 'validate', description: 'Parse and validate .prd files without building' },
61
+ { name: 'graph', description: 'Compile .prd files and output the Product Graph' },
62
+ { name: 'plan', description: 'Compile and produce an incremental plan' },
63
+ { name: 'test', description: 'Run spec tests defined in .prd files' },
64
+ ],
65
+ },
66
+ {
67
+ group: 'Analysis',
68
+ commands: [
69
+ { name: 'diff', description: 'Show incremental diff between current and previous graph' },
70
+ { name: 'drift', description: 'Detect if specs have drifted from last build' },
71
+ { name: 'analyze', description: 'Run cross-spec consistency and coverage analysis' },
72
+ { name: 'doctor', description: 'Check compiler installation and workspace health' },
73
+ { name: 'dashboard', description: 'Show project overview dashboard' },
74
+ ],
75
+ },
76
+ {
77
+ group: 'Exploration',
78
+ commands: [
79
+ { name: 'explain', description: 'Explain a node in the product graph by ID' },
80
+ { name: 'why', description: 'Explain why a diagnostic code was reported' },
81
+ { name: 'onboard', description: 'Generate a guided walkthrough for new team members' },
82
+ { name: 'checklist', description: 'Generate a quality validation checklist' },
83
+ ],
84
+ },
85
+ {
86
+ group: 'Change Management',
87
+ commands: [
88
+ { name: 'propose', description: 'Create a new change proposal' },
89
+ { name: 'changes', description: 'List active change proposals' },
90
+ { name: 'apply', description: 'Apply a change proposal' },
91
+ { name: 'archive', description: 'Archive a completed change proposal' },
92
+ ],
93
+ },
94
+ {
95
+ group: 'Utilities',
96
+ commands: [
97
+ { name: 'watch', description: 'Watch .prd files and re-compile on changes' },
98
+ { name: 'clarify', description: 'Identify specification ambiguities' },
99
+ { name: 'docs', description: 'Generate markdown docs from .prd specifications' },
100
+ { name: 'history', description: 'Browse past build runs' },
101
+ { name: 'extension', description: 'Manage Prodara extensions (list, add, remove)' },
102
+ { name: 'preset', description: 'Manage Prodara presets (list, add, remove)' },
103
+ ],
104
+ },
105
+ ];
106
+ // ---------------------------------------------------------------------------
107
+ // help / version output
108
+ // ---------------------------------------------------------------------------
109
+ export function printHelp(version) {
110
+ const border = pc.dim('─'.repeat(60));
111
+ const lines = [];
112
+ lines.push('');
113
+ lines.push(pc.bold(' Prodara CLI') + pc.dim(` v${version}`));
114
+ lines.push(pc.dim(' The spec-driven compiler for product engineering'));
115
+ lines.push('');
116
+ lines.push(border);
117
+ lines.push('');
118
+ lines.push(pc.bold(' Usage: ') + 'prodara ' + pc.cyan('<command>') + ' [options]');
119
+ lines.push('');
120
+ // Compute column width for alignment
121
+ const maxName = Math.max(...COMMAND_GROUPS.flatMap(g => g.commands.map(c => c.name.length)));
122
+ for (const { group, commands } of COMMAND_GROUPS) {
123
+ lines.push(pc.bold(` ${group}`));
124
+ for (const cmd of commands) {
125
+ const padded = cmd.name.padEnd(maxName + 2);
126
+ lines.push(` ${pc.green(padded)}${pc.dim(cmd.description)}`);
127
+ }
128
+ lines.push('');
129
+ }
130
+ lines.push(pc.bold(' Global Options'));
131
+ lines.push(` ${pc.green('help'.padEnd(maxName + 2))}${pc.dim('Show this help message')}`);
132
+ lines.push(` ${pc.green('version'.padEnd(maxName + 2))}${pc.dim('Show CLI and compiler versions')}`);
133
+ lines.push('');
134
+ lines.push(border);
135
+ lines.push('');
136
+ lines.push(pc.dim(' Run ') + pc.cyan('prodara <command> --help') + pc.dim(' for command-specific usage.'));
137
+ lines.push('');
138
+ process.stdout.write(lines.join('\n'));
139
+ }
140
+ export function printVersion(wrapperVersion, localVersion) {
141
+ const lines = [];
142
+ lines.push(`${pc.bold('@prodara/cli')} ${pc.green(`v${wrapperVersion}`)}`);
143
+ if (localVersion) {
144
+ lines.push(`${pc.bold('@prodara/compiler')} ${pc.green(`v${localVersion}`)}`);
145
+ }
146
+ else {
147
+ lines.push(`${pc.bold('@prodara/compiler')} ${pc.dim('not installed')}`);
148
+ }
149
+ process.stdout.write(lines.join('\n') + '\n');
150
+ }
151
+ export function main() {
35
152
  const cwd = process.cwd();
36
153
  const local = resolveLocal(cwd);
37
154
  const wrapperVersion = getWrapperVersion();
155
+ const args = process.argv.slice(2);
156
+ // Intercept help and version before delegation
157
+ const firstArg = args[0];
158
+ if (firstArg === 'help' || firstArg === '--help' || firstArg === '-h') {
159
+ printHelp(wrapperVersion);
160
+ process.exitCode = 0;
161
+ return;
162
+ }
163
+ if (firstArg === 'version' || firstArg === '--version' || firstArg === '-V') {
164
+ printVersion(wrapperVersion, local?.version ?? null);
165
+ process.exitCode = 0;
166
+ return;
167
+ }
38
168
  if (!local) {
169
+ // Special-case: `prodara init` bootstraps a project even without a local
170
+ // compiler by delegating to the compiler bundled inside @prodara/cli's
171
+ // own node_modules (it's a production dependency).
172
+ if (args[0] === 'init') {
173
+ const bundledEntry = resolveBundledCompiler();
174
+ if (bundledEntry) {
175
+ try {
176
+ execFileSync(process.execPath, [bundledEntry, ...args], {
177
+ cwd,
178
+ stdio: 'inherit',
179
+ env: process.env,
180
+ });
181
+ }
182
+ catch (err) {
183
+ if (err && typeof err === 'object' && 'status' in err) {
184
+ process.exitCode = err.status;
185
+ }
186
+ else {
187
+ process.exitCode = 1;
188
+ }
189
+ }
190
+ return;
191
+ }
192
+ // Bundled compiler missing (shouldn't happen) — fall through to error
193
+ }
39
194
  process.stderr.write('Error: Could not find a local installation of @prodara/compiler.\n' +
40
195
  '\n' +
41
196
  'To set up a Prodara project:\n' +
42
- ' npm install --save-dev @prodara/compiler\n' +
43
- ' npx prodara init\n' +
197
+ ' prodara init\n' +
44
198
  '\n' +
45
199
  `@prodara/cli v${wrapperVersion}\n`);
46
200
  process.exitCode = 1;
@@ -63,7 +217,6 @@ function main() {
63
217
  return;
64
218
  }
65
219
  // Delegate to the local compiler CLI
66
- const args = process.argv.slice(2);
67
220
  try {
68
221
  execFileSync(process.execPath, [local.cliEntry, ...args], {
69
222
  cwd,
@@ -81,5 +234,8 @@ function main() {
81
234
  }
82
235
  }
83
236
  }
84
- main();
237
+ /* v8 ignore next 3 -- auto-invoked entry point */
238
+ if (process.argv[1] && resolve(process.argv[1]) === __filename) {
239
+ main();
240
+ }
85
241
  //# sourceMappingURL=bin.js.map
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { resolveLocal, parseSemver, checkVersionCompatibility } from './resolve.js';
2
2
  export type { LocalResolution } from './resolve.js';
3
+ export { printHelp, printVersion } from './bin.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACpF,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACpF,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -2,4 +2,5 @@
2
2
  // @prodara/cli — Public API
3
3
  // ---------------------------------------------------------------------------
4
4
  export { resolveLocal, parseSemver, checkVersionCompatibility } from './resolve.js';
5
+ export { printHelp, printVersion } from './bin.js';
5
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAC9E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAC9E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEpF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prodara/cli",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Prodara CLI — thin wrapper that delegates to the project-local @prodara/compiler",
5
5
  "author": "Prodara Contributors",
6
6
  "repository": {
@@ -24,6 +24,8 @@
24
24
  "scripts": {
25
25
  "build": "tsc -p tsconfig.build.json",
26
26
  "typecheck": "tsc --noEmit",
27
+ "test": "vitest run",
28
+ "test:coverage": "vitest run --coverage",
27
29
  "clean": "rm -rf dist",
28
30
  "prepublishOnly": "npm run clean && npm run build"
29
31
  },
@@ -37,10 +39,13 @@
37
39
  "node": ">=20.0.0"
38
40
  },
39
41
  "dependencies": {
40
- "@prodara/compiler": "^0.1.0"
42
+ "@prodara/compiler": "^0.1.0",
43
+ "picocolors": "^1.1.1"
41
44
  },
42
45
  "devDependencies": {
43
46
  "@types/node": "^20.14.0",
44
- "typescript": "^5.5.0"
47
+ "@vitest/coverage-v8": "^2.0.0",
48
+ "typescript": "^5.5.0",
49
+ "vitest": "^2.0.0"
45
50
  }
46
51
  }