codevault 1.6.0 → 1.6.1

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 (237) hide show
  1. package/dist/chunking/file-grouper.d.ts +39 -0
  2. package/dist/chunking/file-grouper.d.ts.map +1 -0
  3. package/dist/chunking/file-grouper.js +164 -0
  4. package/dist/chunking/file-grouper.js.map +1 -0
  5. package/dist/chunking/semantic-chunker.d.ts +37 -0
  6. package/dist/chunking/semantic-chunker.d.ts.map +1 -0
  7. package/dist/chunking/semantic-chunker.js +157 -0
  8. package/dist/chunking/semantic-chunker.js.map +1 -0
  9. package/dist/chunking/token-counter.d.ts +28 -0
  10. package/dist/chunking/token-counter.d.ts.map +1 -0
  11. package/dist/chunking/token-counter.js +207 -0
  12. package/dist/chunking/token-counter.js.map +1 -0
  13. package/dist/cli/commands/ask-cmd.d.ts +3 -0
  14. package/dist/cli/commands/ask-cmd.d.ts.map +1 -0
  15. package/dist/cli/commands/ask-cmd.js +130 -0
  16. package/dist/cli/commands/ask-cmd.js.map +1 -0
  17. package/dist/cli/commands/chat-cmd.d.ts +3 -0
  18. package/dist/cli/commands/chat-cmd.d.ts.map +1 -0
  19. package/dist/cli/commands/chat-cmd.js +194 -0
  20. package/dist/cli/commands/chat-cmd.js.map +1 -0
  21. package/dist/cli/commands/config-cmd.d.ts +3 -0
  22. package/dist/cli/commands/config-cmd.d.ts.map +1 -0
  23. package/dist/cli/commands/config-cmd.js +245 -0
  24. package/dist/cli/commands/config-cmd.js.map +1 -0
  25. package/dist/cli/commands/context.d.ts +3 -0
  26. package/dist/cli/commands/context.d.ts.map +1 -0
  27. package/dist/cli/commands/context.js +98 -0
  28. package/dist/cli/commands/context.js.map +1 -0
  29. package/dist/cli/commands/interactive-config.d.ts +2 -0
  30. package/dist/cli/commands/interactive-config.d.ts.map +1 -0
  31. package/dist/cli/commands/interactive-config.js +274 -0
  32. package/dist/cli/commands/interactive-config.js.map +1 -0
  33. package/dist/cli.d.ts +3 -0
  34. package/dist/cli.d.ts.map +1 -0
  35. package/dist/cli.js +403 -0
  36. package/dist/cli.js.map +1 -0
  37. package/dist/codemap/io.d.ts +5 -0
  38. package/dist/codemap/io.d.ts.map +1 -0
  39. package/dist/codemap/io.js +30 -0
  40. package/dist/codemap/io.js.map +1 -0
  41. package/dist/config/apply-env.d.ts +15 -0
  42. package/dist/config/apply-env.d.ts.map +1 -0
  43. package/dist/config/apply-env.js +91 -0
  44. package/dist/config/apply-env.js.map +1 -0
  45. package/dist/config/constants.d.ts +326 -0
  46. package/dist/config/constants.d.ts.map +1 -0
  47. package/dist/config/constants.js +214 -0
  48. package/dist/config/constants.js.map +1 -0
  49. package/dist/config/loader.d.ts +57 -0
  50. package/dist/config/loader.d.ts.map +1 -0
  51. package/dist/config/loader.js +287 -0
  52. package/dist/config/loader.js.map +1 -0
  53. package/dist/config/types.d.ts +46 -0
  54. package/dist/config/types.d.ts.map +1 -0
  55. package/dist/config/types.js +2 -0
  56. package/dist/config/types.js.map +1 -0
  57. package/dist/context/packs.d.ts +33 -0
  58. package/dist/context/packs.d.ts.map +1 -0
  59. package/dist/context/packs.js +180 -0
  60. package/dist/context/packs.js.map +1 -0
  61. package/dist/core/batch-indexer.d.ts +56 -0
  62. package/dist/core/batch-indexer.d.ts.map +1 -0
  63. package/dist/core/batch-indexer.js +189 -0
  64. package/dist/core/batch-indexer.js.map +1 -0
  65. package/dist/core/indexer.d.ts +3 -0
  66. package/dist/core/indexer.d.ts.map +1 -0
  67. package/dist/core/indexer.js +600 -0
  68. package/dist/core/indexer.js.map +1 -0
  69. package/dist/core/metadata.d.ts +19 -0
  70. package/dist/core/metadata.d.ts.map +1 -0
  71. package/dist/core/metadata.js +161 -0
  72. package/dist/core/metadata.js.map +1 -0
  73. package/dist/core/search.d.ts +7 -0
  74. package/dist/core/search.d.ts.map +1 -0
  75. package/dist/core/search.js +545 -0
  76. package/dist/core/search.js.map +1 -0
  77. package/dist/core/symbol-extractor.d.ts +3 -0
  78. package/dist/core/symbol-extractor.d.ts.map +1 -0
  79. package/dist/core/symbol-extractor.js +78 -0
  80. package/dist/core/symbol-extractor.js.map +1 -0
  81. package/dist/core/types.d.ts +104 -0
  82. package/dist/core/types.d.ts.map +1 -0
  83. package/dist/core/types.js +2 -0
  84. package/dist/core/types.js.map +1 -0
  85. package/dist/database/db.d.ts +102 -0
  86. package/dist/database/db.d.ts.map +1 -0
  87. package/dist/database/db.js +366 -0
  88. package/dist/database/db.js.map +1 -0
  89. package/dist/indexer/merkle.d.ts +13 -0
  90. package/dist/indexer/merkle.d.ts.map +1 -0
  91. package/dist/indexer/merkle.js +86 -0
  92. package/dist/indexer/merkle.js.map +1 -0
  93. package/dist/indexer/update.d.ts +19 -0
  94. package/dist/indexer/update.d.ts.map +1 -0
  95. package/dist/indexer/update.js +40 -0
  96. package/dist/indexer/update.js.map +1 -0
  97. package/dist/indexer/watch.d.ts +21 -0
  98. package/dist/indexer/watch.d.ts.map +1 -0
  99. package/dist/indexer/watch.js +222 -0
  100. package/dist/indexer/watch.js.map +1 -0
  101. package/dist/languages/rules.d.ts +11 -0
  102. package/dist/languages/rules.d.ts.map +1 -0
  103. package/dist/languages/rules.js +371 -0
  104. package/dist/languages/rules.js.map +1 -0
  105. package/dist/languages/tree-sitter-loader.d.ts +27 -0
  106. package/dist/languages/tree-sitter-loader.d.ts.map +1 -0
  107. package/dist/languages/tree-sitter-loader.js +76 -0
  108. package/dist/languages/tree-sitter-loader.js.map +1 -0
  109. package/dist/mcp/schemas.d.ts +166 -0
  110. package/dist/mcp/schemas.d.ts.map +1 -0
  111. package/dist/mcp/schemas.js +159 -0
  112. package/dist/mcp/schemas.js.map +1 -0
  113. package/dist/mcp/tools/ask-codebase.d.ts +85 -0
  114. package/dist/mcp/tools/ask-codebase.d.ts.map +1 -0
  115. package/dist/mcp/tools/ask-codebase.js +125 -0
  116. package/dist/mcp/tools/ask-codebase.js.map +1 -0
  117. package/dist/mcp/tools/use-context-pack.d.ts +57 -0
  118. package/dist/mcp/tools/use-context-pack.d.ts.map +1 -0
  119. package/dist/mcp/tools/use-context-pack.js +91 -0
  120. package/dist/mcp/tools/use-context-pack.js.map +1 -0
  121. package/dist/mcp-server.d.ts +3 -0
  122. package/dist/mcp-server.d.ts.map +1 -0
  123. package/dist/mcp-server.js +511 -0
  124. package/dist/mcp-server.js.map +1 -0
  125. package/dist/providers/base.d.ts +39 -0
  126. package/dist/providers/base.d.ts.map +1 -0
  127. package/dist/providers/base.js +198 -0
  128. package/dist/providers/base.js.map +1 -0
  129. package/dist/providers/chat-llm.d.ts +30 -0
  130. package/dist/providers/chat-llm.d.ts.map +1 -0
  131. package/dist/providers/chat-llm.js +85 -0
  132. package/dist/providers/chat-llm.js.map +1 -0
  133. package/dist/providers/index.d.ts +5 -0
  134. package/dist/providers/index.d.ts.map +1 -0
  135. package/dist/providers/index.js +12 -0
  136. package/dist/providers/index.js.map +1 -0
  137. package/dist/providers/openai.d.ts +14 -0
  138. package/dist/providers/openai.d.ts.map +1 -0
  139. package/dist/providers/openai.js +122 -0
  140. package/dist/providers/openai.js.map +1 -0
  141. package/dist/providers/token-counter.d.ts +2 -0
  142. package/dist/providers/token-counter.d.ts.map +1 -0
  143. package/dist/providers/token-counter.js +18 -0
  144. package/dist/providers/token-counter.js.map +1 -0
  145. package/dist/ranking/api-reranker.d.ts +18 -0
  146. package/dist/ranking/api-reranker.d.ts.map +1 -0
  147. package/dist/ranking/api-reranker.js +134 -0
  148. package/dist/ranking/api-reranker.js.map +1 -0
  149. package/dist/ranking/symbol-boost.d.ts +15 -0
  150. package/dist/ranking/symbol-boost.d.ts.map +1 -0
  151. package/dist/ranking/symbol-boost.js +175 -0
  152. package/dist/ranking/symbol-boost.js.map +1 -0
  153. package/dist/search/bm25.d.ts +17 -0
  154. package/dist/search/bm25.d.ts.map +1 -0
  155. package/dist/search/bm25.js +56 -0
  156. package/dist/search/bm25.js.map +1 -0
  157. package/dist/search/hybrid.d.ts +21 -0
  158. package/dist/search/hybrid.d.ts.map +1 -0
  159. package/dist/search/hybrid.js +50 -0
  160. package/dist/search/hybrid.js.map +1 -0
  161. package/dist/search/scope.d.ts +5 -0
  162. package/dist/search/scope.d.ts.map +1 -0
  163. package/dist/search/scope.js +107 -0
  164. package/dist/search/scope.js.map +1 -0
  165. package/dist/storage/encrypted-chunks.d.ts +40 -0
  166. package/dist/storage/encrypted-chunks.d.ts.map +1 -0
  167. package/dist/storage/encrypted-chunks.js +238 -0
  168. package/dist/storage/encrypted-chunks.js.map +1 -0
  169. package/dist/symbols/extract.d.ts +15 -0
  170. package/dist/symbols/extract.d.ts.map +1 -0
  171. package/dist/symbols/extract.js +208 -0
  172. package/dist/symbols/extract.js.map +1 -0
  173. package/dist/symbols/graph.d.ts +3 -0
  174. package/dist/symbols/graph.d.ts.map +1 -0
  175. package/dist/symbols/graph.js +89 -0
  176. package/dist/symbols/graph.js.map +1 -0
  177. package/dist/synthesis/conversational-synthesizer.d.ts +61 -0
  178. package/dist/synthesis/conversational-synthesizer.d.ts.map +1 -0
  179. package/dist/synthesis/conversational-synthesizer.js +286 -0
  180. package/dist/synthesis/conversational-synthesizer.js.map +1 -0
  181. package/dist/synthesis/markdown-formatter.d.ts +13 -0
  182. package/dist/synthesis/markdown-formatter.d.ts.map +1 -0
  183. package/dist/synthesis/markdown-formatter.js +104 -0
  184. package/dist/synthesis/markdown-formatter.js.map +1 -0
  185. package/dist/synthesis/prompt-builder.d.ts +21 -0
  186. package/dist/synthesis/prompt-builder.d.ts.map +1 -0
  187. package/dist/synthesis/prompt-builder.js +129 -0
  188. package/dist/synthesis/prompt-builder.js.map +1 -0
  189. package/dist/synthesis/synthesizer.d.ts +30 -0
  190. package/dist/synthesis/synthesizer.d.ts.map +1 -0
  191. package/dist/synthesis/synthesizer.js +210 -0
  192. package/dist/synthesis/synthesizer.js.map +1 -0
  193. package/dist/types/ast.d.ts +3 -0
  194. package/dist/types/ast.d.ts.map +1 -0
  195. package/dist/types/ast.js +2 -0
  196. package/dist/types/ast.js.map +1 -0
  197. package/dist/types/codemap.d.ts +58 -0
  198. package/dist/types/codemap.d.ts.map +1 -0
  199. package/dist/types/codemap.js +224 -0
  200. package/dist/types/codemap.js.map +1 -0
  201. package/dist/types/context-pack.d.ts +47 -0
  202. package/dist/types/context-pack.d.ts.map +1 -0
  203. package/dist/types/context-pack.js +44 -0
  204. package/dist/types/context-pack.js.map +1 -0
  205. package/dist/types/search.d.ts +15 -0
  206. package/dist/types/search.d.ts.map +1 -0
  207. package/dist/types/search.js +11 -0
  208. package/dist/types/search.js.map +1 -0
  209. package/dist/utils/cli-ui.d.ts +44 -0
  210. package/dist/utils/cli-ui.d.ts.map +1 -0
  211. package/dist/utils/cli-ui.js +139 -0
  212. package/dist/utils/cli-ui.js.map +1 -0
  213. package/dist/utils/indexer-with-progress.d.ts +10 -0
  214. package/dist/utils/indexer-with-progress.d.ts.map +1 -0
  215. package/dist/utils/indexer-with-progress.js +43 -0
  216. package/dist/utils/indexer-with-progress.js.map +1 -0
  217. package/dist/utils/logger.d.ts +55 -0
  218. package/dist/utils/logger.d.ts.map +1 -0
  219. package/dist/utils/logger.js +121 -0
  220. package/dist/utils/logger.js.map +1 -0
  221. package/dist/utils/mutex.d.ts +63 -0
  222. package/dist/utils/mutex.d.ts.map +1 -0
  223. package/dist/utils/mutex.js +123 -0
  224. package/dist/utils/mutex.js.map +1 -0
  225. package/dist/utils/path-helpers.d.ts +27 -0
  226. package/dist/utils/path-helpers.d.ts.map +1 -0
  227. package/dist/utils/path-helpers.js +55 -0
  228. package/dist/utils/path-helpers.js.map +1 -0
  229. package/dist/utils/rate-limiter.d.ts +34 -0
  230. package/dist/utils/rate-limiter.d.ts.map +1 -0
  231. package/dist/utils/rate-limiter.js +178 -0
  232. package/dist/utils/rate-limiter.js.map +1 -0
  233. package/dist/utils/scan-patterns.d.ts +5 -0
  234. package/dist/utils/scan-patterns.d.ts.map +1 -0
  235. package/dist/utils/scan-patterns.js +29 -0
  236. package/dist/utils/scan-patterns.js.map +1 -0
  237. package/package.json +1 -1
