cortex-mcp 1.0.1
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 +54 -0
- package/LICENSE +21 -0
- package/README.md +202 -0
- package/dist/cli/setup.d.ts +12 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +293 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/config/config.d.ts +13 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +33 -0
- package/dist/config/config.js.map +1 -0
- package/dist/core/event-bus.d.ts +19 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +51 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/db/database.d.ts +19 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/database.js +254 -0
- package/dist/db/database.js.map +1 -0
- package/dist/db/event-log.d.ts +28 -0
- package/dist/db/event-log.d.ts.map +1 -0
- package/dist/db/event-log.js +87 -0
- package/dist/db/event-log.js.map +1 -0
- package/dist/db/memory-store.d.ts +65 -0
- package/dist/db/memory-store.d.ts.map +1 -0
- package/dist/db/memory-store.js +370 -0
- package/dist/db/memory-store.js.map +1 -0
- package/dist/embedding-worker.d.ts +3 -0
- package/dist/embedding-worker.d.ts.map +1 -0
- package/dist/embedding-worker.js +94 -0
- package/dist/embedding-worker.js.map +1 -0
- package/dist/hooks/cortex-run.d.ts +15 -0
- package/dist/hooks/cortex-run.d.ts.map +1 -0
- package/dist/hooks/cortex-run.js +148 -0
- package/dist/hooks/cortex-run.js.map +1 -0
- package/dist/hooks/git-capture.d.ts +21 -0
- package/dist/hooks/git-capture.d.ts.map +1 -0
- package/dist/hooks/git-capture.js +178 -0
- package/dist/hooks/git-capture.js.map +1 -0
- package/dist/hooks/git-hooks.d.ts +12 -0
- package/dist/hooks/git-hooks.d.ts.map +1 -0
- package/dist/hooks/git-hooks.js +130 -0
- package/dist/hooks/git-hooks.js.map +1 -0
- package/dist/mcp-stdio.d.ts +10 -0
- package/dist/mcp-stdio.d.ts.map +1 -0
- package/dist/mcp-stdio.js +247 -0
- package/dist/mcp-stdio.js.map +1 -0
- package/dist/memory/anticipation-engine.d.ts +19 -0
- package/dist/memory/anticipation-engine.d.ts.map +1 -0
- package/dist/memory/anticipation-engine.js +76 -0
- package/dist/memory/anticipation-engine.js.map +1 -0
- package/dist/memory/attention-ranker.d.ts +19 -0
- package/dist/memory/attention-ranker.d.ts.map +1 -0
- package/dist/memory/attention-ranker.js +97 -0
- package/dist/memory/attention-ranker.js.map +1 -0
- package/dist/memory/auto-learner.d.ts +20 -0
- package/dist/memory/auto-learner.d.ts.map +1 -0
- package/dist/memory/auto-learner.js +179 -0
- package/dist/memory/auto-learner.js.map +1 -0
- package/dist/memory/confidence-decay.d.ts +22 -0
- package/dist/memory/confidence-decay.d.ts.map +1 -0
- package/dist/memory/confidence-decay.js +54 -0
- package/dist/memory/confidence-decay.js.map +1 -0
- package/dist/memory/embedding-manager.d.ts +5 -0
- package/dist/memory/embedding-manager.d.ts.map +1 -0
- package/dist/memory/embedding-manager.js +118 -0
- package/dist/memory/embedding-manager.js.map +1 -0
- package/dist/memory/export-import.d.ts +49 -0
- package/dist/memory/export-import.d.ts.map +1 -0
- package/dist/memory/export-import.js +131 -0
- package/dist/memory/export-import.js.map +1 -0
- package/dist/memory/git-memory.d.ts +15 -0
- package/dist/memory/git-memory.d.ts.map +1 -0
- package/dist/memory/git-memory.js +178 -0
- package/dist/memory/git-memory.js.map +1 -0
- package/dist/memory/learning-rate.d.ts +24 -0
- package/dist/memory/learning-rate.d.ts.map +1 -0
- package/dist/memory/learning-rate.js +95 -0
- package/dist/memory/learning-rate.js.map +1 -0
- package/dist/memory/llm-enhancer.d.ts +54 -0
- package/dist/memory/llm-enhancer.d.ts.map +1 -0
- package/dist/memory/llm-enhancer.js +270 -0
- package/dist/memory/llm-enhancer.js.map +1 -0
- package/dist/memory/memory-cache.d.ts +5 -0
- package/dist/memory/memory-cache.d.ts.map +1 -0
- package/dist/memory/memory-cache.js +37 -0
- package/dist/memory/memory-cache.js.map +1 -0
- package/dist/memory/memory-consolidator.d.ts +14 -0
- package/dist/memory/memory-consolidator.d.ts.map +1 -0
- package/dist/memory/memory-consolidator.js +156 -0
- package/dist/memory/memory-consolidator.js.map +1 -0
- package/dist/memory/memory-decay.d.ts +10 -0
- package/dist/memory/memory-decay.d.ts.map +1 -0
- package/dist/memory/memory-decay.js +79 -0
- package/dist/memory/memory-decay.js.map +1 -0
- package/dist/memory/memory-quality.d.ts +37 -0
- package/dist/memory/memory-quality.d.ts.map +1 -0
- package/dist/memory/memory-quality.js +203 -0
- package/dist/memory/memory-quality.js.map +1 -0
- package/dist/memory/memory-ranker.d.ts +14 -0
- package/dist/memory/memory-ranker.d.ts.map +1 -0
- package/dist/memory/memory-ranker.js +68 -0
- package/dist/memory/memory-ranker.js.map +1 -0
- package/dist/memory/meta-memory.d.ts +11 -0
- package/dist/memory/meta-memory.d.ts.map +1 -0
- package/dist/memory/meta-memory.js +141 -0
- package/dist/memory/meta-memory.js.map +1 -0
- package/dist/memory/session-tracker.d.ts +39 -0
- package/dist/memory/session-tracker.d.ts.map +1 -0
- package/dist/memory/session-tracker.js +127 -0
- package/dist/memory/session-tracker.js.map +1 -0
- package/dist/memory/temporal-engine.d.ts +25 -0
- package/dist/memory/temporal-engine.d.ts.map +1 -0
- package/dist/memory/temporal-engine.js +106 -0
- package/dist/memory/temporal-engine.js.map +1 -0
- package/dist/retrieval/hybrid-retriever.d.ts +23 -0
- package/dist/retrieval/hybrid-retriever.d.ts.map +1 -0
- package/dist/retrieval/hybrid-retriever.js +120 -0
- package/dist/retrieval/hybrid-retriever.js.map +1 -0
- package/dist/scanners/architecture-graph.d.ts +30 -0
- package/dist/scanners/architecture-graph.d.ts.map +1 -0
- package/dist/scanners/architecture-graph.js +315 -0
- package/dist/scanners/architecture-graph.js.map +1 -0
- package/dist/scanners/code-verifier.d.ts +70 -0
- package/dist/scanners/code-verifier.d.ts.map +1 -0
- package/dist/scanners/code-verifier.js +374 -0
- package/dist/scanners/code-verifier.js.map +1 -0
- package/dist/scanners/context-builder.d.ts +19 -0
- package/dist/scanners/context-builder.d.ts.map +1 -0
- package/dist/scanners/context-builder.js +102 -0
- package/dist/scanners/context-builder.js.map +1 -0
- package/dist/scanners/export-map.d.ts +22 -0
- package/dist/scanners/export-map.d.ts.map +1 -0
- package/dist/scanners/export-map.js +249 -0
- package/dist/scanners/export-map.js.map +1 -0
- package/dist/scanners/file-verifier.d.ts +22 -0
- package/dist/scanners/file-verifier.d.ts.map +1 -0
- package/dist/scanners/file-verifier.js +140 -0
- package/dist/scanners/file-verifier.js.map +1 -0
- package/dist/scanners/project-scanner.d.ts +31 -0
- package/dist/scanners/project-scanner.d.ts.map +1 -0
- package/dist/scanners/project-scanner.js +398 -0
- package/dist/scanners/project-scanner.js.map +1 -0
- package/dist/security/encryption.d.ts +15 -0
- package/dist/security/encryption.d.ts.map +1 -0
- package/dist/security/encryption.js +116 -0
- package/dist/security/encryption.js.map +1 -0
- package/dist/security/feature-gate.d.ts +30 -0
- package/dist/security/feature-gate.d.ts.map +1 -0
- package/dist/security/feature-gate.js +91 -0
- package/dist/security/feature-gate.js.map +1 -0
- package/dist/security/license.d.ts +24 -0
- package/dist/security/license.d.ts.map +1 -0
- package/dist/security/license.js +168 -0
- package/dist/security/license.js.map +1 -0
- package/dist/security/rate-limiter.d.ts +20 -0
- package/dist/security/rate-limiter.d.ts.map +1 -0
- package/dist/security/rate-limiter.js +60 -0
- package/dist/security/rate-limiter.js.map +1 -0
- package/dist/server/dashboard.d.ts +3 -0
- package/dist/server/dashboard.d.ts.map +1 -0
- package/dist/server/dashboard.js +258 -0
- package/dist/server/dashboard.js.map +1 -0
- package/dist/server/mcp-handler.d.ts +12 -0
- package/dist/server/mcp-handler.d.ts.map +1 -0
- package/dist/server/mcp-handler.js +1392 -0
- package/dist/server/mcp-handler.js.map +1 -0
- package/dist/strategies/embedders/local-minilm.d.ts +35 -0
- package/dist/strategies/embedders/local-minilm.d.ts.map +1 -0
- package/dist/strategies/embedders/local-minilm.js +176 -0
- package/dist/strategies/embedders/local-minilm.js.map +1 -0
- package/dist/types.d.ts +207 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +83 -0
- package/dist/types.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cortex-run.js","sourceRoot":"","sources":["../../src/hooks/cortex-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Cortex Git Capture — Auto-stores git commits as memories.
|
|
4
|
+
*
|
|
5
|
+
* Called by the post-commit git hook after every commit.
|
|
6
|
+
* Reads the latest commit info and stores it as a memory
|
|
7
|
+
* so the AI remembers what code changes were made and why.
|
|
8
|
+
*
|
|
9
|
+
* IMPORTANT: This script must be FAST (<500ms) since it runs
|
|
10
|
+
* in a git hook. It uses direct SQLite inserts instead of the
|
|
11
|
+
* full CognitiveDatabase/MemoryStore classes.
|
|
12
|
+
*
|
|
13
|
+
* Usage (automatic via git hook):
|
|
14
|
+
* .git/hooks/post-commit → calls this script
|
|
15
|
+
*
|
|
16
|
+
* Usage (manual):
|
|
17
|
+
* cortex-capture
|
|
18
|
+
* node dist/hooks/git-capture.js
|
|
19
|
+
*/
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=git-capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-capture.d.ts","sourceRoot":"","sources":["../../src/hooks/git-capture.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Cortex Git Capture — Auto-stores git commits as memories.
|
|
5
|
+
*
|
|
6
|
+
* Called by the post-commit git hook after every commit.
|
|
7
|
+
* Reads the latest commit info and stores it as a memory
|
|
8
|
+
* so the AI remembers what code changes were made and why.
|
|
9
|
+
*
|
|
10
|
+
* IMPORTANT: This script must be FAST (<500ms) since it runs
|
|
11
|
+
* in a git hook. It uses direct SQLite inserts instead of the
|
|
12
|
+
* full CognitiveDatabase/MemoryStore classes.
|
|
13
|
+
*
|
|
14
|
+
* Usage (automatic via git hook):
|
|
15
|
+
* .git/hooks/post-commit → calls this script
|
|
16
|
+
*
|
|
17
|
+
* Usage (manual):
|
|
18
|
+
* cortex-capture
|
|
19
|
+
* node dist/hooks/git-capture.js
|
|
20
|
+
*/
|
|
21
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
24
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
25
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
26
|
+
}
|
|
27
|
+
Object.defineProperty(o, k2, desc);
|
|
28
|
+
}) : (function(o, m, k, k2) {
|
|
29
|
+
if (k2 === undefined) k2 = k;
|
|
30
|
+
o[k2] = m[k];
|
|
31
|
+
}));
|
|
32
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
33
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
34
|
+
}) : function(o, v) {
|
|
35
|
+
o["default"] = v;
|
|
36
|
+
});
|
|
37
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
38
|
+
var ownKeys = function(o) {
|
|
39
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
40
|
+
var ar = [];
|
|
41
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
42
|
+
return ar;
|
|
43
|
+
};
|
|
44
|
+
return ownKeys(o);
|
|
45
|
+
};
|
|
46
|
+
return function (mod) {
|
|
47
|
+
if (mod && mod.__esModule) return mod;
|
|
48
|
+
var result = {};
|
|
49
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
50
|
+
__setModuleDefault(result, mod);
|
|
51
|
+
return result;
|
|
52
|
+
};
|
|
53
|
+
})();
|
|
54
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
|
+
const child_process_1 = require("child_process");
|
|
56
|
+
const path = __importStar(require("path"));
|
|
57
|
+
const fs = __importStar(require("fs"));
|
|
58
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
59
|
+
function gitCmd(cmd) {
|
|
60
|
+
try {
|
|
61
|
+
return (0, child_process_1.execSync)(cmd, { encoding: 'utf-8', timeout: 5000 }).trim();
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return '';
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function generateId() {
|
|
68
|
+
const timestamp = Date.now().toString(36);
|
|
69
|
+
const random = Math.random().toString(36).slice(2, 10);
|
|
70
|
+
return `gc_${timestamp}_${random}`;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Auto-classify commit into a memory type based on commit message.
|
|
74
|
+
*/
|
|
75
|
+
function classifyCommit(message) {
|
|
76
|
+
const lower = message.toLowerCase();
|
|
77
|
+
if (/\b(fix|bug|patch|hotfix|resolve|repair|correct|issue)\b/.test(lower))
|
|
78
|
+
return 'BUG_FIX';
|
|
79
|
+
if (/\b(refactor|clean|rename|restructure|reorganize|lint|format|style|convention)\b/.test(lower))
|
|
80
|
+
return 'CONVENTION';
|
|
81
|
+
if (/\b(feat|add|implement|create|new|introduce|support|enable|integrate)\b/.test(lower))
|
|
82
|
+
return 'DECISION';
|
|
83
|
+
if (/\b(doc|readme|comment|explain|note|changelog)\b/.test(lower))
|
|
84
|
+
return 'INSIGHT';
|
|
85
|
+
if (/\b(test|spec|coverage|assert|verify)\b/.test(lower))
|
|
86
|
+
return 'CONVENTION';
|
|
87
|
+
if (/\b(upgrade|downgrade|bump|deps?|dependency|package)\b/.test(lower))
|
|
88
|
+
return 'DECISION';
|
|
89
|
+
if (/\b(revert|rollback|undo)\b/.test(lower))
|
|
90
|
+
return 'BUG_FIX';
|
|
91
|
+
if (/\b(perf|optimize|speed|cache)\b/.test(lower))
|
|
92
|
+
return 'INSIGHT';
|
|
93
|
+
if (/\b(security|auth|encrypt|permission|vulnerability)\b/.test(lower))
|
|
94
|
+
return 'BUG_FIX';
|
|
95
|
+
return 'DECISION';
|
|
96
|
+
}
|
|
97
|
+
// ─── Main ─────────────────────────────────────────────────────────────────────
|
|
98
|
+
function main() {
|
|
99
|
+
// 1. Find git root
|
|
100
|
+
const workspaceRoot = gitCmd('git rev-parse --show-toplevel');
|
|
101
|
+
if (!workspaceRoot)
|
|
102
|
+
process.exit(0);
|
|
103
|
+
// 2. Check Cortex is initialized
|
|
104
|
+
const dataDir = path.join(workspaceRoot, '.ai', 'brain-data');
|
|
105
|
+
const dbPath = path.join(dataDir, 'cortex.db');
|
|
106
|
+
if (!fs.existsSync(dbPath))
|
|
107
|
+
process.exit(0);
|
|
108
|
+
// 3. Read commit info
|
|
109
|
+
const subject = gitCmd('git log -1 --pretty=%s');
|
|
110
|
+
if (!subject || subject.startsWith('Merge '))
|
|
111
|
+
process.exit(0);
|
|
112
|
+
const hash = gitCmd('git log -1 --pretty=%H');
|
|
113
|
+
const shortHash = hash.slice(0, 8);
|
|
114
|
+
const body = gitCmd('git log -1 --pretty=%b');
|
|
115
|
+
const filesRaw = gitCmd('git log -1 --name-only --pretty=');
|
|
116
|
+
const files = filesRaw ? filesRaw.split('\n').filter(Boolean) : [];
|
|
117
|
+
// Get stats
|
|
118
|
+
const statLine = gitCmd('git log -1 --pretty= --shortstat');
|
|
119
|
+
const insMatch = statLine.match(/(\d+) insertion/);
|
|
120
|
+
const delMatch = statLine.match(/(\d+) deletion/);
|
|
121
|
+
const insertions = insMatch ? insMatch[1] : '0';
|
|
122
|
+
const deletions = delMatch ? delMatch[1] : '0';
|
|
123
|
+
// 4. Build memory fields
|
|
124
|
+
const type = classifyCommit(subject);
|
|
125
|
+
const id = generateId();
|
|
126
|
+
let intent = subject;
|
|
127
|
+
if (files.length <= 3 && files.length > 0) {
|
|
128
|
+
intent += ` (in ${files.map(f => path.basename(f)).join(', ')})`;
|
|
129
|
+
}
|
|
130
|
+
else if (files.length > 3) {
|
|
131
|
+
intent += ` (${files.length} files)`;
|
|
132
|
+
}
|
|
133
|
+
let action = `[${shortHash}] +${insertions}/-${deletions} in ${files.length} file(s)`;
|
|
134
|
+
if (body)
|
|
135
|
+
action = body.slice(0, 200) + ' | ' + action;
|
|
136
|
+
const tags = ['git-commit', shortHash];
|
|
137
|
+
// Add top-level dirs
|
|
138
|
+
const dirs = new Set();
|
|
139
|
+
for (const f of files) {
|
|
140
|
+
const parts = f.split('/');
|
|
141
|
+
if (parts.length > 1)
|
|
142
|
+
dirs.add(parts[0]);
|
|
143
|
+
}
|
|
144
|
+
for (const d of dirs)
|
|
145
|
+
tags.push(d);
|
|
146
|
+
const relatedFiles = files.map(f => path.join(workspaceRoot, f));
|
|
147
|
+
const now = Date.now();
|
|
148
|
+
// 5. Direct SQLite insert (lightweight, no class init overhead)
|
|
149
|
+
try {
|
|
150
|
+
const Database = require('better-sqlite3');
|
|
151
|
+
const db = new Database(dbPath);
|
|
152
|
+
db.pragma('journal_mode = WAL');
|
|
153
|
+
// Check if already captured
|
|
154
|
+
const existing = db.prepare(`SELECT id FROM memory_units WHERE tags LIKE ? AND is_active = 1`).get(`%${shortHash}%`);
|
|
155
|
+
if (!existing) {
|
|
156
|
+
db.prepare(`
|
|
157
|
+
INSERT INTO memory_units (id, type, intent, action, reason, related_files, tags, timestamp, confidence, importance, is_active)
|
|
158
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1)
|
|
159
|
+
`).run(id, type, intent, action, `Auto-captured from git commit ${shortHash}`, JSON.stringify(relatedFiles), JSON.stringify(tags), now, 0.6, 0.5);
|
|
160
|
+
// Also insert into FTS index if it exists
|
|
161
|
+
try {
|
|
162
|
+
db.prepare(`INSERT INTO memory_fts (rowid, intent, action, tags) VALUES (
|
|
163
|
+
(SELECT rowid FROM memory_units WHERE id = ?), ?, ?, ?
|
|
164
|
+
)`).run(id, intent, action, tags.join(' '));
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// FTS table might not exist yet, that's OK
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
db.close();
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Database issues — fail silently, never block git
|
|
174
|
+
process.exit(0);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
main();
|
|
178
|
+
//# sourceMappingURL=git-capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-capture.js","sourceRoot":"","sources":["../../src/hooks/git-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Cortex Git Hooks — Captures branch switches and merges.
|
|
4
|
+
*
|
|
5
|
+
* Git hooks captured:
|
|
6
|
+
* post-checkout → remembers branch switches
|
|
7
|
+
* post-merge → remembers merges
|
|
8
|
+
*
|
|
9
|
+
* Usage: called automatically by git hooks installed via cortex-setup
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=git-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-hooks.d.ts","sourceRoot":"","sources":["../../src/hooks/git-hooks.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Cortex Git Hooks — Captures branch switches and merges.
|
|
5
|
+
*
|
|
6
|
+
* Git hooks captured:
|
|
7
|
+
* post-checkout → remembers branch switches
|
|
8
|
+
* post-merge → remembers merges
|
|
9
|
+
*
|
|
10
|
+
* Usage: called automatically by git hooks installed via cortex-setup
|
|
11
|
+
*/
|
|
12
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
+
}
|
|
18
|
+
Object.defineProperty(o, k2, desc);
|
|
19
|
+
}) : (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
o[k2] = m[k];
|
|
22
|
+
}));
|
|
23
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
+
}) : function(o, v) {
|
|
26
|
+
o["default"] = v;
|
|
27
|
+
});
|
|
28
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
29
|
+
var ownKeys = function(o) {
|
|
30
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
31
|
+
var ar = [];
|
|
32
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
33
|
+
return ar;
|
|
34
|
+
};
|
|
35
|
+
return ownKeys(o);
|
|
36
|
+
};
|
|
37
|
+
return function (mod) {
|
|
38
|
+
if (mod && mod.__esModule) return mod;
|
|
39
|
+
var result = {};
|
|
40
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
41
|
+
__setModuleDefault(result, mod);
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
const child_process_1 = require("child_process");
|
|
47
|
+
const path = __importStar(require("path"));
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
function gitCmd(cmd) {
|
|
50
|
+
try {
|
|
51
|
+
return (0, child_process_1.execSync)(cmd, { encoding: 'utf-8', timeout: 5000 }).trim();
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return '';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function generateId() {
|
|
58
|
+
return `gh_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;
|
|
59
|
+
}
|
|
60
|
+
function main() {
|
|
61
|
+
const hookType = process.argv[2] || ''; // 'checkout' or 'merge'
|
|
62
|
+
// Find workspace root
|
|
63
|
+
const workspaceRoot = gitCmd('git rev-parse --show-toplevel');
|
|
64
|
+
if (!workspaceRoot)
|
|
65
|
+
process.exit(0);
|
|
66
|
+
// Check DB exists
|
|
67
|
+
const dbPath = path.join(workspaceRoot, '.ai', 'brain-data', 'cortex.db');
|
|
68
|
+
if (!fs.existsSync(dbPath))
|
|
69
|
+
process.exit(0);
|
|
70
|
+
let type = 'INSIGHT';
|
|
71
|
+
let intent = '';
|
|
72
|
+
let action = '';
|
|
73
|
+
let tags = ['git'];
|
|
74
|
+
if (hookType === 'checkout') {
|
|
75
|
+
// post-checkout: $3 $4 $5 = prev_head, new_head, is_branch_checkout
|
|
76
|
+
const prevRef = process.argv[3] || '';
|
|
77
|
+
const newRef = process.argv[4] || '';
|
|
78
|
+
const isBranch = process.argv[5] === '1';
|
|
79
|
+
if (!isBranch)
|
|
80
|
+
process.exit(0); // Skip file checkouts
|
|
81
|
+
const branchName = gitCmd('git rev-parse --abbrev-ref HEAD');
|
|
82
|
+
if (!branchName || branchName === 'HEAD')
|
|
83
|
+
process.exit(0);
|
|
84
|
+
type = 'INSIGHT';
|
|
85
|
+
intent = `Switched to branch: ${branchName}`;
|
|
86
|
+
action = `Branch checkout from ${prevRef.slice(0, 8)} to ${newRef.slice(0, 8)}`;
|
|
87
|
+
tags = ['git', 'branch-switch', branchName];
|
|
88
|
+
// Add context based on branch name
|
|
89
|
+
if (/fix|bug|hotfix/i.test(branchName))
|
|
90
|
+
tags.push('bugfix');
|
|
91
|
+
if (/feat|feature/i.test(branchName))
|
|
92
|
+
tags.push('feature');
|
|
93
|
+
if (/release|deploy/i.test(branchName))
|
|
94
|
+
tags.push('release');
|
|
95
|
+
}
|
|
96
|
+
else if (hookType === 'merge') {
|
|
97
|
+
// post-merge: $3 = is_squash_merge
|
|
98
|
+
const currentBranch = gitCmd('git rev-parse --abbrev-ref HEAD');
|
|
99
|
+
const mergeCommit = gitCmd('git log -1 --pretty=%s');
|
|
100
|
+
type = 'DECISION';
|
|
101
|
+
intent = `Merged into ${currentBranch}: ${mergeCommit}`;
|
|
102
|
+
action = `Merge completed on branch ${currentBranch}`;
|
|
103
|
+
tags = ['git', 'merge', currentBranch];
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
process.exit(0);
|
|
107
|
+
}
|
|
108
|
+
if (!intent)
|
|
109
|
+
process.exit(0);
|
|
110
|
+
// Store in database
|
|
111
|
+
try {
|
|
112
|
+
const Database = require('better-sqlite3');
|
|
113
|
+
const db = new Database(dbPath);
|
|
114
|
+
db.pragma('journal_mode = WAL');
|
|
115
|
+
// Check dedup
|
|
116
|
+
const existing = db.prepare(`SELECT id FROM memory_units WHERE intent = ? AND is_active = 1`).get(intent);
|
|
117
|
+
if (!existing) {
|
|
118
|
+
db.prepare(`
|
|
119
|
+
INSERT INTO memory_units (id, type, intent, action, reason, tags, timestamp, confidence, importance, is_active)
|
|
120
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 1)
|
|
121
|
+
`).run(generateId(), type, intent, action, `Auto-captured from git ${hookType}`, JSON.stringify(tags), Date.now(), 0.5, 0.4);
|
|
122
|
+
}
|
|
123
|
+
db.close();
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
process.exit(0);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
main();
|
|
130
|
+
//# sourceMappingURL=git-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-hooks.js","sourceRoot":"","sources":["../../src/hooks/git-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Cortex MCP — stdio transport for Antigravity / Gemini integration.
|
|
4
|
+
*
|
|
5
|
+
* CRITICAL: In stdio mode, stdout is ONLY for JSON-RPC messages.
|
|
6
|
+
* All logging MUST go to stderr. We override console.log/warn/error
|
|
7
|
+
* BEFORE importing any modules to prevent protocol corruption.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=mcp-stdio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-stdio.d.ts","sourceRoot":"","sources":["../src/mcp-stdio.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Cortex MCP — stdio transport for Antigravity / Gemini integration.
|
|
5
|
+
*
|
|
6
|
+
* CRITICAL: In stdio mode, stdout is ONLY for JSON-RPC messages.
|
|
7
|
+
* All logging MUST go to stderr. We override console.log/warn/error
|
|
8
|
+
* BEFORE importing any modules to prevent protocol corruption.
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
// === MUST BE FIRST: Redirect ALL console output to stderr ===
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const DEBUG = process.env.DEBUG === '1' || process.env.CORTEX_DEBUG === '1';
|
|
48
|
+
const debugLogPath = DEBUG ? path.join(process.cwd(), 'cortex.log') : null;
|
|
49
|
+
function logToFile(msg) {
|
|
50
|
+
if (!debugLogPath)
|
|
51
|
+
return;
|
|
52
|
+
try {
|
|
53
|
+
const timestamp = new Date().toISOString();
|
|
54
|
+
fs.appendFileSync(debugLogPath, `[${timestamp}] ${msg}\n`);
|
|
55
|
+
}
|
|
56
|
+
catch (e) { /* ignore */ }
|
|
57
|
+
}
|
|
58
|
+
console.log = (...args) => {
|
|
59
|
+
const msg = args.join(' ');
|
|
60
|
+
process.stderr.write(msg + '\n');
|
|
61
|
+
logToFile(`INFO: ${msg}`);
|
|
62
|
+
};
|
|
63
|
+
console.warn = (...args) => {
|
|
64
|
+
const msg = args.join(' ');
|
|
65
|
+
process.stderr.write(msg + '\n');
|
|
66
|
+
logToFile(`WARN: ${msg}`);
|
|
67
|
+
};
|
|
68
|
+
console.error = (...args) => {
|
|
69
|
+
const msg = args.join(' ');
|
|
70
|
+
process.stderr.write(msg + '\n');
|
|
71
|
+
logToFile(`ERROR: ${msg}`);
|
|
72
|
+
};
|
|
73
|
+
if (DEBUG) {
|
|
74
|
+
logToFile("=== CORTEX SERVER STARTING ===");
|
|
75
|
+
logToFile(`CWD: ${process.cwd()}`);
|
|
76
|
+
logToFile(`ARGS: ${process.argv.join(' ')}`);
|
|
77
|
+
}
|
|
78
|
+
// --- Crash protection: keep server alive on errors ---
|
|
79
|
+
process.on('uncaughtException', (err) => {
|
|
80
|
+
console.log(`[cortex-mcp] UNCAUGHT EXCEPTION (survived): ${err.message}`);
|
|
81
|
+
console.log(`[cortex-mcp] Stack: ${err.stack}`);
|
|
82
|
+
// Do NOT exit — keep the MCP connection alive
|
|
83
|
+
});
|
|
84
|
+
process.on('unhandledRejection', (reason) => {
|
|
85
|
+
console.log(`[cortex-mcp] UNHANDLED REJECTION (survived): ${reason?.message || reason}`);
|
|
86
|
+
// Do NOT exit — keep the MCP connection alive
|
|
87
|
+
});
|
|
88
|
+
const readline = __importStar(require("readline"));
|
|
89
|
+
const database_1 = require("./db/database");
|
|
90
|
+
const event_log_1 = require("./db/event-log");
|
|
91
|
+
const memory_store_1 = require("./db/memory-store");
|
|
92
|
+
const mcp_handler_1 = require("./server/mcp-handler");
|
|
93
|
+
const embedding_manager_1 = require("./memory/embedding-manager");
|
|
94
|
+
const memory_decay_1 = require("./memory/memory-decay");
|
|
95
|
+
// ─── CLI Routing ─────────────────────────────────────────────────────────────
|
|
96
|
+
// Handle subcommands BEFORE starting the MCP server
|
|
97
|
+
const firstArg = process.argv[2];
|
|
98
|
+
if (firstArg === 'setup') {
|
|
99
|
+
// Route to setup CLI
|
|
100
|
+
const setupPath = path.join(__dirname, 'cli', 'setup.js');
|
|
101
|
+
process.argv.splice(2, 1); // Remove 'setup' so setup.ts sees clean args
|
|
102
|
+
require(setupPath);
|
|
103
|
+
// Don't continue — setup runs and exits
|
|
104
|
+
}
|
|
105
|
+
else if (firstArg === '--version' || firstArg === '-v') {
|
|
106
|
+
const pkg = require(path.join(__dirname, '..', 'package.json'));
|
|
107
|
+
process.stderr.write(`cortex-mcp v${pkg.version}\n`);
|
|
108
|
+
process.exit(0);
|
|
109
|
+
}
|
|
110
|
+
else if (firstArg === '--help' || firstArg === '-h' || firstArg === 'help') {
|
|
111
|
+
process.stderr.write(`
|
|
112
|
+
Cortex MCP Server — Persistent memory for AI coding assistants
|
|
113
|
+
|
|
114
|
+
USAGE:
|
|
115
|
+
npx @cortex-mcp/server Start MCP server (used by AI clients)
|
|
116
|
+
npx @cortex-mcp/server setup Auto-configure your AI client
|
|
117
|
+
npx @cortex-mcp/server --version Show version
|
|
118
|
+
npx @cortex-mcp/server --help Show this help
|
|
119
|
+
|
|
120
|
+
COMPANION TOOLS (installed automatically):
|
|
121
|
+
cortex-setup Configure AI client + git hooks
|
|
122
|
+
cortex-capture Capture git commits as memories
|
|
123
|
+
cortex-hooks <checkout|merge> Capture branch/merge events
|
|
124
|
+
cortex-run <command> Run any command and capture errors
|
|
125
|
+
|
|
126
|
+
ENVIRONMENT VARIABLES:
|
|
127
|
+
CORTEX_DEBUG=1 Enable file logging (cortex.log)
|
|
128
|
+
CORTEX_PORT=4000 Custom dashboard port (default: 3456)
|
|
129
|
+
OPENAI_API_KEY=sk-... Enable LLM-enhanced classification
|
|
130
|
+
ANTHROPIC_API_KEY=sk-ant-... Alternative LLM provider
|
|
131
|
+
CORTEX_LLM_BASE_URL=http://... Custom LLM endpoint (Ollama, etc.)
|
|
132
|
+
|
|
133
|
+
SUPPORTED AI CLIENTS:
|
|
134
|
+
Antigravity, Claude Desktop, Cursor, GitHub Copilot, Windsurf, Zed
|
|
135
|
+
Also works with: Claude Code (terminal), any MCP-compatible client
|
|
136
|
+
|
|
137
|
+
DOCS: https://github.com/cortex-mcp/server
|
|
138
|
+
`);
|
|
139
|
+
process.exit(0);
|
|
140
|
+
}
|
|
141
|
+
// Determine data directory — use workspace if provided, else cwd
|
|
142
|
+
// Skip arg if it looks like a flag (starts with -)
|
|
143
|
+
const workspaceRoot = (firstArg && !firstArg.startsWith('-')) ? firstArg : process.cwd();
|
|
144
|
+
const dataDir = path.join(workspaceRoot, '.ai', 'brain-data');
|
|
145
|
+
// Initialize database (wrapped to catch lock errors)
|
|
146
|
+
let database;
|
|
147
|
+
let eventLog;
|
|
148
|
+
let memoryStore;
|
|
149
|
+
let handleMCPRequest;
|
|
150
|
+
try {
|
|
151
|
+
// Initialize database and memory store (console.log now goes to stderr)
|
|
152
|
+
database = new database_1.CognitiveDatabase(dataDir);
|
|
153
|
+
eventLog = new event_log_1.EventLog(database);
|
|
154
|
+
memoryStore = new memory_store_1.MemoryStore(database);
|
|
155
|
+
// Start embedding worker for vector search
|
|
156
|
+
(0, embedding_manager_1.startEmbeddingWorker)();
|
|
157
|
+
// Create MCP handler (reuses all existing logic)
|
|
158
|
+
const handler = (0, mcp_handler_1.createMCPHandler)(memoryStore, eventLog, workspaceRoot);
|
|
159
|
+
handleMCPRequest = handler ? handler.handleMCPRequest : null;
|
|
160
|
+
console.log(`[cortex-mcp] Started with ${memoryStore.activeCount()} memories from ${dataDir}`);
|
|
161
|
+
// Run memory decay on startup, then every 6 hours
|
|
162
|
+
(0, memory_decay_1.cleanupMemories)(memoryStore);
|
|
163
|
+
setInterval(() => (0, memory_decay_1.cleanupMemories)(memoryStore), 6 * 60 * 60 * 1000);
|
|
164
|
+
// Auto-scan project on first run (0 memories = brand new install)
|
|
165
|
+
if (memoryStore.activeCount() === 0) {
|
|
166
|
+
try {
|
|
167
|
+
const scanner = new (require('./scanners/project-scanner').ProjectScanner)(memoryStore, workspaceRoot);
|
|
168
|
+
scanner.scan().then((count) => {
|
|
169
|
+
if (count > 0)
|
|
170
|
+
console.log(`[cortex-mcp] Auto-scanned project: ${count} memories created`);
|
|
171
|
+
}).catch(() => { });
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
console.log(`[cortex-mcp] Auto-scan skipped: ${err.message}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Start web dashboard (non-blocking, port 3456)
|
|
178
|
+
try {
|
|
179
|
+
const { startDashboard } = require('./server/dashboard');
|
|
180
|
+
const { CONFIG } = require('./config/config');
|
|
181
|
+
startDashboard(memoryStore);
|
|
182
|
+
const port = process.env.CORTEX_PORT || CONFIG.DASHBOARD_PORT || 3456;
|
|
183
|
+
console.log(`[cortex-mcp] Dashboard: http://localhost:${port}`);
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
console.log(`[cortex-mcp] Dashboard unavailable: ${err.message}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
console.error(`[cortex-mcp] FATAL INIT ERROR: ${err.message}`);
|
|
191
|
+
console.error(`[cortex-mcp] Server running in degraded mode (no DB)`);
|
|
192
|
+
// Fallback: minimal handler that reports error
|
|
193
|
+
handleMCPRequest = async (rpc) => ({
|
|
194
|
+
jsonrpc: '2.0', id: rpc.id,
|
|
195
|
+
error: { code: -32603, message: `Server Init Failed: ${err.message}` }
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
// --- stdio JSON-RPC transport ---
|
|
199
|
+
// Read line-delimited JSON from stdin, write responses to stdout
|
|
200
|
+
const rl = readline.createInterface({
|
|
201
|
+
input: process.stdin,
|
|
202
|
+
terminal: false,
|
|
203
|
+
});
|
|
204
|
+
rl.on('line', async (line) => {
|
|
205
|
+
if (!line.trim())
|
|
206
|
+
return;
|
|
207
|
+
try {
|
|
208
|
+
const rpc = JSON.parse(line);
|
|
209
|
+
console.log(`[cortex-mcp] ${rpc.method} (id: ${rpc.id})`);
|
|
210
|
+
if (!handleMCPRequest) {
|
|
211
|
+
throw new Error("Handler not initialized");
|
|
212
|
+
}
|
|
213
|
+
const response = await handleMCPRequest(rpc);
|
|
214
|
+
if (response) {
|
|
215
|
+
const json = JSON.stringify(response);
|
|
216
|
+
process.stdout.write(json + '\n');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
console.log(`[cortex-mcp] Error: ${err.message}`);
|
|
221
|
+
const errorResponse = {
|
|
222
|
+
jsonrpc: '2.0',
|
|
223
|
+
error: { code: -32700, message: `Parse error: ${err.message}` },
|
|
224
|
+
id: null,
|
|
225
|
+
};
|
|
226
|
+
process.stdout.write(JSON.stringify(errorResponse) + '\n');
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
rl.on('close', () => {
|
|
230
|
+
console.log('[cortex-mcp] stdin closed, shutting down');
|
|
231
|
+
if (database)
|
|
232
|
+
database.close();
|
|
233
|
+
process.exit(0);
|
|
234
|
+
});
|
|
235
|
+
process.on('SIGTERM', () => {
|
|
236
|
+
console.log('[cortex-mcp] SIGTERM received, shutting down');
|
|
237
|
+
if (database)
|
|
238
|
+
database.close();
|
|
239
|
+
process.exit(0);
|
|
240
|
+
});
|
|
241
|
+
process.on('SIGINT', () => {
|
|
242
|
+
console.log('[cortex-mcp] SIGINT received, shutting down');
|
|
243
|
+
if (database)
|
|
244
|
+
database.close();
|
|
245
|
+
process.exit(0);
|
|
246
|
+
});
|
|
247
|
+
//# sourceMappingURL=mcp-stdio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-stdio.js","sourceRoot":"","sources":["../src/mcp-stdio.ts"],"names":[],"mappings":"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"}
|