@robthepcguy/rag-vault 1.0.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/LICENSE +24 -0
- package/README.md +421 -0
- package/dist/bin/install-skills.d.ts +20 -0
- package/dist/bin/install-skills.d.ts.map +1 -0
- package/dist/bin/install-skills.js +196 -0
- package/dist/bin/install-skills.js.map +1 -0
- package/dist/chunker/index.d.ts +11 -0
- package/dist/chunker/index.d.ts.map +1 -0
- package/dist/chunker/index.js +6 -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 +267 -0
- package/dist/chunker/semantic-chunker.js.map +1 -0
- package/dist/chunker/sentence-splitter.d.ts +16 -0
- package/dist/chunker/sentence-splitter.d.ts.map +1 -0
- package/dist/chunker/sentence-splitter.js +114 -0
- package/dist/chunker/sentence-splitter.js.map +1 -0
- package/dist/embedder/index.d.ts +55 -0
- package/dist/embedder/index.d.ts.map +1 -0
- package/dist/embedder/index.js +146 -0
- package/dist/embedder/index.js.map +1 -0
- package/dist/errors/index.d.ts +73 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +170 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +91 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/html-parser.d.ts +14 -0
- package/dist/parser/html-parser.d.ts.map +1 -0
- package/dist/parser/html-parser.js +99 -0
- package/dist/parser/html-parser.js.map +1 -0
- package/dist/parser/index.d.ts +144 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +446 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/pdf-filter.d.ts +89 -0
- package/dist/parser/pdf-filter.d.ts.map +1 -0
- package/dist/parser/pdf-filter.js +304 -0
- package/dist/parser/pdf-filter.js.map +1 -0
- package/dist/server/index.d.ts +144 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +518 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/raw-data-utils.d.ts +81 -0
- package/dist/server/raw-data-utils.d.ts.map +1 -0
- package/dist/server/raw-data-utils.js +196 -0
- package/dist/server/raw-data-utils.js.map +1 -0
- package/dist/server/schemas.d.ts +186 -0
- package/dist/server/schemas.d.ts.map +1 -0
- package/dist/server/schemas.js +99 -0
- package/dist/server/schemas.js.map +1 -0
- package/dist/utils/config-parsers.d.ts +14 -0
- package/dist/utils/config-parsers.d.ts.map +1 -0
- package/dist/utils/config-parsers.js +47 -0
- package/dist/utils/config-parsers.js.map +1 -0
- package/dist/utils/config.d.ts +37 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +52 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +36 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +64 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/math.d.ts +34 -0
- package/dist/utils/math.d.ts.map +1 -0
- package/dist/utils/math.js +73 -0
- package/dist/utils/math.js.map +1 -0
- package/dist/utils/process-handlers.d.ts +26 -0
- package/dist/utils/process-handlers.d.ts.map +1 -0
- package/dist/utils/process-handlers.js +69 -0
- package/dist/utils/process-handlers.js.map +1 -0
- package/dist/vectordb/index.d.ts +210 -0
- package/dist/vectordb/index.d.ts.map +1 -0
- package/dist/vectordb/index.js +613 -0
- package/dist/vectordb/index.js.map +1 -0
- package/dist/web/api-routes.d.ts +9 -0
- package/dist/web/api-routes.d.ts.map +1 -0
- package/dist/web/api-routes.js +127 -0
- package/dist/web/api-routes.js.map +1 -0
- package/dist/web/config-routes.d.ts +7 -0
- package/dist/web/config-routes.d.ts.map +1 -0
- package/dist/web/config-routes.js +54 -0
- package/dist/web/config-routes.js.map +1 -0
- package/dist/web/database-manager.d.ts +130 -0
- package/dist/web/database-manager.d.ts.map +1 -0
- package/dist/web/database-manager.js +382 -0
- package/dist/web/database-manager.js.map +1 -0
- package/dist/web/http-server.d.ts +28 -0
- package/dist/web/http-server.d.ts.map +1 -0
- package/dist/web/http-server.js +311 -0
- package/dist/web/http-server.js.map +1 -0
- package/dist/web/index.d.ts +3 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +114 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/middleware/async-handler.d.ts +17 -0
- package/dist/web/middleware/async-handler.d.ts.map +1 -0
- package/dist/web/middleware/async-handler.js +26 -0
- package/dist/web/middleware/async-handler.js.map +1 -0
- package/dist/web/middleware/auth.d.ts +22 -0
- package/dist/web/middleware/auth.d.ts.map +1 -0
- package/dist/web/middleware/auth.js +81 -0
- package/dist/web/middleware/auth.js.map +1 -0
- package/dist/web/middleware/error-handler.d.ts +36 -0
- package/dist/web/middleware/error-handler.d.ts.map +1 -0
- package/dist/web/middleware/error-handler.js +68 -0
- package/dist/web/middleware/error-handler.js.map +1 -0
- package/dist/web/middleware/index.d.ts +6 -0
- package/dist/web/middleware/index.d.ts.map +1 -0
- package/dist/web/middleware/index.js +19 -0
- package/dist/web/middleware/index.js.map +1 -0
- package/dist/web/middleware/rate-limit.d.ts +38 -0
- package/dist/web/middleware/rate-limit.d.ts.map +1 -0
- package/dist/web/middleware/rate-limit.js +116 -0
- package/dist/web/middleware/rate-limit.js.map +1 -0
- package/dist/web/middleware/request-logger.d.ts +52 -0
- package/dist/web/middleware/request-logger.d.ts.map +1 -0
- package/dist/web/middleware/request-logger.js +74 -0
- package/dist/web/middleware/request-logger.js.map +1 -0
- package/dist/web/types.d.ts +6 -0
- package/dist/web/types.d.ts.map +1 -0
- package/dist/web/types.js +4 -0
- package/dist/web/types.js.map +1 -0
- package/package.json +135 -0
- package/skills/rag-vault/SKILL.md +111 -0
- package/skills/rag-vault/references/html-ingestion.md +73 -0
- package/skills/rag-vault/references/query-optimization.md +57 -0
- package/skills/rag-vault/references/result-refinement.md +54 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
interface LogMeta {
|
|
2
|
+
[key: string]: unknown;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Logger utility with structured output
|
|
6
|
+
*
|
|
7
|
+
* All output goes to stderr to avoid interfering with MCP stdio transport.
|
|
8
|
+
* Use this instead of console.log/console.error directly.
|
|
9
|
+
*
|
|
10
|
+
* @internal - This is for internal use only, not part of public API.
|
|
11
|
+
* Currently exported for future migration of console.error() calls.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* logger.info('Server started', { port: 3000 })
|
|
15
|
+
* logger.error('Failed to process', { error: err.message })
|
|
16
|
+
*/
|
|
17
|
+
export declare const logger: {
|
|
18
|
+
/**
|
|
19
|
+
* Debug-level logging (only when DEBUG=true or LOG_LEVEL=debug)
|
|
20
|
+
*/
|
|
21
|
+
debug(message: string, meta?: LogMeta): void;
|
|
22
|
+
/**
|
|
23
|
+
* Info-level logging for normal operations
|
|
24
|
+
*/
|
|
25
|
+
info(message: string, meta?: LogMeta): void;
|
|
26
|
+
/**
|
|
27
|
+
* Warning-level logging for potential issues
|
|
28
|
+
*/
|
|
29
|
+
warn(message: string, meta?: LogMeta): void;
|
|
30
|
+
/**
|
|
31
|
+
* Error-level logging for failures
|
|
32
|
+
*/
|
|
33
|
+
error(message: string, meta?: LogMeta): void;
|
|
34
|
+
};
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAKA,UAAU,OAAO;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAsBD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,MAAM;IACjB;;OAEG;mBACY,MAAM,SAAS,OAAO,GAAG,IAAI;IAM5C;;OAEG;kBACW,MAAM,SAAS,OAAO,GAAG,IAAI;IAI3C;;OAEG;kBACW,MAAM,SAAS,OAAO,GAAG,IAAI;IAI3C;;OAEG;mBACY,MAAM,SAAS,OAAO,GAAG,IAAI;CAG7C,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Centralized logging utility
|
|
3
|
+
// Provides structured logging with levels and optional metadata
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.logger = void 0;
|
|
6
|
+
/**
|
|
7
|
+
* Format a log message with optional metadata
|
|
8
|
+
*/
|
|
9
|
+
function formatMessage(level, message, meta) {
|
|
10
|
+
const timestamp = new Date().toISOString();
|
|
11
|
+
const prefix = `[${timestamp}] [${level.toUpperCase()}]`;
|
|
12
|
+
if (meta && Object.keys(meta).length > 0) {
|
|
13
|
+
return `${prefix} ${message} ${JSON.stringify(meta)}`;
|
|
14
|
+
}
|
|
15
|
+
return `${prefix} ${message}`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Check if debug logging is enabled
|
|
19
|
+
*/
|
|
20
|
+
function isDebugEnabled() {
|
|
21
|
+
return process.env['DEBUG'] === 'true' || process.env['LOG_LEVEL'] === 'debug';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Logger utility with structured output
|
|
25
|
+
*
|
|
26
|
+
* All output goes to stderr to avoid interfering with MCP stdio transport.
|
|
27
|
+
* Use this instead of console.log/console.error directly.
|
|
28
|
+
*
|
|
29
|
+
* @internal - This is for internal use only, not part of public API.
|
|
30
|
+
* Currently exported for future migration of console.error() calls.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* logger.info('Server started', { port: 3000 })
|
|
34
|
+
* logger.error('Failed to process', { error: err.message })
|
|
35
|
+
*/
|
|
36
|
+
exports.logger = {
|
|
37
|
+
/**
|
|
38
|
+
* Debug-level logging (only when DEBUG=true or LOG_LEVEL=debug)
|
|
39
|
+
*/
|
|
40
|
+
debug(message, meta) {
|
|
41
|
+
if (isDebugEnabled()) {
|
|
42
|
+
console.error(formatMessage('debug', message, meta));
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
/**
|
|
46
|
+
* Info-level logging for normal operations
|
|
47
|
+
*/
|
|
48
|
+
info(message, meta) {
|
|
49
|
+
console.error(formatMessage('info', message, meta));
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* Warning-level logging for potential issues
|
|
53
|
+
*/
|
|
54
|
+
warn(message, meta) {
|
|
55
|
+
console.error(formatMessage('warn', message, meta));
|
|
56
|
+
},
|
|
57
|
+
/**
|
|
58
|
+
* Error-level logging for failures
|
|
59
|
+
*/
|
|
60
|
+
error(message, meta) {
|
|
61
|
+
console.error(formatMessage('error', message, meta));
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";AAAA,8BAA8B;AAC9B,gEAAgE;;;AAQhE;;GAEG;AACH,SAAS,aAAa,CAAC,KAAe,EAAE,OAAe,EAAE,IAAc;IACrE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC1C,MAAM,MAAM,GAAG,IAAI,SAAS,MAAM,KAAK,CAAC,WAAW,EAAE,GAAG,CAAA;IAExD,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,GAAG,MAAM,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAA;IACvD,CAAC;IACD,OAAO,GAAG,MAAM,IAAI,OAAO,EAAE,CAAA;AAC/B,CAAC;AAED;;GAEG;AACH,SAAS,cAAc;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,OAAO,CAAA;AAChF,CAAC;AAED;;;;;;;;;;;;GAYG;AACU,QAAA,MAAM,GAAG;IACpB;;OAEG;IACH,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,IAAI,cAAc,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;IACrD,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;IACtD,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate cosine similarity between two vectors.
|
|
3
|
+
*
|
|
4
|
+
* Cosine similarity measures the cosine of the angle between two vectors,
|
|
5
|
+
* ranging from -1 (opposite) to 1 (identical), with 0 being orthogonal.
|
|
6
|
+
*
|
|
7
|
+
* @param vec1 - First vector
|
|
8
|
+
* @param vec2 - Second vector
|
|
9
|
+
* @returns Cosine similarity value between -1 and 1, or 0 if vectors are invalid
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const similarity = cosineSimilarity([1, 0, 0], [1, 0, 0]) // 1.0 (identical)
|
|
14
|
+
* const orthogonal = cosineSimilarity([1, 0, 0], [0, 1, 0]) // 0.0 (orthogonal)
|
|
15
|
+
* const opposite = cosineSimilarity([1, 0, 0], [-1, 0, 0]) // -1.0 (opposite)
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function cosineSimilarity(vec1: number[], vec2: number[]): number;
|
|
19
|
+
/**
|
|
20
|
+
* Calculate the dot product of two vectors.
|
|
21
|
+
*
|
|
22
|
+
* @param vec1 - First vector
|
|
23
|
+
* @param vec2 - Second vector
|
|
24
|
+
* @returns Dot product value, or 0 if vectors have different lengths
|
|
25
|
+
*/
|
|
26
|
+
export declare function dotProduct(vec1: number[], vec2: number[]): number;
|
|
27
|
+
/**
|
|
28
|
+
* Calculate the Euclidean norm (L2 norm) of a vector.
|
|
29
|
+
*
|
|
30
|
+
* @param vec - Input vector
|
|
31
|
+
* @returns Euclidean norm (magnitude) of the vector
|
|
32
|
+
*/
|
|
33
|
+
export declare function euclideanNorm(vec: number[]): number;
|
|
34
|
+
//# sourceMappingURL=math.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBvE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAWjE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAMnD"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Mathematical utility functions for vector operations
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.cosineSimilarity = cosineSimilarity;
|
|
5
|
+
exports.dotProduct = dotProduct;
|
|
6
|
+
exports.euclideanNorm = euclideanNorm;
|
|
7
|
+
/**
|
|
8
|
+
* Calculate cosine similarity between two vectors.
|
|
9
|
+
*
|
|
10
|
+
* Cosine similarity measures the cosine of the angle between two vectors,
|
|
11
|
+
* ranging from -1 (opposite) to 1 (identical), with 0 being orthogonal.
|
|
12
|
+
*
|
|
13
|
+
* @param vec1 - First vector
|
|
14
|
+
* @param vec2 - Second vector
|
|
15
|
+
* @returns Cosine similarity value between -1 and 1, or 0 if vectors are invalid
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const similarity = cosineSimilarity([1, 0, 0], [1, 0, 0]) // 1.0 (identical)
|
|
20
|
+
* const orthogonal = cosineSimilarity([1, 0, 0], [0, 1, 0]) // 0.0 (orthogonal)
|
|
21
|
+
* const opposite = cosineSimilarity([1, 0, 0], [-1, 0, 0]) // -1.0 (opposite)
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
function cosineSimilarity(vec1, vec2) {
|
|
25
|
+
if (vec1.length !== vec2.length || vec1.length === 0) {
|
|
26
|
+
return 0;
|
|
27
|
+
}
|
|
28
|
+
let dotProduct = 0;
|
|
29
|
+
let norm1 = 0;
|
|
30
|
+
let norm2 = 0;
|
|
31
|
+
for (let i = 0; i < vec1.length; i++) {
|
|
32
|
+
const v1 = vec1[i] ?? 0;
|
|
33
|
+
const v2 = vec2[i] ?? 0;
|
|
34
|
+
dotProduct += v1 * v2;
|
|
35
|
+
norm1 += v1 * v1;
|
|
36
|
+
norm2 += v2 * v2;
|
|
37
|
+
}
|
|
38
|
+
const denominator = Math.sqrt(norm1) * Math.sqrt(norm2);
|
|
39
|
+
if (denominator === 0)
|
|
40
|
+
return 0;
|
|
41
|
+
return dotProduct / denominator;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Calculate the dot product of two vectors.
|
|
45
|
+
*
|
|
46
|
+
* @param vec1 - First vector
|
|
47
|
+
* @param vec2 - Second vector
|
|
48
|
+
* @returns Dot product value, or 0 if vectors have different lengths
|
|
49
|
+
*/
|
|
50
|
+
function dotProduct(vec1, vec2) {
|
|
51
|
+
if (vec1.length !== vec2.length) {
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
let result = 0;
|
|
55
|
+
for (let i = 0; i < vec1.length; i++) {
|
|
56
|
+
result += (vec1[i] ?? 0) * (vec2[i] ?? 0);
|
|
57
|
+
}
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Calculate the Euclidean norm (L2 norm) of a vector.
|
|
62
|
+
*
|
|
63
|
+
* @param vec - Input vector
|
|
64
|
+
* @returns Euclidean norm (magnitude) of the vector
|
|
65
|
+
*/
|
|
66
|
+
function euclideanNorm(vec) {
|
|
67
|
+
let sum = 0;
|
|
68
|
+
for (const v of vec) {
|
|
69
|
+
sum += v * v;
|
|
70
|
+
}
|
|
71
|
+
return Math.sqrt(sum);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=math.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":";AAAA,uDAAuD;;AAmBvD,4CAqBC;AASD,gCAWC;AAQD,sCAMC;AAxED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,gBAAgB,CAAC,IAAc,EAAE,IAAc;IAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACvB,UAAU,IAAI,EAAE,GAAG,EAAE,CAAA;QACrB,KAAK,IAAI,EAAE,GAAG,EAAE,CAAA;QAChB,KAAK,IAAI,EAAE,GAAG,EAAE,CAAA;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvD,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IAE/B,OAAO,UAAU,GAAG,WAAW,CAAA;AACjC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,UAAU,CAAC,IAAc,EAAE,IAAc;IACvD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,CAAA;IACV,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,GAAa;IACzC,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACvB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Register a cleanup callback for graceful shutdown
|
|
3
|
+
*
|
|
4
|
+
* Callbacks are executed in order when SIGTERM or SIGINT is received.
|
|
5
|
+
*
|
|
6
|
+
* @param callback - Cleanup function to execute on shutdown
|
|
7
|
+
*/
|
|
8
|
+
export declare function onShutdown(callback: () => void | Promise<void>): void;
|
|
9
|
+
/**
|
|
10
|
+
* Setup global process error handlers
|
|
11
|
+
*
|
|
12
|
+
* Handles:
|
|
13
|
+
* - unhandledRejection: Logs promise rejection and exits
|
|
14
|
+
* - uncaughtException: Logs exception and exits
|
|
15
|
+
*
|
|
16
|
+
* @param exitCode - Exit code to use on error (default: 1)
|
|
17
|
+
*/
|
|
18
|
+
export declare function setupProcessHandlers(exitCode?: number): void;
|
|
19
|
+
/**
|
|
20
|
+
* Setup graceful shutdown handlers for SIGTERM and SIGINT
|
|
21
|
+
*
|
|
22
|
+
* Executes all registered cleanup callbacks before exiting.
|
|
23
|
+
* Use onShutdown() to register cleanup functions.
|
|
24
|
+
*/
|
|
25
|
+
export declare function setupGracefulShutdown(): void;
|
|
26
|
+
//# sourceMappingURL=process-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-handlers.d.ts","sourceRoot":"","sources":["../../src/utils/process-handlers.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAErE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,SAAI,GAAG,IAAI,CAUvD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CA2B5C"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Shared process error handlers
|
|
3
|
+
// Used by both MCP server (src/index.ts) and Web server (src/web/index.ts)
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.onShutdown = onShutdown;
|
|
6
|
+
exports.setupProcessHandlers = setupProcessHandlers;
|
|
7
|
+
exports.setupGracefulShutdown = setupGracefulShutdown;
|
|
8
|
+
/** Cleanup callbacks registered for graceful shutdown */
|
|
9
|
+
const cleanupCallbacks = [];
|
|
10
|
+
/**
|
|
11
|
+
* Register a cleanup callback for graceful shutdown
|
|
12
|
+
*
|
|
13
|
+
* Callbacks are executed in order when SIGTERM or SIGINT is received.
|
|
14
|
+
*
|
|
15
|
+
* @param callback - Cleanup function to execute on shutdown
|
|
16
|
+
*/
|
|
17
|
+
function onShutdown(callback) {
|
|
18
|
+
cleanupCallbacks.push(callback);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Setup global process error handlers
|
|
22
|
+
*
|
|
23
|
+
* Handles:
|
|
24
|
+
* - unhandledRejection: Logs promise rejection and exits
|
|
25
|
+
* - uncaughtException: Logs exception and exits
|
|
26
|
+
*
|
|
27
|
+
* @param exitCode - Exit code to use on error (default: 1)
|
|
28
|
+
*/
|
|
29
|
+
function setupProcessHandlers(exitCode = 1) {
|
|
30
|
+
process.on('unhandledRejection', (reason, promise) => {
|
|
31
|
+
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
|
32
|
+
process.exit(exitCode);
|
|
33
|
+
});
|
|
34
|
+
process.on('uncaughtException', (error) => {
|
|
35
|
+
console.error('Uncaught Exception:', error);
|
|
36
|
+
process.exit(exitCode);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Setup graceful shutdown handlers for SIGTERM and SIGINT
|
|
41
|
+
*
|
|
42
|
+
* Executes all registered cleanup callbacks before exiting.
|
|
43
|
+
* Use onShutdown() to register cleanup functions.
|
|
44
|
+
*/
|
|
45
|
+
function setupGracefulShutdown() {
|
|
46
|
+
let isShuttingDown = false;
|
|
47
|
+
const shutdown = async (signal) => {
|
|
48
|
+
if (isShuttingDown) {
|
|
49
|
+
console.error('Shutdown already in progress...');
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
isShuttingDown = true;
|
|
53
|
+
console.error(`Received ${signal}, shutting down gracefully...`);
|
|
54
|
+
// Execute cleanup callbacks
|
|
55
|
+
for (const callback of cleanupCallbacks) {
|
|
56
|
+
try {
|
|
57
|
+
await callback();
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error('Error during cleanup:', error);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
console.error('Shutdown complete');
|
|
64
|
+
process.exit(0);
|
|
65
|
+
};
|
|
66
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
67
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=process-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-handlers.js","sourceRoot":"","sources":["../../src/utils/process-handlers.ts"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,2EAA2E;;AAY3E,gCAEC;AAWD,oDAUC;AAQD,sDA2BC;AApED,yDAAyD;AACzD,MAAM,gBAAgB,GAAsC,EAAE,CAAA;AAE9D;;;;;;GAMG;AACH,SAAgB,UAAU,CAAC,QAAoC;IAC7D,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACjC,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,oBAAoB,CAAC,QAAQ,GAAG,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QACnD,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QACpE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;QACxC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAA;QAC3C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB;IACnC,IAAI,cAAc,GAAG,KAAK,CAAA;IAE1B,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;QACvD,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;YAChD,OAAM;QACR,CAAC;QACD,cAAc,GAAG,IAAI,CAAA;QAErB,OAAO,CAAC,KAAK,CAAC,YAAY,MAAM,+BAA+B,CAAC,CAAA;QAEhE,4BAA4B;QAC5B,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,QAAQ,EAAE,CAAA;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;IAChD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;AAChD,CAAC"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
export { DatabaseError } from '../errors/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Grouping mode for quality filtering
|
|
4
|
+
* - 'similar': Only return the most similar group (stops at first distance jump)
|
|
5
|
+
* - 'related': Include related groups (stops at second distance jump)
|
|
6
|
+
*/
|
|
7
|
+
export type GroupingMode = 'similar' | 'related';
|
|
8
|
+
/**
|
|
9
|
+
* VectorStore configuration
|
|
10
|
+
*/
|
|
11
|
+
export interface VectorStoreConfig {
|
|
12
|
+
/** LanceDB database path */
|
|
13
|
+
dbPath: string;
|
|
14
|
+
/** Table name */
|
|
15
|
+
tableName: string;
|
|
16
|
+
/** Maximum distance threshold for filtering results (optional) */
|
|
17
|
+
maxDistance?: number;
|
|
18
|
+
/** Grouping mode for quality filtering (optional) */
|
|
19
|
+
grouping?: GroupingMode;
|
|
20
|
+
/**
|
|
21
|
+
* Hybrid weight: controls how strongly BM25 boosts candidates from vector search.
|
|
22
|
+
* 0 = no keyword boost (vector-only), higher values increase keyword match influence.
|
|
23
|
+
* Default: 0.6
|
|
24
|
+
*/
|
|
25
|
+
hybridWeight?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Document metadata
|
|
29
|
+
*/
|
|
30
|
+
export interface DocumentMetadata {
|
|
31
|
+
/** File name */
|
|
32
|
+
fileName: string;
|
|
33
|
+
/** File size in bytes */
|
|
34
|
+
fileSize: number;
|
|
35
|
+
/** File type (extension) */
|
|
36
|
+
fileType: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Vector chunk
|
|
40
|
+
*/
|
|
41
|
+
export interface VectorChunk {
|
|
42
|
+
/** Chunk ID (UUID) */
|
|
43
|
+
id: string;
|
|
44
|
+
/** File path (absolute) */
|
|
45
|
+
filePath: string;
|
|
46
|
+
/** Chunk index (zero-based) */
|
|
47
|
+
chunkIndex: number;
|
|
48
|
+
/** Chunk text */
|
|
49
|
+
text: string;
|
|
50
|
+
/** Embedding vector (dimension depends on model) */
|
|
51
|
+
vector: number[];
|
|
52
|
+
/** Metadata */
|
|
53
|
+
metadata: DocumentMetadata;
|
|
54
|
+
/** Ingestion timestamp (ISO 8601 format) */
|
|
55
|
+
timestamp: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Search result
|
|
59
|
+
*/
|
|
60
|
+
export interface SearchResult {
|
|
61
|
+
/** File path */
|
|
62
|
+
filePath: string;
|
|
63
|
+
/** Chunk index */
|
|
64
|
+
chunkIndex: number;
|
|
65
|
+
/** Chunk text */
|
|
66
|
+
text: string;
|
|
67
|
+
/**
|
|
68
|
+
* Distance score (lower = more similar).
|
|
69
|
+
* Uses dot product on normalized embeddings (equivalent to cosine distance).
|
|
70
|
+
* Range: [0, 2] where 0 = identical, 1 = orthogonal, 2 = opposite.
|
|
71
|
+
*/
|
|
72
|
+
score: number;
|
|
73
|
+
/** Metadata */
|
|
74
|
+
metadata: DocumentMetadata;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Vector storage class using LanceDB
|
|
78
|
+
*
|
|
79
|
+
* Responsibilities:
|
|
80
|
+
* - LanceDB operations (insert, delete, search)
|
|
81
|
+
* - Transaction handling (atomicity of delete→insert)
|
|
82
|
+
* - Metadata management
|
|
83
|
+
*
|
|
84
|
+
* FTS Circuit Breaker:
|
|
85
|
+
* - Tracks FTS failures (max 3 before disabling)
|
|
86
|
+
* - Auto-recovers after 5-minute cooldown
|
|
87
|
+
* - Prevents permanent FTS disable from transient errors
|
|
88
|
+
*/
|
|
89
|
+
export declare class VectorStore {
|
|
90
|
+
private db;
|
|
91
|
+
private table;
|
|
92
|
+
private readonly config;
|
|
93
|
+
private ftsEnabled;
|
|
94
|
+
private ftsFailureCount;
|
|
95
|
+
private ftsLastFailure;
|
|
96
|
+
/** Mutex to prevent race conditions in circuit breaker state transitions */
|
|
97
|
+
private circuitBreakerResetting;
|
|
98
|
+
constructor(config: VectorStoreConfig);
|
|
99
|
+
/**
|
|
100
|
+
* Check if FTS should be attempted (circuit breaker logic)
|
|
101
|
+
* - Returns false if max failures reached and cooldown not elapsed
|
|
102
|
+
* - Resets failure count after successful cooldown period
|
|
103
|
+
* - Uses mutex to prevent race conditions during reset
|
|
104
|
+
*/
|
|
105
|
+
private shouldAttemptFts;
|
|
106
|
+
/**
|
|
107
|
+
* Record FTS failure (circuit breaker)
|
|
108
|
+
*/
|
|
109
|
+
private recordFtsFailure;
|
|
110
|
+
/**
|
|
111
|
+
* Record FTS success (resets circuit breaker)
|
|
112
|
+
*/
|
|
113
|
+
private recordFtsSuccess;
|
|
114
|
+
/**
|
|
115
|
+
* Initialize LanceDB and create table
|
|
116
|
+
*/
|
|
117
|
+
initialize(): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* Delete all chunks for specified file path
|
|
120
|
+
*
|
|
121
|
+
* @param filePath - File path (absolute)
|
|
122
|
+
*/
|
|
123
|
+
deleteChunks(filePath: string): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Batch insert vector chunks
|
|
126
|
+
*
|
|
127
|
+
* @param chunks - Array of vector chunks
|
|
128
|
+
*/
|
|
129
|
+
insertChunks(chunks: VectorChunk[]): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Ensure FTS index exists for hybrid search
|
|
132
|
+
* Creates ngram-based index if it doesn't exist, drops old versions
|
|
133
|
+
* @throws DatabaseError if index creation fails (Fail-Fast principle)
|
|
134
|
+
*/
|
|
135
|
+
private ensureFtsIndex;
|
|
136
|
+
/**
|
|
137
|
+
* Rebuild FTS index after data changes (insert/delete)
|
|
138
|
+
* LanceDB OSS requires explicit optimize() call to update FTS index
|
|
139
|
+
* Also cleans up old index versions to prevent storage bloat
|
|
140
|
+
*/
|
|
141
|
+
private rebuildFtsIndex;
|
|
142
|
+
/**
|
|
143
|
+
* Apply grouping algorithm to filter results by detecting group boundaries.
|
|
144
|
+
*
|
|
145
|
+
* Uses statistical threshold (mean + k*std) to identify significant gaps (group boundaries).
|
|
146
|
+
* - 'similar': Returns only the first group (cuts at first boundary)
|
|
147
|
+
* - 'related': Returns up to 2 groups (cuts at second boundary)
|
|
148
|
+
*
|
|
149
|
+
* @param results - Search results sorted by distance (ascending)
|
|
150
|
+
* @param mode - Grouping mode ('similar' = 1 group, 'related' = 2 groups)
|
|
151
|
+
* @returns Filtered results
|
|
152
|
+
*/
|
|
153
|
+
private applyGrouping;
|
|
154
|
+
/**
|
|
155
|
+
* Execute vector search with quality filtering
|
|
156
|
+
* Architecture: Semantic search → Filter (maxDistance, grouping) → Keyword boost
|
|
157
|
+
*
|
|
158
|
+
* This "prefetch then rerank" approach ensures:
|
|
159
|
+
* - maxDistance and grouping work on meaningful vector distances
|
|
160
|
+
* - Keyword matching acts as a boost, not a replacement for semantic similarity
|
|
161
|
+
*
|
|
162
|
+
* @param queryVector - Query vector (dimension depends on model)
|
|
163
|
+
* @param queryText - Optional query text for keyword boost (BM25)
|
|
164
|
+
* @param limit - Number of results to retrieve (default 10)
|
|
165
|
+
* @returns Array of search results (sorted by distance ascending, filtered by quality settings)
|
|
166
|
+
*/
|
|
167
|
+
search(queryVector: number[], queryText?: string, limit?: number): Promise<SearchResult[]>;
|
|
168
|
+
/**
|
|
169
|
+
* Apply keyword boost to rerank vector search results
|
|
170
|
+
* Uses multiplicative formula: final_distance = distance / (1 + keyword_normalized * weight)
|
|
171
|
+
*
|
|
172
|
+
* This proportional boost ensures:
|
|
173
|
+
* - Keyword matches improve ranking without dominating semantic similarity
|
|
174
|
+
* - Documents without keyword matches keep their original vector distance
|
|
175
|
+
* - Higher weight = stronger influence of keyword matching
|
|
176
|
+
*
|
|
177
|
+
* @param vectorResults - Results from vector search (already filtered by maxDistance/grouping)
|
|
178
|
+
* @param ftsResults - Raw FTS results with BM25 scores
|
|
179
|
+
* @param weight - Boost weight (0-1, from hybridWeight config)
|
|
180
|
+
*/
|
|
181
|
+
private applyKeywordBoost;
|
|
182
|
+
/**
|
|
183
|
+
* Get list of ingested files
|
|
184
|
+
*
|
|
185
|
+
* @returns Array of file information
|
|
186
|
+
*/
|
|
187
|
+
listFiles(): Promise<{
|
|
188
|
+
filePath: string;
|
|
189
|
+
chunkCount: number;
|
|
190
|
+
timestamp: string;
|
|
191
|
+
}[]>;
|
|
192
|
+
/**
|
|
193
|
+
* Close the database connection and release resources
|
|
194
|
+
*/
|
|
195
|
+
close(): Promise<void>;
|
|
196
|
+
/**
|
|
197
|
+
* Get system status
|
|
198
|
+
*
|
|
199
|
+
* @returns System status information
|
|
200
|
+
*/
|
|
201
|
+
getStatus(): Promise<{
|
|
202
|
+
documentCount: number;
|
|
203
|
+
chunkCount: number;
|
|
204
|
+
memoryUsage: number;
|
|
205
|
+
uptime: number;
|
|
206
|
+
ftsIndexEnabled: boolean;
|
|
207
|
+
searchMode: 'hybrid' | 'vector-only';
|
|
208
|
+
}>;
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vectordb/index.ts"],"names":[],"mappings":"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"}
|