@boshu2/vibe-check 1.3.0 → 1.3.2

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.
@@ -0,0 +1,24 @@
1
+ {
2
+ "sessions": [
3
+ {
4
+ "id": "2025-11-29T15:25",
5
+ "startedAt": "2025-11-29T15:25:11.000Z",
6
+ "endedAt": "2025-11-29T20:46:56.000Z",
7
+ "commits": 29,
8
+ "trustPassRate": 100,
9
+ "reworkRatio": 14,
10
+ "spirals": 0
11
+ },
12
+ {
13
+ "id": "2025-11-28T17:09",
14
+ "startedAt": "2025-11-28T17:09:58.000Z",
15
+ "endedAt": "2025-11-28T18:56:36.000Z",
16
+ "commits": 7,
17
+ "trustPassRate": 100,
18
+ "reworkRatio": 14,
19
+ "spirals": 0
20
+ }
21
+ ],
22
+ "baseline": null,
23
+ "lastUpdated": "2025-11-29T21:00:38.912Z"
24
+ }
package/README.md CHANGED
@@ -22,10 +22,43 @@ npx @boshu2/vibe-check
22
22
  # Check your recent work
23
23
  vibe-check --since "1 week ago"
24
24
 
25
- # Simple one-liner for hooks
26
- vibe-check --simple
25
+ # Watch mode - catch spirals in real-time
26
+ vibe-check watch
27
27
  ```
28
28
 
29
+ ## Watch Mode (Real-Time Detection)
30
+
31
+ Catch spirals as they happen, not after:
32
+
33
+ ```bash
34
+ vibe-check watch
35
+ ```
36
+
37
+ ```
38
+ VIBE-CHECK WATCH MODE
39
+ Monitoring /path/to/repo
40
+ Polling every 5s - Ctrl+C to stop
41
+
42
+ ────────────────────────────────────────────────────────────
43
+ 09:15 fix(auth) handle token refresh
44
+ 09:18 fix(auth) add retry logic
45
+ 09:22 fix(auth) increase timeout
46
+
47
+ ⚠️ SPIRAL DETECTED
48
+ Component: auth
49
+ Fixes: 3 commits, 7 min
50
+
51
+ Consider:
52
+ • Step back and write a test
53
+ • Check the docs or ask for help
54
+ • Take a 5-minute break
55
+ ────────────────────────────────────────────────────────────
56
+ ```
57
+
58
+ Options:
59
+ - `--quiet` - Only show warnings, not all commits
60
+ - `--interval <ms>` - Poll frequency (default: 5000ms)
61
+
29
62
  ## Example Output
30
63
 
31
64
  ```
@@ -38,9 +71,28 @@ VIBE-CHECK Nov 21 - Nov 28
38
71
  Run without --simple for full details
39
72
  ```
40
73
 
41
- ## Session Workflow
74
+ ## Automatic Baseline Comparison
42
75
 
43
- Declare your trust level before starting, then check if reality matched:
76
+ vibe-check learns YOUR patterns and compares each session to your baseline:
77
+
78
+ ```bash
79
+ vibe-check --since "1 hour ago"
80
+ ```
81
+
82
+ ```
83
+ VS YOUR BASELINE
84
+
85
+ Trust: 92% (+7% vs avg 85%)
86
+ Rework: 18% (-4% vs avg 22%)
87
+
88
+ Better than your usual - nice flow!
89
+ ```
90
+
91
+ After 5+ sessions, you get automatic feedback without declaring anything.
92
+
93
+ ## Manual Session Workflow (Optional)
94
+
95
+ For explicit level tracking, declare before starting:
44
96
 
45
97
  ```bash
46
98
  # Before work: declare your expectation
@@ -52,8 +104,6 @@ vibe-check start --level 3
52
104
  vibe-check --since "1 hour ago"
53
105
  ```
54
106
 
55
- Output:
56
-
57
107
  ```
58
108
  SESSION COMPLETE
59
109
 
@@ -135,6 +185,7 @@ Options:
135
185
  -v, --verbose Verbose output
136
186
 
137
187
  Commands:
188
+ watch Real-time spiral detection
138
189
  start --level <n> Start session with declared level (0-5)
139
190
  profile View your gamification profile
