@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.
Files changed (133) hide show
  1. package/.agents/bundles/ml-learning-loop-complete-plan-2025-11-28.md +908 -0
  2. package/.agents/bundles/unified-vibe-system-plan-phase1-2025-11-28.md +962 -0
  3. package/.agents/bundles/unified-vibe-system-research-2025-11-28.md +1003 -0
  4. package/.agents/bundles/vibe-check-ecosystem-plan-2025-11-29.md +635 -0
  5. package/.agents/bundles/vibe-check-gamification-complete-2025-11-29.md +132 -0
  6. package/.agents/bundles/vibe-score-scientific-framework-2025-11-28.md +602 -0
  7. package/.vibe-check/calibration.json +38 -0
  8. package/.vibe-check/latest.json +114 -0
  9. package/CHANGELOG.md +47 -0
  10. package/CLAUDE.md +178 -0
  11. package/README.md +222 -7
  12. package/action.yml +270 -0
  13. package/dashboard/app.js +494 -0
  14. package/dashboard/index.html +235 -0
  15. package/dashboard/styles.css +647 -0
  16. package/dist/calibration/ece.d.ts +26 -0
  17. package/dist/calibration/ece.d.ts.map +1 -0
  18. package/dist/calibration/ece.js +93 -0
  19. package/dist/calibration/ece.js.map +1 -0
  20. package/dist/calibration/index.d.ts +3 -0
  21. package/dist/calibration/index.d.ts.map +1 -0
  22. package/dist/calibration/index.js +15 -0
  23. package/dist/calibration/index.js.map +1 -0
  24. package/dist/calibration/storage.d.ts +34 -0
  25. package/dist/calibration/storage.d.ts.map +1 -0
  26. package/dist/calibration/storage.js +188 -0
  27. package/dist/calibration/storage.js.map +1 -0
  28. package/dist/cli.js +31 -76
  29. package/dist/cli.js.map +1 -1
  30. package/dist/commands/analyze.d.ts +16 -0
  31. package/dist/commands/analyze.d.ts.map +1 -0
  32. package/dist/commands/analyze.js +256 -0
  33. package/dist/commands/analyze.js.map +1 -0
  34. package/dist/commands/index.d.ts +5 -0
  35. package/dist/commands/index.d.ts.map +1 -0
  36. package/dist/commands/index.js +13 -0
  37. package/dist/commands/index.js.map +1 -0
  38. package/dist/commands/init-hook.d.ts +3 -0
  39. package/dist/commands/init-hook.d.ts.map +1 -0
  40. package/dist/commands/init-hook.js +161 -0
  41. package/dist/commands/init-hook.js.map +1 -0
  42. package/dist/commands/level.d.ts +3 -0
  43. package/dist/commands/level.d.ts.map +1 -0
  44. package/dist/commands/level.js +277 -0
  45. package/dist/commands/level.js.map +1 -0
  46. package/dist/commands/profile.d.ts +4 -0
  47. package/dist/commands/profile.d.ts.map +1 -0
  48. package/dist/commands/profile.js +143 -0
  49. package/dist/commands/profile.js.map +1 -0
  50. package/dist/gamification/achievements.d.ts +15 -0
  51. package/dist/gamification/achievements.d.ts.map +1 -0
  52. package/dist/gamification/achievements.js +273 -0
  53. package/dist/gamification/achievements.js.map +1 -0
  54. package/dist/gamification/index.d.ts +8 -0
  55. package/dist/gamification/index.d.ts.map +1 -0
  56. package/dist/gamification/index.js +30 -0
  57. package/dist/gamification/index.js.map +1 -0
  58. package/dist/gamification/profile.d.ts +46 -0
  59. package/dist/gamification/profile.d.ts.map +1 -0
  60. package/dist/gamification/profile.js +272 -0
  61. package/dist/gamification/profile.js.map +1 -0
  62. package/dist/gamification/streaks.d.ts +26 -0
  63. package/dist/gamification/streaks.d.ts.map +1 -0
  64. package/dist/gamification/streaks.js +132 -0
  65. package/dist/gamification/streaks.js.map +1 -0
  66. package/dist/gamification/types.d.ts +111 -0
  67. package/dist/gamification/types.d.ts.map +1 -0
  68. package/dist/gamification/types.js +26 -0
  69. package/dist/gamification/types.js.map +1 -0
  70. package/dist/gamification/xp.d.ts +37 -0
  71. package/dist/gamification/xp.d.ts.map +1 -0
  72. package/dist/gamification/xp.js +115 -0
  73. package/dist/gamification/xp.js.map +1 -0
  74. package/dist/git.d.ts +11 -0
  75. package/dist/git.d.ts.map +1 -1
  76. package/dist/git.js +52 -0
  77. package/dist/git.js.map +1 -1
  78. package/dist/metrics/code-stability.d.ts +13 -0
  79. package/dist/metrics/code-stability.d.ts.map +1 -0
  80. package/dist/metrics/code-stability.js +74 -0
  81. package/dist/metrics/code-stability.js.map +1 -0
  82. package/dist/metrics/file-churn.d.ts +8 -0
  83. package/dist/metrics/file-churn.d.ts.map +1 -0
  84. package/dist/metrics/file-churn.js +75 -0
  85. package/dist/metrics/file-churn.js.map +1 -0
  86. package/dist/metrics/time-spiral.d.ts +8 -0
  87. package/dist/metrics/time-spiral.d.ts.map +1 -0
  88. package/dist/metrics/time-spiral.js +69 -0
  89. package/dist/metrics/time-spiral.js.map +1 -0
  90. package/dist/metrics/velocity-anomaly.d.ts +13 -0
  91. package/dist/metrics/velocity-anomaly.d.ts.map +1 -0
  92. package/dist/metrics/velocity-anomaly.js +67 -0
  93. package/dist/metrics/velocity-anomaly.js.map +1 -0
  94. package/dist/output/index.d.ts +6 -3
  95. package/dist/output/index.d.ts.map +1 -1
  96. package/dist/output/index.js +4 -3
  97. package/dist/output/index.js.map +1 -1
  98. package/dist/output/json.d.ts +2 -2
  99. package/dist/output/json.d.ts.map +1 -1
  100. package/dist/output/json.js +54 -0
  101. package/dist/output/json.js.map +1 -1
  102. package/dist/output/markdown.d.ts +2 -2
  103. package/dist/output/markdown.d.ts.map +1 -1
  104. package/dist/output/markdown.js +34 -1
  105. package/dist/output/markdown.js.map +1 -1
  106. package/dist/output/terminal.d.ts +6 -2
  107. package/dist/output/terminal.d.ts.map +1 -1
  108. package/dist/output/terminal.js +131 -3
  109. package/dist/output/terminal.js.map +1 -1
  110. package/dist/recommend/index.d.ts +3 -0
  111. package/dist/recommend/index.d.ts.map +1 -0
  112. package/dist/recommend/index.js +14 -0
  113. package/dist/recommend/index.js.map +1 -0
  114. package/dist/recommend/ordered-logistic.d.ts +49 -0
  115. package/dist/recommend/ordered-logistic.d.ts.map +1 -0
  116. package/dist/recommend/ordered-logistic.js +153 -0
  117. package/dist/recommend/ordered-logistic.js.map +1 -0
  118. package/dist/recommend/questions.d.ts +19 -0
  119. package/dist/recommend/questions.d.ts.map +1 -0
  120. package/dist/recommend/questions.js +73 -0
  121. package/dist/recommend/questions.js.map +1 -0
  122. package/dist/score/index.d.ts +21 -0
  123. package/dist/score/index.d.ts.map +1 -0
  124. package/dist/score/index.js +48 -0
  125. package/dist/score/index.js.map +1 -0
  126. package/dist/score/weights.d.ts +16 -0
  127. package/dist/score/weights.d.ts.map +1 -0
  128. package/dist/score/weights.js +28 -0
  129. package/dist/score/weights.js.map +1 -0
  130. package/dist/types.d.ts +83 -0
  131. package/dist/types.d.ts.map +1 -1
  132. package/hooks/pre-push +103 -0
  133. package/package.json +10 -9