@@ -0,0 +1,287 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ import { log } from '../utils/logger.js';
5
+ const GLOBAL_CONFIG_DIR = path.join(os.homedir(), '.codevault');
6
+ const GLOBAL_CONFIG_FILE = path.join(GLOBAL_CONFIG_DIR, 'config.json');
7
+ const PROJECT_CONFIG_FILE = '.codevault/config.json';
8
+ /**
9
+ * Read global configuration from ~/.codevault/config.json
10
+ * @readonly Never modifies files
11
+ */
12
+ export function readGlobalConfig() {
13
+ try {
14
+ if (!fs.existsSync(GLOBAL_CONFIG_FILE)) {
15
+ return null;
16
+ }
17
+ const content = fs.readFileSync(GLOBAL_CONFIG_FILE, 'utf8');
18
+ return JSON.parse(content);
19
+ }
20
+ catch (error) {
21
+ log.warn('Failed to read global config', { error, path: GLOBAL_CONFIG_FILE });
22
+ return null;
23
+ }
24
+ }
25
+ /**
26
+ * Read project-local configuration from .codevault/config.json
27
+ * @readonly Never modifies files
28
+ */
29
+ export function readProjectConfig(basePath = '.') {
30
+ try {
31
+ const configPath = path.join(path.resolve(basePath), PROJECT_CONFIG_FILE);
32
+ if (!fs.existsSync(configPath)) {
33
+ return null;
34
+ }
35
+ const content = fs.readFileSync(configPath, 'utf8');
36
+ return JSON.parse(content);
37
+ }
38
+ catch (error) {
39
+ const configPath = path.join(path.resolve(basePath), PROJECT_CONFIG_FILE);
40
+ log.warn('Failed to read project config', { error, path: configPath, basePath });
41
+ return null;
42
+ }
43
+ }
44
+ /**
45
+ * Read configuration from environment variables
46
+ * @readonly Never modifies files or environment
47
+ */
48
+ export function readEnvConfig() {
49
+ const config = {};
50
+ // Provider settings - New variables with backward compatibility
51
+ if (process.env.CODEVAULT_EMBEDDING_API_KEY || process.env.OPENAI_API_KEY) {
52
+ config.providers = config.providers || {};
53
+ config.providers.openai = config.providers.openai || {};
54
+ config.providers.openai.apiKey = process.env.CODEVAULT_EMBEDDING_API_KEY || process.env.OPENAI_API_KEY;
55
+ }
56
+ if (process.env.CODEVAULT_EMBEDDING_BASE_URL || process.env.OPENAI_BASE_URL) {
57
+ config.providers = config.providers || {};
58
+ config.providers.openai = config.providers.openai || {};
59
+ config.providers.openai.baseUrl = process.env.CODEVAULT_EMBEDDING_BASE_URL || process.env.OPENAI_BASE_URL;
60
+ }
61
+ if (process.env.CODEVAULT_EMBEDDING_MODEL || process.env.CODEVAULT_OPENAI_EMBEDDING_MODEL || process.env.OPENAI_MODEL) {
62
+ config.providers = config.providers || {};
63
+ config.providers.openai = config.providers.openai || {};
64
+ config.providers.openai.model = process.env.CODEVAULT_EMBEDDING_MODEL || process.env.CODEVAULT_OPENAI_EMBEDDING_MODEL || process.env.OPENAI_MODEL;
65
+ }
66
+ // Dimensions - New variable with backward compatibility
67
+ if (process.env.CODEVAULT_EMBEDDING_DIMENSIONS || process.env.CODEVAULT_DIMENSIONS) {
68
+ const dims = parseInt(process.env.CODEVAULT_EMBEDDING_DIMENSIONS || process.env.CODEVAULT_DIMENSIONS || '0', 10);
69
+ if (!isNaN(dims) && dims > 0) {
70
+ if (config.providers?.openai) {
71
+ config.providers.openai.dimensions = dims;
72
+ }
73
+ }
74
+ }
75
+ // Max tokens - New variable with backward compatibility
76
+ if (process.env.CODEVAULT_EMBEDDING_MAX_TOKENS || process.env.CODEVAULT_MAX_TOKENS) {
77
+ const tokens = parseInt(process.env.CODEVAULT_EMBEDDING_MAX_TOKENS || process.env.CODEVAULT_MAX_TOKENS || '0', 10);
78
+ if (!isNaN(tokens) && tokens > 0) {
79
+ config.maxTokens = tokens;
80
+ }
81
+ }
82
+ // Rate limiting - New variables with backward compatibility
83
+ if (process.env.CODEVAULT_EMBEDDING_RATE_LIMIT_RPM || process.env.CODEVAULT_RATE_LIMIT_RPM || process.env.CODEVAULT_RATE_LIMIT) {
84
+ const rpm = parseInt(process.env.CODEVAULT_EMBEDDING_RATE_LIMIT_RPM || process.env.CODEVAULT_RATE_LIMIT_RPM || process.env.CODEVAULT_RATE_LIMIT || '0', 10);
85
+ if (!isNaN(rpm) && rpm > 0) {
86
+ config.rateLimit = config.rateLimit || {};
87
+ config.rateLimit.rpm = rpm;
88
+ }
89
+ }
90
+ if (process.env.CODEVAULT_EMBEDDING_RATE_LIMIT_TPM || process.env.CODEVAULT_RATE_LIMIT_TPM) {
91
+ const tpm = parseInt(process.env.CODEVAULT_EMBEDDING_RATE_LIMIT_TPM || process.env.CODEVAULT_RATE_LIMIT_TPM || '0', 10);
92
+ if (!isNaN(tpm) && tpm > 0) {
93
+ config.rateLimit = config.rateLimit || {};
94
+ config.rateLimit.tpm = tpm;
95
+ }
96
+ }
97
+ // Encryption
98
+ if (process.env.CODEVAULT_ENCRYPTION_KEY) {
99
+ config.encryption = config.encryption || {};
100
+ config.encryption.key = process.env.CODEVAULT_ENCRYPTION_KEY;
101
+ config.encryption.enabled = true;
102
+ }
103
+ // Reranker
104
+ if (process.env.CODEVAULT_RERANK_API_URL) {
105
+ config.reranker = config.reranker || {};
106
+ config.reranker.apiUrl = process.env.CODEVAULT_RERANK_API_URL;
107
+ }
108
+ if (process.env.CODEVAULT_RERANK_API_KEY) {
109
+ config.reranker = config.reranker || {};
110
+ config.reranker.apiKey = process.env.CODEVAULT_RERANK_API_KEY;
111
+ }
112
+ if (process.env.CODEVAULT_RERANK_MODEL) {
113
+ config.reranker = config.reranker || {};
114
+ config.reranker.model = process.env.CODEVAULT_RERANK_MODEL;
115
+ }
116
+ // Chat LLM Configuration
117
+ if (process.env.CODEVAULT_CHAT_API_KEY || process.env.OPENAI_API_KEY) {
118
+ config.chatLLM = config.chatLLM || {};
119
+ config.chatLLM.openai = config.chatLLM.openai || {};
120
+ config.chatLLM.openai.apiKey = process.env.CODEVAULT_CHAT_API_KEY || process.env.OPENAI_API_KEY;
121
+ }
122
+ if (process.env.CODEVAULT_CHAT_BASE_URL || process.env.OPENAI_BASE_URL) {
123
+ config.chatLLM = config.chatLLM || {};
124
+ config.chatLLM.openai = config.chatLLM.openai || {};
125
+ config.chatLLM.openai.baseUrl = process.env.CODEVAULT_CHAT_BASE_URL || process.env.OPENAI_BASE_URL;
126
+ }
127
+ if (process.env.CODEVAULT_CHAT_MODEL || process.env.CODEVAULT_OPENAI_CHAT_MODEL) {
128
+ config.chatLLM = config.chatLLM || {};
129
+ config.chatLLM.openai = config.chatLLM.openai || {};
130
+ config.chatLLM.openai.model = process.env.CODEVAULT_CHAT_MODEL || process.env.CODEVAULT_OPENAI_CHAT_MODEL;
131
+ }
132
+ if (process.env.CODEVAULT_CHAT_MAX_TOKENS) {
133
+ const maxTokens = parseInt(process.env.CODEVAULT_CHAT_MAX_TOKENS, 10);
134
+ if (!isNaN(maxTokens) && maxTokens > 0) {
135
+ config.chatLLM = config.chatLLM || {};
136
+ config.chatLLM.openai = config.chatLLM.openai || {};
137
+ // Cap at 32K to prevent unreasonable values
138
+ config.chatLLM.openai.maxTokens = Math.min(maxTokens, 64000);
139
+ }
140
+ }
141
+ if (process.env.CODEVAULT_CHAT_TEMPERATURE) {
142
+ const temperature = parseFloat(process.env.CODEVAULT_CHAT_TEMPERATURE);
143
+ if (!isNaN(temperature)) {
144
+ config.chatLLM = config.chatLLM || {};
145
+ config.chatLLM.openai = config.chatLLM.openai || {};
146
+ config.chatLLM.openai.temperature = temperature;
147
+ }
148
+ }
149
+ return config;
150
+ }
151
+ /**
152
+ * Deep merge configuration objects
153
+ * Later configs override earlier ones
154
+ */
155
+ function deepMerge(...configs) {
156
+ const result = {};
157
+ for (const config of configs) {
158
+ if (!config)
159
+ continue;
160
+ if (config.defaultProvider) {
161
+ result.defaultProvider = config.defaultProvider;
162
+ }
163
+ if (config.maxTokens) {
164
+ result.maxTokens = config.maxTokens;
165
+ }
166
+ if (config.providers) {
167
+ result.providers = result.providers || {};
168
+ if (config.providers.openai) {
169
+ result.providers.openai = {
170
+ ...result.providers.openai,
171
+ ...config.providers.openai
172
+ };
173
+ }
174
+ }
175
+ if (config.rateLimit) {
176
+ result.rateLimit = {
177
+ ...result.rateLimit,
178
+ ...config.rateLimit
179
+ };
180
+ }
181
+ if (config.encryption) {
182
+ result.encryption = {
183
+ ...result.encryption,
184
+ ...config.encryption
185
+ };
186
+ }
187
+ if (config.reranker) {
188
+ result.reranker = {
189
+ ...result.reranker,
190
+ ...config.reranker
191
+ };
192
+ }
193
+ if (config.chatLLM) {
194
+ result.chatLLM = result.chatLLM || {};
195
+ if (config.chatLLM.openai) {
196
+ result.chatLLM.openai = {
197
+ ...result.chatLLM.openai,
198
+ ...config.chatLLM.openai
199
+ };
200
+ // Validate and cap maxTokens at 32K to prevent unreasonable values
201
+ if (result.chatLLM.openai.maxTokens && result.chatLLM.openai.maxTokens > 64000) {
202
+ console.warn(`⚠️ Warning: chatLLM.openai.maxTokens (${result.chatLLM.openai.maxTokens}) exceeds recommended maximum. Capping at 32,000 tokens.`);
203
+ result.chatLLM.openai.maxTokens = 64000;
204
+ }
205
+ }
206
+ }
207
+ }
208
+ return result;
209
+ }
210
+ /**
211
+ * Load merged configuration from all sources
212
+ * Priority: env > project > global
213
+ *
214
+ * @readonly Never modifies config files
215
+ * @param basePath Project path for project-local config
216
+ * @returns Merged configuration (in-memory only)
217
+ */
218
+ export function loadConfig(basePath = '.') {
219
+ const global = readGlobalConfig();
220
+ const project = readProjectConfig(basePath);
221
+ const env = readEnvConfig();
222
+ // Merge with priority: env overrides project overrides global
223
+ return deepMerge(global, project, env);
224
+ }
225
+ /**
226
+ * Get configuration sources for debugging
227
+ * @readonly Never modifies files
228
+ */
229
+ export function getConfigSources(basePath = '.') {
230
+ return {
231
+ global: readGlobalConfig(),
232
+ project: readProjectConfig(basePath),
233
+ env: readEnvConfig()
234
+ };
235
+ }
236
+ /**
237
+ * Write global configuration (CLI only)
238
+ * This is the ONLY function that writes to disk
239
+ */
240
+ export function saveGlobalConfig(config) {
241
+ // Ensure directory exists
242
+ if (!fs.existsSync(GLOBAL_CONFIG_DIR)) {
243
+ fs.mkdirSync(GLOBAL_CONFIG_DIR, { recursive: true });
244
+ }
245
+ // Write config
246
+ fs.writeFileSync(GLOBAL_CONFIG_FILE, JSON.stringify(config, null, 2));
247
+ }
248
+ /**
249
+ * Write project-local configuration (CLI only)
250
+ * This is the ONLY function that writes project config
251
+ */
252
+ export function saveProjectConfig(config, basePath = '.') {
253
+ const configDir = path.join(path.resolve(basePath), '.codevault');
254
+ const configPath = path.join(configDir, 'config.json');
255
+ // Ensure directory exists
256
+ if (!fs.existsSync(configDir)) {
257
+ fs.mkdirSync(configDir, { recursive: true });
258
+ }
259
+ // Write config
260
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
261
+ }
262
+ /**
263
+ * Check if global config exists
264
+ */
265
+ export function hasGlobalConfig() {
266
+ return fs.existsSync(GLOBAL_CONFIG_FILE);
267
+ }
268
+ /**
269
+ * Check if project config exists
270
+ */
271
+ export function hasProjectConfig(basePath = '.') {
272
+ const configPath = path.join(path.resolve(basePath), PROJECT_CONFIG_FILE);
273
+ return fs.existsSync(configPath);
274
+ }
275
+ /**
276
+ * Get global config file path
277
+ */
278
+ export function getGlobalConfigPath() {
279
+ return GLOBAL_CONFIG_FILE;
280
+ }
281
+ /**
282
+ * Get project config file path
283
+ */
284
+ export function getProjectConfigPath(basePath = '.') {
285
+ return path.join(path.resolve(basePath), PROJECT_CONFIG_FILE);
286
+ }
287
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
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
+ };
27
+ chatLLM?: {
28
+ openai?: ChatLLMConfig;
29
+ };
30
+ rateLimit?: RateLimitConfig;
31
+ encryption?: EncryptionConfig;
32
+ maxTokens?: number;
33
+ reranker?: {
34
+ apiUrl?: string;
35
+ apiKey?: string;
36
+ model?: string;
37
+ maxCandidates?: number;
38
+ maxTokens?: number;
39
+ };
40
+ }
41
+ export interface ConfigSource {
42
+ global: CodevaultConfig | null;
43
+ project: CodevaultConfig | null;
44
+ env: CodevaultConfig;
45
+ }
46
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
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;KACzB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,180 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packs.js","sourceRoot":"","sources":["../../src/context/packs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { EmbeddingProvider } from '../providers/base.js';
2
+ import type { Database } from '../database/db.js';
3
+ interface ChunkToEmbed {
4
+ chunkId: string;
5
+ enhancedEmbeddingText: string;
6
+ params: {
7
+ code: string;
8
+ sha: string;
9
+ lang: string;
10
+ rel: string;
11
+ symbol: string;
12
+ chunkType: string;
13
+ codevaultMetadata: any;
14
+ importantVariables: any[];
15
+ docComments: string | null;
16
+ contextInfo: any;
17
+ };
18
+ }
19
+ export declare class BatchEmbeddingProcessor {
20
+ private embeddingProvider;
21
+ private db;
22
+ private batch;
23
+ private batchSize;
24
+ private mutex;
25
+ constructor(embeddingProvider: EmbeddingProvider, db: Database, batchSize?: number);
26
+ /**
27
+ * Add a chunk to the batch queue
28
+ */
29
+ addChunk(chunk: ChunkToEmbed): Promise<void>;
30
+ /**
31
+ * Process any remaining chunks in the batch
32
+ */
33
+ flush(): Promise<void>;
34
+ /**
35
+ * Process the current batch (with mutex protection)
36
+ */
37
+ private processBatch;
38
+ /**
39
+ * Process a batch with smart error handling and retry logic
40
+ */
41
+ private processBatchWithRetry;
42
+ /**
43
+ * Internal batch processing implementation with database transactions
44
+ */
45
+ private processBatchInternal;
46
+ /**
47
+ * Fall back to processing chunks individually
48
+ */
49
+ private fallbackToIndividualProcessing;
50
+ /**
51
+ * Get current batch size for monitoring
52
+ */
53
+ getBatchCount(): number;
54
+ }
55
+ export {};
56
+ //# sourceMappingURL=batch-indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-indexer.d.ts","sourceRoot":"","sources":["../../src/core/batch-indexer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AA8BlD,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,iBAAiB,EAAE,GAAG,CAAC;QACvB,kBAAkB,EAAE,GAAG,EAAE,CAAC;QAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,GAAG,CAAC;KAClB,CAAC;CACH;AAED,qBAAa,uBAAuB;IAMhC,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,EAAE;IANZ,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAe;gBAGlB,iBAAiB,EAAE,iBAAiB,EACpC,EAAE,EAAE,QAAQ,EACpB,SAAS,GAAE,MAAmB;IAKhC;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IASlD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;OAEG;YACW,YAAY;IAS1B;;OAEG;YACW,qBAAqB;IAkCnC;;OAEG;YACW,oBAAoB;IAyClC;;OAEG;YACW,8BAA8B;IA4C5C;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}