@planu/cli 0.49.0 → 0.50.0

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.
@@ -3,5 +3,6 @@ export { discoverModules } from './module-discoverer.js';
3
3
  export { analyzeCrossModuleDependencies } from './cross-module-analyzer.js';
4
4
  export { calculateProjectHealth } from './health-scorer.js';
5
5
  export { generateProjectOverview } from './overview-generator.js';
6
+ export { generateTeamPlan } from './team-planner.js';
6
7
  export declare function scanProject(input: ScanProjectInput): Promise<ScanProjectOutput>;
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/scan-project/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,gBAAgB,EAChB,iBAAiB,EAKlB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAwNlE,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4CrF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/scan-project/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAGV,gBAAgB,EAChB,iBAAiB,EAKlB,MAAM,sBAAsB,CAAC;AAW9B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAuPrD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+CrF"}
@@ -1,16 +1,20 @@
1
1
  // engine/scan-project/index.ts — 4-phase orchestrator for scan_project (SPEC-134)
2
2
  import { join } from 'node:path';
3
+ import { mkdir, writeFile } from 'node:fs/promises';
3
4
  import { discoverModules } from './module-discoverer.js';
4
5
  import { analyzeCrossModuleDependencies } from './cross-module-analyzer.js';
5
6
  import { calculateProjectHealth } from './health-scorer.js';
6
7
  import { generateProjectOverview } from './overview-generator.js';
8
+ import { generateTeamPlan } from './team-planner.js';
7
9
  import { runDeepAnalysis } from '../reverse-engineer/index.js';
8
10
  import * as specStore from '../../storage/spec-store.js';
11
+ import { generateProgressContent } from '../progress-writer.js';
9
12
  // Re-export submodules for barrel access
10
13
  export { discoverModules } from './module-discoverer.js';
11
14
  export { analyzeCrossModuleDependencies } from './cross-module-analyzer.js';
12
15
  export { calculateProjectHealth } from './health-scorer.js';
13
16
  export { generateProjectOverview } from './overview-generator.js';
17
+ export { generateTeamPlan } from './team-planner.js';
14
18
  // ---------------------------------------------------------------------------
15
19
  // Concurrency limiter (p-limit pattern — zero deps)
16
20
  // ---------------------------------------------------------------------------
