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.
Files changed (166) hide show
  1. package/CHANGELOG.md +58 -279
  2. package/README.md +224 -393
  3. package/dist/cli/setup.js +60 -58
  4. package/dist/cli/setup.js.map +1 -1
  5. package/dist/config/config.js +2 -2
  6. package/dist/config/config.js.map +1 -1
  7. package/dist/db/database.d.ts +0 -8
  8. package/dist/db/database.d.ts.map +1 -1
  9. package/dist/db/database.js +2 -34
  10. package/dist/db/database.js.map +1 -1
  11. package/dist/db/event-log.d.ts +0 -4
  12. package/dist/db/event-log.d.ts.map +1 -1
  13. package/dist/db/event-log.js +10 -14
  14. package/dist/db/event-log.js.map +1 -1
  15. package/dist/db/memory-store.d.ts +3 -30
  16. package/dist/db/memory-store.d.ts.map +1 -1
  17. package/dist/db/memory-store.js +44 -140
  18. package/dist/db/memory-store.js.map +1 -1
  19. package/dist/embedding-worker.js +1 -1
  20. package/dist/embedding-worker.js.map +1 -1
  21. package/dist/hooks/git-capture.js +3 -3
  22. package/dist/hooks/git-hooks.js +2 -5
  23. package/dist/mcp-stdio.js +3 -34
  24. package/dist/mcp-stdio.js.map +1 -1
  25. package/dist/memory/anticipation-engine.d.ts.map +1 -1
  26. package/dist/memory/anticipation-engine.js +10 -18
  27. package/dist/memory/anticipation-engine.js.map +1 -1
  28. package/dist/memory/auto-learner.d.ts.map +1 -1
  29. package/dist/memory/auto-learner.js +43 -190
  30. package/dist/memory/auto-learner.js.map +1 -1
  31. package/dist/memory/confidence-decay.d.ts.map +1 -1
  32. package/dist/memory/confidence-decay.js +9 -13
  33. package/dist/memory/confidence-decay.js.map +1 -1
  34. package/dist/memory/embedding-manager.d.ts.map +1 -1
  35. package/dist/memory/embedding-manager.js +4 -6
  36. package/dist/memory/embedding-manager.js.map +1 -1
  37. package/dist/memory/export-import.js +2 -2
  38. package/dist/memory/export-import.js.map +1 -1
  39. package/dist/memory/git-memory.d.ts.map +1 -1
  40. package/dist/memory/git-memory.js +26 -20
  41. package/dist/memory/git-memory.js.map +1 -1
  42. package/dist/memory/learning-rate.js +7 -8
  43. package/dist/memory/learning-rate.js.map +1 -1
  44. package/dist/memory/llm-enhancer.d.ts +14 -2
  45. package/dist/memory/llm-enhancer.d.ts.map +1 -1
  46. package/dist/memory/llm-enhancer.js +46 -66
  47. package/dist/memory/llm-enhancer.js.map +1 -1
  48. package/dist/memory/memory-cache.d.ts.map +1 -1
  49. package/dist/memory/memory-cache.js +0 -10
  50. package/dist/memory/memory-cache.js.map +1 -1
  51. package/dist/memory/memory-consolidator.d.ts.map +1 -1
  52. package/dist/memory/memory-consolidator.js +14 -20
  53. package/dist/memory/memory-consolidator.js.map +1 -1
  54. package/dist/memory/memory-decay.d.ts.map +1 -1
  55. package/dist/memory/memory-decay.js +51 -77
  56. package/dist/memory/memory-decay.js.map +1 -1
  57. package/dist/memory/memory-quality.d.ts +1 -1
  58. package/dist/memory/memory-quality.d.ts.map +1 -1
  59. package/dist/memory/memory-quality.js +6 -9
  60. package/dist/memory/memory-quality.js.map +1 -1
  61. package/dist/memory/memory-ranker.d.ts.map +1 -1
  62. package/dist/memory/memory-ranker.js +3 -7
  63. package/dist/memory/memory-ranker.js.map +1 -1
  64. package/dist/memory/meta-memory.js +3 -3
  65. package/dist/memory/meta-memory.js.map +1 -1
  66. package/dist/memory/session-tracker.d.ts +0 -2
  67. package/dist/memory/session-tracker.d.ts.map +1 -1
  68. package/dist/memory/session-tracker.js +8 -26
  69. package/dist/memory/session-tracker.js.map +1 -1
  70. package/dist/memory/temporal-engine.d.ts.map +1 -1
  71. package/dist/memory/temporal-engine.js +13 -9
  72. package/dist/memory/temporal-engine.js.map +1 -1
  73. package/dist/retrieval/hybrid-retriever.d.ts +2 -0
  74. package/dist/retrieval/hybrid-retriever.d.ts.map +1 -1
  75. package/dist/retrieval/hybrid-retriever.js +13 -3
  76. package/dist/retrieval/hybrid-retriever.js.map +1 -1
  77. package/dist/scanners/architecture-graph.js +2 -2
  78. package/dist/scanners/architecture-graph.js.map +1 -1
  79. package/dist/scanners/code-verifier.d.ts +0 -1
  80. package/dist/scanners/code-verifier.d.ts.map +1 -1
  81. package/dist/scanners/code-verifier.js +14 -14
  82. package/dist/scanners/code-verifier.js.map +1 -1
  83. package/dist/scanners/context-builder.d.ts.map +1 -1
  84. package/dist/scanners/context-builder.js +45 -33
  85. package/dist/scanners/context-builder.js.map +1 -1
  86. package/dist/scanners/export-map.js +2 -2
  87. package/dist/scanners/export-map.js.map +1 -1
  88. package/dist/scanners/project-scanner.js +2 -2
  89. package/dist/scanners/project-scanner.js.map +1 -1
  90. package/dist/security/encryption.js +1 -1
  91. package/dist/security/encryption.js.map +1 -1
  92. package/dist/security/feature-gate.d.ts.map +1 -1
  93. package/dist/security/feature-gate.js +20 -62
  94. package/dist/security/feature-gate.js.map +1 -1
  95. package/dist/security/license.js +35 -282
  96. package/dist/security/license.js.map +1 -1
  97. package/dist/security/rate-limiter.d.ts +3 -4
  98. package/dist/security/rate-limiter.d.ts.map +1 -1
  99. package/dist/security/rate-limiter.js +29 -11
  100. package/dist/security/rate-limiter.js.map +1 -1
  101. package/dist/server/dashboard.js +327 -166
  102. package/dist/server/dashboard.js.map +1 -1
  103. package/dist/server/mcp-handler.d.ts.map +1 -1
  104. package/dist/server/mcp-handler.js +771 -891
  105. package/dist/server/mcp-handler.js.map +1 -1
  106. package/package.json +8 -18
  107. package/dist/memory/completion-resolver.d.ts +0 -38
  108. package/dist/memory/completion-resolver.d.ts.map +0 -1
  109. package/dist/memory/completion-resolver.js +0 -127
  110. package/dist/memory/completion-resolver.js.map +0 -1
  111. package/dist/memory/convention-detector.d.ts +0 -11
  112. package/dist/memory/convention-detector.d.ts.map +0 -1
  113. package/dist/memory/convention-detector.js +0 -294
  114. package/dist/memory/convention-detector.js.map +0 -1
  115. package/dist/memory/correction-detector.d.ts +0 -33
  116. package/dist/memory/correction-detector.d.ts.map +0 -1
  117. package/dist/memory/correction-detector.js +0 -129
  118. package/dist/memory/correction-detector.js.map +0 -1
  119. package/dist/memory/error-learner.d.ts +0 -26
  120. package/dist/memory/error-learner.d.ts.map +0 -1
  121. package/dist/memory/error-learner.js +0 -145
  122. package/dist/memory/error-learner.js.map +0 -1
  123. package/dist/memory/file-relationships.d.ts +0 -47
  124. package/dist/memory/file-relationships.d.ts.map +0 -1
  125. package/dist/memory/file-relationships.js +0 -130
  126. package/dist/memory/file-relationships.js.map +0 -1
  127. package/dist/memory/impact-analyzer.d.ts +0 -16
  128. package/dist/memory/impact-analyzer.d.ts.map +0 -1
  129. package/dist/memory/impact-analyzer.js +0 -189
  130. package/dist/memory/impact-analyzer.js.map +0 -1
  131. package/dist/memory/instructions-generator.d.ts +0 -30
  132. package/dist/memory/instructions-generator.d.ts.map +0 -1
  133. package/dist/memory/instructions-generator.js +0 -117
  134. package/dist/memory/instructions-generator.js.map +0 -1
  135. package/dist/memory/pre-flight.d.ts +0 -24
  136. package/dist/memory/pre-flight.d.ts.map +0 -1
  137. package/dist/memory/pre-flight.js +0 -121
  138. package/dist/memory/pre-flight.js.map +0 -1
  139. package/dist/memory/preference-learner.d.ts +0 -28
  140. package/dist/memory/preference-learner.d.ts.map +0 -1
  141. package/dist/memory/preference-learner.js +0 -144
  142. package/dist/memory/preference-learner.js.map +0 -1
  143. package/dist/memory/regression-guard.d.ts +0 -35
  144. package/dist/memory/regression-guard.d.ts.map +0 -1
  145. package/dist/memory/regression-guard.js +0 -90
  146. package/dist/memory/regression-guard.js.map +0 -1
  147. package/dist/memory/resume-work.d.ts +0 -37
  148. package/dist/memory/resume-work.d.ts.map +0 -1
  149. package/dist/memory/resume-work.js +0 -141
  150. package/dist/memory/resume-work.js.map +0 -1
  151. package/dist/memory/success-tracker.d.ts +0 -33
  152. package/dist/memory/success-tracker.d.ts.map +0 -1
  153. package/dist/memory/success-tracker.js +0 -75
  154. package/dist/memory/success-tracker.js.map +0 -1
  155. package/dist/memory/tool-recommender.d.ts +0 -29
  156. package/dist/memory/tool-recommender.d.ts.map +0 -1
  157. package/dist/memory/tool-recommender.js +0 -117
  158. package/dist/memory/tool-recommender.js.map +0 -1
  159. package/dist/memory/usage-stats.d.ts +0 -98
  160. package/dist/memory/usage-stats.d.ts.map +0 -1
  161. package/dist/memory/usage-stats.js +0 -345
  162. package/dist/memory/usage-stats.js.map +0 -1
  163. package/dist/utils/extract-tags.d.ts +0 -16
  164. package/dist/utils/extract-tags.d.ts.map +0 -1
  165. package/dist/utils/extract-tags.js +0 -40
  166. package/dist/utils/extract-tags.js.map +0 -1
