@ssmeo/mcp-local-rag 0.18.14 → 0.19.1

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.
Files changed (164) hide show
  1. package/README.de.md +248 -215
  2. package/README.es.md +241 -215
  3. package/README.fr.md +249 -215
  4. package/README.md +207 -297
  5. package/README.pt-BR.md +236 -215
  6. package/README.zh-CN.md +133 -206
  7. package/dist/chunker/semantic-chunker.d.ts +23 -5
  8. package/dist/chunker/semantic-chunker.d.ts.map +1 -1
  9. package/dist/chunker/semantic-chunker.js +13 -5
  10. package/dist/chunker/semantic-chunker.js.map +1 -1
  11. package/dist/cli/common.d.ts +7 -0
  12. package/dist/cli/common.d.ts.map +1 -1
  13. package/dist/cli/common.js +26 -2
  14. package/dist/cli/common.js.map +1 -1
  15. package/dist/cli/delete.d.ts.map +1 -1
  16. package/dist/cli/delete.js +2 -0
  17. package/dist/cli/delete.js.map +1 -1
  18. package/dist/cli/file-collection.d.ts +2 -1
  19. package/dist/cli/file-collection.d.ts.map +1 -1
  20. package/dist/cli/file-collection.js +2 -2
  21. package/dist/cli/file-collection.js.map +1 -1
  22. package/dist/cli/ingest.d.ts +1 -0
  23. package/dist/cli/ingest.d.ts.map +1 -1
  24. package/dist/cli/ingest.js +45 -25
  25. package/dist/cli/ingest.js.map +1 -1
  26. package/dist/cli/list.d.ts.map +1 -1
  27. package/dist/cli/list.js +9 -13
  28. package/dist/cli/list.js.map +1 -1
  29. package/dist/cli/options.d.ts +8 -0
  30. package/dist/cli/options.d.ts.map +1 -1
  31. package/dist/cli/options.js +21 -0
  32. package/dist/cli/options.js.map +1 -1
  33. package/dist/cli/query.d.ts.map +1 -1
  34. package/dist/cli/query.js +2 -1
  35. package/dist/cli/query.js.map +1 -1
  36. package/dist/cli/read-neighbors.d.ts.map +1 -1
  37. package/dist/cli/read-neighbors.js +1 -0
  38. package/dist/cli/read-neighbors.js.map +1 -1
  39. package/dist/cli/relocate.d.ts +3 -0
  40. package/dist/cli/relocate.d.ts.map +1 -0
  41. package/dist/cli/relocate.js +135 -0
  42. package/dist/cli/relocate.js.map +1 -0
  43. package/dist/cli/sync.d.ts.map +1 -1
  44. package/dist/cli/sync.js +17 -8
  45. package/dist/cli/sync.js.map +1 -1
  46. package/dist/cli-main.d.ts +1 -1
  47. package/dist/cli-main.d.ts.map +1 -1
  48. package/dist/cli-main.js +5 -0
  49. package/dist/cli-main.js.map +1 -1
  50. package/dist/embedder/embedding-snapshot.d.ts +52 -0
  51. package/dist/embedder/embedding-snapshot.d.ts.map +1 -0
  52. package/dist/embedder/embedding-snapshot.js +413 -0
  53. package/dist/embedder/embedding-snapshot.js.map +1 -0
  54. package/dist/embedder/index.d.ts +36 -5
  55. package/dist/embedder/index.d.ts.map +1 -1
  56. package/dist/embedder/index.js +346 -23
  57. package/dist/embedder/index.js.map +1 -1
  58. package/dist/embedder/remote.d.ts +16 -2
  59. package/dist/embedder/remote.d.ts.map +1 -1
  60. package/dist/embedder/remote.js +48 -11
  61. package/dist/embedder/remote.js.map +1 -1
  62. package/dist/embedder/sentence-transformers-config.d.ts +24 -0
  63. package/dist/embedder/sentence-transformers-config.d.ts.map +1 -0
  64. package/dist/embedder/sentence-transformers-config.js +93 -0
  65. package/dist/embedder/sentence-transformers-config.js.map +1 -0
  66. package/dist/features/sync.d.ts +7 -0
  67. package/dist/features/sync.d.ts.map +1 -1
  68. package/dist/features/sync.js +2 -1
  69. package/dist/features/sync.js.map +1 -1
  70. package/dist/ingest/compute.d.ts +15 -7
  71. package/dist/ingest/compute.d.ts.map +1 -1
  72. package/dist/ingest/compute.js +74 -14
  73. package/dist/ingest/compute.js.map +1 -1
  74. package/dist/ingest/file.d.ts +3 -3
  75. package/dist/ingest/file.d.ts.map +1 -1
  76. package/dist/ingest/file.js +0 -5
  77. package/dist/ingest/file.js.map +1 -1
  78. package/dist/ingest/visual.d.ts +6 -2
  79. package/dist/ingest/visual.d.ts.map +1 -1
  80. package/dist/ingest/visual.js +20 -4
  81. package/dist/ingest/visual.js.map +1 -1
  82. package/dist/parser/docx-parser.d.ts +2 -0
  83. package/dist/parser/docx-parser.d.ts.map +1 -1
  84. package/dist/parser/docx-parser.js +12 -3
  85. package/dist/parser/docx-parser.js.map +1 -1
  86. package/dist/parser/index.d.ts +11 -1
  87. package/dist/parser/index.d.ts.map +1 -1
  88. package/dist/parser/index.js +27 -11
  89. package/dist/parser/index.js.map +1 -1
  90. package/dist/parser/pdf-extract.d.ts +2 -0
  91. package/dist/parser/pdf-extract.d.ts.map +1 -1
  92. package/dist/parser/pdf-extract.js +3 -0
  93. package/dist/parser/pdf-extract.js.map +1 -1
  94. package/dist/parser/pdf-filter.d.ts +2 -9
  95. package/dist/parser/pdf-filter.d.ts.map +1 -1
  96. package/dist/parser/pdf-filter.js +110 -144
  97. package/dist/parser/pdf-filter.js.map +1 -1
  98. package/dist/parser/pdf-headings.d.ts +6 -0
  99. package/dist/parser/pdf-headings.d.ts.map +1 -0
  100. package/dist/parser/pdf-headings.js +166 -0
  101. package/dist/parser/pdf-headings.js.map +1 -0
  102. package/dist/parser/text-source-map.d.ts +3 -0
  103. package/dist/parser/text-source-map.d.ts.map +1 -0
  104. package/dist/parser/text-source-map.js +33 -0
  105. package/dist/parser/text-source-map.js.map +1 -0
  106. package/dist/pdf-visual/detector.js +3 -3
  107. package/dist/pdf-visual/detector.js.map +1 -1
  108. package/dist/rerank/command.d.ts +10 -7
  109. package/dist/rerank/command.d.ts.map +1 -1
  110. package/dist/rerank/command.js +51 -10
  111. package/dist/rerank/command.js.map +1 -1
  112. package/dist/rerank/index.d.ts +3 -3
  113. package/dist/rerank/index.d.ts.map +1 -1
  114. package/dist/rerank/index.js +3 -3
  115. package/dist/rerank/index.js.map +1 -1
  116. package/dist/server/index.d.ts +5 -1
  117. package/dist/server/index.d.ts.map +1 -1
  118. package/dist/server/index.js +168 -95
  119. package/dist/server/index.js.map +1 -1
  120. package/dist/server/list-scanner.d.ts +2 -1
  121. package/dist/server/list-scanner.d.ts.map +1 -1
  122. package/dist/server/list-scanner.js +2 -2
  123. package/dist/server/list-scanner.js.map +1 -1
  124. package/dist/server/tool-definitions.js +2 -2
  125. package/dist/server/tool-definitions.js.map +1 -1
  126. package/dist/server/types.d.ts +9 -0
  127. package/dist/server/types.d.ts.map +1 -1
  128. package/dist/server-main.d.ts +2 -2
  129. package/dist/server-main.d.ts.map +1 -1
  130. package/dist/server-main.js +22 -20
  131. package/dist/server-main.js.map +1 -1
  132. package/dist/utils/base-dirs.d.ts +9 -10
  133. package/dist/utils/base-dirs.d.ts.map +1 -1
  134. package/dist/utils/base-dirs.js +28 -30
  135. package/dist/utils/base-dirs.js.map +1 -1
  136. package/dist/utils/scan.d.ts +25 -5
  137. package/dist/utils/scan.d.ts.map +1 -1
  138. package/dist/utils/scan.js +40 -10
  139. package/dist/utils/scan.js.map +1 -1
  140. package/dist/utils/source-context.d.ts +29 -0
  141. package/dist/utils/source-context.d.ts.map +1 -0
  142. package/dist/utils/source-context.js +86 -0
  143. package/dist/utils/source-context.js.map +1 -0
  144. package/dist/utils/sync-lock.d.ts +8 -0
  145. package/dist/utils/sync-lock.d.ts.map +1 -1
  146. package/dist/utils/sync-lock.js +41 -9
  147. package/dist/utils/sync-lock.js.map +1 -1
  148. package/dist/utils/sync-path-key.d.ts +1 -1
  149. package/dist/utils/sync-path-key.d.ts.map +1 -1
  150. package/dist/utils/sync-path-key.js +1 -1
  151. package/dist/utils/sync-path-key.js.map +1 -1
  152. package/dist/vectordb/index.d.ts +4 -2
  153. package/dist/vectordb/index.d.ts.map +1 -1
  154. package/dist/vectordb/index.js +30 -7
  155. package/dist/vectordb/index.js.map +1 -1
  156. package/dist/vectordb/relocate.d.ts +18 -0
  157. package/dist/vectordb/relocate.d.ts.map +1 -0
  158. package/dist/vectordb/relocate.js +179 -0
  159. package/dist/vectordb/relocate.js.map +1 -0
  160. package/dist/vectordb/types.d.ts +10 -23
  161. package/dist/vectordb/types.d.ts.map +1 -1
  162. package/dist/vectordb/types.js +14 -23
  163. package/dist/vectordb/types.js.map +1 -1
  164. package/package.json +14 -14
