codevault 1.8.3 → 1.8.5
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 +33 -5
- package/dist/chunking/file-grouper.d.ts +1 -1
- package/dist/chunking/file-grouper.d.ts.map +1 -1
- package/dist/chunking/file-grouper.js +3 -3
- package/dist/chunking/file-grouper.js.map +1 -1
- package/dist/chunking/semantic-chunker.d.ts +1 -1
- package/dist/chunking/semantic-chunker.d.ts.map +1 -1
- package/dist/chunking/token-counter.d.ts +1 -1
- package/dist/chunking/token-counter.d.ts.map +1 -1
- package/dist/chunking/token-counter.js +16 -10
- package/dist/chunking/token-counter.js.map +1 -1
- package/dist/cli/commands/ask-cmd.js +15 -15
- package/dist/cli/commands/ask-cmd.js.map +1 -1
- package/dist/cli/commands/chat-cmd.d.ts.map +1 -1
- package/dist/cli/commands/chat-cmd.js +40 -40
- package/dist/cli/commands/chat-cmd.js.map +1 -1
- package/dist/cli/commands/config-cmd.d.ts.map +1 -1
- package/dist/cli/commands/config-cmd.js +61 -52
- package/dist/cli/commands/config-cmd.js.map +1 -1
- package/dist/cli/commands/context.d.ts.map +1 -1
- package/dist/cli/commands/context.js +20 -11
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/index-cmd.d.ts.map +1 -1
- package/dist/cli/commands/index-cmd.js +109 -85
- package/dist/cli/commands/index-cmd.js.map +1 -1
- package/dist/cli/commands/info-cmd.d.ts.map +1 -1
- package/dist/cli/commands/info-cmd.js +12 -11
- package/dist/cli/commands/info-cmd.js.map +1 -1
- package/dist/cli/commands/interactive-config.d.ts.map +1 -1
- package/dist/cli/commands/interactive-config.js +60 -20
- package/dist/cli/commands/interactive-config.js.map +1 -1
- package/dist/cli/commands/search-cmd.d.ts.map +1 -1
- package/dist/cli/commands/search-cmd.js +22 -11
- package/dist/cli/commands/search-cmd.js.map +1 -1
- package/dist/cli/commands/search-with-code-cmd.d.ts.map +1 -1
- package/dist/cli/commands/search-with-code-cmd.js +25 -16
- package/dist/cli/commands/search-with-code-cmd.js.map +1 -1
- package/dist/cli/commands/update-cmd.d.ts.map +1 -1
- package/dist/cli/commands/update-cmd.js +16 -7
- package/dist/cli/commands/update-cmd.js.map +1 -1
- package/dist/cli/commands/watch-cmd.d.ts.map +1 -1
- package/dist/cli/commands/watch-cmd.js +21 -11
- package/dist/cli/commands/watch-cmd.js.map +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils.d.ts +56 -0
- package/dist/cli/utils.d.ts.map +1 -0
- package/dist/cli/utils.js +98 -0
- package/dist/cli/utils.js.map +1 -0
- package/dist/cli.js +0 -0
- package/dist/codemap/io.js.map +1 -1
- package/dist/config/constants.d.ts +4 -0
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +2 -0
- package/dist/config/constants.js.map +1 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/context/packs.d.ts +2 -2
- package/dist/context/packs.d.ts.map +1 -1
- package/dist/context/packs.js +7 -4
- package/dist/context/packs.js.map +1 -1
- package/dist/core/IndexerEngine.d.ts +2 -0
- package/dist/core/IndexerEngine.d.ts.map +1 -1
- package/dist/core/IndexerEngine.js +34 -26
- package/dist/core/IndexerEngine.js.map +1 -1
- package/dist/core/SearchService.d.ts +2 -1
- package/dist/core/SearchService.d.ts.map +1 -1
- package/dist/core/SearchService.js +25 -18
- package/dist/core/SearchService.js.map +1 -1
- package/dist/core/batch-indexer.d.ts +4 -3
- package/dist/core/batch-indexer.d.ts.map +1 -1
- package/dist/core/batch-indexer.js +32 -35
- package/dist/core/batch-indexer.js.map +1 -1
- package/dist/core/indexing/FileProcessor.d.ts +1 -0
- package/dist/core/indexing/FileProcessor.d.ts.map +1 -1
- package/dist/core/indexing/FileProcessor.js +32 -9
- package/dist/core/indexing/FileProcessor.js.map +1 -1
- package/dist/core/indexing/IndexContext.d.ts +6 -4
- package/dist/core/indexing/IndexContext.d.ts.map +1 -1
- package/dist/core/indexing/IndexContext.js +3 -3
- package/dist/core/indexing/IndexContext.js.map +1 -1
- package/dist/core/indexing/IndexFinalizationStage.d.ts +6 -1
- package/dist/core/indexing/IndexFinalizationStage.d.ts.map +1 -1
- package/dist/core/indexing/IndexFinalizationStage.js +22 -3
- package/dist/core/indexing/IndexFinalizationStage.js.map +1 -1
- package/dist/core/indexing/IndexState.d.ts +3 -8
- package/dist/core/indexing/IndexState.d.ts.map +1 -1
- package/dist/core/indexing/IndexState.js.map +1 -1
- package/dist/core/indexing/PersistManager.d.ts +1 -1
- package/dist/core/indexing/PersistManager.d.ts.map +1 -1
- package/dist/core/indexing/PersistManager.js +17 -17
- package/dist/core/indexing/PersistManager.js.map +1 -1
- package/dist/core/indexing/chunk-pipeline.d.ts +33 -7
- package/dist/core/indexing/chunk-pipeline.d.ts.map +1 -1
- package/dist/core/indexing/chunk-pipeline.js +20 -8
- package/dist/core/indexing/chunk-pipeline.js.map +1 -1
- package/dist/core/metadata.d.ts +1 -1
- package/dist/core/metadata.d.ts.map +1 -1
- package/dist/core/metadata.js +1 -1
- package/dist/core/metadata.js.map +1 -1
- package/dist/core/search/CandidateRetriever.d.ts +1 -1
- package/dist/core/search/CandidateRetriever.d.ts.map +1 -1
- package/dist/core/search/CandidateRetriever.js +7 -5
- package/dist/core/search/CandidateRetriever.js.map +1 -1
- package/dist/core/search/HybridFusion.d.ts +1 -2
- package/dist/core/search/HybridFusion.d.ts.map +1 -1
- package/dist/core/search/HybridFusion.js +5 -17
- package/dist/core/search/HybridFusion.js.map +1 -1
- package/dist/core/search/ResultMapper.d.ts +0 -1
- package/dist/core/search/ResultMapper.d.ts.map +1 -1
- package/dist/core/search/ResultMapper.js +3 -14
- package/dist/core/search/ResultMapper.js.map +1 -1
- package/dist/core/search/SearchContextManager.d.ts +4 -1
- package/dist/core/search/SearchContextManager.d.ts.map +1 -1
- package/dist/core/search/SearchContextManager.js +19 -6
- package/dist/core/search/SearchContextManager.js.map +1 -1
- package/dist/core/search.d.ts.map +1 -1
- package/dist/core/search.js +9 -4
- package/dist/core/search.js.map +1 -1
- package/dist/core/types.d.ts +2 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/database/db.d.ts +14 -14
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +14 -14
- package/dist/database/db.js.map +1 -1
- package/dist/indexer/merkle.js +1 -1
- package/dist/indexer/merkle.js.map +1 -1
- package/dist/languages/rules.d.ts +2 -1
- package/dist/languages/rules.d.ts.map +1 -1
- package/dist/languages/rules.js +14 -5
- package/dist/languages/rules.js.map +1 -1
- package/dist/languages/tree-sitter-loader.d.ts +24 -24
- package/dist/languages/tree-sitter-loader.d.ts.map +1 -1
- package/dist/languages/tree-sitter-loader.js +14 -10
- package/dist/languages/tree-sitter-loader.js.map +1 -1
- package/dist/mcp/handlers/context.d.ts +5 -11
- package/dist/mcp/handlers/context.d.ts.map +1 -1
- package/dist/mcp/handlers/context.js.map +1 -1
- package/dist/mcp/handlers/project.d.ts +9 -27
- package/dist/mcp/handlers/project.d.ts.map +1 -1
- package/dist/mcp/handlers/search.d.ts +24 -18
- package/dist/mcp/handlers/search.d.ts.map +1 -1
- package/dist/mcp/handlers/search.js +8 -2
- package/dist/mcp/handlers/search.js.map +1 -1
- package/dist/mcp/handlers/synthesis.d.ts +15 -11
- package/dist/mcp/handlers/synthesis.d.ts.map +1 -1
- package/dist/mcp/handlers/synthesis.js +4 -1
- package/dist/mcp/handlers/synthesis.js.map +1 -1
- package/dist/mcp/schemas.d.ts +2 -2
- package/dist/mcp/tools/ask-codebase.d.ts +10 -28
- package/dist/mcp/tools/ask-codebase.d.ts.map +1 -1
- package/dist/mcp/tools/ask-codebase.js +1 -1
- package/dist/mcp/tools/ask-codebase.js.map +1 -1
- package/dist/mcp/tools/use-context-pack.d.ts +14 -23
- package/dist/mcp/tools/use-context-pack.d.ts.map +1 -1
- package/dist/mcp/tools/use-context-pack.js +4 -3
- package/dist/mcp/tools/use-context-pack.js.map +1 -1
- package/dist/mcp-server.d.ts +1 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +39 -24
- package/dist/mcp-server.js.map +1 -1
- package/dist/providers/base.d.ts +3 -2
- package/dist/providers/base.d.ts.map +1 -1
- package/dist/providers/base.js +3 -10
- package/dist/providers/base.js.map +1 -1
- package/dist/providers/chat-llm.d.ts +3 -2
- package/dist/providers/chat-llm.d.ts.map +1 -1
- package/dist/providers/chat-llm.js +13 -9
- package/dist/providers/chat-llm.js.map +1 -1
- package/dist/providers/mock.d.ts.map +1 -1
- package/dist/providers/mock.js +6 -5
- package/dist/providers/mock.js.map +1 -1
- package/dist/providers/openai.d.ts +2 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +15 -19
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/token-counter.d.ts.map +1 -1
- package/dist/providers/token-counter.js +11 -3
- package/dist/providers/token-counter.js.map +1 -1
- package/dist/ranking/api-reranker.d.ts +1 -1
- package/dist/ranking/api-reranker.d.ts.map +1 -1
- package/dist/ranking/api-reranker.js +50 -13
- package/dist/ranking/api-reranker.js.map +1 -1
- package/dist/ranking/symbol-boost.d.ts.map +1 -1
- package/dist/ranking/symbol-boost.js +4 -11
- package/dist/ranking/symbol-boost.js.map +1 -1
- package/dist/search/bm25.d.ts +10 -0
- package/dist/search/bm25.d.ts.map +1 -1
- package/dist/search/bm25.js +16 -0
- package/dist/search/bm25.js.map +1 -1
- package/dist/search/hybrid.js.map +1 -1
- package/dist/search/scope.d.ts.map +1 -1
- package/dist/search/scope.js +3 -2
- package/dist/search/scope.js.map +1 -1
- package/dist/storage/encrypted-chunks.d.ts +3 -0
- package/dist/storage/encrypted-chunks.d.ts.map +1 -1
- package/dist/storage/encrypted-chunks.js +126 -47
- package/dist/storage/encrypted-chunks.js.map +1 -1
- package/dist/symbols/extract.d.ts.map +1 -1
- package/dist/symbols/extract.js +3 -2
- package/dist/symbols/extract.js.map +1 -1
- package/dist/symbols/graph.d.ts.map +1 -1
- package/dist/symbols/graph.js +14 -8
- package/dist/symbols/graph.js.map +1 -1
- package/dist/synthesis/conversational-synthesizer.d.ts +2 -1
- package/dist/synthesis/conversational-synthesizer.d.ts.map +1 -1
- package/dist/synthesis/conversational-synthesizer.js +6 -1
- package/dist/synthesis/conversational-synthesizer.js.map +1 -1
- package/dist/synthesis/markdown-formatter.d.ts.map +1 -1
- package/dist/synthesis/markdown-formatter.js +1 -1
- package/dist/synthesis/markdown-formatter.js.map +1 -1
- package/dist/synthesis/prompt-builder.d.ts.map +1 -1
- package/dist/synthesis/prompt-builder.js +42 -15
- package/dist/synthesis/prompt-builder.js.map +1 -1
- package/dist/synthesis/synthesizer.d.ts.map +1 -1
- package/dist/synthesis/synthesizer.js +23 -10
- package/dist/synthesis/synthesizer.js.map +1 -1
- package/dist/tests/api-reranker.test.d.ts +2 -0
- package/dist/tests/api-reranker.test.d.ts.map +1 -0
- package/dist/tests/api-reranker.test.js +575 -0
- package/dist/tests/api-reranker.test.js.map +1 -0
- package/dist/tests/bm25.test.d.ts +2 -0
- package/dist/tests/bm25.test.d.ts.map +1 -0
- package/dist/tests/bm25.test.js +340 -0
- package/dist/tests/bm25.test.js.map +1 -0
- package/dist/tests/chunking/file-grouper.test.d.ts +2 -0
- package/dist/tests/chunking/file-grouper.test.d.ts.map +1 -0
- package/dist/tests/chunking/file-grouper.test.js +495 -0
- package/dist/tests/chunking/file-grouper.test.js.map +1 -0
- package/dist/tests/chunking/semantic-chunker.test.d.ts +2 -0
- package/dist/tests/chunking/semantic-chunker.test.d.ts.map +1 -0
- package/dist/tests/chunking/semantic-chunker.test.js +509 -0
- package/dist/tests/chunking/semantic-chunker.test.js.map +1 -0
- package/dist/tests/chunking/token-counter.test.d.ts +2 -0
- package/dist/tests/chunking/token-counter.test.d.ts.map +1 -0
- package/dist/tests/chunking/token-counter.test.js +441 -0
- package/dist/tests/chunking/token-counter.test.js.map +1 -0
- package/dist/tests/cli/ask-cmd.test.d.ts +2 -0
- package/dist/tests/cli/ask-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/ask-cmd.test.js +152 -0
- package/dist/tests/cli/ask-cmd.test.js.map +1 -0
- package/dist/tests/cli/chat-cmd.test.d.ts +2 -0
- package/dist/tests/cli/chat-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/chat-cmd.test.js +118 -0
- package/dist/tests/cli/chat-cmd.test.js.map +1 -0
- package/dist/tests/cli/config-cmd.test.d.ts +2 -0
- package/dist/tests/cli/config-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/config-cmd.test.js +226 -0
- package/dist/tests/cli/config-cmd.test.js.map +1 -0
- package/dist/tests/cli/context.test.d.ts +2 -0
- package/dist/tests/cli/context.test.d.ts.map +1 -0
- package/dist/tests/cli/context.test.js +158 -0
- package/dist/tests/cli/context.test.js.map +1 -0
- package/dist/tests/cli/index-cmd.test.d.ts +2 -0
- package/dist/tests/cli/index-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/index-cmd.test.js +89 -0
- package/dist/tests/cli/index-cmd.test.js.map +1 -0
- package/dist/tests/cli/index.test.d.ts +2 -0
- package/dist/tests/cli/index.test.d.ts.map +1 -0
- package/dist/tests/cli/index.test.js +167 -0
- package/dist/tests/cli/index.test.js.map +1 -0
- package/dist/tests/cli/info-cmd.test.d.ts +2 -0
- package/dist/tests/cli/info-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/info-cmd.test.js +47 -0
- package/dist/tests/cli/info-cmd.test.js.map +1 -0
- package/dist/tests/cli/interactive-config.test.d.ts +2 -0
- package/dist/tests/cli/interactive-config.test.d.ts.map +1 -0
- package/dist/tests/cli/interactive-config.test.js +30 -0
- package/dist/tests/cli/interactive-config.test.js.map +1 -0
- package/dist/tests/cli/mcp-cmd.test.d.ts +2 -0
- package/dist/tests/cli/mcp-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/mcp-cmd.test.js +47 -0
- package/dist/tests/cli/mcp-cmd.test.js.map +1 -0
- package/dist/tests/cli/search-cmd.test.d.ts +2 -0
- package/dist/tests/cli/search-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/search-cmd.test.js +120 -0
- package/dist/tests/cli/search-cmd.test.js.map +1 -0
- package/dist/tests/cli/search-with-code-cmd.test.d.ts +2 -0
- package/dist/tests/cli/search-with-code-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/search-with-code-cmd.test.js +140 -0
- package/dist/tests/cli/search-with-code-cmd.test.js.map +1 -0
- package/dist/tests/cli/update-cmd.test.d.ts +2 -0
- package/dist/tests/cli/update-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/update-cmd.test.js +75 -0
- package/dist/tests/cli/update-cmd.test.js.map +1 -0
- package/dist/tests/cli/utils.test.d.ts +2 -0
- package/dist/tests/cli/utils.test.d.ts.map +1 -0
- package/dist/tests/cli/utils.test.js +119 -0
- package/dist/tests/cli/utils.test.js.map +1 -0
- package/dist/tests/cli/watch-cmd.test.d.ts +2 -0
- package/dist/tests/cli/watch-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/watch-cmd.test.js +84 -0
- package/dist/tests/cli/watch-cmd.test.js.map +1 -0
- package/dist/tests/cli-ui.test.d.ts +2 -0
- package/dist/tests/cli-ui.test.d.ts.map +1 -0
- package/dist/tests/cli-ui.test.js +608 -0
- package/dist/tests/cli-ui.test.js.map +1 -0
- package/dist/tests/codemap-io.test.d.ts +2 -0
- package/dist/tests/codemap-io.test.d.ts.map +1 -0
- package/dist/tests/codemap-io.test.js +992 -0
- package/dist/tests/codemap-io.test.js.map +1 -0
- package/dist/tests/config/apply-env.test.d.ts +2 -0
- package/dist/tests/config/apply-env.test.d.ts.map +1 -0
- package/dist/tests/config/apply-env.test.js +717 -0
- package/dist/tests/config/apply-env.test.js.map +1 -0
- package/dist/tests/config/constants.test.d.ts +2 -0
- package/dist/tests/config/constants.test.d.ts.map +1 -0
- package/dist/tests/config/constants.test.js +406 -0
- package/dist/tests/config/constants.test.js.map +1 -0
- package/dist/tests/config/loader.test.d.ts +2 -0
- package/dist/tests/config/loader.test.d.ts.map +1 -0
- package/dist/tests/config/loader.test.js +716 -0
- package/dist/tests/config/loader.test.js.map +1 -0
- package/dist/tests/config/resolver.test.d.ts +2 -0
- package/dist/tests/config/resolver.test.d.ts.map +1 -0
- package/dist/tests/config/resolver.test.js +402 -0
- package/dist/tests/config/resolver.test.js.map +1 -0
- package/dist/tests/config/types.test.d.ts +2 -0
- package/dist/tests/config/types.test.d.ts.map +1 -0
- package/dist/tests/config/types.test.js +460 -0
- package/dist/tests/config/types.test.js.map +1 -0
- package/dist/tests/context-packs.test.d.ts +2 -0
- package/dist/tests/context-packs.test.d.ts.map +1 -0
- package/dist/tests/context-packs.test.js +826 -0
- package/dist/tests/context-packs.test.js.map +1 -0
- package/dist/tests/conversational-synthesizer.test.d.ts +2 -0
- package/dist/tests/conversational-synthesizer.test.d.ts.map +1 -0
- package/dist/tests/conversational-synthesizer.test.js +595 -0
- package/dist/tests/conversational-synthesizer.test.js.map +1 -0
- package/dist/tests/database.test.d.ts +2 -0
- package/dist/tests/database.test.d.ts.map +1 -0
- package/dist/tests/database.test.js +965 -0
- package/dist/tests/database.test.js.map +1 -0
- package/dist/tests/encrypted-chunks.test.d.ts +2 -0
- package/dist/tests/encrypted-chunks.test.d.ts.map +1 -0
- package/dist/tests/encrypted-chunks.test.js +1470 -0
- package/dist/tests/encrypted-chunks.test.js.map +1 -0
- package/dist/tests/hybrid.test.d.ts +2 -0
- package/dist/tests/hybrid.test.d.ts.map +1 -0
- package/dist/tests/hybrid.test.js +456 -0
- package/dist/tests/hybrid.test.js.map +1 -0
- package/dist/tests/indexer/ChangeQueue.test.d.ts +12 -0
- package/dist/tests/indexer/ChangeQueue.test.d.ts.map +1 -0
- package/dist/tests/indexer/ChangeQueue.test.js +441 -0
- package/dist/tests/indexer/ChangeQueue.test.js.map +1 -0
- package/dist/tests/indexer/ProviderManager.test.d.ts +12 -0
- package/dist/tests/indexer/ProviderManager.test.d.ts.map +1 -0
- package/dist/tests/indexer/ProviderManager.test.js +290 -0
- package/dist/tests/indexer/ProviderManager.test.js.map +1 -0
- package/dist/tests/indexer/WatchService.test.d.ts +14 -0
- package/dist/tests/indexer/WatchService.test.d.ts.map +1 -0
- package/dist/tests/indexer/WatchService.test.js +667 -0
- package/dist/tests/indexer/WatchService.test.js.map +1 -0
- package/dist/tests/indexer/merkle.test.d.ts +11 -0
- package/dist/tests/indexer/merkle.test.d.ts.map +1 -0
- package/dist/tests/indexer/merkle.test.js +497 -0
- package/dist/tests/indexer/merkle.test.js.map +1 -0
- package/dist/tests/indexer/update.test.d.ts +10 -0
- package/dist/tests/indexer/update.test.d.ts.map +1 -0
- package/dist/tests/indexer/update.test.js +317 -0
- package/dist/tests/indexer/update.test.js.map +1 -0
- package/dist/tests/indexer/watch.test.d.ts +8 -0
- package/dist/tests/indexer/watch.test.d.ts.map +1 -0
- package/dist/tests/indexer/watch.test.js +95 -0
- package/dist/tests/indexer/watch.test.js.map +1 -0
- package/dist/tests/integration/index-search.integration.test.js +6 -4
- package/dist/tests/integration/index-search.integration.test.js.map +1 -1
- package/dist/tests/languages.test.d.ts +2 -0
- package/dist/tests/languages.test.d.ts.map +1 -0
- package/dist/tests/languages.test.js +575 -0
- package/dist/tests/languages.test.js.map +1 -0
- package/dist/tests/logger-redaction.test.d.ts +2 -0
- package/dist/tests/logger-redaction.test.d.ts.map +1 -0
- package/dist/tests/logger-redaction.test.js +48 -0
- package/dist/tests/logger-redaction.test.js.map +1 -0
- package/dist/tests/logger.test.d.ts +2 -0
- package/dist/tests/logger.test.d.ts.map +1 -0
- package/dist/tests/logger.test.js +468 -0
- package/dist/tests/logger.test.js.map +1 -0
- package/dist/tests/markdown-formatter.test.d.ts +2 -0
- package/dist/tests/markdown-formatter.test.d.ts.map +1 -0
- package/dist/tests/markdown-formatter.test.js +453 -0
- package/dist/tests/markdown-formatter.test.js.map +1 -0
- package/dist/tests/mcp/tools/use-context-pack.test.d.ts +7 -0
- package/dist/tests/mcp/tools/use-context-pack.test.d.ts.map +1 -0
- package/dist/tests/mcp/tools/use-context-pack.test.js +505 -0
- package/dist/tests/mcp/tools/use-context-pack.test.js.map +1 -0
- package/dist/tests/mutex.test.d.ts +2 -0
- package/dist/tests/mutex.test.d.ts.map +1 -0
- package/dist/tests/mutex.test.js +489 -0
- package/dist/tests/mutex.test.js.map +1 -0
- package/dist/tests/path-helpers.test.d.ts +2 -0
- package/dist/tests/path-helpers.test.d.ts.map +1 -0
- package/dist/tests/path-helpers.test.js +332 -0
- package/dist/tests/path-helpers.test.js.map +1 -0
- package/dist/tests/prompt-builder.test.d.ts +2 -0
- package/dist/tests/prompt-builder.test.d.ts.map +1 -0
- package/dist/tests/prompt-builder.test.js +417 -0
- package/dist/tests/prompt-builder.test.js.map +1 -0
- package/dist/tests/providers/base.test.d.ts +2 -0
- package/dist/tests/providers/base.test.d.ts.map +1 -0
- package/dist/tests/providers/base.test.js +299 -0
- package/dist/tests/providers/base.test.js.map +1 -0
- package/dist/tests/providers/chat-llm.test.d.ts +2 -0
- package/dist/tests/providers/chat-llm.test.d.ts.map +1 -0
- package/dist/tests/providers/chat-llm.test.js +435 -0
- package/dist/tests/providers/chat-llm.test.js.map +1 -0
- package/dist/tests/providers/index.test.d.ts +2 -0
- package/dist/tests/providers/index.test.d.ts.map +1 -0
- package/dist/tests/providers/index.test.js +204 -0
- package/dist/tests/providers/index.test.js.map +1 -0
- package/dist/tests/providers/mock.test.d.ts +2 -0
- package/dist/tests/providers/mock.test.d.ts.map +1 -0
- package/dist/tests/providers/mock.test.js +225 -0
- package/dist/tests/providers/mock.test.js.map +1 -0
- package/dist/tests/providers/openai.test.d.ts +2 -0
- package/dist/tests/providers/openai.test.d.ts.map +1 -0
- package/dist/tests/providers/openai.test.js +408 -0
- package/dist/tests/providers/openai.test.js.map +1 -0
- package/dist/tests/providers/token-counter.test.d.ts +2 -0
- package/dist/tests/providers/token-counter.test.d.ts.map +1 -0
- package/dist/tests/providers/token-counter.test.js +247 -0
- package/dist/tests/providers/token-counter.test.js.map +1 -0
- package/dist/tests/rate-limiter.test.js +392 -1
- package/dist/tests/rate-limiter.test.js.map +1 -1
- package/dist/tests/scope.test.d.ts +2 -0
- package/dist/tests/scope.test.d.ts.map +1 -0
- package/dist/tests/scope.test.js +529 -0
- package/dist/tests/scope.test.js.map +1 -0
- package/dist/tests/search-normalization.test.js.map +1 -1
- package/dist/tests/semantic-chunker.test.js.map +1 -1
- package/dist/tests/simple-lru.test.js +377 -0
- package/dist/tests/simple-lru.test.js.map +1 -1
- package/dist/tests/symbol-boost.test.js +730 -10
- package/dist/tests/symbol-boost.test.js.map +1 -1
- package/dist/tests/symbols-extract.test.d.ts +2 -0
- package/dist/tests/symbols-extract.test.d.ts.map +1 -0
- package/dist/tests/symbols-extract.test.js +536 -0
- package/dist/tests/symbols-extract.test.js.map +1 -0
- package/dist/tests/symbols-graph.test.d.ts +2 -0
- package/dist/tests/symbols-graph.test.d.ts.map +1 -0
- package/dist/tests/symbols-graph.test.js +656 -0
- package/dist/tests/symbols-graph.test.js.map +1 -0
- package/dist/tests/synthesizer.test.d.ts +2 -0
- package/dist/tests/synthesizer.test.d.ts.map +1 -0
- package/dist/tests/synthesizer.test.js +381 -0
- package/dist/tests/synthesizer.test.js.map +1 -0
- package/dist/types/codemap.d.ts +2 -2
- package/dist/types/codemap.d.ts.map +1 -1
- package/dist/types/codemap.js +17 -9
- package/dist/types/codemap.js.map +1 -1
- package/dist/types/context-pack.d.ts +5 -5
- package/dist/types/context-pack.d.ts.map +1 -1
- package/dist/types/context-pack.js +6 -3
- package/dist/types/context-pack.js.map +1 -1
- package/dist/utils/cli-ui.d.ts +1 -1
- package/dist/utils/cli-ui.d.ts.map +1 -1
- package/dist/utils/cli-ui.js +26 -26
- package/dist/utils/cli-ui.js.map +1 -1
- package/dist/utils/indexer-with-progress.d.ts.map +1 -1
- package/dist/utils/indexer-with-progress.js +0 -6
- package/dist/utils/indexer-with-progress.js.map +1 -1
- package/dist/utils/logger.d.ts +10 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +158 -6
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/mutex.d.ts +7 -2
- package/dist/utils/mutex.d.ts.map +1 -1
- package/dist/utils/mutex.js +35 -7
- package/dist/utils/mutex.js.map +1 -1
- package/dist/utils/path-helpers.d.ts.map +1 -1
- package/dist/utils/path-helpers.js +5 -2
- package/dist/utils/path-helpers.js.map +1 -1
- package/dist/utils/rate-limiter.d.ts.map +1 -1
- package/dist/utils/rate-limiter.js +23 -4
- package/dist/utils/rate-limiter.js.map +1 -1
- package/dist/utils/simple-lru.d.ts +6 -0
- package/dist/utils/simple-lru.d.ts.map +1 -1
- package/dist/utils/simple-lru.js +26 -0
- package/dist/utils/simple-lru.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for src/indexer/ChangeQueue.ts
|
|
3
|
+
*
|
|
4
|
+
* Tests queue batching and debouncing functionality including:
|
|
5
|
+
* - Enqueue behavior for add/change/unlink events
|
|
6
|
+
* - Debounce scheduling and timer management
|
|
7
|
+
* - Flush race condition handling
|
|
8
|
+
* - Drain behavior for shutdown
|
|
9
|
+
* - Pending count tracking
|
|
10
|
+
*/
|
|
11
|
+
import test from 'node:test';
|
|
12
|
+
import assert from 'node:assert/strict';
|
|
13
|
+
import { setTimeout as delay } from 'timers/promises';
|
|
14
|
+
import { ChangeQueue } from '../../indexer/ChangeQueue.js';
|
|
15
|
+
function createMockOptions(overrides = {}, callLog = []) {
|
|
16
|
+
return {
|
|
17
|
+
repoPath: '/mock/repo',
|
|
18
|
+
provider: 'mock',
|
|
19
|
+
debounceMs: 50, // Short debounce for tests
|
|
20
|
+
logger: {
|
|
21
|
+
log: () => { },
|
|
22
|
+
error: () => { },
|
|
23
|
+
warn: () => { },
|
|
24
|
+
info: () => { },
|
|
25
|
+
debug: () => { }
|
|
26
|
+
},
|
|
27
|
+
onBatch: ({ changed, deleted }) => {
|
|
28
|
+
callLog.push({ changed, deleted });
|
|
29
|
+
},
|
|
30
|
+
providerGetter: async () => null, // No real provider
|
|
31
|
+
...overrides
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// Enqueue Tests
|
|
36
|
+
// ============================================================================
|
|
37
|
+
test('ChangeQueue enqueue adds file to pending changes', () => {
|
|
38
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
39
|
+
queue.enqueue('add', 'src/test.ts');
|
|
40
|
+
const pending = queue.getPendingCount();
|
|
41
|
+
assert.equal(pending.changes, 1, 'Should have 1 pending change');
|
|
42
|
+
assert.equal(pending.deletes, 0, 'Should have 0 pending deletes');
|
|
43
|
+
queue.cancel();
|
|
44
|
+
});
|
|
45
|
+
test('ChangeQueue enqueue handles change event', () => {
|
|
46
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
47
|
+
queue.enqueue('change', 'src/modified.ts');
|
|
48
|
+
const pending = queue.getPendingCount();
|
|
49
|
+
assert.equal(pending.changes, 1, 'Should have 1 pending change');
|
|
50
|
+
queue.cancel();
|
|
51
|
+
});
|
|
52
|
+
test('ChangeQueue enqueue handles unlink event as delete', () => {
|
|
53
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
54
|
+
queue.enqueue('unlink', 'src/deleted.ts');
|
|
55
|
+
const pending = queue.getPendingCount();
|
|
56
|
+
assert.equal(pending.changes, 0, 'Should have 0 pending changes');
|
|
57
|
+
assert.equal(pending.deletes, 1, 'Should have 1 pending delete');
|
|
58
|
+
queue.cancel();
|
|
59
|
+
});
|
|
60
|
+
test('ChangeQueue enqueue moves file from changes to deletes on unlink', () => {
|
|
61
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
62
|
+
// First add the file
|
|
63
|
+
queue.enqueue('add', 'src/file.ts');
|
|
64
|
+
assert.equal(queue.getPendingCount().changes, 1, 'Should be in changes');
|
|
65
|
+
// Then unlink it
|
|
66
|
+
queue.enqueue('unlink', 'src/file.ts');
|
|
67
|
+
const pending = queue.getPendingCount();
|
|
68
|
+
assert.equal(pending.changes, 0, 'Should be removed from changes');
|
|
69
|
+
assert.equal(pending.deletes, 1, 'Should be in deletes');
|
|
70
|
+
queue.cancel();
|
|
71
|
+
});
|
|
72
|
+
test('ChangeQueue enqueue moves file from deletes to changes on add', () => {
|
|
73
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
74
|
+
// First delete the file
|
|
75
|
+
queue.enqueue('unlink', 'src/file.ts');
|
|
76
|
+
assert.equal(queue.getPendingCount().deletes, 1, 'Should be in deletes');
|
|
77
|
+
// Then re-add it
|
|
78
|
+
queue.enqueue('add', 'src/file.ts');
|
|
79
|
+
const pending = queue.getPendingCount();
|
|
80
|
+
assert.equal(pending.changes, 1, 'Should be in changes');
|
|
81
|
+
assert.equal(pending.deletes, 0, 'Should be removed from deletes');
|
|
82
|
+
queue.cancel();
|
|
83
|
+
});
|
|
84
|
+
test('ChangeQueue enqueue deduplicates multiple changes to same file', () => {
|
|
85
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
86
|
+
queue.enqueue('change', 'src/file.ts');
|
|
87
|
+
queue.enqueue('change', 'src/file.ts');
|
|
88
|
+
queue.enqueue('change', 'src/file.ts');
|
|
89
|
+
const pending = queue.getPendingCount();
|
|
90
|
+
assert.equal(pending.changes, 1, 'Should only have 1 pending change (deduplicated)');
|
|
91
|
+
queue.cancel();
|
|
92
|
+
});
|
|
93
|
+
test('ChangeQueue enqueue handles multiple different files', () => {
|
|
94
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
95
|
+
queue.enqueue('add', 'src/file1.ts');
|
|
96
|
+
queue.enqueue('change', 'src/file2.ts');
|
|
97
|
+
queue.enqueue('unlink', 'src/file3.ts');
|
|
98
|
+
const pending = queue.getPendingCount();
|
|
99
|
+
assert.equal(pending.changes, 2, 'Should have 2 pending changes');
|
|
100
|
+
assert.equal(pending.deletes, 1, 'Should have 1 pending delete');
|
|
101
|
+
queue.cancel();
|
|
102
|
+
});
|
|
103
|
+
// ============================================================================
|
|
104
|
+
// Debounce Tests
|
|
105
|
+
// ============================================================================
|
|
106
|
+
test('ChangeQueue schedules flush after debounce delay', async () => {
|
|
107
|
+
const callLog = [];
|
|
108
|
+
const queue = new ChangeQueue(createMockOptions({ debounceMs: 30 }, callLog));
|
|
109
|
+
queue.enqueue('add', 'src/test.ts');
|
|
110
|
+
// Immediately after enqueue, batch should not be processed
|
|
111
|
+
assert.equal(callLog.length, 0, 'Should not flush immediately');
|
|
112
|
+
// Wait for debounce
|
|
113
|
+
await delay(50);
|
|
114
|
+
assert.equal(callLog.length, 1, 'Should flush after debounce');
|
|
115
|
+
assert.deepEqual(callLog[0].changed, ['src/test.ts'], 'Should include changed file');
|
|
116
|
+
queue.cancel();
|
|
117
|
+
});
|
|
118
|
+
test('ChangeQueue resets debounce timer on new enqueue', async () => {
|
|
119
|
+
const callLog = [];
|
|
120
|
+
const queue = new ChangeQueue(createMockOptions({ debounceMs: 50 }, callLog));
|
|
121
|
+
queue.enqueue('add', 'src/file1.ts');
|
|
122
|
+
await delay(30); // Wait less than debounce
|
|
123
|
+
queue.enqueue('add', 'src/file2.ts');
|
|
124
|
+
await delay(30); // Still less than debounce from second enqueue
|
|
125
|
+
// Should not have flushed yet
|
|
126
|
+
assert.equal(callLog.length, 0, 'Should not flush - timer was reset');
|
|
127
|
+
await delay(40); // Now past debounce from second enqueue
|
|
128
|
+
assert.equal(callLog.length, 1, 'Should flush once');
|
|
129
|
+
assert.equal(callLog[0].changed.length, 2, 'Should include both files');
|
|
130
|
+
queue.cancel();
|
|
131
|
+
});
|
|
132
|
+
test('ChangeQueue batches rapid changes together', async () => {
|
|
133
|
+
const callLog = [];
|
|
134
|
+
const queue = new ChangeQueue(createMockOptions({ debounceMs: 50 }, callLog));
|
|
135
|
+
// Rapid succession of changes
|
|
136
|
+
for (let i = 0; i < 10; i++) {
|
|
137
|
+
queue.enqueue('add', `src/file${i}.ts`);
|
|
138
|
+
}
|
|
139
|
+
await delay(100);
|
|
140
|
+
assert.equal(callLog.length, 1, 'Should batch all changes into single flush');
|
|
141
|
+
assert.equal(callLog[0].changed.length, 10, 'Should include all 10 files');
|
|
142
|
+
queue.cancel();
|
|
143
|
+
});
|
|
144
|
+
// ============================================================================
|
|
145
|
+
// Flush Tests
|
|
146
|
+
// ============================================================================
|
|
147
|
+
test('ChangeQueue flush processes pending changes', async () => {
|
|
148
|
+
const callLog = [];
|
|
149
|
+
const queue = new ChangeQueue(createMockOptions({ debounceMs: 1000 }, callLog));
|
|
150
|
+
queue.enqueue('add', 'src/test.ts');
|
|
151
|
+
queue.enqueue('unlink', 'src/deleted.ts');
|
|
152
|
+
// Manually flush without waiting for debounce
|
|
153
|
+
await queue.flush();
|
|
154
|
+
assert.equal(callLog.length, 1, 'Should flush');
|
|
155
|
+
assert.deepEqual(callLog[0].changed, ['src/test.ts'], 'Should include changed file');
|
|
156
|
+
assert.deepEqual(callLog[0].deleted, ['src/deleted.ts'], 'Should include deleted file');
|
|
157
|
+
queue.cancel();
|
|
158
|
+
});
|
|
159
|
+
test('ChangeQueue flush returns immediately when no pending changes', async () => {
|
|
160
|
+
const callLog = [];
|
|
161
|
+
const queue = new ChangeQueue(createMockOptions({}, callLog));
|
|
162
|
+
await queue.flush();
|
|
163
|
+
assert.equal(callLog.length, 0, 'Should not call onBatch when nothing pending');
|
|
164
|
+
queue.cancel();
|
|
165
|
+
});
|
|
166
|
+
test('ChangeQueue flush clears pending changes after processing', async () => {
|
|
167
|
+
const callLog = [];
|
|
168
|
+
const queue = new ChangeQueue(createMockOptions({ debounceMs: 1000 }, callLog));
|
|
169
|
+
queue.enqueue('add', 'src/test.ts');
|
|
170
|
+
await queue.flush();
|
|
171
|
+
assert.equal(queue.hasPending(), false, 'Should have no pending changes after flush');
|
|
172
|
+
assert.equal(queue.getPendingCount().changes, 0, 'Changes count should be 0');
|
|
173
|
+
queue.cancel();
|
|
174
|
+
});
|
|
175
|
+
test('ChangeQueue flush handles concurrent flush calls safely', async () => {
|
|
176
|
+
const callLog = [];
|
|
177
|
+
let flushCount = 0;
|
|
178
|
+
const queue = new ChangeQueue(createMockOptions({
|
|
179
|
+
debounceMs: 1000,
|
|
180
|
+
onBatch: async ({ changed, deleted }) => {
|
|
181
|
+
flushCount++;
|
|
182
|
+
callLog.push({ changed, deleted });
|
|
183
|
+
await delay(50); // Simulate slow processing
|
|
184
|
+
}
|
|
185
|
+
}, []));
|
|
186
|
+
queue.enqueue('add', 'src/test.ts');
|
|
187
|
+
// Start multiple concurrent flushes
|
|
188
|
+
const flush1 = queue.flush();
|
|
189
|
+
const flush2 = queue.flush();
|
|
190
|
+
const flush3 = queue.flush();
|
|
191
|
+
await Promise.all([flush1, flush2, flush3]);
|
|
192
|
+
// Only one actual batch should have been processed
|
|
193
|
+
assert.equal(flushCount, 1, 'Should only process once despite concurrent calls');
|
|
194
|
+
queue.cancel();
|
|
195
|
+
});
|
|
196
|
+
test('ChangeQueue flush reschedules if new changes arrive during processing', async () => {
|
|
197
|
+
const callLog = [];
|
|
198
|
+
const queue = new ChangeQueue(createMockOptions({
|
|
199
|
+
debounceMs: 20,
|
|
200
|
+
onBatch: async ({ changed, deleted }) => {
|
|
201
|
+
callLog.push({ changed, deleted });
|
|
202
|
+
await delay(50); // Slow processing
|
|
203
|
+
}
|
|
204
|
+
}, []));
|
|
205
|
+
queue.enqueue('add', 'src/file1.ts');
|
|
206
|
+
// Start flush
|
|
207
|
+
const flushPromise = queue.flush();
|
|
208
|
+
// While processing, add more changes
|
|
209
|
+
await delay(10);
|
|
210
|
+
queue.enqueue('add', 'src/file2.ts');
|
|
211
|
+
await flushPromise;
|
|
212
|
+
// Wait for rescheduled flush
|
|
213
|
+
await delay(100);
|
|
214
|
+
assert.ok(callLog.length >= 1, 'Should process at least initial batch');
|
|
215
|
+
queue.cancel();
|
|
216
|
+
});
|
|
217
|
+
// ============================================================================
|
|
218
|
+
// Drain Tests
|
|
219
|
+
// ============================================================================
|
|
220
|
+
test('ChangeQueue drain flushes all pending changes', async () => {
|
|
221
|
+
const callLog = [];
|
|
222
|
+
const queue = new ChangeQueue(createMockOptions({ debounceMs: 500 }, callLog));
|
|
223
|
+
queue.enqueue('add', 'src/file1.ts');
|
|
224
|
+
queue.enqueue('add', 'src/file2.ts');
|
|
225
|
+
await queue.drain();
|
|
226
|
+
assert.equal(callLog.length, 1, 'Should have flushed');
|
|
227
|
+
assert.equal(callLog[0].changed.length, 2, 'Should include both files');
|
|
228
|
+
assert.equal(queue.hasPending(), false, 'Should have no pending after drain');
|
|
229
|
+
queue.cancel();
|
|
230
|
+
});
|
|
231
|
+
test('ChangeQueue drain cancels pending timer', async () => {
|
|
232
|
+
const callLog = [];
|
|
233
|
+
const queue = new ChangeQueue(createMockOptions({ debounceMs: 500 }, callLog));
|
|
234
|
+
queue.enqueue('add', 'src/test.ts');
|
|
235
|
+
// Drain should process immediately without waiting for timer
|
|
236
|
+
const start = Date.now();
|
|
237
|
+
await queue.drain();
|
|
238
|
+
const elapsed = Date.now() - start;
|
|
239
|
+
assert.ok(elapsed < 300, 'Drain should complete quickly without waiting for full debounce');
|
|
240
|
+
assert.equal(callLog.length, 1, 'Should have flushed');
|
|
241
|
+
queue.cancel();
|
|
242
|
+
});
|
|
243
|
+
test('ChangeQueue drain handles empty queue', async () => {
|
|
244
|
+
const callLog = [];
|
|
245
|
+
const queue = new ChangeQueue(createMockOptions({}, callLog));
|
|
246
|
+
await queue.drain();
|
|
247
|
+
assert.equal(callLog.length, 0, 'Should not call onBatch for empty queue');
|
|
248
|
+
queue.cancel();
|
|
249
|
+
});
|
|
250
|
+
test('ChangeQueue drain waits for in-progress flush', async () => {
|
|
251
|
+
let processingComplete = false;
|
|
252
|
+
const queue = new ChangeQueue(createMockOptions({
|
|
253
|
+
debounceMs: 10,
|
|
254
|
+
onBatch: async () => {
|
|
255
|
+
await delay(100);
|
|
256
|
+
processingComplete = true;
|
|
257
|
+
}
|
|
258
|
+
}, []));
|
|
259
|
+
queue.enqueue('add', 'src/test.ts');
|
|
260
|
+
// Trigger debounce flush
|
|
261
|
+
await delay(20);
|
|
262
|
+
// Drain should wait for processing to complete
|
|
263
|
+
await queue.drain();
|
|
264
|
+
assert.equal(processingComplete, true, 'Drain should wait for processing');
|
|
265
|
+
queue.cancel();
|
|
266
|
+
});
|
|
267
|
+
// ============================================================================
|
|
268
|
+
// Cancel Tests
|
|
269
|
+
// ============================================================================
|
|
270
|
+
test('ChangeQueue cancel stops pending timer', async () => {
|
|
271
|
+
const callLog = [];
|
|
272
|
+
const queue = new ChangeQueue(createMockOptions({ debounceMs: 50 }, callLog));
|
|
273
|
+
queue.enqueue('add', 'src/test.ts');
|
|
274
|
+
// Cancel before debounce triggers
|
|
275
|
+
queue.cancel();
|
|
276
|
+
await delay(100);
|
|
277
|
+
assert.equal(callLog.length, 0, 'Should not flush after cancel');
|
|
278
|
+
});
|
|
279
|
+
test('ChangeQueue cancel is idempotent', () => {
|
|
280
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
281
|
+
// Multiple cancels should not throw
|
|
282
|
+
queue.cancel();
|
|
283
|
+
queue.cancel();
|
|
284
|
+
queue.cancel();
|
|
285
|
+
assert.ok(true, 'Multiple cancels should not throw');
|
|
286
|
+
});
|
|
287
|
+
test('ChangeQueue cancel does not clear pending changes', () => {
|
|
288
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
289
|
+
queue.enqueue('add', 'src/test.ts');
|
|
290
|
+
queue.cancel();
|
|
291
|
+
assert.equal(queue.hasPending(), true, 'Pending changes should remain after cancel');
|
|
292
|
+
queue.cancel();
|
|
293
|
+
});
|
|
294
|
+
// ============================================================================
|
|
295
|
+
// hasPending Tests
|
|
296
|
+
// ============================================================================
|
|
297
|
+
test('ChangeQueue hasPending returns false for empty queue', () => {
|
|
298
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
299
|
+
assert.equal(queue.hasPending(), false, 'Empty queue should not have pending');
|
|
300
|
+
queue.cancel();
|
|
301
|
+
});
|
|
302
|
+
test('ChangeQueue hasPending returns true when changes pending', () => {
|
|
303
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
304
|
+
queue.enqueue('add', 'src/test.ts');
|
|
305
|
+
assert.equal(queue.hasPending(), true, 'Should have pending after enqueue');
|
|
306
|
+
queue.cancel();
|
|
307
|
+
});
|
|
308
|
+
test('ChangeQueue hasPending returns true when deletes pending', () => {
|
|
309
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
310
|
+
queue.enqueue('unlink', 'src/test.ts');
|
|
311
|
+
assert.equal(queue.hasPending(), true, 'Should have pending for deletes');
|
|
312
|
+
queue.cancel();
|
|
313
|
+
});
|
|
314
|
+
// ============================================================================
|
|
315
|
+
// getPendingCount Tests
|
|
316
|
+
// ============================================================================
|
|
317
|
+
test('ChangeQueue getPendingCount returns accurate counts', () => {
|
|
318
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
319
|
+
queue.enqueue('add', 'src/file1.ts');
|
|
320
|
+
queue.enqueue('add', 'src/file2.ts');
|
|
321
|
+
queue.enqueue('change', 'src/file3.ts');
|
|
322
|
+
queue.enqueue('unlink', 'src/deleted1.ts');
|
|
323
|
+
queue.enqueue('unlink', 'src/deleted2.ts');
|
|
324
|
+
const count = queue.getPendingCount();
|
|
325
|
+
assert.equal(count.changes, 3, 'Should count 3 changes');
|
|
326
|
+
assert.equal(count.deletes, 2, 'Should count 2 deletes');
|
|
327
|
+
queue.cancel();
|
|
328
|
+
});
|
|
329
|
+
test('ChangeQueue getPendingCount returns zeros for empty queue', () => {
|
|
330
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
331
|
+
const count = queue.getPendingCount();
|
|
332
|
+
assert.equal(count.changes, 0, 'Changes should be 0');
|
|
333
|
+
assert.equal(count.deletes, 0, 'Deletes should be 0');
|
|
334
|
+
queue.cancel();
|
|
335
|
+
});
|
|
336
|
+
// ============================================================================
|
|
337
|
+
// Error Handling Tests
|
|
338
|
+
// ============================================================================
|
|
339
|
+
test('ChangeQueue handles onBatch errors gracefully', async () => {
|
|
340
|
+
let errorLogged = false;
|
|
341
|
+
const queue = new ChangeQueue({
|
|
342
|
+
repoPath: '/mock/repo',
|
|
343
|
+
provider: 'mock',
|
|
344
|
+
debounceMs: 10,
|
|
345
|
+
logger: {
|
|
346
|
+
log: () => { },
|
|
347
|
+
error: () => { errorLogged = true; },
|
|
348
|
+
warn: () => { },
|
|
349
|
+
info: () => { },
|
|
350
|
+
debug: () => { }
|
|
351
|
+
},
|
|
352
|
+
onBatch: () => {
|
|
353
|
+
throw new Error('Simulated error');
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
queue.enqueue('add', 'src/test.ts');
|
|
357
|
+
await queue.flush();
|
|
358
|
+
assert.equal(errorLogged, true, 'Error should be logged');
|
|
359
|
+
assert.equal(queue.hasPending(), false, 'Queue should be cleared despite error');
|
|
360
|
+
queue.cancel();
|
|
361
|
+
});
|
|
362
|
+
test('ChangeQueue handles providerGetter errors gracefully', async () => {
|
|
363
|
+
let errorLogged = false;
|
|
364
|
+
const queue = new ChangeQueue({
|
|
365
|
+
repoPath: '/mock/repo',
|
|
366
|
+
provider: 'mock',
|
|
367
|
+
debounceMs: 10,
|
|
368
|
+
logger: {
|
|
369
|
+
log: () => { },
|
|
370
|
+
error: () => { errorLogged = true; },
|
|
371
|
+
warn: () => { },
|
|
372
|
+
info: () => { },
|
|
373
|
+
debug: () => { }
|
|
374
|
+
},
|
|
375
|
+
providerGetter: async () => {
|
|
376
|
+
throw new Error('Provider error');
|
|
377
|
+
}
|
|
378
|
+
});
|
|
379
|
+
queue.enqueue('add', 'src/test.ts');
|
|
380
|
+
// This will fail during updateIndex due to providerGetter error
|
|
381
|
+
// but should handle gracefully
|
|
382
|
+
await queue.flush();
|
|
383
|
+
queue.cancel();
|
|
384
|
+
});
|
|
385
|
+
// ============================================================================
|
|
386
|
+
// Logging Tests
|
|
387
|
+
// ============================================================================
|
|
388
|
+
test('ChangeQueue logs batch info when no onBatch callback', async () => {
|
|
389
|
+
let logMessage = '';
|
|
390
|
+
const queue = new ChangeQueue({
|
|
391
|
+
repoPath: '/mock/repo',
|
|
392
|
+
provider: 'mock',
|
|
393
|
+
debounceMs: 10,
|
|
394
|
+
logger: {
|
|
395
|
+
log: (msg) => { logMessage = msg; },
|
|
396
|
+
error: () => { },
|
|
397
|
+
warn: () => { },
|
|
398
|
+
info: () => { },
|
|
399
|
+
debug: () => { }
|
|
400
|
+
},
|
|
401
|
+
onBatch: null,
|
|
402
|
+
providerGetter: async () => null
|
|
403
|
+
});
|
|
404
|
+
queue.enqueue('add', 'src/test.ts');
|
|
405
|
+
await queue.flush();
|
|
406
|
+
assert.ok(logMessage.includes('indexed'), 'Should log indexing message');
|
|
407
|
+
assert.ok(logMessage.includes('1'), 'Should include count');
|
|
408
|
+
queue.cancel();
|
|
409
|
+
});
|
|
410
|
+
// ============================================================================
|
|
411
|
+
// Edge Cases
|
|
412
|
+
// ============================================================================
|
|
413
|
+
test('ChangeQueue handles very short debounce', async () => {
|
|
414
|
+
const callLog = [];
|
|
415
|
+
const queue = new ChangeQueue(createMockOptions({ debounceMs: 1 }, callLog));
|
|
416
|
+
queue.enqueue('add', 'src/test.ts');
|
|
417
|
+
await delay(50);
|
|
418
|
+
assert.ok(callLog.length >= 1, 'Should flush with very short debounce');
|
|
419
|
+
queue.cancel();
|
|
420
|
+
});
|
|
421
|
+
test('ChangeQueue handles files with special characters', async () => {
|
|
422
|
+
const callLog = [];
|
|
423
|
+
const queue = new ChangeQueue(createMockOptions({ debounceMs: 10 }, callLog));
|
|
424
|
+
queue.enqueue('add', 'src/file with spaces.ts');
|
|
425
|
+
queue.enqueue('add', 'src/\u4E2D\u6587.ts');
|
|
426
|
+
queue.enqueue('add', 'src/special@#$.ts');
|
|
427
|
+
await queue.flush();
|
|
428
|
+
assert.equal(callLog.length, 1, 'Should handle special characters');
|
|
429
|
+
assert.equal(callLog[0].changed.length, 3, 'Should include all files');
|
|
430
|
+
queue.cancel();
|
|
431
|
+
});
|
|
432
|
+
test('ChangeQueue handles large number of files', () => {
|
|
433
|
+
const queue = new ChangeQueue(createMockOptions());
|
|
434
|
+
for (let i = 0; i < 1000; i++) {
|
|
435
|
+
queue.enqueue('add', `src/file${i}.ts`);
|
|
436
|
+
}
|
|
437
|
+
const count = queue.getPendingCount();
|
|
438
|
+
assert.equal(count.changes, 1000, 'Should handle 1000 files');
|
|
439
|
+
queue.cancel();
|
|
440
|
+
});
|
|
441
|
+
//# sourceMappingURL=ChangeQueue.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChangeQueue.test.js","sourceRoot":"","sources":["../../../src/tests/indexer/ChangeQueue.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for src/indexer/ProviderManager.ts
|
|
3
|
+
*
|
|
4
|
+
* Tests embedding provider lifecycle management including:
|
|
5
|
+
* - Provider initialization and caching
|
|
6
|
+
* - Concurrent initialization handling
|
|
7
|
+
* - Error handling and retry behavior
|
|
8
|
+
* - Safe provider access with error logging
|
|
9
|
+
* - Cleanup and resource release
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=ProviderManager.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderManager.test.d.ts","sourceRoot":"","sources":["../../../src/tests/indexer/ProviderManager.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|