@mhalder/qdrant-mcp-server 3.3.3 → 3.3.4
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/.github/workflows/ci.yml +0 -2
- package/.github/workflows/claude-code-review.yml +1 -1
- package/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/biome.json +3 -2
- package/build/code/chunker/tree-sitter-chunker.d.ts.map +1 -1
- package/build/code/chunker/tree-sitter-chunker.js +2 -12
- package/build/code/chunker/tree-sitter-chunker.js.map +1 -1
- package/build/code/indexer.d.ts.map +1 -1
- package/build/code/indexer.js +12 -18
- package/build/code/indexer.js.map +1 -1
- package/build/code/scanner.js +1 -1
- package/build/code/scanner.js.map +1 -1
- package/build/embeddings/cohere.d.ts +1 -1
- package/build/embeddings/cohere.d.ts.map +1 -1
- package/build/embeddings/cohere.js +2 -2
- package/build/embeddings/cohere.js.map +1 -1
- package/build/embeddings/cohere.test.js +1 -5
- package/build/embeddings/cohere.test.js.map +1 -1
- package/build/embeddings/factory.d.ts +1 -1
- package/build/embeddings/factory.d.ts.map +1 -1
- package/build/embeddings/factory.js +7 -9
- package/build/embeddings/factory.js.map +1 -1
- package/build/embeddings/factory.test.js +3 -3
- package/build/embeddings/factory.test.js.map +1 -1
- package/build/embeddings/ollama.d.ts +1 -1
- package/build/embeddings/ollama.d.ts.map +1 -1
- package/build/embeddings/ollama.js +6 -8
- package/build/embeddings/ollama.js.map +1 -1
- package/build/embeddings/ollama.test.js +2 -6
- package/build/embeddings/ollama.test.js.map +1 -1
- package/build/embeddings/openai.d.ts +1 -1
- package/build/embeddings/openai.d.ts.map +1 -1
- package/build/embeddings/openai.js +4 -7
- package/build/embeddings/openai.js.map +1 -1
- package/build/embeddings/openai.test.js +3 -12
- package/build/embeddings/openai.test.js.map +1 -1
- package/build/embeddings/sparse.test.js +12 -2
- package/build/embeddings/sparse.test.js.map +1 -1
- package/build/embeddings/voyage.d.ts +1 -1
- package/build/embeddings/voyage.d.ts.map +1 -1
- package/build/embeddings/voyage.js +2 -3
- package/build/embeddings/voyage.js.map +1 -1
- package/build/embeddings/voyage.test.js +2 -6
- package/build/embeddings/voyage.test.js.map +1 -1
- package/build/git/chunker.d.ts.map +1 -1
- package/build/git/chunker.js +2 -2
- package/build/git/chunker.js.map +1 -1
- package/build/git/chunker.test.js +1 -1
- package/build/git/chunker.test.js.map +1 -1
- package/build/git/extractor.d.ts.map +1 -1
- package/build/git/extractor.integration.test.js +9 -5
- package/build/git/extractor.integration.test.js.map +1 -1
- package/build/git/extractor.js +1 -1
- package/build/git/extractor.js.map +1 -1
- package/build/git/extractor.test.js +2 -2
- package/build/git/extractor.test.js.map +1 -1
- package/build/git/index.d.ts +4 -4
- package/build/git/index.d.ts.map +1 -1
- package/build/git/index.js +3 -3
- package/build/git/index.js.map +1 -1
- package/build/git/indexer.d.ts.map +1 -1
- package/build/git/indexer.js +9 -21
- package/build/git/indexer.js.map +1 -1
- package/build/git/indexer.test.js +4 -8
- package/build/git/indexer.test.js.map +1 -1
- package/build/git/sync/synchronizer.d.ts.map +1 -1
- package/build/git/sync/synchronizer.js.map +1 -1
- package/build/git/sync/synchronizer.test.js +4 -2
- package/build/git/sync/synchronizer.test.js.map +1 -1
- package/build/index.js +5 -9
- package/build/index.js.map +1 -1
- package/build/index.test.js +3 -3
- package/build/index.test.js.map +1 -1
- package/build/logger.d.ts.map +1 -1
- package/build/logger.js +1 -9
- package/build/logger.js.map +1 -1
- package/build/prompts/register.d.ts.map +1 -1
- package/build/prompts/register.js.map +1 -1
- package/build/qdrant/client.d.ts.map +1 -1
- package/build/qdrant/client.js.map +1 -1
- package/build/qdrant/client.test.js +10 -34
- package/build/qdrant/client.test.js.map +1 -1
- package/build/resources/index.d.ts +1 -1
- package/build/resources/index.d.ts.map +1 -1
- package/build/resources/index.js +1 -1
- package/build/resources/index.js.map +1 -1
- package/build/tools/code.d.ts.map +1 -1
- package/build/tools/code.js +3 -9
- package/build/tools/code.js.map +1 -1
- package/build/tools/collection.d.ts.map +1 -1
- package/build/tools/collection.js +1 -3
- package/build/tools/collection.js.map +1 -1
- package/build/tools/document.d.ts.map +1 -1
- package/build/tools/document.js +1 -1
- package/build/tools/document.js.map +1 -1
- package/build/tools/federated.d.ts.map +1 -1
- package/build/tools/federated.js +15 -6
- package/build/tools/federated.js.map +1 -1
- package/build/tools/federated.test.js +18 -22
- package/build/tools/federated.test.js.map +1 -1
- package/build/tools/git-history.d.ts.map +1 -1
- package/build/tools/git-history.js +3 -7
- package/build/tools/git-history.js.map +1 -1
- package/build/tools/index.d.ts.map +1 -1
- package/build/tools/index.js.map +1 -1
- package/build/tools/logging.d.ts.map +1 -1
- package/build/tools/logging.js +1 -3
- package/build/tools/logging.js.map +1 -1
- package/build/tools/logging.test.js +1 -1
- package/build/tools/logging.test.js.map +1 -1
- package/build/tools/schemas.d.ts.map +1 -1
- package/build/tools/schemas.js +17 -64
- package/build/tools/schemas.js.map +1 -1
- package/build/tools/search.d.ts.map +1 -1
- package/build/tools/search.js +1 -1
- package/build/tools/search.js.map +1 -1
- package/commitlint.config.js +12 -23
- package/package.json +1 -1
- package/scripts/verify-providers.js +12 -32
- package/src/code/chunker/tree-sitter-chunker.ts +9 -35
- package/src/code/indexer.ts +45 -107
- package/src/code/scanner.ts +1 -1
- package/src/embeddings/cohere.test.ts +17 -45
- package/src/embeddings/cohere.ts +10 -17
- package/src/embeddings/factory.test.ts +18 -18
- package/src/embeddings/factory.ts +18 -25
- package/src/embeddings/ollama.test.ts +38 -67
- package/src/embeddings/ollama.ts +15 -27
- package/src/embeddings/openai.test.ts +17 -53
- package/src/embeddings/openai.ts +11 -22
- package/src/embeddings/sparse.test.ts +12 -2
- package/src/embeddings/voyage.test.ts +39 -80
- package/src/embeddings/voyage.ts +9 -13
- package/src/git/chunker.test.ts +1 -1
- package/src/git/chunker.ts +6 -22
- package/src/git/extractor.integration.test.ts +12 -16
- package/src/git/extractor.test.ts +21 -35
- package/src/git/extractor.ts +14 -36
- package/src/git/index.ts +9 -10
- package/src/git/indexer.test.ts +29 -57
- package/src/git/indexer.ts +38 -86
- package/src/git/sync/synchronizer.test.ts +6 -9
- package/src/git/sync/synchronizer.ts +2 -5
- package/src/index.test.ts +7 -9
- package/src/index.ts +34 -80
- package/src/logger.ts +3 -14
- package/src/prompts/register.ts +3 -10
- package/src/qdrant/client.test.ts +63 -169
- package/src/qdrant/client.ts +19 -45
- package/src/resources/index.ts +4 -10
- package/src/tools/code.ts +43 -66
- package/src/tools/collection.ts +19 -38
- package/src/tools/document.ts +10 -19
- package/src/tools/federated.test.ts +34 -57
- package/src/tools/federated.ts +88 -108
- package/src/tools/git-history.ts +32 -60
- package/src/tools/index.ts +1 -4
- package/src/tools/logging.test.ts +10 -10
- package/src/tools/logging.ts +8 -18
- package/src/tools/schemas.ts +23 -78
- package/src/tools/search.ts +77 -94
- package/tests/code/chunker/tree-sitter-chunker.test.ts +6 -19
- package/tests/code/indexer.test.ts +100 -192
- package/tests/code/integration.test.ts +61 -117
- package/tests/code/scanner.test.ts +12 -39
- package/tests/code/sync/snapshot.test.ts +4 -14
- package/tests/code/sync/synchronizer.test.ts +10 -40
package/build/tools/schemas.js
CHANGED
|
@@ -30,9 +30,7 @@ export const AddDocumentsSchema = {
|
|
|
30
30
|
collection: z.string().describe("Name of the collection"),
|
|
31
31
|
documents: z
|
|
32
32
|
.array(z.object({
|
|
33
|
-
id: z
|
|
34
|
-
.union([z.string(), z.number()])
|
|
35
|
-
.describe("Unique identifier for the document"),
|
|
33
|
+
id: z.union([z.string(), z.number()]).describe("Unique identifier for the document"),
|
|
36
34
|
text: z.string().describe("Text content to embed and store"),
|
|
37
35
|
metadata: z
|
|
38
36
|
.record(z.string(), z.any())
|
|
@@ -43,40 +41,24 @@ export const AddDocumentsSchema = {
|
|
|
43
41
|
};
|
|
44
42
|
export const DeleteDocumentsSchema = {
|
|
45
43
|
collection: z.string().describe("Name of the collection"),
|
|
46
|
-
ids: z
|
|
47
|
-
.array(z.union([z.string(), z.number()]))
|
|
48
|
-
.describe("Array of document IDs to delete"),
|
|
44
|
+
ids: z.array(z.union([z.string(), z.number()])).describe("Array of document IDs to delete"),
|
|
49
45
|
};
|
|
50
46
|
// Search schemas
|
|
51
47
|
export const SemanticSearchSchema = {
|
|
52
48
|
collection: z.string().describe("Name of the collection to search"),
|
|
53
49
|
query: z.string().describe("Search query text"),
|
|
54
|
-
limit: z
|
|
55
|
-
|
|
56
|
-
.optional()
|
|
57
|
-
.describe("Maximum number of results (default: 5)"),
|
|
58
|
-
filter: z
|
|
59
|
-
.record(z.string(), z.any())
|
|
60
|
-
.optional()
|
|
61
|
-
.describe("Optional metadata filter"),
|
|
50
|
+
limit: z.number().optional().describe("Maximum number of results (default: 5)"),
|
|
51
|
+
filter: z.record(z.string(), z.any()).optional().describe("Optional metadata filter"),
|
|
62
52
|
};
|
|
63
53
|
export const HybridSearchSchema = {
|
|
64
54
|
collection: z.string().describe("Name of the collection to search"),
|
|
65
55
|
query: z.string().describe("Search query text"),
|
|
66
|
-
limit: z
|
|
67
|
-
|
|
68
|
-
.optional()
|
|
69
|
-
.describe("Maximum number of results (default: 5)"),
|
|
70
|
-
filter: z
|
|
71
|
-
.record(z.string(), z.any())
|
|
72
|
-
.optional()
|
|
73
|
-
.describe("Optional metadata filter"),
|
|
56
|
+
limit: z.number().optional().describe("Maximum number of results (default: 5)"),
|
|
57
|
+
filter: z.record(z.string(), z.any()).optional().describe("Optional metadata filter"),
|
|
74
58
|
};
|
|
75
59
|
// Code indexing schemas
|
|
76
60
|
export const IndexCodebaseSchema = {
|
|
77
|
-
path: z
|
|
78
|
-
.string()
|
|
79
|
-
.describe("Absolute or relative path to codebase root directory"),
|
|
61
|
+
path: z.string().describe("Absolute or relative path to codebase root directory"),
|
|
80
62
|
forceReindex: z
|
|
81
63
|
.boolean()
|
|
82
64
|
.optional()
|
|
@@ -92,13 +74,8 @@ export const IndexCodebaseSchema = {
|
|
|
92
74
|
};
|
|
93
75
|
export const SearchCodeSchema = {
|
|
94
76
|
path: z.string().describe("Path to codebase (must be indexed first)"),
|
|
95
|
-
query: z
|
|
96
|
-
|
|
97
|
-
.describe("Natural language search query (e.g., 'authentication logic')"),
|
|
98
|
-
limit: z
|
|
99
|
-
.number()
|
|
100
|
-
.optional()
|
|
101
|
-
.describe("Maximum number of results (default: 5, max: 100)"),
|
|
77
|
+
query: z.string().describe("Natural language search query (e.g., 'authentication logic')"),
|
|
78
|
+
limit: z.number().optional().describe("Maximum number of results (default: 5, max: 100)"),
|
|
102
79
|
fileTypes: z
|
|
103
80
|
.array(z.string())
|
|
104
81
|
.optional()
|
|
@@ -128,20 +105,14 @@ export const IndexGitHistorySchema = {
|
|
|
128
105
|
.string()
|
|
129
106
|
.optional()
|
|
130
107
|
.describe("Only index commits after this date (ISO format, e.g., '2024-01-01')"),
|
|
131
|
-
maxCommits: z
|
|
132
|
-
.number()
|
|
133
|
-
.optional()
|
|
134
|
-
.describe("Maximum number of commits to index (default: 5000)"),
|
|
108
|
+
maxCommits: z.number().optional().describe("Maximum number of commits to index (default: 5000)"),
|
|
135
109
|
};
|
|
136
110
|
export const SearchGitHistorySchema = {
|
|
137
111
|
path: z.string().describe("Path to git repository (must be indexed first)"),
|
|
138
112
|
query: z
|
|
139
113
|
.string()
|
|
140
114
|
.describe("Natural language search query (e.g., 'fix null pointer in authentication')"),
|
|
141
|
-
limit: z
|
|
142
|
-
.number()
|
|
143
|
-
.optional()
|
|
144
|
-
.describe("Maximum number of results (default: 10, max: 100)"),
|
|
115
|
+
limit: z.number().optional().describe("Maximum number of results (default: 10, max: 100)"),
|
|
145
116
|
commitTypes: z
|
|
146
117
|
.array(z.enum([
|
|
147
118
|
"feat",
|
|
@@ -159,18 +130,9 @@ export const SearchGitHistorySchema = {
|
|
|
159
130
|
]))
|
|
160
131
|
.optional()
|
|
161
132
|
.describe("Filter by commit type (e.g., ['fix', 'feat'])"),
|
|
162
|
-
authors: z
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
.describe("Filter by author name or email"),
|
|
166
|
-
dateFrom: z
|
|
167
|
-
.string()
|
|
168
|
-
.optional()
|
|
169
|
-
.describe("Only commits after this date (ISO format)"),
|
|
170
|
-
dateTo: z
|
|
171
|
-
.string()
|
|
172
|
-
.optional()
|
|
173
|
-
.describe("Only commits before this date (ISO format)"),
|
|
133
|
+
authors: z.array(z.string()).optional().describe("Filter by author name or email"),
|
|
134
|
+
dateFrom: z.string().optional().describe("Only commits after this date (ISO format)"),
|
|
135
|
+
dateTo: z.string().optional().describe("Only commits before this date (ISO format)"),
|
|
174
136
|
};
|
|
175
137
|
export const IndexNewCommitsSchema = {
|
|
176
138
|
path: z.string().describe("Path to git repository"),
|
|
@@ -187,14 +149,8 @@ export const ContextualSearchSchema = {
|
|
|
187
149
|
.string()
|
|
188
150
|
.describe("Path to git repository (must be indexed for both code and git history)"),
|
|
189
151
|
query: z.string().describe("Natural language search query"),
|
|
190
|
-
codeLimit: z
|
|
191
|
-
|
|
192
|
-
.optional()
|
|
193
|
-
.describe("Maximum number of code results (default: 5)"),
|
|
194
|
-
gitLimit: z
|
|
195
|
-
.number()
|
|
196
|
-
.optional()
|
|
197
|
-
.describe("Maximum number of git history results (default: 5)"),
|
|
152
|
+
codeLimit: z.number().optional().describe("Maximum number of code results (default: 5)"),
|
|
153
|
+
gitLimit: z.number().optional().describe("Maximum number of git history results (default: 5)"),
|
|
198
154
|
correlate: z
|
|
199
155
|
.boolean()
|
|
200
156
|
.optional()
|
|
@@ -207,10 +163,7 @@ export const FederatedSearchSchema = {
|
|
|
207
163
|
.min(1)
|
|
208
164
|
.describe("Array of repository paths to search (must all be indexed)"),
|
|
209
165
|
query: z.string().describe("Natural language search query"),
|
|
210
|
-
searchType: z
|
|
211
|
-
.enum(["code", "git", "both"])
|
|
212
|
-
.optional()
|
|
213
|
-
.describe("Type of search (default: both)"),
|
|
166
|
+
searchType: z.enum(["code", "git", "both"]).optional().describe("Type of search (default: both)"),
|
|
214
167
|
limit: z
|
|
215
168
|
.number()
|
|
216
169
|
.optional()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gCAAgC;AAChC,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACnD,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;SACjC,QAAQ,EAAE;SACV,QAAQ,CAAC,mCAAmC,CAAC;IAChD,YAAY,EAAE,CAAC;SACZ,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;CACzE,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;CAC9D,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CACpD,CAAC;AAEF,6BAA6B;AAC7B,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACzD,SAAS,EAAE,CAAC;SACT,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,sBAAsB,GAAG,IAAI,CA2GzF"}
|
package/build/tools/search.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Search tools registration
|
|
3
3
|
*/
|
|
4
|
-
import logger from "../logger.js";
|
|
5
4
|
import { BM25SparseVectorGenerator } from "../embeddings/sparse.js";
|
|
5
|
+
import logger from "../logger.js";
|
|
6
6
|
import { withToolLogging } from "./logging.js";
|
|
7
7
|
import * as schemas from "./schemas.js";
|
|
8
8
|
const log = logger.child({ component: "tools" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
|
package/commitlint.config.js
CHANGED
|
@@ -1,25 +1,14 @@
|
|
|
1
1
|
export default {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"test",
|
|
15
|
-
"chore",
|
|
16
|
-
"ci",
|
|
17
|
-
"build",
|
|
18
|
-
],
|
|
19
|
-
],
|
|
20
|
-
"subject-case": [2, "never", ["upper-case", "pascal-case", "start-case"]],
|
|
21
|
-
"subject-empty": [2, "never"],
|
|
22
|
-
"subject-full-stop": [2, "never", "."],
|
|
23
|
-
"header-max-length": [2, "always", 100],
|
|
24
|
-
},
|
|
2
|
+
extends: ["@commitlint/config-conventional"],
|
|
3
|
+
rules: {
|
|
4
|
+
"type-enum": [
|
|
5
|
+
2,
|
|
6
|
+
"always",
|
|
7
|
+
["feat", "fix", "docs", "style", "refactor", "perf", "test", "chore", "ci", "build"],
|
|
8
|
+
],
|
|
9
|
+
"subject-case": [2, "never", ["upper-case", "pascal-case", "start-case"]],
|
|
10
|
+
"subject-empty": [2, "never"],
|
|
11
|
+
"subject-full-stop": [2, "never", "."],
|
|
12
|
+
"header-max-length": [2, "always", 100],
|
|
13
|
+
},
|
|
25
14
|
};
|
package/package.json
CHANGED
|
@@ -102,14 +102,10 @@ test("Ollama provider does not require API key", () => {
|
|
|
102
102
|
throw new Error("Failed to create Ollama provider");
|
|
103
103
|
}
|
|
104
104
|
if (provider.getModel() !== "nomic-embed-text") {
|
|
105
|
-
throw new Error(
|
|
106
|
-
`Expected default model 'nomic-embed-text', got '${provider.getModel()}'`,
|
|
107
|
-
);
|
|
105
|
+
throw new Error(`Expected default model 'nomic-embed-text', got '${provider.getModel()}'`);
|
|
108
106
|
}
|
|
109
107
|
if (provider.getDimensions() !== 768) {
|
|
110
|
-
throw new Error(
|
|
111
|
-
`Expected default dimensions 768, got ${provider.getDimensions()}`,
|
|
112
|
-
);
|
|
108
|
+
throw new Error(`Expected default dimensions 768, got ${provider.getDimensions()}`);
|
|
113
109
|
}
|
|
114
110
|
});
|
|
115
111
|
|
|
@@ -124,13 +120,11 @@ test("OpenAI provider instantiates with API key", () => {
|
|
|
124
120
|
}
|
|
125
121
|
if (provider.getModel() !== "text-embedding-3-small") {
|
|
126
122
|
throw new Error(
|
|
127
|
-
`Expected default model 'text-embedding-3-small', got '${provider.getModel()}'
|
|
123
|
+
`Expected default model 'text-embedding-3-small', got '${provider.getModel()}'`
|
|
128
124
|
);
|
|
129
125
|
}
|
|
130
126
|
if (provider.getDimensions() !== 1536) {
|
|
131
|
-
throw new Error(
|
|
132
|
-
`Expected default dimensions 1536, got ${provider.getDimensions()}`,
|
|
133
|
-
);
|
|
127
|
+
throw new Error(`Expected default dimensions 1536, got ${provider.getDimensions()}`);
|
|
134
128
|
}
|
|
135
129
|
});
|
|
136
130
|
|
|
@@ -144,14 +138,10 @@ test("Cohere provider instantiates with API key", () => {
|
|
|
144
138
|
throw new Error("Failed to create Cohere provider");
|
|
145
139
|
}
|
|
146
140
|
if (provider.getModel() !== "embed-english-v3.0") {
|
|
147
|
-
throw new Error(
|
|
148
|
-
`Expected default model 'embed-english-v3.0', got '${provider.getModel()}'`,
|
|
149
|
-
);
|
|
141
|
+
throw new Error(`Expected default model 'embed-english-v3.0', got '${provider.getModel()}'`);
|
|
150
142
|
}
|
|
151
143
|
if (provider.getDimensions() !== 1024) {
|
|
152
|
-
throw new Error(
|
|
153
|
-
`Expected default dimensions 1024, got ${provider.getDimensions()}`,
|
|
154
|
-
);
|
|
144
|
+
throw new Error(`Expected default dimensions 1024, got ${provider.getDimensions()}`);
|
|
155
145
|
}
|
|
156
146
|
});
|
|
157
147
|
|
|
@@ -165,14 +155,10 @@ test("Voyage AI provider instantiates with API key", () => {
|
|
|
165
155
|
throw new Error("Failed to create Voyage AI provider");
|
|
166
156
|
}
|
|
167
157
|
if (provider.getModel() !== "voyage-2") {
|
|
168
|
-
throw new Error(
|
|
169
|
-
`Expected default model 'voyage-2', got '${provider.getModel()}'`,
|
|
170
|
-
);
|
|
158
|
+
throw new Error(`Expected default model 'voyage-2', got '${provider.getModel()}'`);
|
|
171
159
|
}
|
|
172
160
|
if (provider.getDimensions() !== 1024) {
|
|
173
|
-
throw new Error(
|
|
174
|
-
`Expected default dimensions 1024, got ${provider.getDimensions()}`,
|
|
175
|
-
);
|
|
161
|
+
throw new Error(`Expected default dimensions 1024, got ${provider.getDimensions()}`);
|
|
176
162
|
}
|
|
177
163
|
});
|
|
178
164
|
|
|
@@ -184,14 +170,10 @@ test("Custom model configuration works", () => {
|
|
|
184
170
|
model: "text-embedding-3-large",
|
|
185
171
|
});
|
|
186
172
|
if (provider.getModel() !== "text-embedding-3-large") {
|
|
187
|
-
throw new Error(
|
|
188
|
-
`Expected model 'text-embedding-3-large', got '${provider.getModel()}'`,
|
|
189
|
-
);
|
|
173
|
+
throw new Error(`Expected model 'text-embedding-3-large', got '${provider.getModel()}'`);
|
|
190
174
|
}
|
|
191
175
|
if (provider.getDimensions() !== 3072) {
|
|
192
|
-
throw new Error(
|
|
193
|
-
`Expected dimensions 3072 for large model, got ${provider.getDimensions()}`,
|
|
194
|
-
);
|
|
176
|
+
throw new Error(`Expected dimensions 3072 for large model, got ${provider.getDimensions()}`);
|
|
195
177
|
}
|
|
196
178
|
});
|
|
197
179
|
|
|
@@ -203,9 +185,7 @@ test("Custom dimensions override works", () => {
|
|
|
203
185
|
dimensions: 512,
|
|
204
186
|
});
|
|
205
187
|
if (provider.getDimensions() !== 512) {
|
|
206
|
-
throw new Error(
|
|
207
|
-
`Expected custom dimensions 512, got ${provider.getDimensions()}`,
|
|
208
|
-
);
|
|
188
|
+
throw new Error(`Expected custom dimensions 512, got ${provider.getDimensions()}`);
|
|
209
189
|
}
|
|
210
190
|
});
|
|
211
191
|
|
|
@@ -217,7 +197,7 @@ console.log(`Total Tests: ${results.passed + results.failed}`);
|
|
|
217
197
|
console.log(`Passed: ${results.passed} ✅`);
|
|
218
198
|
console.log(`Failed: ${results.failed} ${results.failed > 0 ? "❌" : ""}`);
|
|
219
199
|
console.log(
|
|
220
|
-
`Success Rate: ${Math.round((results.passed / (results.passed + results.failed)) * 100)}
|
|
200
|
+
`Success Rate: ${Math.round((results.passed / (results.passed + results.failed)) * 100)}%`
|
|
221
201
|
);
|
|
222
202
|
console.log("=".repeat(60));
|
|
223
203
|
|
|
@@ -68,11 +68,7 @@ export class TreeSitterChunker implements CodeChunker {
|
|
|
68
68
|
pyParser.setLanguage(Python as any);
|
|
69
69
|
this.languages.set("python", {
|
|
70
70
|
parser: pyParser,
|
|
71
|
-
chunkableTypes: [
|
|
72
|
-
"function_definition",
|
|
73
|
-
"class_definition",
|
|
74
|
-
"decorated_definition",
|
|
75
|
-
],
|
|
71
|
+
chunkableTypes: ["function_definition", "class_definition", "decorated_definition"],
|
|
76
72
|
});
|
|
77
73
|
|
|
78
74
|
// Go
|
|
@@ -93,13 +89,7 @@ export class TreeSitterChunker implements CodeChunker {
|
|
|
93
89
|
rustParser.setLanguage(Rust as any);
|
|
94
90
|
this.languages.set("rust", {
|
|
95
91
|
parser: rustParser,
|
|
96
|
-
chunkableTypes: [
|
|
97
|
-
"function_item",
|
|
98
|
-
"impl_item",
|
|
99
|
-
"trait_item",
|
|
100
|
-
"struct_item",
|
|
101
|
-
"enum_item",
|
|
102
|
-
],
|
|
92
|
+
chunkableTypes: ["function_item", "impl_item", "trait_item", "struct_item", "enum_item"],
|
|
103
93
|
});
|
|
104
94
|
|
|
105
95
|
// Java
|
|
@@ -124,11 +114,7 @@ export class TreeSitterChunker implements CodeChunker {
|
|
|
124
114
|
});
|
|
125
115
|
}
|
|
126
116
|
|
|
127
|
-
async chunk(
|
|
128
|
-
code: string,
|
|
129
|
-
filePath: string,
|
|
130
|
-
language: string,
|
|
131
|
-
): Promise<CodeChunk[]> {
|
|
117
|
+
async chunk(code: string, filePath: string, language: string): Promise<CodeChunk[]> {
|
|
132
118
|
const langConfig = this.languages.get(language);
|
|
133
119
|
|
|
134
120
|
if (!langConfig) {
|
|
@@ -141,10 +127,7 @@ export class TreeSitterChunker implements CodeChunker {
|
|
|
141
127
|
const chunks: CodeChunk[] = [];
|
|
142
128
|
|
|
143
129
|
// Find all chunkable nodes
|
|
144
|
-
const nodes = this.findChunkableNodes(
|
|
145
|
-
tree.rootNode,
|
|
146
|
-
langConfig.chunkableTypes,
|
|
147
|
-
);
|
|
130
|
+
const nodes = this.findChunkableNodes(tree.rootNode, langConfig.chunkableTypes);
|
|
148
131
|
|
|
149
132
|
for (const [index, node] of nodes.entries()) {
|
|
150
133
|
const content = code.substring(node.startIndex, node.endIndex);
|
|
@@ -156,11 +139,7 @@ export class TreeSitterChunker implements CodeChunker {
|
|
|
156
139
|
|
|
157
140
|
// If chunk is too large, fall back to character chunking for this node
|
|
158
141
|
if (content.length > this.config.maxChunkSize * 2) {
|
|
159
|
-
const subChunks = await this.fallbackChunker.chunk(
|
|
160
|
-
content,
|
|
161
|
-
filePath,
|
|
162
|
-
language,
|
|
163
|
-
);
|
|
142
|
+
const subChunks = await this.fallbackChunker.chunk(content, filePath, language);
|
|
164
143
|
// Adjust line numbers for sub-chunks
|
|
165
144
|
for (const subChunk of subChunks) {
|
|
166
145
|
chunks.push({
|
|
@@ -200,7 +179,7 @@ export class TreeSitterChunker implements CodeChunker {
|
|
|
200
179
|
// On parsing error, fallback to character-based chunking
|
|
201
180
|
log.warn(
|
|
202
181
|
{ filePath, err: error },
|
|
203
|
-
"Tree-sitter parsing failed, falling back to character chunker"
|
|
182
|
+
"Tree-sitter parsing failed, falling back to character chunker"
|
|
204
183
|
);
|
|
205
184
|
return this.fallbackChunker.chunk(code, filePath, language);
|
|
206
185
|
}
|
|
@@ -219,7 +198,7 @@ export class TreeSitterChunker implements CodeChunker {
|
|
|
219
198
|
*/
|
|
220
199
|
private findChunkableNodes(
|
|
221
200
|
node: Parser.SyntaxNode,
|
|
222
|
-
chunkableTypes: string[]
|
|
201
|
+
chunkableTypes: string[]
|
|
223
202
|
): Parser.SyntaxNode[] {
|
|
224
203
|
const nodes: Parser.SyntaxNode[] = [];
|
|
225
204
|
|
|
@@ -242,10 +221,7 @@ export class TreeSitterChunker implements CodeChunker {
|
|
|
242
221
|
/**
|
|
243
222
|
* Extract function/class name from AST node
|
|
244
223
|
*/
|
|
245
|
-
private extractName(
|
|
246
|
-
node: Parser.SyntaxNode,
|
|
247
|
-
code: string,
|
|
248
|
-
): string | undefined {
|
|
224
|
+
private extractName(node: Parser.SyntaxNode, code: string): string | undefined {
|
|
249
225
|
// Try to find name node
|
|
250
226
|
const nameNode = node.childForFieldName("name");
|
|
251
227
|
if (nameNode) {
|
|
@@ -265,9 +241,7 @@ export class TreeSitterChunker implements CodeChunker {
|
|
|
265
241
|
/**
|
|
266
242
|
* Map AST node type to chunk type
|
|
267
243
|
*/
|
|
268
|
-
private getChunkType(
|
|
269
|
-
nodeType: string,
|
|
270
|
-
): "function" | "class" | "interface" | "block" {
|
|
244
|
+
private getChunkType(nodeType: string): "function" | "class" | "interface" | "block" {
|
|
271
245
|
if (nodeType.includes("function") || nodeType.includes("method")) {
|
|
272
246
|
return "function";
|
|
273
247
|
}
|