@@ -0,0 +1,18 @@
1
+ export interface RelocationPathMapping {
2
+ sourcePath: string;
3
+ destinationPath: string;
4
+ }
5
+ export interface RelocateIndexedPathsOptions {
6
+ dbPath: string;
7
+ tableName: string;
8
+ fromPath: string;
9
+ toPath: string;
10
+ validateDestinations: (mappings: readonly RelocationPathMapping[]) => Promise<void>;
11
+ }
12
+ export interface RelocateIndexedPathsResult {
13
+ filesRelocated: number;
14
+ chunksRelocated: number;
15
+ }
16
+ /** Move indexed file keys beneath one directory prefix in a single table update. */
17
+ export declare function relocateIndexedPaths(options: RelocateIndexedPathsOptions): Promise<RelocateIndexedPathsResult>;
18
+ //# sourceMappingURL=relocate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relocate.d.ts","sourceRoot":"","sources":["../../src/vectordb/relocate.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,oBAAoB,EAAE,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpF;AAED,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;CACxB;AAQD,oFAAoF;AACpF,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC,CA2ErC"}
@@ -0,0 +1,179 @@
1
+ import { stat } from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+ import { connect } from '@lancedb/lancedb';
4
+ import { toError } from '../utils/errors.js';
5
+ import { isRecord } from '../utils/type-guards.js';
6
+ import { DatabaseError } from './types.js';
7
+ /** Move indexed file keys beneath one directory prefix in a single table update. */
8
+ export async function relocateIndexedPaths(options) {
9
+ let connection;
10
+ try {
11
+ const { dbPath, tableName, validateDestinations } = options;
12
+ if (typeof dbPath !== 'string' || dbPath.length === 0) {
13
+ throw new DatabaseError('Relocation requires an existing database path');
14
+ }
15
+ if (typeof tableName !== 'string' || tableName.length === 0) {
16
+ throw new DatabaseError('Relocation requires a table name');
17
+ }
18
+ if (typeof validateDestinations !== 'function') {
19
+ throw new DatabaseError('Relocation requires destination validation');
20
+ }
21
+ const fromRoot = normalizeDirectory(options.fromPath, 'source');
22
+ const toRoot = normalizeDirectory(options.toPath, 'destination');
23
+ if (samePath(fromRoot, toRoot)) {
24
+ throw new DatabaseError('Source and destination directories must be different');
25
+ }
26
+ const dbInfo = await stat(dbPath).catch((error) => {
27
+ throw new DatabaseError(`Database directory does not exist: ${dbPath}`, {
28
+ cause: toError(error),
29
+ });
30
+ });
31
+ if (!dbInfo.isDirectory()) {
32
+ throw new DatabaseError(`Database path is not a directory: ${dbPath}`);
33
+ }
34
+ connection = await connect(dbPath, { readConsistencyInterval: 0 });
35
+ if (!(await connection.tableNames()).includes(tableName)) {
36
+ throw new DatabaseError(`Table does not exist: ${tableName}`);
37
+ }
38
+ const table = await connection.openTable(tableName);
39
+ const rawRows = await table.query().select(['filePath']).toArray();
40
+ const snapshot = createSnapshot(rawRows, fromRoot, toRoot);
41
+ if (snapshot.mappings.length === 0) {
42
+ return { filesRelocated: 0, chunksRelocated: 0 };
43
+ }
44
+ try {
45
+ await validateDestinations(snapshot.mappings);
46
+ }
47
+ catch (error) {
48
+ throw new DatabaseError('Destination validation failed; no database changes were made', {
49
+ cause: toError(error),
50
+ });
51
+ }
52
+ const sourceLiterals = snapshot.mappings.map(({ sourcePath }) => sqlString(sourcePath));
53
+ const destinationLiterals = snapshot.mappings.map(({ destinationPath }) => sqlString(destinationPath));
54
+ const sourceList = `[${sourceLiterals.join(', ')}]`;
55
+ const destinationList = `[${destinationLiterals.join(', ')}]`;
56
+ await table.update({
57
+ where: `\`filePath\` IN (${sourceLiterals.join(', ')})`,
58
+ valuesSql: {
59
+ filePath: `array_element(${destinationList}, CAST(array_position(${sourceList}, \`filePath\`) AS BIGINT))`,
60
+ },
61
+ });
62
+ return {
63
+ filesRelocated: snapshot.mappings.length,
64
+ chunksRelocated: snapshot.chunksRelocated,
65
+ };
66
+ }
67
+ catch (error) {
68
+ if (error instanceof DatabaseError) {
69
+ throw error;
70
+ }
71
+ throw new DatabaseError('Failed to relocate indexed paths', { cause: toError(error) });
72
+ }
73
+ finally {
74
+ connection?.close();
75
+ }
76
+ }
77
+ function normalizeDirectory(value, label) {
78
+ if (typeof value !== 'string' ||
79
+ value.length === 0 ||
80
+ value.includes('\0') ||
81
+ !path.isAbsolute(value)) {
82
+ throw new DatabaseError(`The ${label} directory must be an absolute native path`);
83
+ }
84
+ return path.resolve(value);
85
+ }
86
+ function validateStoredPath(value) {
87
+ if (typeof value !== 'string' ||
88
+ value.length === 0 ||
89
+ value.includes('\0') ||
90
+ !path.isAbsolute(value)) {
91
+ throw new DatabaseError('Indexed file paths must be non-empty absolute native paths');
92
+ }
93
+ if (value.endsWith(path.sep) || (process.platform === 'win32' && value.endsWith('/'))) {
94
+ throw new DatabaseError(`Indexed file path is malformed: ${value}`);
95
+ }
96
+ return value;
97
+ }
98
+ function samePath(left, right) {
99
+ return process.platform === 'win32' ? left.toLowerCase() === right.toLowerCase() : left === right;
100
+ }
101
+ function isOutsideRelativePath(relativePath) {
102
+ return (relativePath === '..' ||
103
+ relativePath.startsWith(`..${path.sep}`) ||
104
+ path.isAbsolute(relativePath));
105
+ }
106
+ function relativeWithin(root, candidate) {
107
+ const relativePath = path.relative(root, path.normalize(candidate));
108
+ if (isOutsideRelativePath(relativePath)) {
109
+ return null;
110
+ }
111
+ return relativePath;
112
+ }
113
+ function createSnapshot(rawRows, fromRoot, toRoot) {
114
+ const filePaths = rawRows.map(readIndexedPath);
115
+ const mappings = createMappings(filePaths, fromRoot, toRoot);
116
+ assertNoDestinationCollisions(filePaths, mappings);
117
+ const sourcePaths = new Set(mappings.map(({ sourcePath }) => sourcePath));
118
+ return {
119
+ filePaths,
120
+ mappings,
121
+ chunksRelocated: filePaths.filter((filePath) => sourcePaths.has(filePath)).length,
122
+ };
123
+ }
124
+ function readIndexedPath(row) {
125
+ if (!isRecord(row)) {
126
+ throw new DatabaseError('Invalid indexed path row returned by LanceDB');
127
+ }
128
+ return validateStoredPath(row['filePath']);
129
+ }
130
+ function createMappings(filePaths, fromRoot, toRoot) {
131
+ const selected = new Map();
132
+ for (const filePath of filePaths) {
133
+ if (selected.has(filePath)) {
134
+ continue;
135
+ }
136
+ const relativePath = relativeWithin(fromRoot, filePath);
137
+ if (relativePath === null) {
138
+ continue;
139
+ }
140
+ if (relativePath.length === 0) {
141
+ throw new DatabaseError(`Indexed path is the source directory itself: ${filePath}`);
142
+ }
143
+ const destinationPath = path.join(toRoot, relativePath);
144
+ const destinationRelativePath = relativeWithin(toRoot, destinationPath);
145
+ if (destinationRelativePath === null || destinationRelativePath.length === 0) {
146
+ throw new DatabaseError(`Relocated path is outside the destination directory: ${filePath}`);
147
+ }
148
+ selected.set(filePath, destinationPath);
149
+ }
150
+ return [...selected].map(([sourcePath, destinationPath]) => ({
151
+ sourcePath,
152
+ destinationPath,
153
+ }));
154
+ }
155
+ function assertNoDestinationCollisions(filePaths, mappings) {
156
+ const sourceKeys = new Set(mappings.map(({ sourcePath }) => pathKey(sourcePath)));
157
+ const indexedPathKeys = new Set(filePaths.map(pathKey));
158
+ const destinationOwners = new Map();
159
+ for (const mapping of mappings) {
160
+ const destinationKey = pathKey(mapping.destinationPath);
161
+ const previousSource = destinationOwners.get(destinationKey);
162
+ if (previousSource !== undefined && previousSource !== mapping.sourcePath) {
163
+ throw new DatabaseError(`Multiple indexed paths map to the same destination: ${mapping.destinationPath}`);
164
+ }
165
+ destinationOwners.set(destinationKey, mapping.sourcePath);
166
+ if (indexedPathKeys.has(destinationKey) && !sourceKeys.has(destinationKey)) {
167
+ const existingKey = filePaths.find((filePath) => pathKey(filePath) === destinationKey);
168
+ throw new DatabaseError(`Relocation destination collides with an indexed path: ${existingKey}`);
169
+ }
170
+ }
171
+ }
172
+ function pathKey(value) {
173
+ const normalized = path.normalize(value);
174
+ return process.platform === 'win32' ? normalized.toLowerCase() : normalized;
175
+ }
176
+ function sqlString(value) {
177
+ return `'${value.replace(/'/g, "''")}'`;
178
+ }
179
+ //# sourceMappingURL=relocate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relocate.js","sourceRoot":"","sources":["../../src/vectordb/relocate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAmB,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AA0B1C,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAoC;IAEpC,IAAI,UAAkC,CAAA;IAEtC,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAA;QAC3D,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,aAAa,CAAC,+CAA+C,CAAC,CAAA;QAC1E,CAAC;QACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,aAAa,CAAC,kCAAkC,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE,CAAC;YAC/C,MAAM,IAAI,aAAa,CAAC,4CAA4C,CAAC,CAAA;QACvE,CAAC;QAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;QAChE,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,aAAa,CAAC,sDAAsD,CAAC,CAAA;QACjF,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACzD,MAAM,IAAI,aAAa,CAAC,sCAAsC,MAAM,EAAE,EAAE;gBACtE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;aACtB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,aAAa,CAAC,qCAAqC,MAAM,EAAE,CAAC,CAAA;QACxE,CAAC;QAED,UAAU,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,uBAAuB,EAAE,CAAC,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,aAAa,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAA;QAC/D,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACnD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QAClE,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC1D,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAA;QAClD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CAAC,8DAA8D,EAAE;gBACtF,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;aACtB,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAA;QACvF,MAAM,mBAAmB,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CACxE,SAAS,CAAC,eAAe,CAAC,CAC3B,CAAA;QACD,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QACnD,MAAM,eAAe,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAC7D,MAAM,KAAK,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,oBAAoB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACvD,SAAS,EAAE;gBACT,QAAQ,EAAE,iBAAiB,eAAe,yBAAyB,UAAU,6BAA6B;aAC3G;SACF,CAAC,CAAA;QAEF,OAAO;YACL,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;YACxC,eAAe,EAAE,QAAQ,CAAC,eAAe;SAC1C,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,MAAM,KAAK,CAAA;QACb,CAAC;QACD,MAAM,IAAI,aAAa,CAAC,kCAAkC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACxF,CAAC;YAAS,CAAC;QACT,UAAU,EAAE,KAAK,EAAE,CAAA;IACrB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,KAAa;IACtD,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EACvB,CAAC;QACD,MAAM,IAAI,aAAa,CAAC,OAAO,KAAK,4CAA4C,CAAC,CAAA;IACnF,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EACvB,CAAC;QACD,MAAM,IAAI,aAAa,CAAC,4DAA4D,CAAC,CAAA;IACvF,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,IAAI,aAAa,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAA;IACrE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,KAAa;IAC3C,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAA;AACnG,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAoB;IACjD,OAAO,CACL,YAAY,KAAK,IAAI;QACrB,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAC9B,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,SAAiB;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;IACnE,IAAI,qBAAqB,CAAC,YAAY,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,SAAS,cAAc,CAAC,OAAkB,EAAE,QAAgB,EAAE,MAAc;IAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC5D,6BAA6B,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAClD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAEzE,OAAO;QACL,SAAS;QACT,QAAQ;QACR,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;KAClF,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAY;IACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,aAAa,CAAC,8CAA8C,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAA;AAC5C,CAAC;AAED,SAAS,cAAc,CACrB,SAAmB,EACnB,QAAgB,EAChB,MAAc;IAEd,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,SAAQ;QACV,CAAC;QACD,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACvD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,SAAQ;QACV,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,aAAa,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAA;QACrF,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QACvD,MAAM,uBAAuB,GAAG,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;QACvE,IAAI,uBAAuB,KAAK,IAAI,IAAI,uBAAuB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7E,MAAM,IAAI,aAAa,CAAC,wDAAwD,QAAQ,EAAE,CAAC,CAAA;QAC7F,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;IACzC,CAAC;IAED,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,UAAU;QACV,eAAe;KAChB,CAAC,CAAC,CAAA;AACL,CAAC;AAED,SAAS,6BAA6B,CACpC,SAAmB,EACnB,QAAiC;IAEjC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACjF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAA;IACnD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QACvD,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QAC5D,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;YAC1E,MAAM,IAAI,aAAa,CACrB,uDAAuD,OAAO,CAAC,eAAe,EAAE,CACjF,CAAA;QACH,CAAC;QACD,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;QAEzD,IAAI,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3E,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,cAAc,CAAC,CAAA;YACtF,MAAM,IAAI,aAAa,CACrB,yDAAyD,WAAW,EAAE,CACvE,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACxC,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAA;AAC7E,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAA;AACzC,CAAC"}
@@ -1,6 +1,9 @@
1
1
  import { AppError } from '../utils/errors.js';
