codevault 1.5.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 (85) hide show
  1. package/.env.example +75 -40
  2. package/README.md +112 -345
  3. package/dist/chunking/file-grouper.d.ts +1 -1
  4. package/dist/chunking/file-grouper.d.ts.map +1 -1
  5. package/dist/chunking/file-grouper.js +2 -19
  6. package/dist/chunking/file-grouper.js.map +1 -1
  7. package/dist/chunking/semantic-chunker.d.ts.map +1 -1
  8. package/dist/chunking/semantic-chunker.js +4 -19
  9. package/dist/chunking/semantic-chunker.js.map +1 -1
  10. package/dist/cli/commands/chat-cmd.d.ts +3 -0
  11. package/dist/cli/commands/chat-cmd.d.ts.map +1 -0
  12. package/dist/cli/commands/chat-cmd.js +194 -0
  13. package/dist/cli/commands/chat-cmd.js.map +1 -0
  14. package/dist/cli.js +5 -0
  15. package/dist/cli.js.map +1 -1
  16. package/dist/config/constants.d.ts +326 -0
  17. package/dist/config/constants.d.ts.map +1 -0
  18. package/dist/config/constants.js +214 -0
  19. package/dist/config/constants.js.map +1 -0
  20. package/dist/config/loader.d.ts.map +1 -1
  21. package/dist/config/loader.js +11 -3
  22. package/dist/config/loader.js.map +1 -1
  23. package/dist/core/batch-indexer.d.ts +14 -2
  24. package/dist/core/batch-indexer.d.ts.map +1 -1
  25. package/dist/core/batch-indexer.js +107 -79
  26. package/dist/core/batch-indexer.js.map +1 -1
  27. package/dist/core/indexer.d.ts.map +1 -1
  28. package/dist/core/indexer.js +4 -28
  29. package/dist/core/indexer.js.map +1 -1
  30. package/dist/core/search.d.ts.map +1 -1
  31. package/dist/core/search.js +8 -5
  32. package/dist/core/search.js.map +1 -1
  33. package/dist/database/db.d.ts +44 -5
  34. package/dist/database/db.d.ts.map +1 -1
  35. package/dist/database/db.js +270 -109
  36. package/dist/database/db.js.map +1 -1
  37. package/dist/mcp/schemas.d.ts +166 -0
  38. package/dist/mcp/schemas.d.ts.map +1 -0
  39. package/dist/mcp/schemas.js +159 -0
  40. package/dist/mcp/schemas.js.map +1 -0
  41. package/dist/mcp-server.js +31 -38
  42. package/dist/mcp-server.js.map +1 -1
  43. package/dist/providers/chat-llm.d.ts.map +1 -1
  44. package/dist/providers/chat-llm.js +4 -1
  45. package/dist/providers/chat-llm.js.map +1 -1
  46. package/dist/ranking/symbol-boost.d.ts.map +1 -1
  47. package/dist/ranking/symbol-boost.js +28 -7
  48. package/dist/ranking/symbol-boost.js.map +1 -1
  49. package/dist/storage/encrypted-chunks.d.ts.map +1 -1
  50. package/dist/storage/encrypted-chunks.js +3 -2
  51. package/dist/storage/encrypted-chunks.js.map +1 -1
  52. package/dist/symbols/extract.d.ts.map +1 -1
  53. package/dist/symbols/extract.js +27 -6
  54. package/dist/symbols/extract.js.map +1 -1
  55. package/dist/symbols/graph.d.ts.map +1 -1
  56. package/dist/symbols/graph.js +1 -1
  57. package/dist/symbols/graph.js.map +1 -1
  58. package/dist/synthesis/conversational-synthesizer.d.ts +61 -0
  59. package/dist/synthesis/conversational-synthesizer.d.ts.map +1 -0
  60. package/dist/synthesis/conversational-synthesizer.js +286 -0
  61. package/dist/synthesis/conversational-synthesizer.js.map +1 -0
  62. package/dist/utils/indexer-with-progress.d.ts.map +1 -1
  63. package/dist/utils/indexer-with-progress.js +12 -27
  64. package/dist/utils/indexer-with-progress.js.map +1 -1
  65. package/dist/utils/logger.d.ts +55 -0
  66. package/dist/utils/logger.d.ts.map +1 -0
  67. package/dist/utils/logger.js +121 -0
  68. package/dist/utils/logger.js.map +1 -0
  69. package/dist/utils/mutex.d.ts +63 -0
  70. package/dist/utils/mutex.d.ts.map +1 -0
  71. package/dist/utils/mutex.js +123 -0
  72. package/dist/utils/mutex.js.map +1 -0
  73. package/dist/utils/path-helpers.d.ts +27 -0
  74. package/dist/utils/path-helpers.d.ts.map +1 -0
  75. package/dist/utils/path-helpers.js +55 -0
  76. package/dist/utils/path-helpers.js.map +1 -0
  77. package/dist/utils/scan-patterns.d.ts +5 -0
  78. package/dist/utils/scan-patterns.d.ts.map +1 -0
  79. package/dist/utils/scan-patterns.js +29 -0
  80. package/dist/utils/scan-patterns.js.map +1 -0
  81. package/package.json +4 -3
  82. package/dist/providers/ollama.d.ts +0 -13
  83. package/dist/providers/ollama.d.ts.map +0 -1
  84. package/dist/providers/ollama.js +0 -50
  85. package/dist/providers/ollama.js.map +0 -1
