cortex-mcp 2.8.0 → 3.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 (202) hide show
  1. package/CHANGELOG.md +305 -58
  2. package/README.md +394 -227
  3. package/dist/cli/setup.js +58 -60
  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 +8 -0
  8. package/dist/db/database.d.ts.map +1 -1
  9. package/dist/db/database.js +35 -54
  10. package/dist/db/database.js.map +1 -1
  11. package/dist/db/event-log.d.ts +4 -0
  12. package/dist/db/event-log.d.ts.map +1 -1
  13. package/dist/db/event-log.js +14 -10
  14. package/dist/db/event-log.js.map +1 -1
  15. package/dist/db/memory-store.d.ts +30 -3
  16. package/dist/db/memory-store.d.ts.map +1 -1
  17. package/dist/db/memory-store.js +153 -55
  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 +5 -2
  23. package/dist/mcp-stdio.js +70 -15
  24. package/dist/mcp-stdio.js.map +1 -1
  25. package/dist/memory/access-pattern-tracker.d.ts +51 -0
  26. package/dist/memory/access-pattern-tracker.d.ts.map +1 -0
  27. package/dist/memory/access-pattern-tracker.js +92 -0
  28. package/dist/memory/access-pattern-tracker.js.map +1 -0
  29. package/dist/memory/anticipation-engine.d.ts.map +1 -1
  30. package/dist/memory/anticipation-engine.js +18 -10
  31. package/dist/memory/anticipation-engine.js.map +1 -1
  32. package/dist/memory/auto-learner.d.ts.map +1 -1
  33. package/dist/memory/auto-learner.js +192 -45
  34. package/dist/memory/auto-learner.js.map +1 -1
  35. package/dist/memory/completion-resolver.d.ts +38 -0
  36. package/dist/memory/completion-resolver.d.ts.map +1 -0
  37. package/dist/memory/completion-resolver.js +127 -0
  38. package/dist/memory/completion-resolver.js.map +1 -0
  39. package/dist/memory/confidence-decay.d.ts.map +1 -1
  40. package/dist/memory/confidence-decay.js +13 -9
  41. package/dist/memory/confidence-decay.js.map +1 -1
  42. package/dist/memory/convention-detector.d.ts +11 -0
  43. package/dist/memory/convention-detector.d.ts.map +1 -0
  44. package/dist/memory/convention-detector.js +294 -0
  45. package/dist/memory/convention-detector.js.map +1 -0
  46. package/dist/memory/correction-detector.d.ts +33 -0
  47. package/dist/memory/correction-detector.d.ts.map +1 -0
  48. package/dist/memory/correction-detector.js +129 -0
  49. package/dist/memory/correction-detector.js.map +1 -0
  50. package/dist/memory/cross-memory-linker.d.ts +18 -0
  51. package/dist/memory/cross-memory-linker.d.ts.map +1 -0
  52. package/dist/memory/cross-memory-linker.js +115 -0
  53. package/dist/memory/cross-memory-linker.js.map +1 -0
  54. package/dist/memory/daily-diary.d.ts +30 -0
  55. package/dist/memory/daily-diary.d.ts.map +1 -0
  56. package/dist/memory/daily-diary.js +159 -0
  57. package/dist/memory/daily-diary.js.map +1 -0
  58. package/dist/memory/embedding-cache.d.ts +32 -0
  59. package/dist/memory/embedding-cache.d.ts.map +1 -0
  60. package/dist/memory/embedding-cache.js +76 -0
  61. package/dist/memory/embedding-cache.js.map +1 -0
  62. package/dist/memory/embedding-manager.d.ts.map +1 -1
  63. package/dist/memory/embedding-manager.js +6 -4
  64. package/dist/memory/embedding-manager.js.map +1 -1
  65. package/dist/memory/error-learner.d.ts +26 -0
  66. package/dist/memory/error-learner.d.ts.map +1 -0
  67. package/dist/memory/error-learner.js +145 -0
  68. package/dist/memory/error-learner.js.map +1 -0
  69. package/dist/memory/export-import.js +2 -2
  70. package/dist/memory/export-import.js.map +1 -1
  71. package/dist/memory/file-relationships.d.ts +47 -0
  72. package/dist/memory/file-relationships.d.ts.map +1 -0
  73. package/dist/memory/file-relationships.js +130 -0
  74. package/dist/memory/file-relationships.js.map +1 -0
  75. package/dist/memory/git-memory.d.ts.map +1 -1
  76. package/dist/memory/git-memory.js +20 -26
  77. package/dist/memory/git-memory.js.map +1 -1
  78. package/dist/memory/impact-analyzer.d.ts +16 -0
  79. package/dist/memory/impact-analyzer.d.ts.map +1 -0
  80. package/dist/memory/impact-analyzer.js +189 -0
  81. package/dist/memory/impact-analyzer.js.map +1 -0
  82. package/dist/memory/instructions-generator.d.ts +30 -0
  83. package/dist/memory/instructions-generator.d.ts.map +1 -0
  84. package/dist/memory/instructions-generator.js +117 -0
  85. package/dist/memory/instructions-generator.js.map +1 -0
  86. package/dist/memory/learning-rate.js +8 -7
  87. package/dist/memory/learning-rate.js.map +1 -1
  88. package/dist/memory/llm-enhancer.d.ts +2 -14
  89. package/dist/memory/llm-enhancer.d.ts.map +1 -1
  90. package/dist/memory/llm-enhancer.js +66 -46
  91. package/dist/memory/llm-enhancer.js.map +1 -1
  92. package/dist/memory/memory-cache.d.ts.map +1 -1
  93. package/dist/memory/memory-cache.js +10 -0
  94. package/dist/memory/memory-cache.js.map +1 -1
  95. package/dist/memory/memory-consolidator.d.ts.map +1 -1
  96. package/dist/memory/memory-consolidator.js +20 -14
  97. package/dist/memory/memory-consolidator.js.map +1 -1
  98. package/dist/memory/memory-decay.d.ts.map +1 -1
  99. package/dist/memory/memory-decay.js +82 -52
  100. package/dist/memory/memory-decay.js.map +1 -1
  101. package/dist/memory/memory-export-md.d.ts +12 -0
  102. package/dist/memory/memory-export-md.d.ts.map +1 -0
  103. package/dist/memory/memory-export-md.js +188 -0
  104. package/dist/memory/memory-export-md.js.map +1 -0
  105. package/dist/memory/memory-quality.d.ts +1 -1
  106. package/dist/memory/memory-quality.d.ts.map +1 -1
  107. package/dist/memory/memory-quality.js +13 -27
  108. package/dist/memory/memory-quality.js.map +1 -1
  109. package/dist/memory/memory-ranker.d.ts.map +1 -1
  110. package/dist/memory/memory-ranker.js +12 -3
  111. package/dist/memory/memory-ranker.js.map +1 -1
  112. package/dist/memory/meta-memory.js +3 -3
  113. package/dist/memory/meta-memory.js.map +1 -1
  114. package/dist/memory/mmr-reranker.d.ts +39 -0
  115. package/dist/memory/mmr-reranker.d.ts.map +1 -0
  116. package/dist/memory/mmr-reranker.js +115 -0
  117. package/dist/memory/mmr-reranker.js.map +1 -0
  118. package/dist/memory/pre-flight.d.ts +24 -0
  119. package/dist/memory/pre-flight.d.ts.map +1 -0
  120. package/dist/memory/pre-flight.js +121 -0
  121. package/dist/memory/pre-flight.js.map +1 -0
  122. package/dist/memory/preference-learner.d.ts +28 -0
  123. package/dist/memory/preference-learner.d.ts.map +1 -0
  124. package/dist/memory/preference-learner.js +144 -0
  125. package/dist/memory/preference-learner.js.map +1 -0
  126. package/dist/memory/query-expansion.d.ts +28 -0
  127. package/dist/memory/query-expansion.d.ts.map +1 -0
  128. package/dist/memory/query-expansion.js +140 -0
  129. package/dist/memory/query-expansion.js.map +1 -0
  130. package/dist/memory/regression-guard.d.ts +35 -0
  131. package/dist/memory/regression-guard.d.ts.map +1 -0
  132. package/dist/memory/regression-guard.js +90 -0
  133. package/dist/memory/regression-guard.js.map +1 -0
  134. package/dist/memory/resume-work.d.ts +37 -0
  135. package/dist/memory/resume-work.d.ts.map +1 -0
  136. package/dist/memory/resume-work.js +141 -0
  137. package/dist/memory/resume-work.js.map +1 -0
  138. package/dist/memory/session-tracker.d.ts +2 -0
  139. package/dist/memory/session-tracker.d.ts.map +1 -1
  140. package/dist/memory/session-tracker.js +26 -8
  141. package/dist/memory/session-tracker.js.map +1 -1
  142. package/dist/memory/soul-manager.d.ts +30 -0
  143. package/dist/memory/soul-manager.d.ts.map +1 -0
  144. package/dist/memory/soul-manager.js +171 -0
  145. package/dist/memory/soul-manager.js.map +1 -0
  146. package/dist/memory/success-tracker.d.ts +33 -0
  147. package/dist/memory/success-tracker.d.ts.map +1 -0
  148. package/dist/memory/success-tracker.js +75 -0
  149. package/dist/memory/success-tracker.js.map +1 -0
  150. package/dist/memory/temporal-engine.d.ts.map +1 -1
  151. package/dist/memory/temporal-engine.js +9 -13
  152. package/dist/memory/temporal-engine.js.map +1 -1
  153. package/dist/memory/tool-recommender.d.ts +29 -0
  154. package/dist/memory/tool-recommender.d.ts.map +1 -0
  155. package/dist/memory/tool-recommender.js +117 -0
  156. package/dist/memory/tool-recommender.js.map +1 -0
  157. package/dist/memory/usage-stats.d.ts +98 -0
  158. package/dist/memory/usage-stats.d.ts.map +1 -0
  159. package/dist/memory/usage-stats.js +345 -0
  160. package/dist/memory/usage-stats.js.map +1 -0
  161. package/dist/retrieval/hybrid-retriever.d.ts +0 -2
  162. package/dist/retrieval/hybrid-retriever.d.ts.map +1 -1
  163. package/dist/retrieval/hybrid-retriever.js +3 -13
  164. package/dist/retrieval/hybrid-retriever.js.map +1 -1
  165. package/dist/scanners/architecture-graph.js +2 -2
  166. package/dist/scanners/architecture-graph.js.map +1 -1
  167. package/dist/scanners/code-verifier.d.ts +1 -0
  168. package/dist/scanners/code-verifier.d.ts.map +1 -1
  169. package/dist/scanners/code-verifier.js +14 -14
  170. package/dist/scanners/code-verifier.js.map +1 -1
  171. package/dist/scanners/context-builder.d.ts.map +1 -1
  172. package/dist/scanners/context-builder.js +33 -45
  173. package/dist/scanners/context-builder.js.map +1 -1
  174. package/dist/scanners/export-map.js +2 -2
  175. package/dist/scanners/export-map.js.map +1 -1
  176. package/dist/scanners/project-scanner.js +2 -2
  177. package/dist/scanners/project-scanner.js.map +1 -1
  178. package/dist/security/encryption.js +1 -1
  179. package/dist/security/encryption.js.map +1 -1
  180. package/dist/security/feature-gate.d.ts.map +1 -1
  181. package/dist/security/feature-gate.js +62 -20
  182. package/dist/security/feature-gate.js.map +1 -1
  183. package/dist/security/license.js +282 -35
  184. package/dist/security/license.js.map +1 -1
  185. package/dist/security/rate-limiter.d.ts +4 -3
  186. package/dist/security/rate-limiter.d.ts.map +1 -1
  187. package/dist/security/rate-limiter.js +11 -29
  188. package/dist/security/rate-limiter.js.map +1 -1
  189. package/dist/server/dashboard.js +166 -327
  190. package/dist/server/dashboard.js.map +1 -1
  191. package/dist/server/mcp-handler.d.ts.map +1 -1
  192. package/dist/server/mcp-handler.js +991 -1019
  193. package/dist/server/mcp-handler.js.map +1 -1
  194. package/dist/utils/extract-tags.d.ts +16 -0
  195. package/dist/utils/extract-tags.d.ts.map +1 -0
  196. package/dist/utils/extract-tags.js +40 -0
  197. package/dist/utils/extract-tags.js.map +1 -0
  198. package/package.json +18 -8
  199. package/dist/core/event-bus.d.ts +0 -19
  200. package/dist/core/event-bus.d.ts.map +0 -1
  201. package/dist/core/event-bus.js +0 -51
  202. package/dist/core/event-bus.js.map +0 -1
