codevault 1.7.2 โ 1.7.4
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.
- package/README.md +18 -5
- package/dist/chunking/semantic-chunker.d.ts.map +1 -1
- package/dist/chunking/semantic-chunker.js +20 -7
- package/dist/chunking/semantic-chunker.js.map +1 -1
- package/dist/cli/commands/index-cmd.d.ts +3 -0
- package/dist/cli/commands/index-cmd.d.ts.map +1 -0
- package/dist/cli/commands/index-cmd.js +118 -0
- package/dist/cli/commands/index-cmd.js.map +1 -0
- package/dist/cli/commands/info-cmd.d.ts +3 -0
- package/dist/cli/commands/info-cmd.d.ts.map +1 -0
- package/dist/cli/commands/info-cmd.js +47 -0
- package/dist/cli/commands/info-cmd.js.map +1 -0
- package/dist/cli/commands/mcp-cmd.d.ts +3 -0
- package/dist/cli/commands/mcp-cmd.d.ts.map +1 -0
- package/dist/cli/commands/mcp-cmd.js +33 -0
- package/dist/cli/commands/mcp-cmd.js.map +1 -0
- package/dist/cli/commands/search-cmd.d.ts +3 -0
- package/dist/cli/commands/search-cmd.d.ts.map +1 -0
- package/dist/cli/commands/search-cmd.js +52 -0
- package/dist/cli/commands/search-cmd.js.map +1 -0
- package/dist/cli/commands/search-with-code-cmd.d.ts +3 -0
- package/dist/cli/commands/search-with-code-cmd.d.ts.map +1 -0
- package/dist/cli/commands/search-with-code-cmd.js +74 -0
- package/dist/cli/commands/search-with-code-cmd.js.map +1 -0
- package/dist/cli/commands/update-cmd.d.ts +3 -0
- package/dist/cli/commands/update-cmd.d.ts.map +1 -0
- package/dist/cli/commands/update-cmd.js +24 -0
- package/dist/cli/commands/update-cmd.js.map +1 -0
- package/dist/cli/commands/watch-cmd.d.ts +3 -0
- package/dist/cli/commands/watch-cmd.d.ts.map +1 -0
- package/dist/cli/commands/watch-cmd.js +47 -0
- package/dist/cli/commands/watch-cmd.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +47 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -398
- package/dist/cli.js.map +1 -1
- package/dist/codemap/io.d.ts +1 -0
- package/dist/codemap/io.d.ts.map +1 -1
- package/dist/codemap/io.js.map +1 -1
- package/dist/config/constants.d.ts +11 -0
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +9 -0
- package/dist/config/constants.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +9 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/core/IndexerEngine.d.ts +9 -17
- package/dist/core/IndexerEngine.d.ts.map +1 -1
- package/dist/core/IndexerEngine.js +72 -351
- package/dist/core/IndexerEngine.js.map +1 -1
- package/dist/core/SearchService.d.ts +13 -13
- package/dist/core/SearchService.d.ts.map +1 -1
- package/dist/core/SearchService.js +133 -325
- package/dist/core/SearchService.js.map +1 -1
- package/dist/core/batch-indexer.d.ts +5 -0
- package/dist/core/batch-indexer.d.ts.map +1 -1
- package/dist/core/batch-indexer.js +25 -27
- package/dist/core/batch-indexer.js.map +1 -1
- package/dist/core/indexer.d.ts +13 -0
- package/dist/core/indexer.d.ts.map +1 -1
- package/dist/core/indexer.js +13 -0
- package/dist/core/indexer.js.map +1 -1
- package/dist/core/indexing/FileProcessor.d.ts +42 -0
- package/dist/core/indexing/FileProcessor.d.ts.map +1 -0
- package/dist/core/indexing/FileProcessor.js +245 -0
- package/dist/core/indexing/FileProcessor.js.map +1 -0
- package/dist/core/indexing/IndexContext.d.ts +42 -0
- package/dist/core/indexing/IndexContext.d.ts.map +1 -0
- package/dist/core/indexing/IndexContext.js +133 -0
- package/dist/core/indexing/IndexContext.js.map +1 -0
- package/dist/core/indexing/IndexFinalizationStage.d.ts +39 -0
- package/dist/core/indexing/IndexFinalizationStage.d.ts.map +1 -0
- package/dist/core/indexing/IndexFinalizationStage.js +114 -0
- package/dist/core/indexing/IndexFinalizationStage.js.map +1 -0
- package/dist/core/indexing/IndexState.d.ts +50 -0
- package/dist/core/indexing/IndexState.d.ts.map +1 -0
- package/dist/core/indexing/IndexState.js +66 -0
- package/dist/core/indexing/IndexState.js.map +1 -0
- package/dist/core/indexing/chunk-pipeline.d.ts +39 -3
- package/dist/core/indexing/chunk-pipeline.d.ts.map +1 -1
- package/dist/core/indexing/chunk-pipeline.js +59 -24
- package/dist/core/indexing/chunk-pipeline.js.map +1 -1
- package/dist/core/search/CandidateRetriever.d.ts +51 -0
- package/dist/core/search/CandidateRetriever.d.ts.map +1 -0
- package/dist/core/search/CandidateRetriever.js +119 -0
- package/dist/core/search/CandidateRetriever.js.map +1 -0
- package/dist/core/search/HybridFusion.d.ts +89 -0
- package/dist/core/search/HybridFusion.d.ts.map +1 -0
- package/dist/core/search/HybridFusion.js +263 -0
- package/dist/core/search/HybridFusion.js.map +1 -0
- package/dist/core/search/ResultMapper.d.ts +31 -0
- package/dist/core/search/ResultMapper.d.ts.map +1 -0
- package/dist/core/search/ResultMapper.js +131 -0
- package/dist/core/search/ResultMapper.js.map +1 -0
- package/dist/core/search/SearchContextManager.d.ts +69 -0
- package/dist/core/search/SearchContextManager.d.ts.map +1 -0
- package/dist/core/search/SearchContextManager.js +139 -0
- package/dist/core/search/SearchContextManager.js.map +1 -0
- package/dist/core/search.d.ts +31 -0
- package/dist/core/search.d.ts.map +1 -1
- package/dist/core/search.js +33 -0
- package/dist/core/search.js.map +1 -1
- package/dist/core/types.d.ts +13 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/database/db.d.ts +36 -18
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +151 -24
- package/dist/database/db.js.map +1 -1
- package/dist/indexer/ChangeQueue.d.ts +67 -0
- package/dist/indexer/ChangeQueue.d.ts.map +1 -0
- package/dist/indexer/ChangeQueue.js +182 -0
- package/dist/indexer/ChangeQueue.js.map +1 -0
- package/dist/indexer/ProviderManager.d.ts +33 -0
- package/dist/indexer/ProviderManager.d.ts.map +1 -0
- package/dist/indexer/ProviderManager.js +75 -0
- package/dist/indexer/ProviderManager.js.map +1 -0
- package/dist/indexer/WatchService.d.ts +68 -0
- package/dist/indexer/WatchService.d.ts.map +1 -0
- package/dist/indexer/WatchService.js +155 -0
- package/dist/indexer/WatchService.js.map +1 -0
- package/dist/indexer/merkle.d.ts +5 -0
- package/dist/indexer/merkle.d.ts.map +1 -1
- package/dist/indexer/merkle.js +36 -12
- package/dist/indexer/merkle.js.map +1 -1
- package/dist/indexer/update.d.ts +14 -2
- package/dist/indexer/update.d.ts.map +1 -1
- package/dist/indexer/update.js +11 -0
- package/dist/indexer/update.js.map +1 -1
- package/dist/indexer/watch.d.ts +15 -20
- package/dist/indexer/watch.d.ts.map +1 -1
- package/dist/indexer/watch.js +14 -223
- package/dist/indexer/watch.js.map +1 -1
- package/dist/mcp/handlers/project.d.ts.map +1 -1
- package/dist/mcp/handlers/project.js +17 -1
- package/dist/mcp/handlers/project.js.map +1 -1
- package/dist/mcp-server.d.ts +6 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +63 -2
- package/dist/mcp-server.js.map +1 -1
- package/dist/providers/base.d.ts +3 -0
- package/dist/providers/base.d.ts.map +1 -1
- package/dist/providers/base.js.map +1 -1
- package/dist/providers/index.d.ts +7 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +15 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/mock.d.ts +16 -0
- package/dist/providers/mock.d.ts.map +1 -0
- package/dist/providers/mock.js +46 -0
- package/dist/providers/mock.js.map +1 -0
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +4 -8
- package/dist/providers/openai.js.map +1 -1
- package/dist/ranking/api-reranker.d.ts.map +1 -1
- package/dist/ranking/api-reranker.js +9 -5
- package/dist/ranking/api-reranker.js.map +1 -1
- package/dist/search/bm25.d.ts.map +1 -1
- package/dist/search/bm25.js +21 -1
- package/dist/search/bm25.js.map +1 -1
- package/dist/search/scope.d.ts +1 -1
- package/dist/search/scope.d.ts.map +1 -1
- package/dist/search/scope.js +3 -3
- package/dist/search/scope.js.map +1 -1
- package/dist/storage/encrypted-chunks.d.ts +7 -1
- package/dist/storage/encrypted-chunks.d.ts.map +1 -1
- package/dist/storage/encrypted-chunks.js +187 -75
- package/dist/storage/encrypted-chunks.js.map +1 -1
- package/dist/symbols/extract.d.ts +2 -1
- package/dist/symbols/extract.d.ts.map +1 -1
- package/dist/symbols/extract.js +1 -1
- package/dist/symbols/extract.js.map +1 -1
- package/dist/symbols/graph.d.ts.map +1 -1
- package/dist/symbols/graph.js.map +1 -1
- package/dist/synthesis/conversational-synthesizer.d.ts.map +1 -1
- package/dist/synthesis/conversational-synthesizer.js +68 -76
- package/dist/synthesis/conversational-synthesizer.js.map +1 -1
- package/dist/synthesis/prompt-builder.d.ts +2 -0
- package/dist/synthesis/prompt-builder.d.ts.map +1 -1
- package/dist/synthesis/prompt-builder.js +80 -81
- package/dist/synthesis/prompt-builder.js.map +1 -1
- package/dist/synthesis/synthesizer.d.ts +11 -0
- package/dist/synthesis/synthesizer.d.ts.map +1 -1
- package/dist/synthesis/synthesizer.js +29 -1
- package/dist/synthesis/synthesizer.js.map +1 -1
- package/dist/tests/helpers/test-repo.d.ts +7 -0
- package/dist/tests/helpers/test-repo.d.ts.map +1 -0
- package/dist/tests/helpers/test-repo.js +21 -0
- package/dist/tests/helpers/test-repo.js.map +1 -0
- package/dist/tests/integration/index-search.integration.test.d.ts +2 -0
- package/dist/tests/integration/index-search.integration.test.d.ts.map +1 -0
- package/dist/tests/integration/index-search.integration.test.js +163 -0
- package/dist/tests/integration/index-search.integration.test.js.map +1 -0
- package/dist/tests/simple-lru.test.js +22 -10
- package/dist/tests/simple-lru.test.js.map +1 -1
- package/dist/utils/cli-ui.d.ts.map +1 -1
- package/dist/utils/cli-ui.js +9 -3
- package/dist/utils/cli-ui.js.map +1 -1
- package/dist/utils/logger.d.ts +4 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/path-helpers.d.ts.map +1 -1
- package/dist/utils/path-helpers.js +17 -1
- package/dist/utils/path-helpers.js.map +1 -1
- package/dist/utils/scan-patterns.d.ts.map +1 -1
- package/dist/utils/scan-patterns.js +1 -2
- package/dist/utils/scan-patterns.js.map +1 -1
- package/dist/utils/simple-lru.d.ts +21 -2
- package/dist/utils/simple-lru.d.ts.map +1 -1
- package/dist/utils/simple-lru.js +126 -19
- package/dist/utils/simple-lru.js.map +1 -1
- package/package.json +13 -4
package/README.md
CHANGED
|
@@ -7,22 +7,30 @@ CodeVault is an intelligent code indexing and search system that enables AI assi
|
|
|
7
7
|
## ๐ Features
|
|
8
8
|
|
|
9
9
|
- **๐ Semantic Search**: Find code by meaning, not just keywords using vector embeddings
|
|
10
|
-
- **๐ค MCP Integration**: Native support for Claude Desktop and other MCP clients
|
|
10
|
+
- **๐ค MCP Integration**: Native support for Claude Desktop and other MCP clients (search, synthesize, update tools)
|
|
11
11
|
- **๐ฌ LLM-Synthesized Answers**: Ask questions in natural language, get markdown responses with code citations
|
|
12
12
|
- **๐ฃ๏ธ Interactive Chat Mode**: Have multi-turn conversations about your codebase with conversation history
|
|
13
13
|
- **๐ฏ Symbol-Aware Ranking**: Boost results based on function signatures, parameters, and relationships
|
|
14
14
|
- **โก Hybrid Retrieval**: Combines vector embeddings with BM25 keyword matching via Reciprocal Rank Fusion
|
|
15
15
|
- **๐ Batch Processing**: Efficient API usage with configurable batching (50 chunks/batch by default)
|
|
16
|
+
- **๐งช Integration Tests**: End-to-end coverage for indexing, search, encryption, and watch flows
|
|
16
17
|
- **๐ฆ Smart Chunking**: Token-aware semantic code splitting with overlap for optimal context
|
|
17
18
|
- **๐ Context Packs**: Save and reuse search scopes for different features/modules
|
|
18
19
|
- **๐ Local-First**: Works with local models (Ollama) or cloud APIs (OpenAI, Nebius, OpenRouter)
|
|
19
|
-
- **๐ Optional Encryption**: AES-256-GCM encryption for indexed code chunks
|
|
20
|
+
- **๐ Optional Encryption**: AES-256-GCM encryption for indexed code chunks (multi-key/rotation support)
|
|
20
21
|
- **โ๏ธ Global Configuration**: One-time setup with interactive wizard for CLI convenience
|
|
21
22
|
- **๐ Multi-Language Support**: 25+ programming languages via Tree-sitter
|
|
22
|
-
- **๐ File Watching**: Real-time index updates with debounced change detection
|
|
23
|
+
- **๐ File Watching**: Real-time index updates with debounced change detection and provider reuse
|
|
24
|
+
- **โ
CI/CD**: Typecheck + lint + tests on PR/main; auto-publish to npm on version bumps (with NPM_TOKEN)
|
|
23
25
|
- **โฑ๏ธ Rate Limiting**: Intelligent request/token throttling with automatic retry
|
|
24
26
|
- **๐พ Memory Efficient**: LRU caches with automatic cleanup for long-running processes
|
|
25
27
|
|
|
28
|
+
## ๐ Prerequisites
|
|
29
|
+
|
|
30
|
+
- **Node.js**: Version 18.0.0 or higher
|
|
31
|
+
- **npm**: Comes with Node.js
|
|
32
|
+
- **API Key**: OpenAI API key or compatible endpoint (Ollama for local models)
|
|
33
|
+
|
|
26
34
|
## ๐ Quick Start
|
|
27
35
|
|
|
28
36
|
### Installation
|
|
@@ -193,10 +201,15 @@ See complete setup guide: **[MCP Setup Guide](docs/MCP_SETUP.md)**
|
|
|
193
201
|
"CODEVAULT_RERANK_MODEL": "qwen/qwen3-reranker-8b"
|
|
194
202
|
}
|
|
195
203
|
}
|
|
196
|
-
|
|
204
|
+
}
|
|
197
205
|
}
|
|
198
206
|
```
|
|
199
207
|
|
|
208
|
+
## ๐ ๏ธ Development & CI/CD
|
|
209
|
+
|
|
210
|
+
- CI runs on PRs and pushes to `main`: `npm run typecheck`, `npm run lint`, and `npm test`.
|
|
211
|
+
- Version bumps on `main` auto-publish to npm when `NPM_TOKEN` is configured in repo secrets.
|
|
212
|
+
|
|
200
213
|
**Example configs:**
|
|
201
214
|
- [NPX (Recommended)](examples/claude-desktop-config-npx.example.json)
|
|
202
215
|
- [Full Options](examples/claude-desktop-config.example.json)
|
|
@@ -384,4 +397,4 @@ Built with:
|
|
|
384
397
|
|
|
385
398
|
**Version**: 1.6.0
|
|
386
399
|
**Built by**: Shariq Riaz
|
|
387
|
-
**Last Updated**: November 2025
|
|
400
|
+
**Last Updated**: November 2025
|
|
@@ -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;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,
|
|
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,CA6D3B"}
|
|
@@ -134,13 +134,26 @@ export async function yieldStatementChunks(node, source, maxSize, overlapSize, p
|
|
|
134
134
|
size: currentSize,
|
|
135
135
|
unit: profile.useTokens ? 'tokens' : 'characters'
|
|
136
136
|
});
|
|
137
|
-
//
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
137
|
+
// Ensure minimum 20% overlap by token/character count, not line count
|
|
138
|
+
// This prevents overlap from degrading to 1-2% for large chunks
|
|
139
|
+
const MIN_OVERLAP_RATIO = 0.2;
|
|
140
|
+
const targetOverlapSize = Math.max(overlapSize, Math.floor(maxSize * MIN_OVERLAP_RATIO));
|
|
141
|
+
// Calculate how many lines we need to achieve target overlap size
|
|
142
|
+
let overlapAccumulatedSize = 0;
|
|
143
|
+
let linesToKeep = 0;
|
|
144
|
+
// Walk backwards through lines to accumulate target overlap size
|
|
145
|
+
for (let i = currentChunk.length - 1; i >= 0 && overlapAccumulatedSize < targetOverlapSize; i--) {
|
|
146
|
+
const lineText = currentChunk[i];
|
|
147
|
+
const lineSize = profile.useTokens && profile.tokenCounter
|
|
148
|
+
? await profile.tokenCounter(lineText)
|
|
149
|
+
: lineText.length;
|
|
150
|
+
overlapAccumulatedSize += lineSize;
|
|
151
|
+
linesToKeep++;
|
|
152
|
+
}
|
|
153
|
+
// Keep at least 1 line for overlap
|
|
154
|
+
linesToKeep = Math.max(1, linesToKeep);
|
|
155
|
+
currentChunk = currentChunk.slice(-linesToKeep);
|
|
156
|
+
currentSize = overlapAccumulatedSize;
|
|
144
157
|
}
|
|
145
158
|
currentChunk.push(line);
|
|
146
159
|
currentSize += lineSize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-chunker.js","sourceRoot":"","sources":["../../src/chunking/semantic-chunker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"semantic-chunker.js","sourceRoot":"","sources":["../../src/chunking/semantic-chunker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index-cmd.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoH3D"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { indexProject } from '../../core/indexer.js';
|
|
4
|
+
import { IndexerUI } from '../../utils/cli-ui.js';
|
|
5
|
+
import { indexProjectWithProgress } from '../../utils/indexer-with-progress.js';
|
|
6
|
+
import { log } from '../../utils/logger.js';
|
|
7
|
+
import { createEmbeddingProvider, getModelProfile, getSizeLimits } from '../../providers/index.js';
|
|
8
|
+
import { resolveProviderContext } from '../../config/resolver.js';
|
|
9
|
+
export function registerIndexCommand(program) {
|
|
10
|
+
program
|
|
11
|
+
.command('index [path]')
|
|
12
|
+
.description('Index project and build codevault.codemap.json')
|
|
13
|
+
.option('-p, --provider <provider>', 'embedding provider (auto|openai)', 'auto')
|
|
14
|
+
.option('--project <path>', 'alias for project path')
|
|
15
|
+
.option('--directory <path>', 'alias for project directory')
|
|
16
|
+
.option('--encrypt <mode>', 'encrypt chunk payloads (on|off)')
|
|
17
|
+
.option('--verbose', 'show verbose output')
|
|
18
|
+
.action(async (projectPath = '.', options) => {
|
|
19
|
+
const resolvedPath = options.project || options.directory || projectPath || '.';
|
|
20
|
+
const ui = new IndexerUI();
|
|
21
|
+
try {
|
|
22
|
+
if (!options.verbose) {
|
|
23
|
+
process.env.CODEVAULT_QUIET = 'true';
|
|
24
|
+
process.env.CODEVAULT_MODEL_PROFILE_CACHED = 'true';
|
|
25
|
+
log.setQuiet(true);
|
|
26
|
+
ui.showHeader();
|
|
27
|
+
const providerContext = resolveProviderContext(resolvedPath);
|
|
28
|
+
const embeddingProvider = createEmbeddingProvider(options.provider, providerContext.embedding);
|
|
29
|
+
if (embeddingProvider.init) {
|
|
30
|
+
await embeddingProvider.init();
|
|
31
|
+
}
|
|
32
|
+
const providerName = embeddingProvider.getName();
|
|
33
|
+
const modelName = embeddingProvider.getModelName ? embeddingProvider.getModelName() : null;
|
|
34
|
+
const profile = await getModelProfile(providerName, modelName || providerName);
|
|
35
|
+
const limits = getSizeLimits(profile);
|
|
36
|
+
ui.showConfiguration({
|
|
37
|
+
provider: providerName,
|
|
38
|
+
model: modelName || undefined,
|
|
39
|
+
dimensions: embeddingProvider.getDimensions(),
|
|
40
|
+
chunkSize: {
|
|
41
|
+
min: limits.min,
|
|
42
|
+
max: limits.max,
|
|
43
|
+
optimal: limits.optimal
|
|
44
|
+
},
|
|
45
|
+
rateLimit: embeddingProvider.rateLimiter ? {
|
|
46
|
+
rpm: embeddingProvider.rateLimiter.getStats().rpm || 0
|
|
47
|
+
} : undefined
|
|
48
|
+
});
|
|
49
|
+
ui.startScanning();
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.log('Starting project indexing...');
|
|
53
|
+
console.log(`Provider: ${options.provider}`);
|
|
54
|
+
}
|
|
55
|
+
let result;
|
|
56
|
+
if (!options.verbose) {
|
|
57
|
+
result = await indexProjectWithProgress({
|
|
58
|
+
repoPath: resolvedPath,
|
|
59
|
+
provider: options.provider,
|
|
60
|
+
encryptMode: options.encrypt,
|
|
61
|
+
callbacks: {
|
|
62
|
+
onScanComplete: (fileCount) => {
|
|
63
|
+
ui.finishScanning(fileCount, 25);
|
|
64
|
+
ui.startIndexing();
|
|
65
|
+
},
|
|
66
|
+
onFileProgress: (current, total, fileName) => {
|
|
67
|
+
ui.updateProgress(fileName);
|
|
68
|
+
},
|
|
69
|
+
onFinalizing: () => {
|
|
70
|
+
ui.showFinalizing();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
ui.cleanup();
|
|
75
|
+
ui.finishIndexing();
|
|
76
|
+
const dbPath = path.join(resolvedPath, '.codevault/codevault.db');
|
|
77
|
+
const codemapPath = path.join(resolvedPath, 'codevault.codemap.json');
|
|
78
|
+
const dbSize = fs.existsSync(dbPath) ? `${(fs.statSync(dbPath).size / 1024 / 1024).toFixed(1)} MB` : undefined;
|
|
79
|
+
const codemapSize = fs.existsSync(codemapPath) ? `${(fs.statSync(codemapPath).size / 1024).toFixed(1)} KB` : undefined;
|
|
80
|
+
if (result.chunkingStats) {
|
|
81
|
+
ui.updateStats({
|
|
82
|
+
chunks: result.processedChunks,
|
|
83
|
+
merged: result.chunkingStats.mergedSmall,
|
|
84
|
+
subdivided: result.chunkingStats.subdivided,
|
|
85
|
+
skipped: result.chunkingStats.skippedSmall
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
ui.showSummary({
|
|
89
|
+
totalChunks: result.totalChunks,
|
|
90
|
+
dbSize,
|
|
91
|
+
codemapSize,
|
|
92
|
+
tokenStats: result.tokenStats
|
|
93
|
+
});
|
|
94
|
+
delete process.env.CODEVAULT_QUIET;
|
|
95
|
+
delete process.env.CODEVAULT_MODEL_PROFILE_CACHED;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
result = await indexProject({
|
|
99
|
+
repoPath: resolvedPath,
|
|
100
|
+
provider: options.provider,
|
|
101
|
+
encryptMode: options.encrypt
|
|
102
|
+
});
|
|
103
|
+
console.log('Indexing completed successfully');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
if (!options.verbose) {
|
|
108
|
+
ui.cleanup();
|
|
109
|
+
ui.showError(error.message);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
console.error('ERROR during indexing:', error.message);
|
|
113
|
+
}
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=index-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-cmd.js","sourceRoot":"","sources":["../../../src/cli/commands/index-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,2BAA2B,EAAE,kCAAkC,EAAE,MAAM,CAAC;SAC/E,MAAM,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;SACpD,MAAM,CAAC,oBAAoB,EAAE,6BAA6B,CAAC;SAC3D,MAAM,CAAC,kBAAkB,EAAE,iCAAiC,CAAC;SAC7D,MAAM,CAAC,WAAW,EAAE,qBAAqB,CAAC;SAC1C,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE;QAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,IAAI,WAAW,IAAI,GAAG,CAAC;QAChF,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,MAAM,CAAC;gBACpD,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEnB,EAAE,CAAC,UAAU,EAAE,CAAC;gBAEhB,MAAM,eAAe,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;gBAC7D,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC/F,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC;oBAC3B,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBACjC,CAAC;gBACD,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC;gBACjD,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3F,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,SAAS,IAAI,YAAY,CAAC,CAAC;gBAC/E,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;gBAEtC,EAAE,CAAC,iBAAiB,CAAC;oBACnB,QAAQ,EAAE,YAAY;oBACtB,KAAK,EAAE,SAAS,IAAI,SAAS;oBAC7B,UAAU,EAAE,iBAAiB,CAAC,aAAa,EAAE;oBAC7C,SAAS,EAAE;wBACT,GAAG,EAAE,MAAM,CAAC,GAAG;wBACf,GAAG,EAAE,MAAM,CAAC,GAAG;wBACf,OAAO,EAAE,MAAM,CAAC,OAAO;qBACxB;oBACD,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;wBACzC,GAAG,EAAE,iBAAiB,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC;qBACvD,CAAC,CAAC,CAAC,SAAS;iBACd,CAAC,CAAC;gBAEH,EAAE,CAAC,aAAa,EAAE,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,MAAM,CAAC;YAEX,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,GAAG,MAAM,wBAAwB,CAAC;oBACtC,QAAQ,EAAE,YAAY;oBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,WAAW,EAAE,OAAO,CAAC,OAAO;oBAC5B,SAAS,EAAE;wBACT,cAAc,EAAE,CAAC,SAAS,EAAE,EAAE;4BAC5B,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;4BACjC,EAAE,CAAC,aAAa,EAAE,CAAC;wBACrB,CAAC;wBACD,cAAc,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;4BAC3C,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;wBAC9B,CAAC;wBACD,YAAY,EAAE,GAAG,EAAE;4BACjB,EAAE,CAAC,cAAc,EAAE,CAAC;wBACtB,CAAC;qBACF;iBACF,CAAC,CAAC;gBAEH,EAAE,CAAC,OAAO,EAAE,CAAC;gBACb,EAAE,CAAC,cAAc,EAAE,CAAC;gBAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;gBAClE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;gBACtE,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/G,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;gBAEvH,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;oBACzB,EAAE,CAAC,WAAW,CAAC;wBACb,MAAM,EAAE,MAAM,CAAC,eAAe;wBAC9B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,WAAW;wBACxC,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,UAAU;wBAC3C,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,YAAY;qBAC3C,CAAC,CAAC;gBACL,CAAC;gBAED,EAAE,CAAC,WAAW,CAAC;oBACb,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,MAAM;oBACN,WAAW;oBACX,UAAU,EAAE,MAAM,CAAC,UAAU;iBAC9B,CAAC,CAAC;gBAEH,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;gBACnC,OAAO,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,MAAM,YAAY,CAAC;oBAC1B,QAAQ,EAAE,YAAY;oBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,WAAW,EAAE,OAAO,CAAC,OAAO;iBAC7B,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,EAAE,CAAC,OAAO,EAAE,CAAC;gBACb,EAAE,CAAC,SAAS,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info-cmd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkD1D"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { readCodemap } from '../../codemap/io.js';
|
|
3
|
+
export function registerInfoCommand(program) {
|
|
4
|
+
program
|
|
5
|
+
.command('info')
|
|
6
|
+
.description('Show project information')
|
|
7
|
+
.action(async () => {
|
|
8
|
+
try {
|
|
9
|
+
const codemapPath = 'codevault.codemap.json';
|
|
10
|
+
if (!fs.existsSync(codemapPath)) {
|
|
11
|
+
console.log('Project not indexed');
|
|
12
|
+
console.log('TIP: Run "codevault index" to index the project');
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const codemap = readCodemap(codemapPath);
|
|
16
|
+
const chunks = Object.values(codemap);
|
|
17
|
+
const langStats = chunks.reduce((acc, chunk) => {
|
|
18
|
+
acc[chunk.lang || 'unknown'] = (acc[chunk.lang || 'unknown'] || 0) + 1;
|
|
19
|
+
return acc;
|
|
20
|
+
}, {});
|
|
21
|
+
const fileStats = chunks.reduce((acc, chunk) => {
|
|
22
|
+
acc[chunk.file] = (acc[chunk.file] || 0) + 1;
|
|
23
|
+
return acc;
|
|
24
|
+
}, {});
|
|
25
|
+
const topFiles = Object.entries(fileStats)
|
|
26
|
+
.sort(([, a], [, b]) => b - a)
|
|
27
|
+
.slice(0, 10);
|
|
28
|
+
console.log('CodeVault project information\n');
|
|
29
|
+
console.log(`Total indexed functions: ${chunks.length}`);
|
|
30
|
+
console.log('');
|
|
31
|
+
console.log('By language:');
|
|
32
|
+
Object.entries(langStats).forEach(([lang, count]) => {
|
|
33
|
+
console.log(` ${lang}: ${count} functions`);
|
|
34
|
+
});
|
|
35
|
+
console.log('');
|
|
36
|
+
console.log('Files with most functions:');
|
|
37
|
+
topFiles.forEach(([file, count]) => {
|
|
38
|
+
console.log(` ${file}: ${count} functions`);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
console.error('ERROR getting information:', error.message);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=info-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info-cmd.js","sourceRoot":"","sources":["../../../src/cli/commands/info-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,wBAAwB,CAAC;YAE7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAEtC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAA2B,EAAE,KAAK,EAAE,EAAE;gBACrE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACvE,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAA2B,EAAE,KAAK,EAAE,EAAE;gBACrE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7C,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;iBACvC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;iBAC7B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEhB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,4BAA4B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;gBAClD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,KAAK,YAAY,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC1C,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;gBACjC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,KAAK,YAAY,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mcp-cmd.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiCzD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
export function registerMcpCommand(program) {
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = path.dirname(__filename);
|
|
7
|
+
program
|
|
8
|
+
.command('mcp')
|
|
9
|
+
.description('Start MCP server')
|
|
10
|
+
.action(() => {
|
|
11
|
+
const serverPath = path.join(__dirname, '..', '..', 'mcp-server.js');
|
|
12
|
+
const mcpServer = spawn('node', [serverPath], {
|
|
13
|
+
stdio: 'inherit'
|
|
14
|
+
});
|
|
15
|
+
mcpServer.on('error', (error) => {
|
|
16
|
+
process.stderr.write(`ERROR starting MCP server: ${error.message}\n`);
|
|
17
|
+
process.exit(1);
|
|
18
|
+
});
|
|
19
|
+
mcpServer.on('exit', (code) => {
|
|
20
|
+
if (code !== 0) {
|
|
21
|
+
process.stderr.write(`MCP server terminated with code: ${code}\n`);
|
|
22
|
+
process.exit(code || 0);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
process.on('SIGINT', () => {
|
|
26
|
+
mcpServer.kill('SIGINT');
|
|
27
|
+
});
|
|
28
|
+
process.on('SIGTERM', () => {
|
|
29
|
+
mcpServer.kill('SIGTERM');
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=mcp-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-cmd.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE3C,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,kBAAkB,CAAC;SAC/B,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE;YAC5C,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC5B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,IAAI,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACzB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search-cmd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqD5D"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { resolveScopeWithPack } from '../../context/packs.js';
|
|
3
|
+
import { searchCode } from '../../core/search.js';
|
|
4
|
+
export function registerSearchCommand(program) {
|
|
5
|
+
program
|
|
6
|
+
.command('search <query> [path]')
|
|
7
|
+
.description('Search indexed code (returns metadata only)')
|
|
8
|
+
.option('-k, --limit <num>', 'maximum results', '10')
|
|
9
|
+
.option('-p, --provider <provider>', 'embedding provider', 'auto')
|
|
10
|
+
.option('--project <path>', 'project path')
|
|
11
|
+
.option('--directory <path>', 'project directory')
|
|
12
|
+
.option('--path_glob <pattern...>', 'file patterns')
|
|
13
|
+
.option('--tags <tag...>', 'filter by tags')
|
|
14
|
+
.option('--lang <language...>', 'filter by language')
|
|
15
|
+
.option('--reranker <mode>', 'reranker (off|api)', 'off')
|
|
16
|
+
.option('--hybrid <mode>', 'hybrid search (on|off)', 'on')
|
|
17
|
+
.option('--bm25 <mode>', 'BM25 (on|off)', 'on')
|
|
18
|
+
.option('--symbol_boost <mode>', 'symbol boost (on|off)', 'on')
|
|
19
|
+
.action(async (query, projectPath = '.', options) => {
|
|
20
|
+
try {
|
|
21
|
+
process.env.CODEVAULT_QUIET = 'true';
|
|
22
|
+
const resolvedPath = options.project || options.directory || projectPath || '.';
|
|
23
|
+
const limit = parseInt(options.limit);
|
|
24
|
+
const { scope: scopeFilters } = resolveScopeWithPack(options, { basePath: resolvedPath });
|
|
25
|
+
const results = await searchCode(query, limit, options.provider, resolvedPath, scopeFilters);
|
|
26
|
+
if (!results.success) {
|
|
27
|
+
console.log(chalk.yellow(`\nNo results found for "${query}"`));
|
|
28
|
+
if (results.suggestion) {
|
|
29
|
+
console.log(chalk.gray(`Suggestion: ${results.suggestion}`));
|
|
30
|
+
}
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (results.results.length === 0) {
|
|
34
|
+
console.log(chalk.yellow(`\nNo results found for "${query}"`));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
console.log(chalk.cyan(`\n๐ Found ${results.results.length} results for "${query}"\n`));
|
|
38
|
+
results.results.forEach((result, index) => {
|
|
39
|
+
const score = (result.meta.score * 100).toFixed(0);
|
|
40
|
+
console.log(chalk.white(`${index + 1}. ${result.path}`));
|
|
41
|
+
console.log(chalk.gray(` ${result.meta.symbol}() ยท ${result.lang}`));
|
|
42
|
+
console.log(chalk.gray(` Score: ${score}%\n`));
|
|
43
|
+
});
|
|
44
|
+
delete process.env.CODEVAULT_QUIET;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error(chalk.red('\nโ Search error:'), error.message);
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=search-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-cmd.js","sourceRoot":"","sources":["../../../src/cli/commands/search-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-with-code-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search-with-code-cmd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkFpE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { resolveScopeWithPack } from '../../context/packs.js';
|
|
3
|
+
import { searchCode } from '../../core/search.js';
|
|
4
|
+
export function registerSearchWithCodeCommand(program) {
|
|
5
|
+
program
|
|
6
|
+
.command('search-with-code <query> [path]')
|
|
7
|
+
.description('Search indexed code and display full code chunks')
|
|
8
|
+
.option('-k, --limit <num>', 'maximum results', '5')
|
|
9
|
+
.option('-p, --provider <provider>', 'embedding provider', 'auto')
|
|
10
|
+
.option('--project <path>', 'project path')
|
|
11
|
+
.option('--directory <path>', 'project directory')
|
|
12
|
+
.option('--path_glob <pattern...>', 'file patterns')
|
|
13
|
+
.option('--tags <tag...>', 'filter by tags')
|
|
14
|
+
.option('--lang <language...>', 'filter by language')
|
|
15
|
+
.option('--reranker <mode>', 'reranker (off|api)', 'off')
|
|
16
|
+
.option('--hybrid <mode>', 'hybrid search (on|off)', 'on')
|
|
17
|
+
.option('--bm25 <mode>', 'BM25 (on|off)', 'on')
|
|
18
|
+
.option('--symbol_boost <mode>', 'symbol boost (on|off)', 'on')
|
|
19
|
+
.option('--max-code-size <bytes>', 'max code size to display per chunk', '100000')
|
|
20
|
+
.action(async (query, projectPath = '.', options) => {
|
|
21
|
+
try {
|
|
22
|
+
process.env.CODEVAULT_QUIET = 'true';
|
|
23
|
+
const resolvedPath = options.project || options.directory || projectPath || '.';
|
|
24
|
+
const limit = parseInt(options.limit);
|
|
25
|
+
const maxCodeSize = parseInt(options.maxCodeSize || '100000');
|
|
26
|
+
const { scope: scopeFilters } = resolveScopeWithPack(options, { basePath: resolvedPath });
|
|
27
|
+
const results = await searchCode(query, limit, options.provider, resolvedPath, scopeFilters);
|
|
28
|
+
if (!results.success) {
|
|
29
|
+
console.log(chalk.yellow(`\nNo results found for "${query}"`));
|
|
30
|
+
if (results.suggestion) {
|
|
31
|
+
console.log(chalk.gray(`Suggestion: ${results.suggestion}`));
|
|
32
|
+
}
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (results.results.length === 0) {
|
|
36
|
+
console.log(chalk.yellow(`\nNo results found for "${query}"`));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
console.log(chalk.cyan(`\n๐ Found ${results.results.length} results with code for "${query}"\n`));
|
|
40
|
+
const { getChunk } = await import('../../core/search.js');
|
|
41
|
+
for (let index = 0; index < results.results.length; index++) {
|
|
42
|
+
const result = results.results[index];
|
|
43
|
+
const score = (result.meta.score * 100).toFixed(0);
|
|
44
|
+
console.log(chalk.gray('โ'.repeat(80)));
|
|
45
|
+
console.log(chalk.white(`๐ ${result.path} ยท ${result.meta.symbol}() ยท Score: ${score}%`));
|
|
46
|
+
console.log(chalk.gray('โ'.repeat(80)));
|
|
47
|
+
const chunkResult = await getChunk(result.sha, resolvedPath);
|
|
48
|
+
if (chunkResult.success && chunkResult.code) {
|
|
49
|
+
let code = chunkResult.code;
|
|
50
|
+
let truncated = false;
|
|
51
|
+
if (code.length > maxCodeSize) {
|
|
52
|
+
code = code.substring(0, maxCodeSize);
|
|
53
|
+
truncated = true;
|
|
54
|
+
}
|
|
55
|
+
console.log();
|
|
56
|
+
console.log(code);
|
|
57
|
+
if (truncated) {
|
|
58
|
+
console.log(chalk.yellow(`\nโ ๏ธ Code truncated (${chunkResult.code.length} chars, showing ${maxCodeSize})`));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
console.log(chalk.red(`\nโ Error retrieving code: ${chunkResult.error}`));
|
|
63
|
+
}
|
|
64
|
+
console.log('');
|
|
65
|
+
}
|
|
66
|
+
delete process.env.CODEVAULT_QUIET;
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
console.error(chalk.red('\nโ Search error:'), error.message);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=search-with-code-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-with-code-cmd.js","sourceRoot":"","sources":["../../../src/cli/commands/search-with-code-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,UAAU,6BAA6B,CAAC,OAAgB;IAC5D,OAAO;SACJ,OAAO,CAAC,iCAAiC,CAAC;SAC1C,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,GAAG,CAAC;SACnD,MAAM,CAAC,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,CAAC;SACjE,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC;SAC1C,MAAM,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;SACjD,MAAM,CAAC,0BAA0B,EAAE,eAAe,CAAC;SACnD,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;SAC3C,MAAM,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;SACpD,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,KAAK,CAAC;SACxD,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,IAAI,CAAC;SACzD,MAAM,CAAC,eAAe,EAAE,eAAe,EAAE,IAAI,CAAC;SAC9C,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,IAAI,CAAC;SAC9D,MAAM,CAAC,yBAAyB,EAAE,oCAAoC,EAAE,QAAQ,CAAC;SACjF,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE;QAClD,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC;YAErC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,IAAI,WAAW,IAAI,GAAG,CAAC;YAChF,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAC;YAE9D,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;YAC1F,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YAE7F,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC/D,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,OAAO,CAAC,MAAM,2BAA2B,KAAK,KAAK,CAAC,CAAC,CAAC;YAEnG,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAE1D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtC,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,eAAe,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC3F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAExC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;gBAE7D,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;oBAC5C,IAAI,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;oBAC5B,IAAI,SAAS,GAAG,KAAK,CAAC;oBAEtB,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;wBAC9B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;wBACtC,SAAS,GAAG,IAAI,CAAC;oBACnB,CAAC;oBAED,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAElB,IAAI,SAAS,EAAE,CAAC;wBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,WAAW,CAAC,IAAI,CAAC,MAAM,mBAAmB,WAAW,GAAG,CAAC,CAAC,CAAC;oBAC/G,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC5E,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB5D"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { indexProject } from '../../core/indexer.js';
|
|
2
|
+
export function registerUpdateCommand(program) {
|
|
3
|
+
program
|
|
4
|
+
.command('update [path]')
|
|
5
|
+
.description('Update index by re-scanning all files')
|
|
6
|
+
.option('-p, --provider <provider>', 'embedding provider (auto|openai)', 'auto')
|
|
7
|
+
.option('--project <path>', 'alias for project path')
|
|
8
|
+
.option('--directory <path>', 'alias for project directory')
|
|
9
|
+
.option('--encrypt <mode>', 'encrypt chunk payloads (on|off)')
|
|
10
|
+
.action(async (projectPath = '.', options) => {
|
|
11
|
+
const resolvedPath = options.project || options.directory || projectPath || '.';
|
|
12
|
+
console.log('๐ Updating project index...');
|
|
13
|
+
console.log(`Provider: ${options.provider}`);
|
|
14
|
+
try {
|
|
15
|
+
await indexProject({ repoPath: resolvedPath, provider: options.provider, encryptMode: options.encrypt });
|
|
16
|
+
console.log('โ
Index updated successfully');
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
console.error('โ ERROR during update:', error.message);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=update-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-cmd.js","sourceRoot":"","sources":["../../../src/cli/commands/update-cmd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,2BAA2B,EAAE,kCAAkC,EAAE,MAAM,CAAC;SAC/E,MAAM,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;SACpD,MAAM,CAAC,oBAAoB,EAAE,6BAA6B,CAAC;SAC3D,MAAM,CAAC,kBAAkB,EAAE,iCAAiC,CAAC;SAC7D,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE;QAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,IAAI,WAAW,IAAI,GAAG,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACzG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-cmd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD3D"}
|