package/README.md CHANGED
@@ -9,12 +9,13 @@ CodeVault is an intelligent code indexing and search system that enables AI assi
9
9
  - **🔍 Semantic Search**: Find code by meaning, not just keywords using vector embeddings
10
10
  - **🤖 MCP Integration**: Native support for Claude Desktop and other MCP clients
11
11
  - **💬 LLM-Synthesized Answers**: Ask questions in natural language, get markdown responses with code citations
12
+ - **🗣️ Interactive Chat Mode**: Have multi-turn conversations about your codebase with conversation history
12
13
  - **🎯 Symbol-Aware Ranking**: Boost results based on function signatures, parameters, and relationships
13
14
  - **⚡ Hybrid Retrieval**: Combines vector embeddings with BM25 keyword matching via Reciprocal Rank Fusion
14
15
  - **🚀 Batch Processing**: Efficient API usage with configurable batching (50 chunks/batch by default)
15
16
  - **📦 Smart Chunking**: Token-aware semantic code splitting with overlap for optimal context
16
17
  - **🔄 Context Packs**: Save and reuse search scopes for different features/modules
17
- - **🏠 Local-First**: Works with local models (Ollama) or cloud APIs (OpenAI, Nebius)
18
+ - **🏠 Local-First**: Works with local models (Ollama) or cloud APIs (OpenAI, Nebius, OpenRouter)
18
19
  - **🔐 Optional Encryption**: AES-256-GCM encryption for indexed code chunks
19
20
  - **⚙️ Global Configuration**: One-time setup with interactive wizard for CLI convenience
20
21
  - **📊 Multi-Language Support**: 25+ programming languages via Tree-sitter
@@ -45,7 +46,7 @@ codevault index
45
46
  ```bash
46
47
  git clone https://github.com/shariqriazz/codevault.git
47
48
  cd codevault
48
- npm npm install --legacy-peer-deps
49
+ npm install --legacy-peer-deps
49
50
  npm run build
50
51
  npm link
51
52
  ```
@@ -70,58 +71,49 @@ Guides you through:
70
71
 
71
72
  Configuration saved to `~/.codevault/config.json`
72
73
 
73
- #### Option 2: Manual CLI Configuration
74
+ #### Option 2: Quick Setup with Nebius (Qwen Embeddings)
74
75
 
75
76
  ```bash
76
- # Set API key
77
- codevault config set providers.openai.apiKey sk-your-key-here
78
- codevault config set providers.openai.model text-embedding-3-large
79
-
80
- # View configuration
81
- codevault config list
82
-
83
- # See all config sources
84
- codevault config list --sources
77
+ # Set up Nebius for embeddings (Qwen3-Embedding-8B)
78
+ codevault config set providers.openai.apiKey your-nebius-api-key
79
+ codevault config set providers.openai.baseUrl https://api.studio.nebius.com/v1
80
+ codevault config set providers.openai.model Qwen/Qwen3-Embedding-8B
81
+ codevault config set providers.openai.dimensions 4096
82
+ codevault config set maxTokens 32000
83
+
84
+ # Set up OpenRouter for chat (Claude Sonnet 4.5)
85
+ codevault config set chatLLM.openai.apiKey your-openrouter-api-key
86
+ codevault config set chatLLM.openai.baseUrl https://openrouter.ai/api/v1
87
+ codevault config set chatLLM.openai.model anthropic/claude-sonnet-4.5
88
+
89
+ # Optional: Enable reranking with Novita (Qwen3-Reranker)
90
+ codevault config set reranker.apiUrl https://api.novita.ai/openai/v1/rerank
91
+ codevault config set reranker.apiKey your-novita-api-key
92
+ codevault config set reranker.model qwen/qwen3-reranker-8b
85
93
  ```
86
94
 
87
95
  #### Option 3: Environment Variables (MCP / CI/CD)
88
96
 