@@ -6,15 +6,35 @@ exports.canStoreMemory = canStoreMemory;
6
6
  exports.getUpgradeMessage = getUpgradeMessage;
7
7
  exports.formatPlanStatus = formatPlanStatus;
8
8
  /**
9
- * Feature Gate — Cortex is 100% FREE and open.
9
+ * Feature Gate — Enforces free/trial/paid limits based on license.
10
10
  *
11
- * ALL features are unlocked for ALL users.
12
- * No license key needed. No paywalls. No limits.
13
- * Every developer gets the full brain — unlimited.
11
+ * LAUNCH MODE: All features unlocked for everyone!
12
+ * When ready to add pricing, revert FREE_LIMITS to restricted values.
13
+ *
14
+ * TRIAL plan: Same as PRO for 7 days after sign-up.
15
+ * PRO plan: Everything unlocked, unlimited.
14
16
  */
15
-
16
- // ─── ALL FEATURES UNLOCKED FOR EVERYONE ──────────────────────────────────────
17
- const ALL_FEATURES = {
17
+ const license_1 = require("./license");
18
+ const DASHBOARD_URL = `${process.env.CORTEX_API_URL || 'https://cortex-ai-iota.vercel.app'}/dashboard`;
19
+ // LAUNCH MODE — All features unlocked for free users
20
+ // To re-enable limits later, change these values back to restricted ones
21
+ const FREE_LIMITS = {
22
+ maxMemories: Infinity,
23
+ brainLayers: true,
24
+ autoLearn: true,
25
+ exportMap: true,
26
+ architectureGraph: true,
27
+ gitMemory: true,
28
+ contradictionDetection: true,
29
+ confidenceDecay: true,
30
+ memoryConsolidation: true,
31
+ attentionRanking: true,
32
+ anticipation: true,
33
+ knowledgeGaps: true,
34
+ temporalContext: true,
35
+ crossSessionThreading: true,
36
+ };
37
+ const PRO_LIMITS = {
18
38
  maxMemories: Infinity,
19
39
  brainLayers: true,
20
40
  autoLearn: true,
@@ -30,29 +50,51 @@ const ALL_FEATURES = {
30
50
  temporalContext: true,
31
51
  crossSessionThreading: true,
32
52
  };
33
-
34
- /** Get current feature limits — always returns full access */
53
+ // Trial gets same limits as PRO
54
+ const TRIAL_LIMITS = { ...PRO_LIMITS };
55
+ /** Get current feature limits based on license */
35
56
  function getFeatureLimits() {
36
- return ALL_FEATURES;
57
+ const license = (0, license_1.getLicense)();
58
+ if (license.plan === 'PRO')
59
+ return PRO_LIMITS;
60
+ if (license.plan === 'TRIAL')
61
+ return TRIAL_LIMITS;
62
+ return FREE_LIMITS;
37
63
  }
38
-
39
- /** Check if a specific feature is allowed — always true */
64
+ /** Check if a specific feature is allowed */
40
65
  function isFeatureAllowed(feature) {
41
- return true;
66
+ const limits = getFeatureLimits();
67
+ const value = limits[feature];
68
+ if (typeof value === 'boolean')
69
+ return value;
70
+ return true; // numeric limits are checked separately
42
71
  }
43
-
44
- /** Check if user can store more memories — always allowed */
72
+ /** Check if user can store more memories */
45
73
  function canStoreMemory(currentCount) {
74
+ const limits = getFeatureLimits();
75
+ if (currentCount >= limits.maxMemories) {
76
+ return {
77
+ allowed: false,
78
+ message: `[LOCKED] Free plan limit: ${limits.maxMemories} memories. Upgrade to PRO for unlimited. Visit ${DASHBOARD_URL}`,
79
+ };
80
+ }
46
81
  return { allowed: true, message: '' };
47
82
  }
48
-
49
- /** Get upgrade message — no longer needed, but kept for compatibility */
83
+ /** Get upgrade message for gated features */
50
84
  function getUpgradeMessage(feature) {
51
- return `Feature "${feature}" is available! Cortex is 100% free.`;
85
+ return `[LOCKED] "${feature}" is a PRO feature. Upgrade at ${DASHBOARD_URL} or set CORTEX_LICENSE_KEY to unlock.`;
52
86
  }
53
-
54
87
  /** Format plan status for display */
55
88
  function formatPlanStatus() {
56
- return `[CORTEX] Full Brain — All 12 layers active, unlimited memories, zero restrictions. 100% free and open source.`;
89
+ const license = (0, license_1.getLicense)();
90
+ const _limits = getFeatureLimits();
91
+ if (license.plan === 'PRO') {
92
+ return `[PRO] Cortex PRO — All features unlocked, unlimited memories.`;
93
+ }
94
+ if (license.plan === 'TRIAL') {
95
+ const trialMsg = (0, license_1.getTrialStatus)();
96
+ return `[TRIAL] Cortex Trial — All PRO features active. ${trialMsg || ''}`;
97
+ }
98
+ return `[FREE] Cortex — All features unlocked. Launch edition 🚀`;
57
99
  }
58
100
  //# sourceMappingURL=feature-gate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-gate.js","sourceRoot":"","sources":["../../src/security/feature-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feature-gate.js","sourceRoot":"","sources":["../../src/security/feature-gate.ts"],"names":[],"mappings":"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"}
@@ -44,66 +44,313 @@ exports.saveKey = saveKey;
44
44
  exports.validateKeyFormat = validateKeyFormat;
45
45
  exports.verifyOnline = verifyOnline;
46
46
  /**
47
- * License — Cortex is 100% FREE.
48
- *
49
- * Every user gets full PRO-level access.
50
- * No license keys. No online verification. No paywalls.
51
- * This module exists only for API compatibility.
47
+ * License validation online-first, secure.
52
48
  */
53
49
  const fs = __importStar(require("fs"));
54
50
  const path = __importStar(require("path"));
55
51
  const os = __importStar(require("os"));
56
-
52
+ const crypto = __importStar(require("crypto"));
53
+ const https = __importStar(require("https"));
54
+ const API_BASE = process.env.CORTEX_API_URL || 'https://cortex-ai-iota.vercel.app';
55
+ const VERIFY_URL = `${API_BASE}/api/auth/verify`;
56
+ const DASHBOARD_URL = `${API_BASE}/dashboard`;
57
57
  const CORTEX_DIR = path.join(os.homedir(), '.cortex');
58
-
59
- // ─── Always return full access ────────────────────────────────────────────────
60
- const FULL_ACCESS = {
61
- plan: 'PRO',
62
- key: 'CORTEX-FREE-FULL-ACCESS-OPEN',
63
- valid: true,
64
- message: 'Cortex100% free, all features unlocked.',
65
- };
66
-
58
+ const CACHE_FILE = path.join(CORTEX_DIR, 'license-cache.json');
59
+ const KEY_FILE = path.join(CORTEX_DIR, '.cache-key');
60
+ const CACHE_TTL_HOURS = 24;
61
+ const MAX_RESPONSE_BYTES = 4096;
62
+ let cachedLicense = null;
63
+ let _initPromise = null;
64
+ // ─── HMAC Key Per-Machine Random Secret ─────────────────────────────────────
65
+ // A 32-byte cryptographically random key is generated ONCE and persisted
66
+ // to ~/.cortex/.cache-key (mode 0600). If the file is missing or unreadable,
67
+ // a NEW random key is generated each time (cache simply won't persist across
68
+ // restarts until the filesystem issue is resolved — this is intentionally
69
+ // secure-by-default: no predictable fallback exists).
70
+ let _hmacKey = null;
71
+ function getCacheHmacKey() {
72
+ if (_hmacKey)
73
+ return _hmacKey;
74
+ try {
75
+ ensureDir();
76
+ // Try to read existing key
77
+ if (fs.existsSync(KEY_FILE)) {
78
+ const existing = fs.readFileSync(KEY_FILE, 'utf-8').trim();
79
+ if (existing.length >= 64) {
80
+ _hmacKey = existing;
81
+ return _hmacKey;
82
+ }
83
+ }
84
+ // No valid key on disk — generate and persist a new one
85
+ const fresh = crypto.randomBytes(32).toString('hex');
86
+ fs.writeFileSync(KEY_FILE, fresh, { encoding: 'utf-8', mode: 0o600 });
87
+ _hmacKey = fresh;
88
+ return _hmacKey;
89
+ }
90
+ catch {
91
+ // Filesystem failure — use an ephemeral random key for this session.
92
+ // Cache won't persist across restarts, but integrity is never compromised.
93
+ _hmacKey = crypto.randomBytes(32).toString('hex');
94
+ return _hmacKey;
95
+ }
96
+ }
97
+ // ─── Public API ───────────────────────────────────────────────────────────────
98
+ /**
99
+ * Synchronous license accessor. Returns the cached license state.
100
+ *
101
+ * On the very first call (cold start with no disk cache), this returns
102
+ * the HMAC-signed cached result if available. If no cache exists, it
103
+ * starts background verification and returns a "verifying" state.
104
+ *
105
+ * For guaranteed accurate results at startup, call `waitForVerification()`
106
+ * first — it blocks until the server responds (with a configurable timeout).
107
+ */
67
108
  function getLicense() {
68
- return FULL_ACCESS;
109
+ if (cachedLicense)
110
+ return cachedLicense;
111
+ cachedLicense = detectLicense();
112
+ return cachedLicense;
69
113
  }
70
-
114
+ /**
115
+ * Async startup helper — waits for online verification to finish.
116
+ * Call this ONCE at startup, then use getLicense() synchronously afterwards.
117
+ *
118
+ * After this resolves, `getLicense()` will return the server-verified plan
119
+ * (PRO, TRIAL, or FREE) rather than the cold-start "verifying" state.
120
+ */
71
121
  async function waitForVerification(timeoutMs = 5000) {
72
- return FULL_ACCESS;
122
+ // Ensure detectLicense runs first (sets up _initPromise if needed)
123
+ getLicense();
124
+ if (_initPromise) {
125
+ try {
126
+ const result = await Promise.race([
127
+ _initPromise,
128
+ new Promise((r) => setTimeout(() => r(null), timeoutMs)),
129
+ ]);
130
+ if (result) {
131
+ cachedLicense = result;
132
+ return result;
133
+ }
134
+ }
135
+ catch { /* timeout or network failure — fall through */ }
136
+ }
137
+ return getLicense();
73
138
  }
74
-
75
139
  function refreshLicense() {
76
- return FULL_ACCESS;
140
+ cachedLicense = null;
141
+ _initPromise = null;
142
+ return getLicense();
77
143
  }
78
-
79
144
  function isPro() {
80
- return true; // Always PRO — everything is free
145
+ const l = getLicense();
146
+ return l.plan === 'PRO' || l.plan === 'TRIAL';
81
147
  }
82
-
83
148
  function isFree() {
84
- return false; // Never "free tier" — everyone gets full access
149
+ return getLicense().plan === 'FREE';
85
150
  }
86
-
87
151
  function isTrial() {
88
- return false;
152
+ return getLicense().plan === 'TRIAL';
89
153
  }
90
-
91
154
  function getTrialStatus() {
92
- return null;
155
+ const l = getLicense();
156
+ if (l.plan !== 'TRIAL')
157
+ return null;
158
+ if (l.daysRemaining === undefined)
159
+ return null;
160
+ if (l.daysRemaining <= 0)
161
+ return `Trial expired. Upgrade at ${DASHBOARD_URL}`;
162
+ if (l.daysRemaining <= 2)
163
+ return `Trial expires in ${l.daysRemaining}d. Upgrade: ${DASHBOARD_URL}`;
164
+ return `Trial: ${l.daysRemaining}d remaining`;
93
165
  }
94
-
95
166
  function saveKey(key) {
96
- // No-op — no license keys needed
167
+ ensureDir();
168
+ fs.writeFileSync(path.join(CORTEX_DIR, 'license'), key.trim(), 'utf-8');
169
+ clearCache();
170
+ refreshLicense();
97
171
  }
98
-
99
172
  function validateKeyFormat(key) {
100
- return true;
173
+ if (!key)
174
+ return false;
175
+ return /^CORTEX-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}$/.test(key.trim().toUpperCase());
101
176
  }
102
-
177
+ // ─── Online Verification ──────────────────────────────────────────────────────
103
178
  async function verifyOnline(key) {
104
- return FULL_ACCESS;
179
+ return new Promise((resolve) => {
180
+ let settled = false;
181
+ function settle(value) {
182
+ if (settled)
183
+ return;
184
+ settled = true;
185
+ resolve(value);
186
+ }
187
+ try {
188
+ const url = new URL(VERIFY_URL);
189
+ const body = JSON.stringify({ licenseKey: key });
190
+ const req = https.request({
191
+ hostname: url.hostname,
192
+ port: 443,
193
+ path: url.pathname,
194
+ method: 'POST',
195
+ headers: {
196
+ 'Content-Type': 'application/json',
197
+ 'Content-Length': Buffer.byteLength(body),
198
+ },
199
+ timeout: 8000,
200
+ }, (res) => {
201
+ let totalBytes = 0;
202
+ const chunks = [];
203
+ res.on('data', (chunk) => {
204
+ // Enforce response size limit BEFORE accumulating
205
+ const incoming = Buffer.isBuffer(chunk) ? chunk.length : Buffer.byteLength(String(chunk));
206
+ if (totalBytes + incoming > MAX_RESPONSE_BYTES) {
207
+ res.destroy();
208
+ settle(readCacheOrFree(key));
209
+ return;
210
+ }
211
+ totalBytes += incoming;
212
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));
213
+ });
214
+ res.on('end', () => {
215
+ try {
216
+ const data = Buffer.concat(chunks, totalBytes).toString('utf-8');
217
+ const json = JSON.parse(data);
218
+ const result = parseServerResponse(json, key);
219
+ writeCache(result);
220
+ cachedLicense = result;
221
+ settle(result);
222
+ }
223
+ catch {
224
+ settle(readCacheOrFree(key));
225
+ }
226
+ });
227
+ res.on('error', () => settle(readCacheOrFree(key)));
228
+ });
229
+ req.on('error', () => settle(readCacheOrFree(key)));
230
+ req.on('timeout', () => { req.destroy(); settle(readCacheOrFree(key)); });
231
+ req.write(body);
232
+ req.end();
233
+ }
234
+ catch {
235
+ settle(readCacheOrFree(key));
236
+ }
237
+ });
238
+ }
239
+ // ─── Internal ─────────────────────────────────────────────────────────────────
240
+ function detectLicense() {
241
+ const key = readKeyFromDisk();
242
+ // Fast path: HMAC-verified cache is present and matches the current key.
243
+ // This returns the real plan (PRO/TRIAL/FREE) from the last server response.
244
+ const cached = readCache();
245
+ if (cached && cached.key === key)
246
+ return cached;
247
+ if (!key) {
248
+ return { plan: 'FREE', key: null, valid: false, message: `Free plan. Upgrade: ${API_BASE}` };
249
+ }
250
+ if (!validateKeyFormat(key)) {
251
+ return { plan: 'FREE', key, valid: false, message: 'Invalid license key format' };
252
+ }
253
+ // No valid cache — fire async verification, store promise for waitForVerification()
254
+ _initPromise = verifyOnline(key);
255
+ _initPromise.catch(() => { });
256
+ return {
257
+ plan: 'FREE',
258
+ key,
259
+ valid: false,
260
+ message: 'Verifying license...',
261
+ };
262
+ }
263
+ function parseServerResponse(json, key) {
264
+ if (!json || typeof json !== 'object') {
265
+ return { plan: 'FREE', key, valid: false, message: 'Invalid server response' };
266
+ }
267
+ if (!json.valid) {
268
+ const errMsg = typeof json.error === 'string' ? json.error.slice(0, 200) : 'License not valid';
269
+ return { plan: 'FREE', key, valid: false, message: errMsg };
270
+ }
271
+ const rawPlan = typeof json.plan === 'string' ? json.plan.toUpperCase() : '';
272
+ const plan = rawPlan === 'PRO' ? 'PRO' : rawPlan === 'TRIAL' ? 'TRIAL' : 'FREE';
273
+ const result = { plan, key, valid: true, message: `${plan} license verified` };
274
+ if (typeof json.expiresAt === 'string') {
275
+ result.expiresAt = json.expiresAt.slice(0, 30);
276
+ const expiryMs = new Date(json.expiresAt).getTime();
277
+ if (!isNaN(expiryMs)) {
278
+ result.daysRemaining = Math.max(0, Math.ceil((expiryMs - Date.now()) / 86400000));
279
+ if (plan === 'TRIAL' && result.daysRemaining <= 0) {
280
+ result.plan = 'FREE';
281
+ result.valid = false;
282
+ result.message = 'Trial expired';
283
+ }
284
+ }
285
+ }
286
+ return result;
287
+ }
288
+ function readKeyFromDisk() {
289
+ const envKey = process.env.CORTEX_LICENSE_KEY?.trim();
290
+ if (envKey)
291
+ return envKey;
292
+ try {
293
+ const f = path.join(CORTEX_DIR, 'license');
294
+ if (fs.existsSync(f))
295
+ return fs.readFileSync(f, 'utf-8').trim() || null;
296
+ }
297
+ catch { }
298
+ return null;
299
+ }
300
+ // ─── Signed Cache ─────────────────────────────────────────────────────────────
301
+ function computeHmac(data) {
302
+ return crypto.createHmac('sha256', getCacheHmacKey()).update(data).digest('hex');
303
+ }
304
+ function writeCache(info) {
305
+ try {
306
+ ensureDir();
307
+ const payload = JSON.stringify({ ...info, ts: Date.now() });
308
+ const sig = computeHmac(payload);
309
+ fs.writeFileSync(CACHE_FILE, JSON.stringify({ payload, sig }), 'utf-8');
310
+ }
311
+ catch { }
312
+ }
313
+ function readCache() {
314
+ try {
315
+ if (!fs.existsSync(CACHE_FILE))
316
+ return null;
317
+ const raw = JSON.parse(fs.readFileSync(CACHE_FILE, 'utf-8'));
318
+ if (!raw.payload || !raw.sig)
319
+ return null;
320
+ if (computeHmac(raw.payload) !== raw.sig) {
321
+ clearCache();
322
+ return null;
323
+ }
324
+ const data = JSON.parse(raw.payload);
325
+ if ((Date.now() - data.ts) / 3600000 > CACHE_TTL_HOURS)
326
+ return null;
327
+ if (data.expiresAt) {
328
+ data.daysRemaining = Math.max(0, Math.ceil((new Date(data.expiresAt).getTime() - Date.now()) / 86400000));
329
+ if (data.plan === 'TRIAL' && data.daysRemaining <= 0) {
330
+ data.plan = 'FREE';
331
+ data.valid = false;
332
+ data.message = 'Trial expired';
333
+ }
334
+ }
335
+ return data;
336
+ }
337
+ catch {
338
+ return null;
339
+ }
340
+ }
341
+ function readCacheOrFree(key) {
342
+ const c = readCache();
343
+ if (c && c.key === key)
344
+ return c;
345
+ return { plan: 'FREE', key, valid: false, message: 'Offline — license pending verification' };
346
+ }
347
+ function clearCache() {
348
+ try {
349
+ if (fs.existsSync(CACHE_FILE))
350
+ fs.unlinkSync(CACHE_FILE);
351
+ }
352
+ catch { }
105
353
  }
