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,57 +0,0 @@
1
- import type { CodevaultConfig, ConfigSource } from './types.js';
2
- /**
3
- * Read global configuration from ~/.codevault/config.json
4
- * @readonly Never modifies files
5
- */
6
- export declare function readGlobalConfig(): CodevaultConfig | null;
7
- /**
8
- * Read project-local configuration from .codevault/config.json
9
- * @readonly Never modifies files
10
- */
11
- export declare function readProjectConfig(basePath?: string): CodevaultConfig | null;
12
- /**
13
- * Read configuration from environment variables
14
- * @readonly Never modifies files or environment
15
- */
16
- export declare function readEnvConfig(): CodevaultConfig;
17
- /**
18
- * Load merged configuration from all sources
19
- * Priority: env > project > global
20
- *
21
- * @readonly Never modifies config files
22
- * @param basePath Project path for project-local config
23
- * @returns Merged configuration (in-memory only)
24
- */
25
- export declare function loadConfig(basePath?: string): CodevaultConfig;
26
- /**
27
- * Get configuration sources for debugging
28
- * @readonly Never modifies files
29
- */
30
- export declare function getConfigSources(basePath?: string): ConfigSource;
31
- /**
32
- * Write global configuration (CLI only)
33
- * This is the ONLY function that writes to disk
34
- */
35
- export declare function saveGlobalConfig(config: CodevaultConfig): void;
36
- /**
37
- * Write project-local configuration (CLI only)
38
- * This is the ONLY function that writes project config
39
- */
40
- export declare function saveProjectConfig(config: CodevaultConfig, basePath?: string): void;
41
- /**
42
- * Check if global config exists
43
- */
44
- export declare function hasGlobalConfig(): boolean;
45
- /**
46
- * Check if project config exists
47
- */
48
- export declare function hasProjectConfig(basePath?: string): boolean;
49
- /**
50
- * Get global config file path
51
- */
52
- export declare function getGlobalConfigPath(): string;
53
- /**
54
- * Get project config file path
55
- */
56
- export declare function getProjectConfigPath(basePath?: string): string;
57
- //# sourceMappingURL=loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAMhE;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,eAAe,GAAG,IAAI,CAWzD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,SAAM,GAAG,eAAe,GAAG,IAAI,CAYxE;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,eAAe,CAqI/C;AAiFD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,QAAQ,SAAM,GAAG,eAAe,CAO1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,SAAM,GAAG,YAAY,CAM7D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAQ9D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,SAAM,GAAG,IAAI,CAW/E;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,SAAM,GAAG,OAAO,CAGxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,SAAM,GAAG,MAAM,CAE3D"}
@@ -1,304 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import os from 'os';
4
- const GLOBAL_CONFIG_DIR = path.join(os.homedir(), '.codevault');
5
- const GLOBAL_CONFIG_FILE = path.join(GLOBAL_CONFIG_DIR, 'config.json');
6
- const PROJECT_CONFIG_FILE = '.codevault/config.json';
7
- /**
8
- * Read global configuration from ~/.codevault/config.json
9
- * @readonly Never modifies files
10
- */
11
- export function readGlobalConfig() {
12
- try {
13
- if (!fs.existsSync(GLOBAL_CONFIG_FILE)) {
14
- return null;
15
- }
16
- const content = fs.readFileSync(GLOBAL_CONFIG_FILE, 'utf8');
17
- return JSON.parse(content);
18
- }
19
- catch (error) {
20
- console.warn(`Warning: Failed to read global config: ${error.message}`);
21
- return null;
22
- }
23
- }
24
- /**
25
- * Read project-local configuration from .codevault/config.json
26
- * @readonly Never modifies files
27
- */
28
- export function readProjectConfig(basePath = '.') {
29
- try {
30
- const configPath = path.join(path.resolve(basePath), PROJECT_CONFIG_FILE);
31
- if (!fs.existsSync(configPath)) {
32
- return null;
33
- }
34
- const content = fs.readFileSync(configPath, 'utf8');
35
- return JSON.parse(content);
36
- }
37
- catch (error) {
38
- console.warn(`Warning: Failed to read project config: ${error.message}`);
39
- return null;
40
- }
41
- }
42
- /**
43
- * Read configuration from environment variables
44
- * @readonly Never modifies files or environment
45
- */
46
- export function readEnvConfig() {
47
- const config = {};
48
- // Provider settings - New variables with backward compatibility
49
- if (process.env.CODEVAULT_EMBEDDING_API_KEY || process.env.OPENAI_API_KEY) {
50
- config.providers = config.providers || {};
51
- config.providers.openai = config.providers.openai || {};
52
- config.providers.openai.apiKey = process.env.CODEVAULT_EMBEDDING_API_KEY || process.env.OPENAI_API_KEY;
53
- }
54
- if (process.env.CODEVAULT_EMBEDDING_BASE_URL || process.env.OPENAI_BASE_URL) {
55
- config.providers = config.providers || {};
56
- config.providers.openai = config.providers.openai || {};
57
- config.providers.openai.baseUrl = process.env.CODEVAULT_EMBEDDING_BASE_URL || process.env.OPENAI_BASE_URL;
58
- }
59
- if (process.env.CODEVAULT_EMBEDDING_MODEL || process.env.CODEVAULT_OPENAI_EMBEDDING_MODEL || process.env.OPENAI_MODEL) {
60
- config.providers = config.providers || {};
61
- config.providers.openai = config.providers.openai || {};
62
- config.providers.openai.model = process.env.CODEVAULT_EMBEDDING_MODEL || process.env.CODEVAULT_OPENAI_EMBEDDING_MODEL || process.env.OPENAI_MODEL;
63
- }
64
- if (process.env.CODEVAULT_OLLAMA_EMBEDDING_MODEL || process.env.CODEVAULT_OLLAMA_MODEL) {
65
- config.providers = config.providers || {};
66
- config.providers.ollama = config.providers.ollama || {};
67
- config.providers.ollama.model = process.env.CODEVAULT_OLLAMA_EMBEDDING_MODEL || process.env.CODEVAULT_OLLAMA_MODEL;
68
- }
69
- // Dimensions - New variable with backward compatibility
70
- if (process.env.CODEVAULT_EMBEDDING_DIMENSIONS || process.env.CODEVAULT_DIMENSIONS) {
71
- const dims = parseInt(process.env.CODEVAULT_EMBEDDING_DIMENSIONS || process.env.CODEVAULT_DIMENSIONS || '0', 10);
72
- if (!isNaN(dims) && dims > 0) {
73
- if (config.providers?.openai) {
74
- config.providers.openai.dimensions = dims;
75
- }
76
- if (config.providers?.ollama) {
77
- config.providers.ollama.dimensions = dims;
78
- }
79
- }
80
- }
81
- // Max tokens - New variable with backward compatibility
82
- if (process.env.CODEVAULT_EMBEDDING_MAX_TOKENS || process.env.CODEVAULT_MAX_TOKENS) {
83
- const tokens = parseInt(process.env.CODEVAULT_EMBEDDING_MAX_TOKENS || process.env.CODEVAULT_MAX_TOKENS || '0', 10);
84
- if (!isNaN(tokens) && tokens > 0) {
85
- config.maxTokens = tokens;
86
- }
87
- }
88
- // Rate limiting - New variables with backward compatibility
89
- if (process.env.CODEVAULT_EMBEDDING_RATE_LIMIT_RPM || process.env.CODEVAULT_RATE_LIMIT_RPM || process.env.CODEVAULT_RATE_LIMIT) {
90
- const rpm = parseInt(process.env.CODEVAULT_EMBEDDING_RATE_LIMIT_RPM || process.env.CODEVAULT_RATE_LIMIT_RPM || process.env.CODEVAULT_RATE_LIMIT || '0', 10);
91
- if (!isNaN(rpm) && rpm > 0) {
92
- config.rateLimit = config.rateLimit || {};
93
- config.rateLimit.rpm = rpm;
94
- }
95
- }
96
- if (process.env.CODEVAULT_EMBEDDING_RATE_LIMIT_TPM || process.env.CODEVAULT_RATE_LIMIT_TPM) {
97
- const tpm = parseInt(process.env.CODEVAULT_EMBEDDING_RATE_LIMIT_TPM || process.env.CODEVAULT_RATE_LIMIT_TPM || '0', 10);
98
- if (!isNaN(tpm) && tpm > 0) {
99
- config.rateLimit = config.rateLimit || {};
100
- config.rateLimit.tpm = tpm;
101
- }
102
- }
103
- // Encryption
104
- if (process.env.CODEVAULT_ENCRYPTION_KEY) {
105
- config.encryption = config.encryption || {};
106
- config.encryption.key = process.env.CODEVAULT_ENCRYPTION_KEY;
107
- config.encryption.enabled = true;
108
- }
109
- // Reranker
110
- if (process.env.CODEVAULT_RERANK_API_URL) {
111
- config.reranker = config.reranker || {};
112
- config.reranker.apiUrl = process.env.CODEVAULT_RERANK_API_URL;
113
- }
114
- if (process.env.CODEVAULT_RERANK_API_KEY) {
115
- config.reranker = config.reranker || {};
116
- config.reranker.apiKey = process.env.CODEVAULT_RERANK_API_KEY;
117
- }
118
- if (process.env.CODEVAULT_RERANK_MODEL) {
119
- config.reranker = config.reranker || {};
120
- config.reranker.model = process.env.CODEVAULT_RERANK_MODEL;
121
- }
122
- // Chat LLM Configuration
123
- if (process.env.CODEVAULT_CHAT_API_KEY || process.env.OPENAI_API_KEY) {
124
- config.chatLLM = config.chatLLM || {};
125
- config.chatLLM.openai = config.chatLLM.openai || {};
126
- config.chatLLM.openai.apiKey = process.env.CODEVAULT_CHAT_API_KEY || process.env.OPENAI_API_KEY;
127
- }
128
- if (process.env.CODEVAULT_CHAT_BASE_URL || process.env.OPENAI_BASE_URL) {
129
- config.chatLLM = config.chatLLM || {};
130
- config.chatLLM.openai = config.chatLLM.openai || {};
131
- config.chatLLM.openai.baseUrl = process.env.CODEVAULT_CHAT_BASE_URL || process.env.OPENAI_BASE_URL;
132
- }
133
- if (process.env.CODEVAULT_CHAT_MODEL || process.env.CODEVAULT_OPENAI_CHAT_MODEL) {
134
- config.chatLLM = config.chatLLM || {};
135
- config.chatLLM.openai = config.chatLLM.openai || {};
136
- config.chatLLM.openai.model = process.env.CODEVAULT_CHAT_MODEL || process.env.CODEVAULT_OPENAI_CHAT_MODEL;
137
- }
138
- if (process.env.CODEVAULT_CHAT_MAX_TOKENS) {
139
- const maxTokens = parseInt(process.env.CODEVAULT_CHAT_MAX_TOKENS, 10);
140
- if (!isNaN(maxTokens) && maxTokens > 0) {
141
- config.chatLLM = config.chatLLM || {};
142
- config.chatLLM.openai = config.chatLLM.openai || {};
143
- config.chatLLM.openai.maxTokens = maxTokens;
144
- }
145
- }
146
- if (process.env.CODEVAULT_CHAT_TEMPERATURE) {
147
- const temperature = parseFloat(process.env.CODEVAULT_CHAT_TEMPERATURE);
148
- if (!isNaN(temperature)) {
149
- config.chatLLM = config.chatLLM || {};
150
- config.chatLLM.openai = config.chatLLM.openai || {};
151
- config.chatLLM.openai.temperature = temperature;
152
- }
153
- }
154
- if (process.env.CODEVAULT_OLLAMA_CHAT_MODEL) {
155
- config.chatLLM = config.chatLLM || {};
156
- config.chatLLM.ollama = config.chatLLM.ollama || {};
157
- config.chatLLM.ollama.model = process.env.CODEVAULT_OLLAMA_CHAT_MODEL;
158
- }
159
- return config;
160
- }
161
- /**
162
- * Deep merge configuration objects
163
- * Later configs override earlier ones
164
- */
165
- function deepMerge(...configs) {
166
- const result = {};
167
- for (const config of configs) {
168
- if (!config)
169
- continue;
170
- if (config.defaultProvider) {
171
- result.defaultProvider = config.defaultProvider;
172
- }
173
- if (config.maxTokens) {
174
- result.maxTokens = config.maxTokens;
175
- }
176
- if (config.providers) {
177
- result.providers = result.providers || {};
178
- if (config.providers.openai) {
179
- result.providers.openai = {
180
- ...result.providers.openai,
181
- ...config.providers.openai
182
- };
183
- }
184
- if (config.providers.ollama) {
185
- result.providers.ollama = {
186
- ...result.providers.ollama,
187
- ...config.providers.ollama
188
- };
189
- }
190
- }
191
- if (config.rateLimit) {
192
- result.rateLimit = {
193
- ...result.rateLimit,
194
- ...config.rateLimit
195
- };
196
- }
197
- if (config.encryption) {
198
- result.encryption = {
199
- ...result.encryption,
200
- ...config.encryption
201
- };
202
- }
203
- if (config.reranker) {
204
- result.reranker = {
205
- ...result.reranker,
206
- ...config.reranker
207
- };
208
- }
209
- if (config.chatLLM) {
210
- result.chatLLM = result.chatLLM || {};
211
- if (config.chatLLM.openai) {
212
- result.chatLLM.openai = {
213
- ...result.chatLLM.openai,
214
- ...config.chatLLM.openai
215
- };
216
- }
217
- if (config.chatLLM.ollama) {
218
- result.chatLLM.ollama = {
219
- ...result.chatLLM.ollama,
220
- ...config.chatLLM.ollama
221
- };
222
- }
223
- }
224
- }
225
- return result;
226
- }
227
- /**
228
- * Load merged configuration from all sources
229
- * Priority: env > project > global
230
- *
231
- * @readonly Never modifies config files
232
- * @param basePath Project path for project-local config
233
- * @returns Merged configuration (in-memory only)
234
- */
235
- export function loadConfig(basePath = '.') {
236
- const global = readGlobalConfig();
237
- const project = readProjectConfig(basePath);
238
- const env = readEnvConfig();
239
- // Merge with priority: env overrides project overrides global
240
- return deepMerge(global, project, env);
241
- }
242
- /**
243
- * Get configuration sources for debugging
244
- * @readonly Never modifies files
245
- */
246
- export function getConfigSources(basePath = '.') {
247
- return {
248
- global: readGlobalConfig(),
249
- project: readProjectConfig(basePath),
250
- env: readEnvConfig()
251
- };
252
- }
253
- /**
254
- * Write global configuration (CLI only)
255
- * This is the ONLY function that writes to disk
256
- */
257
- export function saveGlobalConfig(config) {
258
- // Ensure directory exists
259
- if (!fs.existsSync(GLOBAL_CONFIG_DIR)) {
260
- fs.mkdirSync(GLOBAL_CONFIG_DIR, { recursive: true });
261
- }
262
- // Write config
263
- fs.writeFileSync(GLOBAL_CONFIG_FILE, JSON.stringify(config, null, 2));
264
- }
265
- /**
266
- * Write project-local configuration (CLI only)
267
- * This is the ONLY function that writes project config
268
- */
269
- export function saveProjectConfig(config, basePath = '.') {
270
- const configDir = path.join(path.resolve(basePath), '.codevault');
271
- const configPath = path.join(configDir, 'config.json');
272
- // Ensure directory exists
273
- if (!fs.existsSync(configDir)) {
274
- fs.mkdirSync(configDir, { recursive: true });
275
- }
276
- // Write config
277
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
278
- }
279
- /**
280
- * Check if global config exists
281
- */
282
- export function hasGlobalConfig() {
283
- return fs.existsSync(GLOBAL_CONFIG_FILE);
284
- }
285
- /**
286
- * Check if project config exists
287
- */
288
- export function hasProjectConfig(basePath = '.') {
289
- const configPath = path.join(path.resolve(basePath), PROJECT_CONFIG_FILE);
290
- return fs.existsSync(configPath);
291
- }
292
- /**
293
- * Get global config file path
294
- */
295
- export function getGlobalConfigPath() {
296
- return GLOBAL_CONFIG_FILE;
297
- }
298
- /**
299
- * Get project config file path
300
- */
301
- export function getProjectConfigPath(basePath = '.') {
302
- return path.join(path.resolve(basePath), PROJECT_CONFIG_FILE);
303
- }
304
- //# sourceMappingURL=loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AAChE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;AACvE,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,0CAA2C,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAQ,GAAG,GAAG;IAC9C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC1E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,2CAA4C,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,gEAAgE;IAChE,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC1E,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;QACxD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACzG,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAC5E,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;QACxD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC5G,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACtH,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;QACxD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACpJ,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;QACvF,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;QACxD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACrH,CAAC;IAED,wDAAwD;IACxD,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACnF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QACjH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;gBAC7B,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;YAC5C,CAAC;YACD,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;gBAC7B,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACnF,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QACnH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,IAAI,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QAC/H,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5J,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YAC1C,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;QAC3F,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QACxH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YAC1C,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,aAAa;IACb,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;QACzC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC5C,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;QAC7D,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,WAAW;IACX,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;QACzC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAChE,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;QACzC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAChE,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;QACvC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC7D,CAAC;IAED,yBAAyB;IACzB,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACrE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAClG,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QACvE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACrG,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,CAAC;QAChF,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAC5G,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;QAClD,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,CAAC;QAC5C,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IACxE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,GAAG,OAAmC;IACvD,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAClD,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACtC,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YAE1C,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC5B,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG;oBACxB,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM;oBAC1B,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM;iBAC3B,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC5B,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG;oBACxB,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM;oBAC1B,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM;iBAC3B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,CAAC,SAAS,GAAG;gBACjB,GAAG,MAAM,CAAC,SAAS;gBACnB,GAAG,MAAM,CAAC,SAAS;aACpB,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,MAAM,CAAC,UAAU,GAAG;gBAClB,GAAG,MAAM,CAAC,UAAU;gBACpB,GAAG,MAAM,CAAC,UAAU;aACrB,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,CAAC,QAAQ,GAAG;gBAChB,GAAG,MAAM,CAAC,QAAQ;gBAClB,GAAG,MAAM,CAAC,QAAQ;aACnB,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YAEtC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG;oBACtB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;oBACxB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;iBACzB,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG;oBACtB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;oBACxB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;iBACzB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,QAAQ,GAAG,GAAG;IACvC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAE5B,8DAA8D;IAC9D,OAAO,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAQ,GAAG,GAAG;IAC7C,OAAO;QACL,MAAM,EAAE,gBAAgB,EAAE;QAC1B,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC;QACpC,GAAG,EAAE,aAAa,EAAE;KACrB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAuB;IACtD,0BAA0B;IAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACtC,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,eAAe;IACf,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAuB,EAAE,QAAQ,GAAG,GAAG;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAEvD,0BAA0B;IAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,eAAe;IACf,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAQ,GAAG,GAAG;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAC1E,OAAO,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAQ,GAAG,GAAG;IACjD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAChE,CAAC"}
@@ -1,48 +0,0 @@
1
- export interface ProviderConfig {
2
- apiKey?: string;
3
- model?: string;
4
- baseUrl?: string;
5
- dimensions?: number;
6
- }
7
- export interface RateLimitConfig {
8
- rpm?: number;
9
- tpm?: number;
10
- }
11
- export interface EncryptionConfig {
12
- enabled?: boolean;
13
- key?: string;
14
- }
15
- export interface ChatLLMConfig {
16
- apiKey?: string;
17
- baseUrl?: string;
18
- model?: string;
19
- maxTokens?: number;
20
- temperature?: number;
21
- }
22
- export interface CodevaultConfig {
23
- defaultProvider?: string;
24
- providers?: {
25
- openai?: ProviderConfig;
26
- ollama?: ProviderConfig;
27
- };
28
- chatLLM?: {
29
- openai?: ChatLLMConfig;
30
- ollama?: ChatLLMConfig;
31
- };
32
- rateLimit?: RateLimitConfig;
33
- encryption?: EncryptionConfig;
34
- maxTokens?: number;
35
- reranker?: {
36
- apiUrl?: string;
37
- apiKey?: string;
38
- model?: string;
39
- maxCandidates?: number;
40
- maxTokens?: number;
41
- };
42
- }
43
- export interface ConfigSource {
44
- global: CodevaultConfig | null;
45
- project: CodevaultConfig | null;
46
- env: CodevaultConfig;
47
- }
48
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,cAAc,CAAC;KACzB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,MAAM,CAAC,EAAE,aAAa,CAAC;KACxB,CAAC;IACF,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,GAAG,EAAE,eAAe,CAAC;CACtB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":""}
@@ -1,33 +0,0 @@
1
- import type { ScopeFilters } from '../types/search.js';
2
- interface PackInfo {
3
- key: string;
4
- name: string;
5
- description: string | null;
6
- scope: Record<string, any>;
7
- path: string;
8
- invalid?: boolean;
9
- }
10
- interface SessionPack extends PackInfo {
11
- basePath: string;
12
- }
13
- export declare function getContextPackDirectory(basePath?: string): string;
14
- export declare function loadContextPack(name: string, basePath?: string): PackInfo;
15
- export declare function listContextPacks(basePath?: string): PackInfo[];
16
- export declare function getActiveContextPack(basePath?: string): (PackInfo & {
17
- appliedAt: string | null;
18
- }) | null;
19
- export declare function setActiveContextPack(name: string, basePath?: string): PackInfo;
20
- export declare function resolveScopeWithPack(overrides?: any, options?: {
21
- basePath?: string;
22
- sessionPack?: SessionPack | null;
23
- }): {
24
- scope: ScopeFilters;
25
- pack: {
26
- key: string;
27
- name: string;
28
- description: string | null;
29
- } | null;
30
- };
31
- export declare function clearContextPackCache(): void;
32
- export {};
33
- //# sourceMappingURL=packs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"packs.d.ts","sourceRoot":"","sources":["../../src/context/packs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMvD,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,WAAY,SAAQ,QAAQ;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAgED,wBAAgB,uBAAuB,CAAC,QAAQ,SAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,QAAQ,CA0BtE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,SAAM,GAAG,QAAQ,EAAE,CA2B3D;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,SAAM,GAAG,CAAC,QAAQ,GAAG;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,GAAG,IAAI,CAyBrG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,QAAQ,CAW3E;AAED,wBAAgB,oBAAoB,CAClC,SAAS,GAAE,GAAQ,EACnB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAO,GACpE;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;CAAE,CAuCjG;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
@@ -1,180 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { ContextPackSchema, extractScopeFromPackDefinition } from '../types/context-pack.js';
4
- import { normalizeScopeFilters } from '../search/scope.js';
5
- const CONTEXT_PACK_DIR = '.codevault/contextpacks';
6
- const ACTIVE_STATE_FILENAME = 'active-pack.json';
7
- const PACK_SCOPE_KEYS = ['path_glob', 'tags', 'lang', 'provider', 'reranker', 'hybrid', 'bm25', 'symbol_boost'];
8
- const packCache = new Map();
9
- function resolveBasePath(basePath = '.') {
10
- return path.resolve(basePath || '.');
11
- }
12
- function getPackDir(basePath = '.') {
13
- return path.join(resolveBasePath(basePath), CONTEXT_PACK_DIR);
14
- }
15
- function getStatePath(basePath = '.') {
16
- return path.join(getPackDir(basePath), ACTIVE_STATE_FILENAME);
17
- }
18
- function ensurePackDir(basePath = '.') {
19
- const dir = getPackDir(basePath);
20
- if (!fs.existsSync(dir)) {
21
- fs.mkdirSync(dir, { recursive: true });
22
- }
23
- return dir;
24
- }
25
- function buildCacheKey(filePath) {
26
- return path.resolve(filePath);
27
- }
28
- function readJsonFile(filePath) {
29
- const content = fs.readFileSync(filePath, 'utf8');
30
- try {
31
- return JSON.parse(content);
32
- }
33
- catch (error) {
34
- throw new Error(`Invalid JSON in context pack ${path.basename(filePath)}: ${error.message}`);
35
- }
36
- }
37
- function toContextPackObject(key, filePath, data) {
38
- const parsed = ContextPackSchema.parse(data);
39
- const scope = extractScopeFromPackDefinition(parsed);
40
- const packName = typeof parsed.name === 'string' && parsed.name.trim().length > 0
41
- ? parsed.name.trim()
42
- : key;
43
- const description = typeof parsed.description === 'string' && parsed.description.trim().length > 0
44
- ? parsed.description.trim()
45
- : undefined;
46
- const scopeDefinition = {};
47
- for (const scopeKey of PACK_SCOPE_KEYS) {
48
- if (Object.prototype.hasOwnProperty.call(scope, scopeKey) && typeof scope[scopeKey] !== 'undefined') {
49
- scopeDefinition[scopeKey] = scope[scopeKey];
50
- }
51
- }
52
- return {
53
- key,
54
- name: packName,
55
- description: description || null,
56
- scope: scopeDefinition,
57
- path: filePath
58
- };
59
- }
60
- export function getContextPackDirectory(basePath = '.') {
61
- return getPackDir(basePath);
62
- }
63
- export function loadContextPack(name, basePath = '.') {
64
- if (!name || typeof name !== 'string') {
65
- throw new Error('Context pack name must be a non-empty string');
66
- }
67
- const packDir = getPackDir(basePath);
68
- const fileName = `${name}.json`;
69
- const filePath = path.join(packDir, fileName);
70
- if (!fs.existsSync(filePath)) {
71
- throw new Error(`Context pack "${name}" not found in ${packDir}`);
72
- }
73
- const stats = fs.statSync(filePath);
74
- const cacheKey = buildCacheKey(filePath);
75
- const cached = packCache.get(cacheKey);
76
- if (cached && cached.mtimeMs === stats.mtimeMs) {
77
- return cached.pack;
78
- }
79
- const rawData = readJsonFile(filePath);
80
- const pack = toContextPackObject(name, filePath, rawData);
81
- packCache.set(cacheKey, { pack, mtimeMs: stats.mtimeMs });
82
- return pack;
83
- }
84
- export function listContextPacks(basePath = '.') {
85
- const packDir = getPackDir(basePath);
86
- if (!fs.existsSync(packDir)) {
87
- return [];
88
- }
89
- const files = fs.readdirSync(packDir).filter(file => file.endsWith('.json'));
90
- const packs = [];
91
- for (const file of files) {
92
- const key = path.basename(file, '.json');
93
- try {
94
- const pack = loadContextPack(key, basePath);
95
- packs.push(pack);
96
- }
97
- catch (error) {
98
- packs.push({
99
- key,
100
- name: key,
101
- description: `Invalid pack: ${error.message}`,
102
- scope: {},
103
- path: path.join(packDir, file),
104
- invalid: true
105
- });
106
- }
107
- }
108
- return packs;
109
- }
110
- export function getActiveContextPack(basePath = '.') {
111
- const statePath = getStatePath(basePath);
112
- if (!fs.existsSync(statePath)) {
113
- return null;
114
- }
115
- try {
116
- const rawState = readJsonFile(statePath);
117
- if (!rawState || typeof rawState !== 'object') {
118
- return null;
119
- }
120
- const key = typeof rawState.key === 'string' ? rawState.key : null;
121
- if (!key) {
122
- return null;
123
- }
124
- const pack = loadContextPack(key, basePath);
125
- return {
126
- ...pack,
127
- appliedAt: rawState.appliedAt || null
128
- };
129
- }
130
- catch (error) {
131
- return null;
132
- }
133
- }
134
- export function setActiveContextPack(name, basePath = '.') {
135
- const pack = loadContextPack(name, basePath);
136
- const dir = ensurePackDir(basePath);
137
- const statePath = path.join(dir, ACTIVE_STATE_FILENAME);
138
- const state = {
139
- key: pack.key,
140
- appliedAt: new Date().toISOString()
141
- };
142
- fs.writeFileSync(statePath, JSON.stringify(state, null, 2));
143
- return pack;
144
- }
145
- export function resolveScopeWithPack(overrides = {}, options = {}) {
146
- const basePath = options.basePath || '.';
147
- const sessionPack = options.sessionPack || null;
148
- let basePack = null;
149
- const resolvedBasePath = resolveBasePath(basePath);
150
- if (sessionPack && sessionPack.scope) {
151
- if (!sessionPack.basePath || resolveBasePath(sessionPack.basePath) === resolvedBasePath) {
152
- basePack = sessionPack;
153
- }
154
- }
155
- if (!basePack) {
156
- basePack = getActiveContextPack(basePath);
157
- }
158
- const combined = {};
159
- if (basePack && basePack.scope) {
160
- for (const key of PACK_SCOPE_KEYS) {
161
- if (Object.prototype.hasOwnProperty.call(basePack.scope, key)) {
162
- combined[key] = basePack.scope[key];
163
- }
164
- }
165
- }
166
- for (const key of PACK_SCOPE_KEYS) {
167
- if (Object.prototype.hasOwnProperty.call(overrides, key) && typeof overrides[key] !== 'undefined') {
168
- combined[key] = overrides[key];
169
- }
170
- }
171
- const scope = normalizeScopeFilters(combined);
172
- const packInfo = basePack
173
- ? { key: basePack.key, name: basePack.name, description: basePack.description || null }
174
- : null;
175
- return { scope, pack: packInfo };
176
- }
177
- export function clearContextPackCache() {
178
- packCache.clear();
179
- }
180
- //# sourceMappingURL=packs.js.map