cortex-mcp 2.5.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -279
- package/README.md +224 -393
- package/dist/cli/setup.js +60 -58
- package/dist/cli/setup.js.map +1 -1
- package/dist/config/config.js +2 -2
- package/dist/config/config.js.map +1 -1
- package/dist/db/database.d.ts +0 -8
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/database.js +2 -34
- package/dist/db/database.js.map +1 -1
- package/dist/db/event-log.d.ts +0 -4
- package/dist/db/event-log.d.ts.map +1 -1
- package/dist/db/event-log.js +10 -14
- package/dist/db/event-log.js.map +1 -1
- package/dist/db/memory-store.d.ts +3 -30
- package/dist/db/memory-store.d.ts.map +1 -1
- package/dist/db/memory-store.js +44 -140
- package/dist/db/memory-store.js.map +1 -1
- package/dist/embedding-worker.js +1 -1
- package/dist/embedding-worker.js.map +1 -1
- package/dist/hooks/git-capture.js +3 -3
- package/dist/hooks/git-hooks.js +2 -5
- package/dist/mcp-stdio.js +3 -34
- package/dist/mcp-stdio.js.map +1 -1
- package/dist/memory/anticipation-engine.d.ts.map +1 -1
- package/dist/memory/anticipation-engine.js +10 -18
- package/dist/memory/anticipation-engine.js.map +1 -1
- package/dist/memory/auto-learner.d.ts.map +1 -1
- package/dist/memory/auto-learner.js +43 -190
- package/dist/memory/auto-learner.js.map +1 -1
- package/dist/memory/confidence-decay.d.ts.map +1 -1
- package/dist/memory/confidence-decay.js +9 -13
- package/dist/memory/confidence-decay.js.map +1 -1
- package/dist/memory/embedding-manager.d.ts.map +1 -1
- package/dist/memory/embedding-manager.js +4 -6
- package/dist/memory/embedding-manager.js.map +1 -1
- package/dist/memory/export-import.js +2 -2
- package/dist/memory/export-import.js.map +1 -1
- package/dist/memory/git-memory.d.ts.map +1 -1
- package/dist/memory/git-memory.js +26 -20
- package/dist/memory/git-memory.js.map +1 -1
- package/dist/memory/learning-rate.js +7 -8
- package/dist/memory/learning-rate.js.map +1 -1
- package/dist/memory/llm-enhancer.d.ts +14 -2
- package/dist/memory/llm-enhancer.d.ts.map +1 -1
- package/dist/memory/llm-enhancer.js +46 -66
- package/dist/memory/llm-enhancer.js.map +1 -1
- package/dist/memory/memory-cache.d.ts.map +1 -1
- package/dist/memory/memory-cache.js +0 -10
- package/dist/memory/memory-cache.js.map +1 -1
- package/dist/memory/memory-consolidator.d.ts.map +1 -1
- package/dist/memory/memory-consolidator.js +14 -20
- package/dist/memory/memory-consolidator.js.map +1 -1
- package/dist/memory/memory-decay.d.ts.map +1 -1
- package/dist/memory/memory-decay.js +51 -77
- package/dist/memory/memory-decay.js.map +1 -1
- package/dist/memory/memory-quality.d.ts +1 -1
- package/dist/memory/memory-quality.d.ts.map +1 -1
- package/dist/memory/memory-quality.js +6 -9
- package/dist/memory/memory-quality.js.map +1 -1
- package/dist/memory/memory-ranker.d.ts.map +1 -1
- package/dist/memory/memory-ranker.js +3 -7
- package/dist/memory/memory-ranker.js.map +1 -1
- package/dist/memory/meta-memory.js +3 -3
- package/dist/memory/meta-memory.js.map +1 -1
- package/dist/memory/session-tracker.d.ts +0 -2
- package/dist/memory/session-tracker.d.ts.map +1 -1
- package/dist/memory/session-tracker.js +8 -26
- package/dist/memory/session-tracker.js.map +1 -1
- package/dist/memory/temporal-engine.d.ts.map +1 -1
- package/dist/memory/temporal-engine.js +13 -9
- package/dist/memory/temporal-engine.js.map +1 -1
- package/dist/retrieval/hybrid-retriever.d.ts +2 -0
- package/dist/retrieval/hybrid-retriever.d.ts.map +1 -1
- package/dist/retrieval/hybrid-retriever.js +13 -3
- package/dist/retrieval/hybrid-retriever.js.map +1 -1
- package/dist/scanners/architecture-graph.js +2 -2
- package/dist/scanners/architecture-graph.js.map +1 -1
- package/dist/scanners/code-verifier.d.ts +0 -1
- package/dist/scanners/code-verifier.d.ts.map +1 -1
- package/dist/scanners/code-verifier.js +14 -14
- package/dist/scanners/code-verifier.js.map +1 -1
- package/dist/scanners/context-builder.d.ts.map +1 -1
- package/dist/scanners/context-builder.js +45 -33
- package/dist/scanners/context-builder.js.map +1 -1
- package/dist/scanners/export-map.js +2 -2
- package/dist/scanners/export-map.js.map +1 -1
- package/dist/scanners/project-scanner.js +2 -2
- package/dist/scanners/project-scanner.js.map +1 -1
- package/dist/security/encryption.js +1 -1
- package/dist/security/encryption.js.map +1 -1
- package/dist/security/feature-gate.d.ts.map +1 -1
- package/dist/security/feature-gate.js +20 -62
- package/dist/security/feature-gate.js.map +1 -1
- package/dist/security/license.js +35 -282
- package/dist/security/license.js.map +1 -1
- package/dist/security/rate-limiter.d.ts +3 -4
- package/dist/security/rate-limiter.d.ts.map +1 -1
- package/dist/security/rate-limiter.js +29 -11
- package/dist/security/rate-limiter.js.map +1 -1
- package/dist/server/dashboard.js +327 -166
- package/dist/server/dashboard.js.map +1 -1
- package/dist/server/mcp-handler.d.ts.map +1 -1
- package/dist/server/mcp-handler.js +771 -891
- package/dist/server/mcp-handler.js.map +1 -1
- package/package.json +8 -18
- package/dist/memory/completion-resolver.d.ts +0 -38
- package/dist/memory/completion-resolver.d.ts.map +0 -1
- package/dist/memory/completion-resolver.js +0 -127
- package/dist/memory/completion-resolver.js.map +0 -1
- package/dist/memory/convention-detector.d.ts +0 -11
- package/dist/memory/convention-detector.d.ts.map +0 -1
- package/dist/memory/convention-detector.js +0 -294
- package/dist/memory/convention-detector.js.map +0 -1
- package/dist/memory/correction-detector.d.ts +0 -33
- package/dist/memory/correction-detector.d.ts.map +0 -1
- package/dist/memory/correction-detector.js +0 -129
- package/dist/memory/correction-detector.js.map +0 -1
- package/dist/memory/error-learner.d.ts +0 -26
- package/dist/memory/error-learner.d.ts.map +0 -1
- package/dist/memory/error-learner.js +0 -145
- package/dist/memory/error-learner.js.map +0 -1
- package/dist/memory/file-relationships.d.ts +0 -47
- package/dist/memory/file-relationships.d.ts.map +0 -1
- package/dist/memory/file-relationships.js +0 -130
- package/dist/memory/file-relationships.js.map +0 -1
- package/dist/memory/impact-analyzer.d.ts +0 -16
- package/dist/memory/impact-analyzer.d.ts.map +0 -1
- package/dist/memory/impact-analyzer.js +0 -189
- package/dist/memory/impact-analyzer.js.map +0 -1
- package/dist/memory/instructions-generator.d.ts +0 -30
- package/dist/memory/instructions-generator.d.ts.map +0 -1
- package/dist/memory/instructions-generator.js +0 -117
- package/dist/memory/instructions-generator.js.map +0 -1
- package/dist/memory/pre-flight.d.ts +0 -24
- package/dist/memory/pre-flight.d.ts.map +0 -1
- package/dist/memory/pre-flight.js +0 -121
- package/dist/memory/pre-flight.js.map +0 -1
- package/dist/memory/preference-learner.d.ts +0 -28
- package/dist/memory/preference-learner.d.ts.map +0 -1
- package/dist/memory/preference-learner.js +0 -144
- package/dist/memory/preference-learner.js.map +0 -1
- package/dist/memory/regression-guard.d.ts +0 -35
- package/dist/memory/regression-guard.d.ts.map +0 -1
- package/dist/memory/regression-guard.js +0 -90
- package/dist/memory/regression-guard.js.map +0 -1
- package/dist/memory/resume-work.d.ts +0 -37
- package/dist/memory/resume-work.d.ts.map +0 -1
- package/dist/memory/resume-work.js +0 -141
- package/dist/memory/resume-work.js.map +0 -1
- package/dist/memory/success-tracker.d.ts +0 -33
- package/dist/memory/success-tracker.d.ts.map +0 -1
- package/dist/memory/success-tracker.js +0 -75
- package/dist/memory/success-tracker.js.map +0 -1
- package/dist/memory/tool-recommender.d.ts +0 -29
- package/dist/memory/tool-recommender.d.ts.map +0 -1
- package/dist/memory/tool-recommender.js +0 -117
- package/dist/memory/tool-recommender.js.map +0 -1
- package/dist/memory/usage-stats.d.ts +0 -98
- package/dist/memory/usage-stats.d.ts.map +0 -1
- package/dist/memory/usage-stats.js +0 -345
- package/dist/memory/usage-stats.js.map +0 -1
- package/dist/utils/extract-tags.d.ts +0 -16
- package/dist/utils/extract-tags.d.ts.map +0 -1
- package/dist/utils/extract-tags.js +0 -40
- package/dist/utils/extract-tags.js.map +0 -1
|
@@ -1,345 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Usage Stats — Tracks Cortex usage metrics for impact visibility.
|
|
4
|
-
*
|
|
5
|
-
* THE KEY TO ADDICTION: Users must SEE the value Cortex provides.
|
|
6
|
-
* Every force_recall response now ends with a stats footer showing:
|
|
7
|
-
* - "Cortex Saved You X times"
|
|
8
|
-
* - "Brain Health: 87/100"
|
|
9
|
-
* - Time saved estimate
|
|
10
|
-
* - Memory milestones
|
|
11
|
-
*
|
|
12
|
-
* Stats are PERSISTED in the database so they survive restarts.
|
|
13
|
-
*/
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.trackRecall = trackRecall;
|
|
16
|
-
exports.trackStore = trackStore;
|
|
17
|
-
exports.trackCatch = trackCatch;
|
|
18
|
-
exports.trackSaved = trackSaved;
|
|
19
|
-
exports.trackScan = trackScan;
|
|
20
|
-
exports.trackReview = trackReview;
|
|
21
|
-
exports.trackAutoLearn = trackAutoLearn;
|
|
22
|
-
exports.trackSuccess = trackSuccess;
|
|
23
|
-
exports.trackErrorLearned = trackErrorLearned;
|
|
24
|
-
exports.getStreakDisplay = getStreakDisplay;
|
|
25
|
-
exports.getTipOfTheDay = getTipOfTheDay;
|
|
26
|
-
exports.calculateBrainHealth = calculateBrainHealth;
|
|
27
|
-
exports.estimateTimeSaved = estimateTimeSaved;
|
|
28
|
-
exports.formatStatsFooter = formatStatsFooter;
|
|
29
|
-
exports.getUsageStats = getUsageStats;
|
|
30
|
-
exports.resetSessionStats = resetSessionStats;
|
|
31
|
-
exports.initLifetimeStats = initLifetimeStats;
|
|
32
|
-
exports.getLifetimeStats = getLifetimeStats;
|
|
33
|
-
// ─── Session Stats (in-memory, per session) ──────────────────────────────────
|
|
34
|
-
let sessionStats = {
|
|
35
|
-
recallCount: 0,
|
|
36
|
-
memoriesServed: 0,
|
|
37
|
-
hallucationsCaught: 0,
|
|
38
|
-
memoriesStored: 0,
|
|
39
|
-
projectsScanned: 0,
|
|
40
|
-
codeReviews: 0,
|
|
41
|
-
sessionStart: Date.now(),
|
|
42
|
-
};
|
|
43
|
-
// ─── Lifetime Stats (persisted via special DB memory) ────────────────────────
|
|
44
|
-
const lifetimeStats = {
|
|
45
|
-
totalRecalls: 0,
|
|
46
|
-
totalMemoriesServed: 0,
|
|
47
|
-
totalHallucationsCaught: 0,
|
|
48
|
-
totalMemoriesStored: 0,
|
|
49
|
-
totalSessions: 0,
|
|
50
|
-
savedYouCount: 0,
|
|
51
|
-
totalAutoLearns: 0,
|
|
52
|
-
totalMilestonesHit: 0,
|
|
53
|
-
firstUsed: Date.now(),
|
|
54
|
-
// STREAK TRACKING — "Don't break the chain!"
|
|
55
|
-
currentStreak: 0, // Days in a row Cortex was used
|
|
56
|
-
longestStreak: 0, // Personal best streak
|
|
57
|
-
lastActiveDate: '', // ISO date string 'YYYY-MM-DD'
|
|
58
|
-
totalSuccessPatterns: 0, // Proven approaches tracked
|
|
59
|
-
totalErrorsLearned: 0, // Error patterns captured
|
|
60
|
-
};
|
|
61
|
-
// ─── Track Events ────────────────────────────────────────────────────────────
|
|
62
|
-
/** Record a recall event */
|
|
63
|
-
function trackRecall(memoriesReturned) {
|
|
64
|
-
sessionStats.recallCount++;
|
|
65
|
-
sessionStats.memoriesServed += memoriesReturned;
|
|
66
|
-
lifetimeStats.totalRecalls++;
|
|
67
|
-
lifetimeStats.totalMemoriesServed += memoriesReturned;
|
|
68
|
-
}
|
|
69
|
-
/** Record a memory store event — checks for milestones */
|
|
70
|
-
function trackStore() {
|
|
71
|
-
sessionStats.memoriesStored++;
|
|
72
|
-
lifetimeStats.totalMemoriesStored++;
|
|
73
|
-
return checkMilestone(lifetimeStats.totalMemoriesStored, 'memories stored');
|
|
74
|
-
}
|
|
75
|
-
/** Record a hallucination catch — this is a "saved you" moment */
|
|
76
|
-
function trackCatch() {
|
|
77
|
-
sessionStats.hallucationsCaught++;
|
|
78
|
-
lifetimeStats.totalHallucationsCaught++;
|
|
79
|
-
lifetimeStats.savedYouCount++;
|
|
80
|
-
}
|
|
81
|
-
/** Record a "saved you" moment (correction recalled → mistake prevented) */
|
|
82
|
-
function trackSaved() {
|
|
83
|
-
lifetimeStats.savedYouCount++;
|
|
84
|
-
}
|
|
85
|
-
/** Record a scan */
|
|
86
|
-
function trackScan() {
|
|
87
|
-
sessionStats.projectsScanned++;
|
|
88
|
-
}
|
|
89
|
-
/** Record a code review */
|
|
90
|
-
function trackReview() {
|
|
91
|
-
sessionStats.codeReviews++;
|
|
92
|
-
}
|
|
93
|
-
/** Record an auto_learn */
|
|
94
|
-
function trackAutoLearn() {
|
|
95
|
-
lifetimeStats.totalAutoLearns++;
|
|
96
|
-
updateStreak();
|
|
97
|
-
}
|
|
98
|
-
/** Record a success pattern learned */
|
|
99
|
-
function trackSuccess() {
|
|
100
|
-
lifetimeStats.totalSuccessPatterns++;
|
|
101
|
-
}
|
|
102
|
-
/** Record an error pattern learned */
|
|
103
|
-
function trackErrorLearned() {
|
|
104
|
-
lifetimeStats.totalErrorsLearned++;
|
|
105
|
-
}
|
|
106
|
-
// ─── Daily Streak ────────────────────────────────────────────────────────────
|
|
107
|
-
// Users LOVE streaks. "7 day streak! 🔥" makes them come back.
|
|
108
|
-
function updateStreak() {
|
|
109
|
-
const today = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
|
|
110
|
-
const lastDate = lifetimeStats.lastActiveDate;
|
|
111
|
-
if (lastDate === today)
|
|
112
|
-
return; // Already tracked today
|
|
113
|
-
if (lastDate) {
|
|
114
|
-
const yesterday = new Date(Date.now() - 86400000).toISOString().split('T')[0];
|
|
115
|
-
if (lastDate === yesterday) {
|
|
116
|
-
lifetimeStats.currentStreak++;
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
lifetimeStats.currentStreak = 1; // Streak broken
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
lifetimeStats.currentStreak = 1; // First day
|
|
124
|
-
}
|
|
125
|
-
lifetimeStats.lastActiveDate = today;
|
|
126
|
-
if (lifetimeStats.currentStreak > lifetimeStats.longestStreak) {
|
|
127
|
-
lifetimeStats.longestStreak = lifetimeStats.currentStreak;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
/** Get streak display string */
|
|
131
|
-
function getStreakDisplay() {
|
|
132
|
-
const s = lifetimeStats.currentStreak;
|
|
133
|
-
if (s <= 0)
|
|
134
|
-
return '';
|
|
135
|
-
if (s >= 30)
|
|
136
|
-
return `🔥 ${s}-day streak! LEGENDARY!`;
|
|
137
|
-
if (s >= 14)
|
|
138
|
-
return `🔥 ${s}-day streak! On fire!`;
|
|
139
|
-
if (s >= 7)
|
|
140
|
-
return `🔥 ${s}-day streak!`;
|
|
141
|
-
if (s >= 3)
|
|
142
|
-
return `✨ ${s}-day streak`;
|
|
143
|
-
return `Day ${s}`;
|
|
144
|
-
}
|
|
145
|
-
// ─── Tip of the Day ──────────────────────────────────────────────────────────
|
|
146
|
-
// Surface a random useful memory to remind users of past knowledge
|
|
147
|
-
function getTipOfTheDay(memoryStore) {
|
|
148
|
-
try {
|
|
149
|
-
const memories = memoryStore.getActive(100);
|
|
150
|
-
const useful = memories.filter(m => ['DECISION', 'CONVENTION', 'BUG_FIX', 'INSIGHT'].includes(m.type) &&
|
|
151
|
-
m.intent && m.intent.length > 20);
|
|
152
|
-
if (useful.length === 0)
|
|
153
|
-
return '';
|
|
154
|
-
// Deterministic daily pick (same tip all day)
|
|
155
|
-
const dayIndex = Math.floor(Date.now() / 86400000) % useful.length;
|
|
156
|
-
const tip = useful[dayIndex];
|
|
157
|
-
return `\n> 💡 **Tip of the day:** [${tip.type}] ${tip.intent}`;
|
|
158
|
-
}
|
|
159
|
-
catch {
|
|
160
|
-
return '';
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
// ─── Brain Health Score ──────────────────────────────────────────────────────
|
|
164
|
-
// Composite score 0-100 based on how well Cortex is being used.
|
|
165
|
-
// Higher score = more addictive (users want to keep it high)
|
|
166
|
-
function calculateBrainHealth(memoryStore) {
|
|
167
|
-
const tips = [];
|
|
168
|
-
let score = 0;
|
|
169
|
-
const activeCount = memoryStore.activeCount();
|
|
170
|
-
// 1. Memory count (0-25 pts) — more memories = healthier brain
|
|
171
|
-
if (activeCount >= 100)
|
|
172
|
-
score += 25;
|
|
173
|
-
else if (activeCount >= 50)
|
|
174
|
-
score += 20;
|
|
175
|
-
else if (activeCount >= 20)
|
|
176
|
-
score += 15;
|
|
177
|
-
else if (activeCount >= 5)
|
|
178
|
-
score += 10;
|
|
179
|
-
else {
|
|
180
|
-
score += Math.min(activeCount * 2, 5);
|
|
181
|
-
tips.push('Store more memories to improve brain health');
|
|
182
|
-
}
|
|
183
|
-
// 2. Memory diversity (0-25 pts) — multiple types = better coverage
|
|
184
|
-
const typeCount = getMemoryTypeDiversity(memoryStore);
|
|
185
|
-
score += Math.min(typeCount * 5, 25);
|
|
186
|
-
if (typeCount < 3)
|
|
187
|
-
tips.push('Add different memory types (decisions, corrections, conventions)');
|
|
188
|
-
// 3. Usage frequency (0-25 pts) — regular use = healthier
|
|
189
|
-
if (lifetimeStats.totalSessions >= 20)
|
|
190
|
-
score += 25;
|
|
191
|
-
else if (lifetimeStats.totalSessions >= 10)
|
|
192
|
-
score += 20;
|
|
193
|
-
else if (lifetimeStats.totalSessions >= 5)
|
|
194
|
-
score += 15;
|
|
195
|
-
else if (lifetimeStats.totalSessions >= 2)
|
|
196
|
-
score += 10;
|
|
197
|
-
else {
|
|
198
|
-
score += lifetimeStats.totalSessions * 5;
|
|
199
|
-
tips.push('Use Cortex regularly — memory quality improves with each session');
|
|
200
|
-
}
|
|
201
|
-
// 4. Auto-learn engagement (0-25 pts) — AI is learning from conversations
|
|
202
|
-
if (lifetimeStats.totalAutoLearns >= 50)
|
|
203
|
-
score += 25;
|
|
204
|
-
else if (lifetimeStats.totalAutoLearns >= 20)
|
|
205
|
-
score += 20;
|
|
206
|
-
else if (lifetimeStats.totalAutoLearns >= 10)
|
|
207
|
-
score += 15;
|
|
208
|
-
else if (lifetimeStats.totalAutoLearns >= 3)
|
|
209
|
-
score += 10;
|
|
210
|
-
else {
|
|
211
|
-
score += lifetimeStats.totalAutoLearns * 3;
|
|
212
|
-
tips.push('Make sure auto_learn is called after every response');
|
|
213
|
-
}
|
|
214
|
-
// Grade
|
|
215
|
-
let grade;
|
|
216
|
-
if (score >= 90)
|
|
217
|
-
grade = '🧠 Genius';
|
|
218
|
-
else if (score >= 75)
|
|
219
|
-
grade = '🔥 Sharp';
|
|
220
|
-
else if (score >= 50)
|
|
221
|
-
grade = '💡 Growing';
|
|
222
|
-
else if (score >= 25)
|
|
223
|
-
grade = '🌱 Seedling';
|
|
224
|
-
else
|
|
225
|
-
grade = '🥚 Newborn';
|
|
226
|
-
return { score: Math.min(score, 100), grade, tips };
|
|
227
|
-
}
|
|
228
|
-
function getMemoryTypeDiversity(memoryStore) {
|
|
229
|
-
try {
|
|
230
|
-
const memories = memoryStore.getActive(200);
|
|
231
|
-
const types = new Set(memories.map(m => m.type));
|
|
232
|
-
return types.size;
|
|
233
|
-
}
|
|
234
|
-
catch {
|
|
235
|
-
return 1;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
// ─── Memory Milestones ───────────────────────────────────────────────────────
|
|
239
|
-
// Celebrate: 10, 25, 50, 100, 250, 500, 1000, 2500, 5000
|
|
240
|
-
const MILESTONES = [10, 25, 50, 100, 250, 500, 1000, 2500, 5000];
|
|
241
|
-
function checkMilestone(count, label) {
|
|
242
|
-
if (MILESTONES.includes(count)) {
|
|
243
|
-
lifetimeStats.totalMilestonesHit++;
|
|
244
|
-
return `\n🎉 **Milestone!** ${count} ${label}! Your AI brain is getting stronger.`;
|
|
245
|
-
}
|
|
246
|
-
return '';
|
|
247
|
-
}
|
|
248
|
-
// ─── Time Saved ──────────────────────────────────────────────────────────────
|
|
249
|
-
function estimateTimeSaved() {
|
|
250
|
-
// Each recalled memory ≈ 15s of re-explanation
|
|
251
|
-
// Each hallucination caught ≈ 5min of debugging
|
|
252
|
-
const recallSeconds = lifetimeStats.totalMemoriesServed * 15;
|
|
253
|
-
const catchSeconds = lifetimeStats.totalHallucationsCaught * 300;
|
|
254
|
-
const totalSeconds = recallSeconds + catchSeconds;
|
|
255
|
-
if (totalSeconds < 60)
|
|
256
|
-
return { seconds: totalSeconds, formatted: `${totalSeconds}s` };
|
|
257
|
-
if (totalSeconds < 3600)
|
|
258
|
-
return { seconds: totalSeconds, formatted: `${Math.round(totalSeconds / 60)} min` };
|
|
259
|
-
return { seconds: totalSeconds, formatted: `${(totalSeconds / 3600).toFixed(1)} hours` };
|
|
260
|
-
}
|
|
261
|
-
// ─── Stats Footer (shown in every force_recall) ─────────────────────────────
|
|
262
|
-
function formatStatsFooter(memoryStore) {
|
|
263
|
-
const parts = [];
|
|
264
|
-
const timeSaved = estimateTimeSaved();
|
|
265
|
-
// "Saved You" counter (the most addictive metric)
|
|
266
|
-
if (lifetimeStats.savedYouCount > 0) {
|
|
267
|
-
parts.push(`🛡️ Saved you ${lifetimeStats.savedYouCount} time${lifetimeStats.savedYouCount > 1 ? 's' : ''}`);
|
|
268
|
-
}
|
|
269
|
-
// Brain Health Score
|
|
270
|
-
if (memoryStore) {
|
|
271
|
-
const health = calculateBrainHealth(memoryStore);
|
|
272
|
-
parts.push(`${health.grade} Brain: ${health.score}/100`);
|
|
273
|
-
}
|
|
274
|
-
// Memories + Time saved
|
|
275
|
-
if (lifetimeStats.totalMemoriesServed > 0) {
|
|
276
|
-
parts.push(`${lifetimeStats.totalMemoriesServed} memories served`);
|
|
277
|
-
}
|
|
278
|
-
if (timeSaved.seconds > 0) {
|
|
279
|
-
parts.push(`~${timeSaved.formatted} saved`);
|
|
280
|
-
}
|
|
281
|
-
// Hallucinations caught
|
|
282
|
-
if (lifetimeStats.totalHallucationsCaught > 0) {
|
|
283
|
-
parts.push(`${lifetimeStats.totalHallucationsCaught} hallucination${lifetimeStats.totalHallucationsCaught > 1 ? 's' : ''} caught`);
|
|
284
|
-
}
|
|
285
|
-
if (parts.length === 0) {
|
|
286
|
-
return '\n> 🧠 Cortex is active — memories will build up as you work.';
|
|
287
|
-
}
|
|
288
|
-
// Add streak
|
|
289
|
-
const streak = getStreakDisplay();
|
|
290
|
-
if (streak)
|
|
291
|
-
parts.push(streak);
|
|
292
|
-
let footer = `\n> 🧠 Cortex: ${parts.join(' | ')}`;
|
|
293
|
-
// Add tip of the day
|
|
294
|
-
if (memoryStore) {
|
|
295
|
-
footer += getTipOfTheDay(memoryStore);
|
|
296
|
-
}
|
|
297
|
-
return footer;
|
|
298
|
-
}
|
|
299
|
-
// ─── Full Stats ──────────────────────────────────────────────────────────────
|
|
300
|
-
function getUsageStats() {
|
|
301
|
-
return {
|
|
302
|
-
session: { ...sessionStats },
|
|
303
|
-
lifetime: { ...lifetimeStats },
|
|
304
|
-
timeSaved: estimateTimeSaved(),
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
// ─── Session Management ──────────────────────────────────────────────────────
|
|
308
|
-
function resetSessionStats() {
|
|
309
|
-
lifetimeStats.totalSessions++;
|
|
310
|
-
sessionStats = {
|
|
311
|
-
recallCount: 0,
|
|
312
|
-
memoriesServed: 0,
|
|
313
|
-
hallucationsCaught: 0,
|
|
314
|
-
memoriesStored: 0,
|
|
315
|
-
projectsScanned: 0,
|
|
316
|
-
codeReviews: 0,
|
|
317
|
-
sessionStart: Date.now(),
|
|
318
|
-
};
|
|
319
|
-
}
|
|
320
|
-
/** Initialize lifetime stats from stored data */
|
|
321
|
-
function initLifetimeStats(stored) {
|
|
322
|
-
if (stored.totalRecalls)
|
|
323
|
-
lifetimeStats.totalRecalls = stored.totalRecalls;
|
|
324
|
-
if (stored.totalMemoriesServed)
|
|
325
|
-
lifetimeStats.totalMemoriesServed = stored.totalMemoriesServed;
|
|
326
|
-
if (stored.totalHallucationsCaught)
|
|
327
|
-
lifetimeStats.totalHallucationsCaught = stored.totalHallucationsCaught;
|
|
328
|
-
if (stored.totalMemoriesStored)
|
|
329
|
-
lifetimeStats.totalMemoriesStored = stored.totalMemoriesStored;
|
|
330
|
-
if (stored.totalSessions)
|
|
331
|
-
lifetimeStats.totalSessions = stored.totalSessions;
|
|
332
|
-
if (stored.savedYouCount)
|
|
333
|
-
lifetimeStats.savedYouCount = stored.savedYouCount;
|
|
334
|
-
if (stored.totalAutoLearns)
|
|
335
|
-
lifetimeStats.totalAutoLearns = stored.totalAutoLearns;
|
|
336
|
-
if (stored.totalMilestonesHit)
|
|
337
|
-
lifetimeStats.totalMilestonesHit = stored.totalMilestonesHit;
|
|
338
|
-
if (stored.firstUsed)
|
|
339
|
-
lifetimeStats.firstUsed = stored.firstUsed;
|
|
340
|
-
}
|
|
341
|
-
/** Get raw lifetime stats for persistence */
|
|
342
|
-
function getLifetimeStats() {
|
|
343
|
-
return { ...lifetimeStats };
|
|
344
|
-
}
|
|
345
|
-
//# sourceMappingURL=usage-stats.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-stats.js","sourceRoot":"","sources":["../../src/memory/usage-stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared Tag Extraction — Single source of truth for topic-based tag extraction.
|
|
3
|
-
*
|
|
4
|
-
* Used by llm-enhancer, git-memory, and any future module that needs to
|
|
5
|
-
* extract semantic tags from text.
|
|
6
|
-
*
|
|
7
|
-
* Consolidates the duplicate patterns that previously existed in:
|
|
8
|
-
* - llm-enhancer.ts (extractKeywordTags)
|
|
9
|
-
* - git-memory.ts (extractTopicTags)
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* Extract semantic topic tags from text.
|
|
13
|
-
* Returns an array of tag strings like ['auth', 'database', 'api'].
|
|
14
|
-
*/
|
|
15
|
-
export declare function extractTags(text: string): string[];
|
|
16
|
-
//# sourceMappingURL=extract-tags.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extract-tags.d.ts","sourceRoot":"","sources":["../../src/utils/extract-tags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgBH;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAOlD"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Shared Tag Extraction — Single source of truth for topic-based tag extraction.
|
|
4
|
-
*
|
|
5
|
-
* Used by llm-enhancer, git-memory, and any future module that needs to
|
|
6
|
-
* extract semantic tags from text.
|
|
7
|
-
*
|
|
8
|
-
* Consolidates the duplicate patterns that previously existed in:
|
|
9
|
-
* - llm-enhancer.ts (extractKeywordTags)
|
|
10
|
-
* - git-memory.ts (extractTopicTags)
|
|
11
|
-
*/
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.extractTags = extractTags;
|
|
14
|
-
/** All topic patterns — superset of both previous implementations */
|
|
15
|
-
const TAG_PATTERNS = [
|
|
16
|
-
[/\b(auth|login|session|token|jwt|oauth)\b/, 'auth'],
|
|
17
|
-
[/\b(database|sql|query|migration|schema)\b/, 'database'],
|
|
18
|
-
[/\b(api|endpoint|route|rest|graphql)\b/, 'api'],
|
|
19
|
-
[/\b(ui|component|render|style|css|html)\b/, 'ui'],
|
|
20
|
-
[/\b(test|spec|mock|assert|coverage)\b/, 'testing'],
|
|
21
|
-
[/\b(deploy|ci|cd|pipeline|docker|k8s)\b/, 'devops'],
|
|
22
|
-
[/\b(security|encrypt|permission|vulnerability)\b/, 'security'],
|
|
23
|
-
[/\b(perf|optimize|cache|speed|memory)\b/, 'performance'],
|
|
24
|
-
[/\b(config|env|setting|option)\b/, 'config'],
|
|
25
|
-
[/\b(error|exception|crash|debug|log)\b/, 'error-handling'],
|
|
26
|
-
];
|
|
27
|
-
/**
|
|
28
|
-
* Extract semantic topic tags from text.
|
|
29
|
-
* Returns an array of tag strings like ['auth', 'database', 'api'].
|
|
30
|
-
*/
|
|
31
|
-
function extractTags(text) {
|
|
32
|
-
const tags = [];
|
|
33
|
-
const lower = text.toLowerCase();
|
|
34
|
-
for (const [pattern, tag] of TAG_PATTERNS) {
|
|
35
|
-
if (pattern.test(lower))
|
|
36
|
-
tags.push(tag);
|
|
37
|
-
}
|
|
38
|
-
return tags;
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=extract-tags.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extract-tags.js","sourceRoot":"","sources":["../../src/utils/extract-tags.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAoBH,kCAOC;AAzBD,qEAAqE;AACrE,MAAM,YAAY,GAA6C;IAC3D,CAAC,0CAA0C,EAAE,MAAM,CAAC;IACpD,CAAC,2CAA2C,EAAE,UAAU,CAAC;IACzD,CAAC,uCAAuC,EAAE,KAAK,CAAC;IAChD,CAAC,0CAA0C,EAAE,IAAI,CAAC;IAClD,CAAC,sCAAsC,EAAE,SAAS,CAAC;IACnD,CAAC,wCAAwC,EAAE,QAAQ,CAAC;IACpD,CAAC,iDAAiD,EAAE,UAAU,CAAC;IAC/D,CAAC,wCAAwC,EAAE,aAAa,CAAC;IACzD,CAAC,iCAAiC,EAAE,QAAQ,CAAC;IAC7C,CAAC,uCAAuC,EAAE,gBAAgB,CAAC;CAC9D,CAAC;AAEF;;;GAGG;AACH,SAAgB,WAAW,CAAC,IAAY;IACpC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,YAAY,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
|