@boshu2/vibe-check 1.7.0 → 1.8.1
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/actionable-coaching-plan-2025-12-02.md +209 -0
- package/.agents/plans/git-forensics-enhancement-2025-12-05.md +493 -0
- package/.claude/skills/typescript-review.md +152 -0
- package/CHANGELOG.md +41 -5
- package/CLAUDE.md +85 -23
- package/Makefile +43 -19
- package/README.md +178 -172
- package/SECURITY.md +5 -1
- package/assets/logo-dark.svg +47 -0
- package/assets/logo.svg +47 -0
- package/claude-progress.json +28 -7
- package/claude-progress.txt +48 -0
- package/dist/analyzers/patterns.d.ts +62 -0
- package/dist/analyzers/patterns.d.ts.map +1 -0
- package/dist/analyzers/patterns.js +103 -0
- package/dist/analyzers/patterns.js.map +1 -0
- package/dist/analyzers/quality.d.ts +58 -0
- package/dist/analyzers/quality.d.ts.map +1 -0
- package/dist/analyzers/quality.js +114 -0
- package/dist/analyzers/quality.js.map +1 -0
- package/dist/analyzers/sessions.d.ts +45 -0
- package/dist/analyzers/sessions.d.ts.map +1 -0
- package/dist/analyzers/sessions.js +123 -0
- package/dist/analyzers/sessions.js.map +1 -0
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +5 -0
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/forensics.d.ts +29 -0
- package/dist/commands/forensics.d.ts.map +1 -0
- package/dist/commands/forensics.js +213 -0
- package/dist/commands/forensics.js.map +1 -0
- package/dist/commands/index.d.ts +4 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +11 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/insights.d.ts +3 -0
- package/dist/commands/insights.d.ts.map +1 -0
- package/dist/commands/insights.js +120 -0
- package/dist/commands/insights.js.map +1 -0
- package/dist/commands/pipeline.d.ts +3 -0
- package/dist/commands/pipeline.d.ts.map +1 -0
- package/dist/commands/pipeline.js +485 -0
- package/dist/commands/pipeline.js.map +1 -0
- package/dist/commands/profile.d.ts +0 -1
- package/dist/commands/profile.d.ts.map +1 -1
- package/dist/commands/profile.js +0 -4
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/session.d.ts +9 -0
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +95 -0
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/sessions.d.ts +20 -0
- package/dist/commands/sessions.d.ts.map +1 -0
- package/dist/commands/sessions.js +201 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +124 -7
- package/dist/commands/watch.js.map +1 -1
- package/dist/inner-loop/context-amnesia.d.ts +20 -0
- package/dist/inner-loop/context-amnesia.d.ts.map +1 -0
- package/dist/inner-loop/context-amnesia.js +249 -0
- package/dist/inner-loop/context-amnesia.js.map +1 -0
- package/dist/inner-loop/index.d.ts +39 -0
- package/dist/inner-loop/index.d.ts.map +1 -0
- package/dist/inner-loop/index.js +208 -0
- package/dist/inner-loop/index.js.map +1 -0
- package/dist/inner-loop/instruction-drift.d.ts +28 -0
- package/dist/inner-loop/instruction-drift.d.ts.map +1 -0
- package/dist/inner-loop/instruction-drift.js +260 -0
- package/dist/inner-loop/instruction-drift.js.map +1 -0
- package/dist/inner-loop/logging-only.d.ts +30 -0
- package/dist/inner-loop/logging-only.d.ts.map +1 -0
- package/dist/inner-loop/logging-only.js +264 -0
- package/dist/inner-loop/logging-only.js.map +1 -0
- package/dist/inner-loop/tests-passing-lie.d.ts +34 -0
- package/dist/inner-loop/tests-passing-lie.d.ts.map +1 -0
- package/dist/inner-loop/tests-passing-lie.js +213 -0
- package/dist/inner-loop/tests-passing-lie.js.map +1 -0
- package/dist/inner-loop/types.d.ts +111 -0
- package/dist/inner-loop/types.d.ts.map +1 -0
- package/dist/inner-loop/types.js +29 -0
- package/dist/inner-loop/types.js.map +1 -0
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +11 -1
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/spiral-history.d.ts +62 -0
- package/dist/storage/spiral-history.d.ts.map +1 -0
- package/dist/storage/spiral-history.js +265 -0
- package/dist/storage/spiral-history.js.map +1 -0
- package/docs/ARCHITECTURE.md +2 -10
- package/docs/FEATURES.md +340 -0
- package/docs/GAMIFICATION.md +19 -266
- package/docs/VIBE-ECOSYSTEM.md +12 -78
- package/feature-list.json +140 -88
- package/package.json +1 -1
package/dist/commands/watch.js
CHANGED
|
@@ -7,6 +7,25 @@ exports.createWatchCommand = createWatchCommand;
|
|
|
7
7
|
const commander_1 = require("commander");
|
|
8
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
9
|
const git_1 = require("../git");
|
|
10
|
+
const spiral_history_1 = require("../storage/spiral-history");
|
|
11
|
+
const inner_loop_1 = require("../inner-loop");
|
|
12
|
+
// Pattern detection regexes (same as metrics/spirals.ts)
|
|
13
|
+
const PATTERNS = {
|
|
14
|
+
VOLUME_CONFIG: /volume|mount|path|permission|readonly|pvc|storage/i,
|
|
15
|
+
SECRETS_AUTH: /secret|auth|oauth|token|credential|password|key/i,
|
|
16
|
+
API_MISMATCH: /api|version|field|spec|schema|crd|resource/i,
|
|
17
|
+
SSL_TLS: /ssl|tls|cert|fips|handshake|https/i,
|
|
18
|
+
IMAGE_REGISTRY: /image|pull|registry|docker|tag/i,
|
|
19
|
+
GITOPS_DRIFT: /drift|sync|argocd|reconcil|outof/i,
|
|
20
|
+
};
|
|
21
|
+
function detectPattern(messages) {
|
|
22
|
+
for (const [pattern, regex] of Object.entries(PATTERNS)) {
|
|
23
|
+
if (regex.test(messages)) {
|
|
24
|
+
return pattern;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return 'OTHER';
|
|
28
|
+
}
|
|
10
29
|
const SPIRAL_THRESHOLD = 3; // commits before warning
|
|
11
30
|
const POLL_INTERVAL = 5000; // 5 seconds
|
|
12
31
|
const RECENT_WINDOW = 10; // track last N commits
|
|
@@ -37,6 +56,8 @@ async function runWatch(options) {
|
|
|
37
56
|
lastCommitHash: null,
|
|
38
57
|
recentCommits: [],
|
|
39
58
|
spiralWarnings: new Map(),
|
|
59
|
+
lastInnerLoopWarning: null,
|
|
60
|
+
innerLoopIssueCount: 0,
|
|
40
61
|
};
|
|
41
62
|
// Get initial state
|
|
42
63
|
const initialCommits = await (0, git_1.getCommits)(options.repo, '1 hour ago');
|
|
@@ -49,6 +70,8 @@ async function runWatch(options) {
|
|
|
49
70
|
}
|
|
50
71
|
// Check for existing spirals
|
|
51
72
|
checkForSpirals(state, options.quiet);
|
|
73
|
+
// Check for inner-loop issues on initial load
|
|
74
|
+
await checkForInnerLoopIssues(options.repo, state, options.quiet);
|
|
52
75
|
}
|
|
53
76
|
// Poll for new commits
|
|
54
77
|
const poll = async () => {
|
|
@@ -79,6 +102,8 @@ async function runWatch(options) {
|
|
|
79
102
|
}
|
|
80
103
|
// Check for spirals
|
|
81
104
|
checkForSpirals(state, options.quiet);
|
|
105
|
+
// Check for inner-loop issues
|
|
106
|
+
await checkForInnerLoopIssues(options.repo, state, options.quiet);
|
|
82
107
|
}
|
|
83
108
|
}
|
|
84
109
|
}
|
|
@@ -167,15 +192,107 @@ function displaySpiralWarning(component, fixes) {
|
|
|
167
192
|
const duration = fixes.length > 1
|
|
168
193
|
? Math.round((fixes[0].date.getTime() - fixes[fixes.length - 1].date.getTime()) / 60000)
|
|
169
194
|
: 0;
|
|
195
|
+
// Detect pattern from commit messages
|
|
196
|
+
const allMessages = fixes.map(c => c.message).join(' ');
|
|
197
|
+
const pattern = detectPattern(allMessages);
|
|
198
|
+
const patternName = (0, spiral_history_1.getPatternDisplayName)(pattern);
|
|
199
|
+
// Get personalized advice from history
|
|
200
|
+
const advice = (0, spiral_history_1.getAdvice)(pattern, component);
|
|
201
|
+
console.log('');
|
|
202
|
+
console.log(chalk_1.default.bold.yellow(' ⚠️ SPIRAL FORMING'));
|
|
203
|
+
console.log(chalk_1.default.yellow(` ${component} component (${patternName})`));
|
|
204
|
+
console.log(chalk_1.default.yellow(` ${fixes.length} fixes${duration > 0 ? `, ${duration} min` : ''}`));
|
|
205
|
+
console.log('');
|
|
206
|
+
// Show personalized history if available
|
|
207
|
+
if (advice && advice.yourHistory.times > 0) {
|
|
208
|
+
console.log(chalk_1.default.white(` Your history: ${advice.yourHistory.times} ${component} spirals, avg ${advice.yourHistory.avgDuration} min`));
|
|
209
|
+
if (advice.whatWorked.length > 0) {
|
|
210
|
+
const topFixes = advice.whatWorked.slice(0, 2)
|
|
211
|
+
.map(w => `${(0, spiral_history_1.getResolutionDisplayName)(w.resolution).toLowerCase()} (${w.times}x)`)
|
|
212
|
+
.join(', ');
|
|
213
|
+
console.log(chalk_1.default.white(` What worked: ${topFixes}`));
|
|
214
|
+
}
|
|
215
|
+
console.log('');
|
|
216
|
+
console.log(chalk_1.default.bold.cyan(` → ${advice.suggestion}`));
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
// Generic advice for first-time spirals
|
|
220
|
+
console.log(chalk_1.default.gray(' Consider:'));
|
|
221
|
+
console.log(chalk_1.default.gray(' • Step back and write a test'));
|
|
222
|
+
console.log(chalk_1.default.gray(' • Check the docs or ask for help'));
|
|
223
|
+
console.log(chalk_1.default.gray(' • Take a 5-minute break'));
|
|
224
|
+
}
|
|
225
|
+
console.log('');
|
|
226
|
+
console.log(chalk_1.default.cyan('─'.repeat(60)));
|
|
227
|
+
// Record this spiral to history
|
|
228
|
+
(0, spiral_history_1.appendSpiral)(pattern, component, duration, fixes.length);
|
|
229
|
+
}
|
|
230
|
+
async function checkForInnerLoopIssues(repoPath, state, quiet) {
|
|
231
|
+
if (state.recentCommits.length < 3)
|
|
232
|
+
return;
|
|
233
|
+
try {
|
|
234
|
+
// Get commit stats for inner-loop analysis
|
|
235
|
+
const commitStats = await (0, git_1.getCommitStats)(repoPath, '1 hour ago');
|
|
236
|
+
// Convert commits to TimelineEvent format
|
|
237
|
+
const events = state.recentCommits.map((c, idx) => ({
|
|
238
|
+
hash: c.hash,
|
|
239
|
+
timestamp: c.date,
|
|
240
|
+
author: c.author,
|
|
241
|
+
subject: c.message,
|
|
242
|
+
type: c.type,
|
|
243
|
+
scope: c.scope,
|
|
244
|
+
sessionId: 'watch',
|
|
245
|
+
sessionPosition: idx,
|
|
246
|
+
gapMinutes: 0,
|
|
247
|
+
isRefactor: c.type === 'refactor',
|
|
248
|
+
spiralDepth: 0,
|
|
249
|
+
}));
|
|
250
|
+
// Run quick inner-loop check
|
|
251
|
+
const check = (0, inner_loop_1.quickInnerLoopCheck)(events, commitStats.filesPerCommit, commitStats.lineStatsPerCommit);
|
|
252
|
+
// Only show warning if issues changed
|
|
253
|
+
if (check.hasIssues && check.issueCount > state.innerLoopIssueCount) {
|
|
254
|
+
// Get full analysis for detailed warning
|
|
255
|
+
const analysis = (0, inner_loop_1.analyzeInnerLoop)(events, commitStats.filesPerCommit, commitStats.lineStatsPerCommit);
|
|
256
|
+
displayInnerLoopWarning(analysis);
|
|
257
|
+
state.innerLoopIssueCount = check.issueCount;
|
|
258
|
+
state.lastInnerLoopWarning = check.topIssue;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
// Silently ignore errors
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
function displayInnerLoopWarning(analysis) {
|
|
266
|
+
const healthEmoji = analysis.summary.overallHealth === 'critical' ? '🚨' :
|
|
267
|
+
analysis.summary.overallHealth === 'warning' ? '⚠️' : '✅';
|
|
268
|
+
const healthColor = analysis.summary.overallHealth === 'critical' ? chalk_1.default.red :
|
|
269
|
+
analysis.summary.overallHealth === 'warning' ? chalk_1.default.yellow : chalk_1.default.green;
|
|
170
270
|
console.log('');
|
|
171
|
-
console.log(
|
|
172
|
-
console.log(chalk_1.default.yellow(` Component: ${component}`));
|
|
173
|
-
console.log(chalk_1.default.yellow(` Fixes: ${fixes.length} commits${duration > 0 ? `, ${duration} min` : ''}`));
|
|
271
|
+
console.log(healthColor(` ${healthEmoji} INNER LOOP ${analysis.summary.overallHealth.toUpperCase()}`));
|
|
174
272
|
console.log('');
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
273
|
+
// Show detected issues
|
|
274
|
+
if (analysis.testsPassingLie.detected) {
|
|
275
|
+
console.log(chalk_1.default.red(` 🤥 ${analysis.testsPassingLie.message}`));
|
|
276
|
+
}
|
|
277
|
+
if (analysis.contextAmnesia.detected) {
|
|
278
|
+
console.log(chalk_1.default.yellow(` 🧠 ${analysis.contextAmnesia.message}`));
|
|
279
|
+
}
|
|
280
|
+
if (analysis.instructionDrift.detected) {
|
|
281
|
+
console.log(chalk_1.default.yellow(` 🎯 ${analysis.instructionDrift.message}`));
|
|
282
|
+
}
|
|
283
|
+
if (analysis.loggingOnly.detected) {
|
|
284
|
+
console.log(chalk_1.default.yellow(` 🔍 ${analysis.loggingOnly.message}`));
|
|
285
|
+
}
|
|
286
|
+
// Show top recommendation
|
|
287
|
+
if (analysis.recommendations.length > 0) {
|
|
288
|
+
console.log('');
|
|
289
|
+
console.log(chalk_1.default.bold.cyan(` → ${analysis.recommendations[0]}`));
|
|
290
|
+
}
|
|
291
|
+
// Emergency protocol for critical issues
|
|
292
|
+
if (analysis.summary.overallHealth === 'critical') {
|
|
293
|
+
console.log('');
|
|
294
|
+
console.log(chalk_1.default.red.bold(' STOP → git status → backup → start simple'));
|
|
295
|
+
}
|
|
179
296
|
console.log('');
|
|
180
297
|
console.log(chalk_1.default.cyan('─'.repeat(60)));
|
|
181
298
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":";;;;;AAeA,gDAWC;AA1BD,yCAAoC;AACpC,kDAA0B;AAC1B,gCAA+C;AAS/C,MAAM,gBAAgB,GAAG,CAAC,CAAC,CAAC,yBAAyB;AACrD,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,YAAY;AACxC,MAAM,aAAa,GAAG,EAAE,CAAC,CAAC,uBAAuB;AAEjD,SAAgB,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,OAAO,CAAC;SAC7B,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAC7D,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,CAAC;SACtE,MAAM,CAAC,aAAa,EAAE,qCAAqC,EAAE,KAAK,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAIvB;IACC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC;IAEjE,IAAI,CAAC,CAAC,MAAM,IAAA,eAAS,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,KAAK,GAAe;QACxB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,IAAI,GAAG,EAAE;KAC1B,CAAC;IAEF,oBAAoB;IACpB,MAAM,cAAc,GAAG,MAAM,IAAA,gBAAU,EAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACpE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,KAAK,CAAC,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QAE7D,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,cAAc,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,6BAA6B;QAC7B,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,uBAAuB;IACvB,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,gBAAU,EAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAE7D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEjC,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAEnC,iCAAiC;YACjC,IAAI,UAAU,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC;gBACxC,mBAAmB;gBACnB,MAAM,UAAU,GAAa,EAAE,CAAC;gBAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,cAAc;wBAAE,MAAM;oBAChD,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1B,CAAC;gBAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,iCAAiC;oBACjC,KAAK,CAAC,aAAa,GAAG;wBACpB,GAAG,UAAU;wBACb,GAAG,KAAK,CAAC,aAAa;qBACvB,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;oBAE1B,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC;oBAElC,sBAAsB;oBACtB,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;wBAC1C,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;oBACvC,CAAC;oBAED,oBAAoB;oBACpB,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iCAAiC;QACnC,CAAC;IACH,CAAC,CAAC;IAEF,gBAAgB;IAChB,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE5B,qBAAqB;IACrB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,KAAc;IACnD,IAAI,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO;IAE3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACnD,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IAEH,MAAM,UAAU,GAA0C;QACxD,IAAI,EAAE,eAAK,CAAC,KAAK;QACjB,GAAG,EAAE,eAAK,CAAC,MAAM;QACjB,IAAI,EAAE,eAAK,CAAC,IAAI;QAChB,KAAK,EAAE,eAAK,CAAC,IAAI;QACjB,QAAQ,EAAE,eAAK,CAAC,OAAO;QACvB,IAAI,EAAE,eAAK,CAAC,IAAI;QAChB,KAAK,EAAE,eAAK,CAAC,IAAI;QACjB,KAAK,EAAE,eAAK,CAAC,KAAK;KACnB,CAAC;IAEF,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;QACzC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;QACrC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAEnB,OAAO,CAAC,GAAG,CACT,KAAK,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,EAAE,CAChF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAiB,EAAE,KAAc;IACxD,qEAAqE;IACrE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEhD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK;YAAE,SAAS;QAEpC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,6DAA6D;IAC7D,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC;QAC7C,IAAI,KAAK,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAE9D,yCAAyC;YACzC,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;gBAChC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClD,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,+CAA+C;IAC/C,kCAAkC;IAClC,sDAAsD;IAEtD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE;SAChC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IAEhB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;QACxB,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI;QAC9D,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ;QAC7D,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM;KACxD,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAiB,EAAE,KAAe;IAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC;QACxF,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gBAAgB,KAAK,CAAC,MAAM,WAAW,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5G,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC"}
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":";;;;;AAgDA,gDAWC;AA3DD,yCAAoC;AACpC,kDAA0B;AAC1B,gCAA+D;AAE/D,8DAMmC;AACnC,8CAIuB;AAEvB,yDAAyD;AACzD,MAAM,QAAQ,GAA2B;IACvC,aAAa,EAAE,oDAAoD;IACnE,YAAY,EAAE,kDAAkD;IAChE,YAAY,EAAE,6CAA6C;IAC3D,OAAO,EAAE,oCAAoC;IAC7C,cAAc,EAAE,iCAAiC;IACjD,YAAY,EAAE,mCAAmC;CAClD,CAAC;AAEF,SAAS,aAAa,CAAC,QAAgB;IACrC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAUD,MAAM,gBAAgB,GAAG,CAAC,CAAC,CAAC,yBAAyB;AACrD,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,YAAY;AACxC,MAAM,aAAa,GAAG,EAAE,CAAC,CAAC,uBAAuB;AAEjD,SAAgB,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,OAAO,CAAC;SAC7B,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAC7D,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,CAAC;SACtE,MAAM,CAAC,aAAa,EAAE,qCAAqC,EAAE,KAAK,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAIvB;IACC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC;IAEjE,IAAI,CAAC,CAAC,MAAM,IAAA,eAAS,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,KAAK,GAAe;QACxB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,oBAAoB,EAAE,IAAI;QAC1B,mBAAmB,EAAE,CAAC;KACvB,CAAC;IAEF,oBAAoB;IACpB,MAAM,cAAc,GAAG,MAAM,IAAA,gBAAU,EAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACpE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,KAAK,CAAC,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QAE7D,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,cAAc,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,6BAA6B;QAC7B,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtC,8CAA8C;QAC9C,MAAM,uBAAuB,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IAED,uBAAuB;IACvB,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,gBAAU,EAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAE7D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEjC,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAEnC,iCAAiC;YACjC,IAAI,UAAU,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC;gBACxC,mBAAmB;gBACnB,MAAM,UAAU,GAAa,EAAE,CAAC;gBAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,cAAc;wBAAE,MAAM;oBAChD,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1B,CAAC;gBAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,iCAAiC;oBACjC,KAAK,CAAC,aAAa,GAAG;wBACpB,GAAG,UAAU;wBACb,GAAG,KAAK,CAAC,aAAa;qBACvB,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;oBAE1B,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC;oBAElC,sBAAsB;oBACtB,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;wBAC1C,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;oBACvC,CAAC;oBAED,oBAAoB;oBACpB,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;oBAEtC,8BAA8B;oBAC9B,MAAM,uBAAuB,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iCAAiC;QACnC,CAAC;IACH,CAAC,CAAC;IAEF,gBAAgB;IAChB,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE5B,qBAAqB;IACrB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,KAAc;IACnD,IAAI,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO;IAE3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACnD,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IAEH,MAAM,UAAU,GAA0C;QACxD,IAAI,EAAE,eAAK,CAAC,KAAK;QACjB,GAAG,EAAE,eAAK,CAAC,MAAM;QACjB,IAAI,EAAE,eAAK,CAAC,IAAI;QAChB,KAAK,EAAE,eAAK,CAAC,IAAI;QACjB,QAAQ,EAAE,eAAK,CAAC,OAAO;QACvB,IAAI,EAAE,eAAK,CAAC,IAAI;QAChB,KAAK,EAAE,eAAK,CAAC,IAAI;QACjB,KAAK,EAAE,eAAK,CAAC,KAAK;KACnB,CAAC;IAEF,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;QACzC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;QACrC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAEnB,OAAO,CAAC,GAAG,CACT,KAAK,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,EAAE,CAChF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAiB,EAAE,KAAc;IACxD,qEAAqE;IACrE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEhD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK;YAAE,SAAS;QAEpC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,6DAA6D;IAC7D,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC;QAC7C,IAAI,KAAK,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAE9D,yCAAyC;YACzC,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;gBAChC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClD,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,+CAA+C;IAC/C,kCAAkC;IAClC,sDAAsD;IAEtD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE;SAChC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IAEhB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;QACxB,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI;QAC9D,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ;QAC7D,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM;KACxD,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAiB,EAAE,KAAe;IAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC;QACxF,CAAC,CAAC,CAAC,CAAC;IAEN,sCAAsC;IACtC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,IAAA,sCAAqB,EAAC,OAAO,CAAC,CAAC;IAEnD,uCAAuC;IACvC,MAAM,MAAM,GAAG,IAAA,0BAAS,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,SAAS,SAAS,eAAe,WAAW,GAAG,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,MAAM,SAAS,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACnG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,yCAAyC;IACzC,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,uBAAuB,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,iBAAiB,MAAM,CAAC,WAAW,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC;QAE5I,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAA,yCAAwB,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC;iBACjF,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,wCAAwC;QACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAExC,gCAAgC;IAChC,IAAA,6BAAY,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,QAAgB,EAChB,KAAiB,EACjB,KAAc;IAEd,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO;IAE3C,IAAI,CAAC;QACH,2CAA2C;QAC3C,MAAM,WAAW,GAAG,MAAM,IAAA,oBAAc,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAEjE,0CAA0C;QAC1C,MAAM,MAAM,GAAoB,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YACnE,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,IAAI;YACjB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,OAAO;YAClB,eAAe,EAAE,GAAG;YACpB,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,CAAC,CAAC,IAAI,KAAK,UAAU;YACjC,WAAW,EAAE,CAAC;SACf,CAAC,CAAC,CAAC;QAEJ,6BAA6B;QAC7B,MAAM,KAAK,GAAG,IAAA,gCAAmB,EAC/B,MAAM,EACN,WAAW,CAAC,cAAc,EAC1B,WAAW,CAAC,kBAAkB,CAC/B,CAAC;QAEF,sCAAsC;QACtC,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;YACpE,yCAAyC;YACzC,MAAM,QAAQ,GAAG,IAAA,6BAAgB,EAC/B,MAAM,EACN,WAAW,CAAC,cAAc,EAC1B,WAAW,CAAC,kBAAkB,CAC/B,CAAC;YAEF,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YAClC,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,UAAU,CAAC;YAC7C,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,QAA2B;IAC1D,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtD,QAAQ,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9E,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,CAAC;QAC3D,QAAQ,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC;IAE9F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,WAAW,eAAe,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;IACxG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,uBAAuB;IACvB,IAAI,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,YAAY,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,YAAY,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,YAAY,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,0BAA0B;IAC1B,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,yCAAyC;IACzC,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Amnesia Detector
|
|
3
|
+
*
|
|
4
|
+
* Detects when AI forgets previous instructions and:
|
|
5
|
+
* - Reverts intentional changes
|
|
6
|
+
* - Re-implements code that was just deleted
|
|
7
|
+
* - Repeats the same fix multiple times
|
|
8
|
+
*
|
|
9
|
+
* This is a key "Inner Loop Disaster" in vibe coding.
|
|
10
|
+
*/
|
|
11
|
+
import { TimelineEvent } from '../types';
|
|
12
|
+
import { ContextAmnesiaResult, InnerLoopConfig } from './types';
|
|
13
|
+
/**
|
|
14
|
+
* Detect context amnesia patterns in commit history.
|
|
15
|
+
*/
|
|
16
|
+
export declare function detectContextAmnesia(events: TimelineEvent[], filesPerCommit: Map<string, string[]>, lineStatsPerCommit: Map<string, {
|
|
17
|
+
additions: number;
|
|
18
|
+
deletions: number;
|
|
19
|
+
}>, config?: Partial<InnerLoopConfig>): ContextAmnesiaResult;
|
|
20
|
+
//# sourceMappingURL=context-amnesia.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-amnesia.d.ts","sourceRoot":"","sources":["../../src/inner-loop/context-amnesia.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,oBAAoB,EAEpB,eAAe,EAEhB,MAAM,SAAS,CAAC;AAajB;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EAAE,EACvB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACrC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,EACzE,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,GACpC,oBAAoB,CAuDtB"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Context Amnesia Detector
|
|
4
|
+
*
|
|
5
|
+
* Detects when AI forgets previous instructions and:
|
|
6
|
+
* - Reverts intentional changes
|
|
7
|
+
* - Re-implements code that was just deleted
|
|
8
|
+
* - Repeats the same fix multiple times
|
|
9
|
+
*
|
|
10
|
+
* This is a key "Inner Loop Disaster" in vibe coding.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.detectContextAmnesia = detectContextAmnesia;
|
|
14
|
+
const date_fns_1 = require("date-fns");
|
|
15
|
+
const types_1 = require("./types");
|
|
16
|
+
/**
|
|
17
|
+
* Detect context amnesia patterns in commit history.
|
|
18
|
+
*/
|
|
19
|
+
function detectContextAmnesia(events, filesPerCommit, lineStatsPerCommit, config = {}) {
|
|
20
|
+
const cfg = { ...types_1.DEFAULT_INNER_LOOP_CONFIG, ...config };
|
|
21
|
+
const incidents = [];
|
|
22
|
+
if (events.length < 2) {
|
|
23
|
+
return {
|
|
24
|
+
detected: false,
|
|
25
|
+
incidents: [],
|
|
26
|
+
totalIncidents: 0,
|
|
27
|
+
totalTimeWasted: 0,
|
|
28
|
+
message: 'Not enough commits to detect context amnesia',
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
// Build enriched commit data
|
|
32
|
+
const commits = events.map((e) => ({
|
|
33
|
+
hash: e.hash,
|
|
34
|
+
message: e.subject,
|
|
35
|
+
timestamp: e.timestamp,
|
|
36
|
+
scope: e.scope,
|
|
37
|
+
files: filesPerCommit.get(e.hash) || [],
|
|
38
|
+
additions: lineStatsPerCommit.get(e.hash)?.additions || 0,
|
|
39
|
+
deletions: lineStatsPerCommit.get(e.hash)?.deletions || 0,
|
|
40
|
+
type: e.type,
|
|
41
|
+
}));
|
|
42
|
+
// Sort by timestamp ascending
|
|
43
|
+
commits.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
|
|
44
|
+
// Detection strategies
|
|
45
|
+
const revertIncidents = detectReverts(commits, cfg);
|
|
46
|
+
const reimplementIncidents = detectReimplementation(commits, cfg);
|
|
47
|
+
const repeatedFixIncidents = detectRepeatedFixes(commits, cfg);
|
|
48
|
+
incidents.push(...revertIncidents, ...reimplementIncidents, ...repeatedFixIncidents);
|
|
49
|
+
// Calculate total time wasted
|
|
50
|
+
const totalTimeWasted = incidents.reduce((sum, i) => sum + i.gapMinutes, 0);
|
|
51
|
+
// Generate message
|
|
52
|
+
const detected = incidents.length > 0;
|
|
53
|
+
let message = '';
|
|
54
|
+
if (detected) {
|
|
55
|
+
const types = new Set(incidents.map((i) => i.type));
|
|
56
|
+
const typeStr = Array.from(types).join(', ');
|
|
57
|
+
message = `🧠 Context amnesia detected: ${incidents.length} incident${incidents.length > 1 ? 's' : ''} (${typeStr}). ~${totalTimeWasted}m potentially wasted.`;
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
detected,
|
|
61
|
+
incidents: incidents.slice(0, 10), // Top 10
|
|
62
|
+
totalIncidents: incidents.length,
|
|
63
|
+
totalTimeWasted,
|
|
64
|
+
message,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Detect explicit reverts or undo patterns.
|
|
69
|
+
*/
|
|
70
|
+
function detectReverts(commits, config) {
|
|
71
|
+
const incidents = [];
|
|
72
|
+
// Patterns that indicate a revert
|
|
73
|
+
const revertPatterns = [
|
|
74
|
+
/revert/i,
|
|
75
|
+
/undo/i,
|
|
76
|
+
/rollback/i,
|
|
77
|
+
/back\s*out/i,
|
|
78
|
+
/restore\s+previous/i,
|
|
79
|
+
];
|
|
80
|
+
for (let i = 1; i < commits.length; i++) {
|
|
81
|
+
const commit = commits[i];
|
|
82
|
+
const isRevert = revertPatterns.some((p) => p.test(commit.message));
|
|
83
|
+
if (isRevert) {
|
|
84
|
+
// Find what was reverted (look back within window)
|
|
85
|
+
const windowStart = new Date(commit.timestamp.getTime() - config.amnesiaWindowMinutes * 60 * 1000);
|
|
86
|
+
// Find commits in window that touch same files
|
|
87
|
+
for (let j = i - 1; j >= 0; j--) {
|
|
88
|
+
const original = commits[j];
|
|
89
|
+
if (original.timestamp < windowStart)
|
|
90
|
+
break;
|
|
91
|
+
const sharedFiles = commit.files.filter((f) => original.files.includes(f));
|
|
92
|
+
if (sharedFiles.length > 0) {
|
|
93
|
+
const gap = (0, date_fns_1.differenceInMinutes)(commit.timestamp, original.timestamp);
|
|
94
|
+
incidents.push({
|
|
95
|
+
type: 'revert',
|
|
96
|
+
originalCommit: {
|
|
97
|
+
hash: original.hash,
|
|
98
|
+
message: original.message,
|
|
99
|
+
timestamp: original.timestamp,
|
|
100
|
+
},
|
|
101
|
+
repeatCommit: {
|
|
102
|
+
hash: commit.hash,
|
|
103
|
+
message: commit.message,
|
|
104
|
+
timestamp: commit.timestamp,
|
|
105
|
+
},
|
|
106
|
+
scope: commit.scope || original.scope,
|
|
107
|
+
filesAffected: sharedFiles,
|
|
108
|
+
gapMinutes: gap,
|
|
109
|
+
description: `Reverted changes from ${gap}m ago`,
|
|
110
|
+
});
|
|
111
|
+
break; // Only count once per revert
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return incidents;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Detect reimplementation: code deleted then similar code re-added.
|
|
120
|
+
*/
|
|
121
|
+
function detectReimplementation(commits, config) {
|
|
122
|
+
const incidents = [];
|
|
123
|
+
// Track significant deletions
|
|
124
|
+
const deletions = [];
|
|
125
|
+
for (const commit of commits) {
|
|
126
|
+
// Significant deletion: more deletions than additions
|
|
127
|
+
if (commit.deletions > commit.additions && commit.deletions > 10) {
|
|
128
|
+
deletions.push({
|
|
129
|
+
commit,
|
|
130
|
+
files: commit.files,
|
|
131
|
+
linesDeleted: commit.deletions,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Look for later commits that re-add similar content to same files
|
|
136
|
+
for (const deletion of deletions) {
|
|
137
|
+
const windowEnd = new Date(deletion.commit.timestamp.getTime() + config.amnesiaWindowMinutes * 60 * 1000);
|
|
138
|
+
for (const commit of commits) {
|
|
139
|
+
// Must be after the deletion
|
|
140
|
+
if (commit.timestamp <= deletion.commit.timestamp)
|
|
141
|
+
continue;
|
|
142
|
+
if (commit.timestamp > windowEnd)
|
|
143
|
+
continue;
|
|
144
|
+
// Must touch same files with additions
|
|
145
|
+
const sharedFiles = commit.files.filter((f) => deletion.files.includes(f));
|
|
146
|
+
if (sharedFiles.length === 0)
|
|
147
|
+
continue;
|
|
148
|
+
// Must have significant additions (reimplementing)
|
|
149
|
+
if (commit.additions < deletion.linesDeleted * 0.5)
|
|
150
|
+
continue;
|
|
151
|
+
const gap = (0, date_fns_1.differenceInMinutes)(commit.timestamp, deletion.commit.timestamp);
|
|
152
|
+
// Check if this looks like reimplementation vs intentional refactor
|
|
153
|
+
// Refactors usually have "refactor" in message
|
|
154
|
+
if (/refactor/i.test(commit.message))
|
|
155
|
+
continue;
|
|
156
|
+
incidents.push({
|
|
157
|
+
type: 'reimplementation',
|
|
158
|
+
originalCommit: {
|
|
159
|
+
hash: deletion.commit.hash,
|
|
160
|
+
message: deletion.commit.message,
|
|
161
|
+
timestamp: deletion.commit.timestamp,
|
|
162
|
+
},
|
|
163
|
+
repeatCommit: {
|
|
164
|
+
hash: commit.hash,
|
|
165
|
+
message: commit.message,
|
|
166
|
+
timestamp: commit.timestamp,
|
|
167
|
+
},
|
|
168
|
+
scope: commit.scope || deletion.commit.scope,
|
|
169
|
+
filesAffected: sharedFiles,
|
|
170
|
+
gapMinutes: gap,
|
|
171
|
+
description: `Deleted ${deletion.linesDeleted} lines, then re-added ${commit.additions} lines ${gap}m later`,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return incidents;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Detect repeated fixes: same area fixed multiple times in short window.
|
|
179
|
+
*/
|
|
180
|
+
function detectRepeatedFixes(commits, config) {
|
|
181
|
+
const incidents = [];
|
|
182
|
+
// Group fix commits by scope/files
|
|
183
|
+
const fixCommits = commits.filter((c) => c.type === 'fix');
|
|
184
|
+
// Track fixes per scope within time window
|
|
185
|
+
const scopeFixes = new Map();
|
|
186
|
+
for (const fix of fixCommits) {
|
|
187
|
+
const scope = fix.scope || fix.files[0] || 'unknown';
|
|
188
|
+
if (!scopeFixes.has(scope)) {
|
|
189
|
+
scopeFixes.set(scope, []);
|
|
190
|
+
}
|
|
191
|
+
scopeFixes.get(scope).push(fix);
|
|
192
|
+
}
|
|
193
|
+
// Find scopes with 3+ fixes in window (beyond normal spiral detection)
|
|
194
|
+
for (const [scope, fixes] of scopeFixes) {
|
|
195
|
+
if (fixes.length < 3)
|
|
196
|
+
continue;
|
|
197
|
+
// Check if messages are similar (forgot what was tried)
|
|
198
|
+
for (let i = 0; i < fixes.length - 1; i++) {
|
|
199
|
+
const current = fixes[i];
|
|
200
|
+
const next = fixes[i + 1];
|
|
201
|
+
const gap = (0, date_fns_1.differenceInMinutes)(next.timestamp, current.timestamp);
|
|
202
|
+
if (gap > config.amnesiaWindowMinutes)
|
|
203
|
+
continue;
|
|
204
|
+
// Check message similarity
|
|
205
|
+
const similarity = calculateSimilarity(current.message, next.message);
|
|
206
|
+
if (similarity > config.similarityThreshold) {
|
|
207
|
+
incidents.push({
|
|
208
|
+
type: 'forgotten_change',
|
|
209
|
+
originalCommit: {
|
|
210
|
+
hash: current.hash,
|
|
211
|
+
message: current.message,
|
|
212
|
+
timestamp: current.timestamp,
|
|
213
|
+
},
|
|
214
|
+
repeatCommit: {
|
|
215
|
+
hash: next.hash,
|
|
216
|
+
message: next.message,
|
|
217
|
+
timestamp: next.timestamp,
|
|
218
|
+
},
|
|
219
|
+
scope,
|
|
220
|
+
filesAffected: [...new Set([...current.files, ...next.files])],
|
|
221
|
+
gapMinutes: gap,
|
|
222
|
+
description: `Similar fix attempted ${gap}m later (${Math.round(similarity * 100)}% similar)`,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return incidents;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Calculate similarity between two commit messages (Jaccard index).
|
|
231
|
+
*/
|
|
232
|
+
function calculateSimilarity(msg1, msg2) {
|
|
233
|
+
const words1 = new Set(msg1
|
|
234
|
+
.toLowerCase()
|
|
235
|
+
.replace(/[^a-z0-9\s]/g, '')
|
|
236
|
+
.split(/\s+/)
|
|
237
|
+
.filter((w) => w.length > 2));
|
|
238
|
+
const words2 = new Set(msg2
|
|
239
|
+
.toLowerCase()
|
|
240
|
+
.replace(/[^a-z0-9\s]/g, '')
|
|
241
|
+
.split(/\s+/)
|
|
242
|
+
.filter((w) => w.length > 2));
|
|
243
|
+
if (words1.size === 0 || words2.size === 0)
|
|
244
|
+
return 0;
|
|
245
|
+
const intersection = new Set([...words1].filter((w) => words2.has(w)));
|
|
246
|
+
const union = new Set([...words1, ...words2]);
|
|
247
|
+
return intersection.size / union.size;
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=context-amnesia.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-amnesia.js","sourceRoot":"","sources":["../../src/inner-loop/context-amnesia.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inner Loop Failure Pattern Detection
|
|
3
|
+
*
|
|
4
|
+
* This module detects the 4 "Inner Loop Disasters" from vibe coding:
|
|
5
|
+
* 1. "Tests Passing" Lie - AI claims success but code doesn't work
|
|
6
|
+
* 2. Context Amnesia - Forgets instructions, re-does work
|
|
7
|
+
* 3. Instruction Drift - "Improves" things not asked for
|
|
8
|
+
* 4. Debug Loop Spiral - Adds logging instead of fixing
|
|
9
|
+
*/
|
|
10
|
+
import { TimelineEvent } from '../types';
|
|
11
|
+
import { InnerLoopAnalysis, InnerLoopConfig } from './types';
|
|
12
|
+
export * from './types';
|
|
13
|
+
export { detectTestsPassingLie } from './tests-passing-lie';
|
|
14
|
+
export { detectContextAmnesia } from './context-amnesia';
|
|
15
|
+
export { detectInstructionDrift, createSessionScope, inferSessionScope } from './instruction-drift';
|
|
16
|
+
export { detectLoggingOnlyCommits, analyzeCommitsForLogging } from './logging-only';
|
|
17
|
+
/**
|
|
18
|
+
* Run all inner loop failure pattern detectors.
|
|
19
|
+
*/
|
|
20
|
+
export declare function analyzeInnerLoop(events: TimelineEvent[], filesPerCommit: Map<string, string[]>, lineStatsPerCommit: Map<string, {
|
|
21
|
+
additions: number;
|
|
22
|
+
deletions: number;
|
|
23
|
+
}>, config?: Partial<InnerLoopConfig>): InnerLoopAnalysis;
|
|
24
|
+
/**
|
|
25
|
+
* Quick check for inner loop issues (fast, no diff analysis).
|
|
26
|
+
*/
|
|
27
|
+
export declare function quickInnerLoopCheck(events: TimelineEvent[], filesPerCommit: Map<string, string[]>, lineStatsPerCommit: Map<string, {
|
|
28
|
+
additions: number;
|
|
29
|
+
deletions: number;
|
|
30
|
+
}>): {
|
|
31
|
+
hasIssues: boolean;
|
|
32
|
+
issueCount: number;
|
|
33
|
+
topIssue: string | null;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Format inner loop analysis for terminal output.
|
|
37
|
+
*/
|
|
38
|
+
export declare function formatInnerLoopAnalysis(analysis: InnerLoopAnalysis): string;
|
|
39
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/inner-loop/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,eAAe,EAOhB,MAAM,SAAS,CAAC;AAOjB,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAEpF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EAAE,EACvB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACrC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,EACzE,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,GACpC,iBAAiB,CAqDnB;AA2FD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EAAE,EACvB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACrC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GACxE;IACD,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAcA;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAgD3E"}
|