89
97
  ```bash
90
- # Embedding Provider (OpenAI-compatible APIs)
91
- export CODEVAULT_EMBEDDING_API_KEY=sk-your-key-here
92
- export CODEVAULT_EMBEDDING_BASE_URL=https://api.openai.com/v1
93
- export CODEVAULT_EMBEDDING_MODEL=text-embedding-3-large
94
-
95
- # Ollama (local, no API key needed - via OpenAI-compatible endpoint)
96
- export CODEVAULT_EMBEDDING_BASE_URL=http://localhost:11434/v1
97
- export CODEVAULT_EMBEDDING_MODEL=nomic-embed-text
98
-
99
- # Custom settings
100
- export CODEVAULT_EMBEDDING_MAX_TOKENS=8192
101
- export CODEVAULT_EMBEDDING_DIMENSIONS=3072
102
- export CODEVAULT_EMBEDDING_RATE_LIMIT_RPM=10000
103
- export CODEVAULT_EMBEDDING_RATE_LIMIT_TPM=600000
104
- ```
105
-
106
- **Note:** Old variable names are still supported for backward compatibility:
107
- - `OPENAI_API_KEY` → `CODEVAULT_EMBEDDING_API_KEY`
108
- - `OPENAI_BASE_URL` → `CODEVAULT_EMBEDDING_BASE_URL`
109
- - `CODEVAULT_OPENAI_EMBEDDING_MODEL` → `CODEVAULT_EMBEDDING_MODEL`
110
- - `CODEVAULT_OLLAMA_MODEL` → `CODEVAULT_OLLAMA_EMBEDDING_MODEL`
111
- - `CODEVAULT_MAX_TOKENS` → `CODEVAULT_EMBEDDING_MAX_TOKENS`
112
- - `CODEVAULT_DIMENSIONS` → `CODEVAULT_EMBEDDING_DIMENSIONS`
113
- - `CODEVAULT_RATE_LIMIT_RPM` → `CODEVAULT_EMBEDDING_RATE_LIMIT_RPM`
114
- - `CODEVAULT_RATE_LIMIT_TPM` → `CODEVAULT_EMBEDDING_RATE_LIMIT_TPM`
115
-
116
- #### Option 4: Project-Specific Config
117
-
118
- ```bash
119
- # Set local config (project-specific, e.g., for Ollama)
120
- codevault config set --local providers.openai.baseUrl http://localhost:11434/v1
121
- codevault config set --local providers.openai.model nomic-embed-text
98
+ # Embedding Provider (Nebius + Qwen)
99
+ export CODEVAULT_EMBEDDING_API_KEY=your-nebius-api-key
100
+ export CODEVAULT_EMBEDDING_BASE_URL=https://api.studio.nebius.com/v1
101
+ export CODEVAULT_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-8B
102
+ export CODEVAULT_EMBEDDING_DIMENSIONS=4096
103
+ export CODEVAULT_EMBEDDING_MAX_TOKENS=32000
104
+
105
+ # Chat LLM (OpenRouter + Claude)
106
+ export CODEVAULT_CHAT_API_KEY=your-openrouter-api-key
107
+ export CODEVAULT_CHAT_BASE_URL=https://openrouter.ai/api/v1
108
+ export CODEVAULT_CHAT_MODEL=anthropic/claude-sonnet-4.5
109
+
110
+ # Reranking (Novita + Qwen)
111
+ export CODEVAULT_RERANK_API_URL=https://api.novita.ai/openai/v1/rerank
112
+ export CODEVAULT_RERANK_API_KEY=your-novita-api-key
113
+ export CODEVAULT_RERANK_MODEL=qwen/qwen3-reranker-8b
122
114
  ```
123
115
 
124
- See [`CONFIGURATION.md`](CONFIGURATION.md) for complete configuration guide.
116
+ See [Configuration Guide](docs/CONFIGURATION.md) for complete details.
125
117
 
126
118
  ### Index Your Project
127
119
 
@@ -129,21 +121,17 @@ See [`CONFIGURATION.md`](CONFIGURATION.md) for complete configuration guide.
129
121
  # Using global config (if set via codevault config init)
130
122
  codevault index
131
123
 
132
- # Using Ollama (local, no API key required - via OpenAI-compatible endpoint)
124
+ # Using Nebius + Qwen embeddings
125
+ export CODEVAULT_EMBEDDING_API_KEY=your-key
126
+ export CODEVAULT_EMBEDDING_BASE_URL=https://api.studio.nebius.com/v1
127
+ export CODEVAULT_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-8B
128
+ codevault index
129
+
130
+ # Using local Ollama
133
131
  export CODEVAULT_EMBEDDING_BASE_URL=http://localhost:11434/v1
134
132
  export CODEVAULT_EMBEDDING_MODEL=nomic-embed-text
135
133
  codevault index
136
134
 
137
- # Using OpenAI with custom settings
138
- export OPENAI_API_KEY=your-key-here
139
- codevault index --provider openai
140
-
141
- # Using Qwen (via Nebius AI Studio)
142
- export CODEVAULT_EMBEDDING_API_KEY=your-nebius-api-key
143
- export CODEVAULT_EMBEDDING_BASE_URL=https://api.studio.nebius.com/v1
144
- export CODEVAULT_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-8B
145
- codevault index --provider openai
146
-
147
135
  # With encryption