140
191
  init-hook Install pre-push git hook
package/dist/cli.js CHANGED
@@ -15,6 +15,7 @@ program.addCommand((0, commands_1.createAnalyzeCommand)());
15
15
  program.addCommand((0, commands_1.createStartCommand)());
16
16
  program.addCommand((0, commands_1.createProfileCommand)());
17
17
  program.addCommand((0, commands_1.createInitHookCommand)());
18
+ program.addCommand((0, commands_1.createWatchCommand)());
18
19
  // Default behavior: if no subcommand, run analyze with passed options
19
20
  // This maintains backwards compatibility with v1.x usage
20
21
  program
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,yCAA+H;AAE/H,8DAA8D;AAC9D,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,kBAAkB;AAClB,OAAO,CAAC,UAAU,CAAC,IAAA,+BAAoB,GAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,IAAA,6BAAkB,GAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,IAAA,+BAAoB,GAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,IAAA,gCAAqB,GAAE,CAAC,CAAC;AAE5C,sEAAsE;AACtE,yDAAyD;AACzD,OAAO;KACJ,MAAM,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;KACxE,MAAM,CAAC,gBAAgB,EAAE,sCAAsC,CAAC;KAChE,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,EAAE,UAAU,CAAC;KACpF,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC7D,MAAM,CAAC,eAAe,EAAE,qBAAqB,EAAE,KAAK,CAAC;KACrD,MAAM,CAAC,SAAS,EAAE,4CAA4C,EAAE,KAAK,CAAC;KACtE,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;KAC3D,MAAM,CAAC,cAAc,EAAE,mCAAmC,EAAE,KAAK,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,wDAAwD;IACxD,MAAM,IAAA,qBAAU,EAAC;QACf,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,yCAAmJ;AAEnJ,8DAA8D;AAC9D,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,kBAAkB;AAClB,OAAO,CAAC,UAAU,CAAC,IAAA,+BAAoB,GAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,IAAA,6BAAkB,GAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,IAAA,+BAAoB,GAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,IAAA,gCAAqB,GAAE,CAAC,CAAC;AAC5C,OAAO,CAAC,UAAU,CAAC,IAAA,6BAAkB,GAAE,CAAC,CAAC;AAEzC,sEAAsE;AACtE,yDAAyD;AACzD,OAAO;KACJ,MAAM,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;KACxE,MAAM,CAAC,gBAAgB,EAAE,sCAAsC,CAAC;KAChE,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,EAAE,UAAU,CAAC;KACpF,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC7D,MAAM,CAAC,eAAe,EAAE,qBAAqB,EAAE,KAAK,CAAC;KACrD,MAAM,CAAC,SAAS,EAAE,4CAA4C,EAAE,KAAK,CAAC;KACtE,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;KAC3D,MAAM,CAAC,cAAc,EAAE,mCAAmC,EAAE,KAAK,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,wDAAwD;IACxD,MAAM,IAAA,qBAAU,EAAC;QACf,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAgB9C;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyPvE"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAgB9C;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA6TvE"}
@@ -20,6 +20,7 @@ const score_1 = require("../score");
20
20
  const profile_1 = require("../gamification/profile");
21
21
  const types_1 = require("../gamification/types");
22
22
  const start_1 = require("./start");
