fivocell 1.0.4 → 2.0.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 (152) hide show
  1. package/README.md +697 -505
  2. package/bin/cell.js +2 -2
  3. package/dist/behavior-intelligence.d.ts +90 -0
  4. package/dist/behavior-intelligence.d.ts.map +1 -0
  5. package/dist/behavior-intelligence.js +595 -0
  6. package/dist/behavior-intelligence.js.map +1 -0
  7. package/dist/cli.d.ts +6 -1
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +2191 -1
  10. package/dist/cli.js.map +1 -1
  11. package/dist/cloud-sync.d.ts +66 -0
  12. package/dist/cloud-sync.d.ts.map +1 -0
  13. package/dist/cloud-sync.js +328 -0
  14. package/dist/cloud-sync.js.map +1 -0
  15. package/dist/community-intelligence.d.ts +42 -0
  16. package/dist/community-intelligence.d.ts.map +1 -0
  17. package/dist/community-intelligence.js +160 -0
  18. package/dist/community-intelligence.js.map +1 -0
  19. package/dist/community-v2.d.ts +106 -0
  20. package/dist/community-v2.d.ts.map +1 -0
  21. package/dist/community-v2.js +378 -0
  22. package/dist/community-v2.js.map +1 -0
  23. package/dist/core/__tests__/chapter8-hostile.test.js +1 -1
  24. package/dist/core/__tests__/chapter8-hostile.test.js.map +1 -1
  25. package/dist/core/__tests__/chapter9-hostile.test.js +1 -1
  26. package/dist/core/__tests__/chapter9-hostile.test.js.map +1 -1
  27. package/dist/core/__tests__/complexity-analyzer.test.js +15 -15
  28. package/dist/core/__tests__/team-composer.test.js +2 -1
  29. package/dist/core/__tests__/team-composer.test.js.map +1 -1
  30. package/dist/core/convention-detector.d.ts.map +1 -1
  31. package/dist/core/convention-detector.js +11 -23
  32. package/dist/core/convention-detector.js.map +1 -1
  33. package/dist/core/cost-optimizer.d.ts.map +1 -1
  34. package/dist/core/cost-optimizer.js +13 -25
  35. package/dist/core/cost-optimizer.js.map +1 -1
  36. package/dist/core/database.d.ts +28 -0
  37. package/dist/core/database.d.ts.map +1 -0
  38. package/dist/core/database.js +587 -0
  39. package/dist/core/database.js.map +1 -0
  40. package/dist/core/knowledge-graph.d.ts.map +1 -1
  41. package/dist/core/knowledge-graph.js +9 -24
  42. package/dist/core/knowledge-graph.js.map +1 -1
  43. package/dist/core/logger.d.ts +9 -0
  44. package/dist/core/logger.d.ts.map +1 -0
  45. package/dist/core/logger.js +26 -0
  46. package/dist/core/logger.js.map +1 -0
  47. package/dist/core/playbook-generator.js +48 -48
  48. package/dist/core/privacy-manager.d.ts.map +1 -1
  49. package/dist/core/privacy-manager.js +5 -0
  50. package/dist/core/privacy-manager.js.map +1 -1
  51. package/dist/core/project-dna.d.ts.map +1 -1
  52. package/dist/core/project-dna.js +6 -19
  53. package/dist/core/project-dna.js.map +1 -1
  54. package/dist/core/prompt-builder.d.ts +18 -0
  55. package/dist/core/prompt-builder.d.ts.map +1 -0
  56. package/dist/core/prompt-builder.js +325 -0
  57. package/dist/core/prompt-builder.js.map +1 -0
  58. package/dist/core/session-memory.d.ts +90 -0
  59. package/dist/core/session-memory.d.ts.map +1 -0
  60. package/dist/core/session-memory.js +229 -0
  61. package/dist/core/session-memory.js.map +1 -0
  62. package/dist/core/signal-capture.d.ts +5 -0
  63. package/dist/core/signal-capture.d.ts.map +1 -1
  64. package/dist/core/signal-capture.js +67 -0
  65. package/dist/core/signal-capture.js.map +1 -1
  66. package/dist/core/team-composer.d.ts.map +1 -1
  67. package/dist/core/team-composer.js +16 -6
  68. package/dist/core/team-composer.js.map +1 -1
  69. package/dist/cross-model-memory.d.ts +95 -0
  70. package/dist/cross-model-memory.d.ts.map +1 -0
  71. package/dist/cross-model-memory.js +229 -0
  72. package/dist/cross-model-memory.js.map +1 -0
  73. package/dist/daemon/lifecycle.d.ts +18 -0
  74. package/dist/daemon/lifecycle.d.ts.map +1 -1
  75. package/dist/daemon/lifecycle.js +182 -5
  76. package/dist/daemon/lifecycle.js.map +1 -1
  77. package/dist/daemon/server.d.ts.map +1 -1
  78. package/dist/daemon/server.js +269 -6
  79. package/dist/daemon/server.js.map +1 -1
  80. package/dist/first-run.d.ts +8 -0
  81. package/dist/first-run.d.ts.map +1 -0
  82. package/dist/first-run.js +182 -0
  83. package/dist/first-run.js.map +1 -0
  84. package/dist/focus-report.d.ts +32 -0
  85. package/dist/focus-report.d.ts.map +1 -0
  86. package/dist/focus-report.js +293 -0
  87. package/dist/focus-report.js.map +1 -0
  88. package/dist/ide-intelligence.d.ts +118 -0
  89. package/dist/ide-intelligence.d.ts.map +1 -0
  90. package/dist/ide-intelligence.js +284 -0
  91. package/dist/ide-intelligence.js.map +1 -0
  92. package/dist/index.d.ts +22 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +119 -2
  95. package/dist/index.js.map +1 -1
  96. package/dist/insight-generator.d.ts +58 -0
  97. package/dist/insight-generator.d.ts.map +1 -0
  98. package/dist/insight-generator.js +314 -0
  99. package/dist/insight-generator.js.map +1 -0
  100. package/dist/journey-memory.d.ts +75 -0
  101. package/dist/journey-memory.d.ts.map +1 -0
  102. package/dist/journey-memory.js +360 -0
  103. package/dist/journey-memory.js.map +1 -0
  104. package/dist/mcp-server.d.ts +2054 -0
  105. package/dist/mcp-server.d.ts.map +1 -0
  106. package/dist/mcp-server.js +1120 -0
  107. package/dist/mcp-server.js.map +1 -0
  108. package/dist/onboarding-scan.d.ts +174 -0
  109. package/dist/onboarding-scan.d.ts.map +1 -0
  110. package/dist/onboarding-scan.js +1039 -0
  111. package/dist/onboarding-scan.js.map +1 -0
  112. package/dist/personal-intelligence.d.ts +97 -0
  113. package/dist/personal-intelligence.d.ts.map +1 -0
  114. package/dist/personal-intelligence.js +408 -0
  115. package/dist/personal-intelligence.js.map +1 -0
  116. package/dist/predictive-intelligence.d.ts +95 -0
  117. package/dist/predictive-intelligence.d.ts.map +1 -0
  118. package/dist/predictive-intelligence.js +544 -0
  119. package/dist/predictive-intelligence.js.map +1 -0
  120. package/dist/production.d.ts +67 -0
  121. package/dist/production.d.ts.map +1 -0
  122. package/dist/production.js +333 -0
  123. package/dist/production.js.map +1 -0
  124. package/dist/senior-features.d.ts +63 -0
  125. package/dist/senior-features.d.ts.map +1 -0
  126. package/dist/senior-features.js +325 -0
  127. package/dist/senior-features.js.map +1 -0
  128. package/dist/style-pull.d.ts +40 -0
  129. package/dist/style-pull.d.ts.map +1 -0
  130. package/dist/style-pull.js +385 -0
  131. package/dist/style-pull.js.map +1 -0
  132. package/dist/team-collaboration.d.ts +116 -0
  133. package/dist/team-collaboration.d.ts.map +1 -0
  134. package/dist/team-collaboration.js +375 -0
  135. package/dist/team-collaboration.js.map +1 -0
  136. package/dist/team-intelligence.d.ts +64 -0
  137. package/dist/team-intelligence.d.ts.map +1 -0
  138. package/dist/team-intelligence.js +289 -0
  139. package/dist/team-intelligence.js.map +1 -0
  140. package/dist/test-watch.d.ts +2 -0
  141. package/dist/test-watch.d.ts.map +1 -0
  142. package/dist/test-watch.js +8 -0
  143. package/dist/test-watch.js.map +1 -0
  144. package/dist/user-intelligence.d.ts +69 -0
  145. package/dist/user-intelligence.d.ts.map +1 -0
  146. package/dist/user-intelligence.js +553 -0
  147. package/dist/user-intelligence.js.map +1 -0
  148. package/dist/work-style.d.ts +49 -0
  149. package/dist/work-style.d.ts.map +1 -0
  150. package/dist/work-style.js +247 -0
  151. package/dist/work-style.js.map +1 -0
  152. package/package.json +3 -2
