mcp-local-rag 0.9.0 → 0.10.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 +10 -15
- package/dist/cli/common.d.ts +14 -0
- package/dist/cli/common.d.ts.map +1 -0
- package/dist/cli/common.js +25 -0
- package/dist/cli/common.js.map +1 -0
- package/dist/cli/delete.d.ts +8 -0
- package/dist/cli/delete.d.ts.map +1 -0
- package/dist/cli/delete.js +164 -0
- package/dist/cli/delete.js.map +1 -0
- package/dist/cli/ingest.d.ts +21 -8
- package/dist/cli/ingest.d.ts.map +1 -1
- package/dist/cli/ingest.js +110 -60
- package/dist/cli/ingest.js.map +1 -1
- package/dist/cli/list.d.ts +23 -0
- package/dist/cli/list.d.ts.map +1 -0
- package/dist/cli/list.js +142 -0
- package/dist/cli/list.js.map +1 -0
- package/dist/cli/options.d.ts +49 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +193 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/query.d.ts +23 -0
- package/dist/cli/query.d.ts.map +1 -0
- package/dist/cli/query.js +162 -0
- package/dist/cli/query.js.map +1 -0
- package/dist/cli/status.d.ts +8 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +78 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli-main.d.ts +4 -2
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/cli-main.js +21 -4
- package/dist/cli-main.js.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/types.d.ts +1 -1
- package/dist/server/types.d.ts.map +1 -1
- package/dist/utils/raw-data-utils.d.ts +116 -0
- package/dist/utils/raw-data-utils.d.ts.map +1 -0
- package/dist/utils/raw-data-utils.js +202 -0
- package/dist/utils/raw-data-utils.js.map +1 -0
- package/package.json +3 -4
- package/skills/mcp-local-rag/SKILL.md +25 -35
- package/skills/mcp-local-rag/references/cli-reference.md +77 -0
- package/skills/mcp-local-rag/references/html-ingestion.md +11 -7
- package/skills/mcp-local-rag/references/query-optimization.md +1 -1
- package/skills/mcp-local-rag/references/cli-ingest.md +0 -45
package/README.md
CHANGED
|
@@ -119,27 +119,22 @@ HTML is automatically cleaned—you get the article content, not the boilerplate
|
|
|
119
119
|
|
|
120
120
|
> **Note:** The RAG server itself doesn't fetch web content—your AI assistant retrieves it and passes the HTML to `ingest_data`. This keeps the server fully local while letting you index any content your assistant can access. Please respect website terms of service and copyright when ingesting external content.
|
|
121
121
|
|
|
122
|
-
###
|
|
122
|
+
### CLI Commands
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
All MCP tools are also available as CLI commands — no MCP server needed:
|
|
125
125
|
|
|
126
126
|
```bash
|
|
127
|
-
npx mcp-local-rag ingest
|
|
127
|
+
npx mcp-local-rag ingest ./docs/ # Bulk ingest files
|
|
128
|
+
npx mcp-local-rag query "authentication API" # Search documents
|
|
129
|
+
npx mcp-local-rag list # Show ingestion status
|
|
130
|
+
npx mcp-local-rag status # Database stats
|
|
131
|
+
npx mcp-local-rag delete ./docs/old.pdf # Remove content
|
|
132
|
+
npx mcp-local-rag delete --source "https://..." # Remove by source URL
|
|
128
133
|
```
|
|
129
134
|
|
|
130
|
-
|
|
135
|
+
Global options (`--db-path`, `--cache-dir`, `--model-name`) go before the subcommand. Run `npx mcp-local-rag --help` for details.
|
|
131
136
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
| Option | Default | Description |
|
|
135
|
-
|--------|---------|-------------|
|
|
136
|
-
| `--db-path <path>` | `./lancedb/` | LanceDB database path |
|
|
137
|
-
| `--base-dir <path>` | cwd | Base directory for documents |
|
|
138
|
-
| `--model-name <name>` | `Xenova/all-MiniLM-L6-v2` | Embedding model |
|
|
139
|
-
| `--cache-dir <path>` | `./models/` | Model cache directory |
|
|
140
|
-
| `--max-file-size <n>` | `104857600` | Max file size in bytes |
|
|
141
|
-
|
|
142
|
-
This processes all supported files recursively and runs optimization once at the end — much faster than per-file ingestion for large batches.
|
|
137
|
+
`query`, `list`, `status`, and `delete` output JSON to stdout for piping (e.g., `| jq`). `ingest` outputs progress to stderr.
|
|
143
138
|
|
|
144
139
|
> ⚠️ **CLI options must match your MCP server config.** Especially `--model-name` — using a different embedding model against an existing database produces incompatible vectors, silently degrading search quality.
|
|
145
140
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Embedder } from '../embedder/index.js';
|
|
2
|
+
import { VectorStore } from '../vectordb/index.js';
|
|
3
|
+
import type { ResolvedGlobalConfig } from './options.js';
|
|
4
|
+
/**
|
|
5
|
+
* Create an uninitialized VectorStore from resolved global config.
|
|
6
|
+
* Callers are responsible for calling initialize() before use.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createVectorStore(config: ResolvedGlobalConfig): VectorStore;
|
|
9
|
+
/**
|
|
10
|
+
* Create an uninitialized Embedder from resolved global config.
|
|
11
|
+
* Callers are responsible for managing the Embedder lifecycle.
|
|
12
|
+
*/
|
|
13
|
+
export declare function createEmbedder(config: ResolvedGlobalConfig): Embedder;
|
|
14
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/cli/common.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAExD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,WAAW,CAK3E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,QAAQ,CAMrE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Shared CLI component helpers — factory functions for VectorStore and Embedder
|
|
2
|
+
import { Embedder } from '../embedder/index.js';
|
|
3
|
+
import { VectorStore } from '../vectordb/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Create an uninitialized VectorStore from resolved global config.
|
|
6
|
+
* Callers are responsible for calling initialize() before use.
|
|
7
|
+
*/
|
|
8
|
+
export function createVectorStore(config) {
|
|
9
|
+
return new VectorStore({
|
|
10
|
+
dbPath: config.dbPath,
|
|
11
|
+
tableName: 'chunks',
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create an uninitialized Embedder from resolved global config.
|
|
16
|
+
* Callers are responsible for managing the Embedder lifecycle.
|
|
17
|
+
*/
|
|
18
|
+
export function createEmbedder(config) {
|
|
19
|
+
return new Embedder({
|
|
20
|
+
modelPath: config.modelName,
|
|
21
|
+
batchSize: 16,
|
|
22
|
+
cacheDir: config.cacheDir,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/cli/common.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAGlD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA4B;IAC5D,OAAO,IAAI,WAAW,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAA;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAA4B;IACzD,OAAO,IAAI,QAAQ,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { GlobalOptions } from './options.js';
|
|
2
|
+
/**
|
|
3
|
+
* Run the delete CLI subcommand.
|
|
4
|
+
* @param args - Arguments after "delete"
|
|
5
|
+
* @param globalOptions - Global options parsed before the subcommand
|
|
6
|
+
*/
|
|
7
|
+
export declare function runDelete(args: string[], globalOptions?: GlobalOptions): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/cli/delete.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAkFjD;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,aAAa,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiGhG"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
// CLI delete subcommand — delete ingested content by file path or source URL
|
|
2
|
+
import { unlink } from 'node:fs/promises';
|
|
3
|
+
import { resolve } from 'node:path';
|
|
4
|
+
import { generateMetaJsonPath, generateRawDataPath, isRawDataPath, } from '../utils/raw-data-utils.js';
|
|
5
|
+
import { createVectorStore } from './common.js';
|
|
6
|
+
import { resolveGlobalConfig, validatePath } from './options.js';
|
|
7
|
+
// ============================================
|
|
8
|
+
// Help
|
|
9
|
+
// ============================================
|
|
10
|
+
const HELP_TEXT = `Usage: mcp-local-rag [global-options] delete [--source <url>] [<file-path>]
|
|
11
|
+
|
|
12
|
+
Delete ingested content by file path or source URL.
|
|
13
|
+
|
|
14
|
+
Either <file-path> or --source is required (not both).
|
|
15
|
+
|
|
16
|
+
Arguments:
|
|
17
|
+
<file-path> File path of ingested content to delete
|
|
18
|
+
|
|
19
|
+
Options:
|
|
20
|
+
--source <url> Delete by source URL (for content ingested via ingest_data)
|
|
21
|
+
-h, --help Show this help
|
|
22
|
+
|
|
23
|
+
Global options (must appear before "delete"):
|
|
24
|
+
--db-path <path> LanceDB database path
|
|
25
|
+
--cache-dir <path> Model cache directory
|
|
26
|
+
--model-name <name> Embedding model`;
|
|
27
|
+
/**
|
|
28
|
+
* Parse delete-specific CLI arguments.
|
|
29
|
+
* Accepts a positional <file-path>, --source <url>, and -h/--help.
|
|
30
|
+
* Unknown flags or conflicting args cause exit(1).
|
|
31
|
+
*/
|
|
32
|
+
function parseArgs(args) {
|
|
33
|
+
let help = false;
|
|
34
|
+
let source;
|
|
35
|
+
let filePath;
|
|
36
|
+
let i = 0;
|
|
37
|
+
while (i < args.length) {
|
|
38
|
+
const arg = args[i];
|
|
39
|
+
if (arg === '-h' || arg === '--help') {
|
|
40
|
+
help = true;
|
|
41
|
+
i++;
|
|
42
|
+
}
|
|
43
|
+
else if (arg === '--source') {
|
|
44
|
+
const value = args[++i];
|
|
45
|
+
if (value === undefined || value.startsWith('-')) {
|
|
46
|
+
console.error('Missing value for --source');
|
|
47
|
+
console.error(HELP_TEXT);
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
source = value;
|
|
51
|
+
i++;
|
|
52
|
+
}
|
|
53
|
+
else if (arg.startsWith('-')) {
|
|
54
|
+
console.error(`Unknown option: ${arg}`);
|
|
55
|
+
console.error(HELP_TEXT);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Positional argument: file-path
|
|
60
|
+
filePath = arg;
|
|
61
|
+
i++;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const result = { help };
|
|
65
|
+
if (source !== undefined)
|
|
66
|
+
result.source = source;
|
|
67
|
+
if (filePath !== undefined)
|
|
68
|
+
result.filePath = filePath;
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
// ============================================
|
|
72
|
+
// Main Entry Point
|
|
73
|
+
// ============================================
|
|
74
|
+
/**
|
|
75
|
+
* Run the delete CLI subcommand.
|
|
76
|
+
* @param args - Arguments after "delete"
|
|
77
|
+
* @param globalOptions - Global options parsed before the subcommand
|
|
78
|
+
*/
|
|
79
|
+
export async function runDelete(args, globalOptions = {}) {
|
|
80
|
+
// Parse CLI options
|
|
81
|
+
const parsed = parseArgs(args);
|
|
82
|
+
// Handle --help
|
|
83
|
+
if (parsed.help) {
|
|
84
|
+
console.error(HELP_TEXT);
|
|
85
|
+
process.exit(0);
|
|
86
|
+
}
|
|
87
|
+
// Validate: either file-path or --source required, not both
|
|
88
|
+
if (!parsed.filePath && !parsed.source) {
|
|
89
|
+
console.error('Either <file-path> or --source is required');
|
|
90
|
+
console.error(HELP_TEXT);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
if (parsed.filePath && parsed.source) {
|
|
94
|
+
console.error('Cannot specify both <file-path> and --source');
|
|
95
|
+
console.error(HELP_TEXT);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
// Resolve global config
|
|
99
|
+
const globalConfig = resolveGlobalConfig(globalOptions);
|
|
100
|
+
try {
|
|
101
|
+
// Create and initialize VectorStore (no Embedder needed for delete)
|
|
102
|
+
const vectorStore = createVectorStore(globalConfig);
|
|
103
|
+
await vectorStore.initialize();
|
|
104
|
+
// Determine target file path
|
|
105
|
+
let targetPath;
|
|
106
|
+
if (parsed.source) {
|
|
107
|
+
// Generate raw-data path from source URL
|
|
108
|
+
targetPath = generateRawDataPath(globalConfig.dbPath, parsed.source, 'markdown');
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
// Use provided file path, resolve to absolute
|
|
112
|
+
targetPath = resolve(parsed.filePath);
|
|
113
|
+
// Validate path (reject sensitive system directories)
|
|
114
|
+
const pathError = validatePath(targetPath, '<file-path>');
|
|
115
|
+
if (pathError) {
|
|
116
|
+
console.error(pathError);
|
|
117
|
+
process.exitCode = 1;
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Delete chunks from VectorStore
|
|
122
|
+
await vectorStore.deleteChunks(targetPath);
|
|
123
|
+
// Clean up physical raw-data files if applicable
|
|
124
|
+
if (isRawDataPath(targetPath)) {
|
|
125
|
+
try {
|
|
126
|
+
await unlink(targetPath);
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
// Ignore ENOENT (file already deleted / never existed)
|
|
130
|
+
if (!(error instanceof Error) ||
|
|
131
|
+
!('code' in error) ||
|
|
132
|
+
error.code !== 'ENOENT') {
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
await unlink(generateMetaJsonPath(targetPath));
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
// Ignore ENOENT
|
|
141
|
+
if (!(error instanceof Error) ||
|
|
142
|
+
!('code' in error) ||
|
|
143
|
+
error.code !== 'ENOENT') {
|
|
144
|
+
throw error;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Optimize VectorStore after deletion
|
|
149
|
+
await vectorStore.optimize();
|
|
150
|
+
// Output result JSON to stdout
|
|
151
|
+
const result = {
|
|
152
|
+
filePath: targetPath,
|
|
153
|
+
deleted: true,
|
|
154
|
+
timestamp: new Date().toISOString(),
|
|
155
|
+
};
|
|
156
|
+
process.stdout.write(JSON.stringify(result));
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
160
|
+
console.error(`Error: ${reason}`);
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/cli/delete.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,GACd,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhE,+CAA+C;AAC/C,OAAO;AACP,+CAA+C;AAE/C,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;yCAgBuB,CAAA;AAYzC;;;;GAIG;AACH,SAAS,SAAS,CAAC,IAAc;IAC/B,IAAI,IAAI,GAAG,KAAK,CAAA;IAChB,IAAI,MAA0B,CAAA;IAC9B,IAAI,QAA4B,CAAA;IAEhC,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;QAEpB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,GAAG,IAAI,CAAA;YACX,CAAC,EAAE,CAAA;QACL,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACvB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjD,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;gBAC3C,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,MAAM,GAAG,KAAK,CAAA;YACd,CAAC,EAAE,CAAA;QACL,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAA;YACvC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;aAAM,CAAC;YACN,iCAAiC;YACjC,QAAQ,GAAG,GAAG,CAAA;YACd,CAAC,EAAE,CAAA;QACL,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAe,EAAE,IAAI,EAAE,CAAA;IACnC,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;IAChD,IAAI,QAAQ,KAAK,SAAS;QAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACtD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,+CAA+C;AAC/C,mBAAmB;AACnB,+CAA+C;AAE/C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAc,EAAE,gBAA+B,EAAE;IAC/E,oBAAoB;IACpB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAE9B,gBAAgB;IAChB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAA;QAC3D,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;QAC7D,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,wBAAwB;IACxB,MAAM,YAAY,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAEvD,IAAI,CAAC;QACH,oEAAoE;QACpE,MAAM,WAAW,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAA;QACnD,MAAM,WAAW,CAAC,UAAU,EAAE,CAAA;QAE9B,6BAA6B;QAC7B,IAAI,UAAkB,CAAA;QAEtB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,yCAAyC;YACzC,UAAU,GAAG,mBAAmB,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QAClF,CAAC;aAAM,CAAC;YACN,8CAA8C;YAC9C,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,QAAS,CAAC,CAAA;YAEtC,sDAAsD;YACtD,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;YACzD,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBACxB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;gBACpB,OAAM;YACR,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;QAE1C,iDAAiD;QACjD,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;YAC1B,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,uDAAuD;gBACvD,IACE,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;oBACzB,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;oBACjB,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAClD,CAAC;oBACD,MAAM,KAAK,CAAA;gBACb,CAAC;YACH,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAA;YAChD,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,gBAAgB;gBAChB,IACE,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;oBACzB,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;oBACjB,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAClD,CAAC;oBACD,MAAM,KAAK,CAAA;gBACb,CAAC;YACH,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAA;QAE5B,+BAA+B;QAC/B,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAA;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACrE,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,EAAE,CAAC,CAAA;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
package/dist/cli/ingest.d.ts
CHANGED
|
@@ -1,24 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { GlobalOptions, ResolvedGlobalConfig } from './options.js';
|
|
2
|
+
interface IngestConfig {
|
|
3
|
+
baseDir: string;
|
|
4
|
+
dbPath: string;
|
|
5
|
+
cacheDir: string;
|
|
6
|
+
modelName: string;
|
|
7
|
+
maxFileSize: number;
|
|
8
|
+
}
|
|
9
|
+
interface IngestCliOptions {
|
|
3
10
|
baseDir?: string | undefined;
|
|
4
|
-
cacheDir?: string | undefined;
|
|
5
|
-
modelName?: string | undefined;
|
|
6
11
|
maxFileSize?: number | undefined;
|
|
7
12
|
}
|
|
8
13
|
interface ParsedArgs {
|
|
9
14
|
positional: string | undefined;
|
|
10
|
-
options:
|
|
15
|
+
options: IngestCliOptions;
|
|
11
16
|
help: boolean;
|
|
12
17
|
}
|
|
13
18
|
/**
|
|
14
|
-
* Parse CLI arguments into options and a positional path.
|
|
15
|
-
* Flags: --
|
|
19
|
+
* Parse ingest-specific CLI arguments into options and a positional path.
|
|
20
|
+
* Flags: --base-dir, --max-file-size, -h/--help
|
|
21
|
+
* Unknown flags (including global flags passed after subcommand) cause an error.
|
|
16
22
|
*/
|
|
17
23
|
export declare function parseArgs(args: string[]): ParsedArgs;
|
|
24
|
+
/**
|
|
25
|
+
* Resolve ingest config by merging global config with ingest-specific options.
|
|
26
|
+
* Ingest-specific: baseDir, maxFileSize (CLI flags > env vars > defaults).
|
|
27
|
+
* Validates all resolved values before returning.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveConfig(globalConfig: ResolvedGlobalConfig, ingestOptions?: IngestCliOptions): IngestConfig;
|
|
18
30
|
/**
|
|
19
31
|
* Run the ingest CLI subcommand.
|
|
20
32
|
* @param args - Arguments after "ingest" (e.g., option flags and file/directory path)
|
|
33
|
+
* @param globalOptions - Global options parsed before the subcommand
|
|
21
34
|
*/
|
|
22
|
-
export declare function runIngest(args: string[]): Promise<void>;
|
|
35
|
+
export declare function runIngest(args: string[], globalOptions?: GlobalOptions): Promise<void>;
|
|
23
36
|
export {};
|
|
24
37
|
//# sourceMappingURL=ingest.d.ts.map
|
package/dist/cli/ingest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/cli/ingest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/cli/ingest.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAavE,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB;AAQD,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACjC;AAED,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,OAAO,EAAE,gBAAgB,CAAA;IACzB,IAAI,EAAE,OAAO,CAAA;CACd;AAgCD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAqDpD;AAiBD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,YAAY,EAAE,oBAAoB,EAClC,aAAa,GAAE,gBAAqB,GACnC,YAAY,CA8Bd;AAuJD;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,aAAa,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0FhG"}
|
package/dist/cli/ingest.js
CHANGED
|
@@ -1,40 +1,44 @@
|
|
|
1
1
|
// CLI ingest subcommand — bulk file ingestion with single optimize() at end
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
|
-
import {
|
|
3
|
+
import { opendir, stat } from 'node:fs/promises';
|
|
4
4
|
import { extname, join, resolve } from 'node:path';
|
|
5
5
|
import { SemanticChunker } from '../chunker/index.js';
|
|
6
|
-
import { Embedder } from '../embedder/index.js';
|
|
7
6
|
import { DocumentParser, SUPPORTED_EXTENSIONS } from '../parser/index.js';
|
|
8
|
-
import {
|
|
7
|
+
import { createEmbedder, createVectorStore } from './common.js';
|
|
8
|
+
import { resolveGlobalConfig, validateMaxFileSize, validatePath } from './options.js';
|
|
9
|
+
// ============================================
|
|
10
|
+
// Constants
|
|
11
|
+
// ============================================
|
|
12
|
+
const MAX_DEPTH = 10;
|
|
9
13
|
// ============================================
|
|
10
14
|
// Defaults
|
|
11
15
|
// ============================================
|
|
12
|
-
const
|
|
13
|
-
dbPath: './lancedb/',
|
|
14
|
-
cacheDir: './models/',
|
|
15
|
-
modelName: 'Xenova/all-MiniLM-L6-v2',
|
|
16
|
+
const INGEST_DEFAULTS = {
|
|
16
17
|
maxFileSize: 104857600,
|
|
17
18
|
};
|
|
18
19
|
// ============================================
|
|
19
20
|
// Help
|
|
20
21
|
// ============================================
|
|
21
|
-
const HELP_TEXT = `Usage: mcp-local-rag ingest [options] <path>
|
|
22
|
+
const HELP_TEXT = `Usage: mcp-local-rag [global-options] ingest [options] <path>
|
|
22
23
|
|
|
23
24
|
Ingest a single file or all supported files under a directory.
|
|
24
25
|
|
|
25
26
|
Options:
|
|
26
|
-
--db-path <path> LanceDB database path (default: ${DEFAULTS.dbPath})
|
|
27
27
|
--base-dir <path> Base directory for documents (default: cwd)
|
|
28
|
-
--
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
--max-file-size <n> Max file size in bytes (default: ${INGEST_DEFAULTS.maxFileSize})
|
|
29
|
+
-h, --help Show this help
|
|
30
|
+
|
|
31
|
+
Global options (must appear before "ingest"):
|
|
32
|
+
--db-path <path> LanceDB database path
|
|
33
|
+
--cache-dir <path> Model cache directory
|
|
34
|
+
--model-name <name> Embedding model`;
|
|
32
35
|
// ============================================
|
|
33
36
|
// Arg Parsing
|
|
34
37
|
// ============================================
|
|
35
38
|
/**
|
|
36
|
-
* Parse CLI arguments into options and a positional path.
|
|
37
|
-
* Flags: --
|
|
39
|
+
* Parse ingest-specific CLI arguments into options and a positional path.
|
|
40
|
+
* Flags: --base-dir, --max-file-size, -h/--help
|
|
41
|
+
* Unknown flags (including global flags passed after subcommand) cause an error.
|
|
38
42
|
*/
|
|
39
43
|
export function parseArgs(args) {
|
|
40
44
|
const options = {};
|
|
@@ -49,24 +53,23 @@ export function parseArgs(args) {
|
|
|
49
53
|
help = true;
|
|
50
54
|
i++;
|
|
51
55
|
break;
|
|
52
|
-
case '--
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
break;
|
|
60
|
-
case '--cache-dir':
|
|
61
|
-
options.cacheDir = args[++i];
|
|
62
|
-
i++;
|
|
63
|
-
break;
|
|
64
|
-
case '--model-name':
|
|
65
|
-
options.modelName = args[++i];
|
|
56
|
+
case '--base-dir': {
|
|
57
|
+
const value = args[++i];
|
|
58
|
+
if (value === undefined || value.startsWith('-')) {
|
|
59
|
+
console.error('Missing value for --base-dir');
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
options.baseDir = value;
|
|
66
63
|
i++;
|
|
67
64
|
break;
|
|
65
|
+
}
|
|
68
66
|
case '--max-file-size': {
|
|
69
|
-
const
|
|
67
|
+
const raw = args[++i];
|
|
68
|
+
if (raw === undefined || raw.startsWith('-')) {
|
|
69
|
+
console.error('Missing value for --max-file-size');
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
const parsed = Number.parseInt(raw, 10);
|
|
70
73
|
options.maxFileSize = Number.isNaN(parsed) ? undefined : parsed;
|
|
71
74
|
i++;
|
|
72
75
|
break;
|
|
@@ -77,6 +80,11 @@ export function parseArgs(args) {
|
|
|
77
80
|
console.error(HELP_TEXT);
|
|
78
81
|
process.exit(1);
|
|
79
82
|
}
|
|
83
|
+
if (positional !== undefined) {
|
|
84
|
+
console.error(`Unexpected argument: ${arg}`);
|
|
85
|
+
console.error('Only one path is accepted. Use a directory to ingest multiple files.');
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
80
88
|
positional = arg;
|
|
81
89
|
i++;
|
|
82
90
|
break;
|
|
@@ -91,24 +99,40 @@ export function parseArgs(args) {
|
|
|
91
99
|
* Ensure maxFileSize is a valid number, falling back to default if NaN.
|
|
92
100
|
*/
|
|
93
101
|
function sanitizeMaxFileSize(value) {
|
|
94
|
-
return Number.isNaN(value) ?
|
|
102
|
+
return Number.isNaN(value) ? INGEST_DEFAULTS.maxFileSize : value;
|
|
95
103
|
}
|
|
96
104
|
// ============================================
|
|
97
105
|
// Config Resolution
|
|
98
106
|
// ============================================
|
|
99
107
|
/**
|
|
100
|
-
* Resolve config
|
|
108
|
+
* Resolve ingest config by merging global config with ingest-specific options.
|
|
109
|
+
* Ingest-specific: baseDir, maxFileSize (CLI flags > env vars > defaults).
|
|
110
|
+
* Validates all resolved values before returning.
|
|
101
111
|
*/
|
|
102
|
-
function resolveConfig(
|
|
112
|
+
export function resolveConfig(globalConfig, ingestOptions = {}) {
|
|
113
|
+
const baseDir = ingestOptions.baseDir ?? process.env['BASE_DIR'] ?? process.cwd();
|
|
114
|
+
const maxFileSize = sanitizeMaxFileSize(ingestOptions.maxFileSize ??
|
|
115
|
+
(process.env['MAX_FILE_SIZE']
|
|
116
|
+
? Number.parseInt(process.env['MAX_FILE_SIZE'], 10)
|
|
117
|
+
: INGEST_DEFAULTS.maxFileSize));
|
|
118
|
+
// Validate baseDir path
|
|
119
|
+
const baseDirError = validatePath(baseDir, '--base-dir');
|
|
120
|
+
if (baseDirError) {
|
|
121
|
+
console.error(baseDirError);
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|
|
124
|
+
// Validate maxFileSize range
|
|
125
|
+
const maxFileSizeError = validateMaxFileSize(maxFileSize);
|
|
126
|
+
if (maxFileSizeError) {
|
|
127
|
+
console.error(maxFileSizeError);
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
103
130
|
return {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
maxFileSize
|
|
109
|
-
(process.env['MAX_FILE_SIZE']
|
|
110
|
-
? Number.parseInt(process.env['MAX_FILE_SIZE'], 10)
|
|
111
|
-
: DEFAULTS.maxFileSize)),
|
|
131
|
+
dbPath: globalConfig.dbPath,
|
|
132
|
+
cacheDir: globalConfig.cacheDir,
|
|
133
|
+
modelName: globalConfig.modelName,
|
|
134
|
+
baseDir,
|
|
135
|
+
maxFileSize,
|
|
112
136
|
};
|
|
113
137
|
}
|
|
114
138
|
// ============================================
|
|
@@ -117,8 +141,8 @@ function resolveConfig(cliOptions = {}) {
|
|
|
117
141
|
/**
|
|
118
142
|
* Collect files to ingest from a path.
|
|
119
143
|
* - If path is a file with supported extension, return [path].
|
|
120
|
-
* - If path is a directory,
|
|
121
|
-
* -
|
|
144
|
+
* - If path is a directory, walk with BFS up to MAX_DEPTH levels.
|
|
145
|
+
* - Skip symlinks, permission errors, and excluded directories.
|
|
122
146
|
*/
|
|
123
147
|
async function collectFiles(targetPath, excludePaths) {
|
|
124
148
|
const resolved = resolve(targetPath);
|
|
@@ -132,12 +156,43 @@ async function collectFiles(targetPath, excludePaths) {
|
|
|
132
156
|
return [resolved];
|
|
133
157
|
}
|
|
134
158
|
if (info.isDirectory()) {
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
159
|
+
const files = [];
|
|
160
|
+
let depthLimited = false;
|
|
161
|
+
const queue = [{ dirPath: resolved, depth: 0 }];
|
|
162
|
+
while (queue.length > 0) {
|
|
163
|
+
const { dirPath, depth } = queue.shift();
|
|
164
|
+
if (depth >= MAX_DEPTH) {
|
|
165
|
+
depthLimited = true;
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
let dir;
|
|
169
|
+
try {
|
|
170
|
+
dir = await opendir(dirPath);
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
console.error(`Warning: cannot read directory: ${dirPath}`);
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
for await (const entry of dir) {
|
|
177
|
+
const fullPath = join(dirPath, entry.name);
|
|
178
|
+
if (!fullPath.startsWith(resolved))
|
|
179
|
+
continue;
|
|
180
|
+
if (entry.isSymbolicLink())
|
|
181
|
+
continue;
|
|
182
|
+
if (excludePaths.some((ep) => fullPath.startsWith(ep)))
|
|
183
|
+
continue;
|
|
184
|
+
if (entry.isDirectory()) {
|
|
185
|
+
queue.push({ dirPath: fullPath, depth: depth + 1 });
|
|
186
|
+
}
|
|
187
|
+
else if (entry.isFile() && SUPPORTED_EXTENSIONS.has(extname(entry.name).toLowerCase())) {
|
|
188
|
+
files.push(fullPath);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (depthLimited) {
|
|
193
|
+
console.error(`Warning: some directories were skipped because they exceed the maximum depth (${MAX_DEPTH})`);
|
|
194
|
+
}
|
|
195
|
+
return files.sort();
|
|
141
196
|
}
|
|
142
197
|
return [];
|
|
143
198
|
}
|
|
@@ -205,8 +260,9 @@ async function ingestSingleFile(filePath, parser, chunker, embedder, vectorStore
|
|
|
205
260
|
/**
|
|
206
261
|
* Run the ingest CLI subcommand.
|
|
207
262
|
* @param args - Arguments after "ingest" (e.g., option flags and file/directory path)
|
|
263
|
+
* @param globalOptions - Global options parsed before the subcommand
|
|
208
264
|
*/
|
|
209
|
-
export async function runIngest(args) {
|
|
265
|
+
export async function runIngest(args, globalOptions = {}) {
|
|
210
266
|
// Parse CLI options
|
|
211
267
|
const { positional, options, help } = parseArgs(args);
|
|
212
268
|
// Handle --help
|
|
@@ -231,7 +287,8 @@ export async function runIngest(args) {
|
|
|
231
287
|
process.exit(1);
|
|
232
288
|
}
|
|
233
289
|
// Resolve config: CLI flags > env vars > defaults
|
|
234
|
-
const
|
|
290
|
+
const globalConfig = resolveGlobalConfig(globalOptions);
|
|
291
|
+
const config = resolveConfig(globalConfig, options);
|
|
235
292
|
const excludePaths = [`${resolve(config.dbPath)}/`, `${resolve(config.cacheDir)}/`];
|
|
236
293
|
// Collect files
|
|
237
294
|
const files = await collectFiles(targetPath, excludePaths);
|
|
@@ -246,15 +303,8 @@ export async function runIngest(args) {
|
|
|
246
303
|
maxFileSize: config.maxFileSize,
|
|
247
304
|
});
|
|
248
305
|
const chunker = new SemanticChunker();
|
|
249
|
-
const embedder =
|
|
250
|
-
|
|
251
|
-
batchSize: 16,
|
|
252
|
-
cacheDir: config.cacheDir,
|
|
253
|
-
});
|
|
254
|
-
const vectorStore = new VectorStore({
|
|
255
|
-
dbPath: config.dbPath,
|
|
256
|
-
tableName: 'chunks',
|
|
257
|
-
});
|
|
306
|
+
const embedder = createEmbedder(globalConfig);
|
|
307
|
+
const vectorStore = createVectorStore(globalConfig);
|
|
258
308
|
await vectorStore.initialize();
|
|
259
309
|
// Process each file
|
|
260
310
|
const summary = { succeeded: 0, failed: 0, totalChunks: 0 };
|
package/dist/cli/ingest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/cli/ingest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/cli/ingest.ts"],"names":[],"mappings":"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"}
|