148
136
  export CODEVAULT_ENCRYPTION_KEY=$(openssl rand -base64 32)
149
137
  codevault index --encrypt on
@@ -168,13 +156,23 @@ codevault search-with-code "database connection" --limit 5
168
156
  codevault ask "How does authentication work in this codebase?"
169
157
  codevault ask "How do I add a new payment provider?" --multi-query --stream
170
158
 
159
+ # Start interactive chat (NEW!)
160
+ codevault chat
161
+ # Features:
162
+ # - Multi-turn conversations with history
163
+ # - Maintains context across questions
164
+ # - Commands: /help, /history, /clear, /stats, /exit
165
+ # - Configurable history window (--max-history)
166
+
171
167
  # View project stats
172
168
  codevault info
173
169
  ```
174
170
 
175
171
  ### Use with Claude Desktop
176
172
 
177
- Add to your `claude_desktop_config.json`:
173
+ See complete setup guide: **[MCP Setup Guide](docs/MCP_SETUP.md)**
174
+
175
+ **Quick setup** - Add to your `claude_desktop_config.json`:
178
176
 
179
177
  ```json
180
178
  {
@@ -183,216 +181,62 @@ Add to your `claude_desktop_config.json`:
183
181
  "command": "npx",
184
182
  "args": ["-y", "codevault", "mcp"],
185
183
  "env": {
186
- "CODEVAULT_EMBEDDING_API_KEY": "your-api-key-here",
187
- "CODEVAULT_EMBEDDING_MODEL": "text-embedding-3-large"
184
+ "CODEVAULT_EMBEDDING_API_KEY": "your-nebius-api-key",
185
+ "CODEVAULT_EMBEDDING_BASE_URL": "https://api.studio.nebius.com/v1",
186
+ "CODEVAULT_EMBEDDING_MODEL": "Qwen/Qwen3-Embedding-8B",
187
+ "CODEVAULT_EMBEDDING_DIMENSIONS": "4096",
188
+ "CODEVAULT_CHAT_API_KEY": "your-openrouter-api-key",
189
+ "CODEVAULT_CHAT_BASE_URL": "https://openrouter.ai/api/v1",
190
+ "CODEVAULT_CHAT_MODEL": "anthropic/claude-sonnet-4.5",
191
+ "CODEVAULT_RERANK_API_URL": "https://api.novita.ai/openai/v1/rerank",
192
+ "CODEVAULT_RERANK_API_KEY": "your-novita-api-key",
193
+ "CODEVAULT_RERANK_MODEL": "qwen/qwen3-reranker-8b"
188
194
  }
189
195
  }
190
196
  }
191
197
  }
192
198
  ```
193
199
 
194
- Or use local installation:
195
-
196
- ```json
197
- {
198
- "mcpServers": {
199
- "codevault": {
200
- "command": "node",
201
- "args": ["/path/to/codevault/dist/mcp-server.js"],
202
- "env": {
203
- "CODEVAULT_EMBEDDING_API_KEY": "your-api-key-here"
204
- }
205
- }
206
- }
207
- }
208
- ```
200
+ **Example configs:**
201
+ - [NPX (Recommended)](examples/claude-desktop-config-npx.example.json)
202
+ - [Full Options](examples/claude-desktop-config.example.json)
203
+ - [Ollama Local](examples/claude-desktop-ollama.example.json)
209
204
 
210
205
  ## 📖 Documentation
211
206
 
212
- ### CLI Commands
207
+ - **[Configuration Guide](docs/CONFIGURATION.md)** - Complete configuration options
208
+ - **[MCP Setup Guide](docs/MCP_SETUP.md)** - Claude Desktop integration
209
+ - **[Ask Feature Guide](docs/ASK_FEATURE.md)** - LLM-synthesized Q&A
210
+ - **[CLI Reference](docs/CLI_REFERENCE.md)** - All commands and options
211
+ - **[API Providers](docs/PROVIDERS.md)** - Embedding, chat, and reranking providers
212
+ - **[Advanced Features](docs/ADVANCED.md)** - Chunking, encryption, context packs
213
+
214
+ ### Quick Links
213
215
 
214
216
  ```bash
215
217
  # Configuration Management
216
218
  codevault config init # Interactive setup wizard
217
219
  codevault config set <key> <value> # Set global config value
218
- codevault config set --local <key> <val> # Set project config value
219
- codevault config get <key> # Get config value
220
220
  codevault config list # Show merged config
221
- codevault config list --sources # Show all config sources
222
- codevault config unset <key> # Remove config value
223
- codevault config path # Show config file paths
224
221
 
225
222
  # Indexing
