mcp-local-rag 0.7.0 → 0.8.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/README.md +1 -1
- package/dist/bin/ingest.d.ts +53 -0
- package/dist/bin/ingest.d.ts.map +1 -0
- package/dist/bin/ingest.js +283 -0
- package/dist/bin/ingest.js.map +1 -0
- package/dist/bin/install-skills.d.ts.map +1 -1
- package/dist/bin/install-skills.js +16 -17
- package/dist/bin/install-skills.js.map +1 -1
- package/dist/chunker/index.js +1 -5
- package/dist/chunker/index.js.map +1 -1
- package/dist/chunker/semantic-chunker.js +5 -10
- package/dist/chunker/semantic-chunker.js.map +1 -1
- package/dist/chunker/sentence-splitter.js +1 -4
- package/dist/chunker/sentence-splitter.js.map +1 -1
- package/dist/cli-main.js +3 -6
- package/dist/cli-main.js.map +1 -1
- package/dist/embedder/index.js +5 -10
- package/dist/embedder/index.js.map +1 -1
- package/dist/index.js +4 -6
- package/dist/index.js.map +1 -1
- package/dist/parser/html-parser.js +9 -15
- package/dist/parser/html-parser.js.map +1 -1
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +80 -66
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/pdf-filter.d.ts +29 -0
- package/dist/parser/pdf-filter.d.ts.map +1 -1
- package/dist/parser/pdf-filter.js +127 -20
- package/dist/parser/pdf-filter.js.map +1 -1
- package/dist/parser/title-extractor.d.ts +5 -1
- package/dist/parser/title-extractor.d.ts.map +1 -1
- package/dist/parser/title-extractor.js +15 -16
- package/dist/parser/title-extractor.js.map +1 -1
- package/dist/server/error-utils.js +1 -4
- package/dist/server/error-utils.js.map +1 -1
- package/dist/server/index.d.ts +14 -4
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +97 -78
- package/dist/server/index.js.map +1 -1
- package/dist/server/raw-data-utils.js +20 -34
- package/dist/server/raw-data-utils.js.map +1 -1
- package/dist/server/tool-definitions.js +1 -4
- package/dist/server/tool-definitions.js.map +1 -1
- package/dist/server/types.d.ts +2 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +1 -2
- package/dist/server/types.js.map +1 -1
- package/dist/server-main.d.ts +22 -0
- package/dist/server-main.d.ts.map +1 -1
- package/dist/server-main.js +50 -38
- package/dist/server-main.js.map +1 -1
- package/dist/vectordb/index.d.ts.map +1 -1
- package/dist/vectordb/index.js +24 -28
- package/dist/vectordb/index.js.map +1 -1
- package/dist/vectordb/search-filters.js +5 -11
- package/dist/vectordb/search-filters.js.map +1 -1
- package/dist/vectordb/types.js +7 -14
- package/dist/vectordb/types.js.map +1 -1
- package/package.json +13 -13
package/README.md
CHANGED
|
@@ -176,7 +176,7 @@ Keyword boost is applied *after* semantic filtering, so it improves precision wi
|
|
|
176
176
|
|
|
177
177
|
### Details
|
|
178
178
|
|
|
179
|
-
When you ingest a document, the parser extracts text based on file type (PDF via `
|
|
179
|
+
When you ingest a document, the parser extracts text based on file type (PDF via `mupdf`, DOCX via `mammoth`, text files directly).
|
|
180
180
|
|
|
181
181
|
The semantic chunker splits text into sentences, then groups them using embedding similarity. It finds natural topic boundaries where the meaning shifts—keeping related content together instead of cutting at arbitrary character limits. This produces chunks that are coherent units of meaning, typically 500-1000 characters. Markdown code blocks are kept intact—never split mid-block—preserving copy-pastable code in search results.
|
|
182
182
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Local RAG CLI Ingest
|
|
3
|
+
*
|
|
4
|
+
* Ingest documents into the RAG vector database from the command line.
|
|
5
|
+
* Supports single files and directory traversal.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* npx mcp-local-rag ingest <file-or-dir> [options]
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* CLI options for ingest subcommand
|
|
12
|
+
*/
|
|
13
|
+
export interface Options {
|
|
14
|
+
/** Target path (file or directory) */
|
|
15
|
+
target: string | null;
|
|
16
|
+
/** Override DB_PATH env var */
|
|
17
|
+
dbPath: string | null;
|
|
18
|
+
/** Override MODEL_NAME env var */
|
|
19
|
+
modelName: string | null;
|
|
20
|
+
/** Override CACHE_DIR env var */
|
|
21
|
+
cacheDir: string | null;
|
|
22
|
+
/** Override BASE_DIR env var */
|
|
23
|
+
baseDir: string | null;
|
|
24
|
+
/** Override MAX_FILE_SIZE env var (bytes). Default: 104857600 (100MB) */
|
|
25
|
+
maxFileSize: number | null;
|
|
26
|
+
/** Show help */
|
|
27
|
+
help: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Summary of directory ingestion
|
|
31
|
+
*/
|
|
32
|
+
export interface DirectorySummary {
|
|
33
|
+
totalFiles: number;
|
|
34
|
+
successCount: number;
|
|
35
|
+
failureCount: number;
|
|
36
|
+
totalChunks: number;
|
|
37
|
+
elapsedMs: number;
|
|
38
|
+
results: Array<{
|
|
39
|
+
filePath: string;
|
|
40
|
+
chunkCount: number;
|
|
41
|
+
} | {
|
|
42
|
+
filePath: string;
|
|
43
|
+
error: string;
|
|
44
|
+
}>;
|
|
45
|
+
}
|
|
46
|
+
export declare function parseArgs(args: string[]): Options;
|
|
47
|
+
export declare function printHelp(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Run the ingest command with the given arguments
|
|
50
|
+
* @param args - Command line arguments (after "ingest" subcommand)
|
|
51
|
+
*/
|
|
52
|
+
export declare function run(args: string[]): Promise<void>;
|
|
53
|
+
//# sourceMappingURL=ingest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/bin/ingest.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,sCAAsC;IACtC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,kCAAkC;IAClC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,gCAAgC;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,yEAAyE;IACzE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,gBAAgB;IAChB,IAAI,EAAE,OAAO,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC/F;AAMD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAyEjD;AAMD,wBAAgB,SAAS,IAAI,IAAI,CAiChC;AAuDD;;;GAGG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4HvD"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP Local RAG CLI Ingest
|
|
4
|
+
*
|
|
5
|
+
* Ingest documents into the RAG vector database from the command line.
|
|
6
|
+
* Supports single files and directory traversal.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* npx mcp-local-rag ingest <file-or-dir> [options]
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.parseArgs = parseArgs;
|
|
13
|
+
exports.printHelp = printHelp;
|
|
14
|
+
exports.run = run;
|
|
15
|
+
const promises_1 = require("node:fs/promises");
|
|
16
|
+
const node_path_1 = require("node:path");
|
|
17
|
+
const index_js_1 = require("../parser/index.js");
|
|
18
|
+
const index_js_2 = require("../server/index.js");
|
|
19
|
+
// ============================================
|
|
20
|
+
// CLI Argument Parsing
|
|
21
|
+
// ============================================
|
|
22
|
+
function parseArgs(args) {
|
|
23
|
+
const options = {
|
|
24
|
+
target: null,
|
|
25
|
+
dbPath: null,
|
|
26
|
+
modelName: null,
|
|
27
|
+
cacheDir: null,
|
|
28
|
+
baseDir: null,
|
|
29
|
+
maxFileSize: null,
|
|
30
|
+
help: false,
|
|
31
|
+
};
|
|
32
|
+
for (let i = 0; i < args.length; i++) {
|
|
33
|
+
const arg = args[i];
|
|
34
|
+
switch (arg) {
|
|
35
|
+
case '--help':
|
|
36
|
+
case '-h':
|
|
37
|
+
options.help = true;
|
|
38
|
+
break;
|
|
39
|
+
case '--db-path': {
|
|
40
|
+
const value = args[i + 1];
|
|
41
|
+
if (value) {
|
|
42
|
+
options.dbPath = value;
|
|
43
|
+
i++;
|
|
44
|
+
}
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
case '--model-name': {
|
|
48
|
+
const value = args[i + 1];
|
|
49
|
+
if (value) {
|
|
50
|
+
options.modelName = value;
|
|
51
|
+
i++;
|
|
52
|
+
}
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
case '--cache-dir': {
|
|
56
|
+
const value = args[i + 1];
|
|
57
|
+
if (value) {
|
|
58
|
+
options.cacheDir = value;
|
|
59
|
+
i++;
|
|
60
|
+
}
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
case '--base-dir': {
|
|
64
|
+
const value = args[i + 1];
|
|
65
|
+
if (value) {
|
|
66
|
+
options.baseDir = value;
|
|
67
|
+
i++;
|
|
68
|
+
}
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
case '--max-file-size': {
|
|
72
|
+
const value = args[i + 1];
|
|
73
|
+
if (value) {
|
|
74
|
+
options.maxFileSize = Number.parseInt(value, 10);
|
|
75
|
+
i++;
|
|
76
|
+
}
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
default:
|
|
80
|
+
if (arg && !arg.startsWith('-')) {
|
|
81
|
+
options.target = arg;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return options;
|
|
86
|
+
}
|
|
87
|
+
// ============================================
|
|
88
|
+
// Help Message
|
|
89
|
+
// ============================================
|
|
90
|
+
function printHelp() {
|
|
91
|
+
console.log(`
|
|
92
|
+
MCP Local RAG CLI Ingest
|
|
93
|
+
|
|
94
|
+
Usage:
|
|
95
|
+
npx mcp-local-rag ingest <file-or-dir> [options]
|
|
96
|
+
|
|
97
|
+
Options:
|
|
98
|
+
--db-path <path> Path to LanceDB database directory
|
|
99
|
+
(default: DB_PATH env var or ./lancedb/)
|
|
100
|
+
|
|
101
|
+
--model-name <name> Transformers.js model name
|
|
102
|
+
(default: MODEL_NAME env var or Xenova/all-MiniLM-L6-v2)
|
|
103
|
+
|
|
104
|
+
--cache-dir <path> Model cache directory
|
|
105
|
+
(default: CACHE_DIR env var or ./models/)
|
|
106
|
+
|
|
107
|
+
--base-dir <path> Document base directory for path validation
|
|
108
|
+
(default: BASE_DIR env var or parent of target path)
|
|
109
|
+
|
|
110
|
+
--max-file-size <bytes> Maximum file size in bytes
|
|
111
|
+
(default: MAX_FILE_SIZE env var or 104857600 (100MB))
|
|
112
|
+
|
|
113
|
+
--help, -h Show this help message
|
|
114
|
+
|
|
115
|
+
Supported file formats:
|
|
116
|
+
.pdf, .docx, .txt, .md
|
|
117
|
+
|
|
118
|
+
Examples:
|
|
119
|
+
npx mcp-local-rag ingest ./docs/guide.md
|
|
120
|
+
npx mcp-local-rag ingest ./documents/
|
|
121
|
+
npx mcp-local-rag ingest ./data --db-path ./my-db --base-dir ./data
|
|
122
|
+
`);
|
|
123
|
+
}
|
|
124
|
+
// ============================================
|
|
125
|
+
// Helper Functions
|
|
126
|
+
// ============================================
|
|
127
|
+
/**
|
|
128
|
+
* Recursively find files with supported extensions in a directory
|
|
129
|
+
* @param dirPath - Directory path to search
|
|
130
|
+
* @returns Array of absolute file paths with supported extensions
|
|
131
|
+
*/
|
|
132
|
+
async function findSupportedFiles(dirPath) {
|
|
133
|
+
const entries = await (0, promises_1.readdir)(dirPath, { recursive: true, withFileTypes: true });
|
|
134
|
+
return entries
|
|
135
|
+
.filter((entry) => entry.isFile() && index_js_1.SUPPORTED_EXTENSIONS.has((0, node_path_1.extname)(entry.name).toLowerCase()))
|
|
136
|
+
.map((entry) => {
|
|
137
|
+
// parentPath is the Node 21+ name; path is the deprecated Node 20 alias
|
|
138
|
+
// biome-ignore lint/suspicious/noExplicitAny: parentPath not yet in @types/node@20
|
|
139
|
+
const dir = entry.parentPath ?? entry.path;
|
|
140
|
+
return (0, node_path_1.join)(dir, entry.name);
|
|
141
|
+
})
|
|
142
|
+
.sort();
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Ingest a single file using RAGServer and return the parsed result
|
|
146
|
+
* @param server - Initialized RAGServer instance
|
|
147
|
+
* @param filePath - Absolute file path to ingest
|
|
148
|
+
* @returns Parsed IngestResult from handleIngestFile response
|
|
149
|
+
*/
|
|
150
|
+
async function ingestSingleFile(server, filePath) {
|
|
151
|
+
const response = await server.handleIngestFile({ filePath });
|
|
152
|
+
const text = response.content[0].text;
|
|
153
|
+
return JSON.parse(text);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Format a single file ingestion result as human-readable text
|
|
157
|
+
* @param result - IngestResult from RAGServer
|
|
158
|
+
* @returns Formatted string for stdout output
|
|
159
|
+
*/
|
|
160
|
+
function formatResult(result) {
|
|
161
|
+
const lines = [` File: ${result.filePath}`, ` Chunks: ${result.chunkCount}`];
|
|
162
|
+
if (result.fileTitle) {
|
|
163
|
+
lines.push(` Title: ${result.fileTitle}`);
|
|
164
|
+
}
|
|
165
|
+
return lines.join('\n');
|
|
166
|
+
}
|
|
167
|
+
// ============================================
|
|
168
|
+
// Exported Run Function
|
|
169
|
+
// ============================================
|
|
170
|
+
/**
|
|
171
|
+
* Run the ingest command with the given arguments
|
|
172
|
+
* @param args - Command line arguments (after "ingest" subcommand)
|
|
173
|
+
*/
|
|
174
|
+
async function run(args) {
|
|
175
|
+
try {
|
|
176
|
+
const options = parseArgs(args);
|
|
177
|
+
// Handle help flag
|
|
178
|
+
if (options.help) {
|
|
179
|
+
printHelp();
|
|
180
|
+
process.exit(0);
|
|
181
|
+
}
|
|
182
|
+
// Handle no target
|
|
183
|
+
if (!options.target) {
|
|
184
|
+
printHelp();
|
|
185
|
+
process.exit(1);
|
|
186
|
+
}
|
|
187
|
+
// Resolve and validate target path
|
|
188
|
+
const targetPath = (0, node_path_1.resolve)(options.target);
|
|
189
|
+
const targetStat = await (0, promises_1.stat)(targetPath);
|
|
190
|
+
const isDirectory = targetStat.isDirectory();
|
|
191
|
+
// Build RAGServerConfig from env vars + CLI option overrides
|
|
192
|
+
const config = {
|
|
193
|
+
dbPath: options.dbPath ?? process.env['DB_PATH'] ?? './lancedb/',
|
|
194
|
+
modelName: options.modelName ?? process.env['MODEL_NAME'] ?? 'Xenova/all-MiniLM-L6-v2',
|
|
195
|
+
cacheDir: options.cacheDir ?? process.env['CACHE_DIR'] ?? './models/',
|
|
196
|
+
baseDir: options.baseDir ??
|
|
197
|
+
process.env['BASE_DIR'] ??
|
|
198
|
+
(isDirectory ? targetPath : (0, node_path_1.resolve)(targetPath, '..')),
|
|
199
|
+
maxFileSize: options.maxFileSize ?? Number.parseInt(process.env['MAX_FILE_SIZE'] ?? '104857600', 10),
|
|
200
|
+
};
|
|
201
|
+
// Initialize RAGServer
|
|
202
|
+
const ragServer = new index_js_2.RAGServer(config);
|
|
203
|
+
await ragServer.initialize();
|
|
204
|
+
if (isDirectory) {
|
|
205
|
+
// Directory ingestion flow
|
|
206
|
+
const files = await findSupportedFiles(targetPath);
|
|
207
|
+
if (files.length === 0) {
|
|
208
|
+
console.log(`No supported files found in: ${targetPath}\nSupported formats: ${[...index_js_1.SUPPORTED_EXTENSIONS].join(', ')}`);
|
|
209
|
+
process.exit(1);
|
|
210
|
+
}
|
|
211
|
+
const startTime = Date.now();
|
|
212
|
+
const summary = {
|
|
213
|
+
totalFiles: files.length,
|
|
214
|
+
successCount: 0,
|
|
215
|
+
failureCount: 0,
|
|
216
|
+
totalChunks: 0,
|
|
217
|
+
elapsedMs: 0,
|
|
218
|
+
results: [],
|
|
219
|
+
};
|
|
220
|
+
for (const filePath of files) {
|
|
221
|
+
try {
|
|
222
|
+
const result = await ingestSingleFile(ragServer, filePath);
|
|
223
|
+
summary.successCount++;
|
|
224
|
+
summary.totalChunks += result.chunkCount;
|
|
225
|
+
summary.results.push({ filePath: result.filePath, chunkCount: result.chunkCount });
|
|
226
|
+
console.log(`OK: ${filePath} (${result.chunkCount} chunks)`);
|
|
227
|
+
}
|
|
228
|
+
catch (fileError) {
|
|
229
|
+
summary.failureCount++;
|
|
230
|
+
const errorMessage = fileError instanceof Error ? fileError.message : String(fileError);
|
|
231
|
+
summary.results.push({ filePath, error: errorMessage });
|
|
232
|
+
console.error(`FAIL: ${filePath} - ${errorMessage}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
summary.elapsedMs = Date.now() - startTime;
|
|
236
|
+
// Print summary
|
|
237
|
+
console.log('\n--- Ingestion Summary ---');
|
|
238
|
+
console.log(`Total files: ${summary.totalFiles}`);
|
|
239
|
+
console.log(`Succeeded: ${summary.successCount}`);
|
|
240
|
+
console.log(`Failed: ${summary.failureCount}`);
|
|
241
|
+
console.log(`Total chunks: ${summary.totalChunks}`);
|
|
242
|
+
console.log(`Elapsed: ${summary.elapsedMs}ms`);
|
|
243
|
+
process.exit(summary.failureCount > 0 ? 1 : 0);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
// Single file ingestion flow
|
|
247
|
+
const ext = (0, node_path_1.extname)(targetPath).toLowerCase();
|
|
248
|
+
if (!index_js_1.SUPPORTED_EXTENSIONS.has(ext)) {
|
|
249
|
+
console.error(`Error: Unsupported file format: ${ext}\nSupported formats: ${[...index_js_1.SUPPORTED_EXTENSIONS].join(', ')}`);
|
|
250
|
+
process.exit(1);
|
|
251
|
+
}
|
|
252
|
+
const result = await ingestSingleFile(ragServer, targetPath);
|
|
253
|
+
console.log('Ingestion complete:');
|
|
254
|
+
console.log(formatResult(result));
|
|
255
|
+
process.exit(0);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
// Handle specific error types
|
|
260
|
+
if (error instanceof Error && 'code' in error) {
|
|
261
|
+
const code = error.code;
|
|
262
|
+
if (code === 'ENOENT') {
|
|
263
|
+
const path = error.path ?? '';
|
|
264
|
+
console.error(`Error: Path not found: ${path}`);
|
|
265
|
+
process.exit(1);
|
|
266
|
+
}
|
|
267
|
+
if (code === 'EACCES') {
|
|
268
|
+
const path = error.path ?? '';
|
|
269
|
+
console.error(`Error: Permission denied: ${path}`);
|
|
270
|
+
process.exit(1);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// Handle generic errors (including McpError)
|
|
274
|
+
if (error instanceof Error) {
|
|
275
|
+
console.error(`Error: ${error.message}`);
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
console.error(`Error: ${String(error)}`);
|
|
279
|
+
}
|
|
280
|
+
process.exit(1);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=ingest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/bin/ingest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-skills.d.ts","sourceRoot":"","sources":["../../src/bin/install-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"install-skills.d.ts","sourceRoot":"","sources":["../../src/bin/install-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAqLH;;;GAGG;AACH,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA+BxC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* MCP Local RAG Skills Installer
|
|
4
3
|
*
|
|
@@ -13,11 +12,10 @@
|
|
|
13
12
|
* npx mcp-local-rag skills install --codex # Codex
|
|
14
13
|
* npx mcp-local-rag skills install --path /custom/path # Custom
|
|
15
14
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const node_path_1 = require("node:path");
|
|
15
|
+
import { cpSync, existsSync, mkdirSync } from 'node:fs';
|
|
16
|
+
import { homedir } from 'node:os';
|
|
17
|
+
import { dirname, join, resolve } from 'node:path';
|
|
18
|
+
import { fileURLToPath } from 'node:url';
|
|
21
19
|
// ============================================
|
|
22
20
|
// Constants
|
|
23
21
|
// ============================================
|
|
@@ -25,16 +23,17 @@ const node_path_1 = require("node:path");
|
|
|
25
23
|
// dist/bin/install-skills.js -> dist/skills/mcp-local-rag
|
|
26
24
|
// But skills are actually in package root: skills/mcp-local-rag
|
|
27
25
|
// So from dist/bin, go up twice: ../.. then skills/mcp-local-rag
|
|
28
|
-
const
|
|
26
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
27
|
+
const SKILLS_SOURCE = resolve(__dirname, '..', '..', 'skills', 'mcp-local-rag');
|
|
29
28
|
// Codex home directory (supports CODEX_HOME environment variable)
|
|
30
29
|
// https://developers.openai.com/codex/local-config/
|
|
31
|
-
const CODEX_HOME = process.env['CODEX_HOME'] ||
|
|
30
|
+
const CODEX_HOME = process.env['CODEX_HOME'] || join(homedir(), '.codex');
|
|
32
31
|
// Installation targets
|
|
33
32
|
const TARGETS = {
|
|
34
33
|
'claude-code-project': './.claude/skills/mcp-local-rag',
|
|
35
|
-
'claude-code-global':
|
|
34
|
+
'claude-code-global': join(homedir(), '.claude', 'skills', 'mcp-local-rag'),
|
|
36
35
|
'codex-project': './.codex/skills/mcp-local-rag',
|
|
37
|
-
'codex-global':
|
|
36
|
+
'codex-global': join(CODEX_HOME, 'skills', 'mcp-local-rag'),
|
|
38
37
|
};
|
|
39
38
|
function parseArgs(args) {
|
|
40
39
|
const options = {
|
|
@@ -140,24 +139,24 @@ function getTargetPath(options) {
|
|
|
140
139
|
console.error('Error: Custom path not specified');
|
|
141
140
|
process.exit(1);
|
|
142
141
|
}
|
|
143
|
-
return
|
|
142
|
+
return resolve(options.customPath, 'mcp-local-rag');
|
|
144
143
|
}
|
|
145
144
|
return TARGETS[options.target];
|
|
146
145
|
}
|
|
147
146
|
function install(targetPath) {
|
|
148
147
|
// Check source exists
|
|
149
|
-
if (!
|
|
148
|
+
if (!existsSync(SKILLS_SOURCE)) {
|
|
150
149
|
console.error(`Error: Skills source not found at ${SKILLS_SOURCE}`);
|
|
151
150
|
process.exit(1);
|
|
152
151
|
}
|
|
153
152
|
// Create target directory
|
|
154
|
-
const targetDir =
|
|
155
|
-
if (!
|
|
156
|
-
|
|
153
|
+
const targetDir = dirname(targetPath);
|
|
154
|
+
if (!existsSync(targetDir)) {
|
|
155
|
+
mkdirSync(targetDir, { recursive: true });
|
|
157
156
|
console.log(`Created directory: ${targetDir}`);
|
|
158
157
|
}
|
|
159
158
|
// Copy skills
|
|
160
|
-
|
|
159
|
+
cpSync(SKILLS_SOURCE, targetPath, { recursive: true });
|
|
161
160
|
console.log(`Installed skills to: ${targetPath}`);
|
|
162
161
|
}
|
|
163
162
|
// ============================================
|
|
@@ -167,7 +166,7 @@ function install(targetPath) {
|
|
|
167
166
|
* Run the skills installer with the given arguments
|
|
168
167
|
* @param args - Command line arguments (after "skills install")
|
|
169
168
|
*/
|
|
170
|
-
function run(args) {
|
|
169
|
+
export function run(args) {
|
|
171
170
|
// Default to help if no args
|
|
172
171
|
if (args.length === 0) {
|
|
173
172
|
printHelp();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-skills.js","sourceRoot":"","sources":["../../src/bin/install-skills.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install-skills.js","sourceRoot":"","sources":["../../src/bin/install-skills.ts"],"names":[],"mappings":"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"}
|
package/dist/chunker/index.js
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SemanticChunker = void 0;
|
|
4
|
-
var semantic_chunker_js_1 = require("./semantic-chunker.js");
|
|
5
|
-
Object.defineProperty(exports, "SemanticChunker", { enumerable: true, get: function () { return semantic_chunker_js_1.SemanticChunker; } });
|
|
1
|
+
export { SemanticChunker } from './semantic-chunker.js';
|
|
6
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chunker/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chunker/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Semantic Chunker implementation using Max-Min algorithm
|
|
3
2
|
// Based on: "Max–Min semantic chunking of documents for RAG application" (Springer, 2025)
|
|
4
|
-
|
|
5
|
-
exports.SemanticChunker = void 0;
|
|
6
|
-
exports.isGarbageChunk = isGarbageChunk;
|
|
7
|
-
const sentence_splitter_js_1 = require("./sentence-splitter.js");
|
|
3
|
+
import { splitIntoSentences } from './sentence-splitter.js';
|
|
8
4
|
// ============================================
|
|
9
5
|
// Performance Optimization Constants
|
|
10
6
|
// ============================================
|
|
@@ -34,7 +30,7 @@ const MAX_SENTENCES = 15;
|
|
|
34
30
|
* @param text - Chunk text to check
|
|
35
31
|
* @returns true if chunk is garbage and should be removed
|
|
36
32
|
*/
|
|
37
|
-
function isGarbageChunk(text) {
|
|
33
|
+
export function isGarbageChunk(text) {
|
|
38
34
|
const trimmed = text.trim();
|
|
39
35
|
if (trimmed.length === 0)
|
|
40
36
|
return true;
|
|
@@ -42,7 +38,7 @@ function isGarbageChunk(text) {
|
|
|
42
38
|
if (/[a-zA-Z0-9]/.test(trimmed))
|
|
43
39
|
return false;
|
|
44
40
|
// Decoration line patterns only (----, ====, ****, etc.)
|
|
45
|
-
if (/^[
|
|
41
|
+
if (/^[-=_.*#|~`@!%^&*()[\]{}\\/<>:+\s]+$/.test(trimmed))
|
|
46
42
|
return true;
|
|
47
43
|
// Excessive repetition of single character (>80%)
|
|
48
44
|
const charCounts = new Map();
|
|
@@ -78,7 +74,7 @@ const DEFAULT_SEMANTIC_CHUNKER_CONFIG = {
|
|
|
78
74
|
* Key insight: A sentence belongs to a chunk if its maximum similarity to any chunk member
|
|
79
75
|
* is greater than the minimum similarity between existing chunk members (with threshold adjustment)
|
|
80
76
|
*/
|
|
81
|
-
class SemanticChunker {
|
|
77
|
+
export class SemanticChunker {
|
|
82
78
|
constructor(config = {}) {
|
|
83
79
|
this.config = { ...DEFAULT_SEMANTIC_CHUNKER_CONFIG, ...config };
|
|
84
80
|
}
|
|
@@ -95,7 +91,7 @@ class SemanticChunker {
|
|
|
95
91
|
return [];
|
|
96
92
|
}
|
|
97
93
|
// Split into sentences
|
|
98
|
-
const sentences =
|
|
94
|
+
const sentences = splitIntoSentences(text);
|
|
99
95
|
if (sentences.length === 0) {
|
|
100
96
|
return [];
|
|
101
97
|
}
|
|
@@ -278,5 +274,4 @@ class SemanticChunker {
|
|
|
278
274
|
return dotProduct / denominator;
|
|
279
275
|
}
|
|
280
276
|
}
|
|
281
|
-
exports.SemanticChunker = SemanticChunker;
|
|
282
277
|
//# sourceMappingURL=semantic-chunker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-chunker.js","sourceRoot":"","sources":["../../src/chunker/semantic-chunker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"semantic-chunker.js","sourceRoot":"","sources":["../../src/chunker/semantic-chunker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Sentence Splitter for Semantic Chunking
|
|
3
2
|
// Created: 2025-12-27
|
|
4
3
|
// Purpose: Split text into sentences using Intl.Segmenter (Unicode standard)
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.splitIntoSentences = splitIntoSentences;
|
|
7
4
|
// ============================================
|
|
8
5
|
// Constants
|
|
9
6
|
// ============================================
|
|
@@ -77,7 +74,7 @@ const segmenter = new Intl.Segmenter('und', { granularity: 'sentence' });
|
|
|
77
74
|
* @param text - The text to split into sentences
|
|
78
75
|
* @returns Array of sentences
|
|
79
76
|
*/
|
|
80
|
-
function splitIntoSentences(text) {
|
|
77
|
+
export function splitIntoSentences(text) {
|
|
81
78
|
// Handle empty input
|
|
82
79
|
if (!text || text.trim().length === 0) {
|
|
83
80
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentence-splitter.js","sourceRoot":"","sources":["../../src/chunker/sentence-splitter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sentence-splitter.js","sourceRoot":"","sources":["../../src/chunker/sentence-splitter.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-main.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.handleCli = handleCli;
|
|
4
1
|
// CLI entry point for subcommands (skills install, etc.)
|
|
5
|
-
|
|
2
|
+
import { run as runSkillsInstall } from './bin/install-skills.js';
|
|
6
3
|
/**
|
|
7
4
|
* Handle CLI subcommands
|
|
8
5
|
* @param args - Command line arguments (after the binary name)
|
|
9
6
|
*/
|
|
10
|
-
function handleCli(args) {
|
|
7
|
+
export function handleCli(args) {
|
|
11
8
|
const subcommand = args[0];
|
|
12
9
|
switch (subcommand) {
|
|
13
10
|
case 'skills':
|
|
14
11
|
if (args[1] === 'install') {
|
|
15
|
-
(
|
|
12
|
+
runSkillsInstall(args.slice(2));
|
|
16
13
|
process.exit(0);
|
|
17
14
|
}
|
|
18
15
|
else {
|
package/dist/cli-main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-main.js","sourceRoot":"","sources":["../src/cli-main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-main.js","sourceRoot":"","sources":["../src/cli-main.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,GAAG,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAEjE;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IAE1B,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC1B,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CACX,8EAA8E,CAC/E,CAAA;gBACD,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAA;gBACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,MAAK;QAEP;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAA;YAC/C,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;AACH,CAAC"}
|