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,50 +0,0 @@
1
- export function reciprocalRankFusion({ vectorResults = [], bm25Results = [], limit = 10, k = 60 }) {
2
- const scores = new Map();
3
- const addScores = (items, source) => {
4
- items.forEach((item, index) => {
5
- if (!item || typeof item.id === 'undefined') {
6
- return;
7
- }
8
- const rankContribution = 1 / (k + index + 1);
9
- const existing = scores.get(item.id) || {
10
- id: item.id,
11
- score: 0,
12
- vectorRank: null,
13
- bm25Rank: null,
14
- vectorScore: null,
15
- bm25Score: null
16
- };
17
- existing.score += rankContribution;
18
- if (source === 'vector') {
19
- existing.vectorRank = index;
20
- existing.vectorScore = item.score;
21
- }
22
- else if (source === 'bm25') {
23
- existing.bm25Rank = index;
24
- existing.bm25Score = item.score;
25
- }
26
- scores.set(item.id, existing);
27
- });
28
- };
29
- addScores(vectorResults, 'vector');
30
- addScores(bm25Results, 'bm25');
31
- return Array.from(scores.values())
32
- .sort((a, b) => {
33
- if (b.score !== a.score) {
34
- return b.score - a.score;
35
- }
36
- const aVectorRank = typeof a.vectorRank === 'number' ? a.vectorRank : Number.MAX_SAFE_INTEGER;
37
- const bVectorRank = typeof b.vectorRank === 'number' ? b.vectorRank : Number.MAX_SAFE_INTEGER;
38
- if (aVectorRank !== bVectorRank) {
39
- return aVectorRank - bVectorRank;
40
- }
41
- const aBmRank = typeof a.bm25Rank === 'number' ? a.bm25Rank : Number.MAX_SAFE_INTEGER;
42
- const bBmRank = typeof b.bm25Rank === 'number' ? b.bm25Rank : Number.MAX_SAFE_INTEGER;
43
- if (aBmRank !== bBmRank) {
44
- return aBmRank - bBmRank;
45
- }
46
- return 0;
47
- })
48
- .slice(0, limit);
49
- }
50
- //# sourceMappingURL=hybrid.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hybrid.js","sourceRoot":"","sources":["../../src/search/hybrid.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { type ScopeFilters } from '../types/search.js';
2
- export declare function normalizeScopeFilters(scope?: any): ScopeFilters;
3
- import type { DatabaseChunk } from '../database/db.js';
4
- export declare function applyScope(chunks: DatabaseChunk[], scope?: ScopeFilters): DatabaseChunk[];
5
- //# sourceMappingURL=scope.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/search/scope.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AAkC5G,wBAAgB,qBAAqB,CAAC,KAAK,GAAE,GAAQ,GAAG,YAAY,CAmCnE;AAED,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,KAAK,GAAE,YAAiB,GAAG,aAAa,EAAE,CAwD7F"}
@@ -1,107 +0,0 @@
1
- import micromatch from 'micromatch';
2
- import { DEFAULT_RERANKER, RERANKER_OPTIONS } from '../types/search.js';
3
- function toArray(value) {
4
- if (!value) {
5
- return [];
6
- }
7
- return Array.isArray(value) ? value : [value];
8
- }
9
- function normalizeList(values) {
10
- return toArray(values)
11
- .map(value => (typeof value === 'string' ? value.trim() : ''))
12
- .filter(Boolean);
13
- }
14
- function normalizeToggle(value, defaultValue) {
15
- if (typeof value === 'boolean') {
16
- return value;
17
- }
18
- if (typeof value === 'string') {
19
- const normalized = value.trim().toLowerCase();
20
- if (['on', 'true', '1', 'yes', 'enable', 'enabled'].includes(normalized)) {
21
- return true;
22
- }
23
- if (['off', 'false', '0', 'no', 'disable', 'disabled'].includes(normalized)) {
24
- return false;
25
- }
26
- }
27
- return defaultValue;
28
- }
29
- export function normalizeScopeFilters(scope = {}) {
30
- const normalized = {};
31
- const normalizedPath = normalizeList(scope.path_glob || scope.pathGlob || scope.path);
32
- if (normalizedPath.length > 0) {
33
- normalized.path_glob = normalizedPath;
34
- }
35
- const normalizedTags = normalizeList(scope.tags || scope.tag);
36
- if (normalizedTags.length > 0) {
37
- normalized.tags = normalizedTags.map(tag => tag.toLowerCase());
38
- }
39
- const normalizedLang = normalizeList(scope.lang || scope.language || scope.languages);
40
- if (normalizedLang.length > 0) {
41
- normalized.lang = normalizedLang.map(lang => lang.toLowerCase());
42
- }
43
- const candidateProvider = typeof scope.provider === 'string' ? scope.provider.trim() : '';
44
- if (candidateProvider) {
45
- normalized.provider = candidateProvider;
46
- }
47
- const candidateReranker = typeof scope.reranker === 'string' ? scope.reranker.trim() : '';
48
- if (candidateReranker && RERANKER_OPTIONS.includes(candidateReranker)) {
49
- normalized.reranker = candidateReranker;
50
- }
51
- else {
52
- normalized.reranker = DEFAULT_RERANKER;
53
- }
54
- normalized.hybrid = normalizeToggle(scope.hybrid, true);
55
- normalized.bm25 = normalizeToggle(scope.bm25, true);
56
- normalized.symbol_boost = normalizeToggle(scope.symbol_boost, true);
57
- return normalized;
58
- }
59
- export function applyScope(chunks, scope = {}) {
60
- if (!Array.isArray(chunks) || chunks.length === 0) {
61
- return chunks;
62
- }
63
- const normalized = {
64
- path_glob: Array.isArray(scope.path_glob) ? scope.path_glob : normalizeList(scope.path_glob),
65
- tags: Array.isArray(scope.tags) ? scope.tags : normalizeList(scope.tags).map(tag => tag.toLowerCase()),
66
- lang: Array.isArray(scope.lang) ? scope.lang : normalizeList(scope.lang).map(lang => lang.toLowerCase())
67
- };
68
- let filtered = chunks;
69
- if (normalized.path_glob && normalized.path_glob.length > 0) {
70
- filtered = filtered.filter(chunk => {
71
- const filePath = chunk.file_path || '';
72
- if (!filePath) {
73
- return false;
74
- }
75
- return micromatch.isMatch(filePath, normalized.path_glob, { dot: true });
76
- });
77
- }
78
- if (normalized.tags && normalized.tags.length > 0) {
79
- const tagSet = new Set(normalized.tags);
80
- filtered = filtered.filter(chunk => {
81
- if (!chunk.codevault_tags) {
82
- return false;
83
- }
84
- try {
85
- const tags = JSON.parse(chunk.codevault_tags || '[]');
86
- if (!Array.isArray(tags)) {
87
- return false;
88
- }
89
- return tags.some(tag => typeof tag === 'string' && tagSet.has(tag.toLowerCase()));
90
- }
91
- catch (error) {
92
- return false;
93
- }
94
- });
95
- }
96
- if (normalized.lang && normalized.lang.length > 0) {
97
- const langSet = new Set(normalized.lang);
98
- filtered = filtered.filter(chunk => {
99
- if (!chunk.lang) {
100
- return false;
101
- }
102
- return langSet.has(String(chunk.lang).toLowerCase());
103
- });
104
- }
105
- return filtered;
106
- }
107
- //# sourceMappingURL=scope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/search/scope.ts"],"names":[],"mappings":"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"}
@@ -1,40 +0,0 @@
1
- export declare function resetEncryptionCacheForTests(): void;
2
- export declare function getActiveEncryptionKey(): Buffer | null;
3
- export declare function getEncryptionKeyError(): Error | null;
4
- interface Logger {
5
- warn?: (message: string) => void;
6
- }
7
- export interface EncryptionPreference {
8
- enabled: boolean;
9
- key: Buffer | null;
10
- reason: string;
11
- }
12
- export declare function resolveEncryptionPreference({ mode, logger }?: {
13
- mode?: string;
14
- logger?: Logger;
15
- }): EncryptionPreference;
16
- export interface WriteChunkOptions {
17
- chunkDir: string;
18
- sha: string;
19
- code: string | Buffer;
20
- encryption?: EncryptionPreference;
21
- }
22
- export interface WriteChunkResult {
23
- encrypted: boolean;
24
- path: string;
25
- }
26
- export declare function writeChunkToDisk({ chunkDir, sha, code, encryption }: WriteChunkOptions): WriteChunkResult;
27
- export interface ReadChunkOptions {
28
- chunkDir: string;
29
- sha: string;
30
- key?: Buffer | null;
31
- }
32
- export interface ReadChunkResult {
33
- code: string;
34
- encrypted: boolean;
35
- }
36
- export declare function readChunkFromDisk({ chunkDir, sha, key }: ReadChunkOptions): ReadChunkResult | null;
37
- export declare function removeChunkArtifacts(chunkDir: string, sha: string): void;
38
- export declare function isChunkEncryptedOnDisk(chunkDir: string, sha: string): boolean;
39
- export {};
40
- //# sourceMappingURL=encrypted-chunks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"encrypted-chunks.d.ts","sourceRoot":"","sources":["../../src/storage/encrypted-chunks.ts"],"names":[],"mappings":"AA+CA,wBAAgB,4BAA4B,IAAI,IAAI,CAInD;AAED,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CA0BtD;AAED,wBAAgB,qBAAqB,IAAI,KAAK,GAAG,IAAI,CAEpD;AAYD,UAAU,MAAM;IACd,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,2BAA2B,CAAC,EAAE,IAAI,EAAE,MAAgB,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,oBAAoB,CA4BrI;AAgED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,oBAAoB,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,iBAAiB,GAAG,gBAAgB,CAmBzG;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAA8B,EAAE,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI,CAkD7H;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAQxE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAG7E"}
@@ -1,237 +0,0 @@
1
- import crypto from 'crypto';
2
- import fs from 'fs';
3
- import path from 'path';
4
- import zlib from 'zlib';
5
- const KEY_ENV_VAR = 'CODEVAULT_ENCRYPTION_KEY';
6
- const MAGIC_HEADER = Buffer.from('CVAULTE1', 'utf8');
7
- const SALT_LENGTH = 16;
8
- const IV_LENGTH = 12;
9
- const TAG_LENGTH = 16;
10
- const HKDF_INFO = Buffer.from('codevault-chunk-v1', 'utf8');
11
- let cachedNormalizedKey = null;
12
- let cachedKeyBuffer = null;
13
- let cachedKeyError = null;
14
- function decodeKey(raw) {
15
- if (typeof raw !== 'string') {
16
- return null;
17
- }
18
- const trimmed = raw.trim();
19
- if (trimmed.length === 0) {
20
- return null;
21
- }
22
- try {
23
- const base64 = Buffer.from(trimmed, 'base64');
24
- if (base64.length === 32) {
25
- return base64;
26
- }
27
- }
28
- catch (error) {
29
- // Ignore decoding errors
30
- }
31
- try {
32
- const hex = Buffer.from(trimmed, 'hex');
33
- if (hex.length === 32) {
34
- return hex;
35
- }
36
- }
37
- catch (error) {
38
- // Ignore decoding errors
39
- }
40
- return null;
41
- }
42
- export function resetEncryptionCacheForTests() {
43
- cachedNormalizedKey = null;
44
- cachedKeyBuffer = null;
45
- cachedKeyError = null;
46
- }
47
- export function getActiveEncryptionKey() {
48
- const raw = process.env[KEY_ENV_VAR];
49
- const normalized = typeof raw === 'string' ? raw.trim() : '';
50
- // FIX: Always check if env var changed to support runtime updates
51
- if (normalized === cachedNormalizedKey && cachedKeyBuffer) {
52
- return cachedKeyBuffer;
53
- }
54
- // Invalidate cache when environment variable changes
55
- cachedNormalizedKey = normalized;
56
- cachedKeyError = null;
57
- cachedKeyBuffer = null;
58
- if (!normalized) {
59
- return null;
60
- }
61
- const decoded = decodeKey(normalized);
62
- if (!decoded) {
63
- cachedKeyError = new Error(`${KEY_ENV_VAR} must be a 32-byte key encoded as base64 or hex.`);
64
- return null;
65
- }
66
- cachedKeyBuffer = decoded;
67
- return cachedKeyBuffer;
68
- }
69
- export function getEncryptionKeyError() {
70
- return cachedKeyError;
71
- }
72
- const warnedInvalidMode = new Set();
73
- let warnedInvalidKey = false;
74
- function normalizeMode(mode) {
75
- if (typeof mode !== 'string') {
76
- return undefined;
77
- }
78
- return mode.trim().toLowerCase();
79
- }
80
- export function resolveEncryptionPreference({ mode, logger = console } = {}) {
81
- const normalizedMode = normalizeMode(mode);
82
- if (normalizedMode && normalizedMode !== 'on' && normalizedMode !== 'off' && !warnedInvalidMode.has(normalizedMode)) {
83
- if (logger && typeof logger.warn === 'function') {
84
- logger.warn(`Unknown --encrypt mode "${mode}". Expected "on" or "off". Falling back to environment configuration.`);
85
- }
86
- warnedInvalidMode.add(normalizedMode);
87
- }
88
- if (normalizedMode === 'off') {
89
- return { enabled: false, key: null, reason: 'flag_off' };
90
- }
91
- const key = getActiveEncryptionKey();
92
- if (!key) {
93
- const keyError = getEncryptionKeyError();
94
- if (normalizedMode === 'on') {
95
- throw keyError || new Error('CODEVAULT_ENCRYPTION_KEY is not configured but encryption was requested (--encrypt on).');
96
- }
97
- if (keyError && !warnedInvalidKey && logger && typeof logger.warn === 'function') {
98
- logger.warn(`${keyError.message} Encryption disabled.`);
99
- warnedInvalidKey = true;
100
- }
101
- return { enabled: false, key: null, reason: keyError ? 'invalid_key' : 'missing_key' };
102
- }
103
- return { enabled: true, key, reason: 'enabled' };
104
- }
105
- function deriveChunkKey(masterKey, salt) {
106
- return Buffer.from(crypto.hkdfSync('sha256', masterKey, salt, HKDF_INFO, 32));
107
- }
108
- function encryptBuffer(plaintext, masterKey) {
109
- const salt = crypto.randomBytes(SALT_LENGTH);
110
- const iv = crypto.randomBytes(IV_LENGTH);
111
- const derivedKey = deriveChunkKey(masterKey, salt);
112
- const cipher = crypto.createCipheriv('aes-256-gcm', derivedKey, iv);
113
- const encrypted = Buffer.concat([cipher.update(plaintext), cipher.final()]);
114
- const tag = cipher.getAuthTag();
115
- const payload = Buffer.concat([MAGIC_HEADER, salt, iv, encrypted, tag]);
116
- return { payload, salt, iv, tag };
117
- }
118
- function decryptBuffer(payload, masterKey) {
119
- const minimumLength = MAGIC_HEADER.length + SALT_LENGTH + IV_LENGTH + TAG_LENGTH + 1;
120
- if (!payload || payload.length < minimumLength) {
121
- const error = new Error('Encrypted chunk payload is truncated.');
122
- error.code = 'ENCRYPTION_PAYLOAD_INVALID';
123
- throw error;
124
- }
125
- const header = payload.subarray(0, MAGIC_HEADER.length);
126
- if (!header.equals(MAGIC_HEADER)) {
127
- const error = new Error('Encrypted chunk payload has an unknown header.');
128
- error.code = 'ENCRYPTION_FORMAT_UNRECOGNIZED';
129
- throw error;
130
- }
131
- const saltStart = MAGIC_HEADER.length;
132
- const ivStart = saltStart + SALT_LENGTH;
133
- const cipherStart = ivStart + IV_LENGTH;
134
- const cipherEnd = payload.length - TAG_LENGTH;
135
- const salt = payload.subarray(saltStart, saltStart + SALT_LENGTH);
136
- const iv = payload.subarray(ivStart, ivStart + IV_LENGTH);
137
- const ciphertext = payload.subarray(cipherStart, cipherEnd);
138
- const tag = payload.subarray(cipherEnd);
139
- const derivedKey = deriveChunkKey(masterKey, salt);
140
- const decipher = crypto.createDecipheriv('aes-256-gcm', derivedKey, iv);
141
- decipher.setAuthTag(tag);
142
- try {
143
- return Buffer.concat([decipher.update(ciphertext), decipher.final()]);
144
- }
145
- catch (error) {
146
- const authError = new Error('authentication failed');
147
- authError.code = 'ENCRYPTION_AUTH_FAILED';
148
- authError.cause = error;
149
- throw authError;
150
- }
151
- }
152
- function getChunkPaths(chunkDir, sha) {
153
- const plainPath = path.join(chunkDir, `${sha}.gz`);
154
- const encryptedPath = path.join(chunkDir, `${sha}.gz.enc`);
155
- return { plainPath, encryptedPath };
156
- }
157
- export function writeChunkToDisk({ chunkDir, sha, code, encryption }) {
158
- const { plainPath, encryptedPath } = getChunkPaths(chunkDir, sha);
159
- const buffer = Buffer.isBuffer(code) ? code : Buffer.from(code, 'utf8');
160
- const compressed = zlib.gzipSync(buffer);
161
- if (encryption && encryption.enabled && encryption.key) {
162
- const { payload } = encryptBuffer(compressed, encryption.key);
163
- fs.writeFileSync(encryptedPath, payload);
164
- if (fs.existsSync(plainPath)) {
165
- fs.rmSync(plainPath, { force: true });
166
- }
167
- return { encrypted: true, path: encryptedPath };
168
- }
169
- fs.writeFileSync(plainPath, compressed);
170
- if (fs.existsSync(encryptedPath)) {
171
- fs.rmSync(encryptedPath, { force: true });
172
- }
173
- return { encrypted: false, path: plainPath };
174
- }
175
- export function readChunkFromDisk({ chunkDir, sha, key = getActiveEncryptionKey() }) {
176
- const { plainPath, encryptedPath } = getChunkPaths(chunkDir, sha);
177
- if (fs.existsSync(encryptedPath)) {
178
- if (!key) {
179
- const error = new Error(`Chunk ${sha} is encrypted and no CODEVAULT_ENCRYPTION_KEY is configured.`);
180
- error.code = 'ENCRYPTION_KEY_REQUIRED';
181
- throw error;
182
- }
183
- const payload = fs.readFileSync(encryptedPath);
184
- let decrypted;
185
- try {
186
- decrypted = decryptBuffer(payload, key);
187
- }
188
- catch (error) {
189
- if (error.code === 'ENCRYPTION_AUTH_FAILED') {
190
- const authError = new Error(`Failed to decrypt chunk ${sha}: authentication failed.`);
191
- authError.code = 'ENCRYPTION_AUTH_FAILED';
192
- authError.cause = error;
193
- throw authError;
194
- }
195
- error.message = `Failed to decrypt chunk ${sha}: ${error.message}`;
196
- throw error;
197
- }
198
- try {
199
- const code = zlib.gunzipSync(decrypted).toString('utf8');
200
- return { code, encrypted: true };
201
- }
202
- catch (error) {
203
- const decompressionError = new Error(`Failed to decompress chunk ${sha}: ${error.message}`);
204
- decompressionError.code = 'CHUNK_DECOMPRESSION_FAILED';
205
- decompressionError.cause = error;
206
- throw decompressionError;
207
- }
208
- }
209
- if (fs.existsSync(plainPath)) {
210
- try {
211
- const compressed = fs.readFileSync(plainPath);
212
- const code = zlib.gunzipSync(compressed).toString('utf8');
213
- return { code, encrypted: false };
214
- }
215
- catch (error) {
216
- const readError = new Error(`Failed to read chunk ${sha}: ${error.message}`);
217
- readError.code = 'CHUNK_READ_FAILED';
218
- readError.cause = error;
219
- throw readError;
220
- }
221
- }
222
- return null;
223
- }
224
- export function removeChunkArtifacts(chunkDir, sha) {
225
- const { plainPath, encryptedPath } = getChunkPaths(chunkDir, sha);
226
- if (fs.existsSync(plainPath)) {
227
- fs.rmSync(plainPath, { force: true });
228
- }
229
- if (fs.existsSync(encryptedPath)) {
230
- fs.rmSync(encryptedPath, { force: true });
231
- }
232
- }
233
- export function isChunkEncryptedOnDisk(chunkDir, sha) {
234
- const { encryptedPath } = getChunkPaths(chunkDir, sha);
235
- return fs.existsSync(encryptedPath);
236
- }
237
- //# sourceMappingURL=encrypted-chunks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"encrypted-chunks.js","sourceRoot":"","sources":["../../src/storage/encrypted-chunks.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import type { TreeSitterNode } from '../types/ast.js';
2
- export interface SymbolMetadata {
3
- signature: string;
4
- parameters: string[];
5
- returnType: string | null;
6
- calls: string[];
7
- keywords: string[];
8
- }
9
- export declare function extractSymbolMetadata({ node, source, symbol }: {
10
- node: TreeSitterNode;
11
- source: string;
12
- symbol: string;
13
- }): SymbolMetadata;
14
- export declare function queryMatchesSignature(query: string, metadata: any): boolean;
15
- //# sourceMappingURL=extract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/symbols/extract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOtD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAuKD,wBAAgB,qBAAqB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IAC9D,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,cAAc,CAgBjB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAyC3E"}