@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
package/dist/output/terminal.js
CHANGED
|
@@ -4,8 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.formatTerminal = formatTerminal;
|
|
7
|
+
exports.formatTerminalSimple = formatTerminalSimple;
|
|
7
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
9
|
const date_fns_1 = require("date-fns");
|
|
10
|
+
function isV2Result(result) {
|
|
11
|
+
return 'semanticMetrics' in result;
|
|
12
|
+
}
|
|
9
13
|
function formatTerminal(result) {
|
|
10
14
|
const lines = [];
|
|
11
15
|
// Header
|
|
@@ -13,13 +17,15 @@ function formatTerminal(result) {
|
|
|
13
17
|
lines.push(chalk_1.default.bold.cyan('='.repeat(64)));
|
|
14
18
|
lines.push(chalk_1.default.bold.cyan(' VIBE-CHECK RESULTS'));
|
|
15
19
|
lines.push(chalk_1.default.bold.cyan('='.repeat(64)));
|
|
16
|
-
// Period info
|
|
20
|
+
// Period info - show commit range with context
|
|
17
21
|
const fromStr = (0, date_fns_1.format)(result.period.from, 'MMM d, yyyy');
|
|
18
22
|
const toStr = (0, date_fns_1.format)(result.period.to, 'MMM d, yyyy');
|
|
23
|
+
const daySpan = Math.ceil((result.period.to.getTime() - result.period.from.getTime()) / (1000 * 60 * 60 * 24));
|
|
24
|
+
const dayContext = daySpan <= 1 ? '' : ` over ${daySpan} days`;
|
|
19
25
|
lines.push('');
|
|
20
|
-
lines.push(chalk_1.default.gray(` Period: ${fromStr} - ${toStr} (${result.period.activeHours}h active)`));
|
|
26
|
+
lines.push(chalk_1.default.gray(` Period: ${fromStr} - ${toStr} (${result.period.activeHours}h active${dayContext})`));
|
|
21
27
|
lines.push(chalk_1.default.gray(` Commits: ${result.commits.total} total (${result.commits.feat} feat, ${result.commits.fix} fix, ${result.commits.docs} docs, ${result.commits.other} other)`));
|
|
22
|
-
// Metrics table
|
|
28
|
+
// Metrics table (semantic metrics)
|
|
23
29
|
lines.push('');
|
|
24
30
|
lines.push(chalk_1.default.bold.white(' METRIC VALUE RATING'));
|
|
25
31
|
lines.push(chalk_1.default.gray(' ' + '-'.repeat(50)));
|
|
@@ -35,11 +41,82 @@ function formatTerminal(result) {
|
|
|
35
41
|
const ratingStr = formatRating(metric.rating);
|
|
36
42
|
lines.push(` ${name.padEnd(26)} ${valueStr} ${ratingStr}`);
|
|
37
43
|
}
|
|
44
|
+
// V2: Code pattern metrics and VibeScore
|
|
45
|
+
if (isV2Result(result) && result.semanticFreeMetrics) {
|
|
46
|
+
lines.push('');
|
|
47
|
+
lines.push(chalk_1.default.bold.magenta(' CODE PATTERNS'));
|
|
48
|
+
lines.push(chalk_1.default.gray(' ' + '-'.repeat(50)));
|
|
49
|
+
const sfMetrics = [
|
|
50
|
+
{ name: 'File Churn', metric: result.semanticFreeMetrics.fileChurn },
|
|
51
|
+
{ name: 'Time Spiral', metric: result.semanticFreeMetrics.timeSpiral },
|
|
52
|
+
{ name: 'Velocity Anomaly', metric: result.semanticFreeMetrics.velocityAnomaly },
|
|
53
|
+
{ name: 'Code Stability', metric: result.semanticFreeMetrics.codeStability },
|
|
54
|
+
];
|
|
55
|
+
for (const { name, metric } of sfMetrics) {
|
|
56
|
+
const valueStr = `${metric.value}${metric.unit}`.padEnd(10);
|
|
57
|
+
const ratingStr = formatRating(metric.rating);
|
|
58
|
+
lines.push(` ${name.padEnd(26)} ${valueStr} ${ratingStr}`);
|
|
59
|
+
}
|
|
60
|
+
if (result.vibeScore) {
|
|
61
|
+
lines.push('');
|
|
62
|
+
lines.push(chalk_1.default.bold.cyan(` VIBE SCORE: ${formatVibeScore(result.vibeScore.value)}`));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// V2: Level Recommendation
|
|
66
|
+
if (isV2Result(result) && result.recommendation) {
|
|
67
|
+
lines.push('');
|
|
68
|
+
lines.push(chalk_1.default.bold.yellow(' LEVEL RECOMMENDATION'));
|
|
69
|
+
lines.push(chalk_1.default.gray(' ' + '-'.repeat(50)));
|
|
70
|
+
const rec = result.recommendation;
|
|
71
|
+
const levelStr = `Level ${rec.level}`;
|
|
72
|
+
// Show confidence helpfully based on value
|
|
73
|
+
let confDisplay;
|
|
74
|
+
if (rec.confidence >= 0.6) {
|
|
75
|
+
confDisplay = chalk_1.default.green(`${Math.round(rec.confidence * 100)}% confidence`);
|
|
76
|
+
}
|
|
77
|
+
else if (rec.confidence >= 0.4) {
|
|
78
|
+
confDisplay = chalk_1.default.yellow(`${Math.round(rec.confidence * 100)}% confidence`);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
confDisplay = chalk_1.default.gray('needs more data');
|
|
82
|
+
}
|
|
83
|
+
lines.push(` ${chalk_1.default.bold(levelStr)} (${confDisplay})`);
|
|
84
|
+
}
|
|
38
85
|
// Overall rating
|
|
39
86
|
lines.push('');
|
|
40
87
|
lines.push(chalk_1.default.bold.cyan('-'.repeat(64)));
|
|
41
88
|
lines.push(` ${chalk_1.default.bold('OVERALL:')} ${formatOverallRating(result.overall)}`);
|
|
42
89
|
lines.push(chalk_1.default.bold.cyan('-'.repeat(64)));
|
|
90
|
+
// Quick Summary: Top strength and area to improve
|
|
91
|
+
const metricsList = [
|
|
92
|
+
{ name: 'Iteration Velocity', metric: result.metrics.iterationVelocity, tip: 'Ship smaller increments more frequently' },
|
|
93
|
+
{ name: 'Rework Ratio', metric: result.metrics.reworkRatio, tip: 'Use tracer tests before complex features' },
|
|
94
|
+
{ name: 'Trust Pass Rate', metric: result.metrics.trustPassRate, tip: 'Review AI output more carefully before committing' },
|
|
95
|
+
{ name: 'Debug Spiral Duration', metric: result.metrics.debugSpiralDuration, tip: 'Stop and write a test when stuck >15min' },
|
|
96
|
+
{ name: 'Flow Efficiency', metric: result.metrics.flowEfficiency, tip: 'Reduce context switching, batch similar tasks' },
|
|
97
|
+
];
|
|
98
|
+
const ratingOrder = ['elite', 'high', 'medium', 'low'];
|
|
99
|
+
const sorted = [...metricsList].sort((a, b) => ratingOrder.indexOf(a.metric.rating) - ratingOrder.indexOf(b.metric.rating));
|
|
100
|
+
const topStrength = sorted[0];
|
|
101
|
+
const topIssue = sorted[sorted.length - 1];
|
|
102
|
+
// Only show summary if there's variation
|
|
103
|
+
if (topStrength.metric.rating !== topIssue.metric.rating) {
|
|
104
|
+
lines.push('');
|
|
105
|
+
lines.push(chalk_1.default.green(` ✓ Strength: ${topStrength.name} (${topStrength.metric.rating.toUpperCase()})`));
|
|
106
|
+
if (topIssue.metric.rating === 'low' || topIssue.metric.rating === 'medium') {
|
|
107
|
+
lines.push(chalk_1.default.yellow(` → Focus: ${topIssue.name} (${topIssue.metric.rating.toUpperCase()})`));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Opportunities section - actionable recommendations for low/medium metrics
|
|
111
|
+
const opportunities = metricsList.filter(m => m.metric.rating === 'low' || m.metric.rating === 'medium');
|
|
112
|
+
if (opportunities.length > 0) {
|
|
113
|
+
lines.push('');
|
|
114
|
+
lines.push(chalk_1.default.bold.yellow(' 💡 OPPORTUNITIES'));
|
|
115
|
+
for (const opp of opportunities.slice(0, 3)) { // Max 3
|
|
116
|
+
const icon = opp.metric.rating === 'low' ? '🔴' : '🟡';
|
|
117
|
+
lines.push(chalk_1.default.yellow(` ${icon} ${opp.name}: ${opp.tip}`));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
43
120
|
// Debug spirals
|
|
44
121
|
if (result.fixChains.length > 0) {
|
|
45
122
|
lines.push('');
|
|
@@ -87,4 +164,55 @@ function formatOverallRating(rating) {
|
|
|
87
164
|
return chalk_1.default.red.bold('LOW');
|
|
88
165
|
}
|
|
89
166
|
}
|
|
167
|
+
function formatVibeScore(score) {
|
|
168
|
+
const pct = Math.round(score * 100);
|
|
169
|
+
if (score >= 0.85)
|
|
170
|
+
return chalk_1.default.green.bold(`${pct}%`);
|
|
171
|
+
if (score >= 0.70)
|
|
172
|
+
return chalk_1.default.blue.bold(`${pct}%`);
|
|
173
|
+
if (score >= 0.50)
|
|
174
|
+
return chalk_1.default.yellow.bold(`${pct}%`);
|
|
175
|
+
return chalk_1.default.red.bold(`${pct}%`);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Simple/compact terminal output - just the essentials
|
|
179
|
+
*/
|
|
180
|
+
function formatTerminalSimple(result) {
|
|
181
|
+
const lines = [];
|
|
182
|
+
// One-line summary
|
|
183
|
+
const fromStr = (0, date_fns_1.format)(result.period.from, 'MMM d');
|
|
184
|
+
const toStr = (0, date_fns_1.format)(result.period.to, 'MMM d');
|
|
185
|
+
const overallColor = getOverallColor(result.overall);
|
|
186
|
+
lines.push('');
|
|
187
|
+
lines.push(chalk_1.default.bold.cyan('VIBE-CHECK') + chalk_1.default.gray(` ${fromStr} - ${toStr}`));
|
|
188
|
+
lines.push('');
|
|
189
|
+
// Overall rating - the main info
|
|
190
|
+
lines.push(` ${chalk_1.default.bold('Rating:')} ${overallColor(result.overall)}`);
|
|
191
|
+
// Key metrics on one line each
|
|
192
|
+
const trust = result.metrics.trustPassRate;
|
|
193
|
+
const rework = result.metrics.reworkRatio;
|
|
194
|
+
lines.push(` ${chalk_1.default.bold('Trust:')} ${trust.value}${trust.unit} ${formatRating(trust.rating)}`);
|
|
195
|
+
lines.push(` ${chalk_1.default.bold('Rework:')} ${rework.value}${rework.unit} ${formatRating(rework.rating)}`);
|
|
196
|
+
// VibeScore if available
|
|
197
|
+
if (isV2Result(result) && result.vibeScore) {
|
|
198
|
+
lines.push(` ${chalk_1.default.bold('Score:')} ${formatVibeScore(result.vibeScore.value)}`);
|
|
199
|
+
}
|
|
200
|
+
// Spirals - only if any detected
|
|
201
|
+
if (result.fixChains.length > 0) {
|
|
202
|
+
lines.push('');
|
|
203
|
+
lines.push(chalk_1.default.yellow(` ⚠ ${result.fixChains.length} debug spiral${result.fixChains.length > 1 ? 's' : ''} detected`));
|
|
204
|
+
}
|
|
205
|
+
lines.push('');
|
|
206
|
+
lines.push(chalk_1.default.gray(` Run without --simple for full details`));
|
|
207
|
+
lines.push('');
|
|
208
|
+
return lines.join('\n');
|
|
209
|
+
}
|
|
210
|
+
function getOverallColor(rating) {
|
|
211
|
+
switch (rating) {
|
|
212
|
+
case 'ELITE': return chalk_1.default.green.bold;
|
|
213
|
+
case 'HIGH': return chalk_1.default.blue.bold;
|
|
214
|
+
case 'MEDIUM': return chalk_1.default.yellow.bold;
|
|
215
|
+
case 'LOW': return chalk_1.default.red.bold;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
90
218
|
//# sourceMappingURL=terminal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/output/terminal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/output/terminal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/recommend/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1I,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calculateBaseLevel = exports.VIBE_QUESTIONS = exports.batchPartialFit = exports.partialFit = exports.DEFAULT_MODEL = exports.predictWithConfidence = exports.predict = exports.predictProba = void 0;
|
|
4
|
+
var ordered_logistic_1 = require("./ordered-logistic");
|
|
5
|
+
Object.defineProperty(exports, "predictProba", { enumerable: true, get: function () { return ordered_logistic_1.predictProba; } });
|
|
6
|
+
Object.defineProperty(exports, "predict", { enumerable: true, get: function () { return ordered_logistic_1.predict; } });
|
|
7
|
+
Object.defineProperty(exports, "predictWithConfidence", { enumerable: true, get: function () { return ordered_logistic_1.predictWithConfidence; } });
|
|
8
|
+
Object.defineProperty(exports, "DEFAULT_MODEL", { enumerable: true, get: function () { return ordered_logistic_1.DEFAULT_MODEL; } });
|
|
9
|
+
Object.defineProperty(exports, "partialFit", { enumerable: true, get: function () { return ordered_logistic_1.partialFit; } });
|
|
10
|
+
Object.defineProperty(exports, "batchPartialFit", { enumerable: true, get: function () { return ordered_logistic_1.batchPartialFit; } });
|
|
11
|
+
var questions_1 = require("./questions");
|
|
12
|
+
Object.defineProperty(exports, "VIBE_QUESTIONS", { enumerable: true, get: function () { return questions_1.VIBE_QUESTIONS; } });
|
|
13
|
+
Object.defineProperty(exports, "calculateBaseLevel", { enumerable: true, get: function () { return questions_1.calculateBaseLevel; } });
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/recommend/index.ts"],"names":[],"mappings":";;;AAAA,uDAA0I;AAAjI,gHAAA,YAAY,OAAA;AAAE,2GAAA,OAAO,OAAA;AAAE,yHAAA,qBAAqB,OAAA;AAAE,iHAAA,aAAa,OAAA;AAAc,8GAAA,UAAU,OAAA;AAAE,mHAAA,eAAe,OAAA;AAC7G,yCAA2E;AAAlE,2GAAA,cAAc,OAAA;AAAE,+GAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ordered Logistic Regression for Vibe Level Classification.
|
|
3
|
+
* Respects ordinal structure: 0 < 1 < 2 < 3 < 4 < 5
|
|
4
|
+
*/
|
|
5
|
+
export interface ModelState {
|
|
6
|
+
weights: number[];
|
|
7
|
+
thresholds: number[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Default model state (will be updated via calibration).
|
|
11
|
+
*/
|
|
12
|
+
export declare const DEFAULT_MODEL: ModelState;
|
|
13
|
+
/**
|
|
14
|
+
* Predict probability distribution over levels 0-5.
|
|
15
|
+
*/
|
|
16
|
+
export declare function predictProba(features: number[], model?: ModelState): number[];
|
|
17
|
+
/**
|
|
18
|
+
* Predict most likely level.
|
|
19
|
+
*/
|
|
20
|
+
export declare function predict(features: number[], model?: ModelState): number;
|
|
21
|
+
/**
|
|
22
|
+
* Predict with confidence and CI.
|
|
23
|
+
*/
|
|
24
|
+
export declare function predictWithConfidence(features: number[], model?: ModelState): {
|
|
25
|
+
level: number;
|
|
26
|
+
confidence: number;
|
|
27
|
+
ci: [number, number];
|
|
28
|
+
probs: number[];
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Single-step stochastic gradient descent update.
|
|
32
|
+
* Updates weights based on one sample's prediction error.
|
|
33
|
+
*
|
|
34
|
+
* For ordered logistic regression:
|
|
35
|
+
* - We minimize negative log-likelihood
|
|
36
|
+
* - Gradient for weight[j] = (p_k - y_k) * x_j summed over cutpoints
|
|
37
|
+
*
|
|
38
|
+
* Learning rate decays: lr = initialLr / (1 + decay * n)
|
|
39
|
+
*/
|
|
40
|
+
export declare function partialFit(model: ModelState, features: number[], trueLevel: number, learningRate?: number, sampleCount?: number): ModelState;
|
|
41
|
+
/**
|
|
42
|
+
* Batch partial fit - applies partialFit to multiple samples.
|
|
43
|
+
* Processes samples in order, accumulating updates.
|
|
44
|
+
*/
|
|
45
|
+
export declare function batchPartialFit(model: ModelState, samples: Array<{
|
|
46
|
+
features: number[];
|
|
47
|
+
trueLevel: number;
|
|
48
|
+
}>, learningRate?: number): ModelState;
|
|
49
|
+
//# sourceMappingURL=ordered-logistic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordered-logistic.d.ts","sourceRoot":"","sources":["../../src/recommend/ordered-logistic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,UAa3B,CAAC;AASF;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,GAAE,UAA0B,GAChC,MAAM,EAAE,CAoBV;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,GAAE,UAA0B,GAChC,MAAM,CAWR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,GAAE,UAA0B,GAChC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAqB9E;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,MAAa,EAC3B,WAAW,GAAE,MAAU,GACtB,UAAU,CAyCZ;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,EACzD,YAAY,GAAE,MAAa,GAC1B,UAAU,CAYZ"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Ordered Logistic Regression for Vibe Level Classification.
|
|
4
|
+
* Respects ordinal structure: 0 < 1 < 2 < 3 < 4 < 5
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.DEFAULT_MODEL = void 0;
|
|
8
|
+
exports.predictProba = predictProba;
|
|
9
|
+
exports.predict = predict;
|
|
10
|
+
exports.predictWithConfidence = predictWithConfidence;
|
|
11
|
+
exports.partialFit = partialFit;
|
|
12
|
+
exports.batchPartialFit = batchPartialFit;
|
|
13
|
+
const N_LEVELS = 6;
|
|
14
|
+
/**
|
|
15
|
+
* Default model state (will be updated via calibration).
|
|
16
|
+
*/
|
|
17
|
+
exports.DEFAULT_MODEL = {
|
|
18
|
+
weights: [
|
|
19
|
+
0.3, // reversibility
|
|
20
|
+
-0.5, // blastRadius (negative = higher risk lowers level)
|
|
21
|
+
-0.4, // verificationCost
|
|
22
|
+
-0.4, // domainComplexity
|
|
23
|
+
0.3, // aiTrackRecord
|
|
24
|
+
0.8, // fileChurnScore
|
|
25
|
+
0.6, // timeSpiralScore
|
|
26
|
+
0.3, // velocityAnomalyScore
|
|
27
|
+
0.5, // codeStabilityScore
|
|
28
|
+
],
|
|
29
|
+
thresholds: [-2.0, -0.8, 0.4, 1.6, 2.8], // 5 thresholds for 6 levels
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Sigmoid function.
|
|
33
|
+
*/
|
|
34
|
+
function sigmoid(x) {
|
|
35
|
+
return 1 / (1 + Math.exp(-x));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Predict probability distribution over levels 0-5.
|
|
39
|
+
*/
|
|
40
|
+
function predictProba(features, model = exports.DEFAULT_MODEL) {
|
|
41
|
+
// Linear combination
|
|
42
|
+
let eta = 0;
|
|
43
|
+
for (let i = 0; i < features.length && i < model.weights.length; i++) {
|
|
44
|
+
eta += features[i] * model.weights[i];
|
|
45
|
+
}
|
|
46
|
+
// Cumulative probabilities
|
|
47
|
+
const cumProbs = model.thresholds.map(t => sigmoid(t - eta));
|
|
48
|
+
// P(Y=k) = P(Y≤k) - P(Y≤k-1)
|
|
49
|
+
const probs = [];
|
|
50
|
+
probs[0] = cumProbs[0];
|
|
51
|
+
for (let k = 1; k < N_LEVELS - 1; k++) {
|
|
52
|
+
probs[k] = cumProbs[k] - cumProbs[k - 1];
|
|
53
|
+
}
|
|
54
|
+
probs[N_LEVELS - 1] = 1 - cumProbs[N_LEVELS - 2];
|
|
55
|
+
// Ensure non-negative (numerical stability)
|
|
56
|
+
return probs.map(p => Math.max(0, p));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Predict most likely level.
|
|
60
|
+
*/
|
|
61
|
+
function predict(features, model = exports.DEFAULT_MODEL) {
|
|
62
|
+
const probs = predictProba(features, model);
|
|
63
|
+
let maxIdx = 0;
|
|
64
|
+
let maxProb = probs[0];
|
|
65
|
+
for (let i = 1; i < probs.length; i++) {
|
|
66
|
+
if (probs[i] > maxProb) {
|
|
67
|
+
maxProb = probs[i];
|
|
68
|
+
maxIdx = i;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return maxIdx;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Predict with confidence and CI.
|
|
75
|
+
*/
|
|
76
|
+
function predictWithConfidence(features, model = exports.DEFAULT_MODEL) {
|
|
77
|
+
const probs = predictProba(features, model);
|
|
78
|
+
const level = probs.indexOf(Math.max(...probs));
|
|
79
|
+
const confidence = Math.max(...probs);
|
|
80
|
+
// Approximate CI from probability distribution variance
|
|
81
|
+
let mean = 0;
|
|
82
|
+
let variance = 0;
|
|
83
|
+
for (let i = 0; i < probs.length; i++) {
|
|
84
|
+
mean += i * probs[i];
|
|
85
|
+
}
|
|
86
|
+
for (let i = 0; i < probs.length; i++) {
|
|
87
|
+
variance += probs[i] * Math.pow(i - mean, 2);
|
|
88
|
+
}
|
|
89
|
+
const stdDev = Math.sqrt(variance);
|
|
90
|
+
const ci = [
|
|
91
|
+
Math.max(0, mean - 1.96 * stdDev),
|
|
92
|
+
Math.min(5, mean + 1.96 * stdDev),
|
|
93
|
+
];
|
|
94
|
+
return { level, confidence, ci, probs };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Single-step stochastic gradient descent update.
|
|
98
|
+
* Updates weights based on one sample's prediction error.
|
|
99
|
+
*
|
|
100
|
+
* For ordered logistic regression:
|
|
101
|
+
* - We minimize negative log-likelihood
|
|
102
|
+
* - Gradient for weight[j] = (p_k - y_k) * x_j summed over cutpoints
|
|
103
|
+
*
|
|
104
|
+
* Learning rate decays: lr = initialLr / (1 + decay * n)
|
|
105
|
+
*/
|
|
106
|
+
function partialFit(model, features, trueLevel, learningRate = 0.01, sampleCount = 1) {
|
|
107
|
+
const effectiveLr = learningRate / (1 + 0.001 * sampleCount);
|
|
108
|
+
// Get current predictions
|
|
109
|
+
const probs = predictProba(features, model);
|
|
110
|
+
// Create one-hot target
|
|
111
|
+
const target = new Array(N_LEVELS).fill(0);
|
|
112
|
+
target[Math.min(Math.max(0, Math.round(trueLevel)), N_LEVELS - 1)] = 1;
|
|
113
|
+
// Gradient for weights: dL/dw_j = sum_k (p_k - y_k) * x_j
|
|
114
|
+
const newWeights = [...model.weights];
|
|
115
|
+
for (let j = 0; j < features.length && j < newWeights.length; j++) {
|
|
116
|
+
let gradient = 0;
|
|
117
|
+
for (let k = 0; k < N_LEVELS; k++) {
|
|
118
|
+
gradient += (probs[k] - target[k]) * features[j];
|
|
119
|
+
}
|
|
120
|
+
newWeights[j] -= effectiveLr * gradient;
|
|
121
|
+
}
|
|
122
|
+
// Gradient for thresholds: dL/dt_k = p_k - cumTarget_k
|
|
123
|
+
const newThresholds = [...model.thresholds];
|
|
124
|
+
let cumTarget = 0;
|
|
125
|
+
for (let k = 0; k < model.thresholds.length; k++) {
|
|
126
|
+
cumTarget += target[k];
|
|
127
|
+
const cumProb = probs.slice(0, k + 1).reduce((a, b) => a + b, 0);
|
|
128
|
+
const gradient = cumProb - cumTarget;
|
|
129
|
+
newThresholds[k] -= effectiveLr * gradient;
|
|
130
|
+
}
|
|
131
|
+
// Ensure thresholds remain ordered
|
|
132
|
+
for (let i = 1; i < newThresholds.length; i++) {
|
|
133
|
+
if (newThresholds[i] <= newThresholds[i - 1]) {
|
|
134
|
+
newThresholds[i] = newThresholds[i - 1] + 0.1;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
weights: newWeights,
|
|
139
|
+
thresholds: newThresholds,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Batch partial fit - applies partialFit to multiple samples.
|
|
144
|
+
* Processes samples in order, accumulating updates.
|
|
145
|
+
*/
|
|
146
|
+
function batchPartialFit(model, samples, learningRate = 0.01) {
|
|
147
|
+
let current = model;
|
|
148
|
+
for (let i = 0; i < samples.length; i++) {
|
|
149
|
+
current = partialFit(current, samples[i].features, samples[i].trueLevel, learningRate, i + 1);
|
|
150
|
+
}
|
|
151
|
+
return current;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=ordered-logistic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordered-logistic.js","sourceRoot":"","sources":["../../src/recommend/ordered-logistic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { QuestionResponses } from '../types';
|
|
2
|
+
export interface Question {
|
|
3
|
+
id: keyof QuestionResponses;
|
|
4
|
+
text: string;
|
|
5
|
+
options: {
|
|
6
|
+
value: number;
|
|
7
|
+
label: string;
|
|
8
|
+
description: string;
|
|
9
|
+
}[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The 5 classification questions for vibe level determination.
|
|
13
|
+
*/
|
|
14
|
+
export declare const VIBE_QUESTIONS: Question[];
|
|
15
|
+
/**
|
|
16
|
+
* Calculate base level from questions only (simple additive).
|
|
17
|
+
*/
|
|
18
|
+
export declare function calculateBaseLevel(responses: QuestionResponses): number;
|
|
19
|
+
//# sourceMappingURL=questions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../src/recommend/questions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,iBAAiB,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAClE;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,EAmDpC,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,CAUvE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VIBE_QUESTIONS = void 0;
|
|
4
|
+
exports.calculateBaseLevel = calculateBaseLevel;
|
|
5
|
+
/**
|
|
6
|
+
* The 5 classification questions for vibe level determination.
|
|
7
|
+
*/
|
|
8
|
+
exports.VIBE_QUESTIONS = [
|
|
9
|
+
{
|
|
10
|
+
id: 'reversibility',
|
|
11
|
+
text: 'How easy is it to undo this change?',
|
|
12
|
+
options: [
|
|
13
|
+
{ value: 1, label: 'Easy', description: 'One command to revert (git revert, ctrl+z)' },
|
|
14
|
+
{ value: 0, label: 'Moderate', description: 'Some effort required' },
|
|
15
|
+
{ value: -1, label: 'Difficult', description: 'Significant work to undo' },
|
|
16
|
+
{ value: -2, label: 'Impossible', description: 'Cannot be undone (data loss, etc.)' },
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
id: 'blastRadius',
|
|
21
|
+
text: 'What breaks if this goes wrong?',
|
|
22
|
+
options: [
|
|
23
|
+
{ value: 1, label: 'This file only', description: 'Isolated change' },
|
|
24
|
+
{ value: 0, label: 'This module', description: 'Affects related components' },
|
|
25
|
+
{ value: -1, label: 'Multiple systems', description: 'Cross-cutting impact' },
|
|
26
|
+
{ value: -2, label: 'Production/users', description: 'Customer-facing impact' },
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: 'verificationCost',
|
|
31
|
+
text: 'How hard is it to verify correctness?',
|
|
32
|
+
options: [
|
|
33
|
+
{ value: 1, label: 'Instant', description: 'Obvious, compiler catches errors' },
|
|
34
|
+
{ value: 0, label: 'Run tests', description: 'Automated tests verify' },
|
|
35
|
+
{ value: -1, label: 'Manual testing', description: 'Need to manually verify' },
|
|
36
|
+
{ value: -2, label: 'Hard to verify', description: 'Difficult to fully validate' },
|
|
37
|
+
],
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: 'domainComplexity',
|
|
41
|
+
text: 'How much domain context is needed?',
|
|
42
|
+
options: [
|
|
43
|
+
{ value: 1, label: 'Generic', description: 'Universal patterns, no special knowledge' },
|
|
44
|
+
{ value: 0, label: 'Standard', description: 'Common patterns in this domain' },
|
|
45
|
+
{ value: -1, label: 'Domain-specific', description: 'Requires specialized knowledge' },
|
|
46
|
+
{ value: -2, label: 'Novel/research', description: 'No established patterns' },
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: 'aiTrackRecord',
|
|
51
|
+
text: 'How has AI performed on similar tasks?',
|
|
52
|
+
options: [
|
|
53
|
+
{ value: 1, label: 'Excellent', description: 'Consistently good results' },
|
|
54
|
+
{ value: 0, label: 'Generally good', description: 'Usually correct' },
|
|
55
|
+
{ value: -1, label: 'Mixed', description: 'Sometimes needs correction' },
|
|
56
|
+
{ value: -2, label: 'Poor/unknown', description: 'Unreliable or untested' },
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
/**
|
|
61
|
+
* Calculate base level from questions only (simple additive).
|
|
62
|
+
*/
|
|
63
|
+
function calculateBaseLevel(responses) {
|
|
64
|
+
const base = 3;
|
|
65
|
+
const score = base +
|
|
66
|
+
responses.reversibility +
|
|
67
|
+
responses.blastRadius +
|
|
68
|
+
responses.verificationCost +
|
|
69
|
+
responses.domainComplexity +
|
|
70
|
+
responses.aiTrackRecord;
|
|
71
|
+
return Math.max(0, Math.min(5, Math.round(score)));
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=questions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/recommend/questions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { VibeScore, FileChurnResult, TimeSpiralResult, VelocityAnomalyResult, CodeStabilityResult } from '../types';
|
|
2
|
+
import { ScoreWeights } from './weights';
|
|
3
|
+
export interface ScoreInputs {
|
|
4
|
+
fileChurn: FileChurnResult;
|
|
5
|
+
timeSpiral: TimeSpiralResult;
|
|
6
|
+
velocityAnomaly: VelocityAnomalyResult;
|
|
7
|
+
codeStability: CodeStabilityResult;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Calculate composite VibeScore (0-1) from semantic-free metrics.
|
|
11
|
+
*/
|
|
12
|
+
export declare function calculateVibeScore(inputs: ScoreInputs, weights?: ScoreWeights): VibeScore;
|
|
13
|
+
/**
|
|
14
|
+
* Map VibeScore to expected vibe level range.
|
|
15
|
+
*/
|
|
16
|
+
export declare function scoreToExpectedLevel(score: number): {
|
|
17
|
+
min: number;
|
|
18
|
+
max: number;
|
|
19
|
+
};
|
|
20
|
+
export { DEFAULT_WEIGHTS, ScoreWeights } from './weights';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/score/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpH,OAAO,EAAmB,YAAY,EAAE,MAAM,WAAW,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,eAAe,EAAE,qBAAqB,CAAC;IACvC,aAAa,EAAE,mBAAmB,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,YAA8B,GACtC,SAAS,CAwBX;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAMhF;AAED,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_WEIGHTS = void 0;
|
|
4
|
+
exports.calculateVibeScore = calculateVibeScore;
|
|
5
|
+
exports.scoreToExpectedLevel = scoreToExpectedLevel;
|
|
6
|
+
const weights_1 = require("./weights");
|
|
7
|
+
/**
|
|
8
|
+
* Calculate composite VibeScore (0-1) from semantic-free metrics.
|
|
9
|
+
*/
|
|
10
|
+
function calculateVibeScore(inputs, weights = weights_1.DEFAULT_WEIGHTS) {
|
|
11
|
+
// Normalize all metrics to 0-1
|
|
12
|
+
const fileChurnNorm = inputs.fileChurn.value / 100;
|
|
13
|
+
const timeSpiralNorm = inputs.timeSpiral.value / 100;
|
|
14
|
+
const velocityAnomalyNorm = inputs.velocityAnomaly.value / 100;
|
|
15
|
+
const codeStabilityNorm = inputs.codeStability.value / 100;
|
|
16
|
+
// Weighted sum
|
|
17
|
+
const value = weights.fileChurn * fileChurnNorm +
|
|
18
|
+
weights.timeSpiral * timeSpiralNorm +
|
|
19
|
+
weights.velocityAnomaly * velocityAnomalyNorm +
|
|
20
|
+
weights.codeStability * codeStabilityNorm;
|
|
21
|
+
return {
|
|
22
|
+
value: Math.round(value * 100) / 100,
|
|
23
|
+
components: {
|
|
24
|
+
fileChurn: fileChurnNorm,
|
|
25
|
+
timeSpiral: timeSpiralNorm,
|
|
26
|
+
velocityAnomaly: velocityAnomalyNorm,
|
|
27
|
+
codeStability: codeStabilityNorm,
|
|
28
|
+
},
|
|
29
|
+
weights,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Map VibeScore to expected vibe level range.
|
|
34
|
+
*/
|
|
35
|
+
function scoreToExpectedLevel(score) {
|
|
36
|
+
if (score >= 0.90)
|
|
37
|
+
return { min: 4, max: 5 };
|
|
38
|
+
if (score >= 0.75)
|
|
39
|
+
return { min: 3, max: 4 };
|
|
40
|
+
if (score >= 0.60)
|
|
41
|
+
return { min: 2, max: 3 };
|
|
42
|
+
if (score >= 0.40)
|
|
43
|
+
return { min: 1, max: 2 };
|
|
44
|
+
return { min: 0, max: 1 };
|
|
45
|
+
}
|
|
46
|
+
var weights_2 = require("./weights");
|
|
47
|
+
Object.defineProperty(exports, "DEFAULT_WEIGHTS", { enumerable: true, get: function () { return weights_2.DEFAULT_WEIGHTS; } });
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/score/index.ts"],"names":[],"mappings":";;;AAaA,gDA2BC;AAKD,oDAMC;AAlDD,uCAA0D;AAS1D;;GAEG;AACH,SAAgB,kBAAkB,CAChC,MAAmB,EACnB,UAAwB,yBAAe;IAEvC,+BAA+B;IAC/B,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC;IACnD,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC;IACrD,MAAM,mBAAmB,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,GAAG,GAAG,CAAC;IAC/D,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,GAAG,CAAC;IAE3D,eAAe;IACf,MAAM,KAAK,GACT,OAAO,CAAC,SAAS,GAAG,aAAa;QACjC,OAAO,CAAC,UAAU,GAAG,cAAc;QACnC,OAAO,CAAC,eAAe,GAAG,mBAAmB;QAC7C,OAAO,CAAC,aAAa,GAAG,iBAAiB,CAAC;IAE5C,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG;QACpC,UAAU,EAAE;YACV,SAAS,EAAE,aAAa;YACxB,UAAU,EAAE,cAAc;YAC1B,eAAe,EAAE,mBAAmB;YACpC,aAAa,EAAE,iBAAiB;SACjC;QACD,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,KAAa;IAChD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAC7C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAC7C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAC7C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAC7C,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAC5B,CAAC;AAED,qCAA0D;AAAjD,0GAAA,eAAe,OAAA"}
|