@@ -63,6 +67,13 @@ async function analyzeModulesInParallel(projectPath, modules, concurrency) {
63
67
  // ---------------------------------------------------------------------------
64
68
  // Phase 4: Spec generation
65
69
  // ---------------------------------------------------------------------------
70
+ const SPEC_LOCATION = 'planu/specs';
71
+ async function writeSpecFiles(specDir, spec, body) {
72
+ await mkdir(specDir, { recursive: true });
73
+ await writeFile(join(specDir, 'spec.md'), body, 'utf-8');
74
+ await writeFile(join(specDir, 'technical.md'), `# Technical: ${spec.title}\n\nAuto-generated by scan_project.\n`, 'utf-8');
75
+ await writeFile(join(specDir, 'progress.md'), generateProgressContent(spec), 'utf-8');
76
+ }
66
77
  async function generateSpecs(input, modules, moduleResults, crossAnalysis, healthScore) {
67
78
  const specsGenerated = [];
68
79
  const nextId = await getNextSpecId(input.projectId);
@@ -71,11 +82,12 @@ async function generateSpecs(input, modules, moduleResults, crossAnalysis, healt
71
82
  for (const mod of modules) {
72
83
  const result = moduleResults.find((r) => r.module.name === mod.name);
73
84
  const specId = `SPEC-${String(currentId).padStart(3, '0')}`;
85
+ const slug = `module-${mod.name.toLowerCase().replace(/[^a-z0-9]/g, '-')}`;
74
86
  const deps = crossAnalysis.dependencies.filter((d) => d.to === mod.name).map((d) => d.from);
75
87
  const spec = buildScanSpec({
76
88
  id: specId,
77
89
  title: `Module: ${mod.name}`,
78
- slug: `module-${mod.name.toLowerCase().replace(/[^a-z0-9]/g, '-')}`,
90
+ slug,
79
91
  scope: 'feature',
80
92
  projectId: input.projectId,
81
93
  tags: ['scan-project', `module:${mod.name}`, mod.language.toLowerCase()],
@@ -83,19 +95,25 @@ async function generateSpecs(input, modules, moduleResults, crossAnalysis, healt
83
95
  gitBranch: `feat/${specId.toLowerCase()}-module-${mod.name.toLowerCase()}`,
84
96
  reviewNotes: result?.error ? [`Analysis failed: ${result.error}`] : [],
85
97
  });
98
+ const specDir = join(input.path, SPEC_LOCATION, `${specId}-${slug}`);
99
+ spec.specPath = join(specDir, 'spec.md');
100
+ spec.technicalPath = join(specDir, 'technical.md');
101
+ const body = `# ${spec.title}\n\nAuto-generated by scan_project.\n`;
102
+ await writeSpecFiles(specDir, spec, body);
86
103
  await specStore.createSpec(input.projectId, spec);
87
104
  specsGenerated.push(specId);
88
105
  currentId++;
89
106
  }
90
107
  // Generate overview spec
91
108
  const overviewSpecId = `SPEC-${String(currentId).padStart(3, '0')}`;
109
+ const overviewSlug = 'project-overview-scan';
92
110
  const overviewContent = input.generateOverview !== false
93
111
  ? generateProjectOverview(modules, moduleResults, crossAnalysis, healthScore)
94
112
  : '';
95
113
  const overviewSpec = buildScanSpec({
96
114
  id: overviewSpecId,
97
115
  title: 'Project Overview — Automated Scan',
98
- slug: 'project-overview-scan',
116
+ slug: overviewSlug,
99
117
  scope: 'cross-module',
100
118
  projectId: input.projectId,
101
119
  tags: ['scan-project', 'overview'],
@@ -103,6 +121,13 @@ async function generateSpecs(input, modules, moduleResults, crossAnalysis, healt
103
121
  gitBranch: `feat/${overviewSpecId.toLowerCase()}-project-overview`,
104
122
  reviewNotes: overviewContent ? [overviewContent] : [],
105
123
  });
124
+ const overviewDir = join(input.path, SPEC_LOCATION, `${overviewSpecId}-${overviewSlug}`);
125
+ overviewSpec.specPath = join(overviewDir, 'spec.md');
126
+ overviewSpec.technicalPath = join(overviewDir, 'technical.md');
127
+ const overviewBody = overviewContent
128
+ ? `# Project Overview — Automated Scan\n\n${overviewContent}\n`
129
+ : `# Project Overview — Automated Scan\n\nAuto-generated by scan_project.\n`;
130
+ await writeSpecFiles(overviewDir, overviewSpec, overviewBody);
106
131
  await specStore.createSpec(input.projectId, overviewSpec);
107
132
  return { specsGenerated, overviewSpecId };
108
133
  }
@@ -206,7 +231,9 @@ export async function scanProject(input) {
206
231
  overviewSpecId,
207
232
  crossModuleDeps: crossAnalysis.dependencies,
208
233
  antipatterns: crossAnalysis.antipatterns,
209
- teamPlan: undefined,
234
+ teamPlan: input.generateTeamPlan !== false
235
+ ? generateTeamPlan(modules, moduleResults, crossAnalysis, specsGenerated)
236
+ : undefined,
210
237
  analysisTimeMs: Date.now() - startTime,
211
238
  concurrencyUsed: concurrency,
212
239
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/scan-project/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/scan-project/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { DiscoveredModule, ModuleAnalysisResult, CrossModuleAnalysis, ScanTeamPlan } from '../../types/index.js';
2
+ declare function recommendModel(mod: DiscoveredModule): string;
3
+ export declare function generateTeamPlan(modules: DiscoveredModule[], moduleResults: ModuleAnalysisResult[], crossAnalysis: CrossModuleAnalysis, specsGenerated: string[]): ScanTeamPlan;
4
+ export { recommendModel };
5
+ //# sourceMappingURL=team-planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-planner.d.ts","sourceRoot":"","sources":["../../../src/engine/scan-project/team-planner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACb,MAAM,sBAAsB,CAAC;AAU9B,iBAAS,cAAc,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAQrD;AAkGD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,aAAa,EAAE,oBAAoB,EAAE,EACrC,aAAa,EAAE,mBAAmB,EAClC,cAAc,EAAE,MAAM,EAAE,GACvB,YAAY,CAkCd;AAGD,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,123 @@
1
+ // engine/scan-project/team-planner.ts — AC-18/19/20 for SPEC-134
2
+ // Generates a team execution plan using topological sort on cross-module deps
3
+ // ---------------------------------------------------------------------------
4
+ // Model recommendation thresholds
5
+ // ---------------------------------------------------------------------------
6
+ const FILE_THRESHOLD_HAIKU = 20;
7
+ const FILE_THRESHOLD_SONNET = 100;
8
+ const MINUTES_PER_PHASE = 30;
9
+ function recommendModel(mod) {
10
+ if (mod.estimatedFiles > FILE_THRESHOLD_SONNET) {
11
+ return 'opus';
12
+ }
13
+ if (mod.estimatedFiles >= FILE_THRESHOLD_HAIKU) {
14
+ return 'sonnet';
15
+ }
16
+ return 'haiku';
17
+ }
18
+ // ---------------------------------------------------------------------------
19
+ // Model recommendation with complexity fallback
20
+ // ---------------------------------------------------------------------------
21
+ function recommendModelWithComplexity(mod, result) {
22
+ if (mod.estimatedFiles > FILE_THRESHOLD_SONNET) {
23
+ return 'opus';
24
+ }
25
+ const hasHighComplexity = result?.analysis.complexityMetrics.some((m) => m.avgComplexity > 20) ?? false;
26
+ if (hasHighComplexity) {
27
+ return 'opus';
28
+ }
29
+ if (mod.estimatedFiles >= FILE_THRESHOLD_HAIKU) {
30
+ return 'sonnet';
31
+ }
32
+ return 'haiku';
33
+ }
34
+ // ---------------------------------------------------------------------------
35
+ // Topological sort using Kahn's algorithm
36
+ // Returns array of phases (each phase is an array of module names)
37
+ // ---------------------------------------------------------------------------
38
+ function topoSortPhases(moduleNames, deps) {
39
+ // Build adjacency: from -> [to] and in-degree count
40
+ const inDegree = new Map();
41
+ const adjacency = new Map();
42
+ for (const name of moduleNames) {
43
+ inDegree.set(name, 0);
44
+ adjacency.set(name, []);
45
+ }
46
+ for (const dep of deps) {
47
+ // dep.from depends on dep.to → dep.from must come AFTER dep.to
48
+ if (!moduleNames.includes(dep.from) || !moduleNames.includes(dep.to)) {
49
+ continue;
50
+ }
51
+ adjacency.get(dep.to)?.push(dep.from);
52
+ inDegree.set(dep.from, (inDegree.get(dep.from) ?? 0) + 1);
53
+ }
54
+ const phases = [];
55
+ const remaining = new Set(moduleNames);
56
+ while (remaining.size > 0) {
57
+ // Collect all nodes with in-degree 0 (no unresolved deps)
58
+ const phase = [...remaining].filter((name) => (inDegree.get(name) ?? 0) === 0);
59
+ if (phase.length === 0) {
60
+ // Cycle detected — add remaining nodes as final phase
61
+ phases.push([...remaining]);
62
+ break;
63
+ }
64
+ phases.push(phase);
65
+ // Remove phase nodes and update in-degrees
66
+ for (const name of phase) {
67
+ remaining.delete(name);
68
+ for (const dependent of adjacency.get(name) ?? []) {
69
+ inDegree.set(dependent, (inDegree.get(dependent) ?? 1) - 1);
70
+ }
71
+ }
72
+ }
73
+ return phases;
74
+ }
75
+ // ---------------------------------------------------------------------------
76
+ // Duration formatter
77
+ // ---------------------------------------------------------------------------
78
+ function formatDuration(phaseCount) {
79
+ const totalMinutes = phaseCount * MINUTES_PER_PHASE;
80
+ if (totalMinutes < 60) {
81
+ return `${totalMinutes}min`;
82
+ }
83
+ const hours = Math.floor(totalMinutes / 60);
84
+ const minutes = totalMinutes % 60;
85
+ return minutes === 0 ? `${hours}h` : `${hours}h ${minutes}min`;
86
+ }
87
+ // ---------------------------------------------------------------------------
88
+ // Public API
89
+ // ---------------------------------------------------------------------------
90
+ export function generateTeamPlan(modules, moduleResults, crossAnalysis, specsGenerated) {
91
+ if (modules.length === 0) {
92
+ return {
93
+ teamSize: 0,
94
+ phases: [],
95
+ estimatedDuration: '0min',
96
+ teammatePrompts: [],
97
+ };
98
+ }
99
+ const moduleNames = modules.map((m) => m.name);
100
+ const phaseGroups = topoSortPhases(moduleNames, crossAnalysis.dependencies);
101
+ const phases = phaseGroups.map((group, idx) => ({
102
+ phase: idx + 1,
103
+ teammates: group.map((name) => `teammate-${name}`),
104
+ parallel: group.length > 1,
105
+ }));
106
+ const teammatePrompts = modules.map((mod, idx) => {
107
+ const result = moduleResults.find((r) => r.module.name === mod.name);
108
+ return {
109
+ name: `teammate-${mod.name}`,
110
+ specId: specsGenerated[idx] ?? '',
111
+ model: recommendModelWithComplexity(mod, result),
112
+ };
113
+ });
114
+ return {
115
+ teamSize: modules.length,
116
+ phases,
117
+ estimatedDuration: formatDuration(phaseGroups.length),
118
+ teammatePrompts,
119
+ };
120
+ }
121
+ // Convenience re-export for simple model recommendation (used in tests)
122
+ export { recommendModel };
123
+ //# sourceMappingURL=team-planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-planner.js","sourceRoot":"","sources":["../../../src/engine/scan-project/team-planner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planu/cli",
3
- "version": "0.49.0",
3
+ "version": "0.50.0",
4
4
  "description": "Planu — MCP Server for Spec Driven Development. Manages specs, estimations, reverse engineering, and auto-learning across any language/framework.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",