@@ -1,33 +0,0 @@
1
- /**
2
- * Success Tracker — Reinforces approaches that work.
3
- *
4
- * When the user says "that worked", "perfect", "great job", "exactly what I wanted",
5
- * this module captures what approach was used and stores it as a proven pattern.
6
- *
7
- * The AI currently only learns from MISTAKES (corrections, bug fixes).
8
- * But learning from SUCCESS is equally important — repeat what works.
9
- *
10
- * Detects:
11
- * - Explicit praise: "perfect", "that's exactly right", "great"
12
- * - Implicit success: "it works now", "the tests pass", "build succeeded"
13
- * - Task completion: "done", "all good", "ship it"
14
- */
15
- export interface SuccessSignal {
16
- type: 'explicit_praise' | 'implicit_success' | 'task_completion';
17
- trigger: string;
18
- confidence: number;
19
- }
20
- /**
21
- * Detect success signals from user text.
22
- */
23
- export declare function detectSuccess(text: string): SuccessSignal[];
24
- /**
25
- * Build a success memory from the signal and the AI's recent response context.
26
- * The context should describe what approach was used.
27
- */
28
- export declare function buildSuccessMemory(signal: SuccessSignal, aiContext: string): {
29
- intent: string;
30
- reason: string;
31
- tags: string[];
32
- };
33
- //# sourceMappingURL=success-tracker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"success-tracker.d.ts","sourceRoot":"","sources":["../../src/memory/success-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAyBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAiB3D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB,CAcA"}
@@ -1,75 +0,0 @@
1
- "use strict";
2
- /**
3
- * Success Tracker — Reinforces approaches that work.
4
- *
5
- * When the user says "that worked", "perfect", "great job", "exactly what I wanted",
6
- * this module captures what approach was used and stores it as a proven pattern.
7
- *
8
- * The AI currently only learns from MISTAKES (corrections, bug fixes).
9
- * But learning from SUCCESS is equally important — repeat what works.
10
- *
11
- * Detects:
12
- * - Explicit praise: "perfect", "that's exactly right", "great"
13
- * - Implicit success: "it works now", "the tests pass", "build succeeded"
14
- * - Task completion: "done", "all good", "ship it"
15
- */
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.detectSuccess = detectSuccess;
18
- exports.buildSuccessMemory = buildSuccessMemory;
19
- // ─── Detection Patterns ──────────────────────────────────────────────────────
20
- const PRAISE_PATTERNS = [
21
- // Explicit praise (highest confidence)
22
- { regex: /\b(?:perfect|exactly\s+(?:right|what\s+i\s+(?:wanted|needed)))\b/i, type: 'explicit_praise', confidence: 0.95 },
23
- { regex: /\b(?:great\s+(?:job|work)|well\s+done|nice\s+work|awesome|excellent)\b/i, type: 'explicit_praise', confidence: 0.90 },
24
- { regex: /\bthat'?s?\s+(?:exactly|precisely|perfectly)\s+(?:right|correct|it)\b/i, type: 'explicit_praise', confidence: 0.90 },
25
- { regex: /\bthank(?:s| you)\s+(?:that|this|it)\s+(?:works?|helped|fixed)\b/i, type: 'explicit_praise', confidence: 0.85 },
26
- { regex: /\byou\s+(?:nailed|got)\s+it\b/i, type: 'explicit_praise', confidence: 0.90 },
27
- // Implicit success (medium confidence)
28
- { regex: /\b(?:it|that)\s+works?\s+(?:now|perfectly|great|fine)\b/i, type: 'implicit_success', confidence: 0.85 },
29
- { regex: /\btests?\s+(?:pass|passed|passing|all\s+pass)\b/i, type: 'implicit_success', confidence: 0.90 },
30
- { regex: /\bbuild\s+(?:succeeded|passed|success|works)\b/i, type: 'implicit_success', confidence: 0.90 },
31
- { regex: /\b(?:no\s+(?:more\s+)?errors?|error\s+(?:is\s+)?(?:gone|fixed|resolved))\b/i, type: 'implicit_success', confidence: 0.85 },
32
- { regex: /\b(?:the\s+)?(?:bug|issue|problem)\s+(?:is\s+)?(?:fixed|resolved|gone)\b/i, type: 'implicit_success', confidence: 0.85 },
33
- // Task completion (lower confidence — context-dependent)
34
- { regex: /\b(?:all\s+(?:good|done|set)|we'?re?\s+(?:good|done|set))\b/i, type: 'task_completion', confidence: 0.75 },
35
- { regex: /\b(?:ship\s+it|let'?s?\s+(?:merge|deploy|push))\b/i, type: 'task_completion', confidence: 0.80 },
36
- { regex: /\b(?:looks?\s+(?:good|great|perfect)|lgtm)\b/i, type: 'task_completion', confidence: 0.80 },
37
- ];
38
- /**
39
- * Detect success signals from user text.
40
- */
41
- function detectSuccess(text) {
42
- const signals = [];
43
- const seen = new Set();
44
- for (const pattern of PRAISE_PATTERNS) {
45
- const match = text.match(pattern.regex);
46
- if (match && !seen.has(pattern.type)) {
47
- signals.push({
48
- type: pattern.type,
49
- trigger: match[0],
50
- confidence: pattern.confidence,
51
- });
52
- seen.add(`${pattern.type}:${match[0].toLowerCase()}`);
53
- }
54
- }
55
- return signals;
56
- }
57
- /**
58
- * Build a success memory from the signal and the AI's recent response context.
59
- * The context should describe what approach was used.
60
- */
61
- function buildSuccessMemory(signal, aiContext) {
62
- // Extract the approach from AI context (first meaningful sentence)
63
- const approach = aiContext
64
- .split(/[.\n]/)
65
- .map(s => s.trim())
66
- .filter(s => s.length > 20 && s.length < 200)
67
- .slice(0, 2)
68
- .join('. ') || aiContext.slice(0, 200);
69
- return {
70
- intent: `[PROVEN] ${approach}`,
71
- reason: `User confirmed success: "${signal.trigger}" (${signal.type}, confidence: ${signal.confidence})`,
72
- tags: ['success', 'proven-pattern', signal.type],
73
- };
74
- }
75
- //# sourceMappingURL=success-tracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"success-tracker.js","sourceRoot":"","sources":["../../src/memory/success-tracker.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Tool Recommender — Suggests which Cortex tools to use based on context.
3
- *
4
- * THE GAP THIS FILLS:
5
- * The AI has 20 tools but often doesn't know WHEN to use which.
6
- * This module analyzes the current situation and recommends the right tools.
7
- *
8
- * Like a flight checklist: "Before takeoff: check instruments, fuel, clearance."
9
- * Here: "Before editing auth.ts: run pre_check, check_impact, verify_code."
10
- */
11
- export interface ToolRecommendation {
12
- tool: string;
13
- reason: string;
14
- priority: 'must' | 'should' | 'could';
15
- }
16
- /**
17
- * Recommend tools based on what the user is doing.
18
- */
19
- export declare function recommendTools(context: {
20
- topic?: string;
21
- currentFile?: string;
22
- isNewConversation?: boolean;
23
- recentAction?: string;
24
- }): ToolRecommendation[];
25
- /**
26
- * Format tool recommendations for injection.
27
- */
28
- export declare function formatRecommendations(recs: ToolRecommendation[]): string;
29
- //# sourceMappingURL=tool-recommender.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-recommender.d.ts","sourceRoot":"","sources":["../../src/memory/tool-recommender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACzC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,kBAAkB,EAAE,CAgGvB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,MAAM,CASxE"}
@@ -1,117 +0,0 @@
1
- "use strict";
2
- /**
3
- * Tool Recommender — Suggests which Cortex tools to use based on context.
4
- *
5
- * THE GAP THIS FILLS:
6
- * The AI has 20 tools but often doesn't know WHEN to use which.
7
- * This module analyzes the current situation and recommends the right tools.
8
- *
9
- * Like a flight checklist: "Before takeoff: check instruments, fuel, clearance."
10
- * Here: "Before editing auth.ts: run pre_check, check_impact, verify_code."
11
- */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.recommendTools = recommendTools;
14
- exports.formatRecommendations = formatRecommendations;
15
- /**
16
- * Recommend tools based on what the user is doing.
17
- */
18
- function recommendTools(context) {
19
- const recommendations = [];
20
- // ─── New conversation? Always force_recall first ────────────────
21
- if (context.isNewConversation) {
22
- recommendations.push({
23
- tool: 'force_recall',
24
- reason: 'Start of conversation — load all context (corrections, decisions, conventions)',
25
- priority: 'must',
26
- });
27
- }
28
- // ─── About to edit a file? Pre-check it ────────────────────────
29
- if (context.currentFile) {
30
- recommendations.push({
31
- tool: 'pre_check',
32
- reason: `Check conventions, gotchas, and past bugs for ${context.currentFile}`,
33
- priority: 'should',
34
- });
35
- recommendations.push({
36
- tool: 'check_impact',
37
- reason: `See what depends on ${context.currentFile} before changing it`,
38
- priority: 'should',
39
- });
40
- }
41
- // ─── Topic suggests specific tools ─────────────────────────────
42
- if (context.topic) {
43
- const lower = context.topic.toLowerCase();
44
- if (lower.includes('debug') || lower.includes('error') || lower.includes('bug') || lower.includes('fix')) {
45
- recommendations.push({
46
- tool: 'recall_memory',
47
- reason: 'Search for similar past bugs and failed attempts',
48
- priority: 'must',
49
- });
50
- }
51
- if (lower.includes('review') || lower.includes('check')) {
52
- recommendations.push({
53
- tool: 'review_code',
54
- reason: 'Review against stored conventions and past bug patterns',
55
- priority: 'should',
56
- });
57
- }
58
- if (lower.includes('new') || lower.includes('create') || lower.includes('build') || lower.includes('add')) {
59
- recommendations.push({
60
- tool: 'scan_project',
61
- reason: 'Ensure project context is loaded before building new features',
62
- priority: 'could',
63
- });
64
- }
65
- if (lower.includes('import') || lower.includes('package') || lower.includes('dependency')) {
66
- recommendations.push({
67
- tool: 'verify_code',
68
- reason: 'Check if imports are valid and packages exist',
69
- priority: 'must',
70
- });
71
- }
72
- if (lower.includes('where') || lower.includes('left off') || lower.includes('continue') || lower.includes('resume')) {
73
- recommendations.push({
74
- tool: 'resume_work',
75
- reason: 'Recover context from previous session',
76
- priority: 'must',
77
- });
78
- }
79
- }
80
- // ─── After making changes ──────────────────────────────────────
81
- if (context.recentAction === 'code_written') {
82
- recommendations.push({
83
- tool: 'auto_learn',
84
- reason: 'Store decisions and patterns from this response',
85
- priority: 'must',
86
- });
87
- recommendations.push({
88
- tool: 'verify_code',
89
- reason: 'Verify imports and exports in the code you just wrote',
90
- priority: 'should',
91
- });
92
- }
93
- // Deduplicate by tool name, keeping highest priority
94
- const seen = new Map();
95
- const priorityOrder = { must: 0, should: 1, could: 2 };
96
- for (const rec of recommendations) {
97
- const existing = seen.get(rec.tool);
98
- if (!existing || priorityOrder[rec.priority] < priorityOrder[existing.priority]) {
99
- seen.set(rec.tool, rec);
100
- }
101
- }
102
- return [...seen.values()].sort((a, b) => priorityOrder[a.priority] - priorityOrder[b.priority]);
103
- }
104
- /**
105
- * Format tool recommendations for injection.
106
- */
107
- function formatRecommendations(recs) {
108
- if (recs.length === 0)
109
- return '';
110
- const lines = ['## 🛠️ Recommended Tools'];
111
- for (const rec of recs) {
112
- const badge = rec.priority === 'must' ? '🔴' : rec.priority === 'should' ? '🟡' : '🟢';
113
- lines.push(`- ${badge} **${rec.tool}** — ${rec.reason}`);
114
- }
115
- return lines.join('\n');
116
- }
117
- //# sourceMappingURL=tool-recommender.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-recommender.js","sourceRoot":"","sources":["../../src/memory/tool-recommender.ts"],"names":[],"mappings":"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"}
@@ -1,98 +0,0 @@
1
- /**
2
- * Usage Stats — Tracks Cortex usage metrics for impact visibility.
3
- *
4
- * THE KEY TO ADDICTION: Users must SEE the value Cortex provides.
5
- * Every force_recall response now ends with a stats footer showing:
6
- * - "Cortex Saved You X times"
7
- * - "Brain Health: 87/100"
8
- * - Time saved estimate
9
- * - Memory milestones
10
- *
11
- * Stats are PERSISTED in the database so they survive restarts.
12
- */
13
- import { MemoryStore } from '../db/memory-store';
14
- declare const lifetimeStats: {
15
- totalRecalls: number;
16
- totalMemoriesServed: number;
17
- totalHallucationsCaught: number;
18
- totalMemoriesStored: number;
19
- totalSessions: number;
20
- savedYouCount: number;
21
- totalAutoLearns: number;
22
- totalMilestonesHit: number;
23
- firstUsed: number;
24
- currentStreak: number;
25
- longestStreak: number;
26
- lastActiveDate: string;
27
- totalSuccessPatterns: number;
28
- totalErrorsLearned: number;
29
- };
30
- /** Record a recall event */
31
- export declare function trackRecall(memoriesReturned: number): void;
32
- /** Record a memory store event — checks for milestones */
33
- export declare function trackStore(): string;
34
- /** Record a hallucination catch — this is a "saved you" moment */
35
- export declare function trackCatch(): void;
36
- /** Record a "saved you" moment (correction recalled → mistake prevented) */
37
- export declare function trackSaved(): void;
38
- /** Record a scan */
39
- export declare function trackScan(): void;
40
- /** Record a code review */
41
- export declare function trackReview(): void;
42
- /** Record an auto_learn */
43
- export declare function trackAutoLearn(): void;
44
- /** Record a success pattern learned */
45
- export declare function trackSuccess(): void;
46
- /** Record an error pattern learned */
47
- export declare function trackErrorLearned(): void;
48
- /** Get streak display string */
49
- export declare function getStreakDisplay(): string;
50
- export declare function getTipOfTheDay(memoryStore: MemoryStore): string;
51
- export declare function calculateBrainHealth(memoryStore: MemoryStore): {
52
- score: number;
53
- grade: string;
54
- tips: string[];
55
- };
56
- export declare function estimateTimeSaved(): {
57
- seconds: number;
58
- formatted: string;
59
- };
60
- export declare function formatStatsFooter(memoryStore?: MemoryStore): string;
61
- export declare function getUsageStats(): {
62
- session: {
63
- recallCount: number;
64
- memoriesServed: number;
65
- hallucationsCaught: number;
66
- memoriesStored: number;
67
- projectsScanned: number;
68
- codeReviews: number;
69
- sessionStart: number;
70
- };
71
- lifetime: {
72
- totalRecalls: number;
73
- totalMemoriesServed: number;
74
- totalHallucationsCaught: number;
75
- totalMemoriesStored: number;
76
- totalSessions: number;
77
- savedYouCount: number;
78
- totalAutoLearns: number;
79
- totalMilestonesHit: number;
80
- firstUsed: number;
81
- currentStreak: number;
82
- longestStreak: number;
83
- lastActiveDate: string;
84
- totalSuccessPatterns: number;
85
- totalErrorsLearned: number;
86
- };
87
- timeSaved: {
88
- seconds: number;
89
- formatted: string;
90
- };
91
- };
92
- export declare function resetSessionStats(): void;
93
- /** Initialize lifetime stats from stored data */
94
- export declare function initLifetimeStats(stored: Partial<typeof lifetimeStats>): void;
95
- /** Get raw lifetime stats for persistence */
96
- export declare function getLifetimeStats(): typeof lifetimeStats;
97
- export {};
98
- //# sourceMappingURL=usage-stats.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-stats.d.ts","sourceRoot":"","sources":["../../src/memory/usage-stats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAgBjD,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;CAgBlB,CAAC;AAIF,4BAA4B;AAC5B,wBAAgB,WAAW,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAK1D;AAED,0DAA0D;AAC1D,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED,kEAAkE;AAClE,wBAAgB,UAAU,IAAI,IAAI,CAIjC;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,oBAAoB;AACpB,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAED,2BAA2B;AAC3B,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,2BAA2B;AAC3B,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAED,uCAAuC;AACvC,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,sCAAsC;AACtC,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AA4BD,gCAAgC;AAChC,wBAAgB,gBAAgB,IAAI,MAAM,CAQzC;AAKD,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAe/D;AAMD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB,CAkDA;AA2BD,wBAAgB,iBAAiB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAU1E;AAID,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,MAAM,CA4CnE;AAID,wBAAgB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA9DmB,MAAM;mBAAa,MAAM;;EAoExE;AAID,wBAAgB,iBAAiB,IAAI,IAAI,CAWxC;AAED,iDAAiD;AACjD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,aAAa,CAAC,GAAG,IAAI,CAU7E;AAED,6CAA6C;AAC7C,wBAAgB,gBAAgB,IAAI,OAAO,aAAa,CAEvD"}