@millstone/synapse-context-mcp 0.3.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 (140) hide show
  1. package/README.md +217 -0
  2. package/dist/bundled/code-structure.js +12427 -0
  3. package/dist/bundled/file-search.js +40278 -0
  4. package/dist/bundled/semantic-search.js +40245 -0
  5. package/dist/bundled/tree-sitter-wasms/tree-sitter-bash.wasm +0 -0
  6. package/dist/bundled/tree-sitter-wasms/tree-sitter-c.wasm +0 -0
  7. package/dist/bundled/tree-sitter-wasms/tree-sitter-c_sharp.wasm +0 -0
  8. package/dist/bundled/tree-sitter-wasms/tree-sitter-cpp.wasm +0 -0
  9. package/dist/bundled/tree-sitter-wasms/tree-sitter-css.wasm +0 -0
  10. package/dist/bundled/tree-sitter-wasms/tree-sitter-dart.wasm +0 -0
  11. package/dist/bundled/tree-sitter-wasms/tree-sitter-elisp.wasm +0 -0
  12. package/dist/bundled/tree-sitter-wasms/tree-sitter-elixir.wasm +0 -0
  13. package/dist/bundled/tree-sitter-wasms/tree-sitter-elm.wasm +0 -0
  14. package/dist/bundled/tree-sitter-wasms/tree-sitter-embedded_template.wasm +0 -0
  15. package/dist/bundled/tree-sitter-wasms/tree-sitter-go.wasm +0 -0
  16. package/dist/bundled/tree-sitter-wasms/tree-sitter-html.wasm +0 -0
  17. package/dist/bundled/tree-sitter-wasms/tree-sitter-java.wasm +0 -0
  18. package/dist/bundled/tree-sitter-wasms/tree-sitter-javascript.wasm +0 -0
  19. package/dist/bundled/tree-sitter-wasms/tree-sitter-json.wasm +0 -0
  20. package/dist/bundled/tree-sitter-wasms/tree-sitter-kotlin.wasm +0 -0
  21. package/dist/bundled/tree-sitter-wasms/tree-sitter-lua.wasm +0 -0
  22. package/dist/bundled/tree-sitter-wasms/tree-sitter-objc.wasm +0 -0
  23. package/dist/bundled/tree-sitter-wasms/tree-sitter-ocaml.wasm +0 -0
  24. package/dist/bundled/tree-sitter-wasms/tree-sitter-php.wasm +0 -0
  25. package/dist/bundled/tree-sitter-wasms/tree-sitter-python.wasm +0 -0
  26. package/dist/bundled/tree-sitter-wasms/tree-sitter-ql.wasm +0 -0
  27. package/dist/bundled/tree-sitter-wasms/tree-sitter-rescript.wasm +0 -0
  28. package/dist/bundled/tree-sitter-wasms/tree-sitter-ruby.wasm +0 -0
  29. package/dist/bundled/tree-sitter-wasms/tree-sitter-rust.wasm +0 -0
  30. package/dist/bundled/tree-sitter-wasms/tree-sitter-scala.wasm +0 -0
  31. package/dist/bundled/tree-sitter-wasms/tree-sitter-solidity.wasm +0 -0
  32. package/dist/bundled/tree-sitter-wasms/tree-sitter-swift.wasm +0 -0
  33. package/dist/bundled/tree-sitter-wasms/tree-sitter-systemrdl.wasm +0 -0
  34. package/dist/bundled/tree-sitter-wasms/tree-sitter-tlaplus.wasm +0 -0
  35. package/dist/bundled/tree-sitter-wasms/tree-sitter-toml.wasm +0 -0
  36. package/dist/bundled/tree-sitter-wasms/tree-sitter-tsx.wasm +0 -0
  37. package/dist/bundled/tree-sitter-wasms/tree-sitter-typescript.wasm +0 -0
  38. package/dist/bundled/tree-sitter-wasms/tree-sitter-vue.wasm +0 -0
  39. package/dist/bundled/tree-sitter-wasms/tree-sitter-yaml.wasm +0 -0
  40. package/dist/bundled/tree-sitter-wasms/tree-sitter-zig.wasm +0 -0
  41. package/dist/bundled/tree-sitter-wasms/tree-sitter.wasm +0 -0
  42. package/dist/bundled/tree-sitter.wasm +0 -0
  43. package/dist/continue/ContinueIDE.d.ts +70 -0
  44. package/dist/continue/ContinueIDE.d.ts.map +1 -0
  45. package/dist/continue/ContinueIDE.js +251 -0
  46. package/dist/continue/ContinueIDE.js.map +1 -0
  47. package/dist/embeddings/embeddings-provider.d.ts +53 -0
  48. package/dist/embeddings/embeddings-provider.d.ts.map +1 -0
  49. package/dist/embeddings/embeddings-provider.js +138 -0
  50. package/dist/embeddings/embeddings-provider.js.map +1 -0
  51. package/dist/embeddings/index.d.ts +10 -0
  52. package/dist/embeddings/index.d.ts.map +1 -0
  53. package/dist/embeddings/index.js +10 -0
  54. package/dist/embeddings/index.js.map +1 -0
  55. package/dist/embeddings/vector-index.d.ts +43 -0
  56. package/dist/embeddings/vector-index.d.ts.map +1 -0
  57. package/dist/embeddings/vector-index.js +174 -0
  58. package/dist/embeddings/vector-index.js.map +1 -0
  59. package/dist/index.d.ts +3 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +53 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/selection/SelectionManager.d.ts +90 -0
  64. package/dist/selection/SelectionManager.d.ts.map +1 -0
  65. package/dist/selection/SelectionManager.js +167 -0
  66. package/dist/selection/SelectionManager.js.map +1 -0
  67. package/dist/server.d.ts +28 -0
  68. package/dist/server.d.ts.map +1 -0
  69. package/dist/server.js +480 -0
  70. package/dist/server.js.map +1 -0
  71. package/dist/shims/continue-worker-paths.d.ts +47 -0
  72. package/dist/shims/continue-worker-paths.d.ts.map +1 -0
  73. package/dist/shims/continue-worker-paths.js +94 -0
  74. package/dist/shims/continue-worker-paths.js.map +1 -0
  75. package/dist/shims/workerpool-shim.d.ts +43 -0
  76. package/dist/shims/workerpool-shim.d.ts.map +1 -0
  77. package/dist/shims/workerpool-shim.js +37 -0
  78. package/dist/shims/workerpool-shim.js.map +1 -0
  79. package/dist/tools/code-structure.d.ts +36 -0
  80. package/dist/tools/code-structure.d.ts.map +1 -0
  81. package/dist/tools/code-structure.js +131 -0
  82. package/dist/tools/code-structure.js.map +1 -0
  83. package/dist/tools/file-search.d.ts +35 -0
  84. package/dist/tools/file-search.d.ts.map +1 -0
  85. package/dist/tools/file-search.js +286 -0
  86. package/dist/tools/file-search.js.map +1 -0
  87. package/dist/tools/file-tree.d.ts +18 -0
  88. package/dist/tools/file-tree.d.ts.map +1 -0
  89. package/dist/tools/file-tree.js +45 -0
  90. package/dist/tools/file-tree.js.map +1 -0
  91. package/dist/tools/manage-selection.d.ts +28 -0
  92. package/dist/tools/manage-selection.d.ts.map +1 -0
  93. package/dist/tools/manage-selection.js +98 -0
  94. package/dist/tools/manage-selection.js.map +1 -0
  95. package/dist/tools/read-file.d.ts +19 -0
  96. package/dist/tools/read-file.d.ts.map +1 -0
  97. package/dist/tools/read-file.js +35 -0
  98. package/dist/tools/read-file.js.map +1 -0
  99. package/dist/tools/semantic-search.d.ts +50 -0
  100. package/dist/tools/semantic-search.d.ts.map +1 -0
  101. package/dist/tools/semantic-search.js +243 -0
  102. package/dist/tools/semantic-search.js.map +1 -0
  103. package/dist/tools/workspace-context.d.ts +20 -0
  104. package/dist/tools/workspace-context.d.ts.map +1 -0
  105. package/dist/tools/workspace-context.js +36 -0
  106. package/dist/tools/workspace-context.js.map +1 -0
  107. package/dist/tree-sitter/code-snippet-queries/bash.scm +7 -0
  108. package/dist/tree-sitter/code-snippet-queries/c.scm +34 -0
  109. package/dist/tree-sitter/code-snippet-queries/c_sharp.scm +42 -0
  110. package/dist/tree-sitter/code-snippet-queries/cpp.scm +34 -0
  111. package/dist/tree-sitter/code-snippet-queries/dart.scm +33 -0
  112. package/dist/tree-sitter/code-snippet-queries/elisp.scm +21 -0
  113. package/dist/tree-sitter/code-snippet-queries/elixir.scm +32 -0
  114. package/dist/tree-sitter/code-snippet-queries/elm.scm +17 -0
  115. package/dist/tree-sitter/code-snippet-queries/go.scm +28 -0
  116. package/dist/tree-sitter/code-snippet-queries/java.scm +34 -0
  117. package/dist/tree-sitter/code-snippet-queries/javascript.scm +22 -0
  118. package/dist/tree-sitter/code-snippet-queries/kotlin.scm +32 -0
  119. package/dist/tree-sitter/code-snippet-queries/lua.scm +34 -0
  120. package/dist/tree-sitter/code-snippet-queries/ocaml.scm +27 -0
  121. package/dist/tree-sitter/code-snippet-queries/php.scm +43 -0
  122. package/dist/tree-sitter/code-snippet-queries/python.scm +17 -0
  123. package/dist/tree-sitter/code-snippet-queries/rescript.scm +23 -0
  124. package/dist/tree-sitter/code-snippet-queries/ruby.scm +33 -0
  125. package/dist/tree-sitter/code-snippet-queries/rust.scm +42 -0
  126. package/dist/tree-sitter/code-snippet-queries/scala.scm +32 -0
  127. package/dist/tree-sitter/code-snippet-queries/solidity.scm +33 -0
  128. package/dist/tree-sitter/code-snippet-queries/swift.scm +40 -0
  129. package/dist/tree-sitter/code-snippet-queries/tsx.scm +54 -0
  130. package/dist/tree-sitter/code-snippet-queries/typescript.scm +28 -0
  131. package/dist/tree-sitter/code-snippet-queries/zig.scm +16 -0
  132. package/dist/utils/file-walker.d.ts +19 -0
  133. package/dist/utils/file-walker.d.ts.map +1 -0
  134. package/dist/utils/file-walker.js +82 -0
  135. package/dist/utils/file-walker.js.map +1 -0
  136. package/dist/utils/token-counter.d.ts +16 -0
  137. package/dist/utils/token-counter.d.ts.map +1 -0
  138. package/dist/utils/token-counter.js +30 -0
  139. package/dist/utils/token-counter.js.map +1 -0
  140. package/package.json +64 -0