@@ -0,0 +1,544 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectPreFailureAlerts = detectPreFailureAlerts;
4
+ exports.predictDecisionRegret = predictDecisionRegret;
5
+ exports.getDecisionWarning = getDecisionWarning;
6
+ exports.detectComplexityTraps = detectComplexityTraps;
7
+ exports.detectScopeCreep = detectScopeCreep;
8
+ exports.predictEnergyPatterns = predictEnergyPatterns;
9
+ exports.analyzeStackCompatibility = analyzeStackCompatibility;
10
+ exports.getAllPredictions = getAllPredictions;
11
+ exports.calculateFileRisk = calculateFileRisk;
12
+ exports.estimateFeatureTime = estimateFeatureTime;
13
+ const database_1 = require("./core/database");
14
+ // ─── Pre-Failure Detection ───────────────────────────────────────────────────
15
+ function detectPreFailureAlerts(project) {
16
+ (0, database_1.initializeDatabase)();
17
+ const db = (0, database_1.getDb)();
18
+ const alerts = [];
19
+ const repeatBugs = db.prepare(project
20
+ ? "SELECT description, file_path, COUNT(*) as cnt FROM behavior_events WHERE event_type = 'bug_fix' AND project = ? GROUP BY description HAVING cnt > 1 ORDER BY cnt DESC LIMIT 10"
21
+ : "SELECT description, file_path, COUNT(*) as cnt FROM behavior_events WHERE event_type = 'bug_fix' GROUP BY description HAVING cnt > 1 ORDER BY cnt DESC LIMIT 10").all(...(project ? [project] : []));
22
+ for (const bug of repeatBugs) {
23
+ const confidence = Math.min(0.95, 0.5 + bug.cnt * 0.1);
24
+ alerts.push({
25
+ type: 'repeat_mistake',
26
+ severity: bug.cnt >= 3 ? 'critical' : 'warning',
27
+ message: `Repeat mistake detected: "${bug.description.slice(0, 80)}" has occurred ${bug.cnt} times`,
28
+ evidence: `File: ${bug.file_path} | Occurrences: ${bug.cnt}`,
29
+ suggestion: `Add a pre-commit check or lint rule to prevent this pattern. Consider adding validation before ${bug.file_path}`,
30
+ confidence,
31
+ file: bug.file_path,
32
+ historicalCount: bug.cnt,
33
+ });
34
+ }
35
+ const errorProneFiles = db.prepare("SELECT file_path, COUNT(*) as bug_count FROM behavior_events WHERE event_type = 'bug_fix' GROUP BY file_path HAVING bug_count >= 2 ORDER BY bug_count DESC LIMIT 10").all();
36
+ for (const f of errorProneFiles) {
37
+ alerts.push({
38
+ type: 'error_prone_file',
39
+ severity: f.bug_count >= 4 ? 'critical' : 'warning',
40
+ message: `File "${f.file_path}" has ${f.bug_count} recorded bugs — high risk of future issues`,
41
+ evidence: `Bug count: ${f.bug_count} across all sessions`,
42
+ suggestion: `Consider refactoring ${f.file_path} — files with 3+ bugs tend to accumulate more. Add comprehensive tests.`,
43
+ confidence: Math.min(0.9, 0.4 + f.bug_count * 0.1),
44
+ file: f.file_path,
45
+ historicalCount: f.bug_count,
46
+ });
47
+ }
48
+ const noTryCatchFiles = db.prepare("SELECT file_path, description FROM behavior_events WHERE event_type = 'bug_fix' AND description LIKE '%null%' OR description LIKE '%undefined%' GROUP BY file_path HAVING COUNT(*) >= 2").all();
49
+ for (const f of noTryCatchFiles) {
50
+ if (!alerts.some(a => a.file === f.file_path && a.type === 'pattern_risk')) {
51
+ alerts.push({
52
+ type: 'pattern_risk',
53
+ severity: 'warning',
54
+ message: `File "${f.file_path}" has null/undefined bugs — likely missing null checks`,
55
+ evidence: `Pattern: null/undefined errors in same file`,
56
+ suggestion: `Add optional chaining (?.) and nullish coalescing (??) to ${f.file_path}`,
57
+ confidence: 0.7,
58
+ file: f.file_path,
59
+ });
60
+ }
61
+ }
62
+ return alerts.sort((a, b) => b.confidence - a.confidence);
63
+ }
64
+ // ─── Decision Regret Prediction ──────────────────────────────────────────────
65
+ function predictDecisionRegret() {
66
+ (0, database_1.initializeDatabase)();
67
+ const db = (0, database_1.getDb)();
68
+ const regrets = [];
69
+ const techDecisions = db.prepare('SELECT technology, COUNT(*) as times, SUM(CASE WHEN was_right = 0 THEN 1 ELSE 0 END) as wrong_count, SUM(CASE WHEN was_right = 1 THEN 1 ELSE 0 END) as right_count FROM decisions GROUP BY technology HAVING times >= 1 ORDER BY times DESC').all();
70
+ for (const tech of techDecisions) {
71
+ const regretRate = tech.times > 0 ? tech.wrong_count / tech.times : 0;
72
+ if (regretRate >= 0.5 && tech.times >= 2) {
73
+ regrets.push({
74
+ technology: tech.technology,
75
+ timesChosen: tech.times,
76
+ timesReverted: tech.wrong_count,
77
+ regretRate: Math.round(regretRate * 100),
78
+ avgTimeBeforeRevert: 0,
79
+ warning: `You chose ${tech.technology} ${tech.times} times and it was wrong ${tech.wrong_count} times (${Math.round(regretRate * 100)}% regret rate). Consider alternatives before choosing again.`,
80
+ confidence: Math.min(0.95, 0.5 + tech.times * 0.1),
81
+ });
82
+ }
83
+ }
84
+ const allTech = db.prepare('SELECT technology, was_right, created_at FROM decisions ORDER BY created_at').all();
85
+ const techTimeline = new Map();
86
+ for (const d of allTech) {
87
+ if (!techTimeline.has(d.technology))
88
+ techTimeline.set(d.technology, []);
89
+ techTimeline.get(d.technology).push({
90
+ wasRight: d.was_right === null ? null : d.was_right === 1,
91
+ date: d.created_at,
92
+ });
93
+ }
94
+ for (const [tech, timeline] of techTimeline) {
95
+ const wrongStreak = timeline.filter(t => t.wasRight === false).length;
96
+ if (wrongStreak >= 2) {
97
+ const existing = regrets.find(r => r.technology === tech);
98
+ if (existing) {
99
+ existing.warning += ` Recent trend: ${wrongStreak} consecutive wrong decisions.`;
100
+ existing.confidence = Math.min(0.98, existing.confidence + 0.1);
101
+ }
102
+ else {
103
+ regrets.push({
104
+ technology: tech,
105
+ timesChosen: timeline.length,
106
+ timesReverted: wrongStreak,
107
+ regretRate: 100,
108
+ avgTimeBeforeRevert: 0,
109
+ warning: `Consecutive wrong decisions with ${tech}: ${wrongStreak} times in a row. Strongly consider alternatives.`,
110
+ confidence: 0.85,
111
+ });
112
+ }
113
+ }
114
+ }
115
+ return regrets.sort((a, b) => b.confidence - a.confidence);
116
+ }
117
+ function getDecisionWarning(technology) {
118
+ const regrets = predictDecisionRegret();
119
+ const match = regrets.find(r => r.technology.toLowerCase() === technology.toLowerCase());
120
+ if (match)
121
+ return match.warning;
122
+ return null;
123
+ }
124
+ // ─── Complexity Trap Detection ───────────────────────────────────────────────
125
+ function detectComplexityTraps(projectDir) {
126
+ const db = (0, database_1.getDb)();
127
+ const traps = [];
128
+ const bigFiles = db.prepare("SELECT file_path, description, evidence FROM behavior_events WHERE event_type = 'bug_fix' GROUP BY file_path HAVING COUNT(*) >= 3").all();
129
+ for (const f of bigFiles) {
130
+ traps.push({
131
+ type: 'high_cyclomatic',
132
+ file: f.file_path,
133
+ currentValue: 3,
134
+ threshold: 2,
135
+ message: `"${f.file_path}" has 3+ bugs — this file has high complexity. Consider splitting it.`,
136
+ suggestion: `Break ${f.file_path} into smaller, focused modules. Files with 3+ bugs are 5x more likely to accumulate more.`,
137
+ confidence: 0.8,
138
+ });
139
+ }
140
+ const sessionFiles = db.prepare("SELECT files_touched FROM sessions WHERE files_touched != '[]' ORDER BY start_time DESC LIMIT 20").all();
141
+ const fileFrequency = new Map();
142
+ for (const s of sessionFiles) {
143
+ try {
144
+ const files = JSON.parse(s.files_touched);
145
+ for (const f of files)
146
+ fileFrequency.set(f, (fileFrequency.get(f) || 0) + 1);
147
+ }
148
+ catch { /* skip */ }
149
+ }
150
+ for (const [file, count] of fileFrequency) {
151
+ if (count >= 5) {
152
+ traps.push({
153
+ type: 'function_growing',
154
+ file,
155
+ currentValue: count,
156
+ threshold: 5,
157
+ message: `"${file}" touched in ${count} sessions — likely needs refactoring or splitting`,
158
+ suggestion: `This file keeps appearing across sessions. Consider if it's doing too much.`,
159
+ confidence: Math.min(0.85, 0.4 + count * 0.05),
160
+ });
161
+ }
162
+ }
163
+ return traps.sort((a, b) => b.confidence - a.confidence);
164
+ }
165
+ // ─── Scope Creep Detector ────────────────────────────────────────────────────
166
+ function detectScopeCreep(project) {
167
+ const db = (0, database_1.getDb)();
168
+ const creeps = [];
169
+ const recentSessions = db.prepare(project
170
+ ? "SELECT key_decisions, files_touched, start_time, end_time FROM sessions WHERE project = ? AND end_time IS NOT NULL ORDER BY start_time DESC LIMIT 10"
171
+ : "SELECT key_decisions, files_touched, start_time, end_time FROM sessions WHERE end_time IS NOT NULL ORDER BY start_time DESC LIMIT 10").all(...(project ? [project] : []));
172
+ for (const s of recentSessions) {
173
+ try {
174
+ const decisions = JSON.parse(s.key_decisions || '[]');
175
+ const files = JSON.parse(s.files_touched || '[]');
176
+ if (decisions.length === 0 || files.length === 0)
177
+ continue;
178
+ const startMs = new Date(s.start_time).getTime();
179
+ const endMs = new Date(s.end_time).getTime();
180
+ const hours = (endMs - startMs) / (1000 * 60 * 60);
181
+ if (hours <= 0)
182
+ continue;
183
+ const featureName = decisions[0]?.split(':')[0] || 'unknown';
184
+ const estimatedFiles = Math.max(1, Math.ceil(hours * 0.5));
185
+ const overrunRatio = files.length / estimatedFiles;
186
+ if (overrunRatio > 1.5 && files.length > 3) {
187
+ const predictedHours = files.length * 0.5;
188
+ creeps.push({
189
+ feature: featureName,
190
+ filesTouched: files.length,
191
+ estimatedFiles,
192
+ overrunRatio: Math.round(overrunRatio * 10) / 10,
193
+ predictedCompletionHours: Math.round(predictedHours * 10) / 10,
194
+ actualHoursSoFar: Math.round(hours * 10) / 10,
195
+ message: `Scope creep detected: "${featureName}" touched ${files.length} files (expected ~${estimatedFiles}). ${Math.round(overrunRatio * 100)}% overrun.`,
196
+ confidence: Math.min(0.9, 0.5 + (overrunRatio - 1) * 0.2),
197
+ });
198
+ }
199
+ }
200
+ catch { /* skip parse errors */ }
201
+ }
202
+ return creeps.sort((a, b) => b.confidence - a.confidence);
203
+ }
204
+ // ─── Energy-Based Prediction ─────────────────────────────────────────────────
205
+ function predictEnergyPatterns() {
206
+ const db = (0, database_1.getDb)();
207
+ const predictions = [];
208
+ const bugByHour = db.prepare("SELECT created_at FROM behavior_events WHERE event_type = 'bug_fix'").all();
209
+ const hourCounts = new Map();
210
+ for (const b of bugByHour) {
211
+ try {
212
+ const d = new Date(b.created_at);
213
+ if (!isNaN(d.getTime())) {
214
+ const hour = d.getHours();
215
+ hourCounts.set(hour, (hourCounts.get(hour) || 0) + 1);
216
+ }
217
+ }
218
+ catch { /* skip */ }
219
+ }
220
+ if (bugByHour.length >= 3) {
221
+ const maxBugs = Math.max(...hourCounts.values());
222
+ const avoidHours = [...hourCounts.entries()]
223
+ .filter(([, count]) => count >= maxBugs * 0.7)
224
+ .map(([hour]) => hour)
225
+ .sort((a, b) => a - b);
226
+ if (avoidHours.length > 0 && avoidHours.length <= 6) {
227
+ const rangeStr = avoidHours.map(h => `${h}:00-${h + 1}:00`).join(', ');
228
+ predictions.push({
229
+ type: 'avoid_time',
230
+ message: `Bug introduction peaks at ${rangeStr}. Avoid complex coding during these hours.`,
231
+ avoidTime: rangeStr,
232
+ errorRateIncrease: Math.round((maxBugs / (bugByHour.length || 1)) * 100),
233
+ confidence: 0.75,
234
+ });
235
+ }
236
+ const sortedHours = [...hourCounts.entries()].sort((a, b) => a[1] - b[1]);
237
+ const safeHours = sortedHours.slice(0, 3).map(([h]) => h);
238
+ if (safeHours.length > 0) {
239
+ predictions.push({
240
+ type: 'optimal_time',
241
+ message: `Your safest coding hours are ${safeHours.map(h => `${h}:00`).join(', ')} — lowest bug introduction rate.`,
242
+ bestTime: safeHours.map(h => `${h}:00-${h + 1}:00`).join(', '),
243
+ confidence: 0.7,
244
+ });
245
+ }
246
+ }
247
+ const sessionDurations = db.prepare("SELECT start_time, end_time FROM sessions WHERE end_time IS NOT NULL ORDER BY start_time DESC LIMIT 30").all();
248
+ let totalMinutes = 0;
249
+ let longSessions = 0;
250
+ for (const s of sessionDurations) {
251
+ const start = new Date(s.start_time).getTime();
252
+ const end = new Date(s.end_time).getTime();
253
+ const mins = (end - start) / (1000 * 60);
254
+ totalMinutes += mins;
255
+ if (mins > 180)
256
+ longSessions++;
257
+ }
258
+ if (longSessions >= 2) {
259
+ predictions.push({
260
+ type: 'break_needed',
261
+ message: `You've had ${longSessions} sessions over 3 hours recently. Error rate increases 2x after 3 continuous hours of coding.`,
262
+ hoursWorked: Math.round(totalMinutes / 60),
263
+ confidence: 0.8,
264
+ });
265
+ }
266
+ if (bugByHour.length >= 5) {
267
+ const recentBugs = bugByHour.slice(0, 5);
268
+ const now = new Date();
269
+ const recentDates = recentBugs.map(b => new Date(b.created_at));
270
+ const avgGap = recentDates.reduce((sum, d, i) => {
271
+ if (i === 0)
272
+ return 0;
273
+ return sum + (recentDates[i - 1].getTime() - d.getTime());
274
+ }, 0) / (recentDates.length - 1 || 1);
275
+ const hoursSinceLast = (now.getTime() - recentDates[0].getTime()) / (1000 * 60 * 60);
276
+ if (hoursSinceLast < 2 && recentBugs.length >= 3) {
277
+ predictions.push({
278
+ type: 'energy_low',
279
+ message: `3+ bugs in quick succession — you may be tired. Take a break before continuing.`,
280
+ confidence: 0.7,
281
+ });
282
+ }
283
+ }
284
+ return predictions;
285
+ }
286
+ // ─── Stack Compatibility Warning ─────────────────────────────────────────────
287
+ function analyzeStackCompatibility() {
288
+ const db = (0, database_1.getDb)();
289
+ const warnings = [];
290
+ const techPerformance = db.prepare('SELECT technology, COUNT(*) as times, SUM(CASE WHEN was_right = 1 THEN 1 ELSE 0 END) as right_count, SUM(CASE WHEN was_right = 0 THEN 1 ELSE 0 END) as wrong_count FROM decisions GROUP BY technology HAVING times >= 2').all();
291
+ for (const tech of techPerformance) {
292
+ const successRate = tech.times > 0 ? tech.right_count / tech.times : 0;
293
+ if (successRate < 0.4 && tech.times >= 2) {
294
+ warnings.push({
295
+ type: 'tool_ineffective',
296
+ technology: tech.technology,
297
+ message: `${tech.technology} works only ${Math.round(successRate * 100)}% of the time for you (${tech.right_count}/${tech.times}). Consider alternatives.`,
298
+ evidence: `Decisions: ${tech.times} | Success: ${tech.right_count} | Failures: ${tech.wrong_count}`,
299
+ confidence: Math.min(0.9, 0.5 + tech.times * 0.08),
300
+ });
301
+ }
302
+ }
303
+ const migrationPatterns = db.prepare("SELECT technology, reason, was_right, created_at FROM decisions WHERE technology LIKE '%→%' OR reason LIKE '%migrate%' OR reason LIKE '%switch%' ORDER BY created_at").all();
304
+ const techReplacements = new Map();
305
+ for (const m of migrationPatterns) {
306
+ const match = m.reason.match(/(\w+)\s*(?:→|to|from)\s*(\w+)/i);
307
+ if (match) {
308
+ const key = `${match[1]}→${match[2]}`;
309
+ const existing = techReplacements.get(key);
310
+ if (existing)
311
+ existing.count++;
312
+ else
313
+ techReplacements.set(key, { from: match[1], to: match[2], count: 1 });
314
+ }
315
+ }
316
+ for (const [, data] of techReplacements) {
317
+ if (data.count >= 2) {
318
+ warnings.push({
319
+ type: 'dependency_risk',
320
+ technology: data.from,
321
+ message: `You've migrated away from ${data.from} ${data.count} times. Consider if ${data.to} is truly better for your use case.`,
322
+ alternative: data.to,
323
+ evidence: `Migration count: ${data.count}`,
324
+ confidence: 0.75,
325
+ });
326
+ }
327
+ }
328
+ const bugsByTech = db.prepare("SELECT technology, COUNT(*) as bug_count FROM behavior_events b JOIN decisions d ON b.project = d.project WHERE b.event_type = 'bug_fix' GROUP BY d.technology ORDER BY bug_count DESC LIMIT 5").all();
329
+ for (const t of bugsByTech) {
330
+ if (t.bug_count >= 3) {
331
+ const existing = warnings.find(w => w.technology === t.technology);
332
+ if (!existing) {
333
+ warnings.push({
334
+ type: 'library_mismatch',
335
+ technology: t.technology,
336
+ message: `${t.technology} is associated with ${t.bug_count} bugs in your projects. This library may not suit your coding style.`,
337
+ evidence: `Bug association count: ${t.bug_count}`,
338
+ confidence: 0.65,
339
+ });
340
+ }
341
+ }
342
+ }
343
+ return warnings.sort((a, b) => b.confidence - a.confidence);
344
+ }
345
+ // ─── Unified Predictions ─────────────────────────────────────────────────────
346
+ function getAllPredictions(project) {
347
+ const predictions = [];
348
+ const now = new Date().toISOString();
349
+ const alerts = detectPreFailureAlerts(project);
350
+ for (const a of alerts) {
351
+ predictions.push({
352
+ id: `pf_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
353
+ type: 'pre_failure',
354
+ severity: a.severity,
355
+ title: a.type === 'repeat_mistake' ? 'Repeat Mistake Warning' : a.type === 'error_prone_file' ? 'Error-Prone File' : 'Pattern Risk',
356
+ message: a.message,
357
+ confidence: a.confidence,
358
+ actionable: true,
359
+ suggestedAction: a.suggestion,
360
+ createdAt: now,
361
+ project,
362
+ });
363
+ }
364
+ const regrets = predictDecisionRegret();
365
+ for (const r of regrets) {
366
+ predictions.push({
367
+ id: `dr_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
368
+ type: 'decision_regret',
369
+ severity: r.regretRate >= 75 ? 'critical' : 'warning',
370
+ title: `Decision Regret: ${r.technology}`,
371
+ message: r.warning,
372
+ confidence: r.confidence,
373
+ actionable: true,
374
+ suggestedAction: `Before choosing ${r.technology} again, consider what went wrong ${r.timesReverted} times.`,
375
+ createdAt: now,
376
+ project,
377
+ });
378
+ }
379
+ const complexity = detectComplexityTraps();
380
+ for (const c of complexity) {
381
+ predictions.push({
382
+ id: `ct_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
383
+ type: 'complexity_trap',
384
+ severity: 'warning',
385
+ title: 'Complexity Trap',
386
+ message: c.message,
387
+ confidence: c.confidence,
388
+ actionable: true,
389
+ suggestedAction: c.suggestion,
390
+ createdAt: now,
391
+ project,
392
+ });
393
+ }
394
+ const scope = detectScopeCreep(project);
395
+ for (const s of scope) {
396
+ predictions.push({
397
+ id: `sc_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
398
+ type: 'scope_creep',
399
+ severity: s.overrunRatio > 2 ? 'critical' : 'warning',
400
+ title: `Scope Creep: ${s.feature}`,
401
+ message: s.message,
402
+ confidence: s.confidence,
403
+ actionable: true,
404
+ suggestedAction: `Consider completing the original scope before expanding. ${s.feature} expected ~${s.estimatedFiles} files but touched ${s.filesTouched}.`,
405
+ createdAt: now,
406
+ project,
407
+ });
408
+ }
409
+ const energy = predictEnergyPatterns();
410
+ for (const e of energy) {
411
+ predictions.push({
412
+ id: `en_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
413
+ type: 'energy',
414
+ severity: e.type === 'energy_low' ? 'critical' : 'info',
415
+ title: e.type === 'optimal_time' ? 'Optimal Work Time' : e.type === 'avoid_time' ? 'High-Risk Hours' : e.type === 'break_needed' ? 'Take a Break' : 'Low Energy Detected',
416
+ message: e.message,
417
+ confidence: e.confidence,
418
+ actionable: true,
419
+ suggestedAction: e.type === 'break_needed' ? 'Step away for 15-30 minutes. Your error rate will drop.' : e.type === 'avoid_time' ? 'Schedule complex tasks outside these hours.' : undefined,
420
+ createdAt: now,
421
+ project,
422
+ });
423
+ }
424
+ const stack = analyzeStackCompatibility();
425
+ for (const s of stack) {
426
+ predictions.push({
427
+ id: `sk_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
428
+ type: 'stack',
429
+ severity: s.confidence >= 0.8 ? 'warning' : 'info',
430
+ title: `Stack Warning: ${s.technology}`,
431
+ message: s.message,
432
+ confidence: s.confidence,
433
+ actionable: true,
434
+ suggestedAction: s.alternative ? `Consider using ${s.alternative} instead.` : 'Review your approach with this technology.',
435
+ createdAt: now,
436
+ project,
437
+ });
438
+ }
439
+ return predictions.sort((a, b) => {
440
+ const severityOrder = { critical: 3, warning: 2, info: 1 };
441
+ const sevDiff = (severityOrder[b.severity] || 0) - (severityOrder[a.severity] || 0);
442
+ if (sevDiff !== 0)
443
+ return sevDiff;
444
+ return b.confidence - a.confidence;
445
+ });
446
+ }
447
+ // ─── Risk Score ──────────────────────────────────────────────────────────────
448
+ function calculateFileRisk(file) {
449
+ const db = (0, database_1.getDb)();
450
+ const factors = [];
451
+ let score = 0;
452
+ const bugCount = db.prepare("SELECT COUNT(*) as cnt FROM behavior_events WHERE event_type = 'bug_fix' AND file_path = ?").get(file)?.cnt || 0;
453
+ if (bugCount > 0) {
454
+ const weight = Math.min(40, bugCount * 10);
455
+ score += weight;
456
+ factors.push({ name: 'bug_history', weight, reason: `${bugCount} bugs recorded in this file` });
457
+ }
458
+ const recurrenceCount = db.prepare("SELECT SUM(recurrence_count) as total FROM behavior_events WHERE event_type = 'bug_fix' AND file_path = ?").get(file)?.total || 0;
459
+ if (recurrenceCount > 0) {
460
+ const weight = Math.min(30, recurrenceCount * 15);
461
+ score += weight;
462
+ factors.push({ name: 'repeat_issues', weight, reason: `${recurrenceCount} recurring issues` });
463
+ }
464
+ const sessionCount = db.prepare("SELECT COUNT(DISTINCT id) as cnt FROM sessions WHERE files_touched LIKE ?").get(`%${file}%`)?.cnt || 0;
465
+ if (sessionCount >= 3) {
466
+ const weight = Math.min(20, sessionCount * 3);
467
+ score += weight;
468
+ factors.push({ name: 'high_touch', weight, reason: `Touched in ${sessionCount} sessions` });
469
+ }
470
+ const totalBugs = db.prepare("SELECT COUNT(*) as cnt FROM behavior_events WHERE event_type = 'bug_fix'").get()?.cnt || 1;
471
+ if (bugCount / totalBugs > 0.1) {
472
+ const weight = 15;
473
+ score += weight;
474
+ factors.push({ name: 'concentration', weight, reason: `${Math.round((bugCount / totalBugs) * 100)}% of all bugs are in this file` });
475
+ }
476
+ score = Math.min(100, score);
477
+ return {
478
+ file,
479
+ score,
480
+ factors,
481
+ predictions: getAllPredictions().filter(p => p.message.includes(file)),
482
+ };
483
+ }
484
+ // ─── Time Estimate ───────────────────────────────────────────────────────────
485
+ function estimateFeatureTime(feature) {
486
+ const db = (0, database_1.getDb)();
487
+ const similarSessions = db.prepare("SELECT key_decisions, files_touched, start_time, end_time FROM sessions WHERE key_decisions LIKE ? AND end_time IS NOT NULL").all(`%${feature}%`);
488
+ const pastFeatures = db.prepare("SELECT key_decisions, files_touched, start_time, end_time FROM sessions WHERE end_time IS NOT NULL AND key_decisions != '[]' ORDER BY start_time DESC LIMIT 20").all();
489
+ const durations = [];
490
+ const fileRatios = [];
491
+ const basedOn = [];
492
+ for (const s of similarSessions) {
493
+ const start = new Date(s.start_time).getTime();
494
+ const end = new Date(s.end_time).getTime();
495
+ const hours = (end - start) / (1000 * 60 * 60);
496
+ if (hours > 0 && hours < 24) {
497
+ durations.push(hours);
498
+ try {
499
+ const files = JSON.parse(s.files_touched);
500
+ fileRatios.push(files.length / Math.max(1, hours));
501
+ }
502
+ catch { /* skip */ }
503
+ basedOn.push(`Similar session: ${s.key_decisions.slice(0, 60)}`);
504
+ }
505
+ }
506
+ if (durations.length === 0) {
507
+ for (const s of pastFeatures) {
508
+ const start = new Date(s.start_time).getTime();
509
+ const end = new Date(s.end_time).getTime();
510
+ const hours = (end - start) / (1000 * 60 * 60);
511
+ if (hours > 0 && hours < 24) {
512
+ durations.push(hours);
513
+ try {
514
+ const files = JSON.parse(s.files_touched);
515
+ fileRatios.push(files.length / Math.max(1, hours));
516
+ }
517
+ catch { /* skip */ }
518
+ }
519
+ }
520
+ basedOn.push(`Based on ${durations.length} past sessions (no exact match)`);
521
+ }
522
+ if (durations.length === 0) {
523
+ return {
524
+ feature,
525
+ estimatedHours: 2,
526
+ confidence: 0.2,
527
+ basedOn: ['No historical data available — using default estimate'],
528
+ similarPastFeatures: 0,
529
+ };
530
+ }
531
+ const avgDuration = durations.reduce((a, b) => a + b, 0) / durations.length;
532
+ const sortedDurations = [...durations].sort((a, b) => a - b);
533
+ const median = sortedDurations[Math.floor(sortedDurations.length / 2)];
534
+ const estimated = (avgDuration + median) / 2;
535
+ const confidence = Math.min(0.9, 0.3 + durations.length * 0.1);
536
+ return {
537
+ feature,
538
+ estimatedHours: Math.round(estimated * 10) / 10,
539
+ confidence: Math.round(confidence * 100) / 100,
540
+ basedOn,
541
+ similarPastFeatures: durations.length,
542
+ };
543
+ }
544
+ //# sourceMappingURL=predictive-intelligence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictive-intelligence.js","sourceRoot":"","sources":["../src/predictive-intelligence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ export interface SecurityConfig {
2
+ encryptionEnabled: boolean;
3
+ authToken: string;
4
+ rateLimitPerMinute: number;
5
+ lastTokenRotation: string;
6
+ }
7
+ export interface HealthStatus {
8
+ status: 'healthy' | 'degraded' | 'unhealthy';
9
+ uptime: number;
10
+ dbStatus: string;
11
+ dbSizeBytes: number;
12
+ memoryUsageMB: number;
13
+ lastScan: string;
14
+ version: string;
15
+ platform: string;
16
+ }
17
+ export interface MetricsData {
18
+ queriesPerSecond: number;
19
+ signalsPerSecond: number;
20
+ patternsCount: number;
21
+ sessionsCount: number;
22
+ dbSizeBytes: number;
23
+ dbTableCounts: Record<string, number>;
24
+ memoryUsageMB: number;
25
+ uptimeSeconds: number;
26
+ }
27
+ export interface BackupInfo {
28
+ path: string;
29
+ size: number;
30
+ createdAt: string;
31
+ }
32
+ export interface RateLimitEntry {
33
+ count: number;
34
+ resetAt: number;
35
+ }
36
+ export declare function generateToken(): string;
37
+ export declare function rotateAuthToken(): string;
38
+ export declare function validateAuthToken(token: string): boolean;
39
+ export declare function checkRateLimit(clientId: string): {
40
+ allowed: boolean;
41
+ remaining: number;
42
+ resetIn: number;
43
+ };
44
+ export declare function encryptData(data: string, key?: string): string;
45
+ export declare function decryptData(encryptedData: string, key?: string): string;
46
+ export declare function trackQuery(): void;
47
+ export declare function getQueriesPerSecond(): number;
48
+ export declare function optimizeDatabase(): Record<string, unknown>;
49
+ export declare function getSlowQueries(): Array<{
50
+ query: string;
51
+ avgMs: number;
52
+ }>;
53
+ export declare function autoBackup(): BackupInfo | null;
54
+ export declare function checkDatabaseIntegrity(): {
55
+ healthy: boolean;
56
+ errors: string[];
57
+ };
58
+ export declare function setupGracefulShutdown(): void;
59
+ export declare function recoverFromCrash(): {
60
+ recovered: boolean;
61
+ message: string;
62
+ };
63
+ export declare function setLastScan(time: string): void;
64
+ export declare function getHealthStatus(): HealthStatus;
65
+ export declare function getMetrics(): MetricsData;
66
+ export declare function getPlatformInfo(): Record<string, unknown>;
67
+ //# sourceMappingURL=production.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"production.d.ts","sourceRoot":"","sources":["../src/production.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAiCD,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAMxC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAMxD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAgBzG;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAO9D;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CASvE;AAOD,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc1D;AAED,wBAAgB,cAAc,IAAI,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAOxE;AAID,wBAAgB,UAAU,IAAI,UAAU,GAAG,IAAI,CAgB9C;AAoBD,wBAAgB,sBAAsB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAiB/E;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAmB5C;AAED,wBAAgB,gBAAgB,IAAI;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAuB1E;AAOD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAsB;AAErE,wBAAgB,eAAe,IAAI,YAAY,CAmB9C;AAED,wBAAgB,UAAU,IAAI,WAAW,CAwBxC;AAID,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazD"}