kiri-mcp-server 0.17.0 → 0.18.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.
Files changed (95) hide show
  1. package/README.md +13 -6
  2. package/dist/package.json +4 -2
  3. package/dist/src/indexer/codeintel/dart/adapter.d.ts +36 -0
  4. package/dist/src/indexer/codeintel/dart/adapter.d.ts.map +1 -0
  5. package/dist/src/indexer/codeintel/dart/adapter.js +60 -0
  6. package/dist/src/indexer/codeintel/dart/adapter.js.map +1 -0
  7. package/dist/src/indexer/codeintel/dart/index.d.ts +7 -0
  8. package/dist/src/indexer/codeintel/dart/index.d.ts.map +1 -0
  9. package/dist/src/indexer/codeintel/dart/index.js +7 -0
  10. package/dist/src/indexer/codeintel/dart/index.js.map +1 -0
  11. package/dist/src/indexer/codeintel/index.d.ts +30 -0
  12. package/dist/src/indexer/codeintel/index.d.ts.map +1 -0
  13. package/dist/src/indexer/codeintel/index.js +32 -0
  14. package/dist/src/indexer/codeintel/index.js.map +1 -0
  15. package/dist/src/indexer/codeintel/java/analyzer.d.ts +22 -0
  16. package/dist/src/indexer/codeintel/java/analyzer.d.ts.map +1 -0
  17. package/dist/src/indexer/codeintel/java/analyzer.js +281 -0
  18. package/dist/src/indexer/codeintel/java/analyzer.js.map +1 -0
  19. package/dist/src/indexer/codeintel/java/index.d.ts +7 -0
  20. package/dist/src/indexer/codeintel/java/index.d.ts.map +1 -0
  21. package/dist/src/indexer/codeintel/java/index.js +7 -0
  22. package/dist/src/indexer/codeintel/java/index.js.map +1 -0
  23. package/dist/src/indexer/codeintel/php/analyzer.d.ts +23 -0
  24. package/dist/src/indexer/codeintel/php/analyzer.d.ts.map +1 -0
  25. package/dist/src/indexer/codeintel/php/analyzer.js +342 -0
  26. package/dist/src/indexer/codeintel/php/analyzer.js.map +1 -0
  27. package/dist/src/indexer/codeintel/php/index.d.ts +7 -0
  28. package/dist/src/indexer/codeintel/php/index.d.ts.map +1 -0
  29. package/dist/src/indexer/codeintel/php/index.js +7 -0
  30. package/dist/src/indexer/codeintel/php/index.js.map +1 -0
  31. package/dist/src/indexer/codeintel/registry.d.ts +76 -0
  32. package/dist/src/indexer/codeintel/registry.d.ts.map +1 -0
  33. package/dist/src/indexer/codeintel/registry.js +127 -0
  34. package/dist/src/indexer/codeintel/registry.js.map +1 -0
  35. package/dist/src/indexer/codeintel/rust/analyzer.d.ts +14 -0
  36. package/dist/src/indexer/codeintel/rust/analyzer.d.ts.map +1 -0
  37. package/dist/src/indexer/codeintel/rust/analyzer.js +388 -0
  38. package/dist/src/indexer/codeintel/rust/analyzer.js.map +1 -0
  39. package/dist/src/indexer/codeintel/rust/index.d.ts +5 -0
  40. package/dist/src/indexer/codeintel/rust/index.d.ts.map +1 -0
  41. package/dist/src/indexer/codeintel/rust/index.js +5 -0
  42. package/dist/src/indexer/codeintel/rust/index.js.map +1 -0
  43. package/dist/src/indexer/codeintel/swift/analyzer.d.ts +22 -0
  44. package/dist/src/indexer/codeintel/swift/analyzer.d.ts.map +1 -0
  45. package/dist/src/indexer/codeintel/swift/analyzer.js +271 -0
  46. package/dist/src/indexer/codeintel/swift/analyzer.js.map +1 -0
  47. package/dist/src/indexer/codeintel/swift/index.d.ts +7 -0
  48. package/dist/src/indexer/codeintel/swift/index.d.ts.map +1 -0
  49. package/dist/src/indexer/codeintel/swift/index.js +7 -0
  50. package/dist/src/indexer/codeintel/swift/index.js.map +1 -0
  51. package/dist/src/indexer/codeintel/types.d.ts +114 -0
  52. package/dist/src/indexer/codeintel/types.d.ts.map +1 -0
  53. package/dist/src/indexer/codeintel/types.js +13 -0
  54. package/dist/src/indexer/codeintel/types.js.map +1 -0
  55. package/dist/src/indexer/codeintel/typescript/analyzer.d.ts +22 -0
  56. package/dist/src/indexer/codeintel/typescript/analyzer.d.ts.map +1 -0
  57. package/dist/src/indexer/codeintel/typescript/analyzer.js +210 -0
  58. package/dist/src/indexer/codeintel/typescript/analyzer.js.map +1 -0
  59. package/dist/src/indexer/codeintel/typescript/index.d.ts +7 -0
  60. package/dist/src/indexer/codeintel/typescript/index.d.ts.map +1 -0
  61. package/dist/src/indexer/codeintel/typescript/index.js +7 -0
  62. package/dist/src/indexer/codeintel/typescript/index.js.map +1 -0
  63. package/dist/src/indexer/codeintel/utils.d.ts +91 -0
  64. package/dist/src/indexer/codeintel/utils.d.ts.map +1 -0
  65. package/dist/src/indexer/codeintel/utils.js +145 -0
  66. package/dist/src/indexer/codeintel/utils.js.map +1 -0
  67. package/dist/src/indexer/codeintel.d.ts +33 -26
  68. package/dist/src/indexer/codeintel.d.ts.map +1 -1
  69. package/dist/src/indexer/codeintel.js +56 -1078
  70. package/dist/src/indexer/codeintel.js.map +1 -1
  71. package/package.json +10 -2
  72. package/dist/src/client/model-cli.d.ts +0 -12
  73. package/dist/src/client/model-cli.d.ts.map +0 -1
  74. package/dist/src/client/model-cli.js +0 -247
  75. package/dist/src/client/model-cli.js.map +0 -1
  76. package/dist/src/shared/utils/global-dirs.d.ts +0 -64
  77. package/dist/src/shared/utils/global-dirs.d.ts.map +0 -1
  78. package/dist/src/shared/utils/global-dirs.js +0 -134
  79. package/dist/src/shared/utils/global-dirs.js.map +0 -1
  80. package/dist/src/vss/config.d.ts +0 -66
  81. package/dist/src/vss/config.d.ts.map +0 -1
  82. package/dist/src/vss/config.js +0 -233
  83. package/dist/src/vss/config.js.map +0 -1
  84. package/dist/src/vss/index.d.ts +0 -9
  85. package/dist/src/vss/index.d.ts.map +0 -1
  86. package/dist/src/vss/index.js +0 -9
  87. package/dist/src/vss/index.js.map +0 -1
  88. package/dist/src/vss/model-downloader.d.ts +0 -101
  89. package/dist/src/vss/model-downloader.d.ts.map +0 -1
  90. package/dist/src/vss/model-downloader.js +0 -320
  91. package/dist/src/vss/model-downloader.js.map +0 -1
  92. package/dist/src/vss/provider.d.ts +0 -132
  93. package/dist/src/vss/provider.d.ts.map +0 -1
  94. package/dist/src/vss/provider.js +0 -254
  95. package/dist/src/vss/provider.js.map +0 -1