Binary file
@@ -0,0 +1,70 @@
1
+ import type { IDE, IdeInfo, IdeSettings, FileType, ToastType } from '@continuedev/core';
2
+ /**
3
+ * Minimal IDE implementation for Continue's indexing
4
+ * Only implements methods actually used by FullTextSearchCodebaseIndex and CodeSnippetsCodebaseIndex
5
+ */
6
+ export declare class ContinueIDE implements IDE {
7
+ private workspaceDir;
8
+ constructor(workspaceDir: string);
9
+ getWorkspaceDirs(): Promise<string[]>;
10
+ readFile(filepath: string): Promise<string>;
11
+ fileExists(filepath: string): Promise<boolean>;
12
+ listDir(dir: string): Promise<[string, FileType][]>;
13
+ readRangeInFile(filepath: string, range: {
14
+ start: {
15
+ line: number;
16
+ character: number;
17
+ };
18
+ end: {
19
+ line: number;
20
+ character: number;
21
+ };
22
+ }): Promise<string>;
23
+ getBranch(dir: string): Promise<string>;
24
+ getGitRootPath(dir: string): Promise<string | undefined>;
25
+ getRepoName(dir: string): Promise<string | undefined>;
26
+ getIdeInfo(): Promise<IdeInfo>;
27
+ getIdeSettings(): Promise<IdeSettings>;
28
+ getFileStats(files: string[]): Promise<any>;
29
+ readSecrets(): Promise<Record<string, string>>;
30
+ writeSecrets(_secrets: Record<string, string>): Promise<void>;
31
+ getLastModified(files: string[]): Promise<{
32
+ [path: string]: number;
33
+ }>;
34
+ private resolveWorkspacePath;
35
+ writeFile(filepath: string, contents: string): Promise<void>;
36
+ showVirtualFile(_title: string, _contents: string): Promise<void>;
37
+ openFile(_path: string): Promise<void>;
38
+ openUrl(_url: string): Promise<void>;
39
+ runCommand(_command: string): Promise<void>;
40
+ saveFile(_filepath: string): Promise<void>;
41
+ showLines(_filepath: string, _startLine: number, _endLine: number): Promise<void>;
42
+ getDiff(_includeUnstaged: boolean): Promise<string[]>;
43
+ getClipboardContent(): Promise<{
44
+ text: string;
45
+ copiedAt: string;
46
+ }>;
47
+ isTelemetryEnabled(): Promise<boolean>;
48
+ getUniqueId(): Promise<string>;
49
+ getTerminalContents(): Promise<string>;
50
+ getDebugLocals(_threadIndex: number): Promise<string>;
51
+ getTopLevelCallStackSources(_threadIndex: number, _stackDepth: number): Promise<string[]>;
52
+ getAvailableThreads(): Promise<any[]>;
53
+ getWorkspaceConfigs(): Promise<any[]>;
54
+ getOpenFiles(): Promise<string[]>;
55
+ getCurrentFile(): Promise<{
56
+ isUntitled: boolean;
57
+ path: string;
58
+ contents: string;
59
+ } | undefined>;
60
+ getPinnedFiles(): Promise<string[]>;
61
+ getSearchResults(_query: string): Promise<string>;
62
+ subprocess(command: string, cwd?: string): Promise<[string, string]>;
63
+ getProblems(_filepath?: string): Promise<any[]>;
64
+ getTags(_artifactId: string): Promise<any[]>;
65
+ showToast(_type: ToastType, _message: string): Promise<void>;
66
+ gotoDefinition(_location: any): Promise<any[]>;
67
+ getGitHubAuthToken(_args: any): Promise<string | undefined>;
68
+ onDidChangeActiveTextEditor(_callback: (filepath: string) => void): void;
69
+ }
70
+ //# sourceMappingURL=ContinueIDE.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContinueIDE.d.ts","sourceRoot":"","sources":["../../src/continue/ContinueIDE.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,251 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ import { spawn } from 'child_process';
4
+ /**
5
+ * Minimal IDE implementation for Continue's indexing
6
+ * Only implements methods actually used by FullTextSearchCodebaseIndex and CodeSnippetsCodebaseIndex
7
+ */
8
+ export class ContinueIDE {
9
+ workspaceDir;
10
+ constructor(workspaceDir) {
11
+ this.workspaceDir = workspaceDir;
12
+ }
13
+ // === Core file system methods (REQUIRED) ===
14
+ async getWorkspaceDirs() {
15
+ return [this.workspaceDir];
16
+ }
17
+ async readFile(filepath) {
18
+ const fullPath = this.resolveWorkspacePath(filepath);
19
+ return await fs.readFile(fullPath, 'utf-8');
20
+ }
21
+ async fileExists(filepath) {
22
+ try {
23
+ const fullPath = this.resolveWorkspacePath(filepath);
24
+ await fs.access(fullPath);
25
+ return true;
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
31
+ async listDir(dir) {
32
+ const fullPath = this.resolveWorkspacePath(dir);
33
+ const entries = await fs.readdir(fullPath, { withFileTypes: true });
34
+ return entries.map(entry => {
35
+ const entryPath = path.join(dir, entry.name);
36
+ let type;
37
+ if (entry.isDirectory()) {
38
+ type = 2; // FileType.Directory
39
+ }
40
+ else if (entry.isSymbolicLink()) {
41
+ type = 64; // FileType.SymbolicLink
42
+ }
43
+ else {
44
+ type = 1; // FileType.File
45
+ }
46
+ return [entryPath, type];
47
+ });
48
+ }
49
+ async readRangeInFile(filepath, range) {
50
+ const content = await this.readFile(filepath);
51
+ const lines = content.split('\n');
52
+ const selectedLines = lines.slice(range.start.line, range.end.line + 1);
53
+ if (selectedLines.length === 0)
54
+ return '';
55
+ if (selectedLines.length === 1) {
56
+ return selectedLines[0].slice(range.start.character, range.end.character);
57
+ }
58
+ selectedLines[0] = selectedLines[0].slice(range.start.character);
59
+ selectedLines[selectedLines.length - 1] = selectedLines[selectedLines.length - 1].slice(0, range.end.character);
60
+ return selectedLines.join('\n');
61
+ }
62
+ // === Git methods (used by indexing) ===
63
+ async getBranch(dir) {
64
+ try {
65
+ const gitDir = await this.getGitRootPath(dir);
66
+ if (!gitDir)
67
+ return 'main';
68
+ const headPath = path.join(gitDir, '.git', 'HEAD');
69
+ const head = await fs.readFile(headPath, 'utf-8');
70
+ if (head.startsWith('ref: refs/heads/')) {
71
+ return head.slice('ref: refs/heads/'.length).trim();
72
+ }
73
+ return 'main';
74
+ }
75
+ catch {
76
+ return 'main';
77
+ }
78
+ }
79
+ async getGitRootPath(dir) {
80
+ let currentDir = this.resolveWorkspacePath(dir);
81
+ while (currentDir !== path.parse(currentDir).root) {
82
+ try {
83
+ await fs.access(path.join(currentDir, '.git'));
84
+ return currentDir;
85
+ }
86
+ catch {
87
+ currentDir = path.dirname(currentDir);
88
+ }
89
+ }
90
+ return undefined;
91
+ }
92
+ async getRepoName(dir) {
93
+ return path.basename(this.workspaceDir);
94
+ }
95
+ // === Metadata methods ===
96
+ async getIdeInfo() {
97
+ return {
98
+ ideType: 'vscode', // Required enum value
99
+ name: 'Context MCP Server',
100
+ version: '0.2.0',
101
+ remoteName: 'local',
102
+ extensionVersion: '0.2.0',
103
+ };
104
+ }
105
+ async getIdeSettings() {
106
+ return {
107
+ remoteConfigServerUrl: undefined,
108
+ remoteConfigSyncPeriod: 60,
109
+ userToken: '',
110
+ enableControlServerBeta: false,
111
+ pauseCodebaseIndexOnStart: false,
112
+ continueTestEnvironment: 'none',
113
+ };
114
+ }
115
+ async getFileStats(files) {
116
+ const result = {};
117
+ for (const file of files) {
118
+ try {
119
+ const fullPath = this.resolveWorkspacePath(file);
120
+ const stats = await fs.stat(fullPath);
121
+ result[file] = {
122
+ size: stats.size,
123
+ lastModified: stats.mtimeMs,
124
+ };
125
+ }
126
+ catch {
127
+ // Skip files that don't exist
128
+ }
129
+ }
130
+ return result;
131
+ }
132
+ async readSecrets() {
133
+ return {};
134
+ }
135
+ async writeSecrets(_secrets) { }
136
+ async getLastModified(files) {
137
+ const result = {};
138
+ for (const file of files) {
139
+ try {
140
+ const fullPath = this.resolveWorkspacePath(file);
141
+ const stats = await fs.stat(fullPath);
142
+ result[file] = stats.mtimeMs;
143
+ }
144
+ catch {
145
+ // Skip files that don't exist
146
+ }
147
+ }
148
+ return result;
149
+ }
150
+ // === Helper methods ===
151
+ resolveWorkspacePath(filepath) {
152
+ if (path.isAbsolute(filepath)) {
153
+ return filepath;
154
+ }
155
+ return path.join(this.workspaceDir, filepath);
156
+ }
157
+ // === Stub methods (not used by indexing, but required by interface) ===
158
+ async writeFile(filepath, contents) {
159
+ const fullPath = this.resolveWorkspacePath(filepath);
160
+ await fs.mkdir(path.dirname(fullPath), { recursive: true });
161
+ await fs.writeFile(fullPath, contents, 'utf-8');
162
+ }
163
+ async showVirtualFile(_title, _contents) { }
164
+ async openFile(_path) { }
165
+ async openUrl(_url) { }
166
+ async runCommand(_command) { }
167
+ async saveFile(_filepath) { }
168
+ async showLines(_filepath, _startLine, _endLine) { }
169
+ async getDiff(_includeUnstaged) {
170
+ return [];
171
+ }
172
+ async getClipboardContent() {
173
+ return { text: '', copiedAt: new Date().toISOString() };
174
+ }
175
+ async isTelemetryEnabled() {
176
+ return false;
177
+ }
178
+ async getUniqueId() {
179
+ return 'context-mcp-server';
180
+ }
181
+ async getTerminalContents() {
182
+ return '';
183
+ }
184
+ async getDebugLocals(_threadIndex) {
185
+ return '';
186
+ }
187
+ async getTopLevelCallStackSources(_threadIndex, _stackDepth) {
188
+ return [];
189
+ }
190
+ async getAvailableThreads() {
191
+ return [];
192
+ }
193
+ async getWorkspaceConfigs() {
194
+ return [];
195
+ }
196
+ async getOpenFiles() {
197
+ return [];
198
+ }
199
+ async getCurrentFile() {
200
+ return undefined;
201
+ }
202
+ async getPinnedFiles() {
203
+ return [];
204
+ }
205
+ async getSearchResults(_query) {
206
+ return '';
207
+ }
208
+ async subprocess(command, cwd) {
209
+ return new Promise((resolve, reject) => {
210
+ const workingDir = cwd || this.workspaceDir;
211
+ const proc = spawn(command, {
212
+ shell: true,
213
+ cwd: workingDir,
214
+ });
215
+ let stdout = '';
216
+ let stderr = '';
217
+ proc.stdout?.on('data', (data) => {
218
+ stdout += data.toString();
219
+ });
220
+ proc.stderr?.on('data', (data) => {
221
+ stderr += data.toString();
222
+ });
223
+ proc.on('close', (code) => {
224
+ if (code === 0) {
225
+ resolve([stdout, stderr]);
226
+ }
227
+ else {
228
+ reject(new Error(`Command failed with code ${code}: ${stderr}`));
229
+ }
230
+ });
231
+ proc.on('error', (err) => {
232
+ reject(err);
233
+ });
234
+ });
235
+ }
236
+ async getProblems(_filepath) {
237
+ return [];
238
+ }
239
+ async getTags(_artifactId) {
240
+ return [];
241
+ }
242
+ async showToast(_type, _message) { }
243
+ async gotoDefinition(_location) {
244
+ return [];
245
+ }
246
+ async getGitHubAuthToken(_args) {
247
+ return undefined;
248
+ }
249
+ onDidChangeActiveTextEditor(_callback) { }
250
+ }
251
+ //# sourceMappingURL=ContinueIDE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContinueIDE.js","sourceRoot":"","sources":["../../src/continue/ContinueIDE.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC;;;GAGG;AACH,MAAM,OAAO,WAAW;IACF;IAApB,YAAoB,YAAoB;QAApB,iBAAY,GAAZ,YAAY,CAAQ;IAAG,CAAC;IAE5C,8CAA8C;IAE9C,KAAK,CAAC,gBAAgB;QACpB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpE,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAc,CAAC;YAEnB,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,GAAG,CAAa,CAAC,CAAC,qBAAqB;YAC7C,CAAC;iBAAM,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;gBAClC,IAAI,GAAG,EAAc,CAAC,CAAC,wBAAwB;YACjD,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,CAAa,CAAC,CAAC,gBAAgB;YACxC,CAAC;YAED,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,KAA+F;QACrI,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAExE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE1C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5E,CAAC;QAED,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjE,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEhH,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,yCAAyC;IAEzC,KAAK,CAAC,SAAS,CAAC,GAAW;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM;gBAAE,OAAO,MAAM,CAAC;YAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAElD,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACtD,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,IAAI,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAEhD,OAAO,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC/C,OAAO,UAAU,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAW;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAED,2BAA2B;IAE3B,KAAK,CAAC,UAAU;QACd,OAAO;YACL,OAAO,EAAE,QAAQ,EAAE,sBAAsB;YACzC,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,OAAO;YACnB,gBAAgB,EAAE,OAAO;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO;YACL,qBAAqB,EAAE,SAAS;YAChC,sBAAsB,EAAE,EAAE;YAC1B,SAAS,EAAE,EAAE;YACb,uBAAuB,EAAE,KAAK;YAC9B,yBAAyB,EAAE,KAAK;YAChC,uBAAuB,EAAE,MAAa;SACvC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAe;QAChC,MAAM,MAAM,GAAwB,EAAE,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,GAAG;oBACb,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,YAAY,EAAE,KAAK,CAAC,OAAO;iBAC5B,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,8BAA8B;YAChC,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgC,IAAkB,CAAC;IAEtE,KAAK,CAAC,eAAe,CAAC,KAAe;QACnC,MAAM,MAAM,GAA+B,EAAE,CAAC;QAE9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,8BAA8B;YAChC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yBAAyB;IAEjB,oBAAoB,CAAC,QAAgB;QAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,yEAAyE;IAEzE,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,QAAgB;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,SAAiB,IAAkB,CAAC;IAC1E,KAAK,CAAC,QAAQ,CAAC,KAAa,IAAkB,CAAC;IAC/C,KAAK,CAAC,OAAO,CAAC,IAAY,IAAkB,CAAC;IAC7C,KAAK,CAAC,UAAU,CAAC,QAAgB,IAAkB,CAAC;IACpD,KAAK,CAAC,QAAQ,CAAC,SAAiB,IAAkB,CAAC;IACnD,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,UAAkB,EAAE,QAAgB,IAAkB,CAAC;IAE1F,KAAK,CAAC,OAAO,CAAC,gBAAyB;QACrC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,YAAoB;QACvC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,YAAoB,EAAE,WAAmB;QACzE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAc;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,GAAY;QAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC;YAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE;gBAC1B,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE,UAAU;aAChB,CAAC,CAAC;YAEH,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACvB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAkB;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAmB;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAgB,EAAE,QAAgB,IAAkB,CAAC;IAErE,KAAK,CAAC,cAAc,CAAC,SAAc;QACjC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,KAAU;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2BAA2B,CAAC,SAAqC,IAAS,CAAC;CAC5E"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Embeddings Provider Shim for Context-MCP
3
+ *
4
+ * This wraps Continue's TransformersJsEmbeddingsProvider with customized
5
+ * environment settings for context-mcp:
6
+ * - Enables remote model downloads from HuggingFace
7
+ * - Sets persistent cache directory for model files
8
+ *
9
+ * The model (~24MB all-MiniLM-L6-v2) is downloaded on first use and cached.
10
+ *
11
+ * @see docs/BUNDLING_SOLUTION.md for architecture details
12
+ */
13
+ import type { ILLM } from '@continuedev/core';
14
+ /**
15
+ * Custom embeddings provider that implements ILLM interface.
16
+ * Only the embed() method is required for vector indexing.
17
+ */
18
+ export declare class ContextMcpEmbeddingsProvider {
19
+ readonly model: string;
20
+ readonly embeddingId: string;
21
+ readonly maxEmbeddingChunkSize: number;
22
+ readonly maxEmbeddingBatchSize: number;
23
+ private initialized;
24
+ /**
25
+ * Generate embeddings for an array of text chunks.
26
+ * This is the core method required by LanceDbIndex.
27
+ */
28
+ embed(chunks: string[]): Promise<number[][]>;
29
+ get providerName(): string;
30
+ get uniqueId(): string;
31
+ get contextLength(): number;
32
+ get completionOptions(): Record<string, unknown>;
33
+ complete(): Promise<string>;
34
+ streamComplete(): AsyncGenerator<string>;
35
+ streamFim(): AsyncGenerator<string>;
36
+ streamChat(): AsyncGenerator<unknown>;
37
+ chat(): Promise<unknown>;
38
+ rerank(): Promise<number[]>;
39
+ countTokens(): number;
40
+ supportsImages(): boolean;
41
+ supportsCompletions(): boolean;
42
+ supportsPrefill(): boolean;
43
+ supportsFim(): boolean;
44
+ listModels(): Promise<string[]>;
45
+ renderPromptTemplate(): string;
46
+ }
47
+ /**
48
+ * Get or create the embeddings provider singleton.
49
+ * Thread-safe initialization with promise caching.
50
+ */
51
+ export declare function getEmbeddingsProvider(): Promise<ILLM>;
52
+ export default ContextMcpEmbeddingsProvider;
53
+ //# sourceMappingURL=embeddings-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings-provider.d.ts","sourceRoot":"","sources":["../../src/embeddings/embeddings-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAsD9C;;;GAGG;AACH,qBAAa,4BAA4B;IAEvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAsB;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAuC;IACnE,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAO;IAC7C,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAM;IAG5C,OAAO,CAAC,WAAW,CAAkB;IAErC;;;OAGG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAgClD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE/C;IAEK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1B,cAAc,IAAI,cAAc,CAAC,MAAM,CAAC;IAIxC,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC;IAInC,UAAU,IAAI,cAAc,CAAC,OAAO,CAAC;IAItC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxB,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIjC,WAAW,IAAI,MAAM;IAIrB,cAAc,IAAI,OAAO;IAIzB,mBAAmB,IAAI,OAAO;IAI9B,eAAe,IAAI,OAAO;IAI1B,WAAW,IAAI,OAAO;IAIhB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIrC,oBAAoB,IAAI,MAAM;CAG/B;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB3D;AAED,eAAe,4BAA4B,CAAC"}
@@ -0,0 +1,138 @@
1
+ import path from "node:path";
2
+ import os from "node:os";
3
+ import fs from "node:fs";
4
+ const CACHE_DIR = path.join(os.homedir(), ".cache", "context-mcp", "models");
5
+ let embeddingsProviderInstance = null;
6
+ let initializationPromise = null;
7
+ class EmbeddingsPipeline {
8
+ static task = "feature-extraction";
9
+ static model = "Xenova/all-MiniLM-L6-v2";
10
+ // HuggingFace model ID
11
+ static instance = null;
12
+ static async getInstance() {
13
+ if (EmbeddingsPipeline.instance !== null) {
14
+ return EmbeddingsPipeline.instance;
15
+ }
16
+ const { env, pipeline } = await import("@continuedev/core/dist/vendor/modules/@xenova/transformers/src/transformers.js");
17
+ env.allowRemoteModels = true;
18
+ env.allowLocalModels = true;
19
+ env.cacheDir = CACHE_DIR;
20
+ env.useFSCache = true;
21
+ if (!fs.existsSync(CACHE_DIR)) {
22
+ fs.mkdirSync(CACHE_DIR, { recursive: true });
23
+ }
24
+ console.error(`[embeddings] Initializing pipeline with model: ${EmbeddingsPipeline.model}`);
25
+ console.error(`[embeddings] Cache directory: ${CACHE_DIR}`);
26
+ EmbeddingsPipeline.instance = await pipeline(
27
+ EmbeddingsPipeline.task,
28
+ EmbeddingsPipeline.model
29
+ );
30
+ console.error("[embeddings] Pipeline initialized successfully");
31
+ return EmbeddingsPipeline.instance;
32
+ }
33
+ }
34
+ class ContextMcpEmbeddingsProvider {
35
+ // Required ILLM properties
36
+ model = "all-MiniLM-L6-v2";
37
+ embeddingId = "transformers.js::all-MiniLM-L6-v2";
38
+ maxEmbeddingChunkSize = 512;
39
+ maxEmbeddingBatchSize = 32;
40
+ // Internal state
41
+ initialized = false;
42
+ /**
43
+ * Generate embeddings for an array of text chunks.
44
+ * This is the core method required by LanceDbIndex.
45
+ */
46
+ async embed(chunks) {
47
+ if (chunks.length === 0) {
48
+ return [];
49
+ }
50
+ const extractor = await EmbeddingsPipeline.getInstance();
51
+ if (!extractor) {
52
+ throw new Error("Embeddings pipeline failed to initialize");
53
+ }
54
+ const outputs = [];
55
+ for (const chunk of chunks) {
56
+ const output = await extractor([chunk], {
57
+ pooling: "mean",
58
+ normalize: true
59
+ });
60
+ outputs.push(...output.tolist());
61
+ await new Promise((resolve) => setTimeout(resolve, 5));
62
+ }
63
+ return outputs;
64
+ }
65
+ // Stub methods required by ILLM interface but not used for embeddings
66
+ get providerName() {
67
+ return "transformers.js";
68
+ }
69
+ get uniqueId() {
70
+ return this.embeddingId;
71
+ }
72
+ get contextLength() {
73
+ return 512;
74
+ }
75
+ get completionOptions() {
76
+ return {};
77
+ }
78
+ async complete() {
79
+ throw new Error("ContextMcpEmbeddingsProvider does not support text completion");
80
+ }
81
+ async *streamComplete() {
82
+ throw new Error("ContextMcpEmbeddingsProvider does not support text completion");
83
+ }
84
+ async *streamFim() {
85
+ throw new Error("ContextMcpEmbeddingsProvider does not support FIM");
86
+ }
87
+ async *streamChat() {
88
+ throw new Error("ContextMcpEmbeddingsProvider does not support chat");
89
+ }
90
+ async chat() {
91
+ throw new Error("ContextMcpEmbeddingsProvider does not support chat");
92
+ }
93
+ async rerank() {
94
+ throw new Error("ContextMcpEmbeddingsProvider does not support reranking");
95
+ }
96
+ countTokens() {
97
+ return 0;
98
+ }
99
+ supportsImages() {
100
+ return false;
101
+ }
102
+ supportsCompletions() {
103
+ return false;
104
+ }
105
+ supportsPrefill() {
106
+ return false;
107
+ }
108
+ supportsFim() {
109
+ return false;
110
+ }
111
+ async listModels() {
112
+ return [this.model];
113
+ }
114
+ renderPromptTemplate() {
115
+ return "";
116
+ }
117
+ }
118
+ async function getEmbeddingsProvider() {
119
+ if (embeddingsProviderInstance) {
120
+ return embeddingsProviderInstance;
121
+ }
122
+ if (initializationPromise) {
123
+ return initializationPromise;
124
+ }
125
+ initializationPromise = (async () => {
126
+ const provider = new ContextMcpEmbeddingsProvider();
127
+ await provider.embed(["warmup"]);
128
+ embeddingsProviderInstance = provider;
129
+ return embeddingsProviderInstance;
130
+ })();
131
+ return initializationPromise;
132
+ }
133
+ var embeddings_provider_default = ContextMcpEmbeddingsProvider;
134
+ export {
135
+ ContextMcpEmbeddingsProvider,
136
+ embeddings_provider_default as default,
137
+ getEmbeddingsProvider
138
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings-provider.js","sourceRoot":"","sources":["../../src/embeddings/embeddings-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Embeddings module for Context-MCP
3
+ *
4
+ * Provides semantic search capabilities using:
5
+ * - TransformersJS embeddings (all-MiniLM-L6-v2)
6
+ * - LanceDB vector storage and ANN search
7
+ */
8
+ export { ContextMcpEmbeddingsProvider, getEmbeddingsProvider } from './embeddings-provider.js';
9
+ export { getLanceDbIndex, buildVectorIndex, vectorSearch, isVectorSearchAvailable, } from './vector-index.js';
10
+ //# sourceMappingURL=index.d.ts.map