popeye-cli 1.4.1 → 1.4.2

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.
Files changed (56) hide show
  1. package/dist/adapters/claude.d.ts.map +1 -1
  2. package/dist/adapters/claude.js +6 -0
  3. package/dist/adapters/claude.js.map +1 -1
  4. package/dist/cli/interactive.d.ts.map +1 -1
  5. package/dist/cli/interactive.js +82 -5
  6. package/dist/cli/interactive.js.map +1 -1
  7. package/dist/types/workflow.d.ts +12 -0
  8. package/dist/types/workflow.d.ts.map +1 -1
  9. package/dist/types/workflow.js +4 -0
  10. package/dist/types/workflow.js.map +1 -1
  11. package/dist/workflow/auto-fix.d.ts +17 -1
  12. package/dist/workflow/auto-fix.d.ts.map +1 -1
  13. package/dist/workflow/auto-fix.js +97 -16
  14. package/dist/workflow/auto-fix.js.map +1 -1
  15. package/dist/workflow/execution-mode.d.ts +24 -0
  16. package/dist/workflow/execution-mode.d.ts.map +1 -1
  17. package/dist/workflow/execution-mode.js +292 -19
  18. package/dist/workflow/execution-mode.js.map +1 -1
  19. package/dist/workflow/index.d.ts +1 -0
  20. package/dist/workflow/index.d.ts.map +1 -1
  21. package/dist/workflow/index.js +1 -0
  22. package/dist/workflow/index.js.map +1 -1
  23. package/dist/workflow/milestone-workflow.d.ts.map +1 -1
  24. package/dist/workflow/milestone-workflow.js +63 -3
  25. package/dist/workflow/milestone-workflow.js.map +1 -1
  26. package/dist/workflow/project-structure.d.ts +29 -0
  27. package/dist/workflow/project-structure.d.ts.map +1 -0
  28. package/dist/workflow/project-structure.js +193 -0
  29. package/dist/workflow/project-structure.js.map +1 -0
  30. package/dist/workflow/project-verification.d.ts +24 -1
  31. package/dist/workflow/project-verification.d.ts.map +1 -1
  32. package/dist/workflow/project-verification.js +105 -22
  33. package/dist/workflow/project-verification.js.map +1 -1
  34. package/dist/workflow/remediation.d.ts +124 -0
  35. package/dist/workflow/remediation.d.ts.map +1 -0
  36. package/dist/workflow/remediation.js +510 -0
  37. package/dist/workflow/remediation.js.map +1 -0
  38. package/dist/workflow/task-workflow.d.ts.map +1 -1
  39. package/dist/workflow/task-workflow.js +202 -4
  40. package/dist/workflow/task-workflow.js.map +1 -1
  41. package/package.json +1 -1
  42. package/src/adapters/claude.ts +6 -0
  43. package/src/cli/interactive.ts +85 -5
  44. package/src/types/workflow.ts +9 -0
  45. package/src/workflow/auto-fix.ts +123 -18
  46. package/src/workflow/execution-mode.ts +364 -20
  47. package/src/workflow/index.ts +1 -0
  48. package/src/workflow/milestone-workflow.ts +80 -3
  49. package/src/workflow/project-structure.ts +233 -0
  50. package/src/workflow/project-verification.ts +128 -21
  51. package/src/workflow/remediation.ts +711 -0
  52. package/src/workflow/task-workflow.ts +237 -4
  53. package/tests/workflow/auto-fix-enhanced.test.ts +351 -0
  54. package/tests/workflow/project-structure.test.ts +131 -0
  55. package/tests/workflow/project-verification.test.ts +130 -0
  56. package/tests/workflow/remediation.test.ts +238 -0
@@ -9,6 +9,7 @@ import { loadProject, updateState, } from '../state/index.js';
9
9
  import { iterateUntilConsensus } from './consensus.js';
10
10
  import { runTaskWorkflow } from './task-workflow.js';
11
11
  import { parsePlanMilestones } from './plan-mode.js';
12
+ import { attemptRemediation, MAX_REMEDIATION_ATTEMPTS } from './remediation.js';
12
13
  /**
13
14
  * Update milestone in state
14
15
  */
