grepmind-core 0.1.0-alpha
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/LICENSE +190 -0
- package/dist/config/types.d.ts +174 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +137 -0
- package/dist/config/types.js.map +1 -0
- package/dist/git.d.ts +98 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +298 -0
- package/dist/git.js.map +1 -0
- package/dist/git.test.d.ts +7 -0
- package/dist/git.test.d.ts.map +1 -0
- package/dist/git.test.js +242 -0
- package/dist/git.test.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer/branch.d.ts +121 -0
- package/dist/indexer/branch.d.ts.map +1 -0
- package/dist/indexer/branch.js +451 -0
- package/dist/indexer/branch.js.map +1 -0
- package/dist/indexer/chunker.d.ts +9 -0
- package/dist/indexer/chunker.d.ts.map +1 -0
- package/dist/indexer/chunker.js +70 -0
- package/dist/indexer/chunker.js.map +1 -0
- package/dist/indexer/chunker.test.d.ts +2 -0
- package/dist/indexer/chunker.test.d.ts.map +1 -0
- package/dist/indexer/chunker.test.js +180 -0
- package/dist/indexer/chunker.test.js.map +1 -0
- package/dist/indexer/code/branch.d.ts +155 -0
- package/dist/indexer/code/branch.d.ts.map +1 -0
- package/dist/indexer/code/branch.js +550 -0
- package/dist/indexer/code/branch.js.map +1 -0
- package/dist/indexer/code/branch.test.d.ts +7 -0
- package/dist/indexer/code/branch.test.d.ts.map +1 -0
- package/dist/indexer/code/branch.test.js +241 -0
- package/dist/indexer/code/branch.test.js.map +1 -0
- package/dist/indexer/code/chunker.d.ts +61 -0
- package/dist/indexer/code/chunker.d.ts.map +1 -0
- package/dist/indexer/code/chunker.js +311 -0
- package/dist/indexer/code/chunker.js.map +1 -0
- package/dist/indexer/code/chunker.test.d.ts +2 -0
- package/dist/indexer/code/chunker.test.d.ts.map +1 -0
- package/dist/indexer/code/chunker.test.js +552 -0
- package/dist/indexer/code/chunker.test.js.map +1 -0
- package/dist/indexer/code/fts.test.d.ts +2 -0
- package/dist/indexer/code/fts.test.d.ts.map +1 -0
- package/dist/indexer/code/fts.test.js +14 -0
- package/dist/indexer/code/fts.test.js.map +1 -0
- package/dist/indexer/code/graph/embedded.d.ts +11 -0
- package/dist/indexer/code/graph/embedded.d.ts.map +1 -0
- package/dist/indexer/code/graph/embedded.js +152 -0
- package/dist/indexer/code/graph/embedded.js.map +1 -0
- package/dist/indexer/code/graph/embedded.test.d.ts +2 -0
- package/dist/indexer/code/graph/embedded.test.d.ts.map +1 -0
- package/dist/indexer/code/graph/embedded.test.js +105 -0
- package/dist/indexer/code/graph/embedded.test.js.map +1 -0
- package/dist/indexer/code/graph/facts.d.ts +11 -0
- package/dist/indexer/code/graph/facts.d.ts.map +1 -0
- package/dist/indexer/code/graph/facts.js +456 -0
- package/dist/indexer/code/graph/facts.js.map +1 -0
- package/dist/indexer/code/graph/facts.test.d.ts +2 -0
- package/dist/indexer/code/graph/facts.test.d.ts.map +1 -0
- package/dist/indexer/code/graph/facts.test.js +181 -0
- package/dist/indexer/code/graph/facts.test.js.map +1 -0
- package/dist/indexer/code/graph/id.d.ts +14 -0
- package/dist/indexer/code/graph/id.d.ts.map +1 -0
- package/dist/indexer/code/graph/id.js +40 -0
- package/dist/indexer/code/graph/id.js.map +1 -0
- package/dist/indexer/code/graph/id.test.d.ts +2 -0
- package/dist/indexer/code/graph/id.test.d.ts.map +1 -0
- package/dist/indexer/code/graph/id.test.js +86 -0
- package/dist/indexer/code/graph/id.test.js.map +1 -0
- package/dist/indexer/code/graph/index.d.ts +133 -0
- package/dist/indexer/code/graph/index.d.ts.map +1 -0
- package/dist/indexer/code/graph/index.js +1876 -0
- package/dist/indexer/code/graph/index.js.map +1 -0
- package/dist/indexer/code/graph/index.test.d.ts +2 -0
- package/dist/indexer/code/graph/index.test.d.ts.map +1 -0
- package/dist/indexer/code/graph/index.test.js +210 -0
- package/dist/indexer/code/graph/index.test.js.map +1 -0
- package/dist/indexer/code/graph/queries.d.ts +22 -0
- package/dist/indexer/code/graph/queries.d.ts.map +1 -0
- package/dist/indexer/code/graph/queries.js +79 -0
- package/dist/indexer/code/graph/queries.js.map +1 -0
- package/dist/indexer/code/graph/queries.test.d.ts +2 -0
- package/dist/indexer/code/graph/queries.test.d.ts.map +1 -0
- package/dist/indexer/code/graph/queries.test.js +108 -0
- package/dist/indexer/code/graph/queries.test.js.map +1 -0
- package/dist/indexer/code/graph/resolver.d.ts +136 -0
- package/dist/indexer/code/graph/resolver.d.ts.map +1 -0
- package/dist/indexer/code/graph/resolver.js +839 -0
- package/dist/indexer/code/graph/resolver.js.map +1 -0
- package/dist/indexer/code/graph/resolver.test.d.ts +2 -0
- package/dist/indexer/code/graph/resolver.test.d.ts.map +1 -0
- package/dist/indexer/code/graph/resolver.test.js +482 -0
- package/dist/indexer/code/graph/resolver.test.js.map +1 -0
- package/dist/indexer/code/graph/semantic.d.ts +33 -0
- package/dist/indexer/code/graph/semantic.d.ts.map +1 -0
- package/dist/indexer/code/graph/semantic.js +279 -0
- package/dist/indexer/code/graph/semantic.js.map +1 -0
- package/dist/indexer/code/graph/semantic.test.d.ts +2 -0
- package/dist/indexer/code/graph/semantic.test.d.ts.map +1 -0
- package/dist/indexer/code/graph/semantic.test.js +127 -0
- package/dist/indexer/code/graph/semantic.test.js.map +1 -0
- package/dist/indexer/code/index.d.ts +404 -0
- package/dist/indexer/code/index.d.ts.map +1 -0
- package/dist/indexer/code/index.js +2070 -0
- package/dist/indexer/code/index.js.map +1 -0
- package/dist/indexer/code/languages/bash.d.ts +14 -0
- package/dist/indexer/code/languages/bash.d.ts.map +1 -0
- package/dist/indexer/code/languages/bash.js +125 -0
- package/dist/indexer/code/languages/bash.js.map +1 -0
- package/dist/indexer/code/languages/css.d.ts +16 -0
- package/dist/indexer/code/languages/css.d.ts.map +1 -0
- package/dist/indexer/code/languages/css.js +204 -0
- package/dist/indexer/code/languages/css.js.map +1 -0
- package/dist/indexer/code/languages/generic.d.ts +61 -0
- package/dist/indexer/code/languages/generic.d.ts.map +1 -0
- package/dist/indexer/code/languages/generic.js +150 -0
- package/dist/indexer/code/languages/generic.js.map +1 -0
- package/dist/indexer/code/languages/graphql.d.ts +13 -0
- package/dist/indexer/code/languages/graphql.d.ts.map +1 -0
- package/dist/indexer/code/languages/graphql.js +180 -0
- package/dist/indexer/code/languages/graphql.js.map +1 -0
- package/dist/indexer/code/languages/html.d.ts +16 -0
- package/dist/indexer/code/languages/html.d.ts.map +1 -0
- package/dist/indexer/code/languages/html.js +138 -0
- package/dist/indexer/code/languages/html.js.map +1 -0
- package/dist/indexer/code/languages/index.d.ts +9 -0
- package/dist/indexer/code/languages/index.d.ts.map +1 -0
- package/dist/indexer/code/languages/index.js +12 -0
- package/dist/indexer/code/languages/index.js.map +1 -0
- package/dist/indexer/code/languages/json.d.ts +12 -0
- package/dist/indexer/code/languages/json.d.ts.map +1 -0
- package/dist/indexer/code/languages/json.js +66 -0
- package/dist/indexer/code/languages/json.js.map +1 -0
- package/dist/indexer/code/languages/registry.d.ts +78 -0
- package/dist/indexer/code/languages/registry.d.ts.map +1 -0
- package/dist/indexer/code/languages/registry.js +72 -0
- package/dist/indexer/code/languages/registry.js.map +1 -0
- package/dist/indexer/code/languages/typescript.d.ts +39 -0
- package/dist/indexer/code/languages/typescript.d.ts.map +1 -0
- package/dist/indexer/code/languages/typescript.js +300 -0
- package/dist/indexer/code/languages/typescript.js.map +1 -0
- package/dist/indexer/code/languages/yaml.d.ts +13 -0
- package/dist/indexer/code/languages/yaml.d.ts.map +1 -0
- package/dist/indexer/code/languages/yaml.js +90 -0
- package/dist/indexer/code/languages/yaml.js.map +1 -0
- package/dist/indexer/code/parser.d.ts +26 -0
- package/dist/indexer/code/parser.d.ts.map +1 -0
- package/dist/indexer/code/parser.js +332 -0
- package/dist/indexer/code/parser.js.map +1 -0
- package/dist/indexer/code/retry.d.ts +58 -0
- package/dist/indexer/code/retry.d.ts.map +1 -0
- package/dist/indexer/code/retry.js +192 -0
- package/dist/indexer/code/retry.js.map +1 -0
- package/dist/indexer/code/tree/builder.d.ts +30 -0
- package/dist/indexer/code/tree/builder.d.ts.map +1 -0
- package/dist/indexer/code/tree/builder.js +132 -0
- package/dist/indexer/code/tree/builder.js.map +1 -0
- package/dist/indexer/code/tree/builder.test.d.ts +2 -0
- package/dist/indexer/code/tree/builder.test.d.ts.map +1 -0
- package/dist/indexer/code/tree/builder.test.js +31 -0
- package/dist/indexer/code/tree/builder.test.js.map +1 -0
- package/dist/indexer/code/tree/cache.d.ts +22 -0
- package/dist/indexer/code/tree/cache.d.ts.map +1 -0
- package/dist/indexer/code/tree/cache.js +85 -0
- package/dist/indexer/code/tree/cache.js.map +1 -0
- package/dist/indexer/code/tree/context.d.ts +32 -0
- package/dist/indexer/code/tree/context.d.ts.map +1 -0
- package/dist/indexer/code/tree/context.js +78 -0
- package/dist/indexer/code/tree/context.js.map +1 -0
- package/dist/indexer/code/tree/embedding.d.ts +9 -0
- package/dist/indexer/code/tree/embedding.d.ts.map +1 -0
- package/dist/indexer/code/tree/embedding.js +53 -0
- package/dist/indexer/code/tree/embedding.js.map +1 -0
- package/dist/indexer/code/tree/embedding.test.d.ts +2 -0
- package/dist/indexer/code/tree/embedding.test.d.ts.map +1 -0
- package/dist/indexer/code/tree/embedding.test.js +57 -0
- package/dist/indexer/code/tree/embedding.test.js.map +1 -0
- package/dist/indexer/code/tree/id.d.ts +3 -0
- package/dist/indexer/code/tree/id.d.ts.map +1 -0
- package/dist/indexer/code/tree/id.js +8 -0
- package/dist/indexer/code/tree/id.js.map +1 -0
- package/dist/indexer/code/tree/index.d.ts +113 -0
- package/dist/indexer/code/tree/index.d.ts.map +1 -0
- package/dist/indexer/code/tree/index.js +1146 -0
- package/dist/indexer/code/tree/index.js.map +1 -0
- package/dist/indexer/code/tree/rename.d.ts +13 -0
- package/dist/indexer/code/tree/rename.d.ts.map +1 -0
- package/dist/indexer/code/tree/rename.js +46 -0
- package/dist/indexer/code/tree/rename.js.map +1 -0
- package/dist/indexer/code/tree/repomap.d.ts +29 -0
- package/dist/indexer/code/tree/repomap.d.ts.map +1 -0
- package/dist/indexer/code/tree/repomap.js +95 -0
- package/dist/indexer/code/tree/repomap.js.map +1 -0
- package/dist/indexer/code/tree/repomap.test.d.ts +2 -0
- package/dist/indexer/code/tree/repomap.test.d.ts.map +1 -0
- package/dist/indexer/code/tree/repomap.test.js +93 -0
- package/dist/indexer/code/tree/repomap.test.js.map +1 -0
- package/dist/indexer/code/tree/stats.d.ts +26 -0
- package/dist/indexer/code/tree/stats.d.ts.map +1 -0
- package/dist/indexer/code/tree/stats.js +49 -0
- package/dist/indexer/code/tree/stats.js.map +1 -0
- package/dist/indexer/code/tree/types.d.ts +186 -0
- package/dist/indexer/code/tree/types.d.ts.map +1 -0
- package/dist/indexer/code/tree/types.js +10 -0
- package/dist/indexer/code/tree/types.js.map +1 -0
- package/dist/indexer/code/wal.d.ts +144 -0
- package/dist/indexer/code/wal.d.ts.map +1 -0
- package/dist/indexer/code/wal.js +283 -0
- package/dist/indexer/code/wal.js.map +1 -0
- package/dist/indexer/embeddings.d.ts +113 -0
- package/dist/indexer/embeddings.d.ts.map +1 -0
- package/dist/indexer/embeddings.js +477 -0
- package/dist/indexer/embeddings.js.map +1 -0
- package/dist/indexer/git-sync.d.ts +117 -0
- package/dist/indexer/git-sync.d.ts.map +1 -0
- package/dist/indexer/git-sync.js +398 -0
- package/dist/indexer/git-sync.js.map +1 -0
- package/dist/indexer/index.d.ts +175 -0
- package/dist/indexer/index.d.ts.map +1 -0
- package/dist/indexer/index.js +1096 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/indexer/mocks/mock-reranker.d.ts +12 -0
- package/dist/indexer/mocks/mock-reranker.d.ts.map +1 -0
- package/dist/indexer/mocks/mock-reranker.js +26 -0
- package/dist/indexer/mocks/mock-reranker.js.map +1 -0
- package/dist/indexer/parser.d.ts +8 -0
- package/dist/indexer/parser.d.ts.map +1 -0
- package/dist/indexer/parser.js +44 -0
- package/dist/indexer/parser.js.map +1 -0
- package/dist/indexer/parser.test.d.ts +2 -0
- package/dist/indexer/parser.test.d.ts.map +1 -0
- package/dist/indexer/parser.test.js +197 -0
- package/dist/indexer/parser.test.js.map +1 -0
- package/dist/indexer/reranking.d.ts +71 -0
- package/dist/indexer/reranking.d.ts.map +1 -0
- package/dist/indexer/reranking.integration.test.d.ts +2 -0
- package/dist/indexer/reranking.integration.test.d.ts.map +1 -0
- package/dist/indexer/reranking.integration.test.js +104 -0
- package/dist/indexer/reranking.integration.test.js.map +1 -0
- package/dist/indexer/reranking.js +256 -0
- package/dist/indexer/reranking.js.map +1 -0
- package/dist/indexer/reranking.test.d.ts +2 -0
- package/dist/indexer/reranking.test.d.ts.map +1 -0
- package/dist/indexer/reranking.test.js +130 -0
- package/dist/indexer/reranking.test.js.map +1 -0
- package/dist/indexer/wal/file-storage.d.ts +60 -0
- package/dist/indexer/wal/file-storage.d.ts.map +1 -0
- package/dist/indexer/wal/file-storage.js +277 -0
- package/dist/indexer/wal/file-storage.js.map +1 -0
- package/dist/indexer/wal/file-storage.test.d.ts +8 -0
- package/dist/indexer/wal/file-storage.test.d.ts.map +1 -0
- package/dist/indexer/wal/file-storage.test.js +444 -0
- package/dist/indexer/wal/file-storage.test.js.map +1 -0
- package/dist/indexer/wal/index.d.ts +41 -0
- package/dist/indexer/wal/index.d.ts.map +1 -0
- package/dist/indexer/wal/index.js +61 -0
- package/dist/indexer/wal/index.js.map +1 -0
- package/dist/indexer/wal/integration.test.d.ts +11 -0
- package/dist/indexer/wal/integration.test.d.ts.map +1 -0
- package/dist/indexer/wal/integration.test.js +378 -0
- package/dist/indexer/wal/integration.test.js.map +1 -0
- package/dist/indexer/wal/lancedb-storage.d.ts +72 -0
- package/dist/indexer/wal/lancedb-storage.d.ts.map +1 -0
- package/dist/indexer/wal/lancedb-storage.js +462 -0
- package/dist/indexer/wal/lancedb-storage.js.map +1 -0
- package/dist/indexer/wal/lancedb-storage.test.d.ts +8 -0
- package/dist/indexer/wal/lancedb-storage.test.d.ts.map +1 -0
- package/dist/indexer/wal/lancedb-storage.test.js +415 -0
- package/dist/indexer/wal/lancedb-storage.test.js.map +1 -0
- package/dist/indexer/wal/sync-wal.d.ts +144 -0
- package/dist/indexer/wal/sync-wal.d.ts.map +1 -0
- package/dist/indexer/wal/sync-wal.js +863 -0
- package/dist/indexer/wal/sync-wal.js.map +1 -0
- package/dist/indexer/wal/sync-wal.test.d.ts +8 -0
- package/dist/indexer/wal/sync-wal.test.d.ts.map +1 -0
- package/dist/indexer/wal/sync-wal.test.js +752 -0
- package/dist/indexer/wal/sync-wal.test.js.map +1 -0
- package/dist/indexer/wal/types.d.ts +167 -0
- package/dist/indexer/wal/types.d.ts.map +1 -0
- package/dist/indexer/wal/types.js +12 -0
- package/dist/indexer/wal/types.js.map +1 -0
- package/dist/indexer/watcher.d.ts +36 -0
- package/dist/indexer/watcher.d.ts.map +1 -0
- package/dist/indexer/watcher.js +110 -0
- package/dist/indexer/watcher.js.map +1 -0
- package/dist/search/explore.d.ts +62 -0
- package/dist/search/explore.d.ts.map +1 -0
- package/dist/search/explore.js +111 -0
- package/dist/search/explore.js.map +1 -0
- package/dist/search/fts.d.ts +23 -0
- package/dist/search/fts.d.ts.map +1 -0
- package/dist/search/fts.js +64 -0
- package/dist/search/fts.js.map +1 -0
- package/dist/search/fts.test.d.ts +2 -0
- package/dist/search/fts.test.d.ts.map +1 -0
- package/dist/search/fts.test.js +27 -0
- package/dist/search/fts.test.js.map +1 -0
- package/dist/search/grep.d.ts +75 -0
- package/dist/search/grep.d.ts.map +1 -0
- package/dist/search/grep.js +96 -0
- package/dist/search/grep.js.map +1 -0
- package/dist/search/grep.test.d.ts +2 -0
- package/dist/search/grep.test.d.ts.map +1 -0
- package/dist/search/grep.test.js +178 -0
- package/dist/search/grep.test.js.map +1 -0
- package/dist/search/hybrid-grep.d.ts +43 -0
- package/dist/search/hybrid-grep.d.ts.map +1 -0
- package/dist/search/hybrid-grep.js +130 -0
- package/dist/search/hybrid-grep.js.map +1 -0
- package/dist/search/hybrid-grep.test.d.ts +2 -0
- package/dist/search/hybrid-grep.test.d.ts.map +1 -0
- package/dist/search/hybrid-grep.test.js +133 -0
- package/dist/search/hybrid-grep.test.js.map +1 -0
- package/dist/search/rg-executor.d.ts +63 -0
- package/dist/search/rg-executor.d.ts.map +1 -0
- package/dist/search/rg-executor.js +146 -0
- package/dist/search/rg-executor.js.map +1 -0
- package/dist/search/rg-executor.test.d.ts +2 -0
- package/dist/search/rg-executor.test.d.ts.map +1 -0
- package/dist/search/rg-executor.test.js +104 -0
- package/dist/search/rg-executor.test.js.map +1 -0
- package/dist/search/rg-parser/extractor.d.ts +14 -0
- package/dist/search/rg-parser/extractor.d.ts.map +1 -0
- package/dist/search/rg-parser/extractor.js +82 -0
- package/dist/search/rg-parser/extractor.js.map +1 -0
- package/dist/search/rg-parser/extractor.test.d.ts +2 -0
- package/dist/search/rg-parser/extractor.test.d.ts.map +1 -0
- package/dist/search/rg-parser/extractor.test.js +35 -0
- package/dist/search/rg-parser/extractor.test.js.map +1 -0
- package/dist/search/rg-parser/fts-builder.d.ts +7 -0
- package/dist/search/rg-parser/fts-builder.d.ts.map +1 -0
- package/dist/search/rg-parser/fts-builder.js +18 -0
- package/dist/search/rg-parser/fts-builder.js.map +1 -0
- package/dist/search/rg-parser/fts-builder.test.d.ts +2 -0
- package/dist/search/rg-parser/fts-builder.test.d.ts.map +1 -0
- package/dist/search/rg-parser/fts-builder.test.js +26 -0
- package/dist/search/rg-parser/fts-builder.test.js.map +1 -0
- package/dist/search/rg-parser/index.d.ts +36 -0
- package/dist/search/rg-parser/index.d.ts.map +1 -0
- package/dist/search/rg-parser/index.js +83 -0
- package/dist/search/rg-parser/index.js.map +1 -0
- package/dist/search/rg-parser/index.test.d.ts +2 -0
- package/dist/search/rg-parser/index.test.d.ts.map +1 -0
- package/dist/search/rg-parser/index.test.js +34 -0
- package/dist/search/rg-parser/index.test.js.map +1 -0
- package/dist/search/rg-parser/strategy.d.ts +14 -0
- package/dist/search/rg-parser/strategy.d.ts.map +1 -0
- package/dist/search/rg-parser/strategy.js +31 -0
- package/dist/search/rg-parser/strategy.js.map +1 -0
- package/dist/search/rg-parser/strategy.test.d.ts +2 -0
- package/dist/search/rg-parser/strategy.test.d.ts.map +1 -0
- package/dist/search/rg-parser/strategy.test.js +29 -0
- package/dist/search/rg-parser/strategy.test.js.map +1 -0
- package/dist/types.d.ts +345 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/vault.d.ts +84 -0
- package/dist/utils/vault.d.ts.map +1 -0
- package/dist/utils/vault.js +138 -0
- package/dist/utils/vault.js.map +1 -0
- package/dist/utils/vault.test.d.ts +2 -0
- package/dist/utils/vault.test.d.ts.map +1 -0
- package/dist/utils/vault.test.js +153 -0
- package/dist/utils/vault.test.js.map +1 -0
- package/package.json +69 -0
package/dist/git.js
ADDED
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
// Git utilities for branch-aware indexing.
|
|
2
|
+
// All functions require cwd parameter (no config fallback).
|
|
3
|
+
import { execSync } from 'node:child_process';
|
|
4
|
+
/**
|
|
5
|
+
* Get current git branch name.
|
|
6
|
+
* Returns null if not in a git repository.
|
|
7
|
+
*
|
|
8
|
+
* @param cwd - Working directory (required)
|
|
9
|
+
*/
|
|
10
|
+
export function getCurrentBranch(cwd) {
|
|
11
|
+
try {
|
|
12
|
+
const result = execSync('git branch --show-current', {
|
|
13
|
+
cwd,
|
|
14
|
+
encoding: 'utf-8',
|
|
15
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
16
|
+
});
|
|
17
|
+
return result.trim() || null;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get the main branch name (main or master).
|
|
25
|
+
*
|
|
26
|
+
* @param cwd - Working directory (required)
|
|
27
|
+
*/
|
|
28
|
+
export function getMainBranch(cwd) {
|
|
29
|
+
try {
|
|
30
|
+
execSync('git rev-parse --verify main', {
|
|
31
|
+
cwd,
|
|
32
|
+
encoding: 'utf-8',
|
|
33
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
34
|
+
});
|
|
35
|
+
return 'main';
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
try {
|
|
39
|
+
execSync('git rev-parse --verify master', {
|
|
40
|
+
cwd,
|
|
41
|
+
encoding: 'utf-8',
|
|
42
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
43
|
+
});
|
|
44
|
+
return 'master';
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return 'main';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get full git info for current repository.
|
|
53
|
+
*
|
|
54
|
+
* @param cwd - Working directory (required)
|
|
55
|
+
*/
|
|
56
|
+
export function getGitInfo(cwd) {
|
|
57
|
+
const branch = getCurrentBranch(cwd);
|
|
58
|
+
if (!branch)
|
|
59
|
+
return null;
|
|
60
|
+
const mainBranch = getMainBranch(cwd);
|
|
61
|
+
return {
|
|
62
|
+
branch,
|
|
63
|
+
isMainBranch: branch === mainBranch,
|
|
64
|
+
mainBranch,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Check if a file matches any of the given glob-like patterns.
|
|
69
|
+
* Supports simple patterns like '*.md', '*.ts', etc.
|
|
70
|
+
*/
|
|
71
|
+
function matchesAnyPattern(filePath, patterns) {
|
|
72
|
+
for (const pattern of patterns) {
|
|
73
|
+
if (pattern.startsWith('*.')) {
|
|
74
|
+
const ext = pattern.slice(1);
|
|
75
|
+
if (filePath.endsWith(ext)) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else if (filePath === pattern || filePath.endsWith(`/${pattern}`)) {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get files changed between current branch and main.
|
|
87
|
+
* Returns { modified: string[], deleted: string[] }
|
|
88
|
+
*
|
|
89
|
+
* @param cwd - Working directory (required)
|
|
90
|
+
* @param patterns - File patterns to filter (e.g., ['*.md'] or ['*.ts', '*.tsx'])
|
|
91
|
+
*/
|
|
92
|
+
export function getChangedFilesFromMain(cwd, patterns = ['*.md']) {
|
|
93
|
+
const mainBranch = getMainBranch(cwd);
|
|
94
|
+
try {
|
|
95
|
+
const mergeBase = execSync(`git merge-base ${mainBranch} HEAD`, {
|
|
96
|
+
cwd,
|
|
97
|
+
encoding: 'utf-8',
|
|
98
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
99
|
+
}).trim();
|
|
100
|
+
const patternArgs = patterns.map(p => `'${p}'`).join(' ');
|
|
101
|
+
const modifiedRaw = execSync(`git diff --name-only --diff-filter=ACMR ${mergeBase} HEAD -- ${patternArgs}`, {
|
|
102
|
+
cwd,
|
|
103
|
+
encoding: 'utf-8',
|
|
104
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
105
|
+
});
|
|
106
|
+
const modified = modifiedRaw
|
|
107
|
+
.trim()
|
|
108
|
+
.split('\n')
|
|
109
|
+
.filter(f => f.length > 0 && matchesAnyPattern(f, patterns));
|
|
110
|
+
const deletedRaw = execSync(`git diff --name-only --diff-filter=D ${mergeBase} HEAD -- ${patternArgs}`, {
|
|
111
|
+
cwd,
|
|
112
|
+
encoding: 'utf-8',
|
|
113
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
114
|
+
});
|
|
115
|
+
const deleted = deletedRaw
|
|
116
|
+
.trim()
|
|
117
|
+
.split('\n')
|
|
118
|
+
.filter(f => f.length > 0 && matchesAnyPattern(f, patterns));
|
|
119
|
+
return { modified, deleted };
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return { modified: [], deleted: [] };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Check if we're in a git repository.
|
|
127
|
+
*
|
|
128
|
+
* @param cwd - Working directory (required)
|
|
129
|
+
*/
|
|
130
|
+
export function isGitRepository(cwd) {
|
|
131
|
+
try {
|
|
132
|
+
execSync('git rev-parse --git-dir', {
|
|
133
|
+
cwd,
|
|
134
|
+
encoding: 'utf-8',
|
|
135
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
136
|
+
});
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Sanitize branch name for use in file paths.
|
|
145
|
+
*/
|
|
146
|
+
export function sanitizeBranchName(branch) {
|
|
147
|
+
return branch.replace(/[^a-zA-Z0-9_-]/g, '-');
|
|
148
|
+
}
|
|
149
|
+
// ============================================================================
|
|
150
|
+
// Git-Sync Utilities
|
|
151
|
+
// ============================================================================
|
|
152
|
+
/**
|
|
153
|
+
* Get current HEAD commit SHA.
|
|
154
|
+
*
|
|
155
|
+
* @param cwd - Working directory (required)
|
|
156
|
+
*/
|
|
157
|
+
export function getHeadCommit(cwd) {
|
|
158
|
+
try {
|
|
159
|
+
const result = execSync('git rev-parse HEAD', {
|
|
160
|
+
cwd,
|
|
161
|
+
encoding: 'utf-8',
|
|
162
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
163
|
+
});
|
|
164
|
+
return result.trim() || null;
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Check if a commit exists in the repository.
|
|
172
|
+
*
|
|
173
|
+
* @param sha - Commit SHA
|
|
174
|
+
* @param cwd - Working directory (required)
|
|
175
|
+
*/
|
|
176
|
+
export function commitExists(sha, cwd) {
|
|
177
|
+
try {
|
|
178
|
+
execSync(`git cat-file -t ${sha}`, {
|
|
179
|
+
cwd,
|
|
180
|
+
encoding: 'utf-8',
|
|
181
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
182
|
+
});
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Check if commit A is an ancestor of commit B.
|
|
191
|
+
*
|
|
192
|
+
* @param ancestorSha - Ancestor commit SHA
|
|
193
|
+
* @param descendantSha - Descendant commit SHA
|
|
194
|
+
* @param cwd - Working directory (required)
|
|
195
|
+
*/
|
|
196
|
+
export function isAncestor(ancestorSha, descendantSha, cwd) {
|
|
197
|
+
try {
|
|
198
|
+
execSync(`git merge-base --is-ancestor ${ancestorSha} ${descendantSha}`, {
|
|
199
|
+
cwd,
|
|
200
|
+
encoding: 'utf-8',
|
|
201
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
202
|
+
});
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get the merge base (common ancestor) of two commits.
|
|
211
|
+
*
|
|
212
|
+
* @param sha1 - First commit SHA
|
|
213
|
+
* @param sha2 - Second commit SHA
|
|
214
|
+
* @param cwd - Working directory (required)
|
|
215
|
+
*/
|
|
216
|
+
export function getMergeBase(sha1, sha2, cwd) {
|
|
217
|
+
try {
|
|
218
|
+
const result = execSync(`git merge-base ${sha1} ${sha2}`, {
|
|
219
|
+
cwd,
|
|
220
|
+
encoding: 'utf-8',
|
|
221
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
222
|
+
});
|
|
223
|
+
return result.trim() || null;
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Get commit timestamp (Unix epoch).
|
|
231
|
+
*
|
|
232
|
+
* @param sha - Commit SHA
|
|
233
|
+
* @param cwd - Working directory (required)
|
|
234
|
+
*/
|
|
235
|
+
export function getCommitTimestamp(sha, cwd) {
|
|
236
|
+
try {
|
|
237
|
+
const result = execSync(`git log -1 --format=%ct ${sha}`, {
|
|
238
|
+
cwd,
|
|
239
|
+
encoding: 'utf-8',
|
|
240
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
241
|
+
});
|
|
242
|
+
const ts = parseInt(result.trim(), 10);
|
|
243
|
+
return isNaN(ts) ? null : ts;
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Get diff between two commits with file status.
|
|
251
|
+
*
|
|
252
|
+
* @param baseCommit - Base commit SHA
|
|
253
|
+
* @param headCommit - Head commit SHA
|
|
254
|
+
* @param patterns - File patterns to filter
|
|
255
|
+
* @param cwd - Working directory (required)
|
|
256
|
+
*/
|
|
257
|
+
export function getDiffStatus(baseCommit, headCommit, patterns = ['*.md'], cwd) {
|
|
258
|
+
try {
|
|
259
|
+
const patternArgs = patterns.map(p => `'${p}'`).join(' ');
|
|
260
|
+
const result = execSync(`git diff --name-status -M ${baseCommit}..${headCommit} -- ${patternArgs}`, {
|
|
261
|
+
cwd,
|
|
262
|
+
encoding: 'utf-8',
|
|
263
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
264
|
+
});
|
|
265
|
+
const entries = [];
|
|
266
|
+
for (const line of result.trim().split('\n')) {
|
|
267
|
+
if (!line)
|
|
268
|
+
continue;
|
|
269
|
+
const parts = line.split('\t');
|
|
270
|
+
const statusStr = parts[0];
|
|
271
|
+
if (statusStr.startsWith('R')) {
|
|
272
|
+
const similarity = parseInt(statusStr.slice(1), 10);
|
|
273
|
+
const oldPath = parts[1];
|
|
274
|
+
const newPath = parts[2];
|
|
275
|
+
if (matchesAnyPattern(newPath, patterns)) {
|
|
276
|
+
entries.push({
|
|
277
|
+
status: 'R',
|
|
278
|
+
path: newPath,
|
|
279
|
+
oldPath,
|
|
280
|
+
similarity: isNaN(similarity) ? undefined : similarity,
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
const status = statusStr;
|
|
286
|
+
const filePath = parts[1];
|
|
287
|
+
if (['A', 'M', 'D'].includes(status) && matchesAnyPattern(filePath, patterns)) {
|
|
288
|
+
entries.push({ status, path: filePath });
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return entries;
|
|
293
|
+
}
|
|
294
|
+
catch {
|
|
295
|
+
return [];
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=git.js.map
|
package/dist/git.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.test.d.ts","sourceRoot":"","sources":["../src/git.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
package/dist/git.test.js
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Utilities Tests
|
|
3
|
+
*
|
|
4
|
+
* Tests for git helper functions used in branch-aware indexing.
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
7
|
+
import * as fs from 'node:fs/promises';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
import * as os from 'node:os';
|
|
10
|
+
import { execSync } from 'node:child_process';
|
|
11
|
+
import { getCurrentBranch, getMainBranch, getGitInfo, getChangedFilesFromMain, isGitRepository, sanitizeBranchName, getHeadCommit, commitExists, isAncestor, getMergeBase, getCommitTimestamp, getDiffStatus, } from './git.js';
|
|
12
|
+
describe('Git Utilities', () => {
|
|
13
|
+
let tempDir;
|
|
14
|
+
beforeEach(async () => {
|
|
15
|
+
tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'git-test-'));
|
|
16
|
+
});
|
|
17
|
+
afterEach(async () => {
|
|
18
|
+
await fs.rm(tempDir, { recursive: true, force: true });
|
|
19
|
+
});
|
|
20
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
21
|
+
// NON-GIT REPOSITORY
|
|
22
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
23
|
+
describe('Non-git repository', () => {
|
|
24
|
+
it('getCurrentBranch returns null for non-git directory', () => {
|
|
25
|
+
expect(getCurrentBranch(tempDir)).toBeNull();
|
|
26
|
+
});
|
|
27
|
+
it('isGitRepository returns false for non-git directory', () => {
|
|
28
|
+
expect(isGitRepository(tempDir)).toBe(false);
|
|
29
|
+
});
|
|
30
|
+
it('getGitInfo returns null for non-git directory', () => {
|
|
31
|
+
expect(getGitInfo(tempDir)).toBeNull();
|
|
32
|
+
});
|
|
33
|
+
it('getHeadCommit returns null for non-git directory', () => {
|
|
34
|
+
expect(getHeadCommit(tempDir)).toBeNull();
|
|
35
|
+
});
|
|
36
|
+
it('getChangedFilesFromMain returns empty arrays for non-git directory', () => {
|
|
37
|
+
const result = getChangedFilesFromMain(tempDir);
|
|
38
|
+
expect(result.modified).toEqual([]);
|
|
39
|
+
expect(result.deleted).toEqual([]);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
43
|
+
// GIT REPOSITORY
|
|
44
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
45
|
+
describe('Git repository', () => {
|
|
46
|
+
beforeEach(async () => {
|
|
47
|
+
// Initialize git repo
|
|
48
|
+
execSync('git init', { cwd: tempDir, stdio: 'pipe' });
|
|
49
|
+
execSync('git config user.email "test@test.com"', { cwd: tempDir, stdio: 'pipe' });
|
|
50
|
+
execSync('git config user.name "Test User"', { cwd: tempDir, stdio: 'pipe' });
|
|
51
|
+
// Create initial commit on main
|
|
52
|
+
await fs.writeFile(path.join(tempDir, 'README.md'), '# Test');
|
|
53
|
+
execSync('git add .', { cwd: tempDir, stdio: 'pipe' });
|
|
54
|
+
execSync('git commit -m "Initial commit"', { cwd: tempDir, stdio: 'pipe' });
|
|
55
|
+
});
|
|
56
|
+
it('isGitRepository returns true for git directory', () => {
|
|
57
|
+
expect(isGitRepository(tempDir)).toBe(true);
|
|
58
|
+
});
|
|
59
|
+
it('getCurrentBranch returns current branch name', () => {
|
|
60
|
+
const branch = getCurrentBranch(tempDir);
|
|
61
|
+
expect(branch).toBeTruthy();
|
|
62
|
+
// Could be 'main' or 'master' depending on git config
|
|
63
|
+
expect(['main', 'master']).toContain(branch);
|
|
64
|
+
});
|
|
65
|
+
it('getMainBranch returns main or master', () => {
|
|
66
|
+
const mainBranch = getMainBranch(tempDir);
|
|
67
|
+
expect(['main', 'master']).toContain(mainBranch);
|
|
68
|
+
});
|
|
69
|
+
it('getGitInfo returns complete git info', () => {
|
|
70
|
+
const info = getGitInfo(tempDir);
|
|
71
|
+
expect(info).not.toBeNull();
|
|
72
|
+
expect(info.branch).toBeTruthy();
|
|
73
|
+
expect(info.isMainBranch).toBe(true);
|
|
74
|
+
expect(['main', 'master']).toContain(info.mainBranch);
|
|
75
|
+
});
|
|
76
|
+
it('getHeadCommit returns valid commit SHA', () => {
|
|
77
|
+
const sha = getHeadCommit(tempDir);
|
|
78
|
+
expect(sha).toBeTruthy();
|
|
79
|
+
expect(sha).toHaveLength(40); // SHA-1 hash length
|
|
80
|
+
});
|
|
81
|
+
it('commitExists returns true for valid commit', () => {
|
|
82
|
+
const sha = getHeadCommit(tempDir);
|
|
83
|
+
expect(commitExists(sha, tempDir)).toBe(true);
|
|
84
|
+
});
|
|
85
|
+
it('commitExists returns false for invalid commit', () => {
|
|
86
|
+
expect(commitExists('0000000000000000000000000000000000000000', tempDir)).toBe(false);
|
|
87
|
+
});
|
|
88
|
+
it('getCommitTimestamp returns valid timestamp', () => {
|
|
89
|
+
const sha = getHeadCommit(tempDir);
|
|
90
|
+
const timestamp = getCommitTimestamp(sha, tempDir);
|
|
91
|
+
expect(timestamp).toBeTruthy();
|
|
92
|
+
expect(timestamp).toBeGreaterThan(0);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
96
|
+
// BRANCH OPERATIONS
|
|
97
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
98
|
+
describe('Branch operations', () => {
|
|
99
|
+
beforeEach(async () => {
|
|
100
|
+
// Initialize git repo
|
|
101
|
+
execSync('git init', { cwd: tempDir, stdio: 'pipe' });
|
|
102
|
+
execSync('git config user.email "test@test.com"', { cwd: tempDir, stdio: 'pipe' });
|
|
103
|
+
execSync('git config user.name "Test User"', { cwd: tempDir, stdio: 'pipe' });
|
|
104
|
+
// Create initial commit on main
|
|
105
|
+
await fs.writeFile(path.join(tempDir, 'README.md'), '# Test');
|
|
106
|
+
execSync('git add .', { cwd: tempDir, stdio: 'pipe' });
|
|
107
|
+
execSync('git commit -m "Initial commit"', { cwd: tempDir, stdio: 'pipe' });
|
|
108
|
+
});
|
|
109
|
+
it('getGitInfo detects feature branch', () => {
|
|
110
|
+
// Create and switch to feature branch
|
|
111
|
+
execSync('git checkout -b feature/test-branch', { cwd: tempDir, stdio: 'pipe' });
|
|
112
|
+
const info = getGitInfo(tempDir);
|
|
113
|
+
expect(info).not.toBeNull();
|
|
114
|
+
expect(info.branch).toBe('feature/test-branch');
|
|
115
|
+
expect(info.isMainBranch).toBe(false);
|
|
116
|
+
});
|
|
117
|
+
it('isAncestor works correctly', () => {
|
|
118
|
+
const mainCommit = getHeadCommit(tempDir);
|
|
119
|
+
// Create feature branch with new commit
|
|
120
|
+
execSync('git checkout -b feature/test', { cwd: tempDir, stdio: 'pipe' });
|
|
121
|
+
execSync('echo "new content" >> README.md', { cwd: tempDir, stdio: 'pipe', shell: '/bin/bash' });
|
|
122
|
+
execSync('git add .', { cwd: tempDir, stdio: 'pipe' });
|
|
123
|
+
execSync('git commit -m "Feature commit"', { cwd: tempDir, stdio: 'pipe' });
|
|
124
|
+
const featureCommit = getHeadCommit(tempDir);
|
|
125
|
+
expect(isAncestor(mainCommit, featureCommit, tempDir)).toBe(true);
|
|
126
|
+
expect(isAncestor(featureCommit, mainCommit, tempDir)).toBe(false);
|
|
127
|
+
});
|
|
128
|
+
it('getMergeBase finds common ancestor', () => {
|
|
129
|
+
const mainCommit = getHeadCommit(tempDir);
|
|
130
|
+
// Create feature branch
|
|
131
|
+
execSync('git checkout -b feature/test', { cwd: tempDir, stdio: 'pipe' });
|
|
132
|
+
execSync('echo "feature" >> README.md', { cwd: tempDir, stdio: 'pipe', shell: '/bin/bash' });
|
|
133
|
+
execSync('git add .', { cwd: tempDir, stdio: 'pipe' });
|
|
134
|
+
execSync('git commit -m "Feature"', { cwd: tempDir, stdio: 'pipe' });
|
|
135
|
+
const featureCommit = getHeadCommit(tempDir);
|
|
136
|
+
const mergeBase = getMergeBase(mainCommit, featureCommit, tempDir);
|
|
137
|
+
expect(mergeBase).toBe(mainCommit);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
141
|
+
// FILE CHANGES DETECTION
|
|
142
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
143
|
+
describe('File changes detection', () => {
|
|
144
|
+
beforeEach(async () => {
|
|
145
|
+
// Initialize git repo
|
|
146
|
+
execSync('git init', { cwd: tempDir, stdio: 'pipe' });
|
|
147
|
+
execSync('git config user.email "test@test.com"', { cwd: tempDir, stdio: 'pipe' });
|
|
148
|
+
execSync('git config user.name "Test User"', { cwd: tempDir, stdio: 'pipe' });
|
|
149
|
+
// Create initial commit on main with some files
|
|
150
|
+
await fs.writeFile(path.join(tempDir, 'README.md'), '# Test');
|
|
151
|
+
await fs.writeFile(path.join(tempDir, 'index.ts'), 'export const a = 1;');
|
|
152
|
+
await fs.writeFile(path.join(tempDir, 'utils.ts'), 'export const b = 2;');
|
|
153
|
+
execSync('git add .', { cwd: tempDir, stdio: 'pipe' });
|
|
154
|
+
execSync('git commit -m "Initial commit"', { cwd: tempDir, stdio: 'pipe' });
|
|
155
|
+
});
|
|
156
|
+
it('getChangedFilesFromMain detects modified files', async () => {
|
|
157
|
+
// Create feature branch and modify file
|
|
158
|
+
execSync('git checkout -b feature/changes', { cwd: tempDir, stdio: 'pipe' });
|
|
159
|
+
await fs.writeFile(path.join(tempDir, 'index.ts'), 'export const a = 100;');
|
|
160
|
+
execSync('git add .', { cwd: tempDir, stdio: 'pipe' });
|
|
161
|
+
execSync('git commit -m "Modify index"', { cwd: tempDir, stdio: 'pipe' });
|
|
162
|
+
const changes = getChangedFilesFromMain(tempDir, ['*.ts']);
|
|
163
|
+
expect(changes.modified).toContain('index.ts');
|
|
164
|
+
expect(changes.deleted).toEqual([]);
|
|
165
|
+
});
|
|
166
|
+
it('getChangedFilesFromMain detects added files', async () => {
|
|
167
|
+
// Create feature branch and add file
|
|
168
|
+
execSync('git checkout -b feature/add', { cwd: tempDir, stdio: 'pipe' });
|
|
169
|
+
await fs.writeFile(path.join(tempDir, 'new-file.ts'), 'export const c = 3;');
|
|
170
|
+
execSync('git add .', { cwd: tempDir, stdio: 'pipe' });
|
|
171
|
+
execSync('git commit -m "Add new file"', { cwd: tempDir, stdio: 'pipe' });
|
|
172
|
+
const changes = getChangedFilesFromMain(tempDir, ['*.ts']);
|
|
173
|
+
expect(changes.modified).toContain('new-file.ts');
|
|
174
|
+
});
|
|
175
|
+
it('getChangedFilesFromMain detects deleted files', async () => {
|
|
176
|
+
// Create feature branch and delete file
|
|
177
|
+
execSync('git checkout -b feature/delete', { cwd: tempDir, stdio: 'pipe' });
|
|
178
|
+
await fs.unlink(path.join(tempDir, 'utils.ts'));
|
|
179
|
+
execSync('git add .', { cwd: tempDir, stdio: 'pipe' });
|
|
180
|
+
execSync('git commit -m "Delete utils"', { cwd: tempDir, stdio: 'pipe' });
|
|
181
|
+
const changes = getChangedFilesFromMain(tempDir, ['*.ts']);
|
|
182
|
+
expect(changes.deleted).toContain('utils.ts');
|
|
183
|
+
});
|
|
184
|
+
it('getChangedFilesFromMain filters by pattern', async () => {
|
|
185
|
+
// Create feature branch and modify both ts and md files
|
|
186
|
+
execSync('git checkout -b feature/mixed', { cwd: tempDir, stdio: 'pipe' });
|
|
187
|
+
await fs.writeFile(path.join(tempDir, 'README.md'), '# Updated');
|
|
188
|
+
await fs.writeFile(path.join(tempDir, 'index.ts'), 'export const x = 1;');
|
|
189
|
+
execSync('git add .', { cwd: tempDir, stdio: 'pipe' });
|
|
190
|
+
execSync('git commit -m "Mixed changes"', { cwd: tempDir, stdio: 'pipe' });
|
|
191
|
+
// Only *.ts
|
|
192
|
+
const tsChanges = getChangedFilesFromMain(tempDir, ['*.ts']);
|
|
193
|
+
expect(tsChanges.modified).toContain('index.ts');
|
|
194
|
+
expect(tsChanges.modified).not.toContain('README.md');
|
|
195
|
+
// Only *.md
|
|
196
|
+
const mdChanges = getChangedFilesFromMain(tempDir, ['*.md']);
|
|
197
|
+
expect(mdChanges.modified).toContain('README.md');
|
|
198
|
+
expect(mdChanges.modified).not.toContain('index.ts');
|
|
199
|
+
});
|
|
200
|
+
it('getDiffStatus returns correct status for each file', async () => {
|
|
201
|
+
const mainCommit = getHeadCommit(tempDir);
|
|
202
|
+
// Create feature branch with various changes
|
|
203
|
+
execSync('git checkout -b feature/diff', { cwd: tempDir, stdio: 'pipe' });
|
|
204
|
+
await fs.writeFile(path.join(tempDir, 'index.ts'), 'modified');
|
|
205
|
+
await fs.writeFile(path.join(tempDir, 'new.ts'), 'new');
|
|
206
|
+
await fs.unlink(path.join(tempDir, 'utils.ts'));
|
|
207
|
+
execSync('git add .', { cwd: tempDir, stdio: 'pipe' });
|
|
208
|
+
execSync('git commit -m "Various changes"', { cwd: tempDir, stdio: 'pipe' });
|
|
209
|
+
const headCommit = getHeadCommit(tempDir);
|
|
210
|
+
const diff = getDiffStatus(mainCommit, headCommit, ['*.ts'], tempDir);
|
|
211
|
+
const modified = diff.find(d => d.path === 'index.ts');
|
|
212
|
+
const added = diff.find(d => d.path === 'new.ts');
|
|
213
|
+
const deleted = diff.find(d => d.path === 'utils.ts');
|
|
214
|
+
expect(modified?.status).toBe('M');
|
|
215
|
+
expect(added?.status).toBe('A');
|
|
216
|
+
expect(deleted?.status).toBe('D');
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
220
|
+
// UTILITY FUNCTIONS
|
|
221
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
222
|
+
describe('Utility functions', () => {
|
|
223
|
+
it('sanitizeBranchName handles simple names', () => {
|
|
224
|
+
expect(sanitizeBranchName('main')).toBe('main');
|
|
225
|
+
expect(sanitizeBranchName('feature')).toBe('feature');
|
|
226
|
+
});
|
|
227
|
+
it('sanitizeBranchName handles slashes', () => {
|
|
228
|
+
expect(sanitizeBranchName('feature/my-feature')).toBe('feature-my-feature');
|
|
229
|
+
expect(sanitizeBranchName('feature/nested/branch')).toBe('feature-nested-branch');
|
|
230
|
+
});
|
|
231
|
+
it('sanitizeBranchName handles special characters', () => {
|
|
232
|
+
expect(sanitizeBranchName('feature@123')).toBe('feature-123');
|
|
233
|
+
expect(sanitizeBranchName('fix#456')).toBe('fix-456');
|
|
234
|
+
expect(sanitizeBranchName('branch:name')).toBe('branch-name');
|
|
235
|
+
});
|
|
236
|
+
it('sanitizeBranchName preserves valid characters', () => {
|
|
237
|
+
expect(sanitizeBranchName('feature-123')).toBe('feature-123');
|
|
238
|
+
expect(sanitizeBranchName('feature_123')).toBe('feature_123');
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
//# sourceMappingURL=git.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.test.js","sourceRoot":"","sources":["../src/git.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export * from './config/types.js';
|
|
2
|
+
export * from './types.js';
|
|
3
|
+
export * from './git.js';
|
|
4
|
+
export { type VaultUtils, resolveNotePath, globVaults, getVaultRoot, toRelativePath, getVaultIndex, createVaultUtils, } from './utils/vault.js';
|
|
5
|
+
export { Indexer, type IndexerDependencies, type NotesFtsSearchOptions, type NotesHybridSearchOptions, } from './indexer/index.js';
|
|
6
|
+
export { BranchIndexer, createBranchIndexer, type BranchIndexerDependencies, } from './indexer/branch.js';
|
|
7
|
+
export { parseNote, extractLinks, extractHashtags, extractTitle, generateContentHash, generateChunkId, } from './indexer/parser.js';
|
|
8
|
+
export { chunkNote } from './indexer/chunker.js';
|
|
9
|
+
export { type EmbeddingProvider, WasmEmbeddingProvider, VoyageEmbeddingProvider, OllamaEmbeddingProvider, LocalAIEmbeddingProvider, createEmbeddingProvider, getModelDimensions, } from './indexer/embeddings.js';
|
|
10
|
+
export { type RerankResult, type RerankOptions, type RerankerProvider, WasmRerankerProvider, VoyageRerankerProvider, LocalAIRerankerProvider, normalizeScores, truncateDocument, batchArray, createRerankerProvider, } from './indexer/reranking.js';
|
|
11
|
+
export { TreeSitterParser, createTreeSitterParser, type ExtractedSymbol, } from './indexer/code/parser.js';
|
|
12
|
+
export { symbolsToChunks, createFileChunk, buildEmbeddingText, smartTruncate, generateCodeChunkId, applyStableChunkIds, extractSignature, extractDocstring, type ChunkingOptions, } from './indexer/code/chunker.js';
|
|
13
|
+
export { CodeIndexWal, type WalEntry, type WalOp, type FailedFile as LegacyFailedFile, type BatchStats, type RecoveryPlan as LegacyRecoveryPlan, type WalStatus, } from './indexer/code/wal.js';
|
|
14
|
+
export { SyncWal, FileWalStorage, createWalStorage, type WalStorage, type WalStorageConfig, type LockData, type WalEntry as SyncWalEntry, type CheckpointData, type ManifestData, type TaskCheckpoint, type SyncStats, type FailedFile, type SyncTask, type SyncTaskSummary, type Memtable, type RecoveryPlan, type SyncProgress as SyncWalProgress, type LockStatus, type SyncWalConfig, type SyncType, type TaskStatus, type TaskPhase, type SyncWalOp, type LSN, DEFAULT_SYNC_WAL_CONFIG, } from './indexer/wal/index.js';
|
|
15
|
+
export { CodeIndexer, createCodeIndexer, normalizeIdentifiers, withIndexLock, type CodeIndexerDependencies, type CodeIndexerOptions, type CodeIndexOptions, type CodeSearchOptions, type CodeFtsSearchOptions, type CodeHybridSearchOptions, type CodeSearchResult, type IndexResult, } from './indexer/code/index.js';
|
|
16
|
+
export { TreeIndexer, type TreeIndexerDeps, type TreeConfig, type TreeStats, type TreeDir, type TreeFile, type TreeSearchOptions, type TreeContextOptions, } from './indexer/code/tree/index.js';
|
|
17
|
+
export { GraphIndexer, ReverseIndexBuilder, QUALITY_PRESETS, detectChanges, type ReverseImportIndex, type GraphIndexerDependencies, } from './indexer/code/graph/index.js';
|
|
18
|
+
export { extractFacts, IMPORT_QUERY, EXPORT_QUERY, type ExtractFactsOptions, } from './indexer/code/graph/facts.js';
|
|
19
|
+
export { resolveModule, loadTSConfig, ExportMapBuilder, type TSConfig, type ResolveOptions, type ResolveResult, type ExportMap, type ModuleCache, } from './indexer/code/graph/resolver.js';
|
|
20
|
+
export { analyzeFileSemantics, getImportClosure, loadTypeScript, type AnalyzeFileSemanticsOptions, } from './indexer/code/graph/semantic.js';
|
|
21
|
+
export { extractEmbedded, extractTemplateContent, parseGraphQLContent, parseCSSContent, type ExtractEmbeddedOptions, } from './indexer/code/graph/embedded.js';
|
|
22
|
+
export { buildNodeEmbeddingText, hybridSearch, rerankWithGraph, type HybridSearchOptions, type HybridSearchDeps, type RankedNode, } from './indexer/code/graph/queries.js';
|
|
23
|
+
export { CodeBranchIndexer, createCodeBranchIndexer, type CodeBranchIndexerDependencies, type SyncResult as CodeBranchSyncResult, } from './indexer/code/branch.js';
|
|
24
|
+
export { withRetry, withRetryResult, sleep, isRetryableError, calculateBackoff, getRetryAfter, DEFAULT_RETRY_OPTIONS, type RetryOptions, type RetryResult, } from './indexer/code/retry.js';
|
|
25
|
+
export { languageRegistry, inferSymbolTypeFromNode, type LanguageExtractor, type ExtractedSymbolWithDetails, } from './indexer/code/languages/index.js';
|
|
26
|
+
export { genericExtractor, GenericExtractor, createGenericExtractor } from './indexer/code/languages/generic.js';
|
|
27
|
+
export { cssExtractor, CssExtractor } from './indexer/code/languages/css.js';
|
|
28
|
+
export { graphqlExtractor, GraphqlExtractor } from './indexer/code/languages/graphql.js';
|
|
29
|
+
export { jsonExtractor, JsonExtractor } from './indexer/code/languages/json.js';
|
|
30
|
+
export { yamlExtractor, YamlExtractor } from './indexer/code/languages/yaml.js';
|
|
31
|
+
export { htmlExtractor, HtmlExtractor } from './indexer/code/languages/html.js';
|
|
32
|
+
export { bashExtractor, BashExtractor } from './indexer/code/languages/bash.js';
|
|
33
|
+
export { Watcher, createWatcher, type WatcherOptions, } from './indexer/watcher.js';
|
|
34
|
+
export { GitSyncer, createGitSyncer, type GitSyncState, type SyncOptions, type SyncProgress, type SyncResult, type SyncableIndexer, } from './indexer/git-sync.js';
|
|
35
|
+
export { escapeSqlLiteral, escapeSqlLikePattern, buildPathPrefixFilter, buildJsonStringArrayContainsAnyFilter, combineFilters, } from './search/fts.js';
|
|
36
|
+
export { Grep, createGrep, highlightMatches, type GrepOptions, type GrepMatch, type GrepFileResult, type GrepResult, } from './search/grep.js';
|
|
37
|
+
export { HybridGrep, type HybridGrepOptions, type HybridGrepResult, } from './search/hybrid-grep.js';
|
|
38
|
+
export { executeRg, buildRgArgs, processRgMessage, type RgExecuteOptions, type RgJsonMessage, } from './search/rg-executor.js';
|
|
39
|
+
export { parseRgQuery, resolveRegexMode, type ParseRgQueryOptions, type ParsedRgQuery, } from './search/rg-parser/index.js';
|
|
40
|
+
export { extractLiterals, type ExtractionResult, type PatternComplexity, } from './search/rg-parser/extractor.js';
|
|
41
|
+
export { decideStrategy, type RgSearchStrategy, type StrategyDecision, type StrategyOptions, } from './search/rg-parser/strategy.js';
|
|
42
|
+
export { buildFtsQuery, escapeTantivyTerm, type FtsQueryOptions, } from './search/rg-parser/fts-builder.js';
|
|
43
|
+
export { KnowledgeGraphExplorer, createKnowledgeGraphExplorer, type ExploreOptions, type NoteNode, type ExploreResult, } from './search/explore.js';
|
|
44
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|