@@ -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,3 @@
1
+ export { predictProba, predict, predictWithConfidence, DEFAULT_MODEL, ModelState, partialFit, batchPartialFit } from './ordered-logistic';
2
+ export { VIBE_QUESTIONS, calculateBaseLevel, Question } from './questions';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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":";AAAA;;;GAGG;;;AAqCH,oCAuBC;AAKD,0BAcC;AAKD,sDAwBC;AAYD,gCA+CC;AAMD,0CAgBC;AA3LD,MAAM,QAAQ,GAAG,CAAC,CAAC;AAOnB;;GAEG;AACU,QAAA,aAAa,GAAe;IACvC,OAAO,EAAE;QACP,GAAG,EAAI,gBAAgB;QACvB,CAAC,GAAG,EAAG,oDAAoD;QAC3D,CAAC,GAAG,EAAG,mBAAmB;QAC1B,CAAC,GAAG,EAAG,mBAAmB;QAC1B,GAAG,EAAI,gBAAgB;QACvB,GAAG,EAAI,iBAAiB;QACxB,GAAG,EAAI,kBAAkB;QACzB,GAAG,EAAI,uBAAuB;QAC9B,GAAG,EAAI,qBAAqB;KAC7B;IACD,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,4BAA4B;CACtE,CAAC;AAEF;;GAEG;AACH,SAAS,OAAO,CAAC,CAAS;IACxB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAC1B,QAAkB,EAClB,QAAoB,qBAAa;IAEjC,qBAAqB;IACrB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrE,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAE7D,6BAA6B;IAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAEjD,4CAA4C;IAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAgB,OAAO,CACrB,QAAkB,EAClB,QAAoB,qBAAa;IAEjC,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;YACvB,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CACnC,QAAkB,EAClB,QAAoB,qBAAa;IAEjC,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAEtC,wDAAwD;IACxD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,EAAE,GAAqB;QAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;KAClC,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,UAAU,CACxB,KAAiB,EACjB,QAAkB,EAClB,SAAiB,EACjB,eAAuB,IAAI,EAC3B,cAAsB,CAAC;IAEvB,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC;IAE7D,0BAA0B;IAC1B,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE5C,wBAAwB;IACxB,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEvE,0DAA0D;IAC1D,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClE,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,UAAU,CAAC,CAAC,CAAC,IAAI,WAAW,GAAG,QAAQ,CAAC;IAC1C,CAAC;IAED,uDAAuD;IACvD,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;QACrC,aAAa,CAAC,CAAC,CAAC,IAAI,WAAW,GAAG,QAAQ,CAAC;IAC7C,CAAC;IAED,mCAAmC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC7C,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QAChD,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,aAAa;KAC1B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAC7B,KAAiB,EACjB,OAAyD,EACzD,eAAuB,IAAI;IAE3B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,OAAO,GAAG,UAAU,CAClB,OAAO,EACP,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EACnB,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EACpB,YAAY,EACZ,CAAC,GAAG,CAAC,CACN,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -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"}