@ssmeo/mcp-local-rag 0.18.6
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.de.md +441 -0
- package/README.es.md +441 -0
- package/README.fr.md +441 -0
- package/README.md +530 -0
- package/README.pt-BR.md +441 -0
- package/README.zh-CN.md +441 -0
- package/dist/bin/install-skills.d.ts +19 -0
- package/dist/bin/install-skills.d.ts.map +1 -0
- package/dist/bin/install-skills.js +218 -0
- package/dist/bin/install-skills.js.map +1 -0
- package/dist/chunker/index.d.ts +24 -0
- package/dist/chunker/index.d.ts.map +1 -0
- package/dist/chunker/index.js +2 -0
- package/dist/chunker/index.js.map +1 -0
- package/dist/chunker/semantic-chunker.d.ts +96 -0
- package/dist/chunker/semantic-chunker.d.ts.map +1 -0
- package/dist/chunker/semantic-chunker.js +362 -0
- package/dist/chunker/semantic-chunker.js.map +1 -0
- package/dist/chunker/sentence-splitter.d.ts +32 -0
- package/dist/chunker/sentence-splitter.d.ts.map +1 -0
- package/dist/chunker/sentence-splitter.js +231 -0
- package/dist/chunker/sentence-splitter.js.map +1 -0
- package/dist/chunker/token-containment.d.ts +39 -0
- package/dist/chunker/token-containment.d.ts.map +1 -0
- package/dist/chunker/token-containment.js +83 -0
- package/dist/chunker/token-containment.js.map +1 -0
- package/dist/cli/common.d.ts +34 -0
- package/dist/cli/common.d.ts.map +1 -0
- package/dist/cli/common.js +121 -0
- package/dist/cli/common.js.map +1 -0
- package/dist/cli/delete.d.ts +3 -0
- package/dist/cli/delete.d.ts.map +1 -0
- package/dist/cli/delete.js +169 -0
- package/dist/cli/delete.js.map +1 -0
- package/dist/cli/file-collection.d.ts +2 -0
- package/dist/cli/file-collection.d.ts.map +1 -0
- package/dist/cli/file-collection.js +53 -0
- package/dist/cli/file-collection.js.map +1 -0
- package/dist/cli/ingest.d.ts +69 -0
- package/dist/cli/ingest.d.ts.map +1 -0
- package/dist/cli/ingest.js +323 -0
- package/dist/cli/ingest.js.map +1 -0
- package/dist/cli/list.d.ts +27 -0
- package/dist/cli/list.d.ts.map +1 -0
- package/dist/cli/list.js +207 -0
- package/dist/cli/list.js.map +1 -0
- package/dist/cli/options.d.ts +89 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +244 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/query.d.ts +17 -0
- package/dist/cli/query.d.ts.map +1 -0
- package/dist/cli/query.js +194 -0
- package/dist/cli/query.js.map +1 -0
- package/dist/cli/read-neighbors.d.ts +3 -0
- package/dist/cli/read-neighbors.d.ts.map +1 -0
- package/dist/cli/read-neighbors.js +192 -0
- package/dist/cli/read-neighbors.js.map +1 -0
- package/dist/cli/status.d.ts +6 -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/sync.d.ts +6 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +271 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli-main.d.ts +9 -0
- package/dist/cli-main.d.ts.map +1 -0
- package/dist/cli-main.js +60 -0
- package/dist/cli-main.js.map +1 -0
- package/dist/embedder/index.d.ts +143 -0
- package/dist/embedder/index.d.ts.map +1 -0
- package/dist/embedder/index.js +429 -0
- package/dist/embedder/index.js.map +1 -0
- package/dist/embedder/remote.d.ts +51 -0
- package/dist/embedder/remote.d.ts.map +1 -0
- package/dist/embedder/remote.js +182 -0
- package/dist/embedder/remote.js.map +1 -0
- package/dist/features/list.d.ts +37 -0
- package/dist/features/list.d.ts.map +1 -0
- package/dist/features/list.js +41 -0
- package/dist/features/list.js.map +1 -0
- package/dist/features/sync.d.ts +219 -0
- package/dist/features/sync.d.ts.map +1 -0
- package/dist/features/sync.js +461 -0
- package/dist/features/sync.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/ingest/compute.d.ts +63 -0
- package/dist/ingest/compute.d.ts.map +1 -0
- package/dist/ingest/compute.js +161 -0
- package/dist/ingest/compute.js.map +1 -0
- package/dist/ingest/file.d.ts +40 -0
- package/dist/ingest/file.d.ts.map +1 -0
- package/dist/ingest/file.js +74 -0
- package/dist/ingest/file.js.map +1 -0
- package/dist/ingest/visual.d.ts +52 -0
- package/dist/ingest/visual.d.ts.map +1 -0
- package/dist/ingest/visual.js +294 -0
- package/dist/ingest/visual.js.map +1 -0
- package/dist/parser/docx-parser.d.ts +12 -0
- package/dist/parser/docx-parser.d.ts.map +1 -0
- package/dist/parser/docx-parser.js +375 -0
- package/dist/parser/docx-parser.js.map +1 -0
- package/dist/parser/html-parser.d.ts +16 -0
- package/dist/parser/html-parser.d.ts.map +1 -0
- package/dist/parser/html-parser.js +119 -0
- package/dist/parser/html-parser.js.map +1 -0
- package/dist/parser/index.d.ts +125 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +364 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/pdf-extract.d.ts +49 -0
- package/dist/parser/pdf-extract.d.ts.map +1 -0
- package/dist/parser/pdf-extract.js +114 -0
- package/dist/parser/pdf-extract.js.map +1 -0
- package/dist/parser/pdf-filter.d.ts +91 -0
- package/dist/parser/pdf-filter.d.ts.map +1 -0
- package/dist/parser/pdf-filter.js +522 -0
- package/dist/parser/pdf-filter.js.map +1 -0
- package/dist/parser/title-extractor.d.ts +28 -0
- package/dist/parser/title-extractor.d.ts.map +1 -0
- package/dist/parser/title-extractor.js +105 -0
- package/dist/parser/title-extractor.js.map +1 -0
- package/dist/pdf-visual/captioner.d.ts +11 -0
- package/dist/pdf-visual/captioner.d.ts.map +1 -0
- package/dist/pdf-visual/captioner.js +48 -0
- package/dist/pdf-visual/captioner.js.map +1 -0
- package/dist/pdf-visual/captioners/fast.d.ts +7 -0
- package/dist/pdf-visual/captioners/fast.d.ts.map +1 -0
- package/dist/pdf-visual/captioners/fast.js +108 -0
- package/dist/pdf-visual/captioners/fast.js.map +1 -0
- package/dist/pdf-visual/captioners/quality.d.ts +7 -0
- package/dist/pdf-visual/captioners/quality.d.ts.map +1 -0
- package/dist/pdf-visual/captioners/quality.js +101 -0
- package/dist/pdf-visual/captioners/quality.js.map +1 -0
- package/dist/pdf-visual/captioners/shared.d.ts +81 -0
- package/dist/pdf-visual/captioners/shared.d.ts.map +1 -0
- package/dist/pdf-visual/captioners/shared.js +156 -0
- package/dist/pdf-visual/captioners/shared.js.map +1 -0
- package/dist/pdf-visual/detector.d.ts +9 -0
- package/dist/pdf-visual/detector.d.ts.map +1 -0
- package/dist/pdf-visual/detector.js +269 -0
- package/dist/pdf-visual/detector.js.map +1 -0
- package/dist/pdf-visual/index.d.ts +13 -0
- package/dist/pdf-visual/index.d.ts.map +1 -0
- package/dist/pdf-visual/index.js +53 -0
- package/dist/pdf-visual/index.js.map +1 -0
- package/dist/pdf-visual/renderer.d.ts +9 -0
- package/dist/pdf-visual/renderer.d.ts.map +1 -0
- package/dist/pdf-visual/renderer.js +186 -0
- package/dist/pdf-visual/renderer.js.map +1 -0
- package/dist/pdf-visual/types.d.ts +53 -0
- package/dist/pdf-visual/types.d.ts.map +1 -0
- package/dist/pdf-visual/types.js +17 -0
- package/dist/pdf-visual/types.js.map +1 -0
- package/dist/server/error-utils.d.ts +63 -0
- package/dist/server/error-utils.d.ts.map +1 -0
- package/dist/server/error-utils.js +124 -0
- package/dist/server/error-utils.js.map +1 -0
- package/dist/server/index.d.ts +216 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +1068 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/list-scanner.d.ts +30 -0
- package/dist/server/list-scanner.d.ts.map +1 -0
- package/dist/server/list-scanner.js +50 -0
- package/dist/server/list-scanner.js.map +1 -0
- package/dist/server/tool-definitions.d.ts +8 -0
- package/dist/server/tool-definitions.d.ts.map +1 -0
- package/dist/server/tool-definitions.js +181 -0
- package/dist/server/tool-definitions.js.map +1 -0
- package/dist/server/tool-input.d.ts +37 -0
- package/dist/server/tool-input.d.ts.map +1 -0
- package/dist/server/tool-input.js +211 -0
- package/dist/server/tool-input.js.map +1 -0
- package/dist/server/types.d.ts +307 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +3 -0
- package/dist/server/types.js.map +1 -0
- package/dist/server-main.d.ts +40 -0
- package/dist/server-main.d.ts.map +1 -0
- package/dist/server-main.js +254 -0
- package/dist/server-main.js.map +1 -0
- package/dist/utils/base-dirs.d.ts +145 -0
- package/dist/utils/base-dirs.d.ts.map +1 -0
- package/dist/utils/base-dirs.js +344 -0
- package/dist/utils/base-dirs.js.map +1 -0
- package/dist/utils/errors.d.ts +32 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +61 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/limits.d.ts +26 -0
- package/dist/utils/limits.d.ts.map +1 -0
- package/dist/utils/limits.js +28 -0
- package/dist/utils/limits.js.map +1 -0
- package/dist/utils/list-sources.d.ts +38 -0
- package/dist/utils/list-sources.d.ts.map +1 -0
- package/dist/utils/list-sources.js +40 -0
- package/dist/utils/list-sources.js.map +1 -0
- package/dist/utils/raw-data-utils.d.ts +76 -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/dist/utils/scan.d.ts +114 -0
- package/dist/utils/scan.d.ts.map +1 -0
- package/dist/utils/scan.js +209 -0
- package/dist/utils/scan.js.map +1 -0
- package/dist/utils/scope-match.d.ts +38 -0
- package/dist/utils/scope-match.d.ts.map +1 -0
- package/dist/utils/scope-match.js +86 -0
- package/dist/utils/scope-match.js.map +1 -0
- package/dist/utils/sensitive-path.d.ts +9 -0
- package/dist/utils/sensitive-path.d.ts.map +1 -0
- package/dist/utils/sensitive-path.js +78 -0
- package/dist/utils/sensitive-path.js.map +1 -0
- package/dist/utils/sync-path-key.d.ts +14 -0
- package/dist/utils/sync-path-key.d.ts.map +1 -0
- package/dist/utils/sync-path-key.js +27 -0
- package/dist/utils/sync-path-key.js.map +1 -0
- package/dist/utils/type-guards.d.ts +18 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +34 -0
- package/dist/utils/type-guards.js.map +1 -0
- package/dist/utils/visual-profile.d.ts +10 -0
- package/dist/utils/visual-profile.d.ts.map +1 -0
- package/dist/utils/visual-profile.js +15 -0
- package/dist/utils/visual-profile.js.map +1 -0
- package/dist/vectordb/index.d.ts +132 -0
- package/dist/vectordb/index.d.ts.map +1 -0
- package/dist/vectordb/index.js +617 -0
- package/dist/vectordb/index.js.map +1 -0
- package/dist/vectordb/search-filters.d.ts +15 -0
- package/dist/vectordb/search-filters.d.ts.map +1 -0
- package/dist/vectordb/search-filters.js +129 -0
- package/dist/vectordb/search-filters.js.map +1 -0
- package/dist/vectordb/types.d.ts +194 -0
- package/dist/vectordb/types.d.ts.map +1 -0
- package/dist/vectordb/types.js +237 -0
- package/dist/vectordb/types.js.map +1 -0
- package/package.json +108 -0
- package/skills/mcp-local-rag/SKILL.md +234 -0
- package/skills/mcp-local-rag/references/cli-reference.md +190 -0
- package/skills/mcp-local-rag/references/html-ingestion.md +78 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { RAGServerConfig } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* `list_files` presentation over {@link bfsCollectSupportedFiles}: renders the
|
|
4
|
+
* walker's coverage facts as sorted absolute paths plus non-fatal warnings.
|
|
5
|
+
*
|
|
6
|
+
* A `readdir` failure becomes a warning rather than aborting the call — one
|
|
7
|
+
* unreadable root must not hide files under the others. The depth-limit
|
|
8
|
+
* warning names the base directory and is emitted at most once per call,
|
|
9
|
+
* however many branches were pruned. Symlinks are skipped and not surfaced.
|
|
10
|
+
*/
|
|
11
|
+
export declare function scanBaseDir(baseDir: string, excludePaths: readonly string[], scope?: string[]): Promise<{
|
|
12
|
+
files: string[];
|
|
13
|
+
warnings: string[];
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Normalize both {@link RAGServerConfig} shapes into `{ baseDirs, baseDir }`.
|
|
17
|
+
*
|
|
18
|
+
* Empty `baseDirs` is accepted ONLY in degraded mode, where the server must
|
|
19
|
+
* stay constructible so `status` remains callable and `assertConfigOk` fails
|
|
20
|
+
* every root-dependent tool first. Without a configError an empty array is
|
|
21
|
+
* misuse — reject it rather than build a parser that rejects every path.
|
|
22
|
+
*
|
|
23
|
+
* `baseDir` is the legacy accessor, `baseDirs[0]`; empty-string in degraded
|
|
24
|
+
* mode, where nothing reaches it.
|
|
25
|
+
*/
|
|
26
|
+
export declare function normalizeBaseDirs(config: RAGServerConfig): {
|
|
27
|
+
baseDirs: string[];
|
|
28
|
+
baseDir: string;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=list-scanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-scanner.d.ts","sourceRoot":"","sources":["../../src/server/list-scanner.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAsBlD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG;IAC1D,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB,CASA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// Pure helpers for the `list_files` surface and base-dir config normalization,
|
|
2
|
+
// kept out of `RAGServer` so neither depends on instance state. Traversal lives
|
|
3
|
+
// in `utils/scan.ts`; only the wording, sort and warning selection are here.
|
|
4
|
+
import { displayPath } from '../utils/base-dirs.js';
|
|
5
|
+
import { MAX_SCAN_DEPTH } from '../utils/limits.js';
|
|
6
|
+
import { bfsCollectSupportedFiles } from '../utils/scan.js';
|
|
7
|
+
/**
|
|
8
|
+
* `list_files` presentation over {@link bfsCollectSupportedFiles}: renders the
|
|
9
|
+
* walker's coverage facts as sorted absolute paths plus non-fatal warnings.
|
|
10
|
+
*
|
|
11
|
+
* A `readdir` failure becomes a warning rather than aborting the call — one
|
|
12
|
+
* unreadable root must not hide files under the others. The depth-limit
|
|
13
|
+
* warning names the base directory and is emitted at most once per call,
|
|
14
|
+
* however many branches were pruned. Symlinks are skipped and not surfaced.
|
|
15
|
+
*/
|
|
16
|
+
export async function scanBaseDir(baseDir, excludePaths, scope) {
|
|
17
|
+
const { files, unreadableDirs, depthLimited } = await bfsCollectSupportedFiles(baseDir, excludePaths, {
|
|
18
|
+
maxDepth: MAX_SCAN_DEPTH,
|
|
19
|
+
scope,
|
|
20
|
+
});
|
|
21
|
+
const warnings = [];
|
|
22
|
+
for (const { dirPath, code } of unreadableDirs) {
|
|
23
|
+
warnings.push(`cannot read directory: ${displayPath(dirPath)} (${code})`);
|
|
24
|
+
}
|
|
25
|
+
if (depthLimited) {
|
|
26
|
+
warnings.push(`some directories under ${displayPath(baseDir)} were skipped because they exceed the maximum depth (${MAX_SCAN_DEPTH})`);
|
|
27
|
+
}
|
|
28
|
+
files.sort();
|
|
29
|
+
return { files, warnings };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Normalize both {@link RAGServerConfig} shapes into `{ baseDirs, baseDir }`.
|
|
33
|
+
*
|
|
34
|
+
* Empty `baseDirs` is accepted ONLY in degraded mode, where the server must
|
|
35
|
+
* stay constructible so `status` remains callable and `assertConfigOk` fails
|
|
36
|
+
* every root-dependent tool first. Without a configError an empty array is
|
|
37
|
+
* misuse — reject it rather than build a parser that rejects every path.
|
|
38
|
+
*
|
|
39
|
+
* `baseDir` is the legacy accessor, `baseDirs[0]`; empty-string in degraded
|
|
40
|
+
* mode, where nothing reaches it.
|
|
41
|
+
*/
|
|
42
|
+
export function normalizeBaseDirs(config) {
|
|
43
|
+
const normalizedBaseDirs = config.baseDirs !== undefined ? [...config.baseDirs] : [config.baseDir];
|
|
44
|
+
const firstBaseDir = normalizedBaseDirs[0];
|
|
45
|
+
if (firstBaseDir === undefined && config.configError === undefined) {
|
|
46
|
+
throw new Error('RAGServerConfig must provide either `baseDir` or a non-empty `baseDirs` array (empty `baseDirs` is allowed only in degraded mode with `configError` set).');
|
|
47
|
+
}
|
|
48
|
+
return { baseDirs: normalizedBaseDirs, baseDir: firstBaseDir ?? '' };
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=list-scanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-scanner.js","sourceRoot":"","sources":["../../src/server/list-scanner.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAE7E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAG3D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAe,EACf,YAA+B,EAC/B,KAAgB;IAEhB,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,MAAM,wBAAwB,CAC5E,OAAO,EACP,YAAY,EACZ;QACE,QAAQ,EAAE,cAAc;QACxB,KAAK;KACN,CACF,CAAA;IAED,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,cAAc,EAAE,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,0BAA0B,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAA;IAC3E,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CACX,0BAA0B,WAAW,CAAC,OAAO,CAAC,wDAAwD,cAAc,GAAG,CACxH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI,EAAE,CAAA;IACZ,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;AAC5B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAuB;IAIvD,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAClG,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAA;IAC1C,IAAI,YAAY,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,2JAA2J,CAC5J,CAAA;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,YAAY,IAAI,EAAE,EAAE,CAAA;AACtE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* All MCP tool definitions for the RAG server.
|
|
4
|
+
* These are purely declarative schema objects that describe
|
|
5
|
+
* what tools exist and their input parameters.
|
|
6
|
+
*/
|
|
7
|
+
export declare const toolDefinitions: Tool[];
|
|
8
|
+
//# sourceMappingURL=tool-definitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-definitions.d.ts","sourceRoot":"","sources":["../../src/server/tool-definitions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAA;AAK9D;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,IAAI,EA8LjC,CAAA"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
// MCP tool schema definitions for RAGServer
|
|
2
|
+
import { MAX_NEIGHBOR_COUNT, MAX_QUERY_LIMIT, MIN_QUERY_LIMIT } from '../utils/limits.js';
|
|
3
|
+
import { CONTENT_FORMATS } from '../utils/raw-data-utils.js';
|
|
4
|
+
import { QUALITY_PROFILES } from '../utils/visual-profile.js';
|
|
5
|
+
/**
|
|
6
|
+
* All MCP tool definitions for the RAG server.
|
|
7
|
+
* These are purely declarative schema objects that describe
|
|
8
|
+
* what tools exist and their input parameters.
|
|
9
|
+
*/
|
|
10
|
+
export const toolDefinitions = [
|
|
11
|
+
{
|
|
12
|
+
name: 'query_documents',
|
|
13
|
+
description: 'Search ingested documents with hybrid keyword + semantic matching. Returns results sorted by relevance, each with filePath, chunkIndex, text, fileTitle, score (0 = best, higher = worse), and source (for ingest_data items).',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
query: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'Search query. Preserve specific user terms (for keyword match); add context when the query is vague (for semantic match).',
|
|
20
|
+
},
|
|
21
|
+
limit: {
|
|
22
|
+
type: 'number',
|
|
23
|
+
minimum: MIN_QUERY_LIMIT,
|
|
24
|
+
maximum: MAX_QUERY_LIMIT,
|
|
25
|
+
description: `Max results (default 10, range ${MIN_QUERY_LIMIT}-${MAX_QUERY_LIMIT}). Lower favors precision, higher recall.`,
|
|
26
|
+
},
|
|
27
|
+
scope: {
|
|
28
|
+
oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],
|
|
29
|
+
description: 'Optional absolute path prefix(es) — one string or a list (unioned) — restricting results to a filePath equal to or under a prefix. "/docs/api" matches "/docs/api/auth.md" but not "/docs/apiv2". Must be absolute (server OS style); a relative prefix matches nothing — derive one from a filePath returned by an earlier query, or omit scope.',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
required: ['query'],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'ingest_file',
|
|
37
|
+
description: 'Ingest a document file (PDF, DOCX, TXT, MD) into the vector database. Path must be absolute; re-ingesting the same path replaces its existing data. Returns { filePath, chunkCount, timestamp, fileTitle }.',
|
|
38
|
+
inputSchema: {
|
|
39
|
+
type: 'object',
|
|
40
|
+
properties: {
|
|
41
|
+
filePath: {
|
|
42
|
+
type: 'string',
|
|
43
|
+
description: 'Absolute path to the file to ingest. Example: "/Users/user/documents/manual.pdf"',
|
|
44
|
+
},
|
|
45
|
+
visual: {
|
|
46
|
+
type: 'boolean',
|
|
47
|
+
description: 'Run VLM captioning on figure pages (PDF only; default false).',
|
|
48
|
+
},
|
|
49
|
+
visualQuality: {
|
|
50
|
+
type: 'string',
|
|
51
|
+
enum: [...QUALITY_PROFILES],
|
|
52
|
+
default: 'fast',
|
|
53
|
+
description: 'VLM profile when visual is true (default "fast"). "quality" is more accurate on figures with in-image text but much heavier and slower. Ignored when visual is false.',
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
required: ['filePath'],
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'ingest_data',
|
|
61
|
+
description: 'Ingest in-memory content as a string (use ingest_file for files on disk). The source identifier enables re-ingestion to update existing content. Returns { filePath, chunkCount, timestamp, fileTitle }.',
|
|
62
|
+
inputSchema: {
|
|
63
|
+
type: 'object',
|
|
64
|
+
properties: {
|
|
65
|
+
content: {
|
|
66
|
+
type: 'string',
|
|
67
|
+
description: 'The content to ingest (text, HTML, or Markdown)',
|
|
68
|
+
},
|
|
69
|
+
metadata: {
|
|
70
|
+
type: 'object',
|
|
71
|
+
properties: {
|
|
72
|
+
source: {
|
|
73
|
+
type: 'string',
|
|
74
|
+
description: 'Source identifier. For web pages, use the URL (e.g., "https://example.com/page"). For other content, use URL-scheme format: "{type}://{date}" or "{type}://{date}/{detail}". Examples: "clipboard://2024-12-30", "chat://2024-12-30/project-discussion", "note://2024-12-30/meeting".',
|
|
75
|
+
},
|
|
76
|
+
format: {
|
|
77
|
+
type: 'string',
|
|
78
|
+
enum: [...CONTENT_FORMATS],
|
|
79
|
+
description: 'Content format: text (plain/copied text), html (fetched web pages), or markdown.',
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
required: ['source', 'format'],
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
required: ['content', 'metadata'],
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'delete_file',
|
|
90
|
+
description: 'Delete a previously ingested file or data from the vector database. Use filePath for files ingested via ingest_file, or source for data ingested via ingest_data. Either filePath or source must be provided. Returns deleted (operation succeeded), removedChunks, and existed (whether anything was actually present).',
|
|
91
|
+
inputSchema: {
|
|
92
|
+
type: 'object',
|
|
93
|
+
properties: {
|
|
94
|
+
filePath: {
|
|
95
|
+
type: 'string',
|
|
96
|
+
description: 'Absolute path to the file (for ingest_file). Example: "/Users/user/documents/manual.pdf"',
|
|
97
|
+
},
|
|
98
|
+
source: {
|
|
99
|
+
type: 'string',
|
|
100
|
+
description: 'Source identifier used in ingest_data. Examples: "https://example.com/page", "clipboard://2024-12-30"',
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: 'list_files',
|
|
107
|
+
description: 'List supported files (PDF, DOCX, TXT, MD) under the configured base directories and whether each is ingested. Returns { baseDirs, files, sources }; sources lists ingested items reported apart from the file scan, chiefly ingest_data content (web pages, clipboard, etc.).',
|
|
108
|
+
inputSchema: {
|
|
109
|
+
type: 'object',
|
|
110
|
+
properties: {
|
|
111
|
+
scope: {
|
|
112
|
+
oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],
|
|
113
|
+
description: 'Optional absolute path prefix(es) — one string or a list (unioned) — restricting the listing to files reachable at a path equal to or under a prefix within the base directories. "/docs/api" matches "/docs/api/x.md" but not "/docs/apiv2". Must be absolute (server OS style); a relative prefix matches nothing. A prefix outside every base directory yields an empty files list, so compare it against the baseDirs in the response before concluding no files exist. Scope filters files by their scan path; ingest_data sources, which have no base-directory path, are always listed.',
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'status',
|
|
120
|
+
description: 'Get index status: { documentCount, chunkCount, memoryUsage (MB), uptime (s), ftsIndexEnabled, searchMode }.',
|
|
121
|
+
inputSchema: { type: 'object', properties: {} },
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
name: 'read_chunk_neighbors',
|
|
125
|
+
description: `Read the chunks immediately before and after a query_documents result, in the same document, for more surrounding context. Pass chunkIndex from the result plus exactly one of filePath (ingest_file) or source (ingest_data). Returns the target chunk (isTarget: true) and its neighbors, ascending by chunkIndex; an out-of-range chunkIndex returns []. Defaults: before=2, after=2 (max ${MAX_NEIGHBOR_COUNT} each).`,
|
|
126
|
+
inputSchema: {
|
|
127
|
+
type: 'object',
|
|
128
|
+
properties: {
|
|
129
|
+
filePath: {
|
|
130
|
+
type: 'string',
|
|
131
|
+
description: 'Absolute path to the file (for ingest_file documents). Provide exactly one of filePath or source. Example: "/Users/user/documents/manual.pdf".',
|
|
132
|
+
},
|
|
133
|
+
source: {
|
|
134
|
+
type: 'string',
|
|
135
|
+
description: 'Source identifier (for ingest_data documents). Provide exactly one of filePath or source. Examples: "https://example.com/page", "clipboard://2024-12-30".',
|
|
136
|
+
},
|
|
137
|
+
chunkIndex: {
|
|
138
|
+
type: 'number',
|
|
139
|
+
description: 'Zero-based target chunk index (non-negative integer).',
|
|
140
|
+
},
|
|
141
|
+
before: {
|
|
142
|
+
type: 'number',
|
|
143
|
+
description: `Number of chunks to retrieve before the target (0–${MAX_NEIGHBOR_COUNT}, default 2).`,
|
|
144
|
+
},
|
|
145
|
+
after: {
|
|
146
|
+
type: 'number',
|
|
147
|
+
description: `Number of chunks to retrieve after the target (0–${MAX_NEIGHBOR_COUNT}, default 2).`,
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
required: ['chunkIndex'],
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: 'sync_start',
|
|
155
|
+
description: 'Reconcile the index with the files on disk: ingest new and changed files, leave unchanged files alone, and remove index entries for files that are gone. Each changed PDF is re-ingested with the visual profile ("fast" or "quality") already recorded for it, so a PDF indexed with VLM captions keeps them; a PDF with no recorded profile stays text-only. There is no option to change a profile here — use the CLI (mcp-local-rag sync --visual) to set one, or ingest_file to replace the file, where a normal ingest clears the recorded profile. Stored images are unrelated: STORE_IMAGES applies to whatever this run re-ingests and never makes a file changed. Returns { jobId } without waiting for the run to finish; poll sync_status with that jobId for progress and the final outcome. Only one job is kept, and it is lost when the server process exits.',
|
|
156
|
+
inputSchema: {
|
|
157
|
+
type: 'object',
|
|
158
|
+
properties: {
|
|
159
|
+
path: {
|
|
160
|
+
type: 'string',
|
|
161
|
+
description: 'Optional absolute path to a file or directory inside a configured base directory; list_files returns those directories as baseDirs. A file synchronizes only itself and a directory only its own subtree, leaving every path outside it untouched. Omit it to synchronize every configured base directory.',
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
name: 'sync_status',
|
|
168
|
+
description: 'Get the current or latest sync job record: { jobId, state ("running" | "succeeded" | "failed"), total (null until scanning has counted the files on disk), completed (upserted + skipped + empty; pruned is counted separately), summary { upserted, skipped, empty, pruned }, warnings, error (null unless the job failed) }. An unknown jobId means the job was replaced by a newer one or lost with a previous server process.',
|
|
169
|
+
inputSchema: {
|
|
170
|
+
type: 'object',
|
|
171
|
+
properties: {
|
|
172
|
+
jobId: {
|
|
173
|
+
type: 'string',
|
|
174
|
+
description: 'Identifier returned by sync_start.',
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
required: ['jobId'],
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
];
|
|
181
|
+
//# sourceMappingURL=tool-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-definitions.js","sourceRoot":"","sources":["../../src/server/tool-definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { DeleteFileInput, IngestDataInput, IngestFileInput, ListFilesInput, QueryDocumentsInput, ReadChunkNeighborsInput, SyncStartInput, SyncStatusInput } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Validate `query_documents` arguments. `query` must be a non-empty string;
|
|
4
|
+
* `limit`, when provided, must be a positive integer (the handler defaults it
|
|
5
|
+
* to 10 when absent).
|
|
6
|
+
*/
|
|
7
|
+
export declare function parseQueryDocumentsInput(raw: unknown): QueryDocumentsInput;
|
|
8
|
+
/**
|
|
9
|
+
* Validate `list_files` arguments. The tool historically takes no arguments, so
|
|
10
|
+
* an omitted `arguments` (`undefined`) or `{}` is accepted as "no scope". When
|
|
11
|
+
* `scope` is present, it is normalized the same way as `query_documents`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseListFilesInput(raw: unknown): ListFilesInput;
|
|
14
|
+
/**
|
|
15
|
+
* Validate `ingest_data` arguments. `content` must be a non-empty string;
|
|
16
|
+
* `metadata` must be an object with a non-empty `source` string and a `format`
|
|
17
|
+
* in the supported set.
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseIngestDataInput(raw: unknown): IngestDataInput;
|
|
20
|
+
export declare function parseIngestFileInput(raw: unknown): IngestFileInput;
|
|
21
|
+
export declare function parseDeleteFileInput(raw: unknown): DeleteFileInput;
|
|
22
|
+
export declare function parseReadChunkNeighborsInput(raw: unknown): ReadChunkNeighborsInput;
|
|
23
|
+
/**
|
|
24
|
+
* `sync_start` is legitimately callable with no arguments — an omitted `path`
|
|
25
|
+
* means every configured root — so `undefined` and `{}` both pass, as with
|
|
26
|
+
* `list_files`.
|
|
27
|
+
*
|
|
28
|
+
* Root containment is deliberately not checked here: the sync core owns that
|
|
29
|
+
* rule, so the CLI and MCP surfaces cannot drift.
|
|
30
|
+
*/
|
|
31
|
+
export declare function parseSyncStartInput(raw: unknown): SyncStartInput;
|
|
32
|
+
/**
|
|
33
|
+
* Validate `sync_status` arguments. `jobId` is required; an unknown but
|
|
34
|
+
* well-formed id is the handler's concern, not this boundary's.
|
|
35
|
+
*/
|
|
36
|
+
export declare function parseSyncStatusInput(raw: unknown): SyncStatusInput;
|
|
37
|
+
//# sourceMappingURL=tool-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-input.d.ts","sourceRoot":"","sources":["../../src/server/tool-input.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,eAAe,EAChB,MAAM,YAAY,CAAA;AA+BnB;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CA+B1E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAchE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAuBlE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAsBlE;AAMD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAclE;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,uBAAuB,CA2BlF;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CA2BhE;AASD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAiBlE"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
// Runtime validation for MCP tool arguments, which arrive as `unknown` from
|
|
2
|
+
// the SDK. These reject malformed input at the entry boundary with
|
|
3
|
+
// `McpError(InvalidParams)`, without leaking internal diagnostics.
|
|
4
|
+
import { isAbsolute } from 'node:path';
|
|
5
|
+
import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
import { MAX_NEIGHBOR_COUNT, MAX_QUERY_LIMIT, MIN_QUERY_LIMIT } from '../utils/limits.js';
|
|
7
|
+
import { CONTENT_FORMATS } from '../utils/raw-data-utils.js';
|
|
8
|
+
import { isInteger, isMemberOf, isRecord } from '../utils/type-guards.js';
|
|
9
|
+
import { QUALITY_PROFILES } from '../utils/visual-profile.js';
|
|
10
|
+
const SCOPE_ERROR = 'scope must be a non-empty string or a non-empty array of non-empty strings';
|
|
11
|
+
/**
|
|
12
|
+
* Normalize the optional `scope` to a trimmed `string[]`, rejecting any other
|
|
13
|
+
* shape with `McpError(InvalidParams)`. Mirrors the `limit` boundary check.
|
|
14
|
+
*/
|
|
15
|
+
function normalizeScope(scope) {
|
|
16
|
+
const isNonEmptyString = (value) => typeof value === 'string' && value.trim().length > 0;
|
|
17
|
+
// Trim so whitespace-padded prefixes don't silently match nothing.
|
|
18
|
+
if (isNonEmptyString(scope)) {
|
|
19
|
+
return [scope.trim()];
|
|
20
|
+
}
|
|
21
|
+
if (Array.isArray(scope) && scope.length > 0 && scope.every(isNonEmptyString)) {
|
|
22
|
+
return scope.map((value) => value.trim());
|
|
23
|
+
}
|
|
24
|
+
throw new McpError(ErrorCode.InvalidParams, SCOPE_ERROR);
|
|
25
|
+
}
|
|
26
|
+
function asRecord(raw, label) {
|
|
27
|
+
if (!isRecord(raw) || Array.isArray(raw)) {
|
|
28
|
+
throw new McpError(ErrorCode.InvalidParams, `${label} arguments must be an object`);
|
|
29
|
+
}
|
|
30
|
+
return raw;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validate `query_documents` arguments. `query` must be a non-empty string;
|
|
34
|
+
* `limit`, when provided, must be a positive integer (the handler defaults it
|
|
35
|
+
* to 10 when absent).
|
|
36
|
+
*/
|
|
37
|
+
export function parseQueryDocumentsInput(raw) {
|
|
38
|
+
const obj = asRecord(raw, 'query_documents');
|
|
39
|
+
const { query, limit, scope } = obj;
|
|
40
|
+
if (typeof query !== 'string' || query.trim().length === 0) {
|
|
41
|
+
throw new McpError(ErrorCode.InvalidParams, 'query must be a non-empty string');
|
|
42
|
+
}
|
|
43
|
+
const input = { query };
|
|
44
|
+
if (limit !== undefined) {
|
|
45
|
+
// Bound to 1-20 at the entry boundary — the same range VectorStore.search
|
|
46
|
+
// enforces and the CLI `--limit` accepts. Rejecting here returns a clean
|
|
47
|
+
// McpError(InvalidParams) instead of letting an out-of-range value reach
|
|
48
|
+
// search() and surface as a DatabaseError.
|
|
49
|
+
if (typeof limit !== 'number' ||
|
|
50
|
+
!Number.isInteger(limit) ||
|
|
51
|
+
limit < MIN_QUERY_LIMIT ||
|
|
52
|
+
limit > MAX_QUERY_LIMIT) {
|
|
53
|
+
throw new McpError(ErrorCode.InvalidParams, 'limit must be an integer between 1 and 20');
|
|
54
|
+
}
|
|
55
|
+
input.limit = limit;
|
|
56
|
+
}
|
|
57
|
+
if (scope !== undefined) {
|
|
58
|
+
input.scope = normalizeScope(scope);
|
|
59
|
+
}
|
|
60
|
+
return input;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Validate `list_files` arguments. The tool historically takes no arguments, so
|
|
64
|
+
* an omitted `arguments` (`undefined`) or `{}` is accepted as "no scope". When
|
|
65
|
+
* `scope` is present, it is normalized the same way as `query_documents`.
|
|
66
|
+
*/
|
|
67
|
+
export function parseListFilesInput(raw) {
|
|
68
|
+
// Preserve the no-argument contract: `asRecord` rejects `undefined`, so
|
|
69
|
+
// short-circuit before it to avoid a spurious McpError on no-arg calls.
|
|
70
|
+
if (raw === undefined) {
|
|
71
|
+
return {};
|
|
72
|
+
}
|
|
73
|
+
const { scope } = asRecord(raw, 'list_files');
|
|
74
|
+
if (scope === undefined) {
|
|
75
|
+
return {};
|
|
76
|
+
}
|
|
77
|
+
return { scope: normalizeScope(scope) };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Validate `ingest_data` arguments. `content` must be a non-empty string;
|
|
81
|
+
* `metadata` must be an object with a non-empty `source` string and a `format`
|
|
82
|
+
* in the supported set.
|
|
83
|
+
*/
|
|
84
|
+
export function parseIngestDataInput(raw) {
|
|
85
|
+
const obj = asRecord(raw, 'ingest_data');
|
|
86
|
+
const { content, metadata } = obj;
|
|
87
|
+
if (typeof content !== 'string' || content.length === 0) {
|
|
88
|
+
throw new McpError(ErrorCode.InvalidParams, 'content must be a non-empty string');
|
|
89
|
+
}
|
|
90
|
+
const meta = asRecord(metadata, 'ingest_data metadata');
|
|
91
|
+
const { source, format } = meta;
|
|
92
|
+
if (typeof source !== 'string' || source.trim().length === 0) {
|
|
93
|
+
throw new McpError(ErrorCode.InvalidParams, 'metadata.source must be a non-empty string');
|
|
94
|
+
}
|
|
95
|
+
if (typeof format !== 'string' || !isMemberOf(CONTENT_FORMATS, format)) {
|
|
96
|
+
throw new McpError(ErrorCode.InvalidParams, `metadata.format must be one of: ${CONTENT_FORMATS.join(', ')}`);
|
|
97
|
+
}
|
|
98
|
+
return { content, metadata: { source, format } };
|
|
99
|
+
}
|
|
100
|
+
export function parseIngestFileInput(raw) {
|
|
101
|
+
const { filePath, visual, visualQuality } = asRecord(raw, 'ingest_file');
|
|
102
|
+
if (typeof filePath !== 'string' || filePath.trim().length === 0) {
|
|
103
|
+
throw new McpError(ErrorCode.InvalidParams, 'filePath must be a non-empty string');
|
|
104
|
+
}
|
|
105
|
+
if (visual !== undefined && typeof visual !== 'boolean') {
|
|
106
|
+
throw new McpError(ErrorCode.InvalidParams, "'visual' must be a boolean if provided");
|
|
107
|
+
}
|
|
108
|
+
const hasQualityProfile = typeof visualQuality === 'string' && isMemberOf(QUALITY_PROFILES, visualQuality);
|
|
109
|
+
if (visualQuality !== undefined && visualQuality !== '' && !hasQualityProfile) {
|
|
110
|
+
throw new McpError(ErrorCode.InvalidParams, "'visualQuality' must be 'fast' or 'quality' if provided");
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
filePath,
|
|
114
|
+
...(visual !== undefined ? { visual } : {}),
|
|
115
|
+
...(hasQualityProfile ? { visualQuality } : {}),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function nonEmptyString(value) {
|
|
119
|
+
return typeof value === 'string' && value.trim().length > 0;
|
|
120
|
+
}
|
|
121
|
+
export function parseDeleteFileInput(raw) {
|
|
122
|
+
const { filePath, source } = asRecord(raw, 'delete_file');
|
|
123
|
+
const hasFilePath = nonEmptyString(filePath);
|
|
124
|
+
const hasSource = nonEmptyString(source);
|
|
125
|
+
if (hasFilePath && hasSource) {
|
|
126
|
+
throw new McpError(ErrorCode.InvalidParams, 'Provide either filePath or source, not both');
|
|
127
|
+
}
|
|
128
|
+
if (hasFilePath) {
|
|
129
|
+
return { filePath };
|
|
130
|
+
}
|
|
131
|
+
if (hasSource) {
|
|
132
|
+
return { source };
|
|
133
|
+
}
|
|
134
|
+
throw new McpError(ErrorCode.InvalidParams, 'Either filePath or source must be provided');
|
|
135
|
+
}
|
|
136
|
+
export function parseReadChunkNeighborsInput(raw) {
|
|
137
|
+
const { filePath, source, chunkIndex, before, after } = asRecord(raw, 'read_chunk_neighbors');
|
|
138
|
+
if (!isInteger(chunkIndex) || chunkIndex < 0) {
|
|
139
|
+
throw new McpError(ErrorCode.InvalidParams, 'chunkIndex must be a non-negative integer');
|
|
140
|
+
}
|
|
141
|
+
for (const [label, value] of [
|
|
142
|
+
['before', before],
|
|
143
|
+
['after', after],
|
|
144
|
+
]) {
|
|
145
|
+
if (value !== undefined && (!isInteger(value) || value < 0)) {
|
|
146
|
+
throw new McpError(ErrorCode.InvalidParams, `${label} must be a non-negative integer`);
|
|
147
|
+
}
|
|
148
|
+
if (typeof value === 'number' && value > MAX_NEIGHBOR_COUNT) {
|
|
149
|
+
throw new McpError(ErrorCode.InvalidParams, `${label} must be between 0 and 50 (got ${value})`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const ref = parseDeleteFileInput({ filePath, source });
|
|
153
|
+
return {
|
|
154
|
+
...ref,
|
|
155
|
+
chunkIndex,
|
|
156
|
+
...(isInteger(before) ? { before } : {}),
|
|
157
|
+
...(isInteger(after) ? { after } : {}),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* `sync_start` is legitimately callable with no arguments — an omitted `path`
|
|
162
|
+
* means every configured root — so `undefined` and `{}` both pass, as with
|
|
163
|
+
* `list_files`.
|
|
164
|
+
*
|
|
165
|
+
* Root containment is deliberately not checked here: the sync core owns that
|
|
166
|
+
* rule, so the CLI and MCP surfaces cannot drift.
|
|
167
|
+
*/
|
|
168
|
+
export function parseSyncStartInput(raw) {
|
|
169
|
+
if (raw === undefined) {
|
|
170
|
+
return {};
|
|
171
|
+
}
|
|
172
|
+
const { path } = asRecord(raw, 'sync_start');
|
|
173
|
+
if (path === undefined) {
|
|
174
|
+
return {};
|
|
175
|
+
}
|
|
176
|
+
if (!nonEmptyString(path)) {
|
|
177
|
+
throw new McpError(ErrorCode.InvalidParams, 'path must be a non-empty string');
|
|
178
|
+
}
|
|
179
|
+
// Trimmed for the same reason as `scope`: a whitespace-padded path would
|
|
180
|
+
// otherwise be resolved verbatim and silently match nothing on disk.
|
|
181
|
+
const trimmed = path.trim();
|
|
182
|
+
// A relative path would be resolved against the server process's working
|
|
183
|
+
// directory, which the caller cannot see. `ingest_file` and `delete_file`
|
|
184
|
+
// already require absolute paths, and the tool description promises one.
|
|
185
|
+
if (!isAbsolute(trimmed)) {
|
|
186
|
+
throw new McpError(ErrorCode.InvalidParams, 'path must be an absolute path');
|
|
187
|
+
}
|
|
188
|
+
return { path: trimmed };
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* A job id is a `randomUUID()` this server handed out. The alphabet and length
|
|
192
|
+
* are enforced because the value is echoed into an error message and a stderr
|
|
193
|
+
* line — an unbounded id containing a newline could forge a log line.
|
|
194
|
+
*/
|
|
195
|
+
const JOB_ID_PATTERN = /^[0-9a-fA-F-]{1,128}$/;
|
|
196
|
+
/**
|
|
197
|
+
* Validate `sync_status` arguments. `jobId` is required; an unknown but
|
|
198
|
+
* well-formed id is the handler's concern, not this boundary's.
|
|
199
|
+
*/
|
|
200
|
+
export function parseSyncStatusInput(raw) {
|
|
201
|
+
const { jobId } = asRecord(raw, 'sync_status');
|
|
202
|
+
if (!nonEmptyString(jobId)) {
|
|
203
|
+
throw new McpError(ErrorCode.InvalidParams, 'jobId must be a non-empty string');
|
|
204
|
+
}
|
|
205
|
+
const trimmed = jobId.trim();
|
|
206
|
+
if (!JOB_ID_PATTERN.test(trimmed)) {
|
|
207
|
+
throw new McpError(ErrorCode.InvalidParams, 'jobId must be at most 128 characters of hexadecimal digits and dashes');
|
|
208
|
+
}
|
|
209
|
+
return { jobId: trimmed };
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=tool-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-input.js","sourceRoot":"","sources":["../../src/server/tool-input.ts"],"names":[],"mappings":"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"}
|