codevault 1.4.1 → 1.6.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 (211) hide show
  1. package/.env.example +79 -44
  2. package/README.md +115 -343
  3. package/package.json +4 -4
  4. package/dist/chunking/file-grouper.d.ts +0 -39
  5. package/dist/chunking/file-grouper.d.ts.map +0 -1
  6. package/dist/chunking/file-grouper.js +0 -181
  7. package/dist/chunking/file-grouper.js.map +0 -1
  8. package/dist/chunking/semantic-chunker.d.ts +0 -37
  9. package/dist/chunking/semantic-chunker.d.ts.map +0 -1
  10. package/dist/chunking/semantic-chunker.js +0 -172
  11. package/dist/chunking/semantic-chunker.js.map +0 -1
  12. package/dist/chunking/token-counter.d.ts +0 -28
  13. package/dist/chunking/token-counter.d.ts.map +0 -1
  14. package/dist/chunking/token-counter.js +0 -207
  15. package/dist/chunking/token-counter.js.map +0 -1
  16. package/dist/cli/commands/ask-cmd.d.ts +0 -3
  17. package/dist/cli/commands/ask-cmd.d.ts.map +0 -1
  18. package/dist/cli/commands/ask-cmd.js +0 -130
  19. package/dist/cli/commands/ask-cmd.js.map +0 -1
  20. package/dist/cli/commands/config-cmd.d.ts +0 -3
  21. package/dist/cli/commands/config-cmd.d.ts.map +0 -1
  22. package/dist/cli/commands/config-cmd.js +0 -245
  23. package/dist/cli/commands/config-cmd.js.map +0 -1
  24. package/dist/cli/commands/context.d.ts +0 -3
  25. package/dist/cli/commands/context.d.ts.map +0 -1
  26. package/dist/cli/commands/context.js +0 -98
  27. package/dist/cli/commands/context.js.map +0 -1
  28. package/dist/cli/commands/interactive-config.d.ts +0 -2
  29. package/dist/cli/commands/interactive-config.d.ts.map +0 -1
  30. package/dist/cli/commands/interactive-config.js +0 -304
  31. package/dist/cli/commands/interactive-config.js.map +0 -1
  32. package/dist/cli.d.ts +0 -3
  33. package/dist/cli.d.ts.map +0 -1
  34. package/dist/cli.js +0 -398
  35. package/dist/cli.js.map +0 -1
  36. package/dist/codemap/io.d.ts +0 -5
  37. package/dist/codemap/io.d.ts.map +0 -1
  38. package/dist/codemap/io.js +0 -30
  39. package/dist/codemap/io.js.map +0 -1
  40. package/dist/config/apply-env.d.ts +0 -15
  41. package/dist/config/apply-env.d.ts.map +0 -1
  42. package/dist/config/apply-env.js +0 -107
  43. package/dist/config/apply-env.js.map +0 -1
  44. package/dist/config/loader.d.ts +0 -57
  45. package/dist/config/loader.d.ts.map +0 -1
  46. package/dist/config/loader.js +0 -304
  47. package/dist/config/loader.js.map +0 -1
  48. package/dist/config/types.d.ts +0 -48
  49. package/dist/config/types.d.ts.map +0 -1
  50. package/dist/config/types.js +0 -2
  51. package/dist/config/types.js.map +0 -1
  52. package/dist/context/packs.d.ts +0 -33
  53. package/dist/context/packs.d.ts.map +0 -1
  54. package/dist/context/packs.js +0 -180
  55. package/dist/context/packs.js.map +0 -1
  56. package/dist/core/batch-indexer.d.ts +0 -44
  57. package/dist/core/batch-indexer.d.ts.map +0 -1
  58. package/dist/core/batch-indexer.js +0 -161
  59. package/dist/core/batch-indexer.js.map +0 -1
  60. package/dist/core/indexer.d.ts +0 -3
  61. package/dist/core/indexer.d.ts.map +0 -1
  62. package/dist/core/indexer.js +0 -624
  63. package/dist/core/indexer.js.map +0 -1
  64. package/dist/core/metadata.d.ts +0 -19
  65. package/dist/core/metadata.d.ts.map +0 -1
  66. package/dist/core/metadata.js +0 -161
  67. package/dist/core/metadata.js.map +0 -1
  68. package/dist/core/search.d.ts +0 -7
  69. package/dist/core/search.d.ts.map +0 -1
  70. package/dist/core/search.js +0 -542
  71. package/dist/core/search.js.map +0 -1
  72. package/dist/core/symbol-extractor.d.ts +0 -3
  73. package/dist/core/symbol-extractor.d.ts.map +0 -1
  74. package/dist/core/symbol-extractor.js +0 -78
  75. package/dist/core/symbol-extractor.js.map +0 -1
  76. package/dist/core/types.d.ts +0 -104
  77. package/dist/core/types.d.ts.map +0 -1
  78. package/dist/core/types.js +0 -2
  79. package/dist/core/types.js.map +0 -1
  80. package/dist/database/db.d.ts +0 -63
  81. package/dist/database/db.d.ts.map +0 -1
  82. package/dist/database/db.js +0 -205
  83. package/dist/database/db.js.map +0 -1
  84. package/dist/indexer/merkle.d.ts +0 -13
  85. package/dist/indexer/merkle.d.ts.map +0 -1
  86. package/dist/indexer/merkle.js +0 -86
  87. package/dist/indexer/merkle.js.map +0 -1
  88. package/dist/indexer/update.d.ts +0 -19
  89. package/dist/indexer/update.d.ts.map +0 -1
  90. package/dist/indexer/update.js +0 -40
  91. package/dist/indexer/update.js.map +0 -1
  92. package/dist/indexer/watch.d.ts +0 -21
  93. package/dist/indexer/watch.d.ts.map +0 -1
  94. package/dist/indexer/watch.js +0 -222
  95. package/dist/indexer/watch.js.map +0 -1
  96. package/dist/languages/rules.d.ts +0 -11
  97. package/dist/languages/rules.d.ts.map +0 -1
  98. package/dist/languages/rules.js +0 -371
  99. package/dist/languages/rules.js.map +0 -1
  100. package/dist/languages/tree-sitter-loader.d.ts +0 -27
  101. package/dist/languages/tree-sitter-loader.d.ts.map +0 -1
  102. package/dist/languages/tree-sitter-loader.js +0 -76
  103. package/dist/languages/tree-sitter-loader.js.map +0 -1
  104. package/dist/mcp/tools/ask-codebase.d.ts +0 -85
  105. package/dist/mcp/tools/ask-codebase.d.ts.map +0 -1
  106. package/dist/mcp/tools/ask-codebase.js +0 -125
  107. package/dist/mcp/tools/ask-codebase.js.map +0 -1
  108. package/dist/mcp/tools/use-context-pack.d.ts +0 -57
  109. package/dist/mcp/tools/use-context-pack.d.ts.map +0 -1
  110. package/dist/mcp/tools/use-context-pack.js +0 -91
  111. package/dist/mcp/tools/use-context-pack.js.map +0 -1
  112. package/dist/mcp-server.d.ts +0 -3
  113. package/dist/mcp-server.d.ts.map +0 -1
  114. package/dist/mcp-server.js +0 -518
  115. package/dist/mcp-server.js.map +0 -1
  116. package/dist/providers/base.d.ts +0 -39
  117. package/dist/providers/base.d.ts.map +0 -1
  118. package/dist/providers/base.js +0 -199
  119. package/dist/providers/base.js.map +0 -1
  120. package/dist/providers/chat-llm.d.ts +0 -41
  121. package/dist/providers/chat-llm.d.ts.map +0 -1
  122. package/dist/providers/chat-llm.js +0 -155
  123. package/dist/providers/chat-llm.js.map +0 -1
  124. package/dist/providers/index.d.ts +0 -6
  125. package/dist/providers/index.d.ts.map +0 -1
  126. package/dist/providers/index.js +0 -23
  127. package/dist/providers/index.js.map +0 -1
  128. package/dist/providers/ollama.d.ts +0 -13
  129. package/dist/providers/ollama.d.ts.map +0 -1
  130. package/dist/providers/ollama.js +0 -50
  131. package/dist/providers/ollama.js.map +0 -1
  132. package/dist/providers/openai.d.ts +0 -14
  133. package/dist/providers/openai.d.ts.map +0 -1
  134. package/dist/providers/openai.js +0 -122
  135. package/dist/providers/openai.js.map +0 -1
  136. package/dist/providers/token-counter.d.ts +0 -2
  137. package/dist/providers/token-counter.d.ts.map +0 -1
  138. package/dist/providers/token-counter.js +0 -18
  139. package/dist/providers/token-counter.js.map +0 -1
  140. package/dist/ranking/api-reranker.d.ts +0 -18
  141. package/dist/ranking/api-reranker.d.ts.map +0 -1
  142. package/dist/ranking/api-reranker.js +0 -134
  143. package/dist/ranking/api-reranker.js.map +0 -1
  144. package/dist/ranking/symbol-boost.d.ts +0 -15
  145. package/dist/ranking/symbol-boost.d.ts.map +0 -1
  146. package/dist/ranking/symbol-boost.js +0 -154
  147. package/dist/ranking/symbol-boost.js.map +0 -1
  148. package/dist/search/bm25.d.ts +0 -17
  149. package/dist/search/bm25.d.ts.map +0 -1
  150. package/dist/search/bm25.js +0 -56
  151. package/dist/search/bm25.js.map +0 -1
  152. package/dist/search/hybrid.d.ts +0 -21
  153. package/dist/search/hybrid.d.ts.map +0 -1
  154. package/dist/search/hybrid.js +0 -50
  155. package/dist/search/hybrid.js.map +0 -1
  156. package/dist/search/scope.d.ts +0 -5
  157. package/dist/search/scope.d.ts.map +0 -1
  158. package/dist/search/scope.js +0 -107
  159. package/dist/search/scope.js.map +0 -1
  160. package/dist/storage/encrypted-chunks.d.ts +0 -40
  161. package/dist/storage/encrypted-chunks.d.ts.map +0 -1
  162. package/dist/storage/encrypted-chunks.js +0 -237
  163. package/dist/storage/encrypted-chunks.js.map +0 -1
  164. package/dist/symbols/extract.d.ts +0 -15
  165. package/dist/symbols/extract.d.ts.map +0 -1
  166. package/dist/symbols/extract.js +0 -187
  167. package/dist/symbols/extract.js.map +0 -1
  168. package/dist/symbols/graph.d.ts +0 -3
  169. package/dist/symbols/graph.d.ts.map +0 -1
  170. package/dist/symbols/graph.js +0 -89
  171. package/dist/symbols/graph.js.map +0 -1
  172. package/dist/synthesis/markdown-formatter.d.ts +0 -13
  173. package/dist/synthesis/markdown-formatter.d.ts.map +0 -1
  174. package/dist/synthesis/markdown-formatter.js +0 -104
  175. package/dist/synthesis/markdown-formatter.js.map +0 -1
  176. package/dist/synthesis/prompt-builder.d.ts +0 -21
  177. package/dist/synthesis/prompt-builder.d.ts.map +0 -1
  178. package/dist/synthesis/prompt-builder.js +0 -129
  179. package/dist/synthesis/prompt-builder.js.map +0 -1
  180. package/dist/synthesis/synthesizer.d.ts +0 -30
  181. package/dist/synthesis/synthesizer.d.ts.map +0 -1
  182. package/dist/synthesis/synthesizer.js +0 -210
  183. package/dist/synthesis/synthesizer.js.map +0 -1
  184. package/dist/types/ast.d.ts +0 -3
  185. package/dist/types/ast.d.ts.map +0 -1
  186. package/dist/types/ast.js +0 -2
  187. package/dist/types/ast.js.map +0 -1
  188. package/dist/types/codemap.d.ts +0 -58
  189. package/dist/types/codemap.d.ts.map +0 -1
  190. package/dist/types/codemap.js +0 -224
  191. package/dist/types/codemap.js.map +0 -1
  192. package/dist/types/context-pack.d.ts +0 -47
  193. package/dist/types/context-pack.d.ts.map +0 -1
  194. package/dist/types/context-pack.js +0 -44
  195. package/dist/types/context-pack.js.map +0 -1
  196. package/dist/types/search.d.ts +0 -15
  197. package/dist/types/search.d.ts.map +0 -1
  198. package/dist/types/search.js +0 -11
  199. package/dist/types/search.js.map +0 -1
  200. package/dist/utils/cli-ui.d.ts +0 -44
  201. package/dist/utils/cli-ui.d.ts.map +0 -1
  202. package/dist/utils/cli-ui.js +0 -139
  203. package/dist/utils/cli-ui.js.map +0 -1
  204. package/dist/utils/indexer-with-progress.d.ts +0 -10
  205. package/dist/utils/indexer-with-progress.d.ts.map +0 -1
  206. package/dist/utils/indexer-with-progress.js +0 -58
  207. package/dist/utils/indexer-with-progress.js.map +0 -1
  208. package/dist/utils/rate-limiter.d.ts +0 -34
  209. package/dist/utils/rate-limiter.d.ts.map +0 -1
  210. package/dist/utils/rate-limiter.js +0 -179
  211. package/dist/utils/rate-limiter.js.map +0 -1
