@compr/contextengine-mcp 1.9.44
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/LICENSE +21 -0
- package/README.md +200 -0
- package/dist/agents.d.ts +127 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +1162 -0
- package/dist/agents.js.map +1 -0
- package/dist/cache.d.ts +15 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +117 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +227 -0
- package/dist/cli.js.map +1 -0
- package/dist/code-chunker.d.ts +12 -0
- package/dist/code-chunker.d.ts.map +1 -0
- package/dist/code-chunker.js +263 -0
- package/dist/code-chunker.js.map +1 -0
- package/dist/collectors.d.ts +63 -0
- package/dist/collectors.d.ts.map +1 -0
- package/dist/collectors.js +617 -0
- package/dist/collectors.js.map +1 -0
- package/dist/config.d.ts +59 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +213 -0
- package/dist/config.js.map +1 -0
- package/dist/embeddings.d.ts +31 -0
- package/dist/embeddings.d.ts.map +1 -0
- package/dist/embeddings.js +91 -0
- package/dist/embeddings.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +557 -0
- package/dist/index.js.map +1 -0
- package/dist/ingest.d.ts +23 -0
- package/dist/ingest.d.ts.map +1 -0
- package/dist/ingest.js +79 -0
- package/dist/ingest.js.map +1 -0
- package/dist/search.d.ts +11 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +58 -0
- package/dist/search.js.map +1 -0
- package/dist/sessions.d.ts +46 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +143 -0
- package/dist/sessions.js.map +1 -0
- package/dist/test-sessions.d.ts +2 -0
- package/dist/test-sessions.d.ts.map +1 -0
- package/dist/test-sessions.js.map +1 -0
- package/dist/test.d.ts +2 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +52 -0
- package/dist/test.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { readFileSync, readdirSync, statSync } from "fs";
|
|
2
|
+
import { join, extname, basename, relative } from "path";
|
|
3
|
+
/**
|
|
4
|
+
* Code Chunker — parse TS/JS/Python files into function/class/method chunks.
|
|
5
|
+
*
|
|
6
|
+
* Uses regex-based parsing (no AST dependency) to extract:
|
|
7
|
+
* - Functions (regular, arrow, async)
|
|
8
|
+
* - Classes and their methods
|
|
9
|
+
* - Interfaces and type aliases (TS)
|
|
10
|
+
* - Python def/class/async def
|
|
11
|
+
*
|
|
12
|
+
* Each chunk includes the full function body with enough context
|
|
13
|
+
* for semantic search to work well.
|
|
14
|
+
*/
|
|
15
|
+
const CODE_EXTENSIONS = new Set([".ts", ".js", ".mts", ".mjs", ".py"]);
|
|
16
|
+
const SKIP_DIRS = new Set([
|
|
17
|
+
"node_modules", ".git", "dist", "build", "coverage",
|
|
18
|
+
"__pycache__", ".venv", "venv", ".next", ".cache",
|
|
19
|
+
]);
|
|
20
|
+
/**
|
|
21
|
+
* Find the matching closing brace for an opening brace at position `start`.
|
|
22
|
+
*/
|
|
23
|
+
function findClosingBrace(text, start) {
|
|
24
|
+
let depth = 0;
|
|
25
|
+
let inString = null;
|
|
26
|
+
let inTemplate = false;
|
|
27
|
+
for (let i = start; i < text.length; i++) {
|
|
28
|
+
const ch = text[i];
|
|
29
|
+
const prev = i > 0 ? text[i - 1] : "";
|
|
30
|
+
// Skip escaped characters
|
|
31
|
+
if (prev === "\\")
|
|
32
|
+
continue;
|
|
33
|
+
// String tracking
|
|
34
|
+
if (!inString && !inTemplate) {
|
|
35
|
+
if (ch === '"' || ch === "'" || ch === "`") {
|
|
36
|
+
if (ch === "`")
|
|
37
|
+
inTemplate = true;
|
|
38
|
+
else
|
|
39
|
+
inString = ch;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else if (inString && ch === inString && prev !== "\\") {
|
|
44
|
+
inString = null;
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
else if (inTemplate && ch === "`" && prev !== "\\") {
|
|
48
|
+
inTemplate = false;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
continue; // inside string, skip
|
|
53
|
+
}
|
|
54
|
+
if (ch === "{")
|
|
55
|
+
depth++;
|
|
56
|
+
else if (ch === "}") {
|
|
57
|
+
depth--;
|
|
58
|
+
if (depth === 0)
|
|
59
|
+
return i;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return -1; // unmatched
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Parse a TypeScript/JavaScript file into code blocks.
|
|
66
|
+
*/
|
|
67
|
+
function parseTSJS(text) {
|
|
68
|
+
const blocks = [];
|
|
69
|
+
const lines = text.split("\n");
|
|
70
|
+
// Build line-offset map for position → line number conversion
|
|
71
|
+
const lineOffsets = [0];
|
|
72
|
+
for (let i = 0; i < lines.length; i++) {
|
|
73
|
+
lineOffsets.push(lineOffsets[i] + lines[i].length + 1);
|
|
74
|
+
}
|
|
75
|
+
function posToLine(pos) {
|
|
76
|
+
for (let i = 0; i < lineOffsets.length - 1; i++) {
|
|
77
|
+
if (pos < lineOffsets[i + 1])
|
|
78
|
+
return i + 1;
|
|
79
|
+
}
|
|
80
|
+
return lines.length;
|
|
81
|
+
}
|
|
82
|
+
// Patterns for top-level declarations
|
|
83
|
+
const patterns = [
|
|
84
|
+
// export function / async function / function
|
|
85
|
+
{ regex: /(?:export\s+)?(?:async\s+)?function\s+(\w+)/g, kind: "function" },
|
|
86
|
+
// export const name = (...) => (arrow functions)
|
|
87
|
+
{ regex: /(?:export\s+)?(?:const|let|var)\s+(\w+)\s*=\s*(?:async\s*)?\(/g, kind: "function" },
|
|
88
|
+
// export class / class
|
|
89
|
+
{ regex: /(?:export\s+)?(?:abstract\s+)?class\s+(\w+)/g, kind: "class" },
|
|
90
|
+
// export interface
|
|
91
|
+
{ regex: /(?:export\s+)?interface\s+(\w+)/g, kind: "interface" },
|
|
92
|
+
// export type (block types only, not simple aliases)
|
|
93
|
+
{ regex: /(?:export\s+)?type\s+(\w+)\s*=\s*\{/g, kind: "type" },
|
|
94
|
+
];
|
|
95
|
+
for (const { regex, kind } of patterns) {
|
|
96
|
+
let match;
|
|
97
|
+
regex.lastIndex = 0;
|
|
98
|
+
while ((match = regex.exec(text)) !== null) {
|
|
99
|
+
const name = match[1];
|
|
100
|
+
const matchStart = match.index;
|
|
101
|
+
const lineStart = posToLine(matchStart);
|
|
102
|
+
// Find the opening brace after the match
|
|
103
|
+
const braceStart = text.indexOf("{", match.index + match[0].length);
|
|
104
|
+
if (braceStart === -1)
|
|
105
|
+
continue;
|
|
106
|
+
// Check it's not too far (within 200 chars — accounts for type annotations)
|
|
107
|
+
if (braceStart - (match.index + match[0].length) > 200)
|
|
108
|
+
continue;
|
|
109
|
+
const braceEnd = findClosingBrace(text, braceStart);
|
|
110
|
+
if (braceEnd === -1)
|
|
111
|
+
continue;
|
|
112
|
+
const lineEnd = posToLine(braceEnd);
|
|
113
|
+
const content = text.slice(matchStart, braceEnd + 1);
|
|
114
|
+
// Skip tiny blocks (less than 2 lines of real content)
|
|
115
|
+
if (lineEnd - lineStart < 2)
|
|
116
|
+
continue;
|
|
117
|
+
blocks.push({ kind, name, lineStart, lineEnd, content });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Deduplicate overlapping blocks (keep the outer one)
|
|
121
|
+
blocks.sort((a, b) => a.lineStart - b.lineStart);
|
|
122
|
+
const result = [];
|
|
123
|
+
for (const block of blocks) {
|
|
124
|
+
const last = result[result.length - 1];
|
|
125
|
+
if (last && block.lineStart >= last.lineStart && block.lineEnd <= last.lineEnd) {
|
|
126
|
+
// This block is inside the last one — skip (it's a method inside a class)
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
result.push(block);
|
|
130
|
+
}
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
// ---------------------------------------------------------------------------
|
|
134
|
+
// Python parser (regex-based)
|
|
135
|
+
// ---------------------------------------------------------------------------
|
|
136
|
+
/**
|
|
137
|
+
* Parse a Python file into function/class blocks using indentation.
|
|
138
|
+
*/
|
|
139
|
+
function parsePython(text) {
|
|
140
|
+
const blocks = [];
|
|
141
|
+
const lines = text.split("\n");
|
|
142
|
+
for (let i = 0; i < lines.length; i++) {
|
|
143
|
+
const line = lines[i];
|
|
144
|
+
// Match def/async def/class at module level (no leading whitespace)
|
|
145
|
+
const funcMatch = line.match(/^(async\s+)?def\s+(\w+)\s*\(/);
|
|
146
|
+
const classMatch = line.match(/^class\s+(\w+)/);
|
|
147
|
+
if (funcMatch || classMatch) {
|
|
148
|
+
const kind = classMatch ? "class" : "function";
|
|
149
|
+
const name = classMatch ? classMatch[1] : funcMatch[2];
|
|
150
|
+
const lineStart = i + 1; // 1-based
|
|
151
|
+
// Find end of block by indentation
|
|
152
|
+
let lineEnd = i + 1;
|
|
153
|
+
for (let j = i + 1; j < lines.length; j++) {
|
|
154
|
+
const nextLine = lines[j];
|
|
155
|
+
// Empty lines don't end blocks
|
|
156
|
+
if (nextLine.trim() === "") {
|
|
157
|
+
lineEnd = j + 1;
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
// Non-indented non-empty line = end of block
|
|
161
|
+
if (!nextLine.match(/^\s/))
|
|
162
|
+
break;
|
|
163
|
+
lineEnd = j + 1;
|
|
164
|
+
}
|
|
165
|
+
const content = lines.slice(i, lineEnd).join("\n");
|
|
166
|
+
// Skip tiny blocks
|
|
167
|
+
if (lineEnd - lineStart < 2)
|
|
168
|
+
continue;
|
|
169
|
+
blocks.push({ kind, name, lineStart, lineEnd, content });
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return blocks;
|
|
173
|
+
}
|
|
174
|
+
// ---------------------------------------------------------------------------
|
|
175
|
+
// Public API
|
|
176
|
+
// ---------------------------------------------------------------------------
|
|
177
|
+
/**
|
|
178
|
+
* Parse a single code file into Chunks.
|
|
179
|
+
*/
|
|
180
|
+
export function parseCodeFile(filePath, sourceName) {
|
|
181
|
+
const ext = extname(filePath).toLowerCase();
|
|
182
|
+
const text = readFileSync(filePath, "utf-8");
|
|
183
|
+
let blocks;
|
|
184
|
+
if (ext === ".py") {
|
|
185
|
+
blocks = parsePython(text);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
blocks = parseTSJS(text);
|
|
189
|
+
}
|
|
190
|
+
// If no blocks found, create a single chunk for the whole file
|
|
191
|
+
// (but only if it's not too large)
|
|
192
|
+
if (blocks.length === 0) {
|
|
193
|
+
const lines = text.split("\n");
|
|
194
|
+
if (lines.length <= 200 && text.trim().length > 0) {
|
|
195
|
+
return [{
|
|
196
|
+
source: sourceName,
|
|
197
|
+
section: `${basename(filePath)} (entire file)`,
|
|
198
|
+
content: text,
|
|
199
|
+
lineStart: 1,
|
|
200
|
+
lineEnd: lines.length,
|
|
201
|
+
}];
|
|
202
|
+
}
|
|
203
|
+
return [];
|
|
204
|
+
}
|
|
205
|
+
return blocks.map((b) => ({
|
|
206
|
+
source: sourceName,
|
|
207
|
+
section: `${basename(filePath)} > ${b.kind} ${b.name}`,
|
|
208
|
+
content: b.content,
|
|
209
|
+
lineStart: b.lineStart,
|
|
210
|
+
lineEnd: b.lineEnd,
|
|
211
|
+
}));
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Scan a directory for code files and parse them all.
|
|
215
|
+
* Scans recursively but respects SKIP_DIRS.
|
|
216
|
+
* Returns chunks with source set to `projectName/relative/path.ts`.
|
|
217
|
+
*/
|
|
218
|
+
export function scanCodeDir(dirPath, projectName, maxDepth = 3) {
|
|
219
|
+
const allChunks = [];
|
|
220
|
+
function walk(dir, depth) {
|
|
221
|
+
if (depth > maxDepth)
|
|
222
|
+
return;
|
|
223
|
+
let entries;
|
|
224
|
+
try {
|
|
225
|
+
entries = readdirSync(dir);
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
for (const entry of entries) {
|
|
231
|
+
if (entry.startsWith("."))
|
|
232
|
+
continue;
|
|
233
|
+
if (SKIP_DIRS.has(entry))
|
|
234
|
+
continue;
|
|
235
|
+
const full = join(dir, entry);
|
|
236
|
+
try {
|
|
237
|
+
const stat = statSync(full);
|
|
238
|
+
if (stat.isDirectory()) {
|
|
239
|
+
walk(full, depth + 1);
|
|
240
|
+
}
|
|
241
|
+
else if (stat.isFile() && CODE_EXTENSIONS.has(extname(entry).toLowerCase())) {
|
|
242
|
+
// Skip test files, config files, and very large files
|
|
243
|
+
if (entry.includes(".test.") || entry.includes(".spec."))
|
|
244
|
+
continue;
|
|
245
|
+
if (entry === "jest.config.js" || entry === "webpack.config.js")
|
|
246
|
+
continue;
|
|
247
|
+
if (stat.size > 100_000)
|
|
248
|
+
continue; // skip files > 100KB
|
|
249
|
+
const relPath = relative(dirPath, full);
|
|
250
|
+
const sourceName = `${projectName}/${relPath}`;
|
|
251
|
+
const chunks = parseCodeFile(full, sourceName);
|
|
252
|
+
allChunks.push(...chunks);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
walk(dirPath, 0);
|
|
261
|
+
return allChunks;
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=code-chunker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-chunker.js","sourceRoot":"","sources":["../src/code-chunker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Chunk } from "./ingest.js";
|
|
2
|
+
/**
|
|
3
|
+
* Collect recent git history for a project directory.
|
|
4
|
+
* Produces chunks with commit messages, authors, dates — gives AI
|
|
5
|
+
* context about recent changes and development velocity.
|
|
6
|
+
*/
|
|
7
|
+
export declare function collectGitLog(projectDir: string, sourceName: string): Chunk[];
|
|
8
|
+
/**
|
|
9
|
+
* Collect dependency and script info from package.json.
|
|
10
|
+
* Critical for version agent + understanding project capabilities.
|
|
11
|
+
*/
|
|
12
|
+
export declare function collectPackageJson(projectDir: string, sourceName: string): Chunk[];
|
|
13
|
+
/**
|
|
14
|
+
* Collect dependency info from composer.json (Laravel, Symfony, etc.).
|
|
15
|
+
*/
|
|
16
|
+
export declare function collectComposerJson(projectDir: string, sourceName: string): Chunk[];
|
|
17
|
+
/**
|
|
18
|
+
* Collect environment configuration. Passwords/secrets are REDACTED.
|
|
19
|
+
* Gives AI context about database hosts, mail config, app URLs, etc.
|
|
20
|
+
*/
|
|
21
|
+
export declare function collectEnvFile(projectDir: string, sourceName: string): Chunk[];
|
|
22
|
+
/**
|
|
23
|
+
* Collect recent shell history entries.
|
|
24
|
+
* Useful for understanding what the developer has been doing recently.
|
|
25
|
+
* Passwords in history are redacted.
|
|
26
|
+
*/
|
|
27
|
+
export declare function collectShellHistory(sourceName: string): Chunk[];
|
|
28
|
+
/**
|
|
29
|
+
* Collect Docker container info — what's running, ports, images.
|
|
30
|
+
*/
|
|
31
|
+
export declare function collectDocker(sourceName: string): Chunk[];
|
|
32
|
+
/**
|
|
33
|
+
* Collect PM2 process list — what apps are running, ports, status.
|
|
34
|
+
*/
|
|
35
|
+
export declare function collectPM2(sourceName: string): Chunk[];
|
|
36
|
+
/**
|
|
37
|
+
* Collect Nginx site configurations — domains, roots, proxy settings.
|
|
38
|
+
* Reads from common config locations.
|
|
39
|
+
*/
|
|
40
|
+
export declare function collectNginx(sourceName: string): Chunk[];
|
|
41
|
+
/**
|
|
42
|
+
* Collect crontab entries — scheduled tasks and maintenance jobs.
|
|
43
|
+
*/
|
|
44
|
+
export declare function collectCrontab(sourceName: string): Chunk[];
|
|
45
|
+
/**
|
|
46
|
+
* Collect PM2 ecosystem config from project directory.
|
|
47
|
+
*/
|
|
48
|
+
export declare function collectEcosystemConfig(projectDir: string, sourceName: string): Chunk[];
|
|
49
|
+
/**
|
|
50
|
+
* Collect docker-compose.yml for a project — services, ports, volumes.
|
|
51
|
+
*/
|
|
52
|
+
export declare function collectDockerCompose(projectDir: string, sourceName: string): Chunk[];
|
|
53
|
+
/**
|
|
54
|
+
* Collect all operational data for a single project directory.
|
|
55
|
+
* Returns chunks from all available collectors.
|
|
56
|
+
*/
|
|
57
|
+
export declare function collectProjectOps(projectDir: string, sourceName: string): Chunk[];
|
|
58
|
+
/**
|
|
59
|
+
* Collect system-wide operational data (not project-specific).
|
|
60
|
+
* These run once, not per-project.
|
|
61
|
+
*/
|
|
62
|
+
export declare function collectSystemOps(): Chunk[];
|
|
63
|
+
//# sourceMappingURL=collectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectors.d.ts","sourceRoot":"","sources":["../src/collectors.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAoDzC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,EAAE,CAwD7E;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,KAAK,EAAE,CAuET;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,KAAK,EAAE,CAsET;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,KAAK,EAAE,CA4BT;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,EAAE,CAsC/D;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,EAAE,CA2CzD;AAMD;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,EAAE,CAqCtD;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,EAAE,CAyExD;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,EAAE,CAoB1D;AAMD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,KAAK,EAAE,CAwBT;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,KAAK,EAAE,CAgCT;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,KAAK,EAAE,CAWT;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,KAAK,EAAE,CAW1C"}
|