@@ -347,9 +348,68 @@ Tasks: ${milestone.tasks.length}
347
348
  error: `Task "${task.name}" paused due to rate limit. Run /resume to continue.`,
348
349
  };
349
350
  }
350
- // Actual failure
351
- onProgress?.('milestone-tasks', `Task failed: ${task.name}`);
352
- // Update milestone status
351
+ // Actual failure - check if it's a rate limit masquerading as a failure
352
+ const isRateLimitFailure = taskResult.error &&
353
+ /rate.limit|rate_limit|too many requests|quota exceeded/i.test(taskResult.error);
354
+ if (isRateLimitFailure) {
355
+ onProgress?.('milestone-tasks', `Task failed due to rate limit: ${task.name} - pausing instead of remediating`);
356
+ state = await updateMilestoneInState(projectDir, milestone.id, {
357
+ status: 'paused',
358
+ });
359
+ return {
360
+ success: false,
361
+ milestone: { ...milestone, status: 'paused' },
362
+ planConsensus,
363
+ taskResults,
364
+ rateLimitPaused: true,
365
+ error: `Task "${task.name}" hit rate limit. Run /resume to continue.`,
366
+ };
367
+ }
368
+ // Attempt remediation before giving up
369
+ // Reload task from state to get current remediationAttempts
370
+ const latestState = await loadProject(projectDir);
371
+ const latestMilestone = latestState.milestones.find(m => m.id === milestone.id);
372
+ const latestTask = latestMilestone?.tasks.find(t => t.id === task.id);
373
+ const remediationAttempts = latestTask?.remediationAttempts || 0;
374
+ if (remediationAttempts < MAX_REMEDIATION_ATTEMPTS) {
375
+ onProgress?.('milestone-tasks', `Task failed: ${task.name} - attempting remediation (${remediationAttempts + 1}/${MAX_REMEDIATION_ATTEMPTS})`);
376
+ const remediationResult = await attemptRemediation(milestone, task, taskResult, {
377
+ projectDir,
378
+ consensusConfig,
379
+ onProgress,
380
+ });
381
+ // Handle rate limit pause during remediation
382
+ if (remediationResult.rateLimitPaused) {
383
+ onProgress?.('milestone-tasks', `Remediation paused (rate limit): ${task.name}`);
384
+ state = await updateMilestoneInState(projectDir, milestone.id, {
385
+ status: 'paused',
386
+ });
387
+ return {
388
+ success: false,
389
+ milestone: { ...milestone, status: 'paused' },
390
+ planConsensus,
391
+ taskResults,
392
+ rateLimitPaused: true,
393
+ error: `Remediation for "${task.name}" paused due to rate limit. Run /resume to continue.`,
394
+ };
395
+ }
396
+ // If remediation succeeded, replace the failed result and continue
397
+ if (remediationResult.success && remediationResult.taskResult) {
398
+ onProgress?.('milestone-tasks', `Remediation successful for: ${task.name}`);
399
+ // Replace the failed result with the successful one
400
+ taskResults[taskResults.length - 1] = remediationResult.taskResult;
401
+ onTaskComplete?.(task, true);
402
+ // Continue to next task
403
+ onProgress?.('milestone-tasks', `Task complete (after remediation): ${task.name}`);
404
+ continue;
405
+ }
406
+ // Remediation failed - fall through to milestone failure
407
+ onProgress?.('milestone-tasks', `Remediation failed for: ${task.name} - ${remediationResult.error}`);
408
+ }
409
+ else {
410
+ onProgress?.('milestone-tasks', `Task failed: ${task.name} - max remediation attempts (${MAX_REMEDIATION_ATTEMPTS}) already reached`);
411
+ }
412
+ // Mark milestone as failed
353
413
  state = await updateMilestoneInState(projectDir, milestone.id, {
354
414
  status: 'failed',
355
415
  });
