@boshu2/vibe-check 1.0.2 → 1.2.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/.agents/bundles/ml-learning-loop-complete-plan-2025-11-28.md +908 -0
- package/.agents/bundles/unified-vibe-system-plan-phase1-2025-11-28.md +962 -0
- package/.agents/bundles/unified-vibe-system-research-2025-11-28.md +1003 -0
- package/.agents/bundles/vibe-check-ecosystem-plan-2025-11-29.md +635 -0
- package/.agents/bundles/vibe-check-gamification-complete-2025-11-29.md +132 -0
- package/.agents/bundles/vibe-score-scientific-framework-2025-11-28.md +602 -0
- package/.vibe-check/calibration.json +38 -0
- package/.vibe-check/latest.json +114 -0
- package/CHANGELOG.md +47 -0
- package/CLAUDE.md +178 -0
- package/README.md +222 -7
- package/action.yml +270 -0
- package/dashboard/app.js +494 -0
- package/dashboard/index.html +235 -0
- package/dashboard/styles.css +647 -0
- package/dist/calibration/ece.d.ts +26 -0
- package/dist/calibration/ece.d.ts.map +1 -0
- package/dist/calibration/ece.js +93 -0
- package/dist/calibration/ece.js.map +1 -0
- package/dist/calibration/index.d.ts +3 -0
- package/dist/calibration/index.d.ts.map +1 -0
- package/dist/calibration/index.js +15 -0
- package/dist/calibration/index.js.map +1 -0
- package/dist/calibration/storage.d.ts +34 -0
- package/dist/calibration/storage.d.ts.map +1 -0
- package/dist/calibration/storage.js +188 -0
- package/dist/calibration/storage.js.map +1 -0
- package/dist/cli.js +31 -76
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts +16 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +256 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/index.d.ts +5 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +13 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init-hook.d.ts +3 -0
- package/dist/commands/init-hook.d.ts.map +1 -0
- package/dist/commands/init-hook.js +161 -0
- package/dist/commands/init-hook.js.map +1 -0
- package/dist/commands/level.d.ts +3 -0
- package/dist/commands/level.d.ts.map +1 -0
- package/dist/commands/level.js +277 -0
- package/dist/commands/level.js.map +1 -0
- package/dist/commands/profile.d.ts +4 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +143 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/gamification/achievements.d.ts +15 -0
- package/dist/gamification/achievements.d.ts.map +1 -0
- package/dist/gamification/achievements.js +273 -0
- package/dist/gamification/achievements.js.map +1 -0
- package/dist/gamification/index.d.ts +8 -0
- package/dist/gamification/index.d.ts.map +1 -0
- package/dist/gamification/index.js +30 -0
- package/dist/gamification/index.js.map +1 -0
- package/dist/gamification/profile.d.ts +46 -0
- package/dist/gamification/profile.d.ts.map +1 -0
- package/dist/gamification/profile.js +272 -0
- package/dist/gamification/profile.js.map +1 -0
- package/dist/gamification/streaks.d.ts +26 -0
- package/dist/gamification/streaks.d.ts.map +1 -0
- package/dist/gamification/streaks.js +132 -0
- package/dist/gamification/streaks.js.map +1 -0
- package/dist/gamification/types.d.ts +111 -0
- package/dist/gamification/types.d.ts.map +1 -0
- package/dist/gamification/types.js +26 -0
- package/dist/gamification/types.js.map +1 -0
- package/dist/gamification/xp.d.ts +37 -0
- package/dist/gamification/xp.d.ts.map +1 -0
- package/dist/gamification/xp.js +115 -0
- package/dist/gamification/xp.js.map +1 -0
- package/dist/git.d.ts +11 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +52 -0
- package/dist/git.js.map +1 -1
- package/dist/metrics/code-stability.d.ts +13 -0
- package/dist/metrics/code-stability.d.ts.map +1 -0
- package/dist/metrics/code-stability.js +74 -0
- package/dist/metrics/code-stability.js.map +1 -0
- package/dist/metrics/file-churn.d.ts +8 -0
- package/dist/metrics/file-churn.d.ts.map +1 -0
- package/dist/metrics/file-churn.js +75 -0
- package/dist/metrics/file-churn.js.map +1 -0
- package/dist/metrics/time-spiral.d.ts +8 -0
- package/dist/metrics/time-spiral.d.ts.map +1 -0
- package/dist/metrics/time-spiral.js +69 -0
- package/dist/metrics/time-spiral.js.map +1 -0
- package/dist/metrics/velocity-anomaly.d.ts +13 -0
- package/dist/metrics/velocity-anomaly.d.ts.map +1 -0
- package/dist/metrics/velocity-anomaly.js +67 -0
- package/dist/metrics/velocity-anomaly.js.map +1 -0
- package/dist/output/index.d.ts +6 -3
- package/dist/output/index.d.ts.map +1 -1
- package/dist/output/index.js +4 -3
- package/dist/output/index.js.map +1 -1
- package/dist/output/json.d.ts +2 -2
- package/dist/output/json.d.ts.map +1 -1
- package/dist/output/json.js +54 -0
- package/dist/output/json.js.map +1 -1
- package/dist/output/markdown.d.ts +2 -2
- package/dist/output/markdown.d.ts.map +1 -1
- package/dist/output/markdown.js +34 -1
- package/dist/output/markdown.js.map +1 -1
- package/dist/output/terminal.d.ts +6 -2
- package/dist/output/terminal.d.ts.map +1 -1
- package/dist/output/terminal.js +131 -3
- package/dist/output/terminal.js.map +1 -1
- package/dist/recommend/index.d.ts +3 -0
- package/dist/recommend/index.d.ts.map +1 -0
- package/dist/recommend/index.js +14 -0
- package/dist/recommend/index.js.map +1 -0
- package/dist/recommend/ordered-logistic.d.ts +49 -0
- package/dist/recommend/ordered-logistic.d.ts.map +1 -0
- package/dist/recommend/ordered-logistic.js +153 -0
- package/dist/recommend/ordered-logistic.js.map +1 -0
- package/dist/recommend/questions.d.ts +19 -0
- package/dist/recommend/questions.d.ts.map +1 -0
- package/dist/recommend/questions.js +73 -0
- package/dist/recommend/questions.js.map +1 -0
- package/dist/score/index.d.ts +21 -0
- package/dist/score/index.d.ts.map +1 -0
- package/dist/score/index.js +48 -0
- package/dist/score/index.js.map +1 -0
- package/dist/score/weights.d.ts +16 -0
- package/dist/score/weights.d.ts.map +1 -0
- package/dist/score/weights.js +28 -0
- package/dist/score/weights.js.map +1 -0
- package/dist/types.d.ts +83 -0
- package/dist/types.d.ts.map +1 -1
- package/hooks/pre-push +103 -0
- package/package.json +10 -9
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createAnalyzeCommand = createAnalyzeCommand;
|
|
7
|
+
exports.runAnalyze = runAnalyze;
|
|
8
|
+
const commander_1 = require("commander");
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const fs_1 = require("fs");
|
|
11
|
+
const git_1 = require("../git");
|
|
12
|
+
const metrics_1 = require("../metrics");
|
|
13
|
+
const output_1 = require("../output");
|
|
14
|
+
const json_1 = require("../output/json");
|
|
15
|
+
const file_churn_1 = require("../metrics/file-churn");
|
|
16
|
+
const time_spiral_1 = require("../metrics/time-spiral");
|
|
17
|
+
const velocity_anomaly_1 = require("../metrics/velocity-anomaly");
|
|
18
|
+
const code_stability_1 = require("../metrics/code-stability");
|
|
19
|
+
const score_1 = require("../score");
|
|
20
|
+
const recommend_1 = require("../recommend");
|
|
21
|
+
const calibration_1 = require("../calibration");
|
|
22
|
+
const profile_1 = require("../gamification/profile");
|
|
23
|
+
const types_1 = require("../gamification/types");
|
|
24
|
+
function createAnalyzeCommand() {
|
|
25
|
+
const cmd = new commander_1.Command('analyze')
|
|
26
|
+
.description('Analyze git history for vibe coding metrics')
|
|
27
|
+
.option('--since <date>', 'Start date for analysis (e.g., "1 week ago")')
|
|
28
|
+
.option('--until <date>', 'End date for analysis (default: now)')
|
|
29
|
+
.option('-f, --format <type>', 'Output format: terminal, json, markdown', 'terminal')
|
|
30
|
+
.option('-r, --repo <path>', 'Repository path', process.cwd())
|
|
31
|
+
.option('-v, --verbose', 'Show verbose output', false)
|
|
32
|
+
.option('--score', 'Include VibeScore and code pattern metrics', false)
|
|
33
|
+
.option('--recommend', 'Include level recommendation', false)
|
|
34
|
+
.option('--calibrate <level>', 'Record calibration sample with declared level (0-5)')
|
|
35
|
+
.option('-o, --output <file>', 'Write JSON results to file')
|
|
36
|
+
.option('-s, --simple', 'Simplified output (fewer details)', false)
|
|
37
|
+
.action(async (options) => {
|
|
38
|
+
await runAnalyze(options);
|
|
39
|
+
});
|
|
40
|
+
return cmd;
|
|
41
|
+
}
|
|
42
|
+
async function runAnalyze(options) {
|
|
43
|
+
try {
|
|
44
|
+
const { since, until, format, repo, verbose, score, recommend, calibrate, output, simple } = options;
|
|
45
|
+
// Validate format
|
|
46
|
+
const validFormats = ['terminal', 'json', 'markdown'];
|
|
47
|
+
if (!validFormats.includes(format)) {
|
|
48
|
+
console.error(chalk_1.default.red(`Invalid format: ${format}`));
|
|
49
|
+
console.error(chalk_1.default.gray(`Valid formats: ${validFormats.join(', ')}`));
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
// Check if repo is valid
|
|
53
|
+
if (!(await (0, git_1.isGitRepo)(repo))) {
|
|
54
|
+
console.error(chalk_1.default.red(`Not a git repository: ${repo}`));
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
if (verbose) {
|
|
58
|
+
console.error(chalk_1.default.gray(`Analyzing repository: ${repo}`));
|
|
59
|
+
if (since)
|
|
60
|
+
console.error(chalk_1.default.gray(`Since: ${since}`));
|
|
61
|
+
if (until)
|
|
62
|
+
console.error(chalk_1.default.gray(`Until: ${until}`));
|
|
63
|
+
}
|
|
64
|
+
// Get commits
|
|
65
|
+
const commits = await (0, git_1.getCommits)(repo, since, until);
|
|
66
|
+
if (commits.length === 0) {
|
|
67
|
+
if (format === 'terminal') {
|
|
68
|
+
console.log(chalk_1.default.yellow('\nNo commits found in the specified range.\n'));
|
|
69
|
+
if (!since) {
|
|
70
|
+
console.log(chalk_1.default.gray('Try specifying a date range:'));
|
|
71
|
+
console.log(chalk_1.default.gray(' vibe-check --since "1 week ago"'));
|
|
72
|
+
console.log(chalk_1.default.gray(' vibe-check --since "2025-11-01"'));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else if (format === 'json') {
|
|
76
|
+
console.log(JSON.stringify({ error: 'No commits found', commits: 0 }));
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.log('# Vibe-Check Report\n\nNo commits found in the specified range.');
|
|
80
|
+
}
|
|
81
|
+
process.exit(0);
|
|
82
|
+
}
|
|
83
|
+
if (verbose) {
|
|
84
|
+
console.error(chalk_1.default.gray(`Found ${commits.length} commits`));
|
|
85
|
+
}
|
|
86
|
+
// Analyze commits (semantic metrics)
|
|
87
|
+
const result = (0, metrics_1.analyzeCommits)(commits);
|
|
88
|
+
// Build enhanced result
|
|
89
|
+
const resultV2 = {
|
|
90
|
+
...result,
|
|
91
|
+
semanticMetrics: result.metrics,
|
|
92
|
+
};
|
|
93
|
+
// Enhanced analysis if requested
|
|
94
|
+
if (score || recommend || calibrate !== undefined) {
|
|
95
|
+
if (verbose) {
|
|
96
|
+
console.error(chalk_1.default.gray('Computing semantic-free metrics...'));
|
|
97
|
+
}
|
|
98
|
+
// Get file stats for semantic-free metrics
|
|
99
|
+
const fileStats = await (0, git_1.getFileStats)(repo, since, until);
|
|
100
|
+
// Calculate semantic-free metrics
|
|
101
|
+
const fileChurn = (0, file_churn_1.calculateFileChurn)(commits, fileStats.filesPerCommit);
|
|
102
|
+
const timeSpiral = (0, time_spiral_1.calculateTimeSpiral)(commits);
|
|
103
|
+
const velocityAnomaly = (0, velocity_anomaly_1.calculateVelocityAnomaly)(commits);
|
|
104
|
+
const codeStability = (0, code_stability_1.calculateCodeStability)(commits, fileStats.lineStats);
|
|
105
|
+
resultV2.semanticFreeMetrics = {
|
|
106
|
+
fileChurn,
|
|
107
|
+
timeSpiral,
|
|
108
|
+
velocityAnomaly,
|
|
109
|
+
codeStability,
|
|
110
|
+
};
|
|
111
|
+
// Calculate VibeScore
|
|
112
|
+
const vibeScore = (0, score_1.calculateVibeScore)({
|
|
113
|
+
fileChurn,
|
|
114
|
+
timeSpiral,
|
|
115
|
+
velocityAnomaly,
|
|
116
|
+
codeStability,
|
|
117
|
+
});
|
|
118
|
+
resultV2.vibeScore = vibeScore;
|
|
119
|
+
if (recommend) {
|
|
120
|
+
// Default questions (neutral for now)
|
|
121
|
+
const defaultQuestions = {
|
|
122
|
+
reversibility: 0,
|
|
123
|
+
blastRadius: 0,
|
|
124
|
+
verificationCost: 0,
|
|
125
|
+
domainComplexity: 0,
|
|
126
|
+
aiTrackRecord: 0,
|
|
127
|
+
};
|
|
128
|
+
const features = [
|
|
129
|
+
defaultQuestions.reversibility,
|
|
130
|
+
defaultQuestions.blastRadius,
|
|
131
|
+
defaultQuestions.verificationCost,
|
|
132
|
+
defaultQuestions.domainComplexity,
|
|
133
|
+
defaultQuestions.aiTrackRecord,
|
|
134
|
+
fileChurn.value / 100,
|
|
135
|
+
timeSpiral.value / 100,
|
|
136
|
+
velocityAnomaly.value / 100,
|
|
137
|
+
codeStability.value / 100,
|
|
138
|
+
];
|
|
139
|
+
const prediction = (0, recommend_1.predictWithConfidence)(features);
|
|
140
|
+
resultV2.recommendation = {
|
|
141
|
+
level: prediction.level,
|
|
142
|
+
confidence: Math.round(prediction.confidence * 100) / 100,
|
|
143
|
+
probabilities: prediction.probs,
|
|
144
|
+
ci: prediction.ci,
|
|
145
|
+
questions: defaultQuestions,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
if (calibrate !== undefined) {
|
|
149
|
+
const declaredLevel = parseInt(calibrate, 10);
|
|
150
|
+
if (declaredLevel >= 0 && declaredLevel <= 5) {
|
|
151
|
+
const outcome = (0, calibration_1.assessOutcome)(vibeScore.value, declaredLevel);
|
|
152
|
+
const sample = {
|
|
153
|
+
timestamp: new Date(),
|
|
154
|
+
vibeScore: vibeScore.value,
|
|
155
|
+
declaredLevel: declaredLevel,
|
|
156
|
+
outcome,
|
|
157
|
+
features: [
|
|
158
|
+
fileChurn.value / 100,
|
|
159
|
+
timeSpiral.value / 100,
|
|
160
|
+
velocityAnomaly.value / 100,
|
|
161
|
+
codeStability.value / 100,
|
|
162
|
+
],
|
|
163
|
+
modelVersion: '2.0.0',
|
|
164
|
+
};
|
|
165
|
+
(0, calibration_1.addSample)(repo, sample);
|
|
166
|
+
if (verbose) {
|
|
167
|
+
console.error(chalk_1.default.gray(`Calibration sample recorded: Level ${declaredLevel} → Score ${vibeScore.value} (${outcome})`));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
console.error(chalk_1.default.yellow(`Warning: Invalid calibrate level ${calibrate}, must be 0-5`));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Write to file if requested (always JSON format)
|
|
176
|
+
if (output) {
|
|
177
|
+
const jsonOutput = (0, json_1.formatJson)(resultV2);
|
|
178
|
+
(0, fs_1.writeFileSync)(output, jsonOutput);
|
|
179
|
+
if (verbose) {
|
|
180
|
+
console.error(chalk_1.default.gray(`Results written to: ${output}`));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Output result to console
|
|
184
|
+
const formattedOutput = (0, output_1.formatOutput)(resultV2, format, { simple });
|
|
185
|
+
console.log(formattedOutput);
|
|
186
|
+
// Record session and show gamification (only for terminal format with score)
|
|
187
|
+
if (format === 'terminal' && resultV2.vibeScore) {
|
|
188
|
+
const spiralCount = result.fixChains.filter(fc => fc.isSpiral).length;
|
|
189
|
+
const vibeScorePercent = Math.round(resultV2.vibeScore.value * 100);
|
|
190
|
+
const gamificationResult = (0, profile_1.recordSession)(vibeScorePercent, result.overall, commits.length, spiralCount, result.period.from, result.period.to);
|
|
191
|
+
// Show gamification summary
|
|
192
|
+
console.log();
|
|
193
|
+
console.log(chalk_1.default.cyan('─'.repeat(64)));
|
|
194
|
+
const levelInfo = types_1.LEVELS.find(l => l.level === gamificationResult.profile.xp.level);
|
|
195
|
+
const { streak, xp } = gamificationResult.profile;
|
|
196
|
+
// Handle duplicate analysis (no XP awarded)
|
|
197
|
+
if (gamificationResult.isDuplicate) {
|
|
198
|
+
const streakFire = '🔥'.repeat(Math.min(streak.current, 5));
|
|
199
|
+
const streakText = streak.current > 0 ? `${streakFire} ${streak.current}-day streak` : '';
|
|
200
|
+
console.log(` ${streakText}`);
|
|
201
|
+
console.log(` ${levelInfo.icon} Level ${xp.level} ${xp.levelName} ${chalk_1.default.gray(`(${xp.currentLevelXP}/${xp.nextLevelXP} XP)`)}`);
|
|
202
|
+
console.log(chalk_1.default.gray(` ℹ Already analyzed this period (no XP awarded)`));
|
|
203
|
+
console.log(chalk_1.default.gray(` Make new commits to earn XP!`));
|
|
204
|
+
console.log(chalk_1.default.cyan('─'.repeat(64)));
|
|
205
|
+
console.log();
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
// Streak line
|
|
209
|
+
const streakFire = '🔥'.repeat(Math.min(streak.current, 5));
|
|
210
|
+
const streakText = streak.current > 0
|
|
211
|
+
? `${streakFire} ${streak.current}-day streak${gamificationResult.streakExtended ? chalk_1.default.yellow(' (+1!)') : ''}`
|
|
212
|
+
: chalk_1.default.gray('Start a streak by running vibe-check daily!');
|
|
213
|
+
console.log(` ${streakText}`);
|
|
214
|
+
// XP line
|
|
215
|
+
const xpGained = gamificationResult.xpEarned;
|
|
216
|
+
console.log(` ${levelInfo.icon} Level ${xp.level} ${xp.levelName} ${chalk_1.default.gray(`(${xp.currentLevelXP}/${xp.nextLevelXP} XP)`)} ${chalk_1.default.green(`+${xpGained} XP`)}`);
|
|
217
|
+
// Level up celebration
|
|
218
|
+
if (gamificationResult.leveledUp) {
|
|
219
|
+
console.log();
|
|
220
|
+
console.log(chalk_1.default.bold.magenta(` 🎉 LEVEL UP! You are now ${gamificationResult.newLevel}!`));
|
|
221
|
+
}
|
|
222
|
+
// Personal best
|
|
223
|
+
if (gamificationResult.isPersonalBest) {
|
|
224
|
+
console.log(chalk_1.default.bold.yellow(` 🏆 NEW PERSONAL BEST: ${vibeScorePercent}%`));
|
|
225
|
+
}
|
|
226
|
+
// Achievement unlocks
|
|
227
|
+
if (gamificationResult.achievementsUnlocked.length > 0) {
|
|
228
|
+
console.log();
|
|
229
|
+
for (const ach of gamificationResult.achievementsUnlocked) {
|
|
230
|
+
console.log(chalk_1.default.bold.green(` 🏆 ACHIEVEMENT UNLOCKED: ${ach.icon} ${ach.name}`));
|
|
231
|
+
console.log(chalk_1.default.gray(` ${ach.description}`));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
console.log(chalk_1.default.cyan('─'.repeat(64)));
|
|
235
|
+
console.log(chalk_1.default.gray(` Run ${chalk_1.default.white('vibe-check profile')} to see your full stats`));
|
|
236
|
+
console.log();
|
|
237
|
+
}
|
|
238
|
+
// Exit with appropriate code based on overall rating
|
|
239
|
+
if (result.overall === 'LOW') {
|
|
240
|
+
process.exit(1);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
if (error instanceof Error) {
|
|
245
|
+
console.error(chalk_1.default.red(`Error: ${error.message}`));
|
|
246
|
+
if (options.verbose) {
|
|
247
|
+
console.error(chalk_1.default.gray(error.stack));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
console.error(chalk_1.default.red('An unexpected error occurred'));
|
|
252
|
+
}
|
|
253
|
+
process.exit(1);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=analyze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createInitHookCommand = exports.createProfileCommand = exports.createLevelCommand = exports.runAnalyze = exports.createAnalyzeCommand = void 0;
|
|
4
|
+
var analyze_1 = require("./analyze");
|
|
5
|
+
Object.defineProperty(exports, "createAnalyzeCommand", { enumerable: true, get: function () { return analyze_1.createAnalyzeCommand; } });
|
|
6
|
+
Object.defineProperty(exports, "runAnalyze", { enumerable: true, get: function () { return analyze_1.runAnalyze; } });
|
|
7
|
+
var level_1 = require("./level");
|
|
8
|
+
Object.defineProperty(exports, "createLevelCommand", { enumerable: true, get: function () { return level_1.createLevelCommand; } });
|
|
9
|
+
var profile_1 = require("./profile");
|
|
10
|
+
Object.defineProperty(exports, "createProfileCommand", { enumerable: true, get: function () { return profile_1.createProfileCommand; } });
|
|
11
|
+
var init_hook_1 = require("./init-hook");
|
|
12
|
+
Object.defineProperty(exports, "createInitHookCommand", { enumerable: true, get: function () { return init_hook_1.createInitHookCommand; } });
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;AAAA,qCAA6E;AAApE,+GAAA,oBAAoB,OAAA;AAAE,qGAAA,UAAU,OAAA;AACzC,iCAA6C;AAApC,2GAAA,kBAAkB,OAAA;AAC3B,qCAAiD;AAAxC,+GAAA,oBAAoB,OAAA;AAC7B,yCAAoD;AAA3C,kHAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-hook.d.ts","sourceRoot":"","sources":["../../src/commands/init-hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwGpC,wBAAgB,qBAAqB,IAAI,OAAO,CAU/C"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createInitHookCommand = createInitHookCommand;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const fs_1 = require("fs");
|
|
10
|
+
const path_1 = require("path");
|
|
11
|
+
const PRE_PUSH_HOOK = `#!/bin/bash
|
|
12
|
+
# vibe-check pre-push hook
|
|
13
|
+
# Runs vibe-check on commits being pushed and displays metrics
|
|
14
|
+
|
|
15
|
+
# Colors
|
|
16
|
+
RED='\\033[0;31m'
|
|
17
|
+
YELLOW='\\033[1;33m'
|
|
18
|
+
GREEN='\\033[0;32m'
|
|
19
|
+
CYAN='\\033[0;36m'
|
|
20
|
+
NC='\\033[0m' # No Color
|
|
21
|
+
|
|
22
|
+
# Configuration (set these env vars to customize)
|
|
23
|
+
VIBE_CHECK_BLOCK_LOW=\${VIBE_CHECK_BLOCK_LOW:-false} # Set to "true" to block push on LOW rating
|
|
24
|
+
VIBE_CHECK_SIMPLE=\${VIBE_CHECK_SIMPLE:-true} # Use simple output by default
|
|
25
|
+
VIBE_CHECK_SCORE=\${VIBE_CHECK_SCORE:-true} # Include vibe score
|
|
26
|
+
|
|
27
|
+
echo -e "\${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
|
|
28
|
+
echo -e "\${CYAN} 🎯 Running vibe-check before push...\${NC}"
|
|
29
|
+
echo -e "\${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
|
|
30
|
+
echo
|
|
31
|
+
|
|
32
|
+
# Read stdin for push info
|
|
33
|
+
while read local_ref local_sha remote_ref remote_sha; do
|
|
34
|
+
# Skip if deleting branch
|
|
35
|
+
if [ "$local_sha" = "0000000000000000000000000000000000000000" ]; then
|
|
36
|
+
continue
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# Determine the range of commits
|
|
40
|
+
if [ "$remote_sha" = "0000000000000000000000000000000000000000" ]; then
|
|
41
|
+
# New branch - check all commits
|
|
42
|
+
RANGE="$local_sha"
|
|
43
|
+
SINCE_FLAG=""
|
|
44
|
+
else
|
|
45
|
+
# Existing branch - check commits since last push
|
|
46
|
+
RANGE="$remote_sha..$local_sha"
|
|
47
|
+
# Get the date of the remote SHA
|
|
48
|
+
SINCE_DATE=$(git log -1 --format=%ci "$remote_sha" 2>/dev/null)
|
|
49
|
+
if [ -n "$SINCE_DATE" ]; then
|
|
50
|
+
SINCE_FLAG="--since \\"$SINCE_DATE\\""
|
|
51
|
+
else
|
|
52
|
+
SINCE_FLAG=""
|
|
53
|
+
fi
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
# Count commits being pushed
|
|
57
|
+
COMMIT_COUNT=$(git rev-list --count "$RANGE" 2>/dev/null || echo "0")
|
|
58
|
+
|
|
59
|
+
if [ "$COMMIT_COUNT" = "0" ]; then
|
|
60
|
+
echo -e "\${YELLOW}No new commits to analyze\${NC}"
|
|
61
|
+
continue
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
echo -e "Analyzing \${GREEN}$COMMIT_COUNT\${NC} commit(s) on \${CYAN}$local_ref\${NC}"
|
|
65
|
+
echo
|
|
66
|
+
|
|
67
|
+
# Build vibe-check command
|
|
68
|
+
VIBE_CMD="npx @boshu2/vibe-check"
|
|
69
|
+
|
|
70
|
+
if [ "$VIBE_CHECK_SIMPLE" = "true" ]; then
|
|
71
|
+
VIBE_CMD="$VIBE_CMD --simple"
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
if [ "$VIBE_CHECK_SCORE" = "true" ]; then
|
|
75
|
+
VIBE_CMD="$VIBE_CMD --score"
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
# Run vibe-check and capture output
|
|
79
|
+
if [ -n "$SINCE_FLAG" ]; then
|
|
80
|
+
OUTPUT=$(eval "$VIBE_CMD $SINCE_FLAG" 2>&1)
|
|
81
|
+
else
|
|
82
|
+
OUTPUT=$(eval "$VIBE_CMD --since '1 week ago'" 2>&1)
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
EXIT_CODE=$?
|
|
86
|
+
|
|
87
|
+
# Display output
|
|
88
|
+
echo "$OUTPUT"
|
|
89
|
+
echo
|
|
90
|
+
|
|
91
|
+
# Check if we should block on LOW rating
|
|
92
|
+
if [ "$VIBE_CHECK_BLOCK_LOW" = "true" ] && [ $EXIT_CODE -eq 1 ]; then
|
|
93
|
+
echo -e "\${RED}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
|
|
94
|
+
echo -e "\${RED} ⛔ Push blocked: LOW vibe rating\${NC}"
|
|
95
|
+
echo -e "\${RED}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
|
|
96
|
+
echo
|
|
97
|
+
echo -e "To push anyway, set: \${YELLOW}VIBE_CHECK_BLOCK_LOW=false git push\${NC}"
|
|
98
|
+
exit 1
|
|
99
|
+
fi
|
|
100
|
+
done
|
|
101
|
+
|
|
102
|
+
echo -e "\${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
|
|
103
|
+
echo -e "\${GREEN} ✓ Vibe check complete, proceeding with push\${NC}"
|
|
104
|
+
echo -e "\${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
|
|
105
|
+
echo
|
|
106
|
+
|
|
107
|
+
exit 0
|
|
108
|
+
`;
|
|
109
|
+
function createInitHookCommand() {
|
|
110
|
+
const cmd = new commander_1.Command('init-hook')
|
|
111
|
+
.description('Install vibe-check git hook in current repository')
|
|
112
|
+
.option('-f, --force', 'Overwrite existing hook', false)
|
|
113
|
+
.option('--block-low', 'Configure hook to block pushes on LOW rating', false)
|
|
114
|
+
.action(async (options) => {
|
|
115
|
+
await runInitHook(options);
|
|
116
|
+
});
|
|
117
|
+
return cmd;
|
|
118
|
+
}
|
|
119
|
+
async function runInitHook(options) {
|
|
120
|
+
const cwd = process.cwd();
|
|
121
|
+
const gitDir = (0, path_1.join)(cwd, '.git');
|
|
122
|
+
const hooksDir = (0, path_1.join)(gitDir, 'hooks');
|
|
123
|
+
const hookPath = (0, path_1.join)(hooksDir, 'pre-push');
|
|
124
|
+
// Check if we're in a git repo
|
|
125
|
+
if (!(0, fs_1.existsSync)(gitDir)) {
|
|
126
|
+
console.error(chalk_1.default.red('Error: Not a git repository'));
|
|
127
|
+
console.error(chalk_1.default.gray('Run this command from the root of a git repository'));
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
// Check if hook already exists
|
|
131
|
+
if ((0, fs_1.existsSync)(hookPath) && !options.force) {
|
|
132
|
+
console.error(chalk_1.default.yellow('pre-push hook already exists'));
|
|
133
|
+
console.error(chalk_1.default.gray('Use --force to overwrite'));
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
// Create hooks directory if needed
|
|
137
|
+
if (!(0, fs_1.existsSync)(hooksDir)) {
|
|
138
|
+
(0, fs_1.mkdirSync)(hooksDir, { recursive: true });
|
|
139
|
+
}
|
|
140
|
+
// Modify hook content if blocking is enabled
|
|
141
|
+
let hookContent = PRE_PUSH_HOOK;
|
|
142
|
+
if (options.blockLow) {
|
|
143
|
+
hookContent = hookContent.replace('VIBE_CHECK_BLOCK_LOW=${VIBE_CHECK_BLOCK_LOW:-false}', 'VIBE_CHECK_BLOCK_LOW=${VIBE_CHECK_BLOCK_LOW:-true}');
|
|
144
|
+
}
|
|
145
|
+
// Write the hook
|
|
146
|
+
(0, fs_1.writeFileSync)(hookPath, hookContent);
|
|
147
|
+
(0, fs_1.chmodSync)(hookPath, 0o755);
|
|
148
|
+
console.log();
|
|
149
|
+
console.log(chalk_1.default.green('✓ vibe-check pre-push hook installed'));
|
|
150
|
+
console.log();
|
|
151
|
+
console.log(chalk_1.default.gray('Location:'), hookPath);
|
|
152
|
+
console.log();
|
|
153
|
+
console.log(chalk_1.default.bold('Configuration:'));
|
|
154
|
+
console.log(chalk_1.default.gray(' VIBE_CHECK_BLOCK_LOW=true Block push on LOW rating'));
|
|
155
|
+
console.log(chalk_1.default.gray(' VIBE_CHECK_SIMPLE=false Show full output'));
|
|
156
|
+
console.log(chalk_1.default.gray(' VIBE_CHECK_SCORE=false Hide vibe score'));
|
|
157
|
+
console.log();
|
|
158
|
+
console.log(chalk_1.default.cyan('The hook will run automatically on every git push'));
|
|
159
|
+
console.log();
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=init-hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-hook.js","sourceRoot":"","sources":["../../src/commands/init-hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../src/commands/level.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,wBAAgB,kBAAkB,IAAI,OAAO,CAgB5C"}
|