226
223
  codevault index [path] # Index project
227
- codevault index --provider openai # Use specific provider
228
- codevault index --encrypt on # Enable encryption
229
224
  codevault update [path] # Update existing index
230
225
  codevault watch [path] # Watch for changes
231
- codevault watch --debounce 1000 # Custom debounce interval
232
226
 
233
227
  # Searching
234
- codevault search <query> [path] # Search code (metadata only)
235
- --limit <num> # Max results (default: 10)
236
- --provider <name> # Embedding provider
237
- --path_glob <pattern> # Filter by file pattern
238
- --tags <tag...> # Filter by tags
239
- --lang <language...> # Filter by language
240
- --reranker <off|api> # Enable API reranking
241
- --hybrid <on|off> # Hybrid search (default: on)
242
- --bm25 <on|off> # BM25 keyword search (default: on)
243
- --symbol_boost <on|off> # Symbol boosting (default: on)
244
-
228
+ codevault search <query> # Search code (metadata only)
245
229
  codevault search-with-code <query> # Search with full code chunks
246
- --max-code-size <bytes> # Max code size per chunk
247
-
248
- # Ask Questions (LLM Synthesis)
249
- codevault ask <question> # Ask a question, get synthesized answer
250
- -p, --provider <name> # Embedding provider
251
- -c, --chat-provider <name> # Chat LLM provider (auto|openai|ollama)
252
- -k, --max-chunks <num> # Max code chunks to analyze (default: 10)
253
- --path_glob <pattern...> # Filter by file pattern
254
- --tags <tag...> # Filter by tags
255
- --lang <language...> # Filter by language
256
- --reranker <on|off> # Use API reranking (default: on)
257
- --multi-query # Break complex questions into sub-queries
258
- --temperature <num> # LLM temperature 0-2 (default: 0.7)
259
- --stream # Stream response in real-time
260
- --citations # Add citation footer
261
- --no-metadata # Hide search metadata
230
+ codevault ask <question> # Ask questions, get synthesized answers
231
+ codevault chat # Interactive conversation mode (NEW!)
262
232
 
263
233
  # Context Packs
264
234
  codevault context list # List saved contexts
265
- codevault context show <name> # Show context pack details
266
235
  codevault context use <name> # Activate context pack
267
236
 
268
237
  # Utilities
269
238
  codevault info # Project statistics
270
239
  codevault mcp # Start MCP server
