codevault 1.8.4 → 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 +3 -2
- 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/index-cmd.d.ts.map +1 -1
- package/dist/cli/commands/index-cmd.js +108 -97
- package/dist/cli/commands/index-cmd.js.map +1 -1
- package/dist/cli/commands/interactive-config.d.ts.map +1 -1
- package/dist/cli/commands/interactive-config.js +40 -3
- 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 +11 -7
- 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 +3 -1
- package/dist/cli/commands/search-with-code-cmd.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/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/context/packs.d.ts.map +1 -1
- package/dist/context/packs.js +3 -1
- 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 +1 -0
- package/dist/core/SearchService.d.ts.map +1 -1
- package/dist/core/SearchService.js +18 -12
- package/dist/core/SearchService.js.map +1 -1
- package/dist/core/batch-indexer.d.ts.map +1 -1
- package/dist/core/batch-indexer.js +5 -13
- package/dist/core/batch-indexer.js.map +1 -1
- package/dist/core/indexing/IndexFinalizationStage.d.ts.map +1 -1
- package/dist/core/indexing/IndexFinalizationStage.js +21 -2
- 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/search/HybridFusion.d.ts +0 -1
- package/dist/core/search/HybridFusion.d.ts.map +1 -1
- package/dist/core/search/HybridFusion.js +2 -14
- 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 +2 -13
- package/dist/core/search/ResultMapper.js.map +1 -1
- package/dist/core/search/SearchContextManager.d.ts +3 -0
- package/dist/core/search/SearchContextManager.d.ts.map +1 -1
- package/dist/core/search/SearchContextManager.js +15 -2
- 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/languages/rules.d.ts.map +1 -1
- package/dist/languages/rules.js +14 -5
- package/dist/languages/rules.js.map +1 -1
- package/dist/mcp/schemas.d.ts +2 -2
- package/dist/mcp-server.d.ts +1 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +32 -21
- 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 -1
- package/dist/providers/base.js.map +1 -1
- package/dist/providers/chat-llm.d.ts +2 -2
- package/dist/providers/chat-llm.d.ts.map +1 -1
- package/dist/providers/chat-llm.js +4 -1
- package/dist/providers/chat-llm.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +4 -1
- package/dist/providers/openai.js.map +1 -1
- package/dist/ranking/api-reranker.d.ts.map +1 -1
- package/dist/ranking/api-reranker.js +27 -8
- 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/storage/encrypted-chunks.d.ts +3 -0
- package/dist/storage/encrypted-chunks.d.ts.map +1 -1
- package/dist/storage/encrypted-chunks.js +108 -16
- package/dist/storage/encrypted-chunks.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/prompt-builder.d.ts.map +1 -1
- package/dist/synthesis/prompt-builder.js +40 -13
- package/dist/synthesis/prompt-builder.js.map +1 -1
- package/dist/synthesis/synthesizer.d.ts.map +1 -1
- package/dist/synthesis/synthesizer.js +14 -2
- 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 +1 -0
- 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/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/context-pack.d.ts +3 -3
- package/dist/utils/logger.d.ts +5 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +149 -4
- 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 +31 -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/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,290 @@
|
|
|
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
|
+
import test from 'node:test';
|
|
12
|
+
import assert from 'node:assert/strict';
|
|
13
|
+
import { ProviderManager } from '../../indexer/ProviderManager.js';
|
|
14
|
+
// Mock provider context
|
|
15
|
+
function createMockContext(overrides = {}) {
|
|
16
|
+
return {
|
|
17
|
+
apiKey: 'test-key',
|
|
18
|
+
baseUrl: 'https://api.example.com',
|
|
19
|
+
model: 'text-embedding-3-small',
|
|
20
|
+
dimensions: 1536,
|
|
21
|
+
...overrides
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// Mock logger for testing
|
|
25
|
+
function createMockLogger() {
|
|
26
|
+
const errors = [];
|
|
27
|
+
const logs = [];
|
|
28
|
+
return {
|
|
29
|
+
log: (...args) => { logs.push(args); },
|
|
30
|
+
error: (...args) => { errors.push(args); },
|
|
31
|
+
warn: () => { },
|
|
32
|
+
info: () => { },
|
|
33
|
+
debug: () => { },
|
|
34
|
+
errors,
|
|
35
|
+
logs
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// Construction Tests
|
|
40
|
+
// ============================================================================
|
|
41
|
+
test('ProviderManager can be constructed with valid options', () => {
|
|
42
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
43
|
+
assert.ok(manager, 'Manager should be created');
|
|
44
|
+
});
|
|
45
|
+
test('ProviderManager accepts custom logger', () => {
|
|
46
|
+
const logger = createMockLogger();
|
|
47
|
+
const manager = new ProviderManager('mock', createMockContext(), logger);
|
|
48
|
+
assert.ok(manager, 'Manager with custom logger should be created');
|
|
49
|
+
});
|
|
50
|
+
test('ProviderManager uses console as default logger', () => {
|
|
51
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
52
|
+
assert.ok(manager, 'Manager with default logger should be created');
|
|
53
|
+
});
|
|
54
|
+
// ============================================================================
|
|
55
|
+
// getProvider Tests
|
|
56
|
+
// ============================================================================
|
|
57
|
+
test('ProviderManager getProvider returns provider instance', async () => {
|
|
58
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
59
|
+
const provider = await manager.getProvider();
|
|
60
|
+
assert.ok(provider, 'Should return provider');
|
|
61
|
+
assert.equal(provider.getName(), 'mock', 'Should return mock provider');
|
|
62
|
+
assert.equal(typeof provider.generateEmbedding, 'function', 'Should have generateEmbedding method');
|
|
63
|
+
});
|
|
64
|
+
test('ProviderManager getProvider caches provider instance', async () => {
|
|
65
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
66
|
+
const provider1 = await manager.getProvider();
|
|
67
|
+
const provider2 = await manager.getProvider();
|
|
68
|
+
assert.equal(provider1, provider2, 'Should return same instance');
|
|
69
|
+
});
|
|
70
|
+
test('ProviderManager getProvider handles concurrent requests', async () => {
|
|
71
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
72
|
+
// Request multiple providers concurrently
|
|
73
|
+
const [p1, p2, p3] = await Promise.all([
|
|
74
|
+
manager.getProvider(),
|
|
75
|
+
manager.getProvider(),
|
|
76
|
+
manager.getProvider()
|
|
77
|
+
]);
|
|
78
|
+
assert.equal(p1, p2, 'All should return same instance');
|
|
79
|
+
assert.equal(p2, p3, 'All should return same instance');
|
|
80
|
+
});
|
|
81
|
+
test('ProviderManager getProvider calls init on provider if available', async () => {
|
|
82
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
83
|
+
const provider = await manager.getProvider();
|
|
84
|
+
// Mock provider has init method that returns Promise.resolve()
|
|
85
|
+
assert.ok(provider, 'Provider should be initialized');
|
|
86
|
+
});
|
|
87
|
+
test('ProviderManager getProvider falls back to OpenAI for unknown provider', async () => {
|
|
88
|
+
// The provider factory defaults to OpenAI for unknown provider names
|
|
89
|
+
const manager = new ProviderManager('nonexistent-provider', createMockContext());
|
|
90
|
+
const provider = await manager.getProvider();
|
|
91
|
+
// Should not throw - falls back to OpenAI
|
|
92
|
+
assert.ok(provider, 'Should return provider (falls back to OpenAI)');
|
|
93
|
+
// The provider name will be 'OpenAI' since that's the fallback
|
|
94
|
+
assert.equal(provider.getName(), 'OpenAI', 'Should fall back to OpenAI provider');
|
|
95
|
+
});
|
|
96
|
+
test('ProviderManager getProvider resets on error for retry', async () => {
|
|
97
|
+
// Since all provider names fall back to OpenAI, we test the retry behavior
|
|
98
|
+
// by checking that cleanup allows re-initialization
|
|
99
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
100
|
+
const provider1 = await manager.getProvider();
|
|
101
|
+
manager.cleanup();
|
|
102
|
+
const provider2 = await manager.getProvider();
|
|
103
|
+
// After cleanup, should get a new provider instance
|
|
104
|
+
assert.ok(provider1, 'First provider should exist');
|
|
105
|
+
assert.ok(provider2, 'Second provider should exist');
|
|
106
|
+
});
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// getProviderSafe Tests
|
|
109
|
+
// ============================================================================
|
|
110
|
+
test('ProviderManager getProviderSafe returns provider on success', async () => {
|
|
111
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
112
|
+
const provider = await manager.getProviderSafe();
|
|
113
|
+
assert.ok(provider, 'Should return provider');
|
|
114
|
+
assert.equal(provider?.getName(), 'mock', 'Should be mock provider');
|
|
115
|
+
});
|
|
116
|
+
test('ProviderManager getProviderSafe returns provider for any name (fallback behavior)', async () => {
|
|
117
|
+
const logger = createMockLogger();
|
|
118
|
+
// The factory always returns a provider (falls back to OpenAI), so this won't fail
|
|
119
|
+
const manager = new ProviderManager('any-name', createMockContext(), logger);
|
|
120
|
+
const provider = await manager.getProviderSafe();
|
|
121
|
+
// Should return provider due to OpenAI fallback
|
|
122
|
+
assert.ok(provider, 'Should return provider due to fallback behavior');
|
|
123
|
+
});
|
|
124
|
+
test('ProviderManager getProviderSafe caches provider and returns same instance', async () => {
|
|
125
|
+
const logger = createMockLogger();
|
|
126
|
+
const manager = new ProviderManager('mock', createMockContext(), logger);
|
|
127
|
+
const provider1 = await manager.getProviderSafe();
|
|
128
|
+
const provider2 = await manager.getProviderSafe();
|
|
129
|
+
const provider3 = await manager.getProviderSafe();
|
|
130
|
+
// All calls should return the same cached instance
|
|
131
|
+
assert.equal(provider1, provider2, 'Should return cached instance');
|
|
132
|
+
assert.equal(provider2, provider3, 'Should return cached instance');
|
|
133
|
+
});
|
|
134
|
+
test('ProviderManager getProviderSafe does not throw and returns provider', async () => {
|
|
135
|
+
const manager = new ProviderManager('completely-invalid', createMockContext());
|
|
136
|
+
// Should not throw - falls back to OpenAI
|
|
137
|
+
const result = await manager.getProviderSafe();
|
|
138
|
+
assert.ok(result, 'Should return provider (OpenAI fallback) without throwing');
|
|
139
|
+
});
|
|
140
|
+
test('ProviderManager getProviderSafe caches successful provider', async () => {
|
|
141
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
142
|
+
const provider1 = await manager.getProviderSafe();
|
|
143
|
+
const provider2 = await manager.getProviderSafe();
|
|
144
|
+
assert.equal(provider1, provider2, 'Should cache provider instance');
|
|
145
|
+
});
|
|
146
|
+
// ============================================================================
|
|
147
|
+
// cleanup Tests
|
|
148
|
+
// ============================================================================
|
|
149
|
+
test('ProviderManager cleanup clears provider instance', async () => {
|
|
150
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
151
|
+
// Get provider first
|
|
152
|
+
const provider1 = await manager.getProvider();
|
|
153
|
+
assert.ok(provider1, 'Provider should exist');
|
|
154
|
+
// Cleanup
|
|
155
|
+
manager.cleanup();
|
|
156
|
+
// Get provider again - should be new instance
|
|
157
|
+
const provider2 = await manager.getProvider();
|
|
158
|
+
// Note: They might be functionally identical but should be re-created
|
|
159
|
+
assert.ok(provider2, 'Should get new provider after cleanup');
|
|
160
|
+
});
|
|
161
|
+
test('ProviderManager cleanup resets cached state', async () => {
|
|
162
|
+
const logger = createMockLogger();
|
|
163
|
+
const manager = new ProviderManager('mock', createMockContext(), logger);
|
|
164
|
+
// Get provider to initialize state
|
|
165
|
+
const provider1 = await manager.getProviderSafe();
|
|
166
|
+
// Cleanup should reset the state
|
|
167
|
+
manager.cleanup();
|
|
168
|
+
// After cleanup, should create a new provider instance
|
|
169
|
+
const provider2 = await manager.getProviderSafe();
|
|
170
|
+
assert.ok(provider1, 'First provider should exist');
|
|
171
|
+
assert.ok(provider2, 'Second provider should exist after cleanup');
|
|
172
|
+
});
|
|
173
|
+
test('ProviderManager cleanup is safe to call multiple times', () => {
|
|
174
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
175
|
+
// Multiple cleanups should not throw
|
|
176
|
+
manager.cleanup();
|
|
177
|
+
manager.cleanup();
|
|
178
|
+
manager.cleanup();
|
|
179
|
+
assert.ok(true, 'Multiple cleanups should be safe');
|
|
180
|
+
});
|
|
181
|
+
test('ProviderManager cleanup clears init promise', async () => {
|
|
182
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
183
|
+
// Start initialization
|
|
184
|
+
const initPromise = manager.getProvider();
|
|
185
|
+
// Cleanup while initializing
|
|
186
|
+
manager.cleanup();
|
|
187
|
+
// Wait for original promise
|
|
188
|
+
await initPromise.catch(() => { }); // Ignore any errors
|
|
189
|
+
// Should be able to get provider again
|
|
190
|
+
const provider = await manager.getProvider();
|
|
191
|
+
assert.ok(provider, 'Should get provider after cleanup during init');
|
|
192
|
+
});
|
|
193
|
+
// ============================================================================
|
|
194
|
+
// Provider Name Tests
|
|
195
|
+
// ============================================================================
|
|
196
|
+
test('ProviderManager works with openai provider name', async () => {
|
|
197
|
+
// OpenAI provider should work with test configuration
|
|
198
|
+
const manager = new ProviderManager('openai', createMockContext({ apiKey: 'test' }));
|
|
199
|
+
const provider = await manager.getProviderSafe();
|
|
200
|
+
// Should return OpenAI provider
|
|
201
|
+
assert.ok(provider, 'Should return OpenAI provider');
|
|
202
|
+
assert.equal(provider?.getName(), 'OpenAI', 'Should be OpenAI provider');
|
|
203
|
+
});
|
|
204
|
+
test('ProviderManager handles auto provider name (defaults to OpenAI)', async () => {
|
|
205
|
+
const manager = new ProviderManager('auto', createMockContext());
|
|
206
|
+
const provider = await manager.getProviderSafe();
|
|
207
|
+
// Auto should default to OpenAI
|
|
208
|
+
assert.ok(provider, 'Should return provider');
|
|
209
|
+
assert.equal(provider?.getName(), 'OpenAI', 'Auto should default to OpenAI');
|
|
210
|
+
});
|
|
211
|
+
// ============================================================================
|
|
212
|
+
// Edge Cases
|
|
213
|
+
// ============================================================================
|
|
214
|
+
test('ProviderManager handles empty context', async () => {
|
|
215
|
+
const manager = new ProviderManager('mock', {});
|
|
216
|
+
const provider = await manager.getProvider();
|
|
217
|
+
assert.ok(provider, 'Should work with empty context');
|
|
218
|
+
});
|
|
219
|
+
test('ProviderManager handles undefined context values', async () => {
|
|
220
|
+
const manager = new ProviderManager('mock', {
|
|
221
|
+
apiKey: undefined,
|
|
222
|
+
baseUrl: undefined,
|
|
223
|
+
model: undefined,
|
|
224
|
+
dimensions: undefined
|
|
225
|
+
});
|
|
226
|
+
const provider = await manager.getProvider();
|
|
227
|
+
assert.ok(provider, 'Should handle undefined values');
|
|
228
|
+
});
|
|
229
|
+
test('ProviderManager initialization order is preserved', async () => {
|
|
230
|
+
const initOrder = [];
|
|
231
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
232
|
+
// Start multiple init requests
|
|
233
|
+
const promises = [
|
|
234
|
+
manager.getProvider().then(() => initOrder.push('1')),
|
|
235
|
+
manager.getProvider().then(() => initOrder.push('2')),
|
|
236
|
+
manager.getProvider().then(() => initOrder.push('3'))
|
|
237
|
+
];
|
|
238
|
+
await Promise.all(promises);
|
|
239
|
+
// All should complete, order may vary but all should be present
|
|
240
|
+
assert.equal(initOrder.length, 3, 'All requests should complete');
|
|
241
|
+
});
|
|
242
|
+
// ============================================================================
|
|
243
|
+
// Logger Tests
|
|
244
|
+
// ============================================================================
|
|
245
|
+
test('ProviderManager initializes successfully with various provider names', async () => {
|
|
246
|
+
const logger = createMockLogger();
|
|
247
|
+
const manager = new ProviderManager('any-provider-name', createMockContext(), logger);
|
|
248
|
+
const provider = await manager.getProviderSafe();
|
|
249
|
+
// Due to fallback behavior, should always succeed
|
|
250
|
+
assert.ok(provider, 'Should return provider');
|
|
251
|
+
assert.equal(logger.errors.length, 0, 'Should not log errors when initialization succeeds');
|
|
252
|
+
});
|
|
253
|
+
test('ProviderManager handles logger without error method gracefully', async () => {
|
|
254
|
+
const logger = {
|
|
255
|
+
log: () => { },
|
|
256
|
+
// No error method
|
|
257
|
+
};
|
|
258
|
+
const manager = new ProviderManager('mock', createMockContext(), logger);
|
|
259
|
+
// Should not throw even without error method
|
|
260
|
+
const provider = await manager.getProviderSafe();
|
|
261
|
+
assert.ok(provider, 'Should return provider even with incomplete logger');
|
|
262
|
+
});
|
|
263
|
+
// ============================================================================
|
|
264
|
+
// Stress Tests
|
|
265
|
+
// ============================================================================
|
|
266
|
+
test('ProviderManager handles rapid getProvider calls', async () => {
|
|
267
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
268
|
+
const promises = [];
|
|
269
|
+
for (let i = 0; i < 100; i++) {
|
|
270
|
+
promises.push(manager.getProvider());
|
|
271
|
+
}
|
|
272
|
+
const providers = await Promise.all(promises);
|
|
273
|
+
// All should return the same instance
|
|
274
|
+
const first = providers[0];
|
|
275
|
+
assert.ok(providers.every(p => p === first), 'All should be same instance');
|
|
276
|
+
});
|
|
277
|
+
test('ProviderManager handles interleaved cleanup and getProvider', async () => {
|
|
278
|
+
const manager = new ProviderManager('mock', createMockContext());
|
|
279
|
+
const operations = [];
|
|
280
|
+
for (let i = 0; i < 10; i++) {
|
|
281
|
+
operations.push(manager.getProvider().catch(() => null));
|
|
282
|
+
if (i % 3 === 0) {
|
|
283
|
+
manager.cleanup();
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
const results = await Promise.all(operations);
|
|
287
|
+
// Some may be null due to cleanup, but should not throw
|
|
288
|
+
assert.ok(results.length === 10, 'All operations should complete');
|
|
289
|
+
});
|
|
290
|
+
//# sourceMappingURL=ProviderManager.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderManager.test.js","sourceRoot":"","sources":["../../../src/tests/indexer/ProviderManager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for src/indexer/WatchService.ts
|
|
3
|
+
*
|
|
4
|
+
* Tests file system watching and debounced change detection including:
|
|
5
|
+
* - WatchService construction and configuration
|
|
6
|
+
* - File event handling (add, change, unlink)
|
|
7
|
+
* - Extension filtering
|
|
8
|
+
* - Debounce configuration
|
|
9
|
+
* - Controller interface
|
|
10
|
+
* - startWatch helper function
|
|
11
|
+
* - Cleanup and resource management
|
|
12
|
+
*/
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=WatchService.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WatchService.test.d.ts","sourceRoot":"","sources":["../../../src/tests/indexer/WatchService.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|