@vibecheckai/cli 2.5.7 → 2.7.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.
Files changed (159) hide show
  1. package/LICENSE +1 -1
  2. package/dist/bundles/vibecheck-core.js +20 -20
  3. package/dist/commands/secrets-allowlist.js +4 -4
  4. package/dist/commands/secrets-allowlist.js.map +1 -1
  5. package/dist/commands/ship-consolidated.js +193 -193
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +5 -5
  8. package/dist/index.js.map +1 -1
  9. package/dist/init/ci-generator.d.ts +2 -2
  10. package/dist/init/hooks-installer.d.ts +2 -2
  11. package/dist/init/index.d.ts +1 -1
  12. package/dist/init/index.d.ts.map +1 -1
  13. package/dist/init/index.js +2 -2
  14. package/dist/init/index.js.map +1 -1
  15. package/dist/init/templates.d.ts +6 -285
  16. package/dist/init/templates.d.ts.map +1 -1
  17. package/dist/init/templates.js +2 -3
  18. package/dist/init/templates.js.map +1 -1
  19. package/dist/runtime/json-output.d.ts +2 -2
  20. package/package.json +11 -3
  21. package/dist/bundles/guardrail-core.js +0 -25799
  22. package/dist/bundles/guardrail-security.js +0 -208687
  23. package/dist/bundles/guardrail-ship.js +0 -2318
  24. package/dist/commands/autopilot-decision.d.ts +0 -24
  25. package/dist/commands/autopilot-decision.d.ts.map +0 -1
  26. package/dist/commands/autopilot-decision.js +0 -304
  27. package/dist/commands/autopilot-decision.js.map +0 -1
  28. package/dist/commands/autopilot.d.ts +0 -33
  29. package/dist/commands/autopilot.d.ts.map +0 -1
  30. package/dist/commands/autopilot.js +0 -1539
  31. package/dist/commands/autopilot.js.map +0 -1
  32. package/dist/commands/context.d.ts +0 -8
  33. package/dist/commands/context.d.ts.map +0 -1
  34. package/dist/commands/context.js +0 -340
  35. package/dist/commands/context.js.map +0 -1
  36. package/dist/commands/debug.d.ts +0 -78
  37. package/dist/commands/debug.d.ts.map +0 -1
  38. package/dist/commands/debug.js +0 -381
  39. package/dist/commands/debug.js.map +0 -1
  40. package/dist/commands/preview.d.ts +0 -54
  41. package/dist/commands/preview.d.ts.map +0 -1
  42. package/dist/commands/preview.js +0 -352
  43. package/dist/commands/preview.js.map +0 -1
  44. package/dist/commands/quality/check.d.ts +0 -31
  45. package/dist/commands/quality/check.d.ts.map +0 -1
  46. package/dist/commands/quality/check.js +0 -242
  47. package/dist/commands/quality/check.js.map +0 -1
  48. package/dist/commands/quality/index.d.ts +0 -8
  49. package/dist/commands/quality/index.d.ts.map +0 -1
  50. package/dist/commands/quality/index.js +0 -14
  51. package/dist/commands/quality/index.js.map +0 -1
  52. package/dist/commands/quality/setup-quality.d.ts +0 -23
  53. package/dist/commands/quality/setup-quality.d.ts.map +0 -1
  54. package/dist/commands/quality/setup-quality.js +0 -452
  55. package/dist/commands/quality/setup-quality.js.map +0 -1
  56. package/dist/commands/quality/tidy.d.ts +0 -41
  57. package/dist/commands/quality/tidy.d.ts.map +0 -1
  58. package/dist/commands/quality/tidy.js +0 -466
  59. package/dist/commands/quality/tidy.js.map +0 -1
  60. package/dist/commands/quality/utils.d.ts +0 -73
  61. package/dist/commands/quality/utils.d.ts.map +0 -1
  62. package/dist/commands/quality/utils.js +0 -158
  63. package/dist/commands/quality/utils.js.map +0 -1
  64. package/dist/fix/analytics.d.ts +0 -121
  65. package/dist/fix/analytics.d.ts.map +0 -1
  66. package/dist/fix/analytics.js +0 -289
  67. package/dist/fix/analytics.js.map +0 -1
  68. package/dist/fix/audit.d.ts +0 -61
  69. package/dist/fix/audit.d.ts.map +0 -1
  70. package/dist/fix/audit.js +0 -149
  71. package/dist/fix/audit.js.map +0 -1
  72. package/dist/fix/config.d.ts +0 -78
  73. package/dist/fix/config.d.ts.map +0 -1
  74. package/dist/fix/config.js +0 -200
  75. package/dist/fix/config.js.map +0 -1
  76. package/dist/fix/impact.d.ts +0 -74
  77. package/dist/fix/impact.d.ts.map +0 -1
  78. package/dist/fix/impact.js +0 -281
  79. package/dist/fix/impact.js.map +0 -1
  80. package/dist/fix/learning.d.ts +0 -109
  81. package/dist/fix/learning.d.ts.map +0 -1
  82. package/dist/fix/learning.js +0 -296
  83. package/dist/fix/learning.js.map +0 -1
  84. package/dist/fix/metrics.d.ts +0 -106
  85. package/dist/fix/metrics.d.ts.map +0 -1
  86. package/dist/fix/metrics.js +0 -138
  87. package/dist/fix/metrics.js.map +0 -1
  88. package/dist/fix/parallel.d.ts +0 -69
  89. package/dist/fix/parallel.d.ts.map +0 -1
  90. package/dist/fix/parallel.js +0 -203
  91. package/dist/fix/parallel.js.map +0 -1
  92. package/dist/fix/report.d.ts +0 -40
  93. package/dist/fix/report.d.ts.map +0 -1
  94. package/dist/fix/report.js +0 -212
  95. package/dist/fix/report.js.map +0 -1
  96. package/dist/fix/strategy.d.ts +0 -53
  97. package/dist/fix/strategy.d.ts.map +0 -1
  98. package/dist/fix/strategy.js +0 -143
  99. package/dist/fix/strategy.js.map +0 -1
  100. package/dist/fix/templates.d.ts +0 -58
  101. package/dist/fix/templates.d.ts.map +0 -1
  102. package/dist/fix/templates.js +0 -259
  103. package/dist/fix/templates.js.map +0 -1
  104. package/dist/fix/testing.d.ts +0 -68
  105. package/dist/fix/testing.d.ts.map +0 -1
  106. package/dist/fix/testing.js +0 -245
  107. package/dist/fix/testing.js.map +0 -1
  108. package/dist/fix/validation.d.ts +0 -71
  109. package/dist/fix/validation.d.ts.map +0 -1
  110. package/dist/fix/validation.js +0 -267
  111. package/dist/fix/validation.js.map +0 -1
  112. package/dist/fix/visualization.d.ts +0 -73
  113. package/dist/fix/visualization.d.ts.map +0 -1
  114. package/dist/fix/visualization.js +0 -243
  115. package/dist/fix/visualization.js.map +0 -1
  116. package/dist/runtime/cli-errors.d.ts +0 -38
  117. package/dist/runtime/cli-errors.d.ts.map +0 -1
  118. package/dist/runtime/cli-errors.js +0 -354
  119. package/dist/runtime/cli-errors.js.map +0 -1
  120. package/dist/runtime/owner-mode.d.ts +0 -48
  121. package/dist/runtime/owner-mode.d.ts.map +0 -1
  122. package/dist/runtime/owner-mode.js +0 -284
  123. package/dist/runtime/owner-mode.js.map +0 -1
  124. package/dist/scanner/index.d.ts +0 -8
  125. package/dist/scanner/index.d.ts.map +0 -1
  126. package/dist/scanner/index.js +0 -15
  127. package/dist/scanner/index.js.map +0 -1
  128. package/dist/scanner/placeholder-detector.d.ts +0 -56
  129. package/dist/scanner/placeholder-detector.d.ts.map +0 -1
  130. package/dist/scanner/placeholder-detector.js +0 -220
  131. package/dist/scanner/placeholder-detector.js.map +0 -1
  132. package/dist/scanner/route-detector.d.ts +0 -100
  133. package/dist/scanner/route-detector.d.ts.map +0 -1
  134. package/dist/scanner/route-detector.js +0 -455
  135. package/dist/scanner/route-detector.js.map +0 -1
  136. package/dist/scanner/scoring.d.ts +0 -67
  137. package/dist/scanner/scoring.d.ts.map +0 -1
  138. package/dist/scanner/scoring.js +0 -284
  139. package/dist/scanner/scoring.js.map +0 -1
  140. package/dist/ship-baseline.d.ts +0 -56
  141. package/dist/ship-baseline.d.ts.map +0 -1
  142. package/dist/ship-baseline.js +0 -194
  143. package/dist/ship-baseline.js.map +0 -1
  144. package/dist/ship-config.d.ts +0 -91
  145. package/dist/ship-config.d.ts.map +0 -1
  146. package/dist/ship-config.js +0 -133
  147. package/dist/ship-config.js.map +0 -1
  148. package/dist/ship-data-loader.d.ts +0 -70
  149. package/dist/ship-data-loader.d.ts.map +0 -1
  150. package/dist/ship-data-loader.js +0 -301
  151. package/dist/ship-data-loader.js.map +0 -1
  152. package/dist/utils/ai-helpers.d.ts +0 -72
  153. package/dist/utils/ai-helpers.d.ts.map +0 -1
  154. package/dist/utils/ai-helpers.js +0 -339
  155. package/dist/utils/ai-helpers.js.map +0 -1
  156. package/dist/utils/validation.d.ts +0 -34
  157. package/dist/utils/validation.d.ts.map +0 -1
  158. package/dist/utils/validation.js +0 -160
  159. package/dist/utils/validation.js.map +0 -1
