@angri450/zvec-grep 0.2.2
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 +201 -0
- package/README.md +319 -0
- package/README_CN.md +297 -0
- 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 +12 -0
- package/dist/authorization/prompt.js +63 -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 +6 -0
- package/dist/cli/args.js +1255 -0
- package/dist/cli/args.js.map +1 -0
- 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.d.ts +4 -0
- package/dist/cli/commands.js +801 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/errors.d.ts +9 -0
- package/dist/cli/errors.js +131 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/format/context.d.ts +9 -0
- package/dist/cli/format/context.js +786 -0
- package/dist/cli/format/context.js.map +1 -0
- package/dist/cli/format/debug.d.ts +4 -0
- package/dist/cli/format/debug.js +60 -0
- package/dist/cli/format/debug.js.map +1 -0
- package/dist/cli/format/highlight.d.ts +3 -0
- package/dist/cli/format/highlight.js +106 -0
- package/dist/cli/format/highlight.js.map +1 -0
- package/dist/cli/format/progress.d.ts +13 -0
- package/dist/cli/format/progress.js +290 -0
- package/dist/cli/format/progress.js.map +1 -0
- package/dist/cli/format/range.d.ts +3 -0
- package/dist/cli/format/range.js +24 -0
- package/dist/cli/format/range.js.map +1 -0
- package/dist/cli/format/status.d.ts +83 -0
- package/dist/cli/format/status.js +530 -0
- package/dist/cli/format/status.js.map +1 -0
- package/dist/cli/help.d.ts +1 -0
- package/dist/cli/help.js +546 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +40 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/install.d.ts +4 -0
- package/dist/cli/install.js +1735 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/managed-rg.d.ts +10 -0
- package/dist/cli/managed-rg.js +337 -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 +87 -0
- package/dist/cli/types.js +10 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/version.d.ts +1 -0
- package/dist/cli/version.js +13 -0
- package/dist/cli/version.js.map +1 -0
- 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 +78 -0
- package/dist/daemon/backend.js +1118 -0
- package/dist/daemon/backend.js.map +1 -0
- package/dist/daemon/change-set.d.ts +30 -0
- package/dist/daemon/change-set.js +163 -0
- package/dist/daemon/change-set.js.map +1 -0
- package/dist/daemon/config.d.ts +27 -0
- package/dist/daemon/config.js +107 -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 +307 -0
- package/dist/daemon/http-server.js.map +1 -0
- package/dist/daemon/index-coordinator.d.ts +22 -0
- package/dist/daemon/index-coordinator.js +55 -0
- package/dist/daemon/index-coordinator.js.map +1 -0
- package/dist/daemon/job-scheduler.d.ts +85 -0
- package/dist/daemon/job-scheduler.js +492 -0
- package/dist/daemon/job-scheduler.js.map +1 -0
- package/dist/daemon/logger.d.ts +10 -0
- package/dist/daemon/logger.js +101 -0
- package/dist/daemon/logger.js.map +1 -0
- package/dist/daemon/model-pool.d.ts +48 -0
- package/dist/daemon/model-pool.js +190 -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 +197 -0
- package/dist/daemon/root-lease.js.map +1 -0
- package/dist/daemon/root-runtime.d.ts +80 -0
- package/dist/daemon/root-runtime.js +340 -0
- package/dist/daemon/root-runtime.js.map +1 -0
- package/dist/daemon/runtime-manager.d.ts +47 -0
- package/dist/daemon/runtime-manager.js +252 -0
- package/dist/daemon/runtime-manager.js.map +1 -0
- package/dist/daemon/runtime.d.ts +12 -0
- package/dist/daemon/runtime.js +105 -0
- package/dist/daemon/runtime.js.map +1 -0
- package/dist/daemon/server-controller.d.ts +38 -0
- package/dist/daemon/server-controller.js +327 -0
- package/dist/daemon/server-controller.js.map +1 -0
- package/dist/daemon/watch-manager.d.ts +62 -0
- package/dist/daemon/watch-manager.js +415 -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 +57 -0
- package/dist/engine/config.js +351 -0
- package/dist/engine/config.js.map +1 -0
- package/dist/engine/errors.d.ts +20 -0
- package/dist/engine/errors.js +51 -0
- package/dist/engine/errors.js.map +1 -0
- package/dist/engine/extraction/code/adapter.d.ts +19 -0
- package/dist/engine/extraction/code/adapter.js +24 -0
- package/dist/engine/extraction/code/adapter.js.map +1 -0
- package/dist/engine/extraction/code/extractor.d.ts +13 -0
- package/dist/engine/extraction/code/extractor.js +696 -0
- package/dist/engine/extraction/code/extractor.js.map +1 -0
- package/dist/engine/extraction/code/families/c-family.d.ts +2 -0
- package/dist/engine/extraction/code/families/c-family.js +122 -0
- package/dist/engine/extraction/code/families/c-family.js.map +1 -0
- package/dist/engine/extraction/code/families/js-ts.d.ts +12 -0
- package/dist/engine/extraction/code/families/js-ts.js +118 -0
- package/dist/engine/extraction/code/families/js-ts.js.map +1 -0
- package/dist/engine/extraction/code/families/metadata.d.ts +8 -0
- package/dist/engine/extraction/code/families/metadata.js +86 -0
- package/dist/engine/extraction/code/families/metadata.js.map +1 -0
- package/dist/engine/extraction/code/families/name-field.d.ts +3 -0
- package/dist/engine/extraction/code/families/name-field.js +22 -0
- package/dist/engine/extraction/code/families/name-field.js.map +1 -0
- package/dist/engine/extraction/code/languages/c.d.ts +1 -0
- package/dist/engine/extraction/code/languages/c.js +12 -0
- package/dist/engine/extraction/code/languages/c.js.map +1 -0
- package/dist/engine/extraction/code/languages/cpp.d.ts +1 -0
- package/dist/engine/extraction/code/languages/cpp.js +18 -0
- package/dist/engine/extraction/code/languages/cpp.js.map +1 -0
- package/dist/engine/extraction/code/languages/go.d.ts +2 -0
- package/dist/engine/extraction/code/languages/go.js +70 -0
- package/dist/engine/extraction/code/languages/go.js.map +1 -0
- package/dist/engine/extraction/code/languages/java.d.ts +1 -0
- package/dist/engine/extraction/code/languages/java.js +17 -0
- package/dist/engine/extraction/code/languages/java.js.map +1 -0
- package/dist/engine/extraction/code/languages/javascript.d.ts +2 -0
- package/dist/engine/extraction/code/languages/javascript.js +23 -0
- package/dist/engine/extraction/code/languages/javascript.js.map +1 -0
- package/dist/engine/extraction/code/languages/python.d.ts +2 -0
- package/dist/engine/extraction/code/languages/python.js +52 -0
- package/dist/engine/extraction/code/languages/python.js.map +1 -0
- package/dist/engine/extraction/code/languages/rust.d.ts +2 -0
- package/dist/engine/extraction/code/languages/rust.js +25 -0
- package/dist/engine/extraction/code/languages/rust.js.map +1 -0
- package/dist/engine/extraction/code/languages/typescript.d.ts +2 -0
- package/dist/engine/extraction/code/languages/typescript.js +37 -0
- package/dist/engine/extraction/code/languages/typescript.js.map +1 -0
- package/dist/engine/extraction/code/tree-sitter/grammar.d.ts +4 -0
- package/dist/engine/extraction/code/tree-sitter/grammar.js +49 -0
- package/dist/engine/extraction/code/tree-sitter/grammar.js.map +1 -0
- package/dist/engine/extraction/code/tree-sitter/nodes.d.ts +3 -0
- package/dist/engine/extraction/code/tree-sitter/nodes.js +27 -0
- package/dist/engine/extraction/code/tree-sitter/nodes.js.map +1 -0
- package/dist/engine/extraction/code/tree-sitter/parser.d.ts +2 -0
- package/dist/engine/extraction/code/tree-sitter/parser.js +31 -0
- package/dist/engine/extraction/code/tree-sitter/parser.js.map +1 -0
- package/dist/engine/extraction/ids.d.ts +1 -0
- package/dist/engine/extraction/ids.js +5 -0
- package/dist/engine/extraction/ids.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 -0
- package/dist/engine/extraction/index.js +3 -0
- package/dist/engine/extraction/index.js.map +1 -0
- package/dist/engine/extraction/markdown/extractor.d.ts +7 -0
- package/dist/engine/extraction/markdown/extractor.js +362 -0
- package/dist/engine/extraction/markdown/extractor.js.map +1 -0
- package/dist/engine/extraction/runtime.d.ts +9 -0
- package/dist/engine/extraction/runtime.js +37 -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/extraction/types.js +2 -0
- package/dist/engine/extraction/types.js.map +1 -0
- package/dist/engine/extraction/vector-content.d.ts +5 -0
- package/dist/engine/extraction/vector-content.js +83 -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/artifact-cache-lock.d.ts +16 -0
- package/dist/engine/models/artifact-cache-lock.js +228 -0
- package/dist/engine/models/artifact-cache-lock.js.map +1 -0
- package/dist/engine/models/artifact-downloader.d.ts +77 -0
- package/dist/engine/models/artifact-downloader.js +766 -0
- package/dist/engine/models/artifact-downloader.js.map +1 -0
- package/dist/engine/models/backends/llama-cpp.d.ts +100 -0
- package/dist/engine/models/backends/llama-cpp.js +567 -0
- 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 +38 -0
- package/dist/engine/models/backends/model2vec.js +344 -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/backends/qwen.js +411 -0
- package/dist/engine/models/backends/qwen.js.map +1 -0
- package/dist/engine/models/backends/transformers-js.d.ts +90 -0
- package/dist/engine/models/backends/transformers-js.js +411 -0
- package/dist/engine/models/backends/transformers-js.js.map +1 -0
- package/dist/engine/models/catalog.d.ts +490 -0
- package/dist/engine/models/catalog.js +522 -0
- package/dist/engine/models/catalog.js.map +1 -0
- package/dist/engine/models/download-progress.d.ts +16 -0
- package/dist/engine/models/download-progress.js +47 -0
- package/dist/engine/models/download-progress.js.map +1 -0
- package/dist/engine/models/embeddings.d.ts +73 -0
- package/dist/engine/models/embeddings.js +125 -0
- package/dist/engine/models/embeddings.js.map +1 -0
- package/dist/engine/models/factory.d.ts +2 -0
- package/dist/engine/models/factory.js +51 -0
- package/dist/engine/models/factory.js.map +1 -0
- package/dist/engine/models/index.d.ts +5 -0
- package/dist/engine/models/index.js +6 -0
- package/dist/engine/models/index.js.map +1 -0
- package/dist/engine/models/local-embedding-parallelism.d.ts +15 -0
- package/dist/engine/models/local-embedding-parallelism.js +63 -0
- package/dist/engine/models/local-embedding-parallelism.js.map +1 -0
- package/dist/engine/models/local-embedding-queue.d.ts +12 -0
- package/dist/engine/models/local-embedding-queue.js +65 -0
- package/dist/engine/models/local-embedding-queue.js.map +1 -0
- package/dist/engine/models/ranking.d.ts +19 -0
- package/dist/engine/models/ranking.js +2 -0
- package/dist/engine/models/ranking.js.map +1 -0
- 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 +14 -0
- package/dist/engine/pipeline/indexing/index.js +1219 -0
- package/dist/engine/pipeline/indexing/index.js.map +1 -0
- 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.d.ts +7 -0
- package/dist/engine/pipeline/indexing/root-paths.js +148 -0
- package/dist/engine/pipeline/indexing/root-paths.js.map +1 -0
- package/dist/engine/pipeline/indexing/scanner/index.d.ts +14 -0
- package/dist/engine/pipeline/indexing/scanner/index.js +776 -0
- package/dist/engine/pipeline/indexing/scanner/index.js.map +1 -0
- package/dist/engine/pipeline/search/index.d.ts +12 -0
- package/dist/engine/pipeline/search/index.js +811 -0
- package/dist/engine/pipeline/search/index.js.map +1 -0
- package/dist/engine/service/index.d.ts +3 -0
- package/dist/engine/service/index.js +2 -0
- package/dist/engine/service/index.js.map +1 -0
- package/dist/engine/service/lexical.d.ts +28 -0
- package/dist/engine/service/lexical.js +446 -0
- package/dist/engine/service/lexical.js.map +1 -0
- package/dist/engine/service/root.d.ts +15 -0
- package/dist/engine/service/root.js +57 -0
- package/dist/engine/service/root.js.map +1 -0
- package/dist/engine/service/structure-enrichment.d.ts +8 -0
- package/dist/engine/service/structure-enrichment.js +178 -0
- package/dist/engine/service/structure-enrichment.js.map +1 -0
- package/dist/engine/service/types.d.ts +212 -0
- package/dist/engine/service/types.js +2 -0
- package/dist/engine/service/types.js.map +1 -0
- 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 +15 -0
- package/dist/engine/service/zvec-grep.js +1520 -0
- package/dist/engine/service/zvec-grep.js.map +1 -0
- package/dist/engine/storage/index.d.ts +53 -0
- package/dist/engine/storage/index.js +3 -0
- package/dist/engine/storage/index.js.map +1 -0
- 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 -0
- package/dist/engine/storage/zvec.js +976 -0
- package/dist/engine/storage/zvec.js.map +1 -0
- package/dist/engine/types.d.ts +303 -0
- package/dist/engine/types.js +14 -0
- package/dist/engine/types.js.map +1 -0
- package/dist/engine/utils/atomic-file.d.ts +3 -0
- package/dist/engine/utils/atomic-file.js +39 -0
- package/dist/engine/utils/atomic-file.js.map +1 -0
- 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.d.ts +10 -0
- package/dist/engine/utils/file-selection.js +157 -0
- package/dist/engine/utils/file-selection.js.map +1 -0
- package/dist/engine/utils/glob.d.ts +9 -0
- package/dist/engine/utils/glob.js +208 -0
- package/dist/engine/utils/glob.js.map +1 -0
- package/dist/engine/utils/hash.d.ts +2 -0
- package/dist/engine/utils/hash.js +8 -0
- package/dist/engine/utils/hash.js.map +1 -0
- package/dist/engine/utils/json.d.ts +8 -0
- package/dist/engine/utils/json.js +83 -0
- package/dist/engine/utils/json.js.map +1 -0
- package/dist/engine/utils/lock.d.ts +19 -0
- package/dist/engine/utils/lock.js +254 -0
- package/dist/engine/utils/lock.js.map +1 -0
- package/dist/engine/utils/path.d.ts +4 -0
- package/dist/engine/utils/path.js +18 -0
- package/dist/engine/utils/path.js.map +1 -0
- package/dist/engine/utils/timing.d.ts +19 -0
- package/dist/engine/utils/timing.js +87 -0
- package/dist/engine/utils/timing.js.map +1 -0
- 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 +6 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- 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 +668 -0
- package/dist/mcp/schemas.js +512 -0
- package/dist/mcp/schemas.js.map +1 -0
- package/dist/mcp/stdio-bridge.d.ts +15 -0
- package/dist/mcp/stdio-bridge.js +190 -0
- package/dist/mcp/stdio-bridge.js.map +1 -0
- package/dist/mcp/tools.d.ts +153 -0
- package/dist/mcp/tools.js +488 -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 +217 -0
- package/docs/02-cli.md +259 -0
- package/docs/03-mcp.md +185 -0
- package/docs/04-pipeline.md +234 -0
- package/docs/05-architecture.md +86 -0
- package/docs/06-server.md +279 -0
- package/docs/07-embedding.md +227 -0
- package/docs/08-roadmap.md +85 -0
- package/docs/README.md +53 -0
- package/package.json +87 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
const storage = new AsyncLocalStorage();
|
|
3
|
+
const TRACEPARENT = /^([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})((?:-[0-9a-f]+)*)$/;
|
|
4
|
+
export function currentTraceContext() {
|
|
5
|
+
return storage.getStore();
|
|
6
|
+
}
|
|
7
|
+
export function runWithTraceContext(context, operation) {
|
|
8
|
+
return context ? storage.run(context, operation) : operation();
|
|
9
|
+
}
|
|
10
|
+
export function traceContextFromMcpBody(body) {
|
|
11
|
+
if (!body || typeof body !== "object" || Array.isArray(body)) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return traceContextFromMcpMeta(body.params?._meta);
|
|
15
|
+
}
|
|
16
|
+
export function traceContextFromMcpMeta(meta) {
|
|
17
|
+
if (!meta || typeof meta !== "object" || Array.isArray(meta)) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const values = meta;
|
|
21
|
+
const traceparent = typeof values.traceparent === "string" ? values.traceparent : undefined;
|
|
22
|
+
const match = traceparent?.match(TRACEPARENT);
|
|
23
|
+
if (!match ||
|
|
24
|
+
match[1] === "ff" ||
|
|
25
|
+
(match[1] === "00" && match[5] !== "") ||
|
|
26
|
+
match[2] === "0".repeat(32) ||
|
|
27
|
+
match[3] === "0".repeat(16)) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
const tracestate = validTracestate(values.tracestate);
|
|
31
|
+
const baggage = validBaggage(values.baggage);
|
|
32
|
+
return {
|
|
33
|
+
traceparent: traceparent,
|
|
34
|
+
traceId: match[2],
|
|
35
|
+
...(tracestate ? { tracestate } : {}),
|
|
36
|
+
...(baggage ? { baggage } : {}),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function traceHeaders() {
|
|
40
|
+
const context = currentTraceContext();
|
|
41
|
+
if (!context)
|
|
42
|
+
return {};
|
|
43
|
+
return {
|
|
44
|
+
traceparent: context.traceparent,
|
|
45
|
+
...(context.tracestate ? { tracestate: context.tracestate } : {}),
|
|
46
|
+
...(context.baggage ? { baggage: context.baggage } : {}),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function boundedHeader(value, maxLength, allowHorizontalTab = false) {
|
|
50
|
+
if (typeof value !== "string" || value.length > maxLength)
|
|
51
|
+
return undefined;
|
|
52
|
+
for (const character of value) {
|
|
53
|
+
const code = character.charCodeAt(0);
|
|
54
|
+
if (code > 0x7e ||
|
|
55
|
+
(code < 0x20 && !(allowHorizontalTab && code === 0x09))) {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
61
|
+
function validTracestate(value) {
|
|
62
|
+
const header = boundedHeader(value, 512);
|
|
63
|
+
if (!header)
|
|
64
|
+
return undefined;
|
|
65
|
+
const members = header.split(",");
|
|
66
|
+
if (members.length > 32)
|
|
67
|
+
return undefined;
|
|
68
|
+
const keys = new Set();
|
|
69
|
+
for (const rawMember of members) {
|
|
70
|
+
const member = rawMember.trim();
|
|
71
|
+
const separator = member.indexOf("=");
|
|
72
|
+
if (separator <= 0)
|
|
73
|
+
return undefined;
|
|
74
|
+
const key = member.slice(0, separator);
|
|
75
|
+
const item = member.slice(separator + 1);
|
|
76
|
+
if (!/^(?:[a-z][a-z0-9_\-*/]{0,255}|[a-z0-9][a-z0-9_\-*/]{0,240}@[a-z][a-z0-9_\-*/]{0,13})$/.test(key) ||
|
|
77
|
+
item.length === 0 ||
|
|
78
|
+
item.length > 256 ||
|
|
79
|
+
!/^[\x20-\x2b\x2d-\x3c\x3e-\x7e]+$/.test(item) ||
|
|
80
|
+
item.endsWith(" ") ||
|
|
81
|
+
keys.has(key)) {
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
keys.add(key);
|
|
85
|
+
}
|
|
86
|
+
return header;
|
|
87
|
+
}
|
|
88
|
+
function validBaggage(value) {
|
|
89
|
+
const header = boundedHeader(value, 8_192, true);
|
|
90
|
+
if (!header)
|
|
91
|
+
return undefined;
|
|
92
|
+
const members = header.split(",");
|
|
93
|
+
if (members.length > 64)
|
|
94
|
+
return undefined;
|
|
95
|
+
for (const rawMember of members) {
|
|
96
|
+
const segments = rawMember.trim().split(";");
|
|
97
|
+
const pair = segments.shift();
|
|
98
|
+
const separator = pair.indexOf("=");
|
|
99
|
+
const pairValue = separator < 0 ? "" : pair.slice(separator + 1).trim();
|
|
100
|
+
if (separator <= 0 ||
|
|
101
|
+
!isHttpToken(pair.slice(0, separator).trim()) ||
|
|
102
|
+
hasInvalidBaggageCharacters(pairValue, ",")) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
for (const rawProperty of segments) {
|
|
106
|
+
const property = rawProperty.trim();
|
|
107
|
+
const propertySeparator = property.indexOf("=");
|
|
108
|
+
const key = propertySeparator < 0
|
|
109
|
+
? property
|
|
110
|
+
: property.slice(0, propertySeparator).trim();
|
|
111
|
+
const propertyValue = propertySeparator < 0
|
|
112
|
+
? ""
|
|
113
|
+
: property.slice(propertySeparator + 1).trim();
|
|
114
|
+
if (!isHttpToken(key) ||
|
|
115
|
+
hasInvalidBaggageCharacters(propertyValue, ";,")) {
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return header;
|
|
121
|
+
}
|
|
122
|
+
function isHttpToken(value) {
|
|
123
|
+
return /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/.test(value);
|
|
124
|
+
}
|
|
125
|
+
function hasInvalidBaggageCharacters(value, delimiters) {
|
|
126
|
+
for (const character of value) {
|
|
127
|
+
const code = character.charCodeAt(0);
|
|
128
|
+
if (code <= 0x20 ||
|
|
129
|
+
code === 0x22 ||
|
|
130
|
+
code === 0x5c ||
|
|
131
|
+
code === 0x7f ||
|
|
132
|
+
delimiters.includes(character)) {
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=trace-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-context.js","sourceRoot":"","sources":["../../src/observability/trace-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const ZVEC_GREP_WORKSPACE_EVIDENCE_RULES: readonly ["Use the current workspace as the evidence source when the user asks about local material, prior context establishes it as relevant, or the question concerns how the current project works—even if the workspace is not mentioned explicitly.", "A workspace may contain any mix of code, documents, configuration, and data.", "Do not use workspace retrieval for unrelated open-world questions, current external facts, or web content that does not depend on local evidence."];
|
|
2
|
+
export declare function formatPromptRules(heading: string, rules: readonly string[]): string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const ZVEC_GREP_WORKSPACE_EVIDENCE_RULES = [
|
|
2
|
+
"Use the current workspace as the evidence source when the user asks about local material, prior context establishes it as relevant, or the question concerns how the current project works—even if the workspace is not mentioned explicitly.",
|
|
3
|
+
"A workspace may contain any mix of code, documents, configuration, and data.",
|
|
4
|
+
"Do not use workspace retrieval for unrelated open-world questions, current external facts, or web content that does not depend on local evidence.",
|
|
5
|
+
];
|
|
6
|
+
export function formatPromptRules(heading, rules) {
|
|
7
|
+
return [heading, ...rules.map((rule) => `- ${rule}`)].join("\n");
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=zvec-grep-guidance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zvec-grep-guidance.js","sourceRoot":"","sources":["../../src/prompts/zvec-grep-guidance.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,+OAA+O;IAC/O,8EAA8E;IAC9E,mJAAmJ;CAC3I,CAAC;AAEX,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,KAAwB;IAExB,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# Agent integrations
|
|
2
|
+
|
|
3
|
+
[Documentation](./README.md) · [Agents](./01-agents.md) ·
|
|
4
|
+
[CLI](./02-cli.md) · [MCP](./03-mcp.md) · [Pipeline](./04-pipeline.md) ·
|
|
5
|
+
[Architecture](./05-architecture.md) · [Server](./06-server.md) ·
|
|
6
|
+
[Embedding](./07-embedding.md) · [Roadmap](./08-roadmap.md)
|
|
7
|
+
|
|
8
|
+
`zg --install` connects zvec-grep to supported agents through the local MCP
|
|
9
|
+
server. After that, the agent can use indexed retrieval for workspace-grounded
|
|
10
|
+
semantic discovery while keeping exact lookup on the appropriate native or
|
|
11
|
+
managed-rg route.
|
|
12
|
+
|
|
13
|
+
## Supported agents
|
|
14
|
+
|
|
15
|
+
| Agent | Target | Managed configuration |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| Codex | `codex` | `~/.codex/config.toml` and `~/.codex/AGENTS.md` |
|
|
18
|
+
| Claude Code | `claude` | `~/.claude.json`, `~/.claude/settings.json`, and `~/.claude/CLAUDE.md` |
|
|
19
|
+
| Qwen Code | `qwen` | `~/.qwen/settings.json` and `~/.qwen/QWEN.md` |
|
|
20
|
+
| Qoder CLI and IDE | `qoder` | `~/.qoder/settings.json`, `~/.qoder/AGENTS.md`, and the IDE user-level `~/.qoder/mcp.json` |
|
|
21
|
+
| OpenCode | `opencode` | the existing `~/.config/opencode/opencode.jsonc` or `opencode.json`, and the adjacent `AGENTS.md` |
|
|
22
|
+
| Cursor | `cursor` | `~/.cursor/mcp.json` |
|
|
23
|
+
|
|
24
|
+
The standard environment overrides used by each agent are respected, including
|
|
25
|
+
`CODEX_HOME`, `CLAUDE_CONFIG_DIR`, `QWEN_HOME`, `QODER_CONFIG_DIR`,
|
|
26
|
+
`QODER_IDE_MCP_PATH`, `QODER_IDE_EXECUTABLE`, `OPENCODE_CONFIG`, and
|
|
27
|
+
`CURSOR_CONFIG_DIR`.
|
|
28
|
+
|
|
29
|
+
For OpenCode, `OPENCODE_CONFIG` selects the exact configuration file. Without
|
|
30
|
+
that override, the installer uses an existing global `opencode.jsonc` before
|
|
31
|
+
`opencode.json`, preserves JSONC comments and unrelated settings, and creates
|
|
32
|
+
`opencode.json` only when neither file exists. If both files exist, the selected
|
|
33
|
+
`opencode.jsonc` path is reported in the install output. On Linux and other
|
|
34
|
+
XDG-based environments, `XDG_CONFIG_HOME` replaces the default `~/.config`
|
|
35
|
+
root.
|
|
36
|
+
|
|
37
|
+
The current Qoder CLI package exposes both `qoder` and `qodercli` commands, but
|
|
38
|
+
the installer exposes only the canonical `qoder` target. One Qoder install
|
|
39
|
+
configures both the CLI and IDE, and automatic detection recognizes either CLI
|
|
40
|
+
executable or the IDE. `QODER_CONFIG_DIR` overrides the Qoder CLI configuration
|
|
41
|
+
directory; `QODER_IDE_MCP_PATH` independently overrides the full IDE `mcp.json` path, and
|
|
42
|
+
`QODER_IDE_EXECUTABLE` overrides the IDE executable used by automatic detection.
|
|
43
|
+
|
|
44
|
+
## Install an integration
|
|
45
|
+
|
|
46
|
+
Run the guided installer to select from detected agents:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
zg --install
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
For scripts or repeatable setup, select targets explicitly:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
zg --install --target codex --yes
|
|
56
|
+
zg --install --target claude --target cursor --yes
|
|
57
|
+
zg --install --target qwen --yes
|
|
58
|
+
zg --install --target qoder --yes
|
|
59
|
+
zg --install --target all --yes
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
The installer:
|
|
63
|
+
|
|
64
|
+
1. adds a managed `zvec_grep` MCP entry;
|
|
65
|
+
2. adds search guidance where the agent supports it;
|
|
66
|
+
3. adds local MCP tool approval for Codex and Claude Code, managed server trust
|
|
67
|
+
for Qwen Code and Qoder CLI, and exact search/rg allow rules for Qoder's
|
|
68
|
+
CLI-backed runtime;
|
|
69
|
+
4. starts the local zvec-grep server when possible.
|
|
70
|
+
|
|
71
|
+
The [Server guide](./06-server.md) explains when the daemon is useful and how its
|
|
72
|
+
lifecycle differs from Direct execution.
|
|
73
|
+
|
|
74
|
+
Managed text blocks use `ZVEC_GREP_START` and `ZVEC_GREP_END` markers. Existing
|
|
75
|
+
content outside those blocks is preserved, as are unrelated settings and other
|
|
76
|
+
MCP servers. If an unmanaged `zvec_grep` entry already exists, inspect it before
|
|
77
|
+
using `--force` to replace it.
|
|
78
|
+
|
|
79
|
+
For Qoder CLI, `--mcp-transport` selects either a stdio or HTTP entry under
|
|
80
|
+
`mcpServers`; the installer also manages the timeout and trust fields. Search
|
|
81
|
+
guidance is written to `${QODER_CONFIG_DIR:-~/.qoder}/AGENTS.md` without
|
|
82
|
+
replacing unrelated guidance.
|
|
83
|
+
|
|
84
|
+
The same Qoder `settings.json`, used by Qoder CLI and CLI-backed Qoder clients,
|
|
85
|
+
receives exact `permissions.allow` rules for
|
|
86
|
+
`mcp__zvec_grep__zvec_grep_search` and `mcp__zvec_grep__zvec_grep_rg`, plus the
|
|
87
|
+
equivalent server-level `alwaysAllow` policy. This avoids repeated tool approval
|
|
88
|
+
prompts without allowing other MCP tools. Existing permission rules and JSONC
|
|
89
|
+
comments are preserved; uninstall removes only rules added by zg.
|
|
90
|
+
|
|
91
|
+
The same install writes the Qoder IDE MCP entry to its user-level
|
|
92
|
+
`~/.qoder/mcp.json`. Set `QODER_IDE_MCP_PATH` to override that complete file
|
|
93
|
+
path. The IDE entry uses
|
|
94
|
+
stdio when `--mcp-transport stdio` is selected. For HTTP it uses a `type: "sse"`
|
|
95
|
+
URL entry, from which Qoder IDE automatically detects the streamable HTTP MCP
|
|
96
|
+
endpoint. Qoder's platform `SharedClientCache` is runtime/cache state rather
|
|
97
|
+
than the user MCP configuration entry point, so the installer does not write
|
|
98
|
+
it. Qoder IDE has no supported global Rules file, so the installer does not
|
|
99
|
+
claim to create or manage IDE search guidance.
|
|
100
|
+
|
|
101
|
+
Both Qoder clients receive the same MCP form-based Remote Embedding
|
|
102
|
+
authorization request as other clients. If Qoder CLI reports that no handler is
|
|
103
|
+
registered for `elicitation/create`, or returns a decline or cancellation
|
|
104
|
+
without displaying the form, its installed `AGENTS.md` guidance supplies a
|
|
105
|
+
compatibility interaction through the exact `AskUserQuestion` tool. The CLI
|
|
106
|
+
agent must ask whether to allow Remote Embedding for the workspace, use local
|
|
107
|
+
FTS only, or cancel.
|
|
108
|
+
|
|
109
|
+
Qoder IDE uses the exact native tool name `ask_user_question`, but its official
|
|
110
|
+
integration does not provide a global Rules location where the installer can
|
|
111
|
+
persist the fallback. In stdio mode, the zvec-grep bridge turns a missing
|
|
112
|
+
`elicitation/create` handler into an actionable error that tells the top-level
|
|
113
|
+
IDE agent to present the same three choices with `ask_user_question`. This path
|
|
114
|
+
still needs an end-to-end smoke test in a real Qoder IDE session and should not
|
|
115
|
+
be treated as proof that every IDE build follows the instruction.
|
|
116
|
+
|
|
117
|
+
Only after explicit workspace approval may either client run the following
|
|
118
|
+
persistent grant and retry the original MCP search once:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
zg --auth grant "/absolute/workspace" \
|
|
122
|
+
--capability embedding \
|
|
123
|
+
--scope workspace
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The local-FTS choice retries the search without `query`, `queries`, or `vector`
|
|
127
|
+
routes and with `autoUpdate: false` and `freshness: "eventual"`. It neither
|
|
128
|
+
refreshes the remote-embedding index nor sends query text or workspace content
|
|
129
|
+
to a remote Embedding provider. In a headless session where Qoder cannot ask the
|
|
130
|
+
user, the agent stops without granting access. Neither question tool should
|
|
131
|
+
collect a token, API key, or password. Provider credentials remain separate
|
|
132
|
+
from this data authorization.
|
|
133
|
+
|
|
134
|
+
Restart the selected agent, or open a new session, after installation.
|
|
135
|
+
|
|
136
|
+
## How the agent searches
|
|
137
|
+
|
|
138
|
+
The agent routes in two stages: first it decides whether the answer should be
|
|
139
|
+
grounded in the current indexed workspace, then it chooses exact or semantic
|
|
140
|
+
retrieval. Code versus non-code is not the boundary; a workspace may contain any
|
|
141
|
+
mix of code, documents, configuration, and data.
|
|
142
|
+
|
|
143
|
+
Workspace content is the intended evidence source when the user asks to inspect,
|
|
144
|
+
search, or ground the answer in local files, the workspace, or its index; prior
|
|
145
|
+
context established local material as the intended source; or the user asks
|
|
146
|
+
whether relevant local material exists. Negative, incidental, or comparative
|
|
147
|
+
workspace mentions do not establish relevance. Tool availability or topic
|
|
148
|
+
overlap alone does not establish workspace relevance.
|
|
149
|
+
|
|
150
|
+
The default MCP surface gives the agent one indexed search tool and leaves exact
|
|
151
|
+
lexical lookup to the agent's native tools:
|
|
152
|
+
|
|
153
|
+
| Intent | Tool |
|
|
154
|
+
| --- | --- |
|
|
155
|
+
| Workspace-grounded exact words, quotations, names, dates, keys, filenames, paths, or regexes are sufficient | Native grep or rg |
|
|
156
|
+
| Workspace-grounded wording or location is unknown, or the answer requires semantic, fuzzy, relationship, chronology, causality, comparison, or cross-file synthesis | `zvec_grep_search` |
|
|
157
|
+
| Exact anchors are known but the answer requires broader context or synthesis | `zvec_grep_search`, then native grep or rg |
|
|
158
|
+
| The answer is unrelated open-world knowledge, a current external fact, or web content that does not depend on local evidence | The appropriate external source, not zvec-grep |
|
|
159
|
+
|
|
160
|
+
`zvec_grep_search` needs an existing index. Managed rg remains available through
|
|
161
|
+
`zg --rg` and through the optional `full` MCP toolset. See the
|
|
162
|
+
[Pipeline guide](./04-pipeline.md) for the distinction and the
|
|
163
|
+
[MCP guide](./03-mcp.md) for tool inputs.
|
|
164
|
+
|
|
165
|
+
When semantic discovery is selected because no sufficient exact anchor is
|
|
166
|
+
available and the user asks whether conceptually related material exists
|
|
167
|
+
locally, the agent makes at most one focused `zvec_grep_search` probe and stops
|
|
168
|
+
when the results are not relevant. Exact quotations, configuration keys,
|
|
169
|
+
filenames, regexes, and exhaustive occurrence requests stay on the exact route.
|
|
170
|
+
|
|
171
|
+
## Verify the setup
|
|
172
|
+
|
|
173
|
+
Check the server first:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
zg --server status --check-ready
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Then start a new agent session and confirm that the client-specific search tool
|
|
180
|
+
is available. It is `zvec_grep_search` in Codex and Claude Code,
|
|
181
|
+
`mcp__zvec_grep__zvec_grep_search` in Qwen Code and Qoder CLI, and
|
|
182
|
+
`zvec_grep_zvec_grep_search` in OpenCode. With the optional `full` MCP toolset,
|
|
183
|
+
Qoder CLI exposes managed rg as `mcp__zvec_grep__zvec_grep_rg`. For Qoder IDE,
|
|
184
|
+
confirm after restart that the `zvec_grep` server and its tools appear; the exact
|
|
185
|
+
host-qualified tool label remains part of the real-machine smoke test. If the
|
|
186
|
+
MCP connection is unavailable, the same indexed search and optional managed-rg
|
|
187
|
+
route remain available from the shell:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
zg "where theme preferences are restored"
|
|
191
|
+
zg --rg -F "loadTheme" src
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Permissions and remote data
|
|
195
|
+
|
|
196
|
+
The server listens on loopback and has no token by default. See
|
|
197
|
+
[Server authentication](./06-server.md#bearer-authentication) when a local Bearer
|
|
198
|
+
token is required.
|
|
199
|
+
|
|
200
|
+
MCP tool approval only authorizes calls to the local server. It does **not**
|
|
201
|
+
authorize sending query text or workspace content to a remote Embedding
|
|
202
|
+
provider. Remote Embedding asks separately on first use; see
|
|
203
|
+
[Embedding models](./07-embedding.md#remote-embedding-and-authorization).
|
|
204
|
+
|
|
205
|
+
## Remove an integration
|
|
206
|
+
|
|
207
|
+
Use the same target names to remove only zvec-grep-managed entries:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
zg --uninstall --target codex --yes
|
|
211
|
+
zg --uninstall --target qwen --yes
|
|
212
|
+
zg --uninstall --target qoder --yes
|
|
213
|
+
zg --uninstall --target all --yes
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
Restart the agent or open a new session to apply the change. Uninstalling an
|
|
217
|
+
agent integration does not delete repository indexes or the npm package.
|
package/docs/02-cli.md
ADDED
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
# CLI guide
|
|
2
|
+
|
|
3
|
+
[Documentation](./README.md) · [Agents](./01-agents.md) ·
|
|
4
|
+
[CLI](./02-cli.md) · [MCP](./03-mcp.md) · [Pipeline](./04-pipeline.md) ·
|
|
5
|
+
[Architecture](./05-architecture.md) · [Server](./06-server.md) ·
|
|
6
|
+
[Embedding](./07-embedding.md) · [Roadmap](./08-roadmap.md)
|
|
7
|
+
|
|
8
|
+
The `zg` command is a search interface first. Positional arguments are always
|
|
9
|
+
queries; maintenance operations use long action options so ordinary words such
|
|
10
|
+
as `index`, `install`, and `status` never collide with commands. Use the
|
|
11
|
+
installed CLI for version-specific help:
|
|
12
|
+
|
|
13
|
+
To expose accidental use of the old command shape without making it an alias,
|
|
14
|
+
a leading command-shaped word such as `query`, `index`, or `install` emits a
|
|
15
|
+
warning on stderr and is still parsed as search input. Use `zg -- query` (or
|
|
16
|
+
another literal word after `--`) to make that search intent explicit and
|
|
17
|
+
suppress the warning.
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
zg --help
|
|
21
|
+
zg --help search
|
|
22
|
+
zg --help models
|
|
23
|
+
zg --help file-types
|
|
24
|
+
zg --help environment
|
|
25
|
+
zg --index --help
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Interface overview
|
|
29
|
+
|
|
30
|
+
| Form | Purpose |
|
|
31
|
+
| --- | --- |
|
|
32
|
+
| `zg <query>` | Search an index or run managed ripgrep |
|
|
33
|
+
| `--index` | Build, update, rebuild, or drop a Workspace index |
|
|
34
|
+
| `--status` | Inspect Workspace and index state |
|
|
35
|
+
| `--install` / `--uninstall` | Manage agent integrations |
|
|
36
|
+
| `--config` | Configure provider credentials and model defaults |
|
|
37
|
+
| `--auth` | Manage Remote Embedding authorization |
|
|
38
|
+
| `--server` | Manage the shared MCP server |
|
|
39
|
+
| `--help` / `--version` | Show help or the installed version |
|
|
40
|
+
|
|
41
|
+
## `zg`
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
zg <query> [options]
|
|
45
|
+
zg --hybrid <query> --fts <query> --vector <query> [--fuse]
|
|
46
|
+
zg --rg [rg-options] <pattern> [path...]
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Search routes:
|
|
50
|
+
|
|
51
|
+
| Option | Meaning |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| positional query | Hybrid lexical and vector retrieval |
|
|
54
|
+
| `--hybrid <query>` | Add an explicit hybrid query group |
|
|
55
|
+
| `--fts <query>` | Add a ranked lexical query group |
|
|
56
|
+
| `--vector <query>` | Add a semantic-only query group |
|
|
57
|
+
| `--fuse` | Combine all groups into one ranked plan |
|
|
58
|
+
| `--rg` | Run exhaustive managed ripgrep without an index |
|
|
59
|
+
|
|
60
|
+
Result controls:
|
|
61
|
+
|
|
62
|
+
| Option | Meaning |
|
|
63
|
+
| --- | --- |
|
|
64
|
+
| `--limit <n>` | Maximum returned items per group |
|
|
65
|
+
| `--compact` | Force compact output intended for pipes |
|
|
66
|
+
| `--preview none\|short\|full` | Indexed source preview size |
|
|
67
|
+
| `--refresh background\|wait\|off` | Index refresh policy |
|
|
68
|
+
| `--mode direct\|server\|auto` | Execution transport |
|
|
69
|
+
| `--debug` | Print diagnostics to stderr |
|
|
70
|
+
| `--trace` | Add per-hit indexed search trace |
|
|
71
|
+
| `--prefer-symbol` | Prefer an exact indexed symbol |
|
|
72
|
+
| `--symbol-type <type>` | Restrict results to a symbol type |
|
|
73
|
+
| `--modified-after <time>` | Search files modified after a time |
|
|
74
|
+
| `--modified-before <time>` | Search files modified before a time |
|
|
75
|
+
|
|
76
|
+
Indexed CLI results are separated by query group and preserve the rank assigned
|
|
77
|
+
inside that group. The CLI does not apply the MCP response's cross-group
|
|
78
|
+
coverage/global-fill presentation. A result recalled by several groups appears
|
|
79
|
+
under each of those groups. `--limit` continues to bound each group.
|
|
80
|
+
|
|
81
|
+
Valid symbol types are `module`, `class`, `interface`, `function`, `value`, and
|
|
82
|
+
`alias`.
|
|
83
|
+
|
|
84
|
+
Common scope options for indexed search are `-g/--glob`, `--iglob`, `-t/--type`,
|
|
85
|
+
and `-T/--type-not`. Managed rg additionally supports common ripgrep matching,
|
|
86
|
+
context, discovery, encoding, and regex-engine flags.
|
|
87
|
+
|
|
88
|
+
If no index exists, `zg` creates one with a local embedding model before the
|
|
89
|
+
first indexed search. A configured local model is respected; a configured
|
|
90
|
+
remote model is not used implicitly. Use `zg --index` when you want to choose a
|
|
91
|
+
remote model, narrow the indexed paths, rebuild, or drop the index.
|
|
92
|
+
|
|
93
|
+
Examples:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
zg "theme preference persistence on startup"
|
|
97
|
+
zg --fts "loadTheme" -g "src/**" -t ts
|
|
98
|
+
zg --vector "where user preferences are restored" --limit 5
|
|
99
|
+
zg "plugin lifecycle" --preview full
|
|
100
|
+
zg --rg -i -C 2 -g "*.ts" "dark mode" src
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
See [Retrieval pipeline](./04-pipeline.md#3-query-through-one-search-layer) for
|
|
104
|
+
route selection and freshness behavior.
|
|
105
|
+
|
|
106
|
+
## `zg --index`
|
|
107
|
+
|
|
108
|
+
```text
|
|
109
|
+
zg --index [root] [options]
|
|
110
|
+
zg --index [root] --rebuild [options]
|
|
111
|
+
zg --index [root] --drop [--yes]
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Core options:
|
|
115
|
+
|
|
116
|
+
| Option | Meaning |
|
|
117
|
+
| --- | --- |
|
|
118
|
+
| `--embedding <model>` | Model for a new or rebuilt index |
|
|
119
|
+
| `--rebuild` | Recreate an existing index |
|
|
120
|
+
| `--drop` | Permanently remove the Workspace index |
|
|
121
|
+
| `--yes` | Confirm `--drop` without a prompt |
|
|
122
|
+
| `--reset-paths` | Replace stored file-selection settings |
|
|
123
|
+
| `--mode direct\|server\|auto` | Execution transport |
|
|
124
|
+
| `--api-key <key>` | One-command provider credential |
|
|
125
|
+
| `--endpoint <url>` | Remote provider endpoint |
|
|
126
|
+
| `--model-cache <path>` | Local model cache directory |
|
|
127
|
+
| `--device <device>` | `auto`, `cpu`, `metal`, `vulkan`, or `cuda` |
|
|
128
|
+
| `--embedding-concurrency <n>` | Concurrent Embedding tasks |
|
|
129
|
+
| `--allow-remote` | Authorize Remote Embedding for this command |
|
|
130
|
+
|
|
131
|
+
Local Potion embedding tasks run on worker threads. They default to two workers;
|
|
132
|
+
`--embedding-concurrency` can override that value for larger machines.
|
|
133
|
+
|
|
134
|
+
File discovery accepts `-g/--glob`, `--iglob`, `-t/--type`, `-T/--type-not`,
|
|
135
|
+
`--hidden`, `--no-ignore`, `--ignore-file`, `--max-depth`, `--max-filesize`, and
|
|
136
|
+
`-L/--follow`.
|
|
137
|
+
|
|
138
|
+
Examples:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
zg --index --embedding local/potion-code-16m-v2
|
|
142
|
+
zg --index
|
|
143
|
+
zg --index --rebuild --embedding local/jina-embeddings-v2-base-code
|
|
144
|
+
zg --index --drop --yes
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## `zg --status`
|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
zg --status [root] [--mode direct|server|auto] [--check-ready]
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Status includes the selected root, index policy, stored schema and paths, file
|
|
154
|
+
counts, refresh state, and a suggested next action. `--check-ready` preserves
|
|
155
|
+
normal output and exits non-zero unless the index is ready, which is useful in
|
|
156
|
+
scripts.
|
|
157
|
+
|
|
158
|
+
## `zg --install` and `zg --uninstall`
|
|
159
|
+
|
|
160
|
+
```text
|
|
161
|
+
zg --install [--target codex|claude|qwen|qoder|opencode|cursor|all|auto] [--mcp-transport stdio|http] [--mcp-toolset agent|full] [--yes] [--force]
|
|
162
|
+
zg --uninstall [--target codex|claude|qwen|qoder|opencode|cursor|all|auto] [--yes]
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
`--target` is repeatable. `qoder` is the single Qoder target and configures
|
|
166
|
+
Qoder CLI and Qoder IDE together. `zg --install` also accepts:
|
|
167
|
+
|
|
168
|
+
| Option | Meaning |
|
|
169
|
+
| --- | --- |
|
|
170
|
+
| `--mcp-transport <stdio\|http>` | MCP connection mode; default `stdio` |
|
|
171
|
+
| `--mcp-toolset <agent\|full>` | Daemon MCP surface; default `agent` |
|
|
172
|
+
| `--mcp-tool-timeout <seconds>` | Codex, Qwen Code, both Qoder clients, and OpenCode MCP timeout; default 600 seconds |
|
|
173
|
+
| `--mcp-token-env <name>` | Environment variable containing the server token |
|
|
174
|
+
| `--force` | Replace a conflicting unmanaged `zvec_grep` entry |
|
|
175
|
+
|
|
176
|
+
See [Agent integrations](./01-agents.md) before using `--force`.
|
|
177
|
+
|
|
178
|
+
## `zg --config`
|
|
179
|
+
|
|
180
|
+
```text
|
|
181
|
+
zg --config provider set <provider> --api-key <key>
|
|
182
|
+
zg --config model set <model> [--endpoint <url> | --device <device>] [--default]
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Examples:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
zg --config provider set qwen --api-key "$DASHSCOPE_API_KEY"
|
|
189
|
+
zg --config model set qwen/text-embedding-v4 --default
|
|
190
|
+
zg --config model set local/potion-code-16m-v2 --device metal
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Global configuration is stored in `~/.zvec-grep/config.json`. Existing indexes
|
|
194
|
+
continue to use their stored model until explicitly rebuilt.
|
|
195
|
+
|
|
196
|
+
## `zg --auth`
|
|
197
|
+
|
|
198
|
+
```text
|
|
199
|
+
zg --auth grant [root] --capability embedding --scope workspace [--embedding <model>]
|
|
200
|
+
zg --auth status [root]
|
|
201
|
+
zg --auth revoke [root]
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Workspace grants are stored under `.zvec-grep/authorization.json` and shared by
|
|
205
|
+
the CLI and MCP server. `--allow-remote` is the non-persistent alternative for
|
|
206
|
+
one search or `--index` operation. `--embedding` selects the Remote Embedding model
|
|
207
|
+
to authorize; it does not run embedding. It may be omitted when the model can be
|
|
208
|
+
resolved from the existing Workspace index, `ZVEC_GREP_EMBEDDING`, or the global
|
|
209
|
+
default, in that order.
|
|
210
|
+
|
|
211
|
+
## `zg --server`
|
|
212
|
+
|
|
213
|
+
```text
|
|
214
|
+
zg --server on [--listen 127.0.0.1:7999] [--token-file <path>] [--mcp-toolset agent|full]
|
|
215
|
+
zg --server off [--token-file <path>]
|
|
216
|
+
zg --server status [--check-ready]
|
|
217
|
+
zg --server run [--listen 127.0.0.1:7999] [--token-file <path>] [--mcp-toolset agent|full]
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
`on` starts the background daemon; `run` keeps it in the foreground. The server
|
|
221
|
+
only accepts loopback listen addresses. The default public endpoint is
|
|
222
|
+
`http://127.0.0.1:7999/mcp` with the `agent` toolset.
|
|
223
|
+
|
|
224
|
+
See [Server and execution modes](./06-server.md) for mode selection, lifecycle,
|
|
225
|
+
refresh, authentication, and logs. See [MCP](./03-mcp.md) for the tool contract.
|
|
226
|
+
|
|
227
|
+
## Environment variables
|
|
228
|
+
|
|
229
|
+
| Variable | Purpose |
|
|
230
|
+
| --- | --- |
|
|
231
|
+
| `ZVEC_GREP_HOME` | Override zvec-grep state directory |
|
|
232
|
+
| `ZVEC_GREP_MODE` | Default `direct`, `server`, or `auto` transport |
|
|
233
|
+
| `ZVEC_GREP_SERVER_URL` | Override the MCP server URL used by clients |
|
|
234
|
+
| `ZVEC_GREP_SERVER_TOKEN` | Server/client Bearer token |
|
|
235
|
+
| `ZVEC_GREP_SERVER_TOKEN_FILE` | File containing the server/client token |
|
|
236
|
+
| `ZVEC_GREP_MCP_TOOLSET` | Default `agent` or `full` MCP surface |
|
|
237
|
+
| `ZVEC_GREP_WATCHER_IDLE_TIMEOUT_SECONDS` | Seconds of workspace inactivity before the server releases its watcher; default `14400`, `0` disables idle eviction |
|
|
238
|
+
| `ZVEC_GREP_EMBEDDING` | Default model for new indexes |
|
|
239
|
+
| `ZVEC_GREP_API_KEY` | Embedding provider API key |
|
|
240
|
+
| `ZVEC_GREP_ENDPOINT` | Remote Embedding endpoint |
|
|
241
|
+
| `ZVEC_GREP_MODEL_CACHE` | Local model cache directory |
|
|
242
|
+
| `ZVEC_GREP_DEVICE` | Local model device |
|
|
243
|
+
| `DASHSCOPE_API_KEY` | Qwen API-key fallback after `ZVEC_GREP_API_KEY` |
|
|
244
|
+
| `QWEN_API_KEY` | Qwen API-key fallback after `DASHSCOPE_API_KEY` |
|
|
245
|
+
| `QWEN_HOME` | Qwen Code configuration directory used by `zg --install` |
|
|
246
|
+
| `QODER_CONFIG_DIR` | Qoder CLI configuration directory used by `zg --install` |
|
|
247
|
+
| `QODER_IDE_MCP_PATH` | Full Qoder IDE `mcp.json` path used by `zg --install` |
|
|
248
|
+
| `QODER_IDE_EXECUTABLE` | Qoder IDE executable used for automatic install-target detection |
|
|
249
|
+
|
|
250
|
+
Run `zg --help environment` for advanced variables, agent integration paths,
|
|
251
|
+
scope, and detailed precedence. A new index selects its model in this order:
|
|
252
|
+
explicit `--embedding`, `ZVEC_GREP_EMBEDDING`, the global default, then the
|
|
253
|
+
built-in local default. Existing indexes continue to use their stored model
|
|
254
|
+
unless `--embedding` and `--rebuild` explicitly change it.
|
|
255
|
+
|
|
256
|
+
Embedding runtime values such as endpoint and device retain this order: explicit
|
|
257
|
+
command option, Workspace snapshot, global configuration, then environment.
|
|
258
|
+
`zg --index` forwards its `ZVEC_GREP_EMBEDDING` value in server and auto modes;
|
|
259
|
+
direct MCP calls use the environment inherited when the daemon started.
|