23
+ const sessions_1 = require("../sessions");
23
24
  function createAnalyzeCommand() {
24
25
  const cmd = new commander_1.Command('analyze')
25
26
  .description('Analyze git history for vibe coding metrics')
@@ -128,11 +129,12 @@ async function runAnalyze(options) {
128
129
  // Output result to console
129
130
  const formattedOutput = (0, output_1.formatOutput)(resultV2, format, { simple });
130
131
  console.log(formattedOutput);
131
- // Session comparison (if session was active)
132
- if (session && format === 'terminal' && resultV2.vibeScore) {
133
- // Metrics are already in percentage form (e.g., 100 for 100%)
134
- const trustPassRate = result.metrics.trustPassRate.value;
135
- const reworkRatio = result.metrics.reworkRatio.value;
132
+ // Get metrics for session tracking
133
+ const trustPassRate = result.metrics.trustPassRate.value;
134
+ const reworkRatio = result.metrics.reworkRatio.value;
135
+ const spiralCount = result.fixChains.filter(fc => fc.isSpiral).length;
136
+ // Session comparison (if manual session was active via `start`)
137
+ if (session && format === 'terminal') {
136
138
  const levelInfo = start_1.LEVEL_INFO[session.level];
137
139
  // Parse expectations (already in percentage form like ">65%")
138
140
  const expectTrust = parseFloat(levelInfo.expectTrust.replace(/[><%]/g, ''));
@@ -180,9 +182,49 @@ async function runAnalyze(options) {
180
182
  // Clear the session
181
183
  (0, start_1.clearSession)(repo);
182
184
  }
185
+ // Automatic session detection and baseline comparison (if no manual session)
186
+ if (!session && format === 'terminal' && commits.length >= 3) {
187
+ // Detect session boundary
188
+ const sessionInfo = (0, sessions_1.detectSessionBoundary)(commits, repo);
189
+ // Calculate duration
190
+ const sessionDuration = Math.round((result.period.to.getTime() - sessionInfo.sessionStart.getTime()) / 60000);
191
+ // Record this session to history
192
+ (0, sessions_1.recordSession)(repo, sessionInfo.sessionStart, result.period.to, commits.length, trustPassRate, reworkRatio, spiralCount, resultV2.vibeScore?.value);
193
+ // Compare to baseline
194
+ const comparison = (0, sessions_1.compareToBaseline)(repo, trustPassRate, reworkRatio, commits.length, sessionDuration);
195
+ // Show baseline comparison
196
+ if (comparison.hasBaseline && comparison.comparison) {
197
+ console.log('');
198
+ console.log(chalk_1.default.bold.cyan('VS YOUR BASELINE'));
199
+ console.log('');
200
+ const trustDelta = comparison.comparison.trustDelta;
201
+ const reworkDelta = comparison.comparison.reworkDelta;
202
+ const trustSign = trustDelta >= 0 ? '+' : '';
203
+ const reworkSign = reworkDelta >= 0 ? '+' : '';
204
+ const trustColor = trustDelta >= 0 ? chalk_1.default.green : chalk_1.default.yellow;
205
+ const reworkColor = reworkDelta <= 0 ? chalk_1.default.green : chalk_1.default.yellow;
206
+ console.log(` Trust: ${Math.round(trustPassRate)}% ${trustColor(`(${trustSign}${Math.round(trustDelta)}% vs avg ${comparison.baseline.trustPassRate}%)`)}`);
207
+ console.log(` Rework: ${Math.round(reworkRatio)}% ${reworkColor(`(${reworkSign}${Math.round(reworkDelta)}% vs avg ${comparison.baseline.reworkRatio}%)`)}`);
208
+ console.log('');
209
+ const verdictColor = comparison.comparison.verdict === 'above' ? chalk_1.default.green :
210
+ comparison.comparison.verdict === 'below' ? chalk_1.default.yellow :
211
+ chalk_1.default.gray;
212
+ console.log(verdictColor(` ${comparison.comparison.message}`));
213
+ console.log('');
214
+ }
215
+ else {
216
+ // Building baseline
217
+ const history = (0, sessions_1.loadSessionHistory)(repo);
218
+ const sessionsNeeded = 5 - history.sessions.length;
219
+ if (sessionsNeeded > 0) {
220
+ console.log('');
221
+ console.log(chalk_1.default.gray(` Building your baseline... ${history.sessions.length}/5 sessions recorded`));
222
+ console.log('');
223
+ }
224
+ }
225
+ }
183
226
  // Record session and show gamification (only for terminal format with score)
184
227
  if (format === 'terminal' && resultV2.vibeScore) {
185
- const spiralCount = result.fixChains.filter(fc => fc.isSpiral).length;
186
228
  const vibeScorePercent = Math.round(resultV2.vibeScore.value * 100);
187
229
  const gamificationResult = (0, profile_1.recordSession)(vibeScorePercent, result.overall, commits.length, spiralCount, result.period.from, result.period.to);
188
230
  // Show gamification summary
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@ export { createAnalyzeCommand, runAnalyze, AnalyzeOptions } from './analyze';
2
2
  export { createStartCommand } from './start';
3
3
  export { createProfileCommand } from './profile';
4
4
  export { createInitHookCommand } from './init-hook';
5
+ export { createWatchCommand } from './watch';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
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;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createInitHookCommand = exports.createProfileCommand = exports.createStartCommand = exports.runAnalyze = exports.createAnalyzeCommand = void 0;
3
+ exports.createWatchCommand = exports.createInitHookCommand = exports.createProfileCommand = exports.createStartCommand = exports.runAnalyze = exports.createAnalyzeCommand = void 0;
4
4
  var analyze_1 = require("./analyze");
5
5
  Object.defineProperty(exports, "createAnalyzeCommand", { enumerable: true, get: function () { return analyze_1.createAnalyzeCommand; } });
6
6
  Object.defineProperty(exports, "runAnalyze", { enumerable: true, get: function () { return analyze_1.runAnalyze; } });
@@ -10,4 +10,6 @@ var profile_1 = require("./profile");
10
10
  Object.defineProperty(exports, "createProfileCommand", { enumerable: true, get: function () { return profile_1.createProfileCommand; } });
11
11
  var init_hook_1 = require("./init-hook");
12
12
  Object.defineProperty(exports, "createInitHookCommand", { enumerable: true, get: function () { return init_hook_1.createInitHookCommand; } });
13
+ var watch_1 = require("./watch");
14
+ Object.defineProperty(exports, "createWatchCommand", { enumerable: true, get: function () { return watch_1.createWatchCommand; } });
13
15
  //# sourceMappingURL=index.js.map
@@ -1 +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"}
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;AAC9B,iCAA6C;AAApC,2GAAA,kBAAkB,OAAA"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createWatchCommand(): Command;
3
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,kBAAkB,IAAI,OAAO,CAW5C"}
@@ -0,0 +1,182 @@
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.createWatchCommand = createWatchCommand;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const git_1 = require("../git");
10
+ const SPIRAL_THRESHOLD = 3; // commits before warning
11
+ const POLL_INTERVAL = 5000; // 5 seconds
12
+ const RECENT_WINDOW = 10; // track last N commits
13
+ function createWatchCommand() {
14
+ const cmd = new commander_1.Command('watch')
15
+ .description('Watch for spiral patterns in real-time')
16
+ .option('-r, --repo <path>', 'Repository path', process.cwd())
17
+ .option('-i, --interval <ms>', 'Poll interval in milliseconds', '5000')
18
+ .option('-q, --quiet', 'Only show warnings, not all commits', false)
19
+ .action(async (options) => {
20
+ await runWatch(options);
21
+ });
22
+ return cmd;
23
+ }
24
+ async function runWatch(options) {
25
+ const interval = parseInt(options.interval, 10) || POLL_INTERVAL;
26
+ if (!(await (0, git_1.isGitRepo)(options.repo))) {
27
+ console.error(chalk_1.default.red(`Not a git repository: ${options.repo}`));
28
+ process.exit(1);
29
+ }
30
+ console.log('');
31
+ console.log(chalk_1.default.bold.cyan('VIBE-CHECK WATCH MODE'));
32
+ console.log(chalk_1.default.gray(`Monitoring ${options.repo}`));
33
+ console.log(chalk_1.default.gray(`Polling every ${interval / 1000}s - Ctrl+C to stop`));
34
+ console.log('');
35
+ console.log(chalk_1.default.cyan('─'.repeat(60)));
36
+ const state = {
37
+ lastCommitHash: null,
38
+ recentCommits: [],
39
+ spiralWarnings: new Map(),
40
+ };
41
+ // Get initial state
42
+ const initialCommits = await (0, git_1.getCommits)(options.repo, '1 hour ago');
43
+ if (initialCommits.length > 0) {
44
+ state.lastCommitHash = initialCommits[0].hash;
45
+ state.recentCommits = initialCommits.slice(0, RECENT_WINDOW);
46
+ if (!options.quiet) {
47
+ console.log(chalk_1.default.gray(` Loaded ${initialCommits.length} recent commits`));
48
+ console.log('');
49
+ }
50
+ // Check for existing spirals
51
+ checkForSpirals(state, options.quiet);
52
+ }
53
+ // Poll for new commits
54
+ const poll = async () => {
55
+ try {
56
+ const commits = await (0, git_1.getCommits)(options.repo, '1 hour ago');
57
+ if (commits.length === 0)
58
+ return;
59
+ const latestHash = commits[0].hash;
60
+ // Check if there are new commits
61
+ if (latestHash !== state.lastCommitHash) {
62
+ // Find new commits
63
+ const newCommits = [];
64
+ for (const commit of commits) {
65
+ if (commit.hash === state.lastCommitHash)
66
+ break;
67
+ newCommits.push(commit);
68
+ }
69
+ if (newCommits.length > 0) {
70
+ // Add new commits to recent list
71
+ state.recentCommits = [
72
+ ...newCommits,
73
+ ...state.recentCommits,
74
+ ].slice(0, RECENT_WINDOW);
75
+ state.lastCommitHash = latestHash;
76
+ // Display new commits
77
+ for (const commit of newCommits.reverse()) {
78
+ displayCommit(commit, options.quiet);
79
+ }
80
+ // Check for spirals
81
+ checkForSpirals(state, options.quiet);
82
+ }
83
+ }
84
+ }
85
+ catch (error) {
86
+ // Silently ignore polling errors
87
+ }
88
+ };
89
+ // Start polling
90
+ setInterval(poll, interval);
91
+ // Keep process alive
92
+ process.on('SIGINT', () => {
93
+ console.log('');
94
+ console.log(chalk_1.default.gray('Watch mode stopped.'));
95
+ process.exit(0);
96
+ });
97
+ }
98
+ function displayCommit(commit, quiet) {
99
+ if (quiet && commit.type !== 'fix')
100
+ return;
101
+ const time = commit.date.toLocaleTimeString('en-US', {
102
+ hour: '2-digit',
103
+ minute: '2-digit'
104
+ });
105
+ const typeColors = {
106
+ feat: chalk_1.default.green,
107
+ fix: chalk_1.default.yellow,
108
+ docs: chalk_1.default.blue,
109
+ chore: chalk_1.default.gray,
110
+ refactor: chalk_1.default.magenta,
111
+ test: chalk_1.default.cyan,
112
+ style: chalk_1.default.gray,
113
+ other: chalk_1.default.white,
114
+ };
115
+ const colorFn = typeColors[commit.type] || chalk_1.default.white;
116
+ const scope = commit.scope ? `(${commit.scope})` : '';
117
+ const shortMsg = commit.message.length > 50
118
+ ? commit.message.slice(0, 47) + '...'
119
+ : commit.message;
120
+ console.log(` ${chalk_1.default.gray(time)} ${colorFn(commit.type)}${chalk_1.default.gray(scope)} ${shortMsg}`);
121
+ }
122
+ function checkForSpirals(state, quiet) {
123
+ // Group recent commits by component (scope or first word of message)
124
+ const byComponent = new Map();
125
+ for (const commit of state.recentCommits) {
126
+ if (commit.type !== 'fix')
127
+ continue;
128
+ const component = commit.scope || extractComponent(commit.message);
129
+ if (!component)
130
+ continue;
131
+ const existing = byComponent.get(component) || [];
132
+ existing.push(commit);
133
+ byComponent.set(component, existing);
134
+ }
135
+ // Check for spirals (3+ consecutive fixes on same component)
136
+ for (const [component, fixes] of byComponent) {
137
+ if (fixes.length >= SPIRAL_THRESHOLD) {
138
+ const prevWarnings = state.spiralWarnings.get(component) || 0;
139
+ // Only warn if this is new or escalating
140
+ if (fixes.length > prevWarnings) {
141
+ state.spiralWarnings.set(component, fixes.length);
142
+ displaySpiralWarning(component, fixes);
143
+ }
144
+ }
145
+ }
146
+ }
147
+ function extractComponent(message) {
148
+ // Try to extract component from commit message
149
+ // e.g., "fix auth flow" -> "auth"
150
+ // e.g., "fix: handle null case" -> null (too generic)
151
+ const words = message.toLowerCase()
152
+ .replace(/^fix[:\s]*/, '')
153
+ .split(/\s+/);
154
+ const skipWords = new Set([
155
+ 'the', 'a', 'an', 'for', 'in', 'on', 'to', 'with', 'and', 'or',
156
+ 'bug', 'issue', 'error', 'problem', 'handle', 'add', 'remove',
157
+ 'update', 'change', 'null', 'undefined', 'case', 'typo'
158
+ ]);
159
+ for (const word of words) {
160
+ if (word.length > 2 && !skipWords.has(word)) {
161
+ return word;
162
+ }
163
+ }
164
+ return null;
165
+ }
166
+ function displaySpiralWarning(component, fixes) {
167
+ const duration = fixes.length > 1
168
+ ? Math.round((fixes[0].date.getTime() - fixes[fixes.length - 1].date.getTime()) / 60000)
169
+ : 0;
170
+ console.log('');
171
+ console.log(chalk_1.default.bold.yellow(' ⚠️ SPIRAL DETECTED'));
172
+ console.log(chalk_1.default.yellow(` Component: ${component}`));
173
+ console.log(chalk_1.default.yellow(` Fixes: ${fixes.length} commits${duration > 0 ? `, ${duration} min` : ''}`));
174
+ console.log('');
175
+ console.log(chalk_1.default.gray(' Consider:'));
176
+ console.log(chalk_1.default.gray(' • Step back and write a test'));
177
+ console.log(chalk_1.default.gray(' • Check the docs or ask for help'));
178
+ console.log(chalk_1.default.gray(' • Take a 5-minute break'));
179
+ console.log('');
180
+ console.log(chalk_1.default.cyan('─'.repeat(60)));
181
+ }
182
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ export interface SessionRecord {
2
+ id: string;
3
+ startedAt: string;
4
+ endedAt: string;
5
+ commits: number;
6
+ trustPassRate: number;
7
+ reworkRatio: number;
8
+ spirals: number;
9
+ vibeScore?: number;
10
+ }
11
+ export interface SessionHistory {
12
+ sessions: SessionRecord[];
13
+ baseline: {
14
+ trustPassRate: number;
15
+ reworkRatio: number;
16
+ avgCommits: number;
17
+ avgDuration: number;
18
+ } | null;
19
+ lastUpdated: string;
20
+ }
21
+ export declare function getSessionsPath(repoPath?: string): string;
22
+ export declare function loadSessionHistory(repoPath?: string): SessionHistory;
23
+ export declare function saveSessionHistory(history: SessionHistory, repoPath?: string): void;
24
+ export declare function recordSession(repoPath: string, startedAt: Date, endedAt: Date, commits: number, trustPassRate: number, reworkRatio: number, spirals: number, vibeScore?: number): SessionHistory;
25
+ export declare function calculateBaseline(sessions: SessionRecord[]): SessionHistory['baseline'];
26
+ export interface SessionDetection {
27
+ isNewSession: boolean;
28
+ sessionStart: Date;
29
+ gapMinutes: number | null;
30
+ }
31
+ export declare function detectSessionBoundary(commits: Array<{
32
+ date: Date;
33
+ }>, repoPath?: string): SessionDetection;
34
+ export interface BaselineComparison {
35
+ hasBaseline: boolean;
36
+ baseline: SessionHistory['baseline'];
37
+ current: {
38
+ trustPassRate: number;
39
+ reworkRatio: number;
40
+ commits: number;
41
+ duration: number;
42
+ };
43
+ comparison: {
44
+ trustDelta: number;
45
+ reworkDelta: number;
46
+ verdict: 'above' | 'below' | 'normal';
47
+ message: string;
48
+ } | null;
49
+ }
50
+ export declare function compareToBaseline(repoPath: string, trustPassRate: number, reworkRatio: number, commits: number, durationMinutes: number): BaselineComparison;
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sessions/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,EAAE;QACR,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,IAAI,CAAC;IACT,WAAW,EAAE,MAAM,CAAC;CACrB;AAKD,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,CAExE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,GAAE,MAAsB,GAAG,cAAc,CAqBnF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,GAAE,MAAsB,GAAG,IAAI,CAUlG;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,cAAc,CAuChB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,CAwBvF;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,EAC9B,QAAQ,GAAE,MAAsB,GAC/B,gBAAgB,CAuClB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACrC,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;QACtC,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC;CACV;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GACtB,kBAAkB,CA4DpB"}
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getSessionsPath = getSessionsPath;
37
+ exports.loadSessionHistory = loadSessionHistory;
38
+ exports.saveSessionHistory = saveSessionHistory;
39
+ exports.recordSession = recordSession;
40
+ exports.calculateBaseline = calculateBaseline;
41
+ exports.detectSessionBoundary = detectSessionBoundary;
42
+ exports.compareToBaseline = compareToBaseline;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const SESSION_GAP_MINUTES = 120; // 2 hours = new session
46
+ const MIN_SESSIONS_FOR_BASELINE = 5;
47
+ function getSessionsPath(repoPath = process.cwd()) {
48
+ return path.join(repoPath, '.vibe-check', 'sessions.json');
49
+ }
50
+ function loadSessionHistory(repoPath = process.cwd()) {
51
+ const sessionsPath = getSessionsPath(repoPath);
52
+ if (!fs.existsSync(sessionsPath)) {
53
+ return {
54
+ sessions: [],
55
+ baseline: null,
56
+ lastUpdated: new Date().toISOString(),
57
+ };
58
+ }
59
+ try {
60
+ const data = JSON.parse(fs.readFileSync(sessionsPath, 'utf-8'));
61
+ return data;
62
+ }
63
+ catch {
64
+ return {
65
+ sessions: [],
66
+ baseline: null,
67
+ lastUpdated: new Date().toISOString(),
68
+ };
69
+ }
70
+ }
71
+ function saveSessionHistory(history, repoPath = process.cwd()) {
72
+ const sessionsPath = getSessionsPath(repoPath);
73
+ const dir = path.dirname(sessionsPath);
74
+ if (!fs.existsSync(dir)) {
75
+ fs.mkdirSync(dir, { recursive: true });
76
+ }
77
+ history.lastUpdated = new Date().toISOString();
78
+ fs.writeFileSync(sessionsPath, JSON.stringify(history, null, 2));
79
+ }
80
+ function recordSession(repoPath, startedAt, endedAt, commits, trustPassRate, reworkRatio, spirals, vibeScore) {
81
+ const history = loadSessionHistory(repoPath);
82
+ // Check if this session already exists (same start time)
83
+ const sessionId = startedAt.toISOString().slice(0, 16); // minute precision
84
+ const existing = history.sessions.find(s => s.id === sessionId);
85
+ if (existing) {
86
+ // Update existing session
87
+ existing.endedAt = endedAt.toISOString();
88
+ existing.commits = commits;
89
+ existing.trustPassRate = trustPassRate;
90
+ existing.reworkRatio = reworkRatio;
91
+ existing.spirals = spirals;
92
+ if (vibeScore !== undefined)
93
+ existing.vibeScore = vibeScore;
94
+ }
95
+ else {
96
+ // Add new session
97
+ history.sessions.push({
98
+ id: sessionId,
99
+ startedAt: startedAt.toISOString(),
100
+ endedAt: endedAt.toISOString(),
101
+ commits,
102
+ trustPassRate,
103
+ reworkRatio,
104
+ spirals,
105
+ vibeScore,
106
+ });
107
+ }
108
+ // Keep last 100 sessions
109
+ if (history.sessions.length > 100) {
110
+ history.sessions = history.sessions.slice(-100);
111
+ }
112
+ // Recalculate baseline
113
+ history.baseline = calculateBaseline(history.sessions);
114
+ saveSessionHistory(history, repoPath);
115
+ return history;
116
+ }
117
+ function calculateBaseline(sessions) {
118
+ if (sessions.length < MIN_SESSIONS_FOR_BASELINE) {
119
+ return null;
120
+ }
121
+ // Use last 20 sessions for baseline
122
+ const recent = sessions.slice(-20);
123
+ const avgTrust = recent.reduce((sum, s) => sum + s.trustPassRate, 0) / recent.length;
124
+ const avgRework = recent.reduce((sum, s) => sum + s.reworkRatio, 0) / recent.length;
125
+ const avgCommits = recent.reduce((sum, s) => sum + s.commits, 0) / recent.length;
126
+ const avgDuration = recent.reduce((sum, s) => {
127
+ const start = new Date(s.startedAt);
128
+ const end = new Date(s.endedAt);
129
+ return sum + (end.getTime() - start.getTime()) / 60000;
130
+ }, 0) / recent.length;
131
+ return {
132
+ trustPassRate: Math.round(avgTrust),
133
+ reworkRatio: Math.round(avgRework),
134
+ avgCommits: Math.round(avgCommits),
135
+ avgDuration: Math.round(avgDuration),
136
+ };
137
+ }
138
+ function detectSessionBoundary(commits, repoPath = process.cwd()) {
139
+ if (commits.length === 0) {
140
+ return {
141
+ isNewSession: true,
142
+ sessionStart: new Date(),
143
+ gapMinutes: null,
144
+ };
145
+ }
146
+ // Sort commits by date (oldest first)
147
+ const sorted = [...commits].sort((a, b) => a.date.getTime() - b.date.getTime());
148
+ // Find the session start (first commit after a gap > SESSION_GAP_MINUTES)
149
+ let sessionStart = sorted[0].date;
150
+ let maxGap = 0;
151
+ for (let i = 1; i < sorted.length; i++) {
152
+ const gap = (sorted[i].date.getTime() - sorted[i - 1].date.getTime()) / 60000;
153
+ if (gap > SESSION_GAP_MINUTES) {
154
+ sessionStart = sorted[i].date;
155
+ maxGap = gap;
156
+ }
157
+ }
158
+ // Check if there's been a gap since the last recorded session
159
+ const history = loadSessionHistory(repoPath);
160
+ let gapFromLastSession = null;
161
+ if (history.sessions.length > 0) {
162
+ const lastSession = history.sessions[history.sessions.length - 1];
163
+ const lastEnd = new Date(lastSession.endedAt);
164
+ gapFromLastSession = (sessionStart.getTime() - lastEnd.getTime()) / 60000;
165
+ }
166
+ return {
167
+ isNewSession: maxGap > SESSION_GAP_MINUTES || (gapFromLastSession !== null && gapFromLastSession > SESSION_GAP_MINUTES),
168
+ sessionStart,
169
+ gapMinutes: gapFromLastSession,
170
+ };
171
+ }
172
+ function compareToBaseline(repoPath, trustPassRate, reworkRatio, commits, durationMinutes) {
173
+ const history = loadSessionHistory(repoPath);
174
+ const current = {
175
+ trustPassRate,
176
+ reworkRatio,
177
+ commits,
178
+ duration: durationMinutes,
179
+ };
180
+ if (!history.baseline) {
181
+ const sessionsNeeded = MIN_SESSIONS_FOR_BASELINE - history.sessions.length;
182
+ return {
183
+ hasBaseline: false,
184
+ baseline: null,
185
+ current,
186
+ comparison: null,
187
+ };
188
+ }
189
+ const trustDelta = trustPassRate - history.baseline.trustPassRate;
190
+ const reworkDelta = reworkRatio - history.baseline.reworkRatio;
191
+ // Determine verdict
192
+ let verdict;
193
+ let message;
194
+ const trustBetter = trustDelta > 5;
195
+ const trustWorse = trustDelta < -10;
196
+ const reworkBetter = reworkDelta < -5;
197
+ const reworkWorse = reworkDelta > 10;
198
+ if (trustBetter && !reworkWorse) {
199
+ verdict = 'above';
200
+ message = 'Better than your usual - nice flow!';
201
+ }
202
+ else if (trustWorse || reworkWorse) {
203
+ verdict = 'below';
204
+ if (trustWorse && reworkWorse) {
205
+ message = 'Rougher than usual - consider taking a break';
206
+ }
207
+ else if (trustWorse) {
208
+ message = 'Trust lower than usual - slow down and verify';
209
+ }
210
+ else {
211
+ message = 'More rework than usual - might be spiraling';
212
+ }
213
+ }
214
+ else {
215
+ verdict = 'normal';
216
+ message = 'Typical session for you';
217
+ }
218
+ return {
219
+ hasBaseline: true,
220
+ baseline: history.baseline,
221
+ current,
222
+ comparison: {
223
+ trustDelta,
224
+ reworkDelta,
225
+ verdict,
226
+ message,
227
+ },
228
+ };
229
+ }
230
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sessions/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boshu2/vibe-check",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "Track git commit patterns during AI-assisted coding (experimental)",
5
5
  "main": "dist/cli.js",
6
6
  "bin": {