@@ -1,254 +0,0 @@
1
- /**
2
- * VSS Embedding Provider Interface
3
- *
4
- * Defines the interface for generating semantic embeddings.
5
- * Implementations can use different backends (LSH, Transformers.js, external API).
6
- */
7
- import { generateEmbedding as generateLSHEmbedding } from "../shared/embedding.js";
8
- import { getModelPath, isModelInstalled } from "../shared/utils/global-dirs.js";
9
- import { loadVSSConfig, MODEL_METADATA } from "./config.js";
10
- /**
11
- * LSH-based embedding provider (current implementation)
12
- * Uses locality-sensitive hashing for structural similarity
13
- */
14
- export class LSHEmbeddingProvider {
15
- name = "lsh";
16
- dims = 64;
17
- ready = true;
18
- async generateEmbedding(text) {
19
- const result = generateLSHEmbedding(text);
20
- if (!result)
21
- return null;
22
- return { dims: result.dims, values: result.values };
23
- }
24
- async generateBatch(items) {
25
- return items.map((item) => {
26
- const result = generateLSHEmbedding(item.content);
27
- return {
28
- path: item.path,
29
- embedding: result ? { dims: 64, values: result.values } : null,
30
- };
31
- });
32
- }
33
- async initialize() {
34
- // No initialization needed for LSH
35
- }
36
- async dispose() {
37
- // No cleanup needed for LSH
38
- }
39
- }
40
- /**
41
- * Neural embedding provider (legacy, for non-ONNX models)
42
- * Uses CodeBERT/UniXcoder for semantic embeddings
43
- *
44
- * @deprecated Use TransformersEmbeddingProvider for ONNX-ready models
45
- */
46
- export class NeuralEmbeddingProvider {
47
- name;
48
- dims = 768; // CodeBERT/UniXcoder dimension
49
- _ready = false;
50
- modelPath;
51
- model;
52
- constructor(model) {
53
- this.name = `neural:${model}`;
54
- this.model = model;
55
- this.modelPath = getModelPath(model);
56
- }
57
- get ready() {
58
- return this._ready;
59
- }
60
- async generateEmbedding(text) {
61
- if (!this._ready) {
62
- throw new Error(`Neural provider not initialized. Call initialize() first.`);
63
- }
64
- // Legacy models require manual ONNX conversion, fall back to LSH
65
- console.warn(`[VSS] Legacy model "${this.model}" has no ONNX, using LSH fallback`);
66
- const lsh = new LSHEmbeddingProvider();
67
- return lsh.generateEmbedding(text);
68
- }
69
- async generateBatch(items) {
70
- if (!this._ready) {
71
- throw new Error(`Neural provider not initialized. Call initialize() first.`);
72
- }
73
- const results = [];
74
- for (const item of items) {
75
- const embedding = await this.generateEmbedding(item.content);
76
- results.push({ path: item.path, embedding });
77
- }
78
- return results;
79
- }
80
- async initialize() {
81
- if (!isModelInstalled(this.model)) {
82
- throw new Error(`Model "${this.model}" is not installed. Run "kiri model download ${this.model}" first.`);
83
- }
84
- console.info(`[VSS] Neural embedding provider initialized (model: ${this.model})`);
85
- console.warn(`[VSS] Legacy model has no ONNX, will use LSH fallback`);
86
- this._ready = true;
87
- }
88
- async dispose() {
89
- this._ready = false;
90
- }
91
- }
92
- // Lazy-loaded transformers pipeline to avoid startup cost
93
- let transformersPipeline = null;
94
- /**
95
- * Transformers.js embedding provider
96
- * Uses @huggingface/transformers for ONNX-based inference
97
- */
98
- export class TransformersEmbeddingProvider {
99
- name;
100
- dims;
101
- _ready = false;
102
- model;
103
- hfModelId;
104
- extractor = null;
105
- constructor(model) {
106
- const metadata = MODEL_METADATA[model];
107
- if (!metadata.hasOnnx) {
108
- throw new Error(`Model "${model}" does not have ONNX support. Use NeuralEmbeddingProvider or choose an ONNX-ready model.`);
109
- }
110
- this.name = `transformers:${model}`;
111
- this.model = model;
112
- this.hfModelId = metadata.hfModelId;
113
- this.dims = metadata.dims;
114
- }
115
- get ready() {
116
- return this._ready;
117
- }
118
- async generateEmbedding(text) {
119
- if (!this._ready || !this.extractor) {
120
- throw new Error(`Transformers provider not initialized. Call initialize() first.`);
121
- }
122
- try {
123
- const output = await this.extractor(text, { pooling: "mean", normalize: true });
124
- // Feature extraction returns a Tensor with data property
125
- const tensor = output;
126
- const values = Array.from(tensor.data);
127
- return { dims: this.dims, values };
128
- }
129
- catch (error) {
130
- console.error(`[VSS] Embedding generation failed:`, error);
131
- return null;
132
- }
133
- }
134
- async generateBatch(items) {
135
- if (!this._ready || !this.extractor) {
136
- throw new Error(`Transformers provider not initialized. Call initialize() first.`);
137
- }
138
- const results = [];
139
- // Process in batches to avoid memory issues
140
- const batchSize = 8;
141
- for (let i = 0; i < items.length; i += batchSize) {
142
- const batch = items.slice(i, i + batchSize);
143
- const texts = batch.map((item) => item.content);
144
- try {
145
- const subBatchStart = Date.now();
146
- const output = await this.extractor(texts, { pooling: "mean", normalize: true });
147
- const elapsed = ((Date.now() - subBatchStart) / 1000).toFixed(1);
148
- console.info(`[VSS] Sub-batch ${Math.floor(i / batchSize) + 1}/${Math.ceil(items.length / batchSize)}: ${batch.length} texts in ${elapsed}s`);
149
- // Feature extraction returns a Tensor with data property
150
- const tensor = output;
151
- // Output shape: [batch_size, dims]
152
- for (let j = 0; j < batch.length; j++) {
153
- const start = j * this.dims;
154
- const end = start + this.dims;
155
- const values = Array.from(tensor.data.slice(start, end));
156
- results.push({
157
- path: batch[j].path,
158
- embedding: { dims: this.dims, values },
159
- });
160
- }
161
- }
162
- catch (error) {
163
- console.error(`[VSS] Batch embedding failed:`, error);
164
- // Add null results for failed batch
165
- for (const item of batch) {
166
- results.push({ path: item.path, embedding: null });
167
- }
168
- }
169
- }
170
- return results;
171
- }
172
- async initialize() {
173
- console.info(`[VSS] Loading model: ${this.hfModelId}`);
174
- // Lazy load transformers to reduce startup time
175
- if (!transformersPipeline) {
176
- const transformers = await import("@huggingface/transformers");
177
- transformersPipeline = transformers.pipeline;
178
- }
179
- // Create feature extraction pipeline
180
- this.extractor = await transformersPipeline("feature-extraction", this.hfModelId, {
181
- dtype: "fp32", // Use fp32 for better compatibility
182
- });
183
- console.info(`[VSS] Transformers embedding provider ready (model: ${this.model})`);
184
- this._ready = true;
185
- }
186
- async dispose() {
187
- this.extractor = null;
188
- this._ready = false;
189
- }
190
- }
191
- /**
192
- * Create an embedding provider based on configuration
193
- */
194
- export async function createEmbeddingProvider(options) {
195
- const config = loadVSSConfig(options?.config);
196
- // Force LSH provider if specified
197
- if (options?.forceProvider === "lsh") {
198
- return new LSHEmbeddingProvider();
199
- }
200
- // If VSS is disabled, use LSH
201
- if (!config.enabled) {
202
- return new LSHEmbeddingProvider();
203
- }
204
- const metadata = MODEL_METADATA[config.model];
205
- // Force transformers provider if specified
206
- if (options?.forceProvider === "transformers") {
207
- if (!metadata.hasOnnx) {
208
- throw new Error(`Model "${config.model}" does not have ONNX support. Choose an ONNX-ready model.`);
209
- }
210
- const provider = new TransformersEmbeddingProvider(config.model);
211
- await provider.initialize();
212
- return provider;
213
- }
214
- // Force neural provider if specified (legacy)
215
- if (options?.forceProvider === "neural") {
216
- const provider = new NeuralEmbeddingProvider(config.model);
217
- await provider.initialize();
218
- return provider;
219
- }
220
- // Auto-select provider based on model capabilities
221
- if (metadata.hasOnnx) {
222
- // Use TransformersEmbeddingProvider for ONNX-ready models
223
- // Models are auto-downloaded by @huggingface/transformers
224
- const provider = new TransformersEmbeddingProvider(config.model);
225
- await provider.initialize();
226
- return provider;
227
- }
228
- // Legacy models: check if manually installed
229
- if (!isModelInstalled(config.model)) {
230
- switch (config.onMissing) {
231
- case "error":
232
- throw new Error(`VSS model "${config.model}" not installed. Run "kiri model download ${config.model}" first.`);
233
- case "skip":
234
- console.info(`[VSS] Model not installed, using LSH fallback`);
235
- return new LSHEmbeddingProvider();
236
- case "prompt":
237
- case "download":
238
- // These should be handled by the CLI before reaching here
239
- console.warn(`[VSS] Model not installed, using LSH fallback`);
240
- return new LSHEmbeddingProvider();
241
- }
242
- }
243
- // Use legacy neural provider for non-ONNX models
244
- const provider = new NeuralEmbeddingProvider(config.model);
245
- await provider.initialize();
246
- return provider;
247
- }
248
- /**
249
- * Get provider info string for logging
250
- */
251
- export function getProviderInfo(provider) {
252
- return `${provider.name} (dims=${provider.dims}, ready=${provider.ready})`;
253
- }
254
- //# sourceMappingURL=provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/vss/provider.ts"],"names":[],"mappings":"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"}