cortex-mcp 2.7.6 → 2.9.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 +305 -58
- package/README.md +394 -224
- package/dist/cli/setup.js +58 -60
- 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 +8 -0
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/database.js +35 -54
- package/dist/db/database.js.map +1 -1
- package/dist/db/event-log.d.ts +4 -0
- package/dist/db/event-log.d.ts.map +1 -1
- package/dist/db/event-log.js +14 -10
- package/dist/db/event-log.js.map +1 -1
- package/dist/db/memory-store.d.ts +30 -3
- package/dist/db/memory-store.d.ts.map +1 -1
- package/dist/db/memory-store.js +153 -55
- 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 +5 -2
- package/dist/mcp-stdio.js +39 -5
- package/dist/mcp-stdio.js.map +1 -1
- package/dist/memory/access-pattern-tracker.d.ts +51 -0
- package/dist/memory/access-pattern-tracker.d.ts.map +1 -0
- package/dist/memory/access-pattern-tracker.js +92 -0
- package/dist/memory/access-pattern-tracker.js.map +1 -0
- package/dist/memory/anticipation-engine.d.ts.map +1 -1
- package/dist/memory/anticipation-engine.js +18 -10
- 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 +192 -45
- package/dist/memory/auto-learner.js.map +1 -1
- package/dist/memory/completion-resolver.d.ts +38 -0
- package/dist/memory/completion-resolver.d.ts.map +1 -0
- package/dist/memory/completion-resolver.js +127 -0
- package/dist/memory/completion-resolver.js.map +1 -0
- package/dist/memory/confidence-decay.d.ts.map +1 -1
- package/dist/memory/confidence-decay.js +13 -9
- package/dist/memory/confidence-decay.js.map +1 -1
- package/dist/memory/convention-detector.d.ts +11 -0
- package/dist/memory/convention-detector.d.ts.map +1 -0
- package/dist/memory/convention-detector.js +294 -0
- package/dist/memory/convention-detector.js.map +1 -0
- package/dist/memory/correction-detector.d.ts +33 -0
- package/dist/memory/correction-detector.d.ts.map +1 -0
- package/dist/memory/correction-detector.js +129 -0
- package/dist/memory/correction-detector.js.map +1 -0
- package/dist/memory/cross-memory-linker.d.ts +18 -0
- package/dist/memory/cross-memory-linker.d.ts.map +1 -0
- package/dist/memory/cross-memory-linker.js +115 -0
- package/dist/memory/cross-memory-linker.js.map +1 -0
- package/dist/memory/daily-diary.d.ts +30 -0
- package/dist/memory/daily-diary.d.ts.map +1 -0
- package/dist/memory/daily-diary.js +159 -0
- package/dist/memory/daily-diary.js.map +1 -0
- package/dist/memory/embedding-cache.d.ts +32 -0
- package/dist/memory/embedding-cache.d.ts.map +1 -0
- package/dist/memory/embedding-cache.js +76 -0
- package/dist/memory/embedding-cache.js.map +1 -0
- package/dist/memory/embedding-manager.d.ts.map +1 -1
- package/dist/memory/embedding-manager.js +6 -4
- package/dist/memory/embedding-manager.js.map +1 -1
- package/dist/memory/error-learner.d.ts +26 -0
- package/dist/memory/error-learner.d.ts.map +1 -0
- package/dist/memory/error-learner.js +145 -0
- package/dist/memory/error-learner.js.map +1 -0
- package/dist/memory/export-import.js +2 -2
- package/dist/memory/export-import.js.map +1 -1
- package/dist/memory/file-relationships.d.ts +47 -0
- package/dist/memory/file-relationships.d.ts.map +1 -0
- package/dist/memory/file-relationships.js +130 -0
- package/dist/memory/file-relationships.js.map +1 -0
- package/dist/memory/git-memory.d.ts.map +1 -1
- package/dist/memory/git-memory.js +20 -26
- package/dist/memory/git-memory.js.map +1 -1
- package/dist/memory/impact-analyzer.d.ts +16 -0
- package/dist/memory/impact-analyzer.d.ts.map +1 -0
- package/dist/memory/impact-analyzer.js +189 -0
- package/dist/memory/impact-analyzer.js.map +1 -0
- package/dist/memory/instructions-generator.d.ts +30 -0
- package/dist/memory/instructions-generator.d.ts.map +1 -0
- package/dist/memory/instructions-generator.js +117 -0
- package/dist/memory/instructions-generator.js.map +1 -0
- package/dist/memory/learning-rate.js +8 -7
- package/dist/memory/learning-rate.js.map +1 -1
- package/dist/memory/llm-enhancer.d.ts +2 -14
- package/dist/memory/llm-enhancer.d.ts.map +1 -1
- package/dist/memory/llm-enhancer.js +66 -46
- 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 +10 -0
- 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 +20 -14
- 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 +82 -52
- package/dist/memory/memory-decay.js.map +1 -1
- package/dist/memory/memory-export-md.d.ts +12 -0
- package/dist/memory/memory-export-md.d.ts.map +1 -0
- package/dist/memory/memory-export-md.js +188 -0
- package/dist/memory/memory-export-md.js.map +1 -0
- 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 +9 -6
- 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 +12 -3
- 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/mmr-reranker.d.ts +39 -0
- package/dist/memory/mmr-reranker.d.ts.map +1 -0
- package/dist/memory/mmr-reranker.js +115 -0
- package/dist/memory/mmr-reranker.js.map +1 -0
- package/dist/memory/pre-flight.d.ts +24 -0
- package/dist/memory/pre-flight.d.ts.map +1 -0
- package/dist/memory/pre-flight.js +121 -0
- package/dist/memory/pre-flight.js.map +1 -0
- package/dist/memory/preference-learner.d.ts +28 -0
- package/dist/memory/preference-learner.d.ts.map +1 -0
- package/dist/memory/preference-learner.js +144 -0
- package/dist/memory/preference-learner.js.map +1 -0
- package/dist/memory/query-expansion.d.ts +28 -0
- package/dist/memory/query-expansion.d.ts.map +1 -0
- package/dist/memory/query-expansion.js +140 -0
- package/dist/memory/query-expansion.js.map +1 -0
- package/dist/memory/regression-guard.d.ts +35 -0
- package/dist/memory/regression-guard.d.ts.map +1 -0
- package/dist/memory/regression-guard.js +90 -0
- package/dist/memory/regression-guard.js.map +1 -0
- package/dist/memory/resume-work.d.ts +37 -0
- package/dist/memory/resume-work.d.ts.map +1 -0
- package/dist/memory/resume-work.js +141 -0
- package/dist/memory/resume-work.js.map +1 -0
- package/dist/memory/session-tracker.d.ts +2 -0
- package/dist/memory/session-tracker.d.ts.map +1 -1
- package/dist/memory/session-tracker.js +26 -8
- package/dist/memory/session-tracker.js.map +1 -1
- package/dist/memory/soul-manager.d.ts +30 -0
- package/dist/memory/soul-manager.d.ts.map +1 -0
- package/dist/memory/soul-manager.js +171 -0
- package/dist/memory/soul-manager.js.map +1 -0
- package/dist/memory/success-tracker.d.ts +33 -0
- package/dist/memory/success-tracker.d.ts.map +1 -0
- package/dist/memory/success-tracker.js +75 -0
- package/dist/memory/success-tracker.js.map +1 -0
- package/dist/memory/temporal-engine.d.ts.map +1 -1
- package/dist/memory/temporal-engine.js +9 -13
- package/dist/memory/temporal-engine.js.map +1 -1
- package/dist/memory/tool-recommender.d.ts +29 -0
- package/dist/memory/tool-recommender.d.ts.map +1 -0
- package/dist/memory/tool-recommender.js +117 -0
- package/dist/memory/tool-recommender.js.map +1 -0
- package/dist/memory/usage-stats.d.ts +98 -0
- package/dist/memory/usage-stats.d.ts.map +1 -0
- package/dist/memory/usage-stats.js +345 -0
- package/dist/memory/usage-stats.js.map +1 -0
- package/dist/retrieval/hybrid-retriever.d.ts +0 -2
- package/dist/retrieval/hybrid-retriever.d.ts.map +1 -1
- package/dist/retrieval/hybrid-retriever.js +3 -13
- 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 +1 -0
- 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 +33 -45
- 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 +62 -20
- package/dist/security/feature-gate.js.map +1 -1
- package/dist/security/license.js +282 -35
- package/dist/security/license.js.map +1 -1
- package/dist/security/rate-limiter.d.ts +4 -3
- package/dist/security/rate-limiter.d.ts.map +1 -1
- package/dist/security/rate-limiter.js +11 -29
- package/dist/security/rate-limiter.js.map +1 -1
- package/dist/server/dashboard.js +166 -327
- package/dist/server/dashboard.js.map +1 -1
- package/dist/server/mcp-handler.d.ts.map +1 -1
- package/dist/server/mcp-handler.js +1000 -792
- package/dist/server/mcp-handler.js.map +1 -1
- package/dist/utils/extract-tags.d.ts +16 -0
- package/dist/utils/extract-tags.d.ts.map +1 -0
- package/dist/utils/extract-tags.js +40 -0
- package/dist/utils/extract-tags.js.map +1 -0
- package/package.json +18 -8
- package/dist/core/event-bus.d.ts +0 -19
- package/dist/core/event-bus.d.ts.map +0 -1
- package/dist/core/event-bus.js +0 -51
- 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 —
|
|
9
|
+
* Feature Gate — Enforces free/trial/paid limits based on license.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
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
|
-
|
|
17
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 `
|
|
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
|
-
|
|
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":";;
|
|
1
|
+
{"version":3,"file":"feature-gate.js","sourceRoot":"","sources":["../../src/security/feature-gate.ts"],"names":[],"mappings":"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"}
|
package/dist/security/license.js
CHANGED
|
@@ -44,66 +44,313 @@ exports.saveKey = saveKey;
|
|
|
44
44
|
exports.validateKeyFormat = validateKeyFormat;
|
|
45
45
|
exports.verifyOnline = verifyOnline;
|
|
46
46
|
/**
|
|
47
|
-
* License —
|
|
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
|
-
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
140
|
+
cachedLicense = null;
|
|
141
|
+
_initPromise = null;
|
|
142
|
+
return getLicense();
|
|
77
143
|
}
|
|
78
|
-
|
|
79
144
|
function isPro() {
|
|
80
|
-
|
|
145
|
+
const l = getLicense();
|
|
146
|
+
return l.plan === 'PRO' || l.plan === 'TRIAL';
|
|
81
147
|
}
|
|
82
|
-
|
|
83
148
|
function isFree() {
|
|
84
|
-
return
|
|
149
|
+
return getLicense().plan === 'FREE';
|
|
85
150
|
}
|
|
86
|
-
|
|
87
151
|
function isTrial() {
|
|
88
|
-
return
|
|
152
|
+
return getLicense().plan === 'TRIAL';
|
|
89
153
|
}
|
|
90
|
-
|
|
91
154
|
function getTrialStatus() {
|
|
92
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
6
|
-
* - Max
|
|
7
|
-
* - Max
|
|
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,
|
|
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
|
|
6
|
-
* - Max
|
|
7
|
-
* - Max
|
|
8
|
-
* - Max
|
|
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:
|
|
16
|
-
MAX_AUTO_LEARN_PER_SESSION:
|
|
17
|
-
MAX_CALLS_PER_SESSION:
|
|
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: `
|
|
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}/
|
|
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}/
|
|
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
|
-
|
|
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,
|
|
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"}
|