@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.
- package/LICENSE +1 -1
- package/dist/bundles/vibecheck-core.js +20 -20
- package/dist/commands/secrets-allowlist.js +4 -4
- package/dist/commands/secrets-allowlist.js.map +1 -1
- package/dist/commands/ship-consolidated.js +193 -193
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/init/ci-generator.d.ts +2 -2
- package/dist/init/hooks-installer.d.ts +2 -2
- package/dist/init/index.d.ts +1 -1
- package/dist/init/index.d.ts.map +1 -1
- package/dist/init/index.js +2 -2
- package/dist/init/index.js.map +1 -1
- package/dist/init/templates.d.ts +6 -285
- package/dist/init/templates.d.ts.map +1 -1
- package/dist/init/templates.js +2 -3
- package/dist/init/templates.js.map +1 -1
- package/dist/runtime/json-output.d.ts +2 -2
- package/package.json +11 -3
- package/dist/bundles/guardrail-core.js +0 -25799
- package/dist/bundles/guardrail-security.js +0 -208687
- package/dist/bundles/guardrail-ship.js +0 -2318
- package/dist/commands/autopilot-decision.d.ts +0 -24
- package/dist/commands/autopilot-decision.d.ts.map +0 -1
- package/dist/commands/autopilot-decision.js +0 -304
- package/dist/commands/autopilot-decision.js.map +0 -1
- package/dist/commands/autopilot.d.ts +0 -33
- package/dist/commands/autopilot.d.ts.map +0 -1
- package/dist/commands/autopilot.js +0 -1539
- package/dist/commands/autopilot.js.map +0 -1
- package/dist/commands/context.d.ts +0 -8
- package/dist/commands/context.d.ts.map +0 -1
- package/dist/commands/context.js +0 -340
- package/dist/commands/context.js.map +0 -1
- package/dist/commands/debug.d.ts +0 -78
- package/dist/commands/debug.d.ts.map +0 -1
- package/dist/commands/debug.js +0 -381
- package/dist/commands/debug.js.map +0 -1
- package/dist/commands/preview.d.ts +0 -54
- package/dist/commands/preview.d.ts.map +0 -1
- package/dist/commands/preview.js +0 -352
- package/dist/commands/preview.js.map +0 -1
- package/dist/commands/quality/check.d.ts +0 -31
- package/dist/commands/quality/check.d.ts.map +0 -1
- package/dist/commands/quality/check.js +0 -242
- package/dist/commands/quality/check.js.map +0 -1
- package/dist/commands/quality/index.d.ts +0 -8
- package/dist/commands/quality/index.d.ts.map +0 -1
- package/dist/commands/quality/index.js +0 -14
- package/dist/commands/quality/index.js.map +0 -1
- package/dist/commands/quality/setup-quality.d.ts +0 -23
- package/dist/commands/quality/setup-quality.d.ts.map +0 -1
- package/dist/commands/quality/setup-quality.js +0 -452
- package/dist/commands/quality/setup-quality.js.map +0 -1
- package/dist/commands/quality/tidy.d.ts +0 -41
- package/dist/commands/quality/tidy.d.ts.map +0 -1
- package/dist/commands/quality/tidy.js +0 -466
- package/dist/commands/quality/tidy.js.map +0 -1
- package/dist/commands/quality/utils.d.ts +0 -73
- package/dist/commands/quality/utils.d.ts.map +0 -1
- package/dist/commands/quality/utils.js +0 -158
- package/dist/commands/quality/utils.js.map +0 -1
- package/dist/fix/analytics.d.ts +0 -121
- package/dist/fix/analytics.d.ts.map +0 -1
- package/dist/fix/analytics.js +0 -289
- package/dist/fix/analytics.js.map +0 -1
- package/dist/fix/audit.d.ts +0 -61
- package/dist/fix/audit.d.ts.map +0 -1
- package/dist/fix/audit.js +0 -149
- package/dist/fix/audit.js.map +0 -1
- package/dist/fix/config.d.ts +0 -78
- package/dist/fix/config.d.ts.map +0 -1
- package/dist/fix/config.js +0 -200
- package/dist/fix/config.js.map +0 -1
- package/dist/fix/impact.d.ts +0 -74
- package/dist/fix/impact.d.ts.map +0 -1
- package/dist/fix/impact.js +0 -281
- package/dist/fix/impact.js.map +0 -1
- package/dist/fix/learning.d.ts +0 -109
- package/dist/fix/learning.d.ts.map +0 -1
- package/dist/fix/learning.js +0 -296
- package/dist/fix/learning.js.map +0 -1
- package/dist/fix/metrics.d.ts +0 -106
- package/dist/fix/metrics.d.ts.map +0 -1
- package/dist/fix/metrics.js +0 -138
- package/dist/fix/metrics.js.map +0 -1
- package/dist/fix/parallel.d.ts +0 -69
- package/dist/fix/parallel.d.ts.map +0 -1
- package/dist/fix/parallel.js +0 -203
- package/dist/fix/parallel.js.map +0 -1
- package/dist/fix/report.d.ts +0 -40
- package/dist/fix/report.d.ts.map +0 -1
- package/dist/fix/report.js +0 -212
- package/dist/fix/report.js.map +0 -1
- package/dist/fix/strategy.d.ts +0 -53
- package/dist/fix/strategy.d.ts.map +0 -1
- package/dist/fix/strategy.js +0 -143
- package/dist/fix/strategy.js.map +0 -1
- package/dist/fix/templates.d.ts +0 -58
- package/dist/fix/templates.d.ts.map +0 -1
- package/dist/fix/templates.js +0 -259
- package/dist/fix/templates.js.map +0 -1
- package/dist/fix/testing.d.ts +0 -68
- package/dist/fix/testing.d.ts.map +0 -1
- package/dist/fix/testing.js +0 -245
- package/dist/fix/testing.js.map +0 -1
- package/dist/fix/validation.d.ts +0 -71
- package/dist/fix/validation.d.ts.map +0 -1
- package/dist/fix/validation.js +0 -267
- package/dist/fix/validation.js.map +0 -1
- package/dist/fix/visualization.d.ts +0 -73
- package/dist/fix/visualization.d.ts.map +0 -1
- package/dist/fix/visualization.js +0 -243
- package/dist/fix/visualization.js.map +0 -1
- package/dist/runtime/cli-errors.d.ts +0 -38
- package/dist/runtime/cli-errors.d.ts.map +0 -1
- package/dist/runtime/cli-errors.js +0 -354
- package/dist/runtime/cli-errors.js.map +0 -1
- package/dist/runtime/owner-mode.d.ts +0 -48
- package/dist/runtime/owner-mode.d.ts.map +0 -1
- package/dist/runtime/owner-mode.js +0 -284
- package/dist/runtime/owner-mode.js.map +0 -1
- package/dist/scanner/index.d.ts +0 -8
- package/dist/scanner/index.d.ts.map +0 -1
- package/dist/scanner/index.js +0 -15
- package/dist/scanner/index.js.map +0 -1
- package/dist/scanner/placeholder-detector.d.ts +0 -56
- package/dist/scanner/placeholder-detector.d.ts.map +0 -1
- package/dist/scanner/placeholder-detector.js +0 -220
- package/dist/scanner/placeholder-detector.js.map +0 -1
- package/dist/scanner/route-detector.d.ts +0 -100
- package/dist/scanner/route-detector.d.ts.map +0 -1
- package/dist/scanner/route-detector.js +0 -455
- package/dist/scanner/route-detector.js.map +0 -1
- package/dist/scanner/scoring.d.ts +0 -67
- package/dist/scanner/scoring.d.ts.map +0 -1
- package/dist/scanner/scoring.js +0 -284
- package/dist/scanner/scoring.js.map +0 -1
- package/dist/ship-baseline.d.ts +0 -56
- package/dist/ship-baseline.d.ts.map +0 -1
- package/dist/ship-baseline.js +0 -194
- package/dist/ship-baseline.js.map +0 -1
- package/dist/ship-config.d.ts +0 -91
- package/dist/ship-config.d.ts.map +0 -1
- package/dist/ship-config.js +0 -133
- package/dist/ship-config.js.map +0 -1
- package/dist/ship-data-loader.d.ts +0 -70
- package/dist/ship-data-loader.d.ts.map +0 -1
- package/dist/ship-data-loader.js +0 -301
- package/dist/ship-data-loader.js.map +0 -1
- package/dist/utils/ai-helpers.d.ts +0 -72
- package/dist/utils/ai-helpers.d.ts.map +0 -1
- package/dist/utils/ai-helpers.js +0 -339
- package/dist/utils/ai-helpers.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -34
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -160
- package/dist/utils/validation.js.map +0 -1
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Quality commands module
|
|
4
|
-
* Exports all quality-related commands (tidy, setup-quality, check)
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.registerCheckCommand = exports.registerSetupQualityCommand = exports.registerTidyCommand = void 0;
|
|
8
|
-
var tidy_1 = require("./tidy");
|
|
9
|
-
Object.defineProperty(exports, "registerTidyCommand", { enumerable: true, get: function () { return tidy_1.registerTidyCommand; } });
|
|
10
|
-
var setup_quality_1 = require("./setup-quality");
|
|
11
|
-
Object.defineProperty(exports, "registerSetupQualityCommand", { enumerable: true, get: function () { return setup_quality_1.registerSetupQualityCommand; } });
|
|
12
|
-
var check_1 = require("./check");
|
|
13
|
-
Object.defineProperty(exports, "registerCheckCommand", { enumerable: true, get: function () { return check_1.registerCheckCommand; } });
|
|
14
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/quality/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+BAA6C;AAApC,2GAAA,mBAAmB,OAAA;AAC5B,iDAA8D;AAArD,4HAAA,2BAA2B,OAAA;AACpC,iCAA+C;AAAtC,6GAAA,oBAAoB,OAAA"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* guardrail setup quality command
|
|
3
|
-
* Safe config pack generator that creates baseline quality files
|
|
4
|
-
*/
|
|
5
|
-
import { Command } from 'commander';
|
|
6
|
-
export interface FileChange {
|
|
7
|
-
path: string;
|
|
8
|
-
content: string;
|
|
9
|
-
exists: boolean;
|
|
10
|
-
action: 'create' | 'update';
|
|
11
|
-
}
|
|
12
|
-
export interface SetupQualityOptions {
|
|
13
|
-
projectPath: string;
|
|
14
|
-
dryRun: boolean;
|
|
15
|
-
force: boolean;
|
|
16
|
-
interactive: boolean;
|
|
17
|
-
presets?: string[];
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Register setup quality command
|
|
21
|
-
*/
|
|
22
|
-
export declare function registerSetupQualityCommand(program: Command, printLogo: () => void): void;
|
|
23
|
-
//# sourceMappingURL=setup-quality.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-quality.d.ts","sourceRoot":"","sources":["../../../src/commands/quality/setup-quality.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAwXD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,IAAI,GACpB,IAAI,CA0FN"}
|
|
@@ -1,452 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* guardrail setup quality command
|
|
4
|
-
* Safe config pack generator that creates baseline quality files
|
|
5
|
-
*/
|
|
6
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
-
if (k2 === undefined) k2 = k;
|
|
8
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
-
}
|
|
12
|
-
Object.defineProperty(o, k2, desc);
|
|
13
|
-
}) : (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
o[k2] = m[k];
|
|
16
|
-
}));
|
|
17
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
-
}) : function(o, v) {
|
|
20
|
-
o["default"] = v;
|
|
21
|
-
});
|
|
22
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
-
var ownKeys = function(o) {
|
|
24
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
-
var ar = [];
|
|
26
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
-
return ar;
|
|
28
|
-
};
|
|
29
|
-
return ownKeys(o);
|
|
30
|
-
};
|
|
31
|
-
return function (mod) {
|
|
32
|
-
if (mod && mod.__esModule) return mod;
|
|
33
|
-
var result = {};
|
|
34
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
-
__setModuleDefault(result, mod);
|
|
36
|
-
return result;
|
|
37
|
-
};
|
|
38
|
-
})();
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.registerSetupQualityCommand = registerSetupQualityCommand;
|
|
41
|
-
const path_1 = require("path");
|
|
42
|
-
const fs_1 = require("fs");
|
|
43
|
-
const exit_codes_1 = require("../../runtime/exit-codes");
|
|
44
|
-
const utils_1 = require("./utils");
|
|
45
|
-
const readline = __importStar(require("readline"));
|
|
46
|
-
// Color helpers
|
|
47
|
-
const c = {
|
|
48
|
-
reset: '\x1b[0m',
|
|
49
|
-
bold: (s) => `\x1b[1m${s}\x1b[0m`,
|
|
50
|
-
dim: (s) => `\x1b[2m${s}\x1b[0m`,
|
|
51
|
-
success: (s) => `\x1b[32m${s}\x1b[0m`,
|
|
52
|
-
info: (s) => `\x1b[34m${s}\x1b[0m`,
|
|
53
|
-
warning: (s) => `\x1b[33m${s}\x1b[0m`,
|
|
54
|
-
};
|
|
55
|
-
/**
|
|
56
|
-
* Minimal .editorconfig
|
|
57
|
-
*/
|
|
58
|
-
const EDITORCONFIG_CONTENT = `# EditorConfig is awesome: https://EditorConfig.org
|
|
59
|
-
|
|
60
|
-
root = true
|
|
61
|
-
|
|
62
|
-
[*]
|
|
63
|
-
charset = utf-8
|
|
64
|
-
end_of_line = lf
|
|
65
|
-
insert_final_newline = true
|
|
66
|
-
trim_trailing_whitespace = true
|
|
67
|
-
|
|
68
|
-
[*.md]
|
|
69
|
-
trim_trailing_whitespace = false
|
|
70
|
-
`;
|
|
71
|
-
/**
|
|
72
|
-
* Minimal .gitattributes
|
|
73
|
-
*/
|
|
74
|
-
const GITATTRIBUTES_CONTENT = `# Auto detect text files and perform LF normalization
|
|
75
|
-
* text=auto
|
|
76
|
-
|
|
77
|
-
# Force LF line endings for cross-platform consistency
|
|
78
|
-
*.js text eol=lf
|
|
79
|
-
*.jsx text eol=lf
|
|
80
|
-
*.ts text eol=lf
|
|
81
|
-
*.tsx text eol=lf
|
|
82
|
-
*.json text eol=lf
|
|
83
|
-
*.md text eol=lf
|
|
84
|
-
*.yml text eol=lf
|
|
85
|
-
*.yaml text eol=lf
|
|
86
|
-
*.sh text eol=lf
|
|
87
|
-
|
|
88
|
-
# Binary files
|
|
89
|
-
*.png binary
|
|
90
|
-
*.jpg binary
|
|
91
|
-
*.jpeg binary
|
|
92
|
-
*.gif binary
|
|
93
|
-
*.ico binary
|
|
94
|
-
*.pdf binary
|
|
95
|
-
`;
|
|
96
|
-
/**
|
|
97
|
-
* Minimal README skeleton
|
|
98
|
-
*/
|
|
99
|
-
const README_SKELETON = `# Project Name
|
|
100
|
-
|
|
101
|
-
Brief project description.
|
|
102
|
-
|
|
103
|
-
## Getting Started
|
|
104
|
-
|
|
105
|
-
## Development
|
|
106
|
-
|
|
107
|
-
## License
|
|
108
|
-
`;
|
|
109
|
-
/**
|
|
110
|
-
* Minimal CONTRIBUTING.md
|
|
111
|
-
*/
|
|
112
|
-
const CONTRIBUTING_SKELETON = `# Contributing
|
|
113
|
-
|
|
114
|
-
## Development Setup
|
|
115
|
-
|
|
116
|
-
## Code Style
|
|
117
|
-
|
|
118
|
-
## Submitting Changes
|
|
119
|
-
`;
|
|
120
|
-
/**
|
|
121
|
-
* Minimal SECURITY.md
|
|
122
|
-
*/
|
|
123
|
-
const SECURITY_SKELETON = `# Security Policy
|
|
124
|
-
|
|
125
|
-
## Supported Versions
|
|
126
|
-
|
|
127
|
-
## Reporting a Vulnerability
|
|
128
|
-
|
|
129
|
-
Please report security vulnerabilities to: [your-security-email]
|
|
130
|
-
`;
|
|
131
|
-
/**
|
|
132
|
-
* Prompt for user input
|
|
133
|
-
*/
|
|
134
|
-
function prompt(question) {
|
|
135
|
-
const rl = readline.createInterface({
|
|
136
|
-
input: process.stdin,
|
|
137
|
-
output: process.stdout,
|
|
138
|
-
});
|
|
139
|
-
return new Promise((resolve) => {
|
|
140
|
-
rl.question(question, (answer) => {
|
|
141
|
-
rl.close();
|
|
142
|
-
resolve(answer.trim());
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Prompt yes/no
|
|
148
|
-
*/
|
|
149
|
-
async function promptYesNo(question, defaultValue) {
|
|
150
|
-
const defaultText = defaultValue ? 'Y/n' : 'y/N';
|
|
151
|
-
const answer = await prompt(`${question} (${defaultText}): `);
|
|
152
|
-
if (!answer)
|
|
153
|
-
return defaultValue;
|
|
154
|
-
return /^y(es)?$/i.test(answer);
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Generate JS/TS preset files
|
|
158
|
-
*/
|
|
159
|
-
function generateJSTSPreset(projectPath, info) {
|
|
160
|
-
const changes = [];
|
|
161
|
-
const pkg = info.packageJson;
|
|
162
|
-
// .editorconfig
|
|
163
|
-
const editorConfigPath = (0, path_1.join)(projectPath, '.editorconfig');
|
|
164
|
-
if (!(0, utils_1.fileExists)(editorConfigPath)) {
|
|
165
|
-
changes.push({
|
|
166
|
-
path: editorConfigPath,
|
|
167
|
-
content: EDITORCONFIG_CONTENT,
|
|
168
|
-
exists: false,
|
|
169
|
-
action: 'create',
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
// .gitattributes
|
|
173
|
-
const gitAttributesPath = (0, path_1.join)(projectPath, '.gitattributes');
|
|
174
|
-
if (!(0, utils_1.fileExists)(gitAttributesPath)) {
|
|
175
|
-
changes.push({
|
|
176
|
-
path: gitAttributesPath,
|
|
177
|
-
content: GITATTRIBUTES_CONTENT,
|
|
178
|
-
exists: false,
|
|
179
|
-
action: 'create',
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
// Update package.json scripts (only if package.json exists)
|
|
183
|
-
if (pkg) {
|
|
184
|
-
const scripts = pkg.scripts || {};
|
|
185
|
-
const updates = {};
|
|
186
|
-
let needsUpdate = false;
|
|
187
|
-
// Check for eslint
|
|
188
|
-
const hasEslint = (0, utils_1.hasDependency)(pkg, 'eslint');
|
|
189
|
-
if (hasEslint && !scripts.lint) {
|
|
190
|
-
updates.lint = 'eslint .';
|
|
191
|
-
needsUpdate = true;
|
|
192
|
-
}
|
|
193
|
-
// Check for prettier or biome
|
|
194
|
-
const hasPrettier = (0, utils_1.hasDependency)(pkg, 'prettier');
|
|
195
|
-
const hasBiome = (0, utils_1.hasDependency)(pkg, '@biomejs/biome');
|
|
196
|
-
if ((hasPrettier || hasBiome) && !scripts['format:check']) {
|
|
197
|
-
if (hasBiome) {
|
|
198
|
-
updates['format:check'] = 'biome check .';
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
updates['format:check'] = 'prettier --check .';
|
|
202
|
-
}
|
|
203
|
-
needsUpdate = true;
|
|
204
|
-
}
|
|
205
|
-
// Check for TypeScript
|
|
206
|
-
const hasTypescript = (0, utils_1.hasDependency)(pkg, 'typescript');
|
|
207
|
-
const hasTsconfig = info.hasTsconfig;
|
|
208
|
-
if (hasTypescript && hasTsconfig && !scripts.typecheck) {
|
|
209
|
-
updates.typecheck = 'tsc --noEmit';
|
|
210
|
-
needsUpdate = true;
|
|
211
|
-
}
|
|
212
|
-
if (needsUpdate) {
|
|
213
|
-
const updatedPkg = {
|
|
214
|
-
...pkg,
|
|
215
|
-
scripts: {
|
|
216
|
-
...scripts,
|
|
217
|
-
...updates,
|
|
218
|
-
},
|
|
219
|
-
};
|
|
220
|
-
changes.push({
|
|
221
|
-
path: (0, path_1.join)(projectPath, 'package.json'),
|
|
222
|
-
content: JSON.stringify(updatedPkg, null, 2) + '\n',
|
|
223
|
-
exists: true,
|
|
224
|
-
action: 'update',
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
return changes;
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Generate Python preset files
|
|
232
|
-
*/
|
|
233
|
-
function generatePythonPreset(projectPath, info) {
|
|
234
|
-
const changes = [];
|
|
235
|
-
// .editorconfig
|
|
236
|
-
const editorConfigPath = (0, path_1.join)(projectPath, '.editorconfig');
|
|
237
|
-
if (!(0, utils_1.fileExists)(editorConfigPath)) {
|
|
238
|
-
changes.push({
|
|
239
|
-
path: editorConfigPath,
|
|
240
|
-
content: EDITORCONFIG_CONTENT + '\n[*.py]\nindent_style = space\nindent_size = 4\n',
|
|
241
|
-
exists: false,
|
|
242
|
-
action: 'create',
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
// pyproject.toml updates (only if it exists and ruff is present)
|
|
246
|
-
const pyprojectPath = (0, path_1.join)(projectPath, 'pyproject.toml');
|
|
247
|
-
if ((0, utils_1.fileExists)(pyprojectPath)) {
|
|
248
|
-
const content = (0, utils_1.readFile)(pyprojectPath);
|
|
249
|
-
if (content && content.includes('ruff')) {
|
|
250
|
-
// Note: We're not modifying pyproject.toml in this implementation
|
|
251
|
-
// as it requires more complex TOML parsing. This is a safe approach.
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
return changes;
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* Generate docs preset files
|
|
258
|
-
*/
|
|
259
|
-
function generateDocsPreset(projectPath, info) {
|
|
260
|
-
const changes = [];
|
|
261
|
-
// README.md (only if missing)
|
|
262
|
-
const readmePath = (0, path_1.join)(projectPath, 'README.md');
|
|
263
|
-
if (!(0, utils_1.fileExists)(readmePath)) {
|
|
264
|
-
changes.push({
|
|
265
|
-
path: readmePath,
|
|
266
|
-
content: README_SKELETON,
|
|
267
|
-
exists: false,
|
|
268
|
-
action: 'create',
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
// CONTRIBUTING.md (optional, only if missing)
|
|
272
|
-
const contributingPath = (0, path_1.join)(projectPath, 'CONTRIBUTING.md');
|
|
273
|
-
if (!(0, utils_1.fileExists)(contributingPath)) {
|
|
274
|
-
// We'll let the interactive mode decide, or skip for now
|
|
275
|
-
}
|
|
276
|
-
// SECURITY.md (optional, only if missing)
|
|
277
|
-
const securityPath = (0, path_1.join)(projectPath, 'SECURITY.md');
|
|
278
|
-
if (!(0, utils_1.fileExists)(securityPath)) {
|
|
279
|
-
// We'll let the interactive mode decide, or skip for now
|
|
280
|
-
}
|
|
281
|
-
return changes;
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Generate all preset changes
|
|
285
|
-
*/
|
|
286
|
-
function generatePresetChanges(projectPath, presets) {
|
|
287
|
-
const info = (0, utils_1.getProjectInfo)(projectPath);
|
|
288
|
-
const changes = [];
|
|
289
|
-
for (const preset of presets) {
|
|
290
|
-
switch (preset) {
|
|
291
|
-
case 'js-ts':
|
|
292
|
-
changes.push(...generateJSTSPreset(projectPath, info));
|
|
293
|
-
break;
|
|
294
|
-
case 'python':
|
|
295
|
-
changes.push(...generatePythonPreset(projectPath, info));
|
|
296
|
-
break;
|
|
297
|
-
case 'docs':
|
|
298
|
-
changes.push(...generateDocsPreset(projectPath, info));
|
|
299
|
-
break;
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
return changes;
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Detect which presets to apply
|
|
306
|
-
*/
|
|
307
|
-
function detectPresets(info) {
|
|
308
|
-
const presets = [];
|
|
309
|
-
if (info.hasPackageJson) {
|
|
310
|
-
presets.push('js-ts');
|
|
311
|
-
}
|
|
312
|
-
if (info.hasPyprojectToml) {
|
|
313
|
-
presets.push('python');
|
|
314
|
-
}
|
|
315
|
-
if (!(0, utils_1.fileExists)((0, path_1.join)(info.path, 'README.md'))) {
|
|
316
|
-
presets.push('docs');
|
|
317
|
-
}
|
|
318
|
-
return presets;
|
|
319
|
-
}
|
|
320
|
-
/**
|
|
321
|
-
* Apply file changes
|
|
322
|
-
*/
|
|
323
|
-
function applyChanges(changes, force) {
|
|
324
|
-
for (const change of changes) {
|
|
325
|
-
if (change.exists && !force) {
|
|
326
|
-
// Skip existing files unless force
|
|
327
|
-
continue;
|
|
328
|
-
}
|
|
329
|
-
// Ensure directory exists
|
|
330
|
-
const pathParts = change.path.split(/[/\\]/);
|
|
331
|
-
pathParts.pop();
|
|
332
|
-
if (pathParts.length > 0) {
|
|
333
|
-
const dir = pathParts.join('/');
|
|
334
|
-
if (!(0, fs_1.existsSync)(dir)) {
|
|
335
|
-
(0, fs_1.mkdirSync)(dir, { recursive: true });
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
(0, fs_1.writeFileSync)(change.path, change.content, 'utf-8');
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
/**
|
|
342
|
-
* Show diff preview
|
|
343
|
-
*/
|
|
344
|
-
function showDiffPreview(changes) {
|
|
345
|
-
console.log(`\n${c.bold('📝 Changes to apply:')}\n`);
|
|
346
|
-
for (const change of changes) {
|
|
347
|
-
const relPath = change.path.replace(process.cwd() + '/', '');
|
|
348
|
-
const icon = change.action === 'create' ? c.success('+') : c.info('~');
|
|
349
|
-
console.log(` ${icon} ${c.bold(relPath)} (${change.action})`);
|
|
350
|
-
}
|
|
351
|
-
console.log('');
|
|
352
|
-
}
|
|
353
|
-
/**
|
|
354
|
-
* Save preset trace to .guardrail/presets/
|
|
355
|
-
*/
|
|
356
|
-
function savePresetTrace(projectPath, presets, changes) {
|
|
357
|
-
const presetsDir = (0, path_1.join)(projectPath, '.guardrail', 'presets');
|
|
358
|
-
(0, fs_1.mkdirSync)(presetsDir, { recursive: true });
|
|
359
|
-
const trace = {
|
|
360
|
-
timestamp: new Date().toISOString(),
|
|
361
|
-
presets,
|
|
362
|
-
files: changes.map((c) => ({
|
|
363
|
-
path: c.path.replace(projectPath + '/', ''),
|
|
364
|
-
action: c.action,
|
|
365
|
-
})),
|
|
366
|
-
};
|
|
367
|
-
const tracePath = (0, path_1.join)(presetsDir, 'quality.json');
|
|
368
|
-
(0, fs_1.writeFileSync)(tracePath, JSON.stringify(trace, null, 2));
|
|
369
|
-
}
|
|
370
|
-
/**
|
|
371
|
-
* Register setup quality command
|
|
372
|
-
*/
|
|
373
|
-
function registerSetupQualityCommand(program, printLogo) {
|
|
374
|
-
program
|
|
375
|
-
.command('setup:quality')
|
|
376
|
-
.alias('setup quality')
|
|
377
|
-
.description('Generate baseline quality configuration files')
|
|
378
|
-
.option('-p, --path <path>', 'Project path', '.')
|
|
379
|
-
.option('--dry-run', 'Preview changes without applying', false)
|
|
380
|
-
.option('--force', 'Overwrite existing files', false)
|
|
381
|
-
.option('--interactive', 'Interactive mode: select presets', false)
|
|
382
|
-
.option('--presets <presets>', 'Comma-separated presets: js-ts,python,docs')
|
|
383
|
-
.action(async (opts) => {
|
|
384
|
-
printLogo();
|
|
385
|
-
console.log(`\n${c.bold('⚙️ SETUP QUALITY')}\n`);
|
|
386
|
-
const projectPath = (0, path_1.resolve)(opts.path);
|
|
387
|
-
if (!(0, fs_1.existsSync)(projectPath)) {
|
|
388
|
-
(0, exit_codes_1.exitWith)(exit_codes_1.ExitCode.USER_ERROR, `Path does not exist: ${projectPath}`);
|
|
389
|
-
}
|
|
390
|
-
const info = (0, utils_1.getProjectInfo)(projectPath);
|
|
391
|
-
let presets = [];
|
|
392
|
-
// Determine presets
|
|
393
|
-
if (opts.presets) {
|
|
394
|
-
presets = opts.presets.split(',').map((p) => p.trim());
|
|
395
|
-
}
|
|
396
|
-
else if (opts.interactive) {
|
|
397
|
-
// Interactive mode
|
|
398
|
-
const detected = detectPresets(info);
|
|
399
|
-
console.log(` ${c.dim('Detected presets:')} ${detected.join(', ') || 'none'}\n`);
|
|
400
|
-
if (info.hasPackageJson) {
|
|
401
|
-
const useJS = await promptYesNo('Apply JS/TS preset?', true);
|
|
402
|
-
if (useJS)
|
|
403
|
-
presets.push('js-ts');
|
|
404
|
-
}
|
|
405
|
-
if (info.hasPyprojectToml) {
|
|
406
|
-
const usePython = await promptYesNo('Apply Python preset?', true);
|
|
407
|
-
if (usePython)
|
|
408
|
-
presets.push('python');
|
|
409
|
-
}
|
|
410
|
-
const useDocs = await promptYesNo('Apply docs preset?', !(0, utils_1.fileExists)((0, path_1.join)(projectPath, 'README.md')));
|
|
411
|
-
if (useDocs)
|
|
412
|
-
presets.push('docs');
|
|
413
|
-
}
|
|
414
|
-
else {
|
|
415
|
-
// Auto-detect
|
|
416
|
-
presets = detectPresets(info);
|
|
417
|
-
}
|
|
418
|
-
if (presets.length === 0) {
|
|
419
|
-
console.log(` ${c.warning('⚠')} No presets to apply\n`);
|
|
420
|
-
console.log(` ${c.dim('Tip:')} Use ${c.bold('--presets')} to specify manually\n`);
|
|
421
|
-
return;
|
|
422
|
-
}
|
|
423
|
-
console.log(` ${c.dim('Applying presets:')} ${presets.join(', ')}\n`);
|
|
424
|
-
// Generate changes
|
|
425
|
-
const changes = generatePresetChanges(projectPath, presets);
|
|
426
|
-
if (changes.length === 0) {
|
|
427
|
-
console.log(` ${c.info('ℹ')} No changes needed (all files exist)\n`);
|
|
428
|
-
console.log(` ${c.dim('Tip:')} Use ${c.bold('--force')} to overwrite existing files\n`);
|
|
429
|
-
return;
|
|
430
|
-
}
|
|
431
|
-
// Filter out existing files unless force
|
|
432
|
-
const filteredChanges = opts.force
|
|
433
|
-
? changes
|
|
434
|
-
: changes.filter((c) => !c.exists);
|
|
435
|
-
if (filteredChanges.length === 0) {
|
|
436
|
-
console.log(` ${c.info('ℹ')} No new files to create (use --force to overwrite)\n`);
|
|
437
|
-
return;
|
|
438
|
-
}
|
|
439
|
-
// Show preview
|
|
440
|
-
showDiffPreview(filteredChanges);
|
|
441
|
-
if (opts.dryRun) {
|
|
442
|
-
console.log(` ${c.info('ℹ')} Dry run mode - no files were modified\n`);
|
|
443
|
-
return;
|
|
444
|
-
}
|
|
445
|
-
// Apply changes
|
|
446
|
-
applyChanges(filteredChanges, opts.force);
|
|
447
|
-
savePresetTrace(projectPath, presets, filteredChanges);
|
|
448
|
-
console.log(` ${c.success('✓')} Quality setup complete\n`);
|
|
449
|
-
console.log(` ${c.dim('Preset trace saved to:')} .guardrail/presets/quality.json\n`);
|
|
450
|
-
});
|
|
451
|
-
}
|
|
452
|
-
//# sourceMappingURL=setup-quality.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-quality.js","sourceRoot":"","sources":["../../../src/commands/quality/setup-quality.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* guardrail tidy command
|
|
3
|
-
* Read-only hygiene scanner that detects missing/weak repo quality signals
|
|
4
|
-
*/
|
|
5
|
-
import { Command } from 'commander';
|
|
6
|
-
export interface TidyCheck {
|
|
7
|
-
id: string;
|
|
8
|
-
category: 'hygiene' | 'automation' | 'documentation' | 'safety';
|
|
9
|
-
severity: 'info' | 'warn' | 'fail';
|
|
10
|
-
message: string;
|
|
11
|
-
file?: string;
|
|
12
|
-
suggestion?: string;
|
|
13
|
-
scoreImpact: number;
|
|
14
|
-
}
|
|
15
|
-
export interface TidyReport {
|
|
16
|
-
timestamp: string;
|
|
17
|
-
projectPath: string;
|
|
18
|
-
checks: TidyCheck[];
|
|
19
|
-
scores: {
|
|
20
|
-
hygiene: number;
|
|
21
|
-
automation: number;
|
|
22
|
-
documentation: number;
|
|
23
|
-
safety: number;
|
|
24
|
-
overall: number;
|
|
25
|
-
};
|
|
26
|
-
summary: {
|
|
27
|
-
total: number;
|
|
28
|
-
info: number;
|
|
29
|
-
warn: number;
|
|
30
|
-
fail: number;
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Run all tidy checks
|
|
35
|
-
*/
|
|
36
|
-
export declare function runTidyChecks(projectPath: string): TidyReport;
|
|
37
|
-
/**
|
|
38
|
-
* Register tidy command
|
|
39
|
-
*/
|
|
40
|
-
export declare function registerTidyCommand(program: Command, printLogo: () => void): void;
|
|
41
|
-
//# sourceMappingURL=tidy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tidy.d.ts","sourceRoot":"","sources":["../../../src/commands/quality/tidy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqCpC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,SAAS,GAAG,YAAY,GAAG,eAAe,GAAG,QAAQ,CAAC;IAChE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AA2RD;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAyD7D;AAyID;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,IAAI,GACpB,IAAI,CA8BN"}
|