@@ -1,518 +0,0 @@
1
- #!/usr/bin/env node
2
- import 'dotenv/config';
3
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
4
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
5
- import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
6
- import fs from 'fs';
7
- import path from 'path';
8
- import { fileURLToPath } from 'url';
9
- import { searchCode, getChunk, getOverview } from './core/search.js';
10
- import { indexProject } from './core/indexer.js';
11
- import { resolveScopeWithPack } from './context/packs.js';
12
- import { synthesizeAnswer } from './synthesis/synthesizer.js';
13
- import { formatSynthesisResult, formatErrorMessage, formatNoResultsMessage } from './synthesis/markdown-formatter.js';
14
- const __filename = fileURLToPath(import.meta.url);
15
- const __dirname = path.dirname(__filename);
16
- const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8'));
17
- let currentWorkingPath = '.';
18
- let sessionContextPack = null;
19
- // FIX: Add periodic cache clearing to prevent memory leaks in long-running MCP server
20
- const CACHE_CLEAR_INTERVAL_MS = Number.parseInt(process.env.CODEVAULT_CACHE_CLEAR_INTERVAL || '3600000', 10); // Default: 1 hour
21
- let cacheCleanupTimer = null;
22
- function scheduleCacheCleanup() {
23
- if (cacheCleanupTimer) {
24
- clearInterval(cacheCleanupTimer);
25
- }
26
- cacheCleanupTimer = setInterval(() => {
27
- try {
28
- // Clear search caches
29
- const { clearSearchCaches } = require('./core/search.js');
30
- if (typeof clearSearchCaches === 'function') {
31
- clearSearchCaches();
32
- }
33
- // Clear token counter cache
34
- const { clearTokenCache } = require('./chunking/token-counter.js');
35
- if (typeof clearTokenCache === 'function') {
36
- clearTokenCache();
37
- }
38
- console.error(JSON.stringify({
39
- event: 'cache_cleared',
40
- timestamp: new Date().toISOString()
41
- }));
42
- }
43
- catch (error) {
44
- // Ignore errors during cleanup
45
- }
46
- }, CACHE_CLEAR_INTERVAL_MS);
47
- }
48
- const server = new Server({
49
- name: 'codevault-code-memory',
50
- version: packageJson.version,
51
- }, {
52
- capabilities: {
53
- tools: {},
54
- },
55
- });
56
- // List all available tools
57
- server.setRequestHandler(ListToolsRequestSchema, async () => {
58
- const tools = [
59
- {
60
- name: 'search_code',
61
- description: 'Search code semantically using embeddings',
62
- inputSchema: {
63
- type: 'object',
64
- properties: {
65
- query: { type: 'string', description: 'Search query' },
66
- limit: { type: 'number', description: 'Max results (default: 50, max: 200)', default: 50 },
67
- provider: { type: 'string', description: 'Embedding provider (auto|openai|ollama)', default: 'auto' },
68
- path: { type: 'string', description: 'Project root directory', default: '.' },
69
- path_glob: { type: ['string', 'array'], description: 'File patterns to filter' },
70
- tags: { type: ['string', 'array'], description: 'Tags to filter' },
71
- lang: { type: ['string', 'array'], description: 'Languages to filter' },
72
- reranker: { type: 'string', enum: ['off', 'api'], default: 'off' },
73
- hybrid: { type: 'string', enum: ['on', 'off'], default: 'on' },
74
- bm25: { type: 'string', enum: ['on', 'off'], default: 'on' },
75
- symbol_boost: { type: 'string', enum: ['on', 'off'], default: 'on' },
76
- },
77
- required: ['query'],
78
- },
79
- },
80
- {
81
- name: 'search_code_with_chunks',
82
- description: 'Search code and return full code chunks',
83
- inputSchema: {
84
- type: 'object',
85
- properties: {
86
- query: { type: 'string', description: 'Search query' },
87
- limit: { type: 'number', description: 'Max results', default: 10 },
88
- provider: { type: 'string', default: 'auto' },
89
- path: { type: 'string', default: '.' },
90
- path_glob: { type: ['string', 'array'] },
91
- tags: { type: ['string', 'array'] },
92
- lang: { type: ['string', 'array'] },
93
- reranker: { type: 'string', enum: ['off', 'api'], default: 'off' },
94
- hybrid: { type: 'string', enum: ['on', 'off'], default: 'on' },
95
- bm25: { type: 'string', enum: ['on', 'off'], default: 'on' },
96
- symbol_boost: { type: 'string', enum: ['on', 'off'], default: 'on' },
97
- },
98
- required: ['query'],
99
- },
100
- },
101
- {
102
- name: 'get_code_chunk',
103
- description: 'Get code chunk by SHA',
104
- inputSchema: {
105
- type: 'object',
106
- properties: {
107
- sha: { type: 'string', description: 'SHA of code chunk' },
108
- path: { type: 'string', description: 'Project root directory', default: '.' },
109
- },
110
- required: ['sha'],
111
- },
112
- },
113
- {
114
- name: 'index_project',
115
- description: 'Index a project for semantic search',
116
- inputSchema: {
117
- type: 'object',
118
- properties: {
119
- path: { type: 'string', description: 'Project root directory', default: '.' },
120
- provider: { type: 'string', description: 'Embedding provider', default: 'auto' },
121
- },
122
- },
123
- },
124
- {
125
- name: 'update_project',
126
- description: 'Update project index',
127
- inputSchema: {
128
- type: 'object',
129
- properties: {
130
- path: { type: 'string', description: 'Project root directory', default: '.' },
131
- provider: { type: 'string', default: 'auto' },
132
- },
133
- },
134
- },
135
- {
136
- name: 'get_project_stats',
137
- description: 'Get project statistics',
138
- inputSchema: {
139
- type: 'object',
140
- properties: {
141
- path: { type: 'string', description: 'Project root directory', default: '.' },
142
- },
143
- },
144
- },
145
- {
146
- name: 'use_context_pack',
147
- description: 'Activate a context pack for scoped search',
148
- inputSchema: {
149
- type: 'object',
150
- properties: {
151
- name: { type: 'string', description: 'Context pack name or "clear"' },
152
- path: { type: 'string', description: 'Project root directory', default: '.' },
153
- },
154
- required: ['name'],
155
- },
156
- },
157
- {
158
- name: 'ask_codebase',
159
- description: 'Ask a question and get LLM-synthesized answer with code citations',
160
- inputSchema: {
161
- type: 'object',
162
- properties: {
163
- question: { type: 'string', description: 'Natural language question about the codebase' },
164
- provider: { type: 'string', description: 'Embedding provider (auto|openai|ollama)', default: 'auto' },
165
- chat_provider: { type: 'string', description: 'Chat LLM provider (auto|openai|ollama)', default: 'auto' },
166
- path: { type: 'string', description: 'Project root directory', default: '.' },
167
- max_chunks: { type: 'number', description: 'Max code chunks to analyze', default: 10 },
168
- path_glob: { type: ['string', 'array'], description: 'File patterns to filter' },
169
- tags: { type: ['string', 'array'], description: 'Tags to filter' },
170
- lang: { type: ['string', 'array'], description: 'Languages to filter' },
171
- reranker: { type: 'string', enum: ['on', 'off'], default: 'on', description: 'Use API reranking' },
172
- multi_query: { type: 'boolean', default: false, description: 'Break complex questions into sub-queries' },
173
- temperature: { type: 'number', minimum: 0, maximum: 2, default: 0.7, description: 'LLM temperature' },
174
- },
175
- required: ['question'],
176
- },
177
- },
178
- ];
179
- return { tools };
180
- });
181
- // Handle tool calls
182
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
183
- const { name, arguments: args } = request.params;
184
- const typedArgs = args; // MCP SDK doesn't provide strict typing for arguments
185
- try {
186
- switch (name) {
187
- case 'search_code': {
188
- // FIX: Standardize path handling - support project/directory aliases like CLI
189
- const cleanPath = (typedArgs.path || typedArgs.project || typedArgs.directory || '.')?.trim?.() || '.';
190
- const { scope: scopeFilters } = resolveScopeWithPack({
191
- path_glob: typedArgs.path_glob,
192
- tags: typedArgs.tags,
193
- lang: typedArgs.lang,
194
- reranker: typedArgs.reranker,
195
- hybrid: typedArgs.hybrid,
196
- bm25: typedArgs.bm25,
197
- symbol_boost: typedArgs.symbol_boost,
198
- }, { basePath: cleanPath, sessionPack: sessionContextPack });
199
- const results = await searchCode(typedArgs.query, typedArgs.limit || 50, typedArgs.provider || 'auto', cleanPath, scopeFilters);
200
- if (!results.success) {
201
- return {
202
- content: [
203
- {
204
- type: 'text',
205
- text: results.error === 'database_not_found'
206
- ? `📋 Project not indexed!\n\n🔍 Database not found: ${cleanPath}/.codevault/codevault.db\n\n💡 Use index_project tool`
207
- : `No results: ${results.message}\n${results.suggestion || ''}`,
208
- },
209
- ],
210
- };
211
- }
212
- const resultText = results.results
213
- .map((result, index) => `${index + 1}. ${result.path}\n Symbol: ${result.meta.symbol} (${result.lang})\n Similarity: ${result.meta.score}\n SHA: ${result.sha}`)
214
- .join('\n\n');
215
- return {
216
- content: [
217
- {
218
- type: 'text',
219
- text: `Found ${results.results.length} results for: "${typedArgs.query}"\nProvider: ${results.provider}\n\n${resultText}`,
220
- },
221
- ],
222
- };
223
- }
224
- case 'search_code_with_chunks': {
225
- // FIX: Standardize path handling - support project/directory aliases like CLI
226
- const cleanPath = (typedArgs.path || typedArgs.project || typedArgs.directory || '.')?.trim?.() || '.';
227
- const { scope: scopeFilters } = resolveScopeWithPack({
228
- path_glob: typedArgs.path_glob,
229
- tags: typedArgs.tags,
230
- lang: typedArgs.lang,
231
- reranker: typedArgs.reranker,
232
- hybrid: typedArgs.hybrid,
233
- bm25: typedArgs.bm25,
234
- symbol_boost: typedArgs.symbol_boost,
235
- }, { basePath: cleanPath, sessionPack: sessionContextPack });
236
- const searchResults = await searchCode(typedArgs.query, typedArgs.limit || 10, typedArgs.provider || 'auto', cleanPath, scopeFilters);
237
- if (!searchResults.success) {
238
- return {
239
- content: [{ type: 'text', text: searchResults.message || 'Search failed' }],
240
- };
241
- }
242
- const resultsWithCode = [];
243
- const MAX_CHUNK_SIZE = 100000;
244
- for (const result of searchResults.results) {
245
- const chunkResult = await getChunk(result.sha, cleanPath);
246
- let code = '';
247
- let truncated = false;
248
- if (chunkResult.success && chunkResult.code) {
249
- code = chunkResult.code;
250
- if (code.length > MAX_CHUNK_SIZE) {
251
- code = code.substring(0, MAX_CHUNK_SIZE);
252
- truncated = true;
253
- }
254
- }
255
- else {
256
- code = `[Error retrieving code: ${chunkResult.error}]`;
257
- }
258
- resultsWithCode.push({ ...result, code, truncated });
259
- }
260
- const resultText = resultsWithCode
261
- .map((result, index) => `${index + 1}. ${result.path}\n Symbol: ${result.meta.symbol} (${result.lang})\n Similarity: ${result.meta.score}\n SHA: ${result.sha}${result.truncated ? '\n ⚠️ Code truncated' : ''}\n\n${'─'.repeat(80)}\n${result.code}\n${'─'.repeat(80)}`)
262
- .join('\n\n');
263
- return {
264
- content: [
265
- { type: 'text', text: `Found ${resultsWithCode.length} results with code\n\n${resultText}` },
266
- ],
267
- };
268
- }
269
- case 'get_code_chunk': {
270
- // FIX: Standardize path handling - support project/directory aliases like CLI
271
- const cleanPath = (typedArgs.path || typedArgs.project || typedArgs.directory || '.')?.trim?.() || '.';
272
- const result = await getChunk(typedArgs.sha, cleanPath);
273
- if (!result.success) {
274
- return {
275
- content: [{ type: 'text', text: `Error: ${result.error}` }],
276
- isError: true,
277
- };
278
- }
279
- const MAX_CHUNK_SIZE = 100000;
280
- const codeText = result.code || '';
281
- if (codeText.length > MAX_CHUNK_SIZE) {
282
- return {
283
- content: [
284
- {
285
- type: 'text',
286
- text: `⚠️ CODE CHUNK TOO LARGE - TRUNCATED\n\nSHA: ${typedArgs.sha}\nFull size: ${codeText.length} characters\n\n${codeText.substring(0, MAX_CHUNK_SIZE)}\n\n[TRUNCATED]`,
287
- },
288
- ],
289
- };
290
- }
291
- return {
292
- content: [{ type: 'text', text: codeText }],
293
- };
294
- }
295
- case 'index_project': {
296
- // FIX: Standardize path handling - support project/directory aliases like CLI
297
- const cleanPath = (typedArgs.path || typedArgs.project || typedArgs.directory || '.')?.trim?.() || '.';
298
- if (!fs.existsSync(cleanPath)) {
299
- throw new Error(`Directory ${cleanPath} does not exist`);
300
- }
301
- const result = await indexProject({ repoPath: cleanPath, provider: typedArgs.provider || 'auto' });
302
- if (!result.success) {
303
- return {
304
- content: [
305
- { type: 'text', text: `Indexing failed: ${result.errors[0]?.error || 'Unknown error'}` },
306
- ],
307
- isError: true,
308
- };
309
- }
310
- return {
311
- content: [
312
- {
313
- type: 'text',
314
- text: `✅ Project indexed successfully!\n\n📊 Statistics:\n- Processed chunks: ${result.processedChunks}\n- Total chunks: ${result.totalChunks}\n- Provider: ${result.provider}\n\n🔍 Ready to search!\n- Quick search: search_code with path="${cleanPath}"\n- With code: search_code_with_chunks with path="${cleanPath}"`,
315
- },
316
- ],
317
- };
318
- }
319
- case 'update_project': {
320
- // FIX: Standardize path handling - support project/directory aliases like CLI
321
- const cleanPath = (typedArgs.path || typedArgs.project || typedArgs.directory || '.')?.trim?.() || '.';
322
- const result = await indexProject({ repoPath: cleanPath, provider: typedArgs.provider || 'auto' });
323
- if (!result.success) {
324
- return {
325
- content: [
326
- { type: 'text', text: `Update failed: ${result.errors[0]?.error || 'Unknown error'}` },
327
- ],
328
- isError: true,
329
- };
330
- }
331
- return {
332
- content: [
333
- {
334
- type: 'text',
335
- text: `🔄 Project updated!\n📊 Processed: ${result.processedChunks} chunks\n📁 Total: ${result.totalChunks} chunks`,
336
- },
337
- ],
338
- };
339
- }
340
- case 'get_project_stats': {
341
- // FIX: Standardize path handling - support project/directory aliases like CLI
342
- const cleanPath = (typedArgs.path || typedArgs.project || typedArgs.directory || '.')?.trim?.() || '.';
343
- const overviewResult = await getOverview(50, cleanPath);
344
- if (!overviewResult.success) {
345
- return {
346
- content: [
347
- { type: 'text', text: `Error: ${overviewResult.message || 'Failed to get stats'}` },
348
- ],
349
- isError: true,
350
- };
351
- }
352
- if (overviewResult.results.length === 0) {
353
- return {
354
- content: [{ type: 'text', text: '📋 Project not indexed or empty' }],
355
- };
356
- }
357
- const overview = overviewResult.results
358
- .map((result) => `- ${result.path} :: ${result.meta.symbol} (${result.lang})`)
359
- .join('\n');
360
- return {
361
- content: [
362
- {
363
- type: 'text',
364
- text: `📊 Project overview (${overviewResult.results.length} main functions):\n\n${overview}`,
365
- },
366
- ],
367
- };
368
- }
369
- case 'use_context_pack': {
370
- // FIX: Standardize path handling - support project/directory aliases like CLI
371
- const cleanPath = (typedArgs.path || typedArgs.project || typedArgs.directory || '.')?.trim?.() || '.';
372
- const name = typedArgs.name;
373
- if (name === 'default' || name === 'none' || name === 'clear') {
374
- sessionContextPack = null;
375
- return {
376
- content: [{ type: 'text', text: 'Cleared active context pack for this session' }],
377
- };
378
- }
379
- try {
380
- const { loadContextPack } = await import('./context/packs.js');
381
- const pack = loadContextPack(name, cleanPath);
382
- sessionContextPack = { ...pack, basePath: cleanPath };
383
- return {
384
- content: [
385
- {
386
- type: 'text',
387
- text: `Context pack "${pack.key}" activated for session\n\nScope: ${JSON.stringify(pack.scope, null, 2)}`,
388
- },
389
- ],
390
- };
391
- }
392
- catch (error) {
393
- return {
394
- content: [{ type: 'text', text: `Error: ${error.message}` }],
395
- isError: true,
396
- };
397
- }
398
- }
399
- case 'ask_codebase': {
400
- const cleanPath = (typedArgs.path || typedArgs.project || typedArgs.directory || '.')?.trim?.() || '.';
401
- // Use resolveScopeWithPack like other search tools for consistency
402
- const { scope: scopeFilters } = resolveScopeWithPack({
403
- path_glob: typedArgs.path_glob,
404
- tags: typedArgs.tags,
405
- lang: typedArgs.lang,
406
- reranker: typedArgs.reranker,
407
- }, { basePath: cleanPath, sessionPack: sessionContextPack });
408
- try {
409
- const result = await synthesizeAnswer(typedArgs.question, {
410
- provider: typedArgs.provider || 'auto',
411
- chatProvider: typedArgs.chat_provider || 'auto',
412
- workingPath: cleanPath,
413
- scope: scopeFilters,
414
- maxChunks: typedArgs.max_chunks || 10,
415
- useReranking: typedArgs.reranker !== 'off',
416
- useMultiQuery: typedArgs.multi_query || false,
417
- temperature: typedArgs.temperature || 0.7
418
- });
419
- if (!result.success) {
420
- let errorText;
421
- if (result.error === 'no_results') {
422
- errorText = formatNoResultsMessage(result.query, result.queriesUsed);
423
- }
424
- else {
425
- errorText = formatErrorMessage(result.error || 'Unknown error', result.query);
426
- }
427
- return {
428
- content: [{ type: 'text', text: errorText }],
429
- };
430
- }
431
- const formattedResult = formatSynthesisResult(result, {
432
- includeMetadata: true,
433
- includeStats: true
434
- });
435
- return {
436
- content: [
437
- {
438
- type: 'text',
439
- text: formattedResult
440
- }
441
- ],
442
- };
443
- }
444
- catch (error) {
445
- const errorText = formatErrorMessage(error.message, typedArgs.question);
446
- return {
447
- content: [{ type: 'text', text: errorText }],
448
- isError: true,
449
- };
450
- }
451
- }
452
- default:
453
- throw new Error(`Unknown tool: ${name}`);
454
- }
455
- }
456
- catch (error) {
457
- return {
458
- content: [{ type: 'text', text: `ERROR: ${error.message}` }],
459
- isError: true,
460
- };
461
- }
462
- });
463
- async function main() {
464
- const transport = new StdioServerTransport();
465
- await server.connect(transport);
466
- console.error(JSON.stringify({
467
- start: 'CodeVault MCP Server started',
468
- version: packageJson.version,
469
- }));
470
- // FIX: Start periodic cache cleanup
471
- scheduleCacheCleanup();
472
- // FIX: Add cleanup handlers for graceful shutdown
473
- const cleanup = () => {
474
- // Stop cache cleanup timer
475
- if (cacheCleanupTimer) {
476
- clearInterval(cacheCleanupTimer);
477
- cacheCleanupTimer = null;
478
- }
479
- // Clear session context pack
480
- sessionContextPack = null;
481
- // Clear search caches to free memory
482
- try {
483
- const { clearSearchCaches } = require('./core/search.js');
484
- if (typeof clearSearchCaches === 'function') {
485
- clearSearchCaches();
486
- }
487
- }
488
- catch (error) {
489
- // Ignore if module doesn't export the function yet
490
- }
491
- // Clear token counter cache
492
- try {
493
- const { clearTokenCache } = require('./chunking/token-counter.js');
494
- if (typeof clearTokenCache === 'function') {
495
- clearTokenCache();
496
- }
497
- }
498
- catch (error) {
499
- // Ignore if module doesn't export the function yet
500
- }
501
- };
502
- process.on('SIGINT', () => {
503
- cleanup();
504
- process.exit(0);
505
- });
506
- process.on('SIGTERM', () => {
507
- cleanup();
508
- process.exit(0);
509
- });
510
- process.on('exit', () => {
511
- cleanup();
512
- });
513
- }
514
- main().catch((error) => {
515
- console.error('Fatal error:', error);
516
- process.exit(1);
517
- });
518
- //# sourceMappingURL=mcp-server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- export interface ModelProfile {
2
- maxTokens: number;
3
- optimalTokens: number;
4
- minChunkTokens: number;
5
- maxChunkTokens: number;
6
- overlapTokens: number;
7
- optimalChars: number;
8
- minChunkChars: number;
9
- maxChunkChars: number;
10
- overlapChars: number;
11
- dimensions: number;
12
- useTokens: boolean;
13
- tokenizerType: string;
14
- encoding?: string;
15
- tokenCounter?: (text: string) => number | Promise<number>;
16
- }
17
- export declare abstract class EmbeddingProvider {
18
- abstract generateEmbedding(text: string): Promise<number[]>;
19
- abstract getDimensions(): number;
20
- abstract getName(): string;
21
- abstract getModelName?(): string;
22
- abstract init?(): Promise<void>;
23
- generateEmbeddings(texts: string[]): Promise<number[][]>;
24
- rateLimiter?: any;
25
- }
26
- export declare const BATCH_SIZE = 50;
27
- export declare const MAX_BATCH_TOKENS = 100000;
28
- export declare const MAX_ITEM_TOKENS = 8191;
29
- export declare function estimateTokens(text: string): number;
30
- export declare const MODEL_PROFILES: Record<string, Omit<ModelProfile, 'tokenCounter'>>;
31
- export declare function getModelProfile(providerName: string, modelName: string | null): Promise<ModelProfile>;
32
- export declare function getSizeLimits(profile: ModelProfile): {
33
- optimal: number;
34
- min: number;
35
- max: number;
36
- overlap: number;
37
- unit: string;
38
- };
39
- //# sourceMappingURL=base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3D;AAED,8BAAsB,iBAAiB;IACrC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAC3D,QAAQ,CAAC,aAAa,IAAI,MAAM;IAChC,QAAQ,CAAC,OAAO,IAAI,MAAM;IAC1B,QAAQ,CAAC,YAAY,CAAC,IAAI,MAAM;IAChC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;IAGzB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAU9D,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAGD,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,gBAAgB,SAAS,CAAC;AACvC,eAAO,MAAM,eAAe,OAAO,CAAC;AAGpC,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAyG7E,CAAC;AAEF,wBAAsB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CA4D3G;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAiBA"}