@@ -1 +1 @@
1
- {"version":3,"file":"milestone-workflow.js","sourceRoot":"","sources":["../../src/workflow/milestone-workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"milestone-workflow.js","sourceRoot":"","sources":["../../src/workflow/milestone-workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Project structure scanner for build verification context enrichment
3
+ * Scans project directory and returns a concise summary for embedding in AI prompts
4
+ */
5
+ /**
6
+ * Summary of a project's directory structure
7
+ */
8
+ export interface ProjectStructureSummary {
9
+ tree: string;
10
+ fileCounts: Record<string, number>;
11
+ appFileCounts?: Record<string, Record<string, number>>;
12
+ workspaceApps: Array<{
13
+ name: string;
14
+ path: string;
15
+ exists: boolean;
16
+ }>;
17
+ totalSourceFiles: number;
18
+ tsconfigInfo?: string;
19
+ formatted: string;
20
+ }
21
+ /**
22
+ * Scan a project directory and return a concise summary for embedding in AI prompts
23
+ *
24
+ * @param projectDir - Root directory of the project
25
+ * @param language - Project language type
26
+ * @returns Project structure summary with tree, counts, and formatted string
27
+ */
28
+ export declare function getProjectStructureSummary(projectDir: string, language: string): Promise<ProjectStructureSummary>;
29
+ //# sourceMappingURL=project-structure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-structure.d.ts","sourceRoot":"","sources":["../../src/workflow/project-structure.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACtE,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAmHD;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,uBAAuB,CAAC,CAuFlC"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Project structure scanner for build verification context enrichment
3
+ * Scans project directory and returns a concise summary for embedding in AI prompts
4
+ */
5
+ import { promises as fs } from 'node:fs';
6
+ import path from 'node:path';
7
+ import { isWorkspace, languageToApps } from '../types/project.js';
8
+ /** Directories to skip during scanning */
9
+ const SKIP_DIRS = new Set([
10
+ 'node_modules', 'dist', 'build', '.git', '__pycache__', '.venv', 'venv',
11
+ '.next', '.turbo', '.cache', 'coverage', 'out', '.vercel',
12
+ ]);
13
+ /** Source file extensions to count */
14
+ const SOURCE_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.py']);
15
+ /** Maximum tree entries before truncation */
16
+ const MAX_TREE_ENTRIES = 30;
17
+ /**
18
+ * Recursively scan a directory up to a given depth, building a tree and counting files
19
+ *
20
+ * @param dir - Directory to scan
21
+ * @param depth - Current recursion depth
22
+ * @param maxDepth - Maximum depth to recurse
23
+ * @returns Tree lines and file counts by extension
24
+ */
25
+ async function scanDirectory(dir, depth, maxDepth) {
26
+ const lines = [];
27
+ const counts = {};
28
+ if (depth > maxDepth)
29
+ return { lines, counts };
30
+ try {
31
+ const entries = await fs.readdir(dir, { withFileTypes: true });
32
+ const sorted = entries.sort((a, b) => {
33
+ // Directories first, then files
34
+ if (a.isDirectory() && !b.isDirectory())
35
+ return -1;
36
+ if (!a.isDirectory() && b.isDirectory())
37
+ return 1;
38
+ return a.name.localeCompare(b.name);
39
+ });
40
+ for (const entry of sorted) {
41
+ if (SKIP_DIRS.has(entry.name))
42
+ continue;
43
+ const indent = ' '.repeat(depth);
44
+ if (entry.isDirectory()) {
45
+ lines.push(`${indent}${entry.name}/`);
46
+ const sub = await scanDirectory(path.join(dir, entry.name), depth + 1, maxDepth);
47
+ lines.push(...sub.lines);
48
+ for (const [ext, count] of Object.entries(sub.counts)) {
49
+ counts[ext] = (counts[ext] || 0) + count;
50
+ }
51
+ }
52
+ else if (entry.isFile()) {
53
+ const ext = path.extname(entry.name);
54
+ if (SOURCE_EXTENSIONS.has(ext)) {
55
+ counts[ext] = (counts[ext] || 0) + 1;
56
+ }
57
+ lines.push(`${indent}${entry.name}`);
58
+ }
59
+ }
60
+ }
61
+ catch {
62
+ // Directory access error - ignore
63
+ }
64
+ return { lines, counts };
65
+ }
66
+ /**
67
+ * Count source files within a specific directory (shallow recursion, max 5 levels)
68
+ *
69
+ * @param dir - Directory to count files in
70
+ * @returns File counts by extension
71
+ */
72
+ async function countSourceFiles(dir) {
73
+ const result = await scanDirectory(dir, 0, 5);
74
+ return result.counts;
75
+ }
76
+ /**
77
+ * Read and summarize tsconfig.json if present
78
+ *
79
+ * @param projectDir - Project root directory
80
+ * @returns Brief tsconfig summary string or undefined
81
+ */
82
+ async function summarizeTsconfig(projectDir) {
83
+ try {
84
+ const tsconfigPath = path.join(projectDir, 'tsconfig.json');
85
+ const content = await fs.readFile(tsconfigPath, 'utf-8');
86
+ const tsconfig = JSON.parse(content);
87
+ const parts = ['tsconfig: exists'];
88
+ if (tsconfig.references) {
89
+ parts.push(`references=${tsconfig.references.length}`);
90
+ }
91
+ if (tsconfig.include) {
92
+ const includeStr = JSON.stringify(tsconfig.include);
93
+ parts.push(`include=${includeStr.length > 60 ? includeStr.slice(0, 57) + '...' : includeStr}`);
94
+ }
95
+ if (tsconfig.exclude) {
96
+ parts.push(`exclude=${tsconfig.exclude.length} entries`);
97
+ }
98
+ if (tsconfig.compilerOptions?.baseUrl) {
99
+ parts.push(`baseUrl="${tsconfig.compilerOptions.baseUrl}"`);
100
+ }
101
+ if (tsconfig.compilerOptions?.paths) {
102
+ parts.push('paths=true');
103
+ }
104
+ return parts.join(', ');
105
+ }
106
+ catch {
107
+ return undefined;
108
+ }
109
+ }
110
+ /**
111
+ * Scan a project directory and return a concise summary for embedding in AI prompts
112
+ *
113
+ * @param projectDir - Root directory of the project
114
+ * @param language - Project language type
115
+ * @returns Project structure summary with tree, counts, and formatted string
116
+ */
117
+ export async function getProjectStructureSummary(projectDir, language) {
118
+ // Scan directory tree (max 3 levels deep)
119
+ const { lines: treeLines, counts: fileCounts } = await scanDirectory(projectDir, 0, 3);
120
+ // Truncate tree if too large
121
+ let tree;
122
+ if (treeLines.length > MAX_TREE_ENTRIES) {
123
+ const extra = treeLines.length - MAX_TREE_ENTRIES;
124
+ tree = treeLines.slice(0, MAX_TREE_ENTRIES).join('\n') + `\n... (+${extra} more)`;
125
+ }
126
+ else {
127
+ tree = treeLines.join('\n');
128
+ }
129
+ const totalSourceFiles = Object.values(fileCounts).reduce((sum, c) => sum + c, 0);
130
+ // Workspace app detection
131
+ const workspaceApps = [];
132
+ let appFileCounts;
133
+ if (isWorkspace(language)) {
134
+ const apps = languageToApps(language);
135
+ appFileCounts = {};
136
+ for (const appType of apps) {
137
+ const appPath = path.join('apps', appType);
138
+ const absolutePath = path.join(projectDir, appPath);
139
+ let exists = false;
140
+ try {
141
+ await fs.access(absolutePath);
142
+ exists = true;
143
+ }
144
+ catch {
145
+ // App directory doesn't exist
146
+ }
147
+ workspaceApps.push({ name: appType, path: appPath, exists });
148
+ if (exists) {
149
+ appFileCounts[appType] = await countSourceFiles(absolutePath);
150
+ }
151
+ }
152
+ }
153
+ // tsconfig awareness
154
+ const tsconfigInfo = await summarizeTsconfig(projectDir);
155
+ // Assemble formatted summary
156
+ const formattedParts = [];
157
+ formattedParts.push(`Source files: ${totalSourceFiles} total`);
158
+ const countEntries = Object.entries(fileCounts).filter(([, c]) => c > 0);
159
+ if (countEntries.length > 0) {
160
+ formattedParts.push(`Extensions: ${countEntries.map(([ext, c]) => `${ext}=${c}`).join(', ')}`);
161
+ }
162
+ if (workspaceApps.length > 0) {
163
+ const appSummary = workspaceApps
164
+ .map(a => `${a.name}: ${a.exists ? 'exists' : 'MISSING'}`)
165
+ .join(', ');
166
+ formattedParts.push(`Workspace apps: ${appSummary}`);
167
+ if (appFileCounts) {
168
+ for (const [appName, counts] of Object.entries(appFileCounts)) {
169
+ const appCountStr = Object.entries(counts)
170
+ .filter(([, c]) => c > 0)
171
+ .map(([ext, c]) => `${ext}=${c}`)
172
+ .join(', ');
173
+ if (appCountStr) {
174
+ formattedParts.push(` ${appName}: ${appCountStr}`);
175
+ }
176
+ }
177
+ }
178
+ }
179
+ if (tsconfigInfo) {
180
+ formattedParts.push(tsconfigInfo);
181
+ }
182
+ const formatted = formattedParts.join('\n');
183
+ return {
184
+ tree,
185
+ fileCounts,
186
+ appFileCounts,
187
+ workspaceApps,
188
+ totalSourceFiles,
189
+ tsconfigInfo,
190
+ formatted,
191
+ };
192
+ }
193
+ //# sourceMappingURL=project-structure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-structure.js","sourceRoot":"","sources":["../../src/workflow/project-structure.ts"],"names":[],"mappings":"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"}
@@ -26,10 +26,33 @@ export interface VerificationReport {
26
26
  results: VerificationResult[];
27
27
  criticalIssues: string[];
28
28
  }
29
+ /**
30
+ * Resolved project paths for frontend and backend directories
31
+ */
32
+ export interface ProjectPaths {
33
+ frontendDir: string | null;
34
+ backendDir: string | null;
35
+ }
36
+ /**
37
+ * Resolve the correct frontend/backend paths based on language and what exists on disk.
38
+ *
39
+ * Workspace projects (fullstack, all) use apps/ or packages/ subdirectories.
40
+ * Single-language projects use the project root as their frontend or backend dir.
41
+ *
42
+ * @param projectDir - The project root directory
43
+ * @param language - The project language/type
44
+ * @returns Resolved frontend and backend directory paths (null if not applicable)
45
+ */
46
+ export declare function resolveProjectPaths(projectDir: string, language: string): Promise<ProjectPaths>;
29
47
  /**
30
48
  * Run comprehensive project verification
49
+ *
50
+ * @param projectDir - The project root directory
51
+ * @param language - The project language/type (e.g. 'fullstack', 'typescript', 'python')
52
+ * @param onProgress - Optional progress callback
53
+ * @returns Verification report
31
54
  */
32
- export declare function runComprehensiveVerification(projectDir: string, onProgress?: (message: string) => void): Promise<VerificationReport>;
55
+ export declare function runComprehensiveVerification(projectDir: string, language: string, onProgress?: (message: string) => void): Promise<VerificationReport>;
33
56
  /**
34
57
  * Auto-fix fixable issues
35
58
  */
@@ -1 +1 @@
1
- {"version":3,"file":"project-verification.d.ts","sourceRoot":"","sources":["../../src/workflow/project-verification.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAgXD;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAoC7B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,kBAAkB,EAC1B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
1
+ {"version":3,"file":"project-verification.d.ts","sourceRoot":"","sources":["../../src/workflow/project-verification.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AA2FD;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA8BrG;AAuUD;;;;;;;GAOG;AACH,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAuC7B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,kBAAkB,EAC1B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
@@ -88,14 +88,57 @@ function findTodoPlaceholders(content) {
88
88
  }
89
89
  return todos;
90
90
  }
91
+ /**
92
+ * Resolve the correct frontend/backend paths based on language and what exists on disk.
93
+ *
94
+ * Workspace projects (fullstack, all) use apps/ or packages/ subdirectories.
95
+ * Single-language projects use the project root as their frontend or backend dir.
96
+ *
97
+ * @param projectDir - The project root directory
98
+ * @param language - The project language/type
99
+ * @returns Resolved frontend and backend directory paths (null if not applicable)
100
+ */
101
+ export async function resolveProjectPaths(projectDir, language) {
102
+ // Workspace projects (fullstack, all): check apps/ first, then packages/
103
+ if (language === 'fullstack' || language === 'all') {
104
+ const appsF = path.join(projectDir, 'apps', 'frontend');
105
+ const pkgsF = path.join(projectDir, 'packages', 'frontend');
106
+ const appsB = path.join(projectDir, 'apps', 'backend');
107
+ const pkgsB = path.join(projectDir, 'packages', 'backend');
108
+ return {
109
+ frontendDir: await fileExists(appsF) ? appsF : await fileExists(pkgsF) ? pkgsF : null,
110
+ backendDir: await fileExists(appsB) ? appsB : await fileExists(pkgsB) ? pkgsB : null,
111
+ };
112
+ }
113
+ // Website: root IS the frontend
114
+ if (language === 'website') {
115
+ return { frontendDir: projectDir, backendDir: null };
116
+ }
117
+ // TypeScript/JavaScript: root IS the frontend
118
+ if (language === 'typescript' || language === 'javascript') {
119
+ return { frontendDir: projectDir, backendDir: null };
120
+ }
121
+ // Python: root IS the backend
122
+ if (language === 'python') {
123
+ return { frontendDir: null, backendDir: projectDir };
124
+ }
125
+ return { frontendDir: null, backendDir: null };
126
+ }
91
127
  /**
92
128
  * Verify CSS/Styling setup
93
129
  */
94
- async function verifyStylingSetup(projectDir) {
130
+ async function verifyStylingSetup(paths) {
95
131
  const results = [];
96
- const frontendDir = path.join(projectDir, 'packages', 'frontend');
132
+ const frontendDir = paths.frontendDir;
133
+ if (!frontendDir) {
134
+ return results;
135
+ }
97
136
  // Check if frontend uses Tailwind classes
98
- const tsxFiles = await findFiles(path.join(frontendDir, 'src'), /\.tsx$/);
137
+ const srcDir = path.join(frontendDir, 'src');
138
+ if (!await fileExists(srcDir)) {
139
+ return results;
140
+ }
141
+ const tsxFiles = await findFiles(srcDir, /\.tsx$/);
99
142
  let usesTailwind = false;
100
143
  for (const file of tsxFiles.slice(0, 20)) { // Check first 20 files
101
144
  const content = await readFile(file);
@@ -167,9 +210,12 @@ async function verifyStylingSetup(projectDir) {
167
210
  /**
168
211
  * Verify authentication setup
169
212
  */
170
- async function verifyAuthSetup(projectDir) {
213
+ async function verifyAuthSetup(paths) {
171
214
  const results = [];
172
- const frontendDir = path.join(projectDir, 'packages', 'frontend');
215
+ const frontendDir = paths.frontendDir;
216
+ if (!frontendDir) {
217
+ return results;
218
+ }
173
219
  // Check if project uses Auth0
174
220
  const pkgJson = await readFile(path.join(frontendDir, 'package.json'));
175
221
  const usesAuth0 = pkgJson?.includes('@auth0/auth0-react');
@@ -209,9 +255,12 @@ async function verifyAuthSetup(projectDir) {
209
255
  /**
210
256
  * Verify routes are complete (no TODO placeholders)
211
257
  */
212
- async function verifyRouteCompleteness(projectDir) {
258
+ async function verifyRouteCompleteness(paths) {
213
259
  const results = [];
214
- const frontendDir = path.join(projectDir, 'packages', 'frontend');
260
+ const frontendDir = paths.frontendDir;
261
+ if (!frontendDir) {
262
+ return results;
263
+ }
215
264
  // Check routes file
216
265
  const routesFile = await readFile(path.join(frontendDir, 'src', 'routes', 'index.tsx'));
217
266
  if (routesFile) {
@@ -228,7 +277,11 @@ async function verifyRouteCompleteness(projectDir) {
228
277
  });
229
278
  }
230
279
  // Check all page components
231
- const pageFiles = await findFiles(path.join(frontendDir, 'src', 'pages'), /\.tsx$/);
280
+ const pagesDir = path.join(frontendDir, 'src', 'pages');
281
+ if (!await fileExists(pagesDir)) {
282
+ return results;
283
+ }
284
+ const pageFiles = await findFiles(pagesDir, /\.tsx$/);
232
285
  const incompletePages = [];
233
286
  for (const file of pageFiles) {
234
287
  const content = await readFile(file);
@@ -260,12 +313,14 @@ async function verifyRouteCompleteness(projectDir) {
260
313
  /**
261
314
  * Verify database setup
262
315
  */
263
- async function verifyDatabaseSetup(projectDir) {
316
+ async function verifyDatabaseSetup(projectDir, paths) {
264
317
  const results = [];
265
- const backendDir = path.join(projectDir, 'packages', 'backend');
266
- // Check .env.example has database config
267
- const envExample = await readFile(path.join(projectDir, '.env.example')) ||
268
- await readFile(path.join(backendDir, '.env.example'));
318
+ const backendDir = paths.backendDir;
319
+ // Check .env.example has database config (check root and backend dir)
320
+ let envExample = await readFile(path.join(projectDir, '.env.example'));
321
+ if (!envExample && backendDir) {
322
+ envExample = await readFile(path.join(backendDir, '.env.example'));
323
+ }
269
324
  const hasDbConfig = envExample?.includes('DATABASE_URL') ||
270
325
  envExample?.includes('DB_HOST');
271
326
  results.push({
@@ -296,10 +351,31 @@ async function verifyDatabaseSetup(projectDir) {
296
351
  /**
297
352
  * Verify the app actually starts
298
353
  */
299
- async function verifyAppStarts(projectDir) {
354
+ async function verifyAppStarts(paths) {
300
355
  const results = [];
301
- const frontendDir = path.join(projectDir, 'packages', 'frontend');
302
- // Try to start frontend briefly
356
+ const frontendDir = paths.frontendDir;
357
+ if (!frontendDir) {
358
+ return results;
359
+ }
360
+ // Verify directory exists before attempting build
361
+ if (!await fileExists(frontendDir)) {
362
+ return results;
363
+ }
364
+ // Check package.json exists and has a build script
365
+ const pkgJsonContent = await readFile(path.join(frontendDir, 'package.json'));
366
+ if (!pkgJsonContent) {
367
+ return results;
368
+ }
369
+ try {
370
+ const pkgJson = JSON.parse(pkgJsonContent);
371
+ if (!pkgJson.scripts?.build) {
372
+ return results;
373
+ }
374
+ }
375
+ catch {
376
+ return results;
377
+ }
378
+ // Try to build frontend
303
379
  try {
304
380
  await execAsync('npm run build', {
305
381
  cwd: frontendDir,
@@ -329,19 +405,26 @@ async function verifyAppStarts(projectDir) {
329
405
  }
330
406
  /**
331
407
  * Run comprehensive project verification
408
+ *
409
+ * @param projectDir - The project root directory
410
+ * @param language - The project language/type (e.g. 'fullstack', 'typescript', 'python')
411
+ * @param onProgress - Optional progress callback
412
+ * @returns Verification report
332
413
  */
333
- export async function runComprehensiveVerification(projectDir, onProgress) {
414
+ export async function runComprehensiveVerification(projectDir, language, onProgress) {
334
415
  const allResults = [];
416
+ // Resolve correct paths based on language and disk layout
417
+ const paths = await resolveProjectPaths(projectDir, language);
335
418
  onProgress?.('Checking styling setup...');
336
- allResults.push(...await verifyStylingSetup(projectDir));
419
+ allResults.push(...await verifyStylingSetup(paths));
337
420
  onProgress?.('Checking authentication setup...');
338
- allResults.push(...await verifyAuthSetup(projectDir));
421
+ allResults.push(...await verifyAuthSetup(paths));
339
422
  onProgress?.('Checking route completeness...');
340
- allResults.push(...await verifyRouteCompleteness(projectDir));
423
+ allResults.push(...await verifyRouteCompleteness(paths));
341
424
  onProgress?.('Checking database setup...');
342
- allResults.push(...await verifyDatabaseSetup(projectDir));
425
+ allResults.push(...await verifyDatabaseSetup(projectDir, paths));
343
426
  onProgress?.('Verifying app builds...');
344
- allResults.push(...await verifyAppStarts(projectDir));
427
+ allResults.push(...await verifyAppStarts(paths));
345
428
  // Calculate summary
346
429
  const passedChecks = allResults.filter(r => r.passed).length;
347
430
  const failedChecks = allResults.filter(r => !r.passed && r.severity === 'error').length;