@zvec/zvec-grep 0.1.5 โ 0.1.7
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 +154 -236
- package/README_CN.md +142 -233
- package/dist/authorization/index.d.ts +7 -0
- package/dist/authorization/index.js +7 -0
- package/dist/authorization/index.js.map +1 -0
- package/dist/authorization/manager.d.ts +8 -0
- package/dist/authorization/manager.js +19 -0
- package/dist/authorization/manager.js.map +1 -0
- package/dist/authorization/operation.d.ts +7 -0
- package/dist/authorization/operation.js +50 -0
- package/dist/authorization/operation.js.map +1 -0
- package/dist/authorization/planner.d.ts +21 -0
- package/dist/authorization/planner.js +97 -0
- package/dist/authorization/planner.js.map +1 -0
- package/dist/authorization/prompt.d.ts +11 -0
- package/dist/authorization/prompt.js +62 -0
- package/dist/authorization/prompt.js.map +1 -0
- package/dist/authorization/store.d.ts +20 -0
- package/dist/authorization/store.js +251 -0
- package/dist/authorization/store.js.map +1 -0
- package/dist/authorization/target.d.ts +15 -0
- package/dist/authorization/target.js +49 -0
- package/dist/authorization/target.js.map +1 -0
- package/dist/authorization/types.d.ts +61 -0
- package/dist/authorization/types.js +2 -0
- package/dist/authorization/types.js.map +1 -0
- package/dist/cli/args.d.ts +1 -1
- package/dist/cli/args.js +338 -55
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/auth.d.ts +21 -0
- package/dist/cli/auth.js +209 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/commands.js +469 -625
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/errors.js +2 -2
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/format/context.d.ts +4 -0
- package/dist/cli/format/context.js +311 -44
- package/dist/cli/format/context.js.map +1 -1
- package/dist/cli/format/debug.js +12 -6
- package/dist/cli/format/debug.js.map +1 -1
- package/dist/cli/format/progress.d.ts +4 -0
- package/dist/cli/format/progress.js +219 -46
- package/dist/cli/format/progress.js.map +1 -1
- package/dist/cli/format/status.d.ts +79 -6
- package/dist/cli/format/status.js +341 -111
- package/dist/cli/format/status.js.map +1 -1
- package/dist/cli/help.js +395 -63
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/install.d.ts +4 -0
- package/dist/cli/install.js +963 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/managed-rg.d.ts +10 -0
- package/dist/cli/managed-rg.js +329 -0
- package/dist/cli/managed-rg.js.map +1 -0
- package/dist/cli/server-search.d.ts +3 -0
- package/dist/cli/server-search.js +12 -0
- package/dist/cli/server-search.js.map +1 -0
- package/dist/cli/types.d.ts +23 -6
- package/dist/cli/types.js.map +1 -1
- package/dist/client/daemon-client.d.ts +31 -0
- package/dist/client/daemon-client.js +203 -0
- package/dist/client/daemon-client.js.map +1 -0
- package/dist/client/mode-router.d.ts +9 -0
- package/dist/client/mode-router.js +28 -0
- package/dist/client/mode-router.js.map +1 -0
- package/dist/client/search-policy.d.ts +11 -0
- package/dist/client/search-policy.js +15 -0
- package/dist/client/search-policy.js.map +1 -0
- package/dist/daemon/backend.d.ts +77 -0
- package/dist/daemon/backend.js +1087 -0
- package/dist/daemon/backend.js.map +1 -0
- package/dist/daemon/change-set.d.ts +25 -0
- package/dist/daemon/change-set.js +101 -0
- package/dist/daemon/change-set.js.map +1 -0
- package/dist/daemon/config.d.ts +24 -0
- package/dist/daemon/config.js +88 -0
- package/dist/daemon/config.js.map +1 -0
- package/dist/daemon/errors.d.ts +5 -0
- package/dist/daemon/errors.js +11 -0
- package/dist/daemon/errors.js.map +1 -0
- package/dist/daemon/http-server.d.ts +30 -0
- package/dist/daemon/http-server.js +288 -0
- package/dist/daemon/http-server.js.map +1 -0
- package/dist/daemon/index-coordinator.d.ts +24 -0
- package/dist/daemon/index-coordinator.js +68 -0
- package/dist/daemon/index-coordinator.js.map +1 -0
- package/dist/daemon/job-scheduler.d.ts +70 -0
- package/dist/daemon/job-scheduler.js +366 -0
- package/dist/daemon/job-scheduler.js.map +1 -0
- package/dist/daemon/logger.d.ts +9 -0
- package/dist/daemon/logger.js +53 -0
- package/dist/daemon/logger.js.map +1 -0
- package/dist/daemon/model-pool.d.ts +45 -0
- package/dist/daemon/model-pool.js +187 -0
- package/dist/daemon/model-pool.js.map +1 -0
- package/dist/daemon/root-lease.d.ts +14 -0
- package/dist/daemon/root-lease.js +188 -0
- package/dist/daemon/root-lease.js.map +1 -0
- package/dist/daemon/root-runtime.d.ts +78 -0
- package/dist/daemon/root-runtime.js +333 -0
- package/dist/daemon/root-runtime.js.map +1 -0
- package/dist/daemon/runtime-manager.d.ts +46 -0
- package/dist/daemon/runtime-manager.js +246 -0
- package/dist/daemon/runtime-manager.js.map +1 -0
- package/dist/daemon/runtime.d.ts +12 -0
- package/dist/daemon/runtime.js +102 -0
- package/dist/daemon/runtime.js.map +1 -0
- package/dist/daemon/server-controller.d.ts +39 -0
- package/dist/daemon/server-controller.js +254 -0
- package/dist/daemon/server-controller.js.map +1 -0
- package/dist/daemon/watch-manager.d.ts +50 -0
- package/dist/daemon/watch-manager.js +293 -0
- package/dist/daemon/watch-manager.js.map +1 -0
- package/dist/daemon/workspace-read-session-cache.d.ts +31 -0
- package/dist/daemon/workspace-read-session-cache.js +115 -0
- package/dist/daemon/workspace-read-session-cache.js.map +1 -0
- package/dist/engine/code-formats.d.ts +3 -0
- package/dist/engine/code-formats.js +14 -0
- package/dist/engine/code-formats.js.map +1 -0
- package/dist/engine/config.d.ts +30 -8
- package/dist/engine/config.js +171 -45
- package/dist/engine/config.js.map +1 -1
- package/dist/engine/{errors/index.d.ts โ errors.d.ts} +6 -1
- package/dist/engine/{errors/details.js โ errors.js} +17 -4
- package/dist/engine/errors.js.map +1 -0
- package/dist/engine/extraction/code/adapter.d.ts +1 -1
- package/dist/engine/extraction/code/adapter.js +1 -1
- package/dist/engine/extraction/code/adapter.js.map +1 -1
- package/dist/engine/extraction/code/extractor.d.ts +5 -11
- package/dist/engine/extraction/code/extractor.js +116 -48
- package/dist/engine/extraction/code/extractor.js.map +1 -1
- package/dist/engine/extraction/code/families/c-family.js +1 -1
- package/dist/engine/extraction/code/families/c-family.js.map +1 -1
- package/dist/engine/extraction/code/families/js-ts.d.ts +1 -1
- package/dist/engine/extraction/code/families/metadata.d.ts +1 -1
- package/dist/engine/extraction/code/tree-sitter/grammar.js.map +1 -0
- package/dist/engine/extraction/code/tree-sitter/nodes.js.map +1 -0
- package/dist/engine/extraction/code/tree-sitter/parser.js.map +1 -0
- package/dist/engine/extraction/image/extractor.d.ts +5 -0
- package/dist/engine/extraction/image/extractor.js +35 -0
- package/dist/engine/extraction/image/extractor.js.map +1 -0
- package/dist/engine/extraction/index.d.ts +4 -44
- package/dist/engine/extraction/index.js +2 -280
- package/dist/engine/extraction/index.js.map +1 -1
- package/dist/engine/extraction/markdown/extractor.d.ts +5 -11
- package/dist/engine/extraction/markdown/extractor.js +38 -17
- package/dist/engine/extraction/markdown/extractor.js.map +1 -1
- package/dist/engine/extraction/runtime.d.ts +4 -0
- package/dist/engine/extraction/runtime.js +26 -0
- package/dist/engine/extraction/runtime.js.map +1 -0
- package/dist/engine/extraction/source.d.ts +18 -0
- package/dist/engine/extraction/source.js +22 -0
- package/dist/engine/extraction/source.js.map +1 -0
- package/dist/engine/extraction/text/extractor.d.ts +7 -0
- package/dist/engine/extraction/text/extractor.js +168 -0
- package/dist/engine/extraction/text/extractor.js.map +1 -0
- package/dist/engine/extraction/types.d.ts +4 -0
- package/dist/engine/{models โ extraction}/types.js.map +1 -1
- package/dist/engine/extraction/vector-content.d.ts +5 -0
- package/dist/engine/extraction/vector-content.js +95 -0
- package/dist/engine/extraction/vector-content.js.map +1 -0
- package/dist/engine/file-size-policy.d.ts +6 -0
- package/dist/engine/file-size-policy.js +20 -0
- package/dist/engine/file-size-policy.js.map +1 -0
- package/dist/engine/file-type.d.ts +15 -0
- package/dist/engine/file-type.js +152 -0
- package/dist/engine/file-type.js.map +1 -0
- package/dist/engine/index-status.d.ts +9 -0
- package/dist/engine/index-status.js +38 -0
- package/dist/engine/index-status.js.map +1 -0
- package/dist/engine/manifest.d.ts +13 -0
- package/dist/engine/manifest.js +124 -0
- package/dist/engine/manifest.js.map +1 -0
- package/dist/engine/models/{providers/llama-cpp/embedding.d.ts โ backends/llama-cpp.d.ts} +25 -20
- package/dist/engine/models/{providers/llama-cpp/embedding.js โ backends/llama-cpp.js} +127 -106
- package/dist/engine/models/backends/llama-cpp.js.map +1 -0
- package/dist/engine/models/backends/model2vec-runtime.d.ts +63 -0
- package/dist/engine/models/backends/model2vec-runtime.js +112 -0
- package/dist/engine/models/backends/model2vec-runtime.js.map +1 -0
- package/dist/engine/models/backends/model2vec-tokenizer.d.ts +2 -0
- package/dist/engine/models/backends/model2vec-tokenizer.js +42 -0
- package/dist/engine/models/backends/model2vec-tokenizer.js.map +1 -0
- package/dist/engine/models/backends/model2vec-worker-pool.d.ts +25 -0
- package/dist/engine/models/backends/model2vec-worker-pool.js +264 -0
- package/dist/engine/models/backends/model2vec-worker-pool.js.map +1 -0
- package/dist/engine/models/backends/model2vec-worker.d.ts +1 -0
- package/dist/engine/models/backends/model2vec-worker.js +41 -0
- package/dist/engine/models/backends/model2vec-worker.js.map +1 -0
- package/dist/engine/models/backends/model2vec.d.ts +40 -0
- package/dist/engine/models/backends/model2vec.js +311 -0
- package/dist/engine/models/backends/model2vec.js.map +1 -0
- package/dist/engine/models/backends/qwen.d.ts +44 -0
- package/dist/engine/models/{providers/qwen/embedding.js โ backends/qwen.js} +155 -94
- package/dist/engine/models/backends/qwen.js.map +1 -0
- package/dist/engine/models/backends/transformers-js.d.ts +87 -0
- package/dist/engine/models/backends/transformers-js.js +316 -0
- package/dist/engine/models/backends/transformers-js.js.map +1 -0
- package/dist/engine/models/catalog.d.ts +207 -23
- package/dist/engine/models/catalog.js +191 -25
- package/dist/engine/models/catalog.js.map +1 -1
- package/dist/engine/models/download-progress.d.ts +15 -0
- package/dist/engine/models/download-progress.js +48 -0
- package/dist/engine/models/download-progress.js.map +1 -0
- package/dist/engine/models/embeddings.d.ts +59 -18
- package/dist/engine/models/embeddings.js +52 -28
- package/dist/engine/models/embeddings.js.map +1 -1
- package/dist/engine/models/factory.d.ts +2 -5
- package/dist/engine/models/factory.js +41 -56
- package/dist/engine/models/factory.js.map +1 -1
- package/dist/engine/models/index.d.ts +4 -6
- package/dist/engine/models/index.js +4 -4
- package/dist/engine/models/index.js.map +1 -1
- package/dist/engine/models/ranking.d.ts +7 -3
- package/dist/engine/models/resolution.d.ts +8 -0
- package/dist/engine/models/resolution.js +22 -0
- package/dist/engine/models/resolution.js.map +1 -0
- package/dist/engine/pipeline/indexing/index.d.ts +9 -7
- package/dist/engine/pipeline/indexing/index.js +409 -165
- package/dist/engine/pipeline/indexing/index.js.map +1 -1
- package/dist/engine/pipeline/indexing/input-budget.d.ts +2 -0
- package/dist/engine/pipeline/indexing/input-budget.js +51 -0
- package/dist/engine/pipeline/indexing/input-budget.js.map +1 -0
- package/dist/engine/pipeline/indexing/root-paths.js +6 -6
- package/dist/engine/pipeline/indexing/root-paths.js.map +1 -1
- package/dist/engine/pipeline/indexing/scanner/index.d.ts +9 -2
- package/dist/engine/pipeline/indexing/scanner/index.js +291 -35
- package/dist/engine/pipeline/indexing/scanner/index.js.map +1 -1
- package/dist/engine/pipeline/search/index.d.ts +6 -6
- package/dist/engine/pipeline/search/index.js +8 -10
- package/dist/engine/pipeline/search/index.js.map +1 -1
- package/dist/engine/service/index.d.ts +3 -2
- package/dist/engine/service/index.js +1 -1
- package/dist/engine/service/index.js.map +1 -1
- package/dist/engine/service/root.d.ts +10 -12
- package/dist/engine/service/root.js +29 -25
- package/dist/engine/service/root.js.map +1 -1
- package/dist/engine/service/structure-enrichment.d.ts +1 -1
- package/dist/engine/service/structure-enrichment.js +20 -22
- package/dist/engine/service/structure-enrichment.js.map +1 -1
- package/dist/engine/service/types.d.ts +40 -38
- package/dist/engine/service/workspace-index.d.ts +26 -0
- package/dist/engine/service/workspace-index.js +157 -0
- package/dist/engine/service/workspace-index.js.map +1 -0
- package/dist/engine/service/zvec-grep.d.ts +12 -1
- package/dist/engine/service/zvec-grep.js +698 -489
- package/dist/engine/service/zvec-grep.js.map +1 -1
- package/dist/engine/storage/index.d.ts +30 -20
- package/dist/engine/storage/index.js +2 -1
- package/dist/engine/storage/index.js.map +1 -1
- package/dist/engine/storage/layout.d.ts +10 -0
- package/dist/engine/storage/layout.js +29 -0
- package/dist/engine/storage/layout.js.map +1 -0
- package/dist/engine/storage/zvec.d.ts +4 -67
- package/dist/engine/storage/zvec.js +115 -85
- package/dist/engine/storage/zvec.js.map +1 -1
- package/dist/engine/types.d.ts +29 -23
- package/dist/engine/types.js +1 -1
- package/dist/engine/types.js.map +1 -1
- package/dist/engine/utils/daemon-lease.d.ts +17 -0
- package/dist/engine/utils/daemon-lease.js +175 -0
- package/dist/engine/utils/daemon-lease.js.map +1 -0
- package/dist/engine/utils/file-selection.js +38 -1
- package/dist/engine/utils/file-selection.js.map +1 -1
- package/dist/engine/utils/lock.js +1 -1
- package/dist/engine/utils/lock.js.map +1 -1
- package/dist/index-progress.d.ts +10 -0
- package/dist/index-progress.js +159 -0
- package/dist/index-progress.js.map +1 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/http-transport.d.ts +27 -0
- package/dist/mcp/http-transport.js +182 -0
- package/dist/mcp/http-transport.js.map +1 -0
- package/dist/mcp/input-normalization.d.ts +38 -0
- package/dist/mcp/input-normalization.js +104 -0
- package/dist/mcp/input-normalization.js.map +1 -0
- package/dist/mcp/progress-heartbeat.d.ts +17 -0
- package/dist/mcp/progress-heartbeat.js +46 -0
- package/dist/mcp/progress-heartbeat.js.map +1 -0
- package/dist/mcp/request-metadata.d.ts +2 -0
- package/dist/mcp/request-metadata.js +11 -0
- package/dist/mcp/request-metadata.js.map +1 -0
- package/dist/mcp/request-state.d.ts +40 -0
- package/dist/mcp/request-state.js +210 -0
- package/dist/mcp/request-state.js.map +1 -0
- package/dist/mcp/result-format.d.ts +13 -0
- package/dist/mcp/result-format.js +75 -0
- package/dist/mcp/result-format.js.map +1 -0
- package/dist/mcp/schemas.d.ts +672 -0
- package/dist/mcp/schemas.js +506 -0
- package/dist/mcp/schemas.js.map +1 -0
- package/dist/mcp/stdio-bridge.d.ts +9 -0
- package/dist/mcp/stdio-bridge.js +131 -0
- package/dist/mcp/stdio-bridge.js.map +1 -0
- package/dist/mcp/tools.d.ts +153 -0
- package/dist/mcp/tools.js +482 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/toolset.d.ts +5 -0
- package/dist/mcp/toolset.js +12 -0
- package/dist/mcp/toolset.js.map +1 -0
- package/dist/observability/trace-context.d.ts +11 -0
- package/dist/observability/trace-context.js +138 -0
- package/dist/observability/trace-context.js.map +1 -0
- package/dist/prompts/zvec-grep-guidance.d.ts +2 -0
- package/dist/prompts/zvec-grep-guidance.js +9 -0
- package/dist/prompts/zvec-grep-guidance.js.map +1 -0
- package/docs/01-agents.md +132 -0
- package/docs/02-cli.md +239 -0
- package/docs/03-mcp.md +185 -0
- package/docs/04-pipeline.md +226 -0
- package/docs/05-architecture.md +86 -0
- package/docs/06-server.md +215 -0
- package/docs/07-embedding.md +182 -0
- package/docs/08-roadmap.md +85 -0
- package/docs/README.md +53 -0
- package/package.json +20 -11
- package/dist/cli/mcp.d.ts +0 -2
- package/dist/cli/mcp.js +0 -354
- package/dist/cli/mcp.js.map +0 -1
- package/dist/engine/collection/index.d.ts +0 -55
- package/dist/engine/collection/index.js +0 -710
- package/dist/engine/collection/index.js.map +0 -1
- package/dist/engine/errors/details.d.ts +0 -6
- package/dist/engine/errors/details.js.map +0 -1
- package/dist/engine/errors/index.js +0 -16
- package/dist/engine/errors/index.js.map +0 -1
- package/dist/engine/extraction/tree-sitter/grammar.js.map +0 -1
- package/dist/engine/extraction/tree-sitter/nodes.js.map +0 -1
- package/dist/engine/extraction/tree-sitter/parser.js.map +0 -1
- package/dist/engine/files/file-type.d.ts +0 -5
- package/dist/engine/files/file-type.js +0 -119
- package/dist/engine/files/file-type.js.map +0 -1
- package/dist/engine/models/providers/index.d.ts +0 -2
- package/dist/engine/models/providers/index.js +0 -3
- package/dist/engine/models/providers/index.js.map +0 -1
- package/dist/engine/models/providers/llama-cpp/embedding.js.map +0 -1
- package/dist/engine/models/providers/llama-cpp/index.d.ts +0 -1
- package/dist/engine/models/providers/llama-cpp/index.js +0 -2
- package/dist/engine/models/providers/llama-cpp/index.js.map +0 -1
- package/dist/engine/models/providers/qwen/embedding.d.ts +0 -42
- package/dist/engine/models/providers/qwen/embedding.js.map +0 -1
- package/dist/engine/models/providers/qwen/index.d.ts +0 -1
- package/dist/engine/models/providers/qwen/index.js +0 -2
- package/dist/engine/models/providers/qwen/index.js.map +0 -1
- package/dist/engine/models/types.d.ts +0 -30
- package/skills/zvec-grep/SKILL.md +0 -151
- package/skills/zvec-grep/agents/openai.yaml +0 -4
- /package/dist/engine/extraction/{tree-sitter โ code/tree-sitter}/grammar.d.ts +0 -0
- /package/dist/engine/extraction/{tree-sitter โ code/tree-sitter}/grammar.js +0 -0
- /package/dist/engine/extraction/{tree-sitter โ code/tree-sitter}/nodes.d.ts +0 -0
- /package/dist/engine/extraction/{tree-sitter โ code/tree-sitter}/nodes.js +0 -0
- /package/dist/engine/extraction/{tree-sitter โ code/tree-sitter}/parser.d.ts +0 -0
- /package/dist/engine/extraction/{tree-sitter โ code/tree-sitter}/parser.js +0 -0
- /package/dist/engine/{models โ extraction}/types.js +0 -0
package/README.md
CHANGED
|
@@ -3,305 +3,223 @@
|
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<div align="center">
|
|
6
|
+
<p>
|
|
7
|
+
<a href="./docs/08-roadmap.md"><img src="https://img.shields.io/badge/status-work%20in%20progress-F59E0B?style=for-the-badge" alt="Work in progress" /></a>
|
|
8
|
+
</p>
|
|
6
9
|
<picture>
|
|
7
|
-
<source media="(prefers-color-scheme: dark)" srcset="
|
|
8
|
-
<img src="
|
|
10
|
+
<source media="(prefers-color-scheme: dark)" srcset="./.github/assets/zg-logo-dark.svg">
|
|
11
|
+
<img src="./.github/assets/zg-logo.svg" width="150" alt="zg logo" />
|
|
9
12
|
</picture>
|
|
13
|
+
<p><strong>Know the wordsโor donโt. Just zg.</strong></p>
|
|
14
|
+
<p>The local-first search layer for humans and agents.</p>
|
|
15
|
+
|
|
16
|
+
<p>
|
|
17
|
+
<a href="https://www.npmjs.com/package/@zvec/zvec-grep"><img src="https://img.shields.io/npm/v/@zvec/zvec-grep.svg" alt="npm version" /></a>
|
|
18
|
+
<a href="https://github.com/zvec-ai/zvec-grep/actions/workflows/ci.yml"><img src="https://github.com/zvec-ai/zvec-grep/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
|
|
19
|
+
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-blue.svg" alt="Apache 2.0 license" /></a>
|
|
20
|
+
<img src="https://img.shields.io/badge/node-%3E%3D22-blue.svg" alt="Node.js 22 or newer" />
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
<p>
|
|
24
|
+
<a href="#tour">๐ฌ <strong>Tour</strong></a> |
|
|
25
|
+
<a href="#features">๐ซ <strong>Features</strong></a> |
|
|
26
|
+
<a href="#try-it-yourself">๐ <strong>Try it yourself</strong></a> |
|
|
27
|
+
<a href="./docs/README.md">๐ <strong>Docs</strong></a> |
|
|
28
|
+
<a href="#benchmarks">๐ <strong>Benchmarks</strong></a> |
|
|
29
|
+
<a href="#community">๐ค <strong>Community</strong></a>
|
|
30
|
+
</p>
|
|
10
31
|
</div>
|
|
11
32
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-blue.svg" alt="License"/></a>
|
|
16
|
-
<img src="https://img.shields.io/badge/node-%3E%3D22-blue.svg" alt="Node.js >=22"/>
|
|
17
|
-
<img src="https://img.shields.io/badge/CLI-zg-2ea44f.svg" alt="zg CLI"/>
|
|
18
|
-
</p>
|
|
19
|
-
|
|
20
|
-
<p align="center">
|
|
21
|
-
<a href="#quickstart">๐ <strong>Quickstart</strong></a> |
|
|
22
|
-
<a href="#features">๐ซ <strong>Features</strong></a> |
|
|
23
|
-
<a href="#installation">๐ฆ <strong>Installation</strong></a> |
|
|
24
|
-
<a href="#models">๐ง <strong>Models</strong></a> |
|
|
25
|
-
<a href="#library-api">๐ ๏ธ <strong>Library API</strong></a>
|
|
26
|
-
</p>
|
|
27
|
-
|
|
28
|
-
**zvec-grep** is an agent-friendly hybrid code search tool built on Zvec. It gives repositories a root-local semantic index, combines vector search with full-text search, and keeps CLI output compact enough for AI agents while still offering rich terminal output for humans.
|
|
29
|
-
|
|
30
|
-
The command is intentionally short:
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
zg query "where query auto update happens"
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
> [!IMPORTANT]
|
|
37
|
-
> **Command interface**
|
|
38
|
-
>
|
|
39
|
-
> - **Hybrid Code Search**: Query code with natural language, exact terms, or both in one command.
|
|
40
|
-
> - **Explicit Index Lifecycle**: New repositories require `zg index --embedding <model>`; agents do not silently create indexes.
|
|
41
|
-
> - **Automatic Refresh**: Existing anonymous indexes are checked and incrementally updated before normal queries.
|
|
42
|
-
> - **Token-Efficient Output**: Agent output defaults to `--preview none`; `--human` defaults to full source previews.
|
|
43
|
-
> - **No-Index Lexical Search**: `zg query --rg` provides managed ripgrep search without requiring an index.
|
|
44
|
-
|
|
45
|
-
## <a id="features"></a>๐ซ Features
|
|
46
|
-
|
|
47
|
-
- **Semantic + Lexical Retrieval**: Blend vector search and full-text search for code, docs, tests, scripts, and configuration.
|
|
48
|
-
- **Root-Local Indexes**: Anonymous indexes live under `<repo>/.zvec-grep/`, so repository state stays with the repository.
|
|
49
|
-
- **Agent-Ready Output**: Default output is grouped by file and keeps previews small to save tokens.
|
|
50
|
-
- **Human Output Mode**: Add `--human` for a terminal-friendly summary with full previews by default.
|
|
51
|
-
- **Managed ripgrep Route**: `zg query --rg` supports common `rg` flags and works even before a repository is indexed.
|
|
52
|
-
- **Explicit Model Choice**: The first index build requires a model such as `local/embeddinggemma-300m`, `local/qwen3-embedding-0.6b`, or `qwen/text-embedding-v4`.
|
|
53
|
-
- **Schema Reuse**: Re-running `zg index` on an existing index reuses the stored embedding schema unless you explicitly change it.
|
|
54
|
-
- **MCP Server**: Run `zg serve --mcp` to expose indexed and no-index lexical search tools to MCP clients. Indexing and status remain CLI-only operations.
|
|
55
|
-
- **Library API**: Use `createZvecGrep()` directly from Node.js tools, agents, or MCP servers.
|
|
56
|
-
|
|
57
|
-
## <a id="installation"></a>๐ฆ Installation
|
|
58
|
-
|
|
59
|
-
Install the CLI from npm:
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
npm install -g @zvec/zvec-grep
|
|
63
|
-
zg version
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Or run it without a global install:
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
npx @zvec/zvec-grep help
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Install the latest source checkout as a global `zg` command:
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
git clone https://github.com/zvec-ai/zvec-grep.git
|
|
76
|
-
cd zvec-grep
|
|
77
|
-
npm ci
|
|
78
|
-
npm run build
|
|
79
|
-
npm install -g .
|
|
80
|
-
zg version
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Run the stdio MCP server:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
zg serve --mcp
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
Install the Codex MCP integration:
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
zg install --target codex --yes
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
Codex MCP tool calls default to a 600-second timeout. Override it during installation with `--mcp-tool-timeout <seconds>`.
|
|
33
|
+
**zg** (**z**vec-**g**rep) unifies ripgrep, BM25, and vector search behind
|
|
34
|
+
[one local-first interface](./docs/05-architecture.md). Use it directly from the
|
|
35
|
+
terminal, or let your agent use it for you.
|
|
96
36
|
|
|
97
|
-
|
|
37
|
+
<a id="tour"></a>
|
|
98
38
|
|
|
99
|
-
|
|
100
|
-
- macOS, Linux, or Windows
|
|
101
|
-
- A supported embedding model for indexed search
|
|
39
|
+
## ๐ฌ See it in action
|
|
102
40
|
|
|
103
|
-
|
|
41
|
+
<div align="center">
|
|
42
|
+
<img src="./.github/assets/zvec-grep-tour.gif" width="1000" alt="Install the agent integration, index a workspace, and let the agent search it with zvec-grep" />
|
|
43
|
+
</div>
|
|
104
44
|
|
|
105
|
-
|
|
45
|
+
Install the integration once, index the workspace, then search from the terminal
|
|
46
|
+
or ask your agent naturally.
|
|
106
47
|
|
|
107
|
-
|
|
48
|
+
<a id="features"></a>
|
|
108
49
|
|
|
109
|
-
|
|
110
|
-
zg index \
|
|
111
|
-
--embedding local/embeddinggemma-300m \
|
|
112
|
-
-g "src/**" \
|
|
113
|
-
-g "docs/**" \
|
|
114
|
-
-g "test/**" \
|
|
115
|
-
-g "!dist/**" \
|
|
116
|
-
-g "!node_modules/**" \
|
|
117
|
-
-g "!coverage/**"
|
|
118
|
-
```
|
|
50
|
+
## ๐ซ Why zg?
|
|
119
51
|
|
|
120
|
-
|
|
52
|
+
- **Ready for humans and agents** โ install once, index once, then use the same
|
|
53
|
+
workspace from the CLI or your agent on macOS, Linux, and Windows.
|
|
54
|
+
- **Search beyond keywords** โ discover by meaning, rank by relevance, then
|
|
55
|
+
verify with exact text or regex when needed.
|
|
56
|
+
- **Multi-format search** โ search source code, documents, and structured data
|
|
57
|
+
while preserving useful structure and source locations.
|
|
58
|
+
- **Less searching, less context** โ ranked, source-linked results surface the
|
|
59
|
+
right evidence with fewer tool calls, fewer tokens, and less noise.
|
|
60
|
+
- **Local by default** โ files, indexes, and local models stay on your machine;
|
|
61
|
+
remote embeddings receive data only with your permission.
|
|
121
62
|
|
|
122
|
-
|
|
123
|
-
zg status
|
|
124
|
-
```
|
|
63
|
+
<a id="try-it-yourself"></a>
|
|
125
64
|
|
|
126
|
-
|
|
65
|
+
## ๐ Try it yourself
|
|
127
66
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
67
|
+
Requires Node.js 22 or newer and a configured
|
|
68
|
+
[OpenCode](https://opencode.ai/) installation. The agent example explicitly
|
|
69
|
+
selects a free model, so it does not depend on your default provider.
|
|
131
70
|
|
|
132
|
-
|
|
71
|
+
### 1. Set up a sample bookshelf
|
|
133
72
|
|
|
134
73
|
```bash
|
|
135
|
-
|
|
136
|
-
|
|
74
|
+
npm install -g @zvec/zvec-grep
|
|
75
|
+
zg install --target opencode --yes
|
|
137
76
|
|
|
138
|
-
|
|
77
|
+
mkdir zg-mystery && cd zg-mystery
|
|
78
|
+
curl -L https://www.gutenberg.org/files/11/11-0.txt -o alice-in-wonderland.txt
|
|
79
|
+
curl -L https://www.gutenberg.org/files/345/345-0.txt -o dracula.txt
|
|
80
|
+
curl -L https://www.gutenberg.org/files/84/84-0.txt -o frankenstein.txt
|
|
81
|
+
curl -L https://www.gutenberg.org/files/834/834-0.txt -o sherlock-holmes.txt
|
|
139
82
|
|
|
140
|
-
|
|
141
|
-
zg query --rg -F "ZVEC_GREP_HOME" src
|
|
83
|
+
zg index --embedding local/potion-retrieval-32m
|
|
142
84
|
```
|
|
143
85
|
|
|
144
|
-
|
|
86
|
+
This creates a small bookshelf of four public-domain novels and indexes it
|
|
87
|
+
locally with Potion Retrieval.
|
|
145
88
|
|
|
146
|
-
|
|
147
|
-
zg
|
|
148
|
-
|
|
89
|
+
Installation starts the shared daemon immediately. The default MCP transport is
|
|
90
|
+
stdio: the agent runs `zg server --stdio`, which safely starts or reuses it
|
|
91
|
+
again after a reboot. Advanced users can keep direct HTTP configuration with
|
|
92
|
+
`zg install --mcp-transport http` and `zg server on`.
|
|
149
93
|
|
|
150
|
-
Use
|
|
94
|
+
Use `zg install --mcp-toolset full` when the installed MCP integration should
|
|
95
|
+
also expose managed rg, index, and status tools. The default is `agent`.
|
|
151
96
|
|
|
152
|
-
|
|
97
|
+
### 2. Choose how to search
|
|
153
98
|
|
|
154
|
-
|
|
99
|
+
#### For agents: ask with OpenCode
|
|
155
100
|
|
|
156
101
|
```bash
|
|
157
|
-
|
|
158
|
-
|
|
102
|
+
opencode run --model opencode/deepseek-v4-flash-free \
|
|
103
|
+
"An unseen creature left a few marks. What did the detective infer? Cite local evidence."
|
|
159
104
|
```
|
|
160
105
|
|
|
161
|
-
|
|
106
|
+
OpenCode chooses zg on its ownโthe prompt does not name a tool. Query rewrites
|
|
107
|
+
may vary by model, but a typical run looks like this:
|
|
162
108
|
|
|
163
|
-
|
|
109
|
+
```text
|
|
110
|
+
โ zvec_grep_zvec_grep_search {"root":".../zg-mystery","query":"An unseen creature left a few marks. What did the detective infer?","fts":["marks","unseen creature","inferred","detective"],"fuse":true}
|
|
111
|
+
โ Read sherlock-holmes.txt [offset=5440, limit=120]
|
|
164
112
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
--api-key "$DASHSCOPE_API_KEY"
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
After a successful index, explicitly passed global model and provider options are saved to `~/.zvec-grep/config.json` with user-only permissions. This lets an already-running `zg` MCP server load a newly configured remote API key on its next model request without restarting Codex. Values read only from environment variables are not persisted.
|
|
172
|
-
|
|
173
|
-
```json
|
|
174
|
-
{
|
|
175
|
-
"version": 1,
|
|
176
|
-
"defaults": {
|
|
177
|
-
"embedding": "qwen/text-embedding-v4"
|
|
178
|
-
},
|
|
179
|
-
"providers": {
|
|
180
|
-
"qwen": {
|
|
181
|
-
"apiKey": "...",
|
|
182
|
-
"endpoint": "https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings"
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
```
|
|
113
|
+
Answer:
|
|
114
|
+
The detective is Sherlock Holmes in *The Adventure of the Crooked Man*.
|
|
115
|
+
From the animal's foot-marks, he inferred:
|
|
187
116
|
|
|
188
|
-
|
|
117
|
+
- It was not a dog, cat, monkey, or other familiar creature: its print had
|
|
118
|
+
five foot-pads, long nails, and was nearly as large as a dessert-spoon
|
|
119
|
+
(sherlock-holmes.txt:5479-5486).
|
|
120
|
+
- It had a long body and very short legs: nearly two feet long, but with a
|
|
121
|
+
stride of only about three inches (sherlock-holmes.txt:5497-5502).
|
|
122
|
+
- It was carnivorous because it climbed the curtain toward a canary's cage
|
|
123
|
+
(sherlock-holmes.txt:5509-5510).
|
|
124
|
+
- It was probably from the weasel or stoat tribe, though unusually large
|
|
125
|
+
(sherlock-holmes.txt:5514-5516).
|
|
189
126
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
```bash
|
|
193
|
-
zg index --rebuild --embedding local/qwen3-embedding-0.6b
|
|
127
|
+
Holmes also inferred that a man entered through the window with it and later
|
|
128
|
+
left with the key (sherlock-holmes.txt:5464-5470, 5527-5528).
|
|
194
129
|
```
|
|
195
130
|
|
|
196
|
-
|
|
131
|
+
#### For humans: search directly
|
|
197
132
|
|
|
198
|
-
|
|
133
|
+
Search the same bookshelf directly, without an agent:
|
|
199
134
|
|
|
200
135
|
```bash
|
|
201
|
-
zg query
|
|
136
|
+
zg query --human "An unseen creature left a few marks. What did the detective infer?" --limit 3
|
|
202
137
|
```
|
|
203
138
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
```bash
|
|
208
|
-
zg query \
|
|
209
|
-
--hybrid "authentication flow" \
|
|
210
|
-
--fts "AuthService" \
|
|
211
|
-
--vector "where credentials are validated" \
|
|
212
|
-
--fuse \
|
|
213
|
-
--limit 10
|
|
214
|
-
```
|
|
139
|
+
zg returns the relevant passages from `sherlock-holmes.txt`, ranked ahead of the
|
|
140
|
+
other novels.
|
|
215
141
|
|
|
216
|
-
|
|
217
|
-
Positive globs include paths and globs beginning with `!` exclude them:
|
|
142
|
+
<a id="benchmarks"></a>
|
|
218
143
|
|
|
219
|
-
|
|
220
|
-
zg query "cache invalidation" \
|
|
221
|
-
-g "src/**" \
|
|
222
|
-
-g "!test/**" \
|
|
223
|
-
-g "!tests/**" \
|
|
224
|
-
-g "!fixtures/**" \
|
|
225
|
-
-g "!dist/**" \
|
|
226
|
-
-t ts
|
|
227
|
-
```
|
|
144
|
+
## ๐ Benchmarks
|
|
228
145
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
that directory.
|
|
146
|
+
zg is a general-purpose retrieval tool. Current benchmarks cover code and text
|
|
147
|
+
retrieval.
|
|
232
148
|
|
|
233
|
-
|
|
149
|
+
### Repository code retrieval
|
|
234
150
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
zg query "plugin lifecycle" --preview short --limit 5
|
|
238
|
-
zg query "plugin lifecycle" --preview full --limit 2
|
|
239
|
-
```
|
|
151
|
+
We use [SWE-QA-Bench](https://github.com/peng-weihan/SWE-QA-Bench), which
|
|
152
|
+
requires cross-file and multi-hop reasoning over real-world codebases.
|
|
240
153
|
|
|
241
|
-
|
|
154
|
+
- **Coverage:** 20 retrieval-intensive tasks covering the paper's four
|
|
155
|
+
top-level categoriesโ**What, Where, How, and Why**โacross 8 intentions and
|
|
156
|
+
11 repositories.
|
|
157
|
+
- **Agent:** Claude Code with **Claude Opus 5**.
|
|
158
|
+
- **Embedding:** **Qwen3.7 Text Embedding** for the zg profile.
|
|
159
|
+
- **Protocol:** 3 runs per task and profile.
|
|
242
160
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
161
|
+
| Profile | Judge /100 โ | Input tokens โ | Tool calls โ | Time (s) โ | Cost โ |
|
|
162
|
+
| --- | ---: | ---: | ---: | ---: | ---: |
|
|
163
|
+
| Native tools | 80.42 | 558,651 | 23.42 | 127.5 | $0.905 |
|
|
164
|
+
| Native tools + zg | 81.92 | 294,262 | 9.70 | 79.7 | $0.558 |
|
|
165
|
+
| Change | **+1.50 pp** | **โ47.3%** | **โ58.6%** | **โ37.5%** | **โ38.3%** |
|
|
247
166
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
`-l`, `-o`, `--replace`, and `--vimgrep` are rejected. `.git/**` and
|
|
252
|
-
`.zvec-grep/**` remain excluded.
|
|
167
|
+
Across 20 tasks ร 3 runs, zg increased the Judge score by 1.50 points while
|
|
168
|
+
reducing input tokens by 47.3%, tool calls by 58.6%, execution time by 37.5%,
|
|
169
|
+
and cost by 38.3%.
|
|
253
170
|
|
|
254
|
-
|
|
171
|
+
### Large-scale text retrieval
|
|
255
172
|
|
|
256
|
-
|
|
257
|
-
|
|
173
|
+
We use [BrowseComp-Plus](https://github.com/texttron/BrowseComp-Plus), which
|
|
174
|
+
requires multi-document evidence retrieval over a fixed web corpus. The
|
|
175
|
+
evaluation includes 30 queries covering 10 mapped topics and three
|
|
176
|
+
evidence-breadth levels, with 3 runs per profile.
|
|
258
177
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
178
|
+
| Profile | Accuracy โ | Evidence recall โ | Search calls โ | Input tokens โ | Time (s) โ | Cost โ |
|
|
179
|
+
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
|
180
|
+
| Agent + BM25 | TBD | TBD | TBD | TBD | TBD | TBD |
|
|
181
|
+
| Agent + zg | TBD | TBD | TBD | TBD | TBD | TBD |
|
|
182
|
+
| Change | TBD | TBD | TBD | TBD | TBD | TBD |
|
|
262
183
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
});
|
|
184
|
+
Across 30 queries ร 3 runs, zg changed accuracy by TBD pp, evidence recall by
|
|
185
|
+
TBD pp, search calls by TBD%, input tokens by TBD%, time by TBD%, and cost by
|
|
186
|
+
TBD%.
|
|
267
187
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
console.log(location);
|
|
274
|
-
}
|
|
188
|
+
To reproduce the evaluation, follow the
|
|
189
|
+
[benchmark guide](./benchmarks/README.md) for environment setup, pinned
|
|
190
|
+
revisions, task manifests, baseline configuration, exact commands, and result
|
|
191
|
+
aggregation. All profiles use the same agent, model, prompt, tool budget, and
|
|
192
|
+
three-run protocol.
|
|
275
193
|
|
|
276
|
-
|
|
277
|
-
```
|
|
194
|
+
## ๐ Documentation
|
|
278
195
|
|
|
279
|
-
|
|
196
|
+
| Guide | What you can do |
|
|
197
|
+
| :--- | :--- |
|
|
198
|
+
| [Agent integrations](./docs/01-agents.md) | Connect zg to Codex, Claude Code, Cursor, or OpenCode and verify that it works. |
|
|
199
|
+
| [CLI guide](./docs/02-cli.md) | Search, index, and manage your local workspaces from the terminal. |
|
|
200
|
+
| [MCP guide](./docs/03-mcp.md) | Understand which zg tools your agent can use and how access is secured. |
|
|
201
|
+
| [Retrieval pipeline](./docs/04-pipeline.md) | Choose what to index, keep it fresh, and get better search results. |
|
|
202
|
+
| [Architecture](./docs/05-architecture.md) | See how zg handles your query and where your data stays. |
|
|
203
|
+
| [Server and execution modes](./docs/06-server.md) | Choose between one-off commands and a long-running local server. |
|
|
204
|
+
| [Embedding models](./docs/07-embedding.md) | Pick the right model for speed, search quality, privacy, and your hardware. |
|
|
205
|
+
| [Roadmap](./docs/08-roadmap.md) | See what is coming next and help shape zg's priorities. |
|
|
280
206
|
|
|
281
|
-
|
|
282
|
-
const result = await zvecGrep.context({
|
|
283
|
-
query: "ZVEC_GREP_HOME",
|
|
284
|
-
rg: true,
|
|
285
|
-
});
|
|
286
|
-
```
|
|
207
|
+
<a id="community"></a>
|
|
287
208
|
|
|
288
|
-
## ๐ค Join
|
|
209
|
+
## ๐ค Join Our Community
|
|
289
210
|
|
|
290
211
|
<div align="center">
|
|
291
212
|
|
|
292
|
-
|
|
|
293
|
-
|
|
|
294
|
-
| <img src="https://zvec.oss-cn-hongkong.aliyuncs.com/qrcode/dingding.png" width="150" alt="DingTalk QR Code"/> | <img src="https://zvec.oss-cn-hongkong.aliyuncs.com/qrcode/wechat.png?
|
|
295
|
-
|
|
|
213
|
+
| ๐ฌ DingTalk | ๐ฑ WeChat | ๐ฎ Discord | X (Twitter) |
|
|
214
|
+
| :---: | :---: | :---: | :---: |
|
|
215
|
+
| <img src="https://zvec.oss-cn-hongkong.aliyuncs.com/qrcode/dingding.png" width="150" alt="DingTalk QR Code"/> | <img src="https://zvec.oss-cn-hongkong.aliyuncs.com/qrcode/wechat.png?v1" width="150" alt="WeChat QR Code"/> | [](https://discord.gg/rKddFBBu9z) | [](<https://x.com/ZvecAI>) |
|
|
216
|
+
| Scan to join | Scan to join | Click to join | Click to follow |
|
|
296
217
|
|
|
297
218
|
</div>
|
|
298
219
|
|
|
299
220
|
## โค๏ธ Contributing
|
|
300
221
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
```bash
|
|
304
|
-
npm run check
|
|
305
|
-
```
|
|
222
|
+
Community contributions are always welcomeโbug fixes, features, and
|
|
223
|
+
documentation improvements all help make zvec-grep better.
|
|
306
224
|
|
|
307
|
-
|
|
225
|
+
Check out our [Contributing Guide](./CONTRIBUTING.md) to get started!
|