2
+ import { type SourceContext } from '../utils/source-context.js';
2
3
  /** Multiplier for candidate count in hybrid search (to allow reranking) */
3
4
  export declare const HYBRID_SEARCH_CANDIDATE_MULTIPLIER = 2;
5
+ /** Minimum semantic pool for keyword reranking without distance-gap grouping. */
6
+ export declare const HYBRID_SEARCH_MIN_CANDIDATES = 200;
4
7
  /** FTS index name (bump version when changing tokenizer settings) */
5
8
  export declare const FTS_INDEX_NAME = "fts_index_v2";
6
9
  /** Threshold for cleaning up old index versions (1 minute) */
@@ -48,17 +51,6 @@ export interface SearchOptions {
48
51
  */
49
52
  scope?: string[];
50
53
  }
51
- /**
52
- * Document metadata
53
- */
54
- export interface DocumentMetadata {
55
- /** File name */
56
- fileName: string;
57
- /** File size in bytes */
58
- fileSize: number;
59
- /** File type (extension) */
60
- fileType: string;
61
- }
62
54
  /**
63
55
  * Validated, bounded image stored in a chunk's ordered attachment JSON.
64
56
  */
@@ -71,6 +63,8 @@ export interface VisualAttachment {
71
63
  * Vector chunk
72
64
  */
73
65
  export interface VectorChunk {
66
+ /** JSON display context, absent on legacy rows. */
67
+ sourceContext?: string;
74
68
  /** Chunk ID (UUID) */
75
69
  id: string;
76
70
  /** File path (absolute) */
@@ -81,8 +75,6 @@ export interface VectorChunk {
81
75
  text: string;
82
76
  /** Embedding vector (dimension depends on model) */
83
77
  vector: number[];
84
- /** Metadata */
85
- metadata: DocumentMetadata;
86
78
  /** Document title extracted from file content (display-only, not used for scoring) */
87
79
  fileTitle: string | null;
88
80
  /** SHA-256 of the source file bytes; absent for chunks not ingested from a file. */
@@ -102,6 +94,7 @@ export interface VectorChunk {
102
94
  * Search result
103
95
  */
104
96
  export interface SearchResult {
97
+ sourceContext?: SourceContext;
105
98
  /** Stable persisted row identity used for attachment hydration. */
106
99
  id: string;
107
100
  /** File path */
@@ -112,8 +105,6 @@ export interface SearchResult {
112
105
  text: string;
113
106
  /** Distance score using dot product (0 = identical, 1 = orthogonal, 2 = opposite) */
114
107
  score: number;
115
- /** Metadata */
116
- metadata: DocumentMetadata;
117
108
  /** Document title extracted from file content (display-only, not used for scoring) */
118
109
  fileTitle: string | null;
119
110
  }
@@ -129,9 +120,10 @@ export interface AttachmentHydrationResult {
129
120
  }
130
121
  /**
131
122
  * Row from {@link VectorStore.getChunksByRange}. Distinct from `SearchResult`:
132
- * no score (not ranked) and no metadata (not needed here).
123
+ * no score (not ranked).
133
124
  */
134
125
  export interface ChunkRow {
126
+ sourceContext?: SourceContext;
135
127
  /** File path (absolute) */
136
128
  filePath: string;
137
129
  /** Chunk index (zero-based) */
@@ -145,20 +137,16 @@ export interface ChunkRow {
145
137
  * Raw result from LanceDB query (internal type)
146
138
  */
147
139
  export interface LanceDBRawResult {
140
+ sourceContext?: string | null;
148
141
  id: string;
149
142
  filePath: string;
150
143
  chunkIndex: number;
151
144
  text: string;
152
- metadata: DocumentMetadata;
153
145
  /** Document title (optional - existing rows lack this field before migration) */
154
146
  fileTitle?: string | null;
155
147
  _distance?: number;
156
148
  _score?: number;
157
149
  }
158
- /**
159
- * Type guard for LanceDB raw search result
160
- */
161
- export declare function isLanceDBRawResult(value: unknown): value is LanceDBRawResult;
162
150
  /**
163
151
  * Convert LanceDB raw result to SearchResult with type validation
164
152
  * @throws DatabaseError if the result is invalid
@@ -179,8 +167,7 @@ export declare function parseHydratedVisualAttachments(value: unknown): {
179
167
  omittedCount: number;
180
168
  };
181
169
  /**
182
- * The minimal range-read shape: no score (not ranked) and no metadata (not
183
- * needed for index-adjacent retrieval), so the shape check is narrower than
170
+ * The minimal range-read shape: no score (not ranked), so the shape check is narrower than
184
171
  * {@link isLanceDBRawResult}. An empty or missing `fileTitle` reads as `null`.
185
172
  *
186
173
  * @throws DatabaseError when a required field is missing.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vectordb/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vectordb/types.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,15 @@
1
1
  // VectorDB type definitions, constants, type guards, and error classes
2
2
  import { AppError } from '../utils/errors.js';
3
3
  import { MAX_VISUAL_RENDITION_BYTES } from '../utils/limits.js';
4
+ import { parseSourceContext } from '../utils/source-context.js';
4
5
  import { isInteger, isRecord } from '../utils/type-guards.js';
5
6
  // ============================================
6
7
  // Constants
7
8
  // ============================================
8
9
  /** Multiplier for candidate count in hybrid search (to allow reranking) */
9
10
  export const HYBRID_SEARCH_CANDIDATE_MULTIPLIER = 2;
11
+ /** Minimum semantic pool for keyword reranking without distance-gap grouping. */
12
+ export const HYBRID_SEARCH_MIN_CANDIDATES = 200;
10
13
  /** FTS index name (bump version when changing tokenizer settings) */
11
14
  export const FTS_INDEX_NAME = 'fts_index_v2';
12
15
  /** Threshold for cleaning up old index versions (1 minute) */
@@ -16,9 +19,6 @@ export const DEFAULT_HYBRID_WEIGHT = 0.6;
16
19
  // ============================================
17
20
  // Type Guards
18
21
  // ============================================
19
- /**
20
- * Type guard for DocumentMetadata
21
- */
22
22
  /** A non-null object with a numeric `length` — indices read as `unknown`. */
23
23
  function isArrayLike(value) {
24
24
  return isRecord(value) && typeof value['length'] === 'number';
@@ -42,26 +42,17 @@ function toEmbeddingVector(value) {
42
42
  }
43
43
  return vector;
44
44
  }
45
- function isDocumentMetadata(value) {
46
- if (!isRecord(value)) {
47
- return false;
48
- }
49
- return (typeof value['fileName'] === 'string' &&
50
- typeof value['fileSize'] === 'number' &&
51
- typeof value['fileType'] === 'string');
52
- }
53
45
  /**
54
46
  * Type guard for LanceDB raw search result
55
47
  */
56
- export function isLanceDBRawResult(value) {
48
+ function isLanceDBRawResult(value) {
57
49
  if (!isRecord(value)) {
58
50
  return false;
59
51
  }
60
52
  return (typeof value['id'] === 'string' &&
61
53
  typeof value['filePath'] === 'string' &&
62
54
  typeof value['chunkIndex'] === 'number' &&
63
- typeof value['text'] === 'string' &&
64
- isDocumentMetadata(value['metadata']));
55
+ typeof value['text'] === 'string');
65
56
  }
66
57
  /**
67
58
  * Convert LanceDB raw result to SearchResult with type validation
@@ -81,8 +72,8 @@ export function toSearchResult(raw) {
81
72
  chunkIndex: raw.chunkIndex,
82
73
  text: raw.text,
83
74
  score: raw._distance ?? raw._score ?? 0,
84
- metadata: raw.metadata,
85
75
  fileTitle: raw.fileTitle || null,
76
+ ...contextProperty(raw.sourceContext),
86
77
  };
87
78
  }
88
79
  /**
@@ -95,7 +86,7 @@ export function toVectorChunk(raw) {
95
86
  if (!isRecord(raw)) {
96
87
  throw new DatabaseError('Invalid chunk row shape from LanceDB');
97
88
  }
98
- const { id, filePath, chunkIndex, text, vector, metadata, fileTitle, contentHash, visualAttachments, visualProfile, timestamp, } = raw;
89
+ const { id, filePath, chunkIndex, text, vector, fileTitle, contentHash, visualAttachments, visualProfile, sourceContext, timestamp, } = raw;
99
90
  if (typeof id !== 'string' ||
100
91
  typeof filePath !== 'string' ||
101
92
  typeof chunkIndex !== 'number' ||
@@ -103,16 +94,12 @@ export function toVectorChunk(raw) {
103
94
  typeof timestamp !== 'string') {
104
95
  throw new DatabaseError('Invalid chunk row shape from LanceDB (scalar fields)');
105
96
  }
106
- if (!isDocumentMetadata(metadata)) {
107
- throw new DatabaseError('Invalid chunk row shape from LanceDB (metadata)');
108
- }
109
97
  return {
110
98
  id,
111
99
  filePath,
112
100
  chunkIndex,
113
101
  text,
114
102
  vector: toEmbeddingVector(vector),
115
- metadata,
116
103
  fileTitle: typeof fileTitle === 'string' && fileTitle.length > 0 ? fileTitle : null,
117
104
  // Omit the key rather than store '' or undefined: the create path seeds ''
118
105
  // for schema inference, and a '' that survived to a caller would read as a
@@ -122,6 +109,7 @@ export function toVectorChunk(raw) {
122
109
  // (missing column, NULL, create-path ''). Any other string is preserved
123
110
  // verbatim so a backup taken here restores the row unchanged.
124
111
  ...(typeof visualProfile === 'string' && visualProfile.length > 0 ? { visualProfile } : {}),
112
+ ...(typeof sourceContext === 'string' && sourceContext ? { sourceContext } : {}),
125
113
  visualAttachments: normalizeVisualAttachments(visualAttachments),
126
114
  timestamp,
127
115
  };
@@ -204,8 +192,7 @@ export function parseHydratedVisualAttachments(value) {
204
192
  return { attachments, omittedCount };
205
193
  }
206
194
  /**
207
- * The minimal range-read shape: no score (not ranked) and no metadata (not
208
- * needed for index-adjacent retrieval), so the shape check is narrower than
195
+ * The minimal range-read shape: no score (not ranked), so the shape check is narrower than
209
196
  * {@link isLanceDBRawResult}. An empty or missing `fileTitle` reads as `null`.
210
197
  *
211
198
  * @throws DatabaseError when a required field is missing.
@@ -220,7 +207,7 @@ export function toChunkRow(raw) {
220
207
  }
221
208
  const rawFileTitle = raw['fileTitle'];
222
209
  const fileTitle = typeof rawFileTitle === 'string' && rawFileTitle.length > 0 ? rawFileTitle : null;
223
- return { filePath, chunkIndex, text, fileTitle };
210
+ return { filePath, chunkIndex, text, fileTitle, ...contextProperty(raw['sourceContext']) };
224
211
  }
225
212
  // ============================================
226
213
  // Error Classes
@@ -234,4 +221,8 @@ export class DatabaseError extends AppError {
234
221
  this.name = 'DatabaseError';
235
222
  }
236
223
  }
224
+ function contextProperty(value) {
225
+ const sourceContext = parseSourceContext(value);
226
+ return sourceContext ? { sourceContext } : {};
227
+ }
237
228
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vectordb/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vectordb/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ssmeo/mcp-local-rag",
3
- "version": "0.18.14",
3
+ "version": "0.19.1",
4
4
  "description": "Local RAG MCP Server - Easy-to-setup document search with minimal configuration (fork with remote embedding server support)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -67,33 +67,33 @@
67
67
  "prepublishOnly": "npm run build && npx vitest run src/__tests__/embedder/"
68
68
  },
69
69
  "dependencies": {
70
- "@huggingface/transformers": "^4.3.0",
71
- "@lancedb/lancedb": "^0.38.0",
72
- "@modelcontextprotocol/sdk": "^1.30.0",
70
+ "@huggingface/transformers": "^4.3.1",
71
+ "@lancedb/lancedb": "^0.40.0",
72
+ "@modelcontextprotocol/sdk": "^1.32.1",
73
73
  "@mozilla/readability": "0.6.0",
74
- "jsdom": "^30.0.1",
74
+ "jsdom": "^30.1.3",
75
75
  "jszip": "^3.10.2",
76
- "mammoth": "^1.12.3",
76
+ "mammoth": "^1.13.0",
77
77
  "mupdf": "^1.28.1",
78
78
  "turndown": "7.2.4"
79
79
  },
80
80
  "devDependencies": {
81
- "@biomejs/biome": "2.5.13",
81
+ "@biomejs/biome": "2.5.15",
82
82
  "@types/jsdom": "^30.0.0",
83
- "@types/node": "^26.6.1",
83
+ "@types/node": "^26.6.5",
84
84
  "@types/turndown": "5.0.6",
85
85
  "dpdm": "^4.3.0",
86
86
  "husky": "^9.1.7",
87
- "knip": "^6.35.1",
88
- "lint-staged": "^17.5.1",
89
- "tsx": "^4.23.13",
87
+ "knip": "^6.42.0",
88
+ "lint-staged": "^17.6.0",
89
+ "tsx": "^4.23.15",
90
90
  "typescript": "^7.0.2",
91
- "vite": "^8.3.0",
92
- "vitest": "^4.1.11"
91
+ "vite": "^8.3.4",
92
+ "vitest": "^5.0.5"
93
93
  },
94
94
  "packageManager": "pnpm@11.24.0",
95
95
  "engines": {
96
- "node": ">=22"
96
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
97
97
  },
98
98
  "lint-staged": {
99
99
  "src/**/*.{ts,tsx}": [