271
- codevault --version # Show version
272
- ```
273
-
274
- ### MCP Tools
275
-
276
- When used via MCP, CodeVault provides these tools:
277
-
278
- - **`search_code`**: Semantic search returning metadata (paths, symbols, scores, SHAs)
279
- - **`search_code_with_chunks`**: Search + retrieve full code for each result
280
- - **`get_code_chunk`**: Get specific code chunk by SHA
281
- - **`ask_codebase`**: ✨ Ask questions and get LLM-synthesized answers with code citations
282
- - **`index_project`**: Index a new project
283
- - **`update_project`**: Update existing index
284
- - **`get_project_stats`**: Get project overview and statistics
285
- - **`use_context_pack`**: Apply saved search context/scope
286
-
287
- ### Supported Languages
288
-
289
- - **Web**: JavaScript, TypeScript, TSX, HTML, CSS, JSON, Markdown
290
- - **Backend**: Python, PHP, Go, Java, Kotlin, C#, Ruby, Scala, Swift
291
- - **Systems**: C, C++, Rust
292
- - **Functional**: Haskell, OCaml, Elixir
293
- - **Scripting**: Bash, Lua
294
-
295
- ### Embedding Providers
296
-
297
- | Provider | Model | Dimensions | Context | Best For | API Key Required |
298
- |----------|-------|------------|---------|----------|------------------|
299
- | **openai** | text-embedding-3-large | 3072 | 8K | Highest quality | ✅ Yes |
300
- | **openai** | text-embedding-3-small | 1536 | 8K | Faster, cheaper | ✅ Yes |
301
- | **openai** | Qwen/Qwen3-Embedding-8B | 4096 | 32K | Large context, high quality | ✅ Yes (Nebius) |
302
- | **openai** | nomic-embed-text | 768 | 8K | Local via Ollama | ❌ No (local) |
303
- | **custom** | Your choice | Custom | Custom | Any OpenAI-compatible API | Varies |
304
-
305
- ### Environment Variables
306
-
307
- ```bash
308
- # Embedding Provider Configuration
309
- CODEVAULT_EMBEDDING_API_KEY=sk-... # API key for embeddings
310
- CODEVAULT_EMBEDDING_BASE_URL=https://api.openai.com/v1 # Embedding API endpoint
311
- CODEVAULT_EMBEDDING_MODEL=text-embedding-3-large # Embedding model name
312
- CODEVAULT_OLLAMA_EMBEDDING_MODEL=nomic-embed-text # Ollama embedding model
313
-
314
- # Embedding Chunking Configuration
315
- CODEVAULT_EMBEDDING_MAX_TOKENS=8192 # Max tokens per embedding chunk
316
- CODEVAULT_EMBEDDING_DIMENSIONS=3072 # Embedding vector dimensions
317
-
318
- # Embedding API Rate Limiting
319
- CODEVAULT_EMBEDDING_RATE_LIMIT_RPM=10000 # Embedding API requests/min
320
- CODEVAULT_EMBEDDING_RATE_LIMIT_TPM=600000 # Embedding API tokens/min
321
-
322
- # Encryption
323
- CODEVAULT_ENCRYPTION_KEY=... # 32-byte key (base64 or hex)
324
-
325
- # API Reranking (Optional)
326
- # Novita Qwen3-Reranker (32K context, great for code)
327
- CODEVAULT_RERANK_API_URL=https://api.novita.ai/openai/v1/rerank
328
- CODEVAULT_RERANK_API_KEY=your-novita-key
329
- CODEVAULT_RERANK_MODEL=qwen/qwen3-reranker-8b
330
-
331
- # Or Cohere (4K context, $25 free credits)
332
- # CODEVAULT_RERANK_API_URL=https://api.cohere.ai/v1/rerank
333
- # CODEVAULT_RERANK_API_KEY=your-cohere-key
334
- # CODEVAULT_RERANK_MODEL=rerank-english-v3.0
335
-
336
- # Memory Management
337
- CODEVAULT_CACHE_CLEAR_INTERVAL=3600000 # Cache cleanup interval (ms)
338
- ```
339
-
340
- ### Ask Questions (LLM Synthesis)
341
-
342
- The `ask` command combines semantic search with LLM synthesis to answer natural language questions about your codebase:
343
-
344
- ```bash
345
- # Basic question
346
- codevault ask "How does authentication work in this codebase?"
347
-
348
- # With filters
349
- codevault ask "How do I add Stripe checkout?" --tags stripe --lang php
350
-
351
- # Complex question with multi-query
352
- codevault ask "What are the main components and how do they interact?" --multi-query
353
-
354
- # Streaming response
355
- codevault ask "Explain the database connection pooling" --stream
356
-
357
- # With custom settings
358
- codevault ask "How does error handling work?" \
359
- --chat-provider openai \
360
- --temperature 0.5 \
361
- --max-chunks 15 \
362
- --reranker on
363
-
364
- # Using Ollama for local processing (via OpenAI-compatible endpoint)
365
- export CODEVAULT_CHAT_BASE_URL=http://localhost:11434/v1
366
- export CODEVAULT_CHAT_MODEL=llama3.1
367
- codevault ask "What routes are available?"
368
- ```
369
-
370
- **How it works:**
371
- 1. 🔍 Searches codebase using embeddings (+ optional reranking)
372
- 2. 📚 Retrieves top N most relevant code chunks
373
- 3. 🤖 Sends context to LLM with structured prompt
374
- 4. 📝 LLM synthesizes natural language answer with code citations
375
- 5. ✨ Returns formatted markdown with file references
376
-
377
- **Example Output:**
378
- ```markdown
379
- # How Authentication Works
380
-
381
- The authentication system uses a middleware-based approach...
382
-
383
- The main authentication flow is handled by `AuthMiddleware` in [`src/middleware/auth.ts`](src/middleware/auth.ts):
384
-
385
- ```typescript
386
- export function authenticate(req, res, next) {
387
- // Token validation logic
388
- ...
389
- }
390
- ```
391
-
392
- Key components:
393
- - **Session Management**: [`src/auth/session.ts`](src/auth/session.ts)
394
- - **Token Validation**: [`src/auth/token.ts`](src/auth/token.ts)
395
- - **User Model**: [`src/models/user.ts`](src/models/user.ts)
396
240
  ```
397
241
 
398
242
  ## 🏗️ Architecture
@@ -415,115 +259,37 @@ Key components:
415
259
  - Optionally applies API reranking
416
260
  - Returns ranked results with metadata
417
261
 
418
- 3. **Retrieval Phase**
419
- - Fetches code chunks by SHA
420
- - Decompresses and decrypts (if encrypted)
421
- - Returns full code with context
422
-
423
- ### Project Structure
424
-
425
- ```
426
- .codevault/
427
- ├── codevault.db # SQLite: embeddings + metadata
428
- ├── chunks/ # Compressed code chunks
429
- │ ├── <sha>.gz # Plain compressed
430
- │ └── <sha>.gz.enc # Encrypted compressed
431
- └── contextpacks/ # Saved search contexts
432
- └── feature-auth.json # Example context pack
433
-
434
- codevault.codemap.json # Lightweight index (symbol graph)
435
-
436
- ~/.codevault/ # Global CLI configuration
437
- └── config.json # User-wide settings
438
- ```
439
-
440
- ### Advanced Features
441
-
442
- #### Batch Processing
443
-
444
- Embeddings are generated in batches of 50 for optimal API efficiency:
445
-
446
- ```typescript
447
- // Automatic batching - no configuration needed
448
- // Processes 50 chunks per API call
449
- // Falls back to individual processing on error
450
- ```
451
-
452
- #### Smart Chunking
453
-
454
- Token-aware semantic chunking with configurable limits:
455
-
456
- - Respects function/class boundaries
457
- - Applies overlap for context continuity
458
- - Subdivides large functions intelligently
459
- - Merges small chunks when beneficial
460
-
461
- #### Symbol-Aware Ranking
462
-
463
- Boosts search results based on:
464
- - Exact symbol name matches
465
- - Function signature matches
466
- - Parameter name matches
467
- - Symbol neighbor relationships (calls, imports)
262
+ 3. **LLM Synthesis Phase** (Ask Feature)
263
+ - Searches for relevant code chunks
264
+ - Retrieves full code content
265
+ - Builds context prompt with metadata
266
+ - Generates natural language answer via chat LLM
267
+ - Returns markdown with code citations
468
268
 
469
- #### Hybrid Search
269
+ 4. **Interactive Chat Phase** (Chat Feature)
270
+ - Maintains conversation history (last N turns)
271
+ - Performs fresh semantic search for each question
272
+ - Combines conversation context + new code chunks
273
+ - Generates conversational responses with continuity
274
+ - Supports commands: /help, /history, /clear, /stats
470
275
 
471
- Combines multiple ranking signals:
472
- - Vector similarity (semantic understanding)
473
- - BM25 keyword matching (exact term matches)
474
- - Symbol boost (code structure awareness)
475
- - Reciprocal Rank Fusion (combines rankings)
476
-
477
- #### Context Packs
478
-
479
- Save search scopes for reuse:
480
-
481
- ```json
482
- {
483
- "key": "feature-auth",
484
- "name": "Authentication Feature",
485
- "description": "Login, signup, password reset",
486
- "scope": {
487
- "path_glob": ["src/auth/**", "src/middleware/auth.ts"],
488
- "tags": ["auth", "security"],
489
- "lang": ["typescript", "javascript"]
490
- }
491
- }
492
- ```
493
-
494
- Usage:
495
- ```bash
496
- codevault context use feature-auth
497
- codevault search "token validation" # Scoped to auth files
498
- ```
499
-
500
- #### File Watching
501
-
502
- Real-time index updates with intelligent debouncing:
503
-
504
- ```bash
505
- codevault watch --debounce 500
506
- ```
507
-
508
- - Detects file changes, additions, deletions
509
- - Batches rapid changes (debouncing)
510
- - Updates only affected chunks
511
- - Preserves index consistency
512
-
513
- #### Encryption
514
-
515
- AES-256-GCM encryption for code chunks:
276
+ ### Supported Languages
516
277
 
517
- ```bash
518
- # Generate secure key
519
- export CODEVAULT_ENCRYPTION_KEY=$(openssl rand -base64 32)
278
+ - **Web**: JavaScript, TypeScript, TSX, HTML, CSS, JSON, Markdown
279
+ - **Backend**: Python, PHP, Go, Java, Kotlin, C#, Ruby, Scala, Swift
280
+ - **Systems**: C, C++, Rust
281
+ - **Functional**: Haskell, OCaml, Elixir
282
+ - **Scripting**: Bash, Lua
520
283
 
