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,187 +0,0 @@
1
- const KEYWORD_BLACKLIST = new Set([
2
- 'if', 'for', 'while', 'switch', 'catch', 'return', 'function', 'class',
3
- 'new', 'await', 'yield', 'isset', 'empty', 'echo', 'print', 'require', 'include'
4
- ]);
5
- function escapeRegex(value) {
6
- return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
7
- }
8
- function sliceSignatureSnippet(source, node) {
9
- const start = node.startIndex;
10
- const end = Math.min(node.endIndex, start + 400);
11
- return source.slice(start, end);
12
- }
13
- function findClosingParen(text, startIndex) {
14
- let depth = 0;
15
- for (let i = startIndex; i < text.length; i++) {
16
- const char = text[i];
17
- if (char === '(') {
18
- depth++;
19
- }
20
- else if (char === ')') {
21
- depth--;
22
- if (depth === 0) {
23
- return i;
24
- }
25
- }
26
- }
27
- return -1;
28
- }
29
- function extractParameterSection(snippet) {
30
- const openIndex = snippet.indexOf('(');
31
- if (openIndex === -1) {
32
- return { paramsText: '', closeIndex: -1 };
33
- }
34
- const closeIndex = findClosingParen(snippet, openIndex);
35
- if (closeIndex === -1) {
36
- return { paramsText: '', closeIndex: -1 };
37
- }
38
- const paramsText = snippet.slice(openIndex + 1, closeIndex).trim();
39
- return { paramsText, closeIndex };
40
- }
41
- function normalizeParameter(param) {
42
- if (!param) {
43
- return '';
44
- }
45
- const withoutDefaults = param.split('=')[0].trim();
46
- const cleaned = withoutDefaults.replace(/^[*&]+/, '').trim();
47
- return cleaned;
48
- }
49
- function extractParameters(snippet) {
50
- const { paramsText, closeIndex } = extractParameterSection(snippet);
51
- if (closeIndex === -1 || paramsText.length === 0) {
52
- return { parameters: [], closeIndex };
53
- }
54
- const rawParams = paramsText.split(',');
55
- const parameters = rawParams
56
- .map(param => normalizeParameter(param))
57
- .filter(param => param.length > 0)
58
- .slice(0, 12);
59
- return { parameters, closeIndex };
60
- }
61
- function extractReturnType(snippet, closeIndex) {
62
- if (closeIndex === -1) {
63
- return null;
64
- }
65
- const after = snippet.slice(closeIndex + 1, closeIndex + 80);
66
- const colonMatch = after.match(/:\s*([A-Za-z0-9_\\\[\]<>|?]+)/);
67
- if (colonMatch) {
68
- return colonMatch[1];
69
- }
70
- const arrowMatch = after.match(/->\s*([A-Za-z0-9_\\\[\]<>|?]+)/);
71
- if (arrowMatch) {
72
- return arrowMatch[1];
73
- }
74
- return null;
75
- }
76
- function buildSignature(symbol, snippet, node) {
77
- const normalizedSymbol = typeof symbol === 'string' ? symbol.trim() : '';
78
- const isClassNode = node.type && node.type.includes('class');
79
- if (isClassNode && normalizedSymbol) {
80
- return { signature: `class ${normalizedSymbol}`, parameters: [], returnType: null };
81
- }
82
- if (!normalizedSymbol) {
83
- return { signature: '', parameters: [], returnType: null };
84
- }
85
- const { parameters, closeIndex } = extractParameters(snippet);
86
- const returnType = extractReturnType(snippet, closeIndex);
87
- const paramText = parameters.length > 0 ? parameters.join(', ') : '';
88
- const signature = returnType
89
- ? `${normalizedSymbol}(${paramText}) : ${returnType}`
90
- : `${normalizedSymbol}(${paramText})`;
91
- return { signature, parameters, returnType };
92
- }
93
- function extractCallNameFromSnippet(snippet) {
94
- const trimmed = snippet.trim();
95
- if (!trimmed.includes('(')) {
96
- return null;
97
- }
98
- const callMatch = trimmed.match(/(?:\$?[A-Za-z_][\w]*->|[A-Za-z_][\w]*::|[A-Za-z_][\w]*\.)*([A-Za-z_][\w]*)\s*\(/);
99
- if (!callMatch) {
100
- return null;
101
- }
102
- const candidate = callMatch[1];
103
- if (!candidate || KEYWORD_BLACKLIST.has(candidate)) {
104
- return null;
105
- }
106
- return candidate;
107
- }
108
- function collectCalls(node, source, calls) {
109
- const nodeType = node.type || '';
110
- const isCallNode = nodeType.includes('call') || nodeType.includes('invocation');
111
- if (isCallNode) {
112
- const snippet = source.slice(node.startIndex, Math.min(node.endIndex, node.startIndex + 120));
113
- const name = extractCallNameFromSnippet(snippet);
114
- if (name) {
115
- calls.add(name);
116
- }
117
- }
118
- for (let i = 0; i < node.childCount; i++) {
119
- const child = node.child(i);
120
- if (child) {
121
- collectCalls(child, source, calls);
122
- }
123
- }
124
- }
125
- function splitSymbolWords(symbol) {
126
- if (!symbol) {
127
- return [];
128
- }
129
- const cleaned = symbol.replace(/[^A-Za-z0-9_]/g, ' ');
130
- const words = cleaned
131
- .replace(/([a-z])([A-Z])/g, '$1 $2')
132
- .split(/[\s_]+/)
133
- .map(word => word.trim().toLowerCase())
134
- .filter(word => word.length > 0);
135
- return words;
136
- }
137
- export function extractSymbolMetadata({ node, source, symbol }) {
138
- const snippet = sliceSignatureSnippet(source, node);
139
- const { signature, parameters, returnType } = buildSignature(symbol, snippet, node);
140
- const calls = new Set();
141
- collectCalls(node, source, calls);
142
- const symbolWords = splitSymbolWords(symbol);
143
- return {
144
- signature,
145
- parameters,
146
- returnType,
147
- calls: Array.from(calls),
148
- keywords: symbolWords
149
- };
150
- }
151
- export function queryMatchesSignature(query, metadata) {
152
- if (!metadata) {
153
- return false;
154
- }
155
- const queryLower = query.toLowerCase();
156
- const signature = typeof metadata.signature === 'string' ? metadata.signature.toLowerCase() : '';
157
- const symbol = typeof metadata.symbol === 'string' ? metadata.symbol.toLowerCase() : '';
158
- if (symbol && queryLower.includes(symbol)) {
159
- return true;
160
- }
161
- if (signature && queryLower.includes(signature)) {
162
- return true;
163
- }
164
- if (Array.isArray(metadata.symbol_parameters)) {
165
- for (const param of metadata.symbol_parameters) {
166
- if (typeof param === 'string' && param.length > 2) {
167
- const needle = param.toLowerCase();
168
- if (queryLower.includes(needle)) {
169
- return true;
170
- }
171
- }
172
- }
173
- }
174
- if (Array.isArray(metadata.keywords) && metadata.keywords.length > 0) {
175
- for (const word of metadata.keywords) {
176
- if (!word || word.length < 3) {
177
- continue;
178
- }
179
- const pattern = new RegExp(`\\b${escapeRegex(word)}[a-z0-9_]*\\b`, 'i');
180
- if (pattern.test(query)) {
181
- return true;
182
- }
183
- }
184
- }
185
- return false;
186
- }
187
- //# sourceMappingURL=extract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/symbols/extract.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Codemap } from '../types/codemap.js';
2
- export declare function attachSymbolGraphToCodemap(codemap: Codemap): Codemap;
3
- //# sourceMappingURL=graph.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/symbols/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAsDnD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CA8DpE"}
@@ -1,89 +0,0 @@
1
- const MAX_NEIGHBORS = 16;
2
- function toLower(value) {
3
- return typeof value === 'string' ? value.trim().toLowerCase() : '';
4
- }
5
- function buildSymbolIndex(codemap) {
6
- const index = new Map();
7
- for (const [chunkId, entry] of Object.entries(codemap)) {
8
- if (!entry || typeof entry !== 'object') {
9
- continue;
10
- }
11
- const symbol = typeof entry.symbol === 'string' ? entry.symbol.trim() : '';
12
- if (!symbol) {
13
- continue;
14
- }
15
- const key = symbol.toLowerCase();
16
- if (!index.has(key)) {
17
- index.set(key, []);
18
- }
19
- index.get(key).push({
20
- chunkId,
21
- sha: entry.sha,
22
- file: entry.file,
23
- symbol
24
- });
25
- }
26
- return index;
27
- }
28
- function selectCandidate(candidates, entry) {
29
- if (!Array.isArray(candidates) || candidates.length === 0) {
30
- return null;
31
- }
32
- if (!entry || !entry.file) {
33
- return candidates[0];
34
- }
35
- const sameFile = candidates.find(candidate => candidate.file === entry.file);
36
- return sameFile || candidates[0];
37
- }
38
- export function attachSymbolGraphToCodemap(codemap) {
39
- if (!codemap || typeof codemap !== 'object') {
40
- return codemap;
41
- }
42
- const symbolIndex = buildSymbolIndex(codemap);
43
- const adjacency = new Map();
44
- for (const [chunkId, entry] of Object.entries(codemap)) {
45
- if (!entry || typeof entry !== 'object' || typeof entry.sha !== 'string') {
46
- continue;
47
- }
48
- const outgoing = new Set();
49
- const rawCalls = Array.isArray(entry.symbol_calls) ? entry.symbol_calls : [];
50
- for (const rawName of rawCalls) {
51
- const candidateName = toLower(rawName);
52
- if (!candidateName) {
53
- continue;
54
- }
55
- const candidates = symbolIndex.get(candidateName);
56
- if (!candidates || candidates.length === 0) {
57
- continue;
58
- }
59
- const target = selectCandidate(candidates, entry);
60
- if (target && typeof target.sha === 'string' && target.sha.length > 0 && target.sha !== entry.sha) {
61
- outgoing.add(target.sha);
62
- }
63
- }
64
- adjacency.set(entry.sha, outgoing);
65
- entry.symbol_call_targets = Array.from(outgoing).slice(0, MAX_NEIGHBORS);
66
- }
67
- const incoming = new Map();
68
- for (const [fromSha, targets] of adjacency.entries()) {
69
- for (const targetSha of targets) {
70
- if (!incoming.has(targetSha)) {
71
- incoming.set(targetSha, new Set());
72
- }
73
- incoming.get(targetSha).add(fromSha);
74
- }
75
- }
76
- for (const entry of Object.values(codemap)) {
77
- if (!entry || typeof entry.sha !== 'string') {
78
- continue;
79
- }
80
- const outgoing = adjacency.get(entry.sha) || new Set();
81
- const inbound = incoming.get(entry.sha) || new Set();
82
- const neighbors = new Set([...outgoing, ...inbound]);
83
- entry.symbol_call_targets = Array.from(outgoing).slice(0, MAX_NEIGHBORS);
84
- entry.symbol_callers = Array.from(inbound).slice(0, MAX_NEIGHBORS);
85
- entry.symbol_neighbors = Array.from(neighbors).slice(0, MAX_NEIGHBORS * 2);
86
- }
87
- return codemap;
88
- }
89
- //# sourceMappingURL=graph.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/symbols/graph.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import type { SynthesisResult } from './synthesizer.js';
2
- export interface FormattingOptions {
3
- includeMetadata?: boolean;
4
- includeStats?: boolean;
5
- colorize?: boolean;
6
- }
7
- export declare function formatSynthesisResult(result: SynthesisResult, options?: FormattingOptions): string;
8
- export declare function formatStreamingChunk(chunk: string): string;
9
- export declare function extractCitations(markdown: string): string[];
10
- export declare function addCitationFooter(markdown: string): string;
11
- export declare function formatErrorMessage(error: string, query: string): string;
12
- export declare function formatNoResultsMessage(query: string, queriesUsed?: string[]): string;
13
- //# sourceMappingURL=markdown-formatter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown-formatter.d.ts","sourceRoot":"","sources":["../../src/synthesis/markdown-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAqDtG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB3D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqB1D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYvE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAmBpF"}
@@ -1,104 +0,0 @@
1
- export function formatSynthesisResult(result, options = {}) {
2
- const { includeMetadata = true, includeStats = true, colorize = false } = options;
3
- let output = '';
4
- // Add metadata header if requested
5
- if (includeMetadata && result.metadata) {
6
- output += '---\n';
7
- output += '**Search Metadata**\n\n';
8
- if (result.queriesUsed && result.queriesUsed.length > 1) {
9
- output += `- **Queries Used:** ${result.queriesUsed.length}\n`;
10
- result.queriesUsed.forEach((q, i) => {
11
- output += ` ${i + 1}. "${q}"\n`;
12
- });
13
- }
14
- if (result.metadata.multiQuery) {
15
- output += `- **Multi-Query:** Yes\n`;
16
- }
17
- if (result.metadata.searchType) {
18
- output += `- **Search Type:** ${result.metadata.searchType}\n`;
19
- }
20
- output += `- **Chunks Analyzed:** ${result.chunksAnalyzed}\n`;
21
- output += `- **Embedding Provider:** ${result.embeddingProvider}\n`;
22
- output += `- **Chat Provider:** ${result.chatProvider}\n`;
23
- output += '\n---\n\n';
24
- }
25
- // Add main answer
26
- if (result.success && result.answer) {
27
- output += result.answer;
28
- if (!result.answer.endsWith('\n')) {
29
- output += '\n';
30
- }
31
- }
32
- else if (!result.success) {
33
- output += `**Error:** ${result.error || 'Unknown error occurred'}\n`;
34
- }
35
- // Add stats footer if requested
36
- if (includeStats && result.success) {
37
- output += '\n\n---\n\n';
38
- output += '_Generated using CodeVault semantic search + LLM synthesis_\n';
39
- }
40
- return output;
41
- }
42
- export function formatStreamingChunk(chunk) {
43
- // Pass through streaming chunks as-is
44
- return chunk;
45
- }
46
- export function extractCitations(markdown) {
47
- const citations = [];
48
- // Match markdown links: [text](path) or `[text](path)`
49
- const linkPattern = /\[([^\]]+)\]\(([^)]+)\)/g;
50
- let match;
51
- while ((match = linkPattern.exec(markdown)) !== null) {
52
- const path = match[2];
53
- // Filter out external URLs, only keep file paths
54
- if (!path.startsWith('http://') && !path.startsWith('https://')) {
55
- citations.push(path);
56
- }
57
- }
58
- return Array.from(new Set(citations));
59
- }
60
- export function addCitationFooter(markdown) {
61
- const citations = extractCitations(markdown);
62
- if (citations.length === 0) {
63
- return markdown;
64
- }
65
- let output = markdown;
66
- if (!output.endsWith('\n\n')) {
67
- output += '\n\n';
68
- }
69
- output += '## 📚 References\n\n';
70
- output += 'The following files were referenced in this answer:\n\n';
71
- citations.forEach((citation, index) => {
72
- output += `${index + 1}. \`${citation}\`\n`;
73
- });
74
- return output;
75
- }
76
- export function formatErrorMessage(error, query) {
77
- let output = `# ❌ Unable to Answer\n\n`;
78
- output += `**Question:** "${query}"\n\n`;
79
- output += `**Error:** ${error}\n\n`;
80
- output += `## Possible Solutions:\n\n`;
81
- output += `1. Ensure the project is indexed: \`codevault index\`\n`;
82
- output += `2. Check if the question is related to the codebase\n`;
83
- output += `3. Try rephrasing your question with more specific terms\n`;
84
- output += `4. Verify embedding and chat API configurations\n`;
85
- return output;
86
- }
87
- export function formatNoResultsMessage(query, queriesUsed) {
88
- let output = `# ℹ️ No Relevant Code Found\n\n`;
89
- output += `**Question:** "${query}"\n\n`;
90
- if (queriesUsed && queriesUsed.length > 1) {
91
- output += `**Queries Attempted:**\n`;
92
- queriesUsed.forEach((q, i) => {
93
- output += `${i + 1}. "${q}"\n`;
94
- });
95
- output += '\n';
96
- }
97
- output += `## Suggestions:\n\n`;
98
- output += `1. Try using more specific technical terms\n`;
99
- output += `2. Check if the relevant code is in the indexed project\n`;
100
- output += `3. Use simpler, more direct questions\n`;
101
- output += `4. Try searching for function names or class names directly\n`;
102
- return output;
103
- }
104
- //# sourceMappingURL=markdown-formatter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown-formatter.js","sourceRoot":"","sources":["../../src/synthesis/markdown-formatter.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import type { SearchResult } from '../core/types.js';
2
- export interface CodeContext {
3
- results: SearchResult[];
4
- codeChunks: Map<string, string>;
5
- query: string;
6
- metadata?: {
7
- searchType?: string;
8
- provider?: string;
9
- totalChunks?: number;
10
- };
11
- }
12
- export interface PromptOptions {
13
- maxContextChunks?: number;
14
- includeFileStructure?: boolean;
15
- citationStyle?: 'inline' | 'footnote';
16
- }
17
- export declare function buildSystemPrompt(): string;
18
- export declare function buildUserPrompt(context: CodeContext, options?: PromptOptions): string;
19
- export declare function buildMultiQueryPrompt(query: string): string;
20
- export declare function parseMultiQueryResponse(response: string): string[];
21
- //# sourceMappingURL=prompt-builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/synthesis/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;CACvC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAkB1C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAyFzF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAc3D;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBlE"}
@@ -1,129 +0,0 @@
1
- export function buildSystemPrompt() {
2
- return `You are an expert code analyst helping developers understand their codebase. Your role is to:
3
-
4
- 1. Analyze the provided code chunks and their metadata
5
- 2. Answer the user's question clearly and concisely
6
- 3. Use proper markdown formatting
7
- 4. Include citations to specific files and code snippets
8
- 5. Provide practical, actionable insights
9
- 6. Highlight important patterns, dependencies, and relationships
10
-
11
- Format your response in markdown with:
12
- - Clear headings and sections
13
- - Code blocks with language tags
14
- - File path citations like: \`[filename.ext](filename.ext:line)\`
15
- - Bullet points for clarity
16
- - Bold/italic for emphasis
17
-
18
- Keep responses focused and relevant to the question asked.`;
19
- }
20
- export function buildUserPrompt(context, options = {}) {
21
- const { query, results, codeChunks, metadata } = context;
22
- const maxChunks = options.maxContextChunks || 10;
23
- const citationStyle = options.citationStyle || 'inline';
24
- let prompt = `# Question\n\n${query}\n\n`;
25
- // Add search metadata
26
- if (metadata) {
27
- prompt += `# Search Context\n\n`;
28
- if (metadata.searchType) {
29
- prompt += `- Search Type: ${metadata.searchType}\n`;
30
- }
31
- if (metadata.provider) {
32
- prompt += `- Embedding Provider: ${metadata.provider}\n`;
33
- }
34
- if (metadata.totalChunks) {
35
- prompt += `- Total Indexed Chunks: ${metadata.totalChunks}\n`;
36
- }
37
- prompt += `- Relevant Results: ${results.length}\n\n`;
38
- }
39
- // Add relevant code chunks
40
- prompt += `# Relevant Code Chunks\n\n`;
41
- prompt += `I found ${Math.min(results.length, maxChunks)} relevant code chunks. Here they are in order of relevance:\n\n`;
42
- const chunksToInclude = results.slice(0, maxChunks);
43
- chunksToInclude.forEach((result, index) => {
44
- const chunkCode = codeChunks.get(result.sha);
45
- const relevanceScore = (result.meta.score * 100).toFixed(1);
46
- prompt += `## Chunk ${index + 1}: ${result.meta.symbol} (${relevanceScore}% relevant)\n\n`;
47
- prompt += `**File:** \`${result.path}\`\n`;
48
- prompt += `**Language:** ${result.lang}\n`;
49
- prompt += `**Symbol:** ${result.meta.symbol}\n`;
50
- if (result.meta.description) {
51
- prompt += `**Description:** ${result.meta.description}\n`;
52
- }
53
- if (result.meta.intent) {
54
- prompt += `**Intent:** ${result.meta.intent}\n`;
55
- }
56
- // Add search metadata if available
57
- if (result.meta.searchType) {
58
- prompt += `**Search Type:** ${result.meta.searchType}\n`;
59
- }
60
- if (result.meta.symbolBoost && result.meta.symbolBoost > 0) {
61
- prompt += `**Symbol Match:** Yes (boosted by ${(result.meta.symbolBoost * 100).toFixed(0)}%)\n`;
62
- }
63
- if (result.meta.rerankerScore !== undefined) {
64
- prompt += `**Reranker Score:** ${(result.meta.rerankerScore * 100).toFixed(1)}%\n`;
65
- }
66
- prompt += `\n**Code:**\n\n`;
67
- if (chunkCode) {
68
- const truncatedCode = chunkCode.length > 2000
69
- ? chunkCode.substring(0, 2000) + '\n... [truncated]'
70
- : chunkCode;
71
- prompt += `\`\`\`${result.lang}\n${truncatedCode}\n\`\`\`\n\n`;
72
- }
73
- else {
74
- prompt += `_[Code not available]_\n\n`;
75
- }
76
- prompt += `---\n\n`;
77
- });
78
- // Add instructions for response format
79
- prompt += `# Instructions\n\n`;
80
- prompt += `Based on the code chunks above, please answer the question: "${query}"\n\n`;
81
- prompt += `Your response should:\n`;
82
- prompt += `1. Directly answer the question in clear, natural language\n`;
83
- prompt += `2. Reference specific code chunks using inline citations like: \`[filename.ext](filename.ext)\`\n`;
84
- prompt += `3. Include relevant code snippets in your explanation\n`;
85
- prompt += `4. Highlight key patterns, dependencies, or architectural decisions\n`;
86
- prompt += `5. Use proper markdown formatting with headers, lists, and code blocks\n`;
87
- prompt += `6. Be concise but thorough - focus on what's most relevant\n\n`;
88
- if (citationStyle === 'footnote') {
89
- prompt += `7. Add a "References" section at the end with all cited files\n\n`;
90
- }
91
- return prompt;
92
- }
93
- export function buildMultiQueryPrompt(query) {
94
- return `You are a query analyzer for code search. Given a complex question about a codebase, break it down into 2-4 specific search queries that would help find relevant code.
95
-
96
- Question: "${query}"
97
-
98
- Return ONLY a JSON array of search query strings, nothing else. Each query should be:
99
- - Specific and focused on one aspect
100
- - Use technical terms that would appear in code
101
- - Be suitable for semantic search
102
-
103
- Example format:
104
- ["authentication middleware", "user login function", "session management"]
105
-
106
- Your response (JSON array only):`;
107
- }
108
- export function parseMultiQueryResponse(response) {
109
- try {
110
- // Extract JSON array from response
111
- const jsonMatch = response.match(/\[[\s\S]*\]/);
112
- if (!jsonMatch) {
113
- return [];
114
- }
115
- const queries = JSON.parse(jsonMatch[0]);
116
- if (!Array.isArray(queries)) {
117
- return [];
118
- }
119
- return queries
120
- .filter(q => typeof q === 'string' && q.trim().length > 0)
121
- .map(q => q.trim())
122
- .slice(0, 4); // Max 4 queries
123
- }
124
- catch (error) {
125
- console.error('Failed to parse multi-query response:', error);
126
- return [];
127
- }
128
- }
129
- //# sourceMappingURL=prompt-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/synthesis/prompt-builder.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import type { ScopeFilters } from '../types/search.js';
2
- export interface SynthesisOptions {
3
- provider?: string;
4
- chatProvider?: string;
5
- workingPath?: string;
6
- scope?: ScopeFilters;
7
- maxChunks?: number;
8
- useReranking?: boolean;
9
- useMultiQuery?: boolean;
10
- temperature?: number;
11
- stream?: boolean;
12
- }
13
- export interface SynthesisResult {
14
- success: boolean;
15
- answer?: string;
16
- query: string;
17
- queriesUsed?: string[];
18
- chunksAnalyzed: number;
19
- chatProvider: string;
20
- embeddingProvider: string;
21
- error?: string;
22
- metadata?: {
23
- searchType?: string;
24
- totalResults?: number;
25
- multiQuery?: boolean;
26
- };
27
- }
28
- export declare function synthesizeAnswer(query: string, options?: SynthesisOptions): Promise<SynthesisResult>;
29
- export declare function synthesizeAnswerStreaming(query: string, options?: SynthesisOptions): AsyncGenerator<string>;
30
- //# sourceMappingURL=synthesizer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"synthesizer.d.ts","sourceRoot":"","sources":["../../src/synthesis/synthesizer.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;CACH;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAgL1B;AAED,wBAAuB,yBAAyB,CAC9C,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,gBAAqB,GAC7B,cAAc,CAAC,MAAM,CAAC,CAkExB"}