106
-
107
354
  function ensureDir() {
108
355
  if (!fs.existsSync(CORTEX_DIR))
109
356
  fs.mkdirSync(CORTEX_DIR, { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/security/license.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/security/license.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,9 @@
2
2
  * Rate Limiter — Prevents unbounded memory storage per session.
3
3
  *
4
4
  * Limits:
5
- * - Max 30 memories stored per session (resets on server restart)
6
- * - Max 100 auto_learn calls per session
7
- * - Max 500 total tool calls per session
5
+ * - Max 100 memories stored per session (resets on server restart)
6
+ * - Max 500 auto_learn calls per session
7
+ * - Max 2000 total tool calls per session
8
8
  */
9
9
  export declare function checkRateLimit(operation: 'store' | 'auto_learn' | 'call'): {
10
10
  allowed: boolean;
@@ -15,6 +15,7 @@ export declare function getRateLimitStats(): {
15
15
  autoLearnCount: number;
16
16
  totalCalls: number;
17
17
  uptime: number;
18
+ storeLimit: number;
18
19
  };
19
20
  export declare function resetRateLimits(): void;
20
21
  //# sourceMappingURL=rate-limiter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/security/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH,wBAAgB,cAAc,CAAC,SAAS,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAsBhH;AAED,wBAAgB,iBAAiB,IAAI;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAOtH;AAED,wBAAgB,eAAe,IAAI,IAAI,CAOtC"}
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/security/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH,wBAAgB,cAAc,CAAC,SAAS,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAsBhH;AAED,wBAAgB,iBAAiB,IAAI;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAQ1I;AAED,wBAAgB,eAAe,IAAI,IAAI,CAOtC"}
@@ -2,69 +2,52 @@
2
2
  /**
3
3
  * Rate Limiter — Prevents unbounded memory storage per session.
4
4
  *
5
- * Limits (auto-reset every 24 hours):
6
- * - Max 500 memories stored per 24h window
7
- * - Max 1000 auto_learn calls per 24h window
8
- * - Max 5000 total tool calls per 24h window
5
+ * Limits:
6
+ * - Max 100 memories stored per session (resets on server restart)
7
+ * - Max 500 auto_learn calls per session
8
+ * - Max 2000 total tool calls per session
9
9
  */
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.checkRateLimit = checkRateLimit;
12
12
  exports.getRateLimitStats = getRateLimitStats;
13
13
  exports.resetRateLimits = resetRateLimits;
14
14
  const LIMITS = {
15
- MAX_STORES_PER_SESSION: 500,
16
- MAX_AUTO_LEARN_PER_SESSION: 1000,
17
- MAX_CALLS_PER_SESSION: 5000,
15
+ MAX_STORES_PER_SESSION: 100,
16
+ MAX_AUTO_LEARN_PER_SESSION: 500,
17
+ MAX_CALLS_PER_SESSION: 2000,
18
18
  };
19
- const RESET_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
20
19
  let state = {
21
20
  storeCount: 0,
22
21
  autoLearnCount: 0,
23
22
  totalCalls: 0,
24
23
  sessionStart: Date.now(),
25
- lastReset: Date.now(),
26
24
  };
27
- /** Auto-reset every 24 hours — users are never permanently locked out */
28
- function maybeAutoReset() {
29
- if (Date.now() - state.lastReset >= RESET_INTERVAL_MS) {
30
- state = {
31
- storeCount: 0,
32
- autoLearnCount: 0,
33
- totalCalls: 0,
34
- sessionStart: state.sessionStart, // keep original start time
35
- lastReset: Date.now(),
36
- };
37
- }
38
- }
39
25
  function checkRateLimit(operation) {
40
- maybeAutoReset();
41
26
  state.totalCalls++;
42
27
  if (state.totalCalls > LIMITS.MAX_CALLS_PER_SESSION) {
43
- return { allowed: false, reason: `Daily call limit reached (${LIMITS.MAX_CALLS_PER_SESSION}). Resets automatically every 24h.` };
28
+ return { allowed: false, reason: `Session limit reached (${LIMITS.MAX_CALLS_PER_SESSION} total calls). Restart server to reset.` };
44
29
  }
45
30
  if (operation === 'store') {
46
31
  state.storeCount++;
47
32
  if (state.storeCount > LIMITS.MAX_STORES_PER_SESSION) {
48
- return { allowed: false, reason: `Memory store limit reached (${LIMITS.MAX_STORES_PER_SESSION}/day). Resets automatically every 24h.` };
33
+ return { allowed: false, reason: `Memory store limit reached (${LIMITS.MAX_STORES_PER_SESSION}/session). Prevents DB bloat.` };
49
34
  }
50
35
  }
51
36
  if (operation === 'auto_learn') {
52
37
  state.autoLearnCount++;
53
38
  if (state.autoLearnCount > LIMITS.MAX_AUTO_LEARN_PER_SESSION) {
54
- return { allowed: false, reason: `Auto-learn limit reached (${LIMITS.MAX_AUTO_LEARN_PER_SESSION}/day). Resets automatically every 24h.` };
39
+ return { allowed: false, reason: `Auto-learn limit reached (${LIMITS.MAX_AUTO_LEARN_PER_SESSION}/session).` };
55
40
  }
56
41
  }
57
42
  return { allowed: true };
58
43
  }
59
44
  function getRateLimitStats() {
60
- maybeAutoReset();
61
- const nextResetMs = RESET_INTERVAL_MS - (Date.now() - state.lastReset);
62
45
  return {
63
46
  storeCount: state.storeCount,
64
47
  autoLearnCount: state.autoLearnCount,
65
48
  totalCalls: state.totalCalls,
66
49
  uptime: Math.floor((Date.now() - state.sessionStart) / 1000),
67
- nextResetIn: Math.floor(nextResetMs / (60 * 1000)) + ' minutes',
50
+ storeLimit: LIMITS.MAX_STORES_PER_SESSION,
68
51
  };
69
52
  }
70
53
  function resetRateLimits() {
@@ -73,7 +56,6 @@ function resetRateLimits() {
73
56
  autoLearnCount: 0,
74
57
  totalCalls: 0,
75
58
  sessionStart: Date.now(),
76
- lastReset: Date.now(),
77
59
  };
78
60
  }
79
61
  //# sourceMappingURL=rate-limiter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/security/rate-limiter.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAsBH,wCAsBC;AAED,8CAOC;AAED,0CAOC;AArDD,MAAM,MAAM,GAAG;IACX,sBAAsB,EAAE,EAAE;IAC1B,0BAA0B,EAAE,GAAG;IAC/B,qBAAqB,EAAE,GAAG;CAC7B,CAAC;AAEF,IAAI,KAAK,GAAmB;IACxB,UAAU,EAAE,CAAC;IACb,cAAc,EAAE,CAAC;IACjB,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;CAC3B,CAAC;AAEF,SAAgB,cAAc,CAAC,SAA0C;IACrE,KAAK,CAAC,UAAU,EAAE,CAAC;IAEnB,IAAI,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,MAAM,CAAC,qBAAqB,yCAAyC,EAAE,CAAC;IACvI,CAAC;IAED,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,sBAAsB,EAAE,CAAC;YACnD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,MAAM,CAAC,sBAAsB,+BAA+B,EAAE,CAAC;QACnI,CAAC;IACL,CAAC;IAED,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,0BAA0B,EAAE,CAAC;YAC3D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,MAAM,CAAC,0BAA0B,YAAY,EAAE,CAAC;QAClH,CAAC;IACL,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,SAAgB,iBAAiB;IAC7B,OAAO;QACH,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;KAC/D,CAAC;AACN,CAAC;AAED,SAAgB,eAAe;IAC3B,KAAK,GAAG;QACJ,UAAU,EAAE,CAAC;QACb,cAAc,EAAE,CAAC;QACjB,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;KAC3B,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/security/rate-limiter.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAsBH,wCAsBC;AAED,8CAQC;AAED,0CAOC;AAtDD,MAAM,MAAM,GAAG;IACX,sBAAsB,EAAE,GAAG;IAC3B,0BAA0B,EAAE,GAAG;IAC/B,qBAAqB,EAAE,IAAI;CAC9B,CAAC;AAEF,IAAI,KAAK,GAAmB;IACxB,UAAU,EAAE,CAAC;IACb,cAAc,EAAE,CAAC;IACjB,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;CAC3B,CAAC;AAEF,SAAgB,cAAc,CAAC,SAA0C;IACrE,KAAK,CAAC,UAAU,EAAE,CAAC;IAEnB,IAAI,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,MAAM,CAAC,qBAAqB,yCAAyC,EAAE,CAAC;IACvI,CAAC;IAED,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,sBAAsB,EAAE,CAAC;YACnD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,MAAM,CAAC,sBAAsB,+BAA+B,EAAE,CAAC;QACnI,CAAC;IACL,CAAC;IAED,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,0BAA0B,EAAE,CAAC;YAC3D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,MAAM,CAAC,0BAA0B,YAAY,EAAE,CAAC;QAClH,CAAC;IACL,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,SAAgB,iBAAiB;IAC7B,OAAO;QACH,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;QAC5D,UAAU,EAAE,MAAM,CAAC,sBAAsB;KAC5C,CAAC;AACN,CAAC;AAED,SAAgB,eAAe;IAC3B,KAAK,GAAG;QACJ,UAAU,EAAE,CAAC;QACb,cAAc,EAAE,CAAC;QACjB,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;KAC3B,CAAC;AACN,CAAC"}