@@ -1,466 +0,0 @@
1
- "use strict";
2
- /**
3
- * guardrail tidy command
4
- * Read-only hygiene scanner that detects missing/weak repo quality signals
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.runTidyChecks = runTidyChecks;
8
- exports.registerTidyCommand = registerTidyCommand;
9
- const path_1 = require("path");
10
- const fs_1 = require("fs");
11
- const exit_codes_1 = require("../../runtime/exit-codes");
12
- const utils_1 = require("./utils");
13
- // Color helpers
14
- const c = {
15
- reset: '\x1b[0m',
16
- bold: (s) => `\x1b[1m${s}\x1b[0m`,
17
- dim: (s) => `\x1b[2m${s}\x1b[0m`,
18
- high: (s) => `\x1b[31m${s}\x1b[0m`,
19
- medium: (s) => `\x1b[33m${s}\x1b[0m`,
20
- low: (s) => `\x1b[36m${s}\x1b[0m`,
21
- success: (s) => `\x1b[32m${s}\x1b[0m`,
22
- info: (s) => `\x1b[34m${s}\x1b[0m`,
23
- };
24
- /**
25
- * Check for .gitignore
26
- */
27
- function checkGitignore(projectPath) {
28
- const checks = [];
29
- const gitignorePath = (0, path_1.join)(projectPath, '.gitignore');
30
- const hasGitignore = (0, utils_1.fileExists)(gitignorePath);
31
- if (!hasGitignore) {
32
- checks.push({
33
- id: 'gitignore-missing',
34
- category: 'hygiene',
35
- severity: 'fail',
36
- message: '.gitignore file is missing',
37
- suggestion: 'Create .gitignore file with common patterns',
38
- scoreImpact: -20,
39
- });
40
- }
41
- else {
42
- const content = (0, utils_1.readFile)(gitignorePath);
43
- if (content && !content.includes('.guardrail/')) {
44
- checks.push({
45
- id: 'gitignore-missing-guardrail',
46
- category: 'hygiene',
47
- severity: 'warn',
48
- message: '.gitignore does not include .guardrail/',
49
- file: '.gitignore',
50
- suggestion: 'Add .guardrail/ to .gitignore',
51
- scoreImpact: -5,
52
- });
53
- }
54
- }
55
- return checks;
56
- }
57
- /**
58
- * Check for .editorconfig
59
- */
60
- function checkEditorConfig(projectPath) {
61
- const checks = [];
62
- const editorConfigPath = (0, path_1.join)(projectPath, '.editorconfig');
63
- if (!(0, utils_1.fileExists)(editorConfigPath)) {
64
- checks.push({
65
- id: 'editorconfig-missing',
66
- category: 'hygiene',
67
- severity: 'warn',
68
- message: '.editorconfig file is missing',
69
- suggestion: 'Create .editorconfig for consistent editor settings',
70
- scoreImpact: -10,
71
- });
72
- }
73
- return checks;
74
- }
75
- /**
76
- * Check for README
77
- */
78
- function checkReadme(projectPath) {
79
- const checks = [];
80
- const readmePaths = ['README.md', 'README.txt', 'README'];
81
- const hasReadme = readmePaths.some((p) => (0, utils_1.fileExists)((0, path_1.join)(projectPath, p)));
82
- if (!hasReadme) {
83
- checks.push({
84
- id: 'readme-missing',
85
- category: 'documentation',
86
- severity: 'fail',
87
- message: 'README file is missing',
88
- suggestion: 'Create README.md with project description',
89
- scoreImpact: -15,
90
- });
91
- }
92
- return checks;
93
- }
94
- /**
95
- * Check for license file
96
- */
97
- function checkLicense(projectPath) {
98
- const checks = [];
99
- const licensePaths = ['LICENSE', 'LICENSE.txt', 'LICENSE.md', 'LICENCE'];
100
- const hasLicense = licensePaths.some((p) => (0, utils_1.fileExists)((0, path_1.join)(projectPath, p)));
101
- if (!hasLicense) {
102
- checks.push({
103
- id: 'license-missing',
104
- category: 'documentation',
105
- severity: 'info',
106
- message: 'License file is missing',
107
- suggestion: 'Add a LICENSE file',
108
- scoreImpact: -5,
109
- });
110
- }
111
- return checks;
112
- }
113
- /**
114
- * Check for lockfile
115
- */
116
- function checkLockfile(info) {
117
- const checks = [];
118
- if (info.hasPackageJson && !info.hasLockfile) {
119
- checks.push({
120
- id: 'lockfile-missing',
121
- category: 'hygiene',
122
- severity: 'warn',
123
- message: 'Package lockfile is missing',
124
- suggestion: `Commit ${info.packageManager || 'package'} lockfile for reproducible builds`,
125
- scoreImpact: -10,
126
- });
127
- }
128
- return checks;
129
- }
130
- /**
131
- * Check for large files
132
- */
133
- function checkLargeFiles(projectPath) {
134
- const checks = [];
135
- const maxSize = 10 * 1024 * 1024; // 10MB
136
- try {
137
- const entries = (0, fs_1.readdirSync)(projectPath);
138
- for (const entry of entries) {
139
- const filePath = (0, path_1.join)(projectPath, entry);
140
- try {
141
- const stat = (0, fs_1.statSync)(filePath);
142
- if (stat.isFile() && stat.size > maxSize) {
143
- const relPath = (0, utils_1.getRelativePath)(projectPath, filePath);
144
- checks.push({
145
- id: 'large-file',
146
- category: 'safety',
147
- severity: 'warn',
148
- message: `Large file detected: ${relPath} (${(stat.size / 1024 / 1024).toFixed(1)}MB)`,
149
- file: relPath,
150
- suggestion: 'Consider using Git LFS or excluding from repo',
151
- scoreImpact: -5,
152
- });
153
- }
154
- }
155
- catch {
156
- // Ignore individual file errors
157
- }
158
- }
159
- }
160
- catch {
161
- // Ignore errors
162
- }
163
- return checks;
164
- }
165
- /**
166
- * Check package.json scripts
167
- */
168
- function checkPackageScripts(info) {
169
- const checks = [];
170
- const pkg = info.packageJson;
171
- if (!pkg)
172
- return checks;
173
- const qualityScripts = ['lint', 'test', 'build', 'typecheck', 'format:check'];
174
- const missingScripts = [];
175
- for (const script of qualityScripts) {
176
- if (!(0, utils_1.hasScript)(pkg, script)) {
177
- missingScripts.push(script);
178
- }
179
- }
180
- if (missingScripts.length > 0) {
181
- checks.push({
182
- id: 'scripts-missing',
183
- category: 'automation',
184
- severity: 'warn',
185
- message: `Missing quality scripts: ${missingScripts.join(', ')}`,
186
- file: 'package.json',
187
- suggestion: 'Add quality scripts to package.json',
188
- scoreImpact: -10,
189
- });
190
- }
191
- return checks;
192
- }
193
- /**
194
- * Check for CI presence
195
- */
196
- function checkCI(projectPath) {
197
- const checks = [];
198
- const ciPaths = [
199
- '.github/workflows',
200
- '.gitlab-ci.yml',
201
- '.circleci/config.yml',
202
- '.travis.yml',
203
- '.azure-pipelines.yml',
204
- ];
205
- let hasCI = false;
206
- for (const ciPath of ciPaths) {
207
- const fullPath = (0, path_1.join)(projectPath, ciPath);
208
- if ((0, utils_1.fileExists)(fullPath) || (0, utils_1.dirExists)(fullPath)) {
209
- hasCI = true;
210
- break;
211
- }
212
- }
213
- if (!hasCI) {
214
- checks.push({
215
- id: 'ci-missing',
216
- category: 'automation',
217
- severity: 'info',
218
- message: 'CI/CD configuration not detected',
219
- suggestion: 'Set up CI/CD pipeline (e.g., GitHub Actions)',
220
- scoreImpact: -5,
221
- });
222
- }
223
- return checks;
224
- }
225
- /**
226
- * Check markdown files for issues
227
- */
228
- function checkMarkdown(projectPath) {
229
- const checks = [];
230
- const readmePath = (0, path_1.join)(projectPath, 'README.md');
231
- if (!(0, utils_1.fileExists)(readmePath))
232
- return checks;
233
- const content = (0, utils_1.readFile)(readmePath);
234
- if (!content)
235
- return checks;
236
- // Check for extremely long lines
237
- const lines = content.split('\n');
238
- let longLines = 0;
239
- for (let i = 0; i < lines.length; i++) {
240
- if (lines[i].length > 200) {
241
- longLines++;
242
- }
243
- }
244
- if (longLines > 0) {
245
- checks.push({
246
- id: 'markdown-long-lines',
247
- category: 'documentation',
248
- severity: 'info',
249
- message: `README.md contains ${longLines} line(s) longer than 200 characters`,
250
- file: 'README.md',
251
- suggestion: 'Break long lines for better readability',
252
- scoreImpact: -2,
253
- });
254
- }
255
- // Check TODO count
256
- const todoCount = (content.match(/TODO/gi) || []).length;
257
- if (todoCount > 5) {
258
- checks.push({
259
- id: 'markdown-many-todos',
260
- category: 'documentation',
261
- severity: 'info',
262
- message: `README.md contains ${todoCount} TODO comments`,
263
- file: 'README.md',
264
- suggestion: 'Consider addressing or organizing TODOs',
265
- scoreImpact: -2,
266
- });
267
- }
268
- return checks;
269
- }
270
- /**
271
- * Run all tidy checks
272
- */
273
- function runTidyChecks(projectPath) {
274
- const info = (0, utils_1.getProjectInfo)(projectPath);
275
- const checks = [];
276
- // Run all checks
277
- checks.push(...checkGitignore(projectPath));
278
- checks.push(...checkEditorConfig(projectPath));
279
- checks.push(...checkReadme(projectPath));
280
- checks.push(...checkLicense(projectPath));
281
- checks.push(...checkLockfile(info));
282
- checks.push(...checkLargeFiles(projectPath));
283
- checks.push(...checkPackageScripts(info));
284
- checks.push(...checkCI(projectPath));
285
- checks.push(...checkMarkdown(projectPath));
286
- // Calculate scores
287
- const baseScore = 100;
288
- const categoryScores = {
289
- hygiene: baseScore,
290
- automation: baseScore,
291
- documentation: baseScore,
292
- safety: baseScore,
293
- };
294
- for (const check of checks) {
295
- categoryScores[check.category] += check.scoreImpact;
296
- }
297
- // Clamp scores to 0-100
298
- const hygiene = Math.max(0, Math.min(100, categoryScores.hygiene));
299
- const automation = Math.max(0, Math.min(100, categoryScores.automation));
300
- const documentation = Math.max(0, Math.min(100, categoryScores.documentation));
301
- const safety = Math.max(0, Math.min(100, categoryScores.safety));
302
- const overall = Math.round((hygiene + automation + documentation + safety) / 4);
303
- const summary = {
304
- total: checks.length,
305
- info: checks.filter((c) => c.severity === 'info').length,
306
- warn: checks.filter((c) => c.severity === 'warn').length,
307
- fail: checks.filter((c) => c.severity === 'fail').length,
308
- };
309
- return {
310
- timestamp: new Date().toISOString(),
311
- projectPath,
312
- checks,
313
- scores: {
314
- hygiene,
315
- automation,
316
- documentation,
317
- safety,
318
- overall,
319
- },
320
- summary,
321
- };
322
- }
323
- /**
324
- * Generate markdown report
325
- */
326
- function generateMarkdownReport(report) {
327
- const lines = [];
328
- lines.push('# Guardrail Tidy Report');
329
- lines.push('');
330
- lines.push(`**Generated:** ${new Date(report.timestamp).toLocaleString()}`);
331
- lines.push(`**Project:** ${report.projectPath}`);
332
- lines.push('');
333
- // Summary
334
- lines.push('## Summary');
335
- lines.push('');
336
- lines.push(`- **Overall Score:** ${report.scores.overall}/100`);
337
- lines.push(`- **Total Checks:** ${report.summary.total}`);
338
- lines.push(`- **Fail:** ${report.summary.fail} | **Warn:** ${report.summary.warn} | **Info:** ${report.summary.info}`);
339
- lines.push('');
340
- // Category Scores
341
- lines.push('## Category Scores');
342
- lines.push('');
343
- lines.push(`- **Hygiene:** ${report.scores.hygiene}/100`);
344
- lines.push(`- **Automation:** ${report.scores.automation}/100`);
345
- lines.push(`- **Documentation:** ${report.scores.documentation}/100`);
346
- lines.push(`- **Safety:** ${report.scores.safety}/100`);
347
- lines.push('');
348
- // Checks by category
349
- const categories = ['hygiene', 'automation', 'documentation', 'safety'];
350
- for (const category of categories) {
351
- const categoryChecks = report.checks.filter((c) => c.category === category);
352
- if (categoryChecks.length === 0)
353
- continue;
354
- lines.push(`## ${category.charAt(0).toUpperCase() + category.slice(1)}`);
355
- lines.push('');
356
- for (const check of categoryChecks) {
357
- const severityIcon = check.severity === 'fail' ? '❌' : check.severity === 'warn' ? '⚠️' : 'ℹ️';
358
- lines.push(`### ${severityIcon} ${check.message}`);
359
- if (check.file) {
360
- lines.push(`- **File:** ${check.file}`);
361
- }
362
- if (check.suggestion) {
363
- lines.push(`- **Suggestion:** ${check.suggestion}`);
364
- }
365
- lines.push('');
366
- }
367
- }
368
- return lines.join('\n');
369
- }
370
- /**
371
- * Save report to .guardrail/tidy/
372
- */
373
- function saveReport(report, projectPath) {
374
- const outputDir = (0, path_1.join)(projectPath, '.guardrail', 'tidy');
375
- (0, fs_1.mkdirSync)(outputDir, { recursive: true });
376
- // Save JSON
377
- const jsonPath = (0, path_1.join)(outputDir, 'report.json');
378
- (0, fs_1.writeFileSync)(jsonPath, JSON.stringify(report, null, 2));
379
- // Save Markdown
380
- const mdPath = (0, path_1.join)(outputDir, 'report.md');
381
- const mdContent = generateMarkdownReport(report);
382
- (0, fs_1.writeFileSync)(mdPath, mdContent);
383
- }
384
- /**
385
- * Output report to console
386
- */
387
- function outputReport(report, json, ci) {
388
- if (json) {
389
- console.log(JSON.stringify(report, null, 2));
390
- return;
391
- }
392
- if (ci) {
393
- // CI mode: no colors, deterministic
394
- console.log(`Tidy Report - Score: ${report.scores.overall}/100`);
395
- console.log(`Checks: ${report.summary.total} (fail: ${report.summary.fail}, warn: ${report.summary.warn}, info: ${report.summary.info})`);
396
- return;
397
- }
398
- // Human-readable output
399
- console.log(`\n${c.bold('📋 TIDY REPORT')}\n`);
400
- console.log(` ${c.dim('Project:')} ${report.projectPath}`);
401
- console.log(` ${c.dim('Overall Score:')} ${c.bold(`${report.scores.overall}/100`)}\n`);
402
- console.log(` ${c.bold('Category Scores:')}`);
403
- console.log(` Hygiene: ${report.scores.hygiene}/100`);
404
- console.log(` Automation: ${report.scores.automation}/100`);
405
- console.log(` Documentation: ${report.scores.documentation}/100`);
406
- console.log(` Safety: ${report.scores.safety}/100\n`);
407
- console.log(` ${c.bold('Summary:')}`);
408
- console.log(` Total: ${report.summary.total} | ${c.high(`Fail: ${report.summary.fail}`)} | ${c.medium(`Warn: ${report.summary.warn}`)} | ${c.info(`Info: ${report.summary.info}`)}\n`);
409
- if (report.checks.length > 0) {
410
- console.log(` ${c.bold('Issues:')}\n`);
411
- const categories = ['hygiene', 'automation', 'documentation', 'safety'];
412
- for (const category of categories) {
413
- const categoryChecks = report.checks.filter((c) => c.category === category);
414
- if (categoryChecks.length === 0)
415
- continue;
416
- console.log(` ${c.bold(category.charAt(0).toUpperCase() + category.slice(1) + ':')}`);
417
- for (const check of categoryChecks) {
418
- const icon = check.severity === 'fail'
419
- ? c.high('✗')
420
- : check.severity === 'warn'
421
- ? c.medium('⚠')
422
- : c.info('ℹ');
423
- console.log(` ${icon} ${check.message}`);
424
- if (check.file) {
425
- console.log(` ${c.dim('File:')} ${check.file}`);
426
- }
427
- if (check.suggestion) {
428
- console.log(` ${c.dim('Fix:')} ${check.suggestion}`);
429
- }
430
- }
431
- console.log('');
432
- }
433
- }
434
- console.log(` ${c.success('✓')} Report saved to .guardrail/tidy/\n`);
435
- }
436
- /**
437
- * Register tidy command
438
- */
439
- function registerTidyCommand(program, printLogo) {
440
- program
441
- .command('tidy')
442
- .description('Scan repository for hygiene and quality signals (read-only)')
443
- .option('-p, --path <path>', 'Project path to scan', '.')
444
- .option('--json', 'Output results as JSON', false)
445
- .option('--ci', 'CI mode: no spinners, deterministic output', false)
446
- .action(async (opts) => {
447
- if (!opts.ci) {
448
- printLogo();
449
- }
450
- const projectPath = (0, path_1.resolve)(opts.path);
451
- if (!(0, fs_1.existsSync)(projectPath)) {
452
- (0, exit_codes_1.exitWith)(exit_codes_1.ExitCode.USER_ERROR, `Path does not exist: ${projectPath}`);
453
- }
454
- const report = runTidyChecks(projectPath);
455
- saveReport(report, projectPath);
456
- outputReport(report, opts.json, opts.ci);
457
- // Exit with appropriate code
458
- if (report.summary.fail > 0) {
459
- (0, exit_codes_1.exitWith)(exit_codes_1.ExitCode.POLICY_FAIL, `${report.summary.fail} critical issues found`);
460
- }
461
- if (report.summary.warn > 0) {
462
- (0, exit_codes_1.exitWith)(exit_codes_1.ExitCode.POLICY_FAIL, `${report.summary.warn} warnings found`);
463
- }
464
- });
465
- }
466
- //# sourceMappingURL=tidy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tidy.js","sourceRoot":"","sources":["../../../src/commands/quality/tidy.ts"],"names":[],"mappings":"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"}
@@ -1,73 +0,0 @@
1
- /**
2
- * Shared utilities for quality commands (tidy, setup-quality, check)
3
- */
4
- import { type DetectedFramework } from '../../init/detect-framework';
5
- export interface PackageJson {
6
- name?: string;
7
- scripts?: Record<string, string>;
8
- dependencies?: Record<string, string>;
9
- devDependencies?: Record<string, string>;
10
- }
11
- export interface ProjectInfo {
12
- path: string;
13
- hasPackageJson: boolean;
14
- hasPyprojectToml: boolean;
15
- hasTsconfig: boolean;
16
- packageJson?: PackageJson;
17
- framework?: DetectedFramework;
18
- packageManager?: 'npm' | 'pnpm' | 'yarn';
19
- hasLockfile: boolean;
20
- lockfileType?: 'package-lock.json' | 'pnpm-lock.yaml' | 'yarn.lock';
21
- }
22
- /**
23
- * Detect package manager from lockfiles
24
- */
25
- export declare function detectPackageManager(projectPath: string): {
26
- manager: 'npm' | 'pnpm' | 'yarn' | null;
27
- lockfile: string | null;
28
- };
29
- /**
30
- * Load package.json if it exists
31
- */
32
- export declare function loadPackageJson(projectPath: string): PackageJson | null;
33
- /**
34
- * Get comprehensive project info
35
- */
36
- export declare function getProjectInfo(projectPath: string): ProjectInfo;
37
- /**
38
- * Check if file exists
39
- */
40
- export declare function fileExists(filePath: string): boolean;
41
- /**
42
- * Check if directory exists
43
- */
44
- export declare function dirExists(dirPath: string): boolean;
45
- /**
46
- * Get file size in bytes
47
- */
48
- export declare function getFileSize(filePath: string): number;
49
- /**
50
- * Read file content safely
51
- */
52
- export declare function readFile(filePath: string): string | null;
53
- /**
54
- * Check if a dependency exists in package.json
55
- */
56
- export declare function hasDependency(pkg: PackageJson | null, depName: string): boolean;
57
- /**
58
- * Get scripts from package.json
59
- */
60
- export declare function getScripts(pkg: PackageJson | null): string[];
61
- /**
62
- * Check if a script exists
63
- */
64
- export declare function hasScript(pkg: PackageJson | null, scriptName: string): boolean;
65
- /**
66
- * Find files matching pattern (simple, non-recursive in root)
67
- */
68
- export declare function findFiles(projectPath: string, patterns: string[]): string[];
69
- /**
70
- * Get relative path from project root
71
- */
72
- export declare function getRelativePath(projectPath: string, filePath: string): string;
73
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/commands/quality/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEtF,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,WAAW,CAAC;CACrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG;IACzD,OAAO,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAWA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAUvE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAkB/D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMlD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,WAAW,GAAG,IAAI,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAKT;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,EAAE,CAG5D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAG9E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAa3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7E"}