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,495 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { groupNodesForChunking, createCombinedChunk } from '../../chunking/file-grouper.js';
|
|
4
|
+
function makeNode(type, startIndex = 0, endIndex = 0, children = []) {
|
|
5
|
+
return {
|
|
6
|
+
type,
|
|
7
|
+
startIndex,
|
|
8
|
+
endIndex,
|
|
9
|
+
childCount: children.length,
|
|
10
|
+
child: (idx) => children[idx] ?? null
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
// Character-based profile (no token counting)
|
|
14
|
+
const charProfile = {
|
|
15
|
+
maxTokens: 1000,
|
|
16
|
+
optimalTokens: 500,
|
|
17
|
+
minChunkTokens: 50,
|
|
18
|
+
maxChunkTokens: 800,
|
|
19
|
+
overlapTokens: 100,
|
|
20
|
+
optimalChars: 200, // Small for testing
|
|
21
|
+
minChunkChars: 20,
|
|
22
|
+
maxChunkChars: 400,
|
|
23
|
+
overlapChars: 40,
|
|
24
|
+
dimensions: 1536,
|
|
25
|
+
useTokens: false,
|
|
26
|
+
tokenizerType: 'estimate'
|
|
27
|
+
};
|
|
28
|
+
// Token-based profile
|
|
29
|
+
const tokenProfile = {
|
|
30
|
+
...charProfile,
|
|
31
|
+
useTokens: true,
|
|
32
|
+
tokenCounter: (text) => Math.ceil(text.length / 4)
|
|
33
|
+
};
|
|
34
|
+
// Language rule with container types
|
|
35
|
+
const tsRule = {
|
|
36
|
+
subdivisionTypes: {
|
|
37
|
+
class_declaration: ['method_definition', 'public_field_definition'],
|
|
38
|
+
interface_declaration: ['property_signature', 'method_signature']
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
// -------------------------------------------------------------------
|
|
42
|
+
// Tests for groupNodesForChunking
|
|
43
|
+
// -------------------------------------------------------------------
|
|
44
|
+
test('groupNodesForChunking returns empty array for null nodes', async () => {
|
|
45
|
+
const result = await groupNodesForChunking(null, 'source', charProfile, tsRule);
|
|
46
|
+
assert.deepEqual(result, []);
|
|
47
|
+
});
|
|
48
|
+
test('groupNodesForChunking returns empty array for empty array', async () => {
|
|
49
|
+
const result = await groupNodesForChunking([], 'source', charProfile, tsRule);
|
|
50
|
+
assert.deepEqual(result, []);
|
|
51
|
+
});
|
|
52
|
+
test('groupNodesForChunking returns individual nodes for 10 or fewer nodes', async () => {
|
|
53
|
+
const source = 'function a() {}\nfunction b() {}\nfunction c() {}';
|
|
54
|
+
const nodes = [
|
|
55
|
+
makeNode('function_declaration', 0, 15),
|
|
56
|
+
makeNode('function_declaration', 16, 31),
|
|
57
|
+
makeNode('function_declaration', 32, 47)
|
|
58
|
+
];
|
|
59
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
60
|
+
// With <= 10 nodes, returns each as its own group
|
|
61
|
+
assert.equal(result.length, 3);
|
|
62
|
+
result.forEach((group, i) => {
|
|
63
|
+
assert.equal(group.nodes.length, 1);
|
|
64
|
+
assert.equal(group.nodes[0], nodes[i]);
|
|
65
|
+
assert.equal(group.totalSize, 0); // Not analyzed for small counts
|
|
66
|
+
assert.deepEqual(group.groupInfo, []);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
test('groupNodesForChunking groups more than 10 nodes', async () => {
|
|
70
|
+
// Create 15 small functions
|
|
71
|
+
const functions = [];
|
|
72
|
+
const nodes = [];
|
|
73
|
+
let offset = 0;
|
|
74
|
+
for (let i = 0; i < 15; i++) {
|
|
75
|
+
const fn = `function fn${i}() { return ${i}; }`;
|
|
76
|
+
functions.push(fn);
|
|
77
|
+
nodes.push(makeNode('function_declaration', offset, offset + fn.length));
|
|
78
|
+
offset += fn.length + 1; // +1 for newline
|
|
79
|
+
}
|
|
80
|
+
const source = functions.join('\n');
|
|
81
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
82
|
+
// Should group nodes together
|
|
83
|
+
assert.ok(result.length > 0);
|
|
84
|
+
assert.ok(result.length < 15, 'Should group some nodes together');
|
|
85
|
+
// Total nodes across all groups should equal input
|
|
86
|
+
const totalNodes = result.reduce((sum, g) => sum + g.nodes.length, 0);
|
|
87
|
+
assert.equal(totalNodes, 15);
|
|
88
|
+
});
|
|
89
|
+
test('groupNodesForChunking separates container nodes', async () => {
|
|
90
|
+
// Create a mix of classes and functions
|
|
91
|
+
const classDecl = 'class MyClass {\n method() {}\n}';
|
|
92
|
+
const funcDecl1 = 'function helper1() {}';
|
|
93
|
+
const funcDecl2 = 'function helper2() {}';
|
|
94
|
+
const source = `${funcDecl1}\n${classDecl}\n${funcDecl2}`;
|
|
95
|
+
const nodes = [
|
|
96
|
+
makeNode('function_declaration', 0, funcDecl1.length),
|
|
97
|
+
makeNode('class_declaration', funcDecl1.length + 1, funcDecl1.length + 1 + classDecl.length),
|
|
98
|
+
makeNode('function_declaration', source.length - funcDecl2.length, source.length)
|
|
99
|
+
];
|
|
100
|
+
// Need more than 10 nodes for grouping to kick in
|
|
101
|
+
// Add padding nodes
|
|
102
|
+
for (let i = 0; i < 10; i++) {
|
|
103
|
+
nodes.push(makeNode('function_declaration', 0, 10));
|
|
104
|
+
}
|
|
105
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
106
|
+
// Classes should be separated into their own groups
|
|
107
|
+
const containerGroups = result.filter((g) => g.groupInfo?.some((info) => info.type === 'container'));
|
|
108
|
+
assert.ok(containerGroups.length >= 1);
|
|
109
|
+
});
|
|
110
|
+
test('groupNodesForChunking uses token counter when available', async () => {
|
|
111
|
+
const functions = [];
|
|
112
|
+
const nodes = [];
|
|
113
|
+
let offset = 0;
|
|
114
|
+
for (let i = 0; i < 12; i++) {
|
|
115
|
+
const fn = `fn${i}()`;
|
|
116
|
+
functions.push(fn);
|
|
117
|
+
nodes.push(makeNode('function', offset, offset + fn.length));
|
|
118
|
+
offset += fn.length + 1;
|
|
119
|
+
}
|
|
120
|
+
const source = functions.join('\n');
|
|
121
|
+
let tokenCounterCalled = false;
|
|
122
|
+
const profile = {
|
|
123
|
+
...tokenProfile,
|
|
124
|
+
tokenCounter: (text) => {
|
|
125
|
+
tokenCounterCalled = true;
|
|
126
|
+
return Math.ceil(text.length / 4);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
await groupNodesForChunking(nodes, source, profile, tsRule);
|
|
130
|
+
assert.ok(tokenCounterCalled, 'Token counter should be called');
|
|
131
|
+
});
|
|
132
|
+
test('groupNodesForChunking respects size limits when grouping', async () => {
|
|
133
|
+
// Create nodes that together exceed optimal size (200 chars)
|
|
134
|
+
// Each line is ~30 chars, so more than ~7 nodes will exceed optimal
|
|
135
|
+
const lines = [];
|
|
136
|
+
const nodes = [];
|
|
137
|
+
let offset = 0;
|
|
138
|
+
for (let i = 0; i < 20; i++) {
|
|
139
|
+
// Each line is ~30 chars, optimal is 200
|
|
140
|
+
const line = `const variable${i} = "value${i}";`;
|
|
141
|
+
lines.push(line);
|
|
142
|
+
nodes.push(makeNode('variable_declaration', offset, offset + line.length));
|
|
143
|
+
offset += line.length + 1;
|
|
144
|
+
}
|
|
145
|
+
const source = lines.join('\n');
|
|
146
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
147
|
+
// Should create at least one group
|
|
148
|
+
assert.ok(result.length >= 1);
|
|
149
|
+
// Total nodes across all groups should equal input
|
|
150
|
+
const totalNodes = result.reduce((sum, g) => sum + g.nodes.length, 0);
|
|
151
|
+
assert.equal(totalNodes, 20);
|
|
152
|
+
});
|
|
153
|
+
test('groupNodesForChunking handles interface declarations', async () => {
|
|
154
|
+
const interfaceDecl = 'interface MyInterface {\n prop: string;\n}';
|
|
155
|
+
const source = interfaceDecl;
|
|
156
|
+
const nodes = [];
|
|
157
|
+
// Need > 10 nodes
|
|
158
|
+
for (let i = 0; i < 12; i++) {
|
|
159
|
+
nodes.push(makeNode('interface_declaration', 0, interfaceDecl.length));
|
|
160
|
+
}
|
|
161
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
162
|
+
assert.ok(result.length > 0);
|
|
163
|
+
});
|
|
164
|
+
test('groupNodesForChunking handles module declarations', async () => {
|
|
165
|
+
const nodes = [];
|
|
166
|
+
for (let i = 0; i < 12; i++) {
|
|
167
|
+
nodes.push(makeNode('module_declaration', 0, 50));
|
|
168
|
+
}
|
|
169
|
+
const source = 'module Test { export function foo() {} }';
|
|
170
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
171
|
+
// Module declarations are container types
|
|
172
|
+
const containerCount = result.filter((g) => g.groupInfo?.some((info) => info.type === 'container')).length;
|
|
173
|
+
assert.ok(containerCount > 0);
|
|
174
|
+
});
|
|
175
|
+
test('groupNodesForChunking handles trait declarations', async () => {
|
|
176
|
+
const nodes = [];
|
|
177
|
+
for (let i = 0; i < 12; i++) {
|
|
178
|
+
nodes.push(makeNode('trait_declaration', 0, 30));
|
|
179
|
+
}
|
|
180
|
+
const source = 'trait MyTrait { fn method(); }';
|
|
181
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
182
|
+
assert.ok(result.length > 0);
|
|
183
|
+
});
|
|
184
|
+
test('groupNodesForChunking handles enum declarations', async () => {
|
|
185
|
+
const nodes = [];
|
|
186
|
+
for (let i = 0; i < 12; i++) {
|
|
187
|
+
nodes.push(makeNode('enum_declaration', 0, 40));
|
|
188
|
+
}
|
|
189
|
+
const source = 'enum Status { Active, Inactive, Pending }';
|
|
190
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
191
|
+
assert.ok(result.length > 0);
|
|
192
|
+
});
|
|
193
|
+
test('groupNodesForChunking handles namespace declarations', async () => {
|
|
194
|
+
const nodes = [];
|
|
195
|
+
for (let i = 0; i < 12; i++) {
|
|
196
|
+
nodes.push(makeNode('namespace_declaration', 0, 50));
|
|
197
|
+
}
|
|
198
|
+
const source = 'namespace MyNamespace { export const x = 1; }';
|
|
199
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
200
|
+
assert.ok(result.length > 0);
|
|
201
|
+
});
|
|
202
|
+
test('groupNodesForChunking combines small groups efficiently', async () => {
|
|
203
|
+
// Create many very small nodes
|
|
204
|
+
const nodes = [];
|
|
205
|
+
for (let i = 0; i < 50; i++) {
|
|
206
|
+
// Each node covers just a few characters
|
|
207
|
+
nodes.push(makeNode('identifier', i * 5, i * 5 + 4));
|
|
208
|
+
}
|
|
209
|
+
const source = Array.from({ length: 50 }, (_, i) => `x${i} `).join('');
|
|
210
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
211
|
+
// Should combine many small nodes into fewer groups
|
|
212
|
+
assert.ok(result.length < 50, 'Should combine nodes into groups');
|
|
213
|
+
assert.ok(result.length > 0);
|
|
214
|
+
});
|
|
215
|
+
// -------------------------------------------------------------------
|
|
216
|
+
// Tests for createCombinedChunk
|
|
217
|
+
// -------------------------------------------------------------------
|
|
218
|
+
test('createCombinedChunk returns null for empty node group', () => {
|
|
219
|
+
const group = {
|
|
220
|
+
nodes: [],
|
|
221
|
+
totalSize: 0,
|
|
222
|
+
groupInfo: []
|
|
223
|
+
};
|
|
224
|
+
const result = createCombinedChunk(group, 'source');
|
|
225
|
+
assert.equal(result, null);
|
|
226
|
+
});
|
|
227
|
+
test('createCombinedChunk returns null when nodes is null', () => {
|
|
228
|
+
const group = {
|
|
229
|
+
nodes: null,
|
|
230
|
+
totalSize: 0,
|
|
231
|
+
groupInfo: []
|
|
232
|
+
};
|
|
233
|
+
const result = createCombinedChunk(group, 'source');
|
|
234
|
+
assert.equal(result, null);
|
|
235
|
+
});
|
|
236
|
+
test('createCombinedChunk creates chunk for single node', () => {
|
|
237
|
+
const source = 'function test() { return 42; }';
|
|
238
|
+
const node = makeNode('function_declaration', 0, source.length);
|
|
239
|
+
const group = {
|
|
240
|
+
nodes: [node],
|
|
241
|
+
totalSize: source.length,
|
|
242
|
+
groupInfo: [{ type: 'file_section', nodes: [node], analyses: [], parentNode: null }]
|
|
243
|
+
};
|
|
244
|
+
const result = createCombinedChunk(group, source);
|
|
245
|
+
assert.notEqual(result, null);
|
|
246
|
+
assert.equal(result.code, source);
|
|
247
|
+
assert.equal(result.metadata.nodeCount, 1);
|
|
248
|
+
assert.equal(result.metadata.isGroup, true);
|
|
249
|
+
});
|
|
250
|
+
test('createCombinedChunk combines multiple nodes with double newline', () => {
|
|
251
|
+
const fn1 = 'function a() {}';
|
|
252
|
+
const fn2 = 'function b() {}';
|
|
253
|
+
const source = `${fn1}\n${fn2}`;
|
|
254
|
+
const node1 = makeNode('function', 0, fn1.length);
|
|
255
|
+
const node2 = makeNode('function', fn1.length + 1, source.length);
|
|
256
|
+
const group = {
|
|
257
|
+
nodes: [node1, node2],
|
|
258
|
+
totalSize: source.length,
|
|
259
|
+
groupInfo: []
|
|
260
|
+
};
|
|
261
|
+
const result = createCombinedChunk(group, source);
|
|
262
|
+
assert.notEqual(result, null);
|
|
263
|
+
assert.ok(result.code.includes('\n\n'), 'Should join with double newline');
|
|
264
|
+
assert.equal(result.metadata.nodeCount, 2);
|
|
265
|
+
});
|
|
266
|
+
test('createCombinedChunk sets correct type for grouped nodes', () => {
|
|
267
|
+
const source = 'const a = 1;\nconst b = 2;\nconst c = 3;';
|
|
268
|
+
const nodes = [
|
|
269
|
+
makeNode('variable_declaration', 0, 12),
|
|
270
|
+
makeNode('variable_declaration', 13, 25),
|
|
271
|
+
makeNode('variable_declaration', 26, 38)
|
|
272
|
+
];
|
|
273
|
+
const group = {
|
|
274
|
+
nodes: nodes,
|
|
275
|
+
totalSize: source.length,
|
|
276
|
+
groupInfo: []
|
|
277
|
+
};
|
|
278
|
+
const result = createCombinedChunk(group, source);
|
|
279
|
+
assert.notEqual(result, null);
|
|
280
|
+
assert.equal(result.node.type, 'variable_declaration_group_3');
|
|
281
|
+
});
|
|
282
|
+
test('createCombinedChunk sets endIndex from last node', () => {
|
|
283
|
+
const source = 'line1\nline2\nline3';
|
|
284
|
+
const nodes = [
|
|
285
|
+
makeNode('line', 0, 5),
|
|
286
|
+
makeNode('line', 6, 11),
|
|
287
|
+
makeNode('line', 12, 17)
|
|
288
|
+
];
|
|
289
|
+
const group = {
|
|
290
|
+
nodes: nodes,
|
|
291
|
+
totalSize: source.length,
|
|
292
|
+
groupInfo: []
|
|
293
|
+
};
|
|
294
|
+
const result = createCombinedChunk(group, source);
|
|
295
|
+
assert.notEqual(result, null);
|
|
296
|
+
assert.equal(result.node.endIndex, 17);
|
|
297
|
+
});
|
|
298
|
+
test('createCombinedChunk includes group types in metadata', () => {
|
|
299
|
+
const source = 'code';
|
|
300
|
+
const node = makeNode('statement', 0, 4);
|
|
301
|
+
const group = {
|
|
302
|
+
nodes: [node],
|
|
303
|
+
totalSize: 4,
|
|
304
|
+
groupInfo: [
|
|
305
|
+
{ type: 'container', containerType: 'class', nodes: [], analyses: [], parentNode: null },
|
|
306
|
+
{ type: 'file_section', nodes: [], analyses: [], parentNode: null }
|
|
307
|
+
]
|
|
308
|
+
};
|
|
309
|
+
const result = createCombinedChunk(group, source);
|
|
310
|
+
assert.notEqual(result, null);
|
|
311
|
+
assert.deepEqual(result.metadata.groupTypes, ['container', 'file_section']);
|
|
312
|
+
});
|
|
313
|
+
test('createCombinedChunk returns empty groupTypes for empty groupInfo array', () => {
|
|
314
|
+
const source = 'code';
|
|
315
|
+
const node = makeNode('statement', 0, 4);
|
|
316
|
+
const group = {
|
|
317
|
+
nodes: [node],
|
|
318
|
+
totalSize: 4,
|
|
319
|
+
groupInfo: []
|
|
320
|
+
};
|
|
321
|
+
const result = createCombinedChunk(group, source);
|
|
322
|
+
assert.notEqual(result, null);
|
|
323
|
+
// Empty array maps to empty array, not 'combined' fallback
|
|
324
|
+
// The 'combined' fallback only applies when groupInfo is null/undefined
|
|
325
|
+
assert.deepEqual(result.metadata.groupTypes, []);
|
|
326
|
+
});
|
|
327
|
+
test('createCombinedChunk handles undefined groupInfo', () => {
|
|
328
|
+
const source = 'code';
|
|
329
|
+
const node = makeNode('statement', 0, 4);
|
|
330
|
+
const group = {
|
|
331
|
+
nodes: [node],
|
|
332
|
+
totalSize: 4
|
|
333
|
+
// groupInfo intentionally omitted
|
|
334
|
+
};
|
|
335
|
+
const result = createCombinedChunk(group, source);
|
|
336
|
+
assert.notEqual(result, null);
|
|
337
|
+
assert.deepEqual(result.metadata.groupTypes, ['combined']);
|
|
338
|
+
});
|
|
339
|
+
test('createCombinedChunk preserves first node properties', () => {
|
|
340
|
+
const source = 'const x = 1;\nconst y = 2;';
|
|
341
|
+
const node1 = makeNode('variable_declaration', 0, 12);
|
|
342
|
+
const node2 = makeNode('variable_declaration', 13, 25);
|
|
343
|
+
const group = {
|
|
344
|
+
nodes: [node1, node2],
|
|
345
|
+
totalSize: source.length,
|
|
346
|
+
groupInfo: []
|
|
347
|
+
};
|
|
348
|
+
const result = createCombinedChunk(group, source);
|
|
349
|
+
assert.notEqual(result, null);
|
|
350
|
+
// Should preserve startIndex from first node
|
|
351
|
+
assert.equal(result.node.startIndex, 0);
|
|
352
|
+
});
|
|
353
|
+
test('createCombinedChunk reports totalSize in metadata', () => {
|
|
354
|
+
const source = 'x'.repeat(100);
|
|
355
|
+
const node = makeNode('content', 0, 100);
|
|
356
|
+
const group = {
|
|
357
|
+
nodes: [node],
|
|
358
|
+
totalSize: 150, // Can be different from actual code length
|
|
359
|
+
groupInfo: []
|
|
360
|
+
};
|
|
361
|
+
const result = createCombinedChunk(group, source);
|
|
362
|
+
assert.notEqual(result, null);
|
|
363
|
+
assert.equal(result.metadata.totalSize, 150);
|
|
364
|
+
});
|
|
365
|
+
// -------------------------------------------------------------------
|
|
366
|
+
// Edge case tests
|
|
367
|
+
// -------------------------------------------------------------------
|
|
368
|
+
test('groupNodesForChunking handles exactly 10 nodes', async () => {
|
|
369
|
+
const nodes = [];
|
|
370
|
+
for (let i = 0; i < 10; i++) {
|
|
371
|
+
nodes.push(makeNode('function', i * 10, i * 10 + 9));
|
|
372
|
+
}
|
|
373
|
+
const source = 'x'.repeat(100);
|
|
374
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
375
|
+
// Should return individual groups (threshold is <= 10)
|
|
376
|
+
assert.equal(result.length, 10);
|
|
377
|
+
});
|
|
378
|
+
test('groupNodesForChunking handles exactly 11 nodes', async () => {
|
|
379
|
+
const nodes = [];
|
|
380
|
+
for (let i = 0; i < 11; i++) {
|
|
381
|
+
nodes.push(makeNode('function', i * 10, i * 10 + 9));
|
|
382
|
+
}
|
|
383
|
+
const source = 'x'.repeat(110);
|
|
384
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
385
|
+
// Should perform grouping (threshold is > 10)
|
|
386
|
+
assert.ok(result.length >= 1);
|
|
387
|
+
});
|
|
388
|
+
test('groupNodesForChunking handles nodes with overlapping indices', async () => {
|
|
389
|
+
// This shouldn't happen in practice but test robustness
|
|
390
|
+
const nodes = [];
|
|
391
|
+
for (let i = 0; i < 12; i++) {
|
|
392
|
+
nodes.push(makeNode('statement', 0, 50)); // All same range
|
|
393
|
+
}
|
|
394
|
+
const source = 'const repeated = "same code block repeated";';
|
|
395
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
396
|
+
assert.ok(result.length >= 1);
|
|
397
|
+
});
|
|
398
|
+
test('groupNodesForChunking handles single very large node', async () => {
|
|
399
|
+
const largeSource = 'x'.repeat(10000);
|
|
400
|
+
const nodes = [makeNode('large_block', 0, 10000)];
|
|
401
|
+
// Add padding to exceed threshold
|
|
402
|
+
for (let i = 0; i < 11; i++) {
|
|
403
|
+
nodes.push(makeNode('small', 0, 10));
|
|
404
|
+
}
|
|
405
|
+
const result = await groupNodesForChunking(nodes, largeSource, charProfile, tsRule);
|
|
406
|
+
// Large node should be in its own group
|
|
407
|
+
const largeGroup = result.find((g) => g.totalSize > charProfile.optimalChars);
|
|
408
|
+
assert.ok(largeGroup !== undefined || result.length > 1);
|
|
409
|
+
});
|
|
410
|
+
test('createCombinedChunk handles special characters in source', () => {
|
|
411
|
+
const source = 'const emoji = "\\uD83D\\uDE00"; const special = "<>&\\"\'";';
|
|
412
|
+
const node = makeNode('declarations', 0, source.length);
|
|
413
|
+
const group = {
|
|
414
|
+
nodes: [node],
|
|
415
|
+
totalSize: source.length,
|
|
416
|
+
groupInfo: []
|
|
417
|
+
};
|
|
418
|
+
const result = createCombinedChunk(group, source);
|
|
419
|
+
assert.notEqual(result, null);
|
|
420
|
+
assert.equal(result.code, source);
|
|
421
|
+
});
|
|
422
|
+
test('createCombinedChunk handles empty source', () => {
|
|
423
|
+
const node = makeNode('empty', 0, 0);
|
|
424
|
+
const group = {
|
|
425
|
+
nodes: [node],
|
|
426
|
+
totalSize: 0,
|
|
427
|
+
groupInfo: []
|
|
428
|
+
};
|
|
429
|
+
const result = createCombinedChunk(group, '');
|
|
430
|
+
assert.notEqual(result, null);
|
|
431
|
+
assert.equal(result.code, '');
|
|
432
|
+
assert.equal(result.metadata.nodeCount, 1);
|
|
433
|
+
});
|
|
434
|
+
test('groupNodesForChunking with async token counter', async () => {
|
|
435
|
+
const nodes = [];
|
|
436
|
+
for (let i = 0; i < 15; i++) {
|
|
437
|
+
nodes.push(makeNode('function', i * 20, i * 20 + 19));
|
|
438
|
+
}
|
|
439
|
+
const source = 'x'.repeat(300);
|
|
440
|
+
const asyncProfile = {
|
|
441
|
+
...tokenProfile,
|
|
442
|
+
tokenCounter: async (text) => {
|
|
443
|
+
await new Promise((resolve) => setTimeout(resolve, 1));
|
|
444
|
+
return Math.ceil(text.length / 4);
|
|
445
|
+
}
|
|
446
|
+
};
|
|
447
|
+
const result = await groupNodesForChunking(nodes, source, asyncProfile, tsRule);
|
|
448
|
+
assert.ok(result.length > 0);
|
|
449
|
+
});
|
|
450
|
+
test('groupNodesForChunking preserves node order', async () => {
|
|
451
|
+
const nodes = [];
|
|
452
|
+
for (let i = 0; i < 15; i++) {
|
|
453
|
+
nodes.push(makeNode(`function_${i}`, i * 10, i * 10 + 9));
|
|
454
|
+
}
|
|
455
|
+
const source = 'x'.repeat(150);
|
|
456
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
457
|
+
// Flatten all nodes from groups and check order is preserved
|
|
458
|
+
const flatNodes = [];
|
|
459
|
+
result.forEach((group) => {
|
|
460
|
+
group.nodes.forEach((n) => flatNodes.push(n));
|
|
461
|
+
});
|
|
462
|
+
for (let i = 0; i < flatNodes.length - 1; i++) {
|
|
463
|
+
assert.ok(flatNodes[i].startIndex <= flatNodes[i + 1].startIndex, 'Nodes should maintain order');
|
|
464
|
+
}
|
|
465
|
+
});
|
|
466
|
+
test('groupNodesForChunking fills groups to 90% of optimal before creating new group', async () => {
|
|
467
|
+
// Create nodes where combined size is just under optimal * 0.9
|
|
468
|
+
// Each node is 20 chars, optimal is 200, so ~9 nodes should fit
|
|
469
|
+
const nodes = [];
|
|
470
|
+
for (let i = 0; i < 25; i++) {
|
|
471
|
+
nodes.push(makeNode('small_function', i * 22, i * 22 + 20));
|
|
472
|
+
}
|
|
473
|
+
const source = Array.from({ length: 25 }, () => 'function f() { x; }').join('\n\n');
|
|
474
|
+
const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
|
|
475
|
+
// Should have fewer groups than nodes due to combining
|
|
476
|
+
assert.ok(result.length < 25);
|
|
477
|
+
});
|
|
478
|
+
test('createCombinedChunk handles multiline code correctly', () => {
|
|
479
|
+
const fn1 = 'function a() {\n return 1;\n}';
|
|
480
|
+
const fn2 = 'function b() {\n return 2;\n}';
|
|
481
|
+
const source = `${fn1}\n${fn2}`;
|
|
482
|
+
const node1 = makeNode('function', 0, fn1.length);
|
|
483
|
+
const node2 = makeNode('function', fn1.length + 1, source.length);
|
|
484
|
+
const group = {
|
|
485
|
+
nodes: [node1, node2],
|
|
486
|
+
totalSize: source.length,
|
|
487
|
+
groupInfo: []
|
|
488
|
+
};
|
|
489
|
+
const result = createCombinedChunk(group, source);
|
|
490
|
+
assert.notEqual(result, null);
|
|
491
|
+
// Combined code should have both functions
|
|
492
|
+
assert.ok(result.code.includes('function a()'));
|
|
493
|
+
assert.ok(result.code.includes('function b()'));
|
|
494
|
+
});
|
|
495
|
+
//# sourceMappingURL=file-grouper.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-grouper.test.js","sourceRoot":"","sources":["../../../src/tests/chunking/file-grouper.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-chunker.test.d.ts","sourceRoot":"","sources":["../../../src/tests/chunking/semantic-chunker.test.ts"],"names":[],"mappings":""}
|