521
- # Index with encryption
522
- codevault index --encrypt on
284
+ ### Recommended Providers
523
285
 
524
- # Files stored as .gz.enc instead of .gz
525
- # Automatic decryption on read (requires key)
526
- ```
286
+ | Purpose | Provider | Model | Context | Best For |
287
+ |---------|----------|-------|---------|----------|
288
+ | **Embeddings** | Nebius | Qwen/Qwen3-Embedding-8B | 32K | High quality, large context |
289
+ | **Embeddings** | Ollama | nomic-embed-text | 8K | Local, privacy-focused |
290
+ | **Chat LLM** | OpenRouter | anthropic/claude-sonnet-4.5 | 200K | Best code understanding |
291
+ | **Chat LLM** | Ollama | qwen2.5-coder:7b | 32K | Local, code-specialized |
292
+ | **Reranking** | Novita | qwen/qwen3-reranker-8b | 32K | Best for code reranking |
527
293
 
528
294
  ## 🔧 Performance & Optimization
529
295
 
@@ -602,8 +368,6 @@ MIT License - see [LICENSE](LICENSE) file for details.
602
368
  - **GitHub**: https://github.com/shariqriazz/codevault
603
369
  - **NPM**: https://www.npmjs.com/package/codevault
604
370
  - **Issues**: https://github.com/shariqriazz/codevault/issues
605
- - **Configuration Guide**: [CONFIGURATION.md](CONFIGURATION.md)
606
- - **Ask Feature Guide**: [ASK_FEATURE.md](ASK_FEATURE.md)
607
371
 
608
372
  ## 🙏 Acknowledgments
609
373
 
@@ -612,9 +376,12 @@ Built with:
612
376
  - [Tree-sitter](https://tree-sitter.github.io/) - Parsing infrastructure
613
377
  - [OpenAI](https://openai.com/) - Embedding models
614
378
  - [Ollama](https://ollama.ai/) - Local model support
379
+ - [Nebius AI Studio](https://nebius.com/) - Qwen embeddings
380
+ - [OpenRouter](https://openrouter.ai/) - LLM access
381
+ - [Novita AI](https://novita.ai/) - Reranking API
615
382
 
616
383
  ---
617
384
 
618
- **Version**: 1.5.0
619
- **Built by**: Shariq Riaz
620
- **Last Updated**: January 2025
385
+ **Version**: 1.6.0
386
+ **Built by**: Shariq Riaz
387
+ **Last Updated**: November 2025
@@ -34,6 +34,6 @@ export interface CombinedChunk {
34
34
  groupTypes: string[];
35
35
  };
36
36
  }
37
- export declare function createCombinedChunk(nodeGroup: NodeGroup, source: string, filerel: string): CombinedChunk | null;
37
+ export declare function createCombinedChunk(nodeGroup: NodeGroup, source: string): CombinedChunk | null;
38
38
  export {};
39
39
  //# sourceMappingURL=file-grouper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-grouper.d.ts","sourceRoot":"","sources":["../../src/chunking/file-grouper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,YAAY;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAUD,UAAU,YAAY;IACpB,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AA2KD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAkBtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,QAAQ,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACH;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA4B/G"}
1
+ {"version":3,"file":"file-grouper.d.ts","sourceRoot":"","sources":["../../src/chunking/file-grouper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,YAAY;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAwJD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAkBtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,QAAQ,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACH;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA4B9F"}
@@ -1,22 +1,5 @@
1
1
  import { batchAnalyzeCodeSize } from './token-counter.js';
2
- function getSizeLimits(profile) {
3
- if (profile.useTokens && profile.tokenCounter) {
4
- return {
5
- optimal: profile.optimalTokens,
6
- min: profile.minChunkTokens,
7
- max: profile.maxChunkTokens,
8
- overlap: profile.overlapTokens,
9
- unit: 'tokens'
10
- };
11
- }
12
- return {
13
- optimal: profile.optimalChars,
14
- min: profile.minChunkChars,
15
- max: profile.maxChunkChars,
16
- overlap: profile.overlapChars,
17
- unit: 'characters'
18
- };
19
- }
2
+ import { getSizeLimits } from '../providers/base.js';
20
3
  async function batchAnalyzeNodesInternal(nodes, source, profile) {
21
4
  const codes = nodes.map(node => source.slice(node.startIndex, node.endIndex));
22
5
  const limits = getSizeLimits(profile);
@@ -155,7 +138,7 @@ export async function groupNodesForChunking(nodes, source, profile, rule) {
155
138
  const optimalGroups = await combineGroupsToOptimalSize(semanticGroups, source, profile, limits);
156
139
  return optimalGroups;
157
140
  }
158
- export function createCombinedChunk(nodeGroup, source, filerel) {
141
+ export function createCombinedChunk(nodeGroup, source) {
159
142
  if (!nodeGroup.nodes || nodeGroup.nodes.length === 0) {
160
143
  return null;
161
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"file-grouper.js","sourceRoot":"","sources":["../../src/chunking/file-grouper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-grouper.js","sourceRoot":"","sources":["../../src/chunking/file-grouper.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"semantic-chunker.d.ts","sourceRoot":"","sources":["../../src/chunking/semantic-chunker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,YAAY;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAUD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,GAAG,cAAc,EAAE,CAwBnG;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAgB9E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO7E;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIrG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAMA;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGxE;AAqBD,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,EAAE,cAAc,EAAE,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,YAAY,EACrB,aAAa,UAAQ,GACpB,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,CAAC,CAgCzD;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,cAAc,EAAE,CAAC,CAwC3B"}
1
+ {"version":3,"file":"semantic-chunker.d.ts","sourceRoot":"","sources":["../../src/chunking/semantic-chunker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,YAAY;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,GAAG,cAAc,EAAE,CAwBnG;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAgB9E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO7E;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIrG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAMA;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGxE;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,EAAE,cAAc,EAAE,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,YAAY,EACrB,aAAa,UAAQ,GACpB,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,CAAC,CAgCzD;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,cAAc,EAAE,CAAC,CA0C3B"}