@zvec/zvec-grep 0.2.1 → 0.3.0-rc.1
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 +87 -238
- package/bin/zg.exe +3 -0
- package/install.cjs +510 -0
- package/package.json +22 -72
- package/platforms.json +92 -0
- package/plugins.cjs +183 -0
- package/README_CN.md +0 -230
- package/dist/authorization/index.d.ts +0 -7
- package/dist/authorization/index.js +0 -7
- package/dist/authorization/index.js.map +0 -1
- package/dist/authorization/manager.d.ts +0 -8
- package/dist/authorization/manager.js +0 -19
- package/dist/authorization/manager.js.map +0 -1
- package/dist/authorization/operation.d.ts +0 -7
- package/dist/authorization/operation.js +0 -50
- package/dist/authorization/operation.js.map +0 -1
- package/dist/authorization/planner.d.ts +0 -21
- package/dist/authorization/planner.js +0 -97
- package/dist/authorization/planner.js.map +0 -1
- package/dist/authorization/prompt.d.ts +0 -12
- package/dist/authorization/prompt.js +0 -63
- package/dist/authorization/prompt.js.map +0 -1
- package/dist/authorization/store.d.ts +0 -20
- package/dist/authorization/store.js +0 -251
- package/dist/authorization/store.js.map +0 -1
- package/dist/authorization/target.d.ts +0 -15
- package/dist/authorization/target.js +0 -49
- package/dist/authorization/target.js.map +0 -1
- package/dist/authorization/types.d.ts +0 -61
- package/dist/authorization/types.js +0 -2
- package/dist/authorization/types.js.map +0 -1
- package/dist/cli/args.d.ts +0 -5
- package/dist/cli/args.js +0 -1207
- package/dist/cli/args.js.map +0 -1
- package/dist/cli/auth.d.ts +0 -21
- package/dist/cli/auth.js +0 -209
- package/dist/cli/auth.js.map +0 -1
- package/dist/cli/commands.d.ts +0 -4
- package/dist/cli/commands.js +0 -697
- package/dist/cli/commands.js.map +0 -1
- package/dist/cli/errors.d.ts +0 -6
- package/dist/cli/errors.js +0 -98
- package/dist/cli/errors.js.map +0 -1
- package/dist/cli/format/context.d.ts +0 -9
- package/dist/cli/format/context.js +0 -786
- package/dist/cli/format/context.js.map +0 -1
- package/dist/cli/format/debug.d.ts +0 -4
- package/dist/cli/format/debug.js +0 -60
- package/dist/cli/format/debug.js.map +0 -1
- package/dist/cli/format/highlight.d.ts +0 -3
- package/dist/cli/format/highlight.js +0 -106
- package/dist/cli/format/highlight.js.map +0 -1
- package/dist/cli/format/progress.d.ts +0 -13
- package/dist/cli/format/progress.js +0 -290
- package/dist/cli/format/progress.js.map +0 -1
- package/dist/cli/format/range.d.ts +0 -3
- package/dist/cli/format/range.js +0 -24
- package/dist/cli/format/range.js.map +0 -1
- package/dist/cli/format/status.d.ts +0 -81
- package/dist/cli/format/status.js +0 -512
- package/dist/cli/format/status.js.map +0 -1
- package/dist/cli/help.d.ts +0 -1
- package/dist/cli/help.js +0 -524
- package/dist/cli/help.js.map +0 -1
- package/dist/cli/index.d.ts +0 -2
- package/dist/cli/index.js +0 -32
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/install.d.ts +0 -4
- package/dist/cli/install.js +0 -1661
- package/dist/cli/install.js.map +0 -1
- package/dist/cli/managed-rg.d.ts +0 -10
- package/dist/cli/managed-rg.js +0 -329
- package/dist/cli/managed-rg.js.map +0 -1
- package/dist/cli/server-search.d.ts +0 -3
- package/dist/cli/server-search.js +0 -12
- package/dist/cli/server-search.js.map +0 -1
- package/dist/cli/types.d.ts +0 -87
- package/dist/cli/types.js +0 -10
- package/dist/cli/types.js.map +0 -1
- package/dist/cli/version.d.ts +0 -1
- package/dist/cli/version.js +0 -13
- package/dist/cli/version.js.map +0 -1
- package/dist/client/daemon-client.d.ts +0 -31
- package/dist/client/daemon-client.js +0 -203
- package/dist/client/daemon-client.js.map +0 -1
- package/dist/client/mode-router.d.ts +0 -9
- package/dist/client/mode-router.js +0 -28
- package/dist/client/mode-router.js.map +0 -1
- package/dist/client/search-policy.d.ts +0 -11
- package/dist/client/search-policy.js +0 -15
- package/dist/client/search-policy.js.map +0 -1
- package/dist/daemon/backend.d.ts +0 -78
- package/dist/daemon/backend.js +0 -1085
- package/dist/daemon/backend.js.map +0 -1
- package/dist/daemon/change-set.d.ts +0 -30
- package/dist/daemon/change-set.js +0 -163
- package/dist/daemon/change-set.js.map +0 -1
- package/dist/daemon/config.d.ts +0 -24
- package/dist/daemon/config.js +0 -88
- package/dist/daemon/config.js.map +0 -1
- package/dist/daemon/errors.d.ts +0 -5
- package/dist/daemon/errors.js +0 -11
- package/dist/daemon/errors.js.map +0 -1
- package/dist/daemon/http-server.d.ts +0 -30
- package/dist/daemon/http-server.js +0 -288
- package/dist/daemon/http-server.js.map +0 -1
- package/dist/daemon/index-coordinator.d.ts +0 -22
- package/dist/daemon/index-coordinator.js +0 -55
- package/dist/daemon/index-coordinator.js.map +0 -1
- package/dist/daemon/job-scheduler.d.ts +0 -70
- package/dist/daemon/job-scheduler.js +0 -366
- package/dist/daemon/job-scheduler.js.map +0 -1
- package/dist/daemon/logger.d.ts +0 -9
- package/dist/daemon/logger.js +0 -53
- package/dist/daemon/logger.js.map +0 -1
- package/dist/daemon/model-pool.d.ts +0 -45
- package/dist/daemon/model-pool.js +0 -187
- package/dist/daemon/model-pool.js.map +0 -1
- package/dist/daemon/root-lease.d.ts +0 -14
- package/dist/daemon/root-lease.js +0 -188
- package/dist/daemon/root-lease.js.map +0 -1
- package/dist/daemon/root-runtime.d.ts +0 -79
- package/dist/daemon/root-runtime.js +0 -337
- package/dist/daemon/root-runtime.js.map +0 -1
- package/dist/daemon/runtime-manager.d.ts +0 -46
- package/dist/daemon/runtime-manager.js +0 -246
- package/dist/daemon/runtime-manager.js.map +0 -1
- package/dist/daemon/runtime.d.ts +0 -12
- package/dist/daemon/runtime.js +0 -102
- package/dist/daemon/runtime.js.map +0 -1
- package/dist/daemon/server-controller.d.ts +0 -39
- package/dist/daemon/server-controller.js +0 -327
- package/dist/daemon/server-controller.js.map +0 -1
- package/dist/daemon/watch-manager.d.ts +0 -55
- package/dist/daemon/watch-manager.js +0 -340
- package/dist/daemon/watch-manager.js.map +0 -1
- package/dist/daemon/workspace-read-session-cache.d.ts +0 -31
- package/dist/daemon/workspace-read-session-cache.js +0 -115
- package/dist/daemon/workspace-read-session-cache.js.map +0 -1
- package/dist/engine/code-formats.d.ts +0 -3
- package/dist/engine/code-formats.js +0 -14
- package/dist/engine/code-formats.js.map +0 -1
- package/dist/engine/config.d.ts +0 -50
- package/dist/engine/config.js +0 -321
- package/dist/engine/config.js.map +0 -1
- package/dist/engine/errors.d.ts +0 -19
- package/dist/engine/errors.js +0 -40
- package/dist/engine/errors.js.map +0 -1
- package/dist/engine/extraction/code/adapter.d.ts +0 -19
- package/dist/engine/extraction/code/adapter.js +0 -24
- package/dist/engine/extraction/code/adapter.js.map +0 -1
- package/dist/engine/extraction/code/extractor.d.ts +0 -13
- package/dist/engine/extraction/code/extractor.js +0 -696
- package/dist/engine/extraction/code/extractor.js.map +0 -1
- package/dist/engine/extraction/code/families/c-family.d.ts +0 -2
- package/dist/engine/extraction/code/families/c-family.js +0 -122
- package/dist/engine/extraction/code/families/c-family.js.map +0 -1
- package/dist/engine/extraction/code/families/js-ts.d.ts +0 -12
- package/dist/engine/extraction/code/families/js-ts.js +0 -118
- package/dist/engine/extraction/code/families/js-ts.js.map +0 -1
- package/dist/engine/extraction/code/families/metadata.d.ts +0 -8
- package/dist/engine/extraction/code/families/metadata.js +0 -86
- package/dist/engine/extraction/code/families/metadata.js.map +0 -1
- package/dist/engine/extraction/code/families/name-field.d.ts +0 -3
- package/dist/engine/extraction/code/families/name-field.js +0 -22
- package/dist/engine/extraction/code/families/name-field.js.map +0 -1
- package/dist/engine/extraction/code/languages/c.d.ts +0 -1
- package/dist/engine/extraction/code/languages/c.js +0 -12
- package/dist/engine/extraction/code/languages/c.js.map +0 -1
- package/dist/engine/extraction/code/languages/cpp.d.ts +0 -1
- package/dist/engine/extraction/code/languages/cpp.js +0 -18
- package/dist/engine/extraction/code/languages/cpp.js.map +0 -1
- package/dist/engine/extraction/code/languages/go.d.ts +0 -2
- package/dist/engine/extraction/code/languages/go.js +0 -70
- package/dist/engine/extraction/code/languages/go.js.map +0 -1
- package/dist/engine/extraction/code/languages/java.d.ts +0 -1
- package/dist/engine/extraction/code/languages/java.js +0 -17
- package/dist/engine/extraction/code/languages/java.js.map +0 -1
- package/dist/engine/extraction/code/languages/javascript.d.ts +0 -2
- package/dist/engine/extraction/code/languages/javascript.js +0 -23
- package/dist/engine/extraction/code/languages/javascript.js.map +0 -1
- package/dist/engine/extraction/code/languages/python.d.ts +0 -2
- package/dist/engine/extraction/code/languages/python.js +0 -52
- package/dist/engine/extraction/code/languages/python.js.map +0 -1
- package/dist/engine/extraction/code/languages/rust.d.ts +0 -2
- package/dist/engine/extraction/code/languages/rust.js +0 -25
- package/dist/engine/extraction/code/languages/rust.js.map +0 -1
- package/dist/engine/extraction/code/languages/typescript.d.ts +0 -2
- package/dist/engine/extraction/code/languages/typescript.js +0 -37
- package/dist/engine/extraction/code/languages/typescript.js.map +0 -1
- package/dist/engine/extraction/code/tree-sitter/grammar.d.ts +0 -4
- package/dist/engine/extraction/code/tree-sitter/grammar.js +0 -49
- package/dist/engine/extraction/code/tree-sitter/grammar.js.map +0 -1
- package/dist/engine/extraction/code/tree-sitter/nodes.d.ts +0 -3
- package/dist/engine/extraction/code/tree-sitter/nodes.js +0 -27
- package/dist/engine/extraction/code/tree-sitter/nodes.js.map +0 -1
- package/dist/engine/extraction/code/tree-sitter/parser.d.ts +0 -2
- package/dist/engine/extraction/code/tree-sitter/parser.js +0 -31
- package/dist/engine/extraction/code/tree-sitter/parser.js.map +0 -1
- package/dist/engine/extraction/ids.d.ts +0 -1
- package/dist/engine/extraction/ids.js +0 -5
- package/dist/engine/extraction/ids.js.map +0 -1
- package/dist/engine/extraction/image/extractor.d.ts +0 -5
- package/dist/engine/extraction/image/extractor.js +0 -35
- package/dist/engine/extraction/image/extractor.js.map +0 -1
- package/dist/engine/extraction/index.d.ts +0 -4
- package/dist/engine/extraction/index.js +0 -3
- package/dist/engine/extraction/index.js.map +0 -1
- package/dist/engine/extraction/markdown/extractor.d.ts +0 -7
- package/dist/engine/extraction/markdown/extractor.js +0 -362
- package/dist/engine/extraction/markdown/extractor.js.map +0 -1
- package/dist/engine/extraction/runtime.d.ts +0 -9
- package/dist/engine/extraction/runtime.js +0 -37
- package/dist/engine/extraction/runtime.js.map +0 -1
- package/dist/engine/extraction/source.d.ts +0 -18
- package/dist/engine/extraction/source.js +0 -22
- package/dist/engine/extraction/source.js.map +0 -1
- package/dist/engine/extraction/text/extractor.d.ts +0 -7
- package/dist/engine/extraction/text/extractor.js +0 -168
- package/dist/engine/extraction/text/extractor.js.map +0 -1
- package/dist/engine/extraction/types.d.ts +0 -4
- package/dist/engine/extraction/types.js +0 -2
- package/dist/engine/extraction/types.js.map +0 -1
- package/dist/engine/extraction/vector-content.d.ts +0 -5
- package/dist/engine/extraction/vector-content.js +0 -83
- package/dist/engine/extraction/vector-content.js.map +0 -1
- package/dist/engine/file-size-policy.d.ts +0 -6
- package/dist/engine/file-size-policy.js +0 -20
- package/dist/engine/file-size-policy.js.map +0 -1
- package/dist/engine/file-type.d.ts +0 -15
- package/dist/engine/file-type.js +0 -152
- package/dist/engine/file-type.js.map +0 -1
- package/dist/engine/index-status.d.ts +0 -9
- package/dist/engine/index-status.js +0 -38
- package/dist/engine/index-status.js.map +0 -1
- package/dist/engine/manifest.d.ts +0 -13
- package/dist/engine/manifest.js +0 -124
- package/dist/engine/manifest.js.map +0 -1
- package/dist/engine/models/backends/llama-cpp.d.ts +0 -99
- package/dist/engine/models/backends/llama-cpp.js +0 -511
- package/dist/engine/models/backends/llama-cpp.js.map +0 -1
- package/dist/engine/models/backends/model2vec-runtime.d.ts +0 -63
- package/dist/engine/models/backends/model2vec-runtime.js +0 -112
- package/dist/engine/models/backends/model2vec-runtime.js.map +0 -1
- package/dist/engine/models/backends/model2vec-tokenizer.d.ts +0 -2
- package/dist/engine/models/backends/model2vec-tokenizer.js +0 -42
- package/dist/engine/models/backends/model2vec-tokenizer.js.map +0 -1
- package/dist/engine/models/backends/model2vec-worker-pool.d.ts +0 -25
- package/dist/engine/models/backends/model2vec-worker-pool.js +0 -264
- package/dist/engine/models/backends/model2vec-worker-pool.js.map +0 -1
- package/dist/engine/models/backends/model2vec-worker.d.ts +0 -1
- package/dist/engine/models/backends/model2vec-worker.js +0 -41
- package/dist/engine/models/backends/model2vec-worker.js.map +0 -1
- package/dist/engine/models/backends/model2vec.d.ts +0 -40
- package/dist/engine/models/backends/model2vec.js +0 -311
- package/dist/engine/models/backends/model2vec.js.map +0 -1
- package/dist/engine/models/backends/qwen.d.ts +0 -44
- package/dist/engine/models/backends/qwen.js +0 -411
- package/dist/engine/models/backends/qwen.js.map +0 -1
- package/dist/engine/models/backends/transformers-js.d.ts +0 -87
- package/dist/engine/models/backends/transformers-js.js +0 -316
- package/dist/engine/models/backends/transformers-js.js.map +0 -1
- package/dist/engine/models/catalog.d.ts +0 -231
- package/dist/engine/models/catalog.js +0 -218
- package/dist/engine/models/catalog.js.map +0 -1
- package/dist/engine/models/download-progress.d.ts +0 -15
- package/dist/engine/models/download-progress.js +0 -48
- package/dist/engine/models/download-progress.js.map +0 -1
- package/dist/engine/models/embeddings.d.ts +0 -67
- package/dist/engine/models/embeddings.js +0 -125
- package/dist/engine/models/embeddings.js.map +0 -1
- package/dist/engine/models/factory.d.ts +0 -2
- package/dist/engine/models/factory.js +0 -51
- package/dist/engine/models/factory.js.map +0 -1
- package/dist/engine/models/index.d.ts +0 -4
- package/dist/engine/models/index.js +0 -5
- package/dist/engine/models/index.js.map +0 -1
- package/dist/engine/models/ranking.d.ts +0 -19
- package/dist/engine/models/ranking.js +0 -2
- package/dist/engine/models/ranking.js.map +0 -1
- package/dist/engine/models/resolution.d.ts +0 -8
- package/dist/engine/models/resolution.js +0 -22
- package/dist/engine/models/resolution.js.map +0 -1
- package/dist/engine/pipeline/indexing/index.d.ts +0 -14
- package/dist/engine/pipeline/indexing/index.js +0 -1061
- package/dist/engine/pipeline/indexing/index.js.map +0 -1
- package/dist/engine/pipeline/indexing/input-budget.d.ts +0 -2
- package/dist/engine/pipeline/indexing/input-budget.js +0 -51
- package/dist/engine/pipeline/indexing/input-budget.js.map +0 -1
- package/dist/engine/pipeline/indexing/root-paths.d.ts +0 -7
- package/dist/engine/pipeline/indexing/root-paths.js +0 -148
- package/dist/engine/pipeline/indexing/root-paths.js.map +0 -1
- package/dist/engine/pipeline/indexing/scanner/index.d.ts +0 -14
- package/dist/engine/pipeline/indexing/scanner/index.js +0 -776
- package/dist/engine/pipeline/indexing/scanner/index.js.map +0 -1
- package/dist/engine/pipeline/search/index.d.ts +0 -12
- package/dist/engine/pipeline/search/index.js +0 -811
- package/dist/engine/pipeline/search/index.js.map +0 -1
- package/dist/engine/service/index.d.ts +0 -3
- package/dist/engine/service/index.js +0 -2
- package/dist/engine/service/index.js.map +0 -1
- package/dist/engine/service/lexical.d.ts +0 -28
- package/dist/engine/service/lexical.js +0 -446
- package/dist/engine/service/lexical.js.map +0 -1
- package/dist/engine/service/root.d.ts +0 -15
- package/dist/engine/service/root.js +0 -57
- package/dist/engine/service/root.js.map +0 -1
- package/dist/engine/service/structure-enrichment.d.ts +0 -8
- package/dist/engine/service/structure-enrichment.js +0 -178
- package/dist/engine/service/structure-enrichment.js.map +0 -1
- package/dist/engine/service/types.d.ts +0 -210
- package/dist/engine/service/types.js +0 -2
- package/dist/engine/service/types.js.map +0 -1
- package/dist/engine/service/workspace-index.d.ts +0 -26
- package/dist/engine/service/workspace-index.js +0 -157
- package/dist/engine/service/workspace-index.js.map +0 -1
- package/dist/engine/service/zvec-grep.d.ts +0 -13
- package/dist/engine/service/zvec-grep.js +0 -1393
- package/dist/engine/service/zvec-grep.js.map +0 -1
- package/dist/engine/storage/index.d.ts +0 -53
- package/dist/engine/storage/index.js +0 -3
- package/dist/engine/storage/index.js.map +0 -1
- package/dist/engine/storage/layout.d.ts +0 -10
- package/dist/engine/storage/layout.js +0 -29
- package/dist/engine/storage/layout.js.map +0 -1
- package/dist/engine/storage/zvec.d.ts +0 -4
- package/dist/engine/storage/zvec.js +0 -976
- package/dist/engine/storage/zvec.js.map +0 -1
- package/dist/engine/types.d.ts +0 -303
- package/dist/engine/types.js +0 -14
- package/dist/engine/types.js.map +0 -1
- package/dist/engine/utils/daemon-lease.d.ts +0 -17
- package/dist/engine/utils/daemon-lease.js +0 -175
- package/dist/engine/utils/daemon-lease.js.map +0 -1
- package/dist/engine/utils/file-selection.d.ts +0 -10
- package/dist/engine/utils/file-selection.js +0 -157
- package/dist/engine/utils/file-selection.js.map +0 -1
- package/dist/engine/utils/glob.d.ts +0 -9
- package/dist/engine/utils/glob.js +0 -208
- package/dist/engine/utils/glob.js.map +0 -1
- package/dist/engine/utils/hash.d.ts +0 -2
- package/dist/engine/utils/hash.js +0 -8
- package/dist/engine/utils/hash.js.map +0 -1
- package/dist/engine/utils/json.d.ts +0 -8
- package/dist/engine/utils/json.js +0 -83
- package/dist/engine/utils/json.js.map +0 -1
- package/dist/engine/utils/lock.d.ts +0 -19
- package/dist/engine/utils/lock.js +0 -254
- package/dist/engine/utils/lock.js.map +0 -1
- package/dist/engine/utils/path.d.ts +0 -4
- package/dist/engine/utils/path.js +0 -18
- package/dist/engine/utils/path.js.map +0 -1
- package/dist/engine/utils/timing.d.ts +0 -19
- package/dist/engine/utils/timing.js +0 -87
- package/dist/engine/utils/timing.js.map +0 -1
- package/dist/index-progress.d.ts +0 -10
- package/dist/index-progress.js +0 -159
- package/dist/index-progress.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.js +0 -4
- package/dist/index.js.map +0 -1
- package/dist/mcp/http-transport.d.ts +0 -27
- package/dist/mcp/http-transport.js +0 -182
- package/dist/mcp/http-transport.js.map +0 -1
- package/dist/mcp/input-normalization.d.ts +0 -38
- package/dist/mcp/input-normalization.js +0 -104
- package/dist/mcp/input-normalization.js.map +0 -1
- package/dist/mcp/progress-heartbeat.d.ts +0 -17
- package/dist/mcp/progress-heartbeat.js +0 -46
- package/dist/mcp/progress-heartbeat.js.map +0 -1
- package/dist/mcp/request-metadata.d.ts +0 -2
- package/dist/mcp/request-metadata.js +0 -11
- package/dist/mcp/request-metadata.js.map +0 -1
- package/dist/mcp/request-state.d.ts +0 -40
- package/dist/mcp/request-state.js +0 -210
- package/dist/mcp/request-state.js.map +0 -1
- package/dist/mcp/result-format.d.ts +0 -13
- package/dist/mcp/result-format.js +0 -75
- package/dist/mcp/result-format.js.map +0 -1
- package/dist/mcp/schemas.d.ts +0 -664
- package/dist/mcp/schemas.js +0 -510
- package/dist/mcp/schemas.js.map +0 -1
- package/dist/mcp/stdio-bridge.d.ts +0 -14
- package/dist/mcp/stdio-bridge.js +0 -178
- package/dist/mcp/stdio-bridge.js.map +0 -1
- package/dist/mcp/tools.d.ts +0 -153
- package/dist/mcp/tools.js +0 -482
- package/dist/mcp/tools.js.map +0 -1
- package/dist/mcp/toolset.d.ts +0 -5
- package/dist/mcp/toolset.js +0 -12
- package/dist/mcp/toolset.js.map +0 -1
- package/dist/observability/trace-context.d.ts +0 -11
- package/dist/observability/trace-context.js +0 -138
- package/dist/observability/trace-context.js.map +0 -1
- package/dist/prompts/zvec-grep-guidance.d.ts +0 -2
- package/dist/prompts/zvec-grep-guidance.js +0 -9
- package/dist/prompts/zvec-grep-guidance.js.map +0 -1
- package/docs/01-agents.md +0 -209
- package/docs/02-cli.md +0 -246
- package/docs/03-mcp.md +0 -185
- package/docs/04-pipeline.md +0 -226
- package/docs/05-architecture.md +0 -86
- package/docs/06-server.md +0 -220
- package/docs/07-embedding.md +0 -203
- package/docs/08-roadmap.md +0 -85
- package/docs/README.md +0 -53
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { createRemoteEmbeddingTarget } from "./target.js";
|
|
2
|
-
import { RemoteEmbeddingAuthorizationStore } from "./store.js";
|
|
3
|
-
export async function planRemoteIndexAuthorization(input) {
|
|
4
|
-
if (input.model.provider !== "qwen")
|
|
5
|
-
return undefined;
|
|
6
|
-
const needsEmbedding = input.rebuild === true ||
|
|
7
|
-
input.needsUpdate === true ||
|
|
8
|
-
!input.info.indexed ||
|
|
9
|
-
!indexStatusIsFresh(input.info);
|
|
10
|
-
if (!needsEmbedding)
|
|
11
|
-
return undefined;
|
|
12
|
-
const endpoint = input.model.endpoint;
|
|
13
|
-
if (endpoint === undefined) {
|
|
14
|
-
throw new Error(`Embedding model ${input.model.reference} did not provide a remote endpoint.`);
|
|
15
|
-
}
|
|
16
|
-
const target = await createRemoteEmbeddingTarget({
|
|
17
|
-
roots: workspaceRoots(input.info),
|
|
18
|
-
provider: input.model.provider,
|
|
19
|
-
model: input.model.name,
|
|
20
|
-
endpoint,
|
|
21
|
-
});
|
|
22
|
-
const store = input.store ?? new RemoteEmbeddingAuthorizationStore();
|
|
23
|
-
return {
|
|
24
|
-
operation: "index",
|
|
25
|
-
target,
|
|
26
|
-
disclosure: {
|
|
27
|
-
queryText: false,
|
|
28
|
-
workspaceContent: !input.info.indexed || input.rebuild ? "full" : "changed",
|
|
29
|
-
},
|
|
30
|
-
reason: input.rebuild
|
|
31
|
-
? "index_rebuild"
|
|
32
|
-
: input.info.indexed
|
|
33
|
-
? "index_update"
|
|
34
|
-
: "index_create",
|
|
35
|
-
grantPath: store.grantPath(target),
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
export async function planRemoteSearchAuthorization(input) {
|
|
39
|
-
const schema = input.info.workspaceIndex?.embedding;
|
|
40
|
-
if (!input.info.indexed || !schema || schema.provider !== "qwen") {
|
|
41
|
-
return undefined;
|
|
42
|
-
}
|
|
43
|
-
if (input.model.provider !== schema.provider ||
|
|
44
|
-
input.model.name !== schema.model) {
|
|
45
|
-
throw new Error(`Embedding model ${input.model.reference} does not match indexed model ${schema.provider}/${schema.model}.`);
|
|
46
|
-
}
|
|
47
|
-
const usesVector = searchUsesVector(input.search);
|
|
48
|
-
const needsUpdate = input.runtimeNeedsReconciliation === true ||
|
|
49
|
-
!indexStatusIsFresh(input.info);
|
|
50
|
-
const updatesIndex = needsUpdate &&
|
|
51
|
-
(input.search.autoUpdate || input.search.freshness === "wait_for_fresh");
|
|
52
|
-
if (!usesVector && !updatesIndex)
|
|
53
|
-
return undefined;
|
|
54
|
-
const endpoint = input.model.endpoint;
|
|
55
|
-
if (endpoint === undefined) {
|
|
56
|
-
throw new Error(`Embedding model ${input.model.reference} did not provide a remote endpoint.`);
|
|
57
|
-
}
|
|
58
|
-
const target = await createRemoteEmbeddingTarget({
|
|
59
|
-
roots: workspaceRoots(input.info),
|
|
60
|
-
provider: input.model.provider,
|
|
61
|
-
model: input.model.name,
|
|
62
|
-
endpoint,
|
|
63
|
-
});
|
|
64
|
-
const store = input.store ?? new RemoteEmbeddingAuthorizationStore();
|
|
65
|
-
return {
|
|
66
|
-
operation: usesVector
|
|
67
|
-
? updatesIndex
|
|
68
|
-
? "query_and_index"
|
|
69
|
-
: "query"
|
|
70
|
-
: "index",
|
|
71
|
-
target,
|
|
72
|
-
disclosure: {
|
|
73
|
-
queryText: usesVector,
|
|
74
|
-
workspaceContent: updatesIndex ? "changed" : "none",
|
|
75
|
-
},
|
|
76
|
-
reason: "query",
|
|
77
|
-
grantPath: store.grantPath(target),
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
export function searchUsesVector(input) {
|
|
81
|
-
return ((input.queries?.length ?? 0) > 0 ||
|
|
82
|
-
input.routes.some((route) => route.mode === "vector"));
|
|
83
|
-
}
|
|
84
|
-
export function indexStatusIsFresh(info) {
|
|
85
|
-
const status = info.status;
|
|
86
|
-
return Boolean(status &&
|
|
87
|
-
status.filesAdded === 0 &&
|
|
88
|
-
status.filesModified === 0 &&
|
|
89
|
-
status.filesDeleted === 0 &&
|
|
90
|
-
status.filesPending === 0 &&
|
|
91
|
-
status.filesFailed === 0);
|
|
92
|
-
}
|
|
93
|
-
function workspaceRoots(info) {
|
|
94
|
-
const roots = info.workspaceIndex?.rootPaths.map((root) => root.absolutePath) ?? [];
|
|
95
|
-
return roots.length > 0 ? roots : [info.root];
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=planner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../../src/authorization/planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { RemoteEmbeddingDataDisclosure } from "./types.js";
|
|
2
|
-
export type RemoteEmbeddingAuthorizationPromptInput = {
|
|
3
|
-
workspaceRoots: readonly string[];
|
|
4
|
-
provider: string;
|
|
5
|
-
model: string;
|
|
6
|
-
endpoint?: string;
|
|
7
|
-
data: readonly string[];
|
|
8
|
-
note?: string;
|
|
9
|
-
};
|
|
10
|
-
export declare const REMOTE_EMBEDDING_ELICITATION_UNSUPPORTED_MESSAGE = "The connected MCP host does not support the Remote Embedding authorization interaction required by elicitation/create. The agent should use the current host's built-in user-question tool; for Qoder, the exact name is ask_user_question in Qoder IDE or AskUserQuestion in Qoder CLI/SDK. Ask the user to choose: allow Remote Embedding for this workspace, use local FTS only, or cancel. No user decision was received, and no remote data was sent.";
|
|
11
|
-
export declare function remoteEmbeddingDisclosureData(disclosure: RemoteEmbeddingDataDisclosure): string[];
|
|
12
|
-
export declare function formatRemoteEmbeddingAuthorizationPrompt(input: RemoteEmbeddingAuthorizationPromptInput): string;
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { basename } from "node:path";
|
|
2
|
-
export const REMOTE_EMBEDDING_ELICITATION_UNSUPPORTED_MESSAGE = "The connected MCP host does not support the Remote Embedding authorization interaction required by elicitation/create. The agent should use the current host's built-in user-question tool; for Qoder, the exact name is ask_user_question in Qoder IDE or AskUserQuestion in Qoder CLI/SDK. Ask the user to choose: allow Remote Embedding for this workspace, use local FTS only, or cancel. No user decision was received, and no remote data was sent.";
|
|
3
|
-
export function remoteEmbeddingDisclosureData(disclosure) {
|
|
4
|
-
return [
|
|
5
|
-
...(disclosure.queryText ? ["query text"] : []),
|
|
6
|
-
...(disclosure.workspaceContent === "selected"
|
|
7
|
-
? ["selected workspace files"]
|
|
8
|
-
: disclosure.workspaceContent === "changed"
|
|
9
|
-
? ["changed workspace files"]
|
|
10
|
-
: disclosure.workspaceContent === "full"
|
|
11
|
-
? ["selected workspace files"]
|
|
12
|
-
: []),
|
|
13
|
-
];
|
|
14
|
-
}
|
|
15
|
-
export function formatRemoteEmbeddingAuthorizationPrompt(input) {
|
|
16
|
-
const data = naturalList(input.data.length > 0 ? input.data : ["data required by this operation"]);
|
|
17
|
-
const lines = [
|
|
18
|
-
"Remote Embedding authorization",
|
|
19
|
-
"",
|
|
20
|
-
`Send ${data}?`,
|
|
21
|
-
"",
|
|
22
|
-
` From ${workspaceLabel(input.workspaceRoots)}`,
|
|
23
|
-
` To ${clip(`${input.provider}/${input.model}`, 72)}`,
|
|
24
|
-
];
|
|
25
|
-
const host = endpointHost(input.endpoint);
|
|
26
|
-
if (host)
|
|
27
|
-
lines.push(` ${clip(host, 72)}`);
|
|
28
|
-
if (input.note)
|
|
29
|
-
lines.push("", input.note);
|
|
30
|
-
lines.push("", "API charges may apply.");
|
|
31
|
-
return lines.join("\n");
|
|
32
|
-
}
|
|
33
|
-
function workspaceLabel(roots) {
|
|
34
|
-
const names = roots.map((root) => clip(basename(root) || root || "workspace", 32));
|
|
35
|
-
if (names.length === 0)
|
|
36
|
-
return "workspace";
|
|
37
|
-
if (names.length <= 2)
|
|
38
|
-
return names.join(", ");
|
|
39
|
-
return `${names.slice(0, 2).join(", ")} +${names.length - 2}`;
|
|
40
|
-
}
|
|
41
|
-
function endpointHost(endpoint) {
|
|
42
|
-
if (!endpoint)
|
|
43
|
-
return undefined;
|
|
44
|
-
try {
|
|
45
|
-
return new URL(endpoint).host;
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
return endpoint.replace(/^https?:\/\//, "").split("/")[0] || undefined;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
function naturalList(items) {
|
|
52
|
-
if (items.length <= 1)
|
|
53
|
-
return items[0] ?? "data";
|
|
54
|
-
if (items.length === 2)
|
|
55
|
-
return `${items[0]} and ${items[1]}`;
|
|
56
|
-
return `${items.slice(0, -1).join(", ")}, and ${items.at(-1)}`;
|
|
57
|
-
}
|
|
58
|
-
function clip(value, maxLength) {
|
|
59
|
-
if (value.length <= maxLength)
|
|
60
|
-
return value;
|
|
61
|
-
return `${value.slice(0, Math.max(1, maxLength - 1))}…`;
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=prompt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/authorization/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { type RemoteEmbeddingAuthorizationStatus, type RemoteEmbeddingTarget, type RemoteEmbeddingWorkspaceGrant } from "./types.js";
|
|
2
|
-
export type RemoteEmbeddingAuthorizationStoreOptions = {
|
|
3
|
-
signingKeyPath?: string;
|
|
4
|
-
};
|
|
5
|
-
export declare class RemoteEmbeddingAuthorizationStore {
|
|
6
|
-
private readonly signingKeyPath;
|
|
7
|
-
constructor(options?: RemoteEmbeddingAuthorizationStoreOptions);
|
|
8
|
-
grantPath(target: Pick<RemoteEmbeddingTarget, "workspaceRoots">): string;
|
|
9
|
-
hasGrant(target: RemoteEmbeddingTarget): Promise<boolean>;
|
|
10
|
-
grant(target: RemoteEmbeddingTarget): Promise<RemoteEmbeddingWorkspaceGrant>;
|
|
11
|
-
revoke(target: RemoteEmbeddingTarget): Promise<boolean>;
|
|
12
|
-
revokeAll(root: string): Promise<number>;
|
|
13
|
-
status(root: string): Promise<RemoteEmbeddingAuthorizationStatus>;
|
|
14
|
-
private readDocument;
|
|
15
|
-
private writeDocument;
|
|
16
|
-
private withDocumentWrite;
|
|
17
|
-
private verifyGrant;
|
|
18
|
-
private readSigningKey;
|
|
19
|
-
private getOrCreateSigningKey;
|
|
20
|
-
}
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
import { createHmac, randomBytes, randomUUID, timingSafeEqual, } from "node:crypto";
|
|
2
|
-
import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
3
|
-
import { homedir } from "node:os";
|
|
4
|
-
import { dirname, join, resolve } from "node:path";
|
|
5
|
-
import { readJsonFile, writeJsonFile } from "../engine/utils/json.js";
|
|
6
|
-
import { acquireReadWriteLock } from "../engine/utils/lock.js";
|
|
7
|
-
import { REMOTE_EMBEDDING_CAPABILITY, } from "./types.js";
|
|
8
|
-
const DOCUMENT_VERSION = 1;
|
|
9
|
-
const GRANT_FILE = "authorization.json";
|
|
10
|
-
export class RemoteEmbeddingAuthorizationStore {
|
|
11
|
-
signingKeyPath;
|
|
12
|
-
constructor(options = {}) {
|
|
13
|
-
this.signingKeyPath = resolve(options.signingKeyPath ??
|
|
14
|
-
process.env.ZVEC_GREP_AUTHORIZATION_KEY_FILE ??
|
|
15
|
-
join(homedir(), ".zvec-grep", "authorization-signing.key"));
|
|
16
|
-
}
|
|
17
|
-
grantPath(target) {
|
|
18
|
-
const root = target.workspaceRoots[0];
|
|
19
|
-
if (!root) {
|
|
20
|
-
throw new Error("Remote Embedding target has no workspace roots.");
|
|
21
|
-
}
|
|
22
|
-
return join(root, ".zvec-grep", GRANT_FILE);
|
|
23
|
-
}
|
|
24
|
-
async hasGrant(target) {
|
|
25
|
-
const key = await this.readSigningKey();
|
|
26
|
-
if (!key)
|
|
27
|
-
return false;
|
|
28
|
-
const document = await this.readDocument(this.grantPath(target));
|
|
29
|
-
return document.grants.some((grant) => grant.targetFingerprint === target.targetFingerprint &&
|
|
30
|
-
this.verifyGrant(grant, key));
|
|
31
|
-
}
|
|
32
|
-
async grant(target) {
|
|
33
|
-
const key = await this.getOrCreateSigningKey();
|
|
34
|
-
const unsigned = {
|
|
35
|
-
version: DOCUMENT_VERSION,
|
|
36
|
-
id: randomUUID(),
|
|
37
|
-
capability: REMOTE_EMBEDDING_CAPABILITY,
|
|
38
|
-
scope: "workspace",
|
|
39
|
-
workspaceRoots: [...target.workspaceRoots],
|
|
40
|
-
workspaceFingerprint: target.workspaceFingerprint,
|
|
41
|
-
provider: target.provider,
|
|
42
|
-
model: target.model,
|
|
43
|
-
endpoint: target.endpoint,
|
|
44
|
-
targetFingerprint: target.targetFingerprint,
|
|
45
|
-
grantedAt: Date.now(),
|
|
46
|
-
};
|
|
47
|
-
const grant = {
|
|
48
|
-
...unsigned,
|
|
49
|
-
signature: sign(unsigned, key),
|
|
50
|
-
};
|
|
51
|
-
for (const root of target.workspaceRoots) {
|
|
52
|
-
const path = join(root, ".zvec-grep", GRANT_FILE);
|
|
53
|
-
await this.withDocumentWrite(path, async (document) => {
|
|
54
|
-
const next = {
|
|
55
|
-
version: DOCUMENT_VERSION,
|
|
56
|
-
grants: [
|
|
57
|
-
...document.grants.filter((candidate) => candidate.targetFingerprint !== target.targetFingerprint),
|
|
58
|
-
grant,
|
|
59
|
-
],
|
|
60
|
-
};
|
|
61
|
-
await this.writeDocument(path, next);
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
return grant;
|
|
65
|
-
}
|
|
66
|
-
async revoke(target) {
|
|
67
|
-
let revoked = false;
|
|
68
|
-
for (const root of target.workspaceRoots) {
|
|
69
|
-
const path = join(root, ".zvec-grep", GRANT_FILE);
|
|
70
|
-
await this.withDocumentWrite(path, async (document) => {
|
|
71
|
-
const grants = document.grants.filter((grant) => grant.targetFingerprint !== target.targetFingerprint);
|
|
72
|
-
if (grants.length === document.grants.length)
|
|
73
|
-
return;
|
|
74
|
-
revoked = true;
|
|
75
|
-
await this.writeDocument(path, {
|
|
76
|
-
version: DOCUMENT_VERSION,
|
|
77
|
-
grants,
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
return revoked;
|
|
82
|
-
}
|
|
83
|
-
async revokeAll(root) {
|
|
84
|
-
const path = join(resolve(root), ".zvec-grep", GRANT_FILE);
|
|
85
|
-
let revoked = 0;
|
|
86
|
-
let validGrants = [];
|
|
87
|
-
const key = await this.readSigningKey();
|
|
88
|
-
await this.withDocumentWrite(path, async (document) => {
|
|
89
|
-
revoked = document.grants.length;
|
|
90
|
-
if (revoked === 0)
|
|
91
|
-
return;
|
|
92
|
-
validGrants = key
|
|
93
|
-
? document.grants.filter((grant) => this.verifyGrant(grant, key))
|
|
94
|
-
: [];
|
|
95
|
-
await this.writeDocument(path, {
|
|
96
|
-
version: DOCUMENT_VERSION,
|
|
97
|
-
grants: [],
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
const fingerprintsByPath = new Map();
|
|
101
|
-
for (const grant of validGrants) {
|
|
102
|
-
for (const workspaceRoot of grant.workspaceRoots) {
|
|
103
|
-
const grantPath = join(workspaceRoot, ".zvec-grep", GRANT_FILE);
|
|
104
|
-
if (resolve(grantPath) === resolve(path))
|
|
105
|
-
continue;
|
|
106
|
-
const fingerprints = fingerprintsByPath.get(grantPath) ?? new Set();
|
|
107
|
-
fingerprints.add(grant.targetFingerprint);
|
|
108
|
-
fingerprintsByPath.set(grantPath, fingerprints);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
for (const [grantPath, fingerprints] of fingerprintsByPath) {
|
|
112
|
-
await this.withDocumentWrite(grantPath, async (document) => {
|
|
113
|
-
const grants = document.grants.filter((grant) => !fingerprints.has(grant.targetFingerprint));
|
|
114
|
-
if (grants.length === document.grants.length)
|
|
115
|
-
return;
|
|
116
|
-
await this.writeDocument(grantPath, {
|
|
117
|
-
version: DOCUMENT_VERSION,
|
|
118
|
-
grants,
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
return revoked;
|
|
123
|
-
}
|
|
124
|
-
async status(root) {
|
|
125
|
-
const path = join(resolve(root), ".zvec-grep", GRANT_FILE);
|
|
126
|
-
const document = await this.readDocument(path);
|
|
127
|
-
const key = await this.readSigningKey();
|
|
128
|
-
return {
|
|
129
|
-
path,
|
|
130
|
-
grants: document.grants.map(({ signature, ...grant }) => ({
|
|
131
|
-
...grant,
|
|
132
|
-
valid: key ? this.verifyGrant({ ...grant, signature }, key) : false,
|
|
133
|
-
})),
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
async readDocument(path) {
|
|
137
|
-
const value = await readJsonFile(path, {
|
|
138
|
-
version: DOCUMENT_VERSION,
|
|
139
|
-
grants: [],
|
|
140
|
-
});
|
|
141
|
-
if (!isAuthorizationDocument(value)) {
|
|
142
|
-
return { version: DOCUMENT_VERSION, grants: [] };
|
|
143
|
-
}
|
|
144
|
-
return value;
|
|
145
|
-
}
|
|
146
|
-
async writeDocument(path, document) {
|
|
147
|
-
await writeJsonFile(path, document, {
|
|
148
|
-
directoryMode: 0o700,
|
|
149
|
-
fileMode: 0o600,
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
async withDocumentWrite(path, operation) {
|
|
153
|
-
const lock = acquireReadWriteLock(join(dirname(path), "authorization-store"), "write", { operation: "remote-embedding-authorization" });
|
|
154
|
-
try {
|
|
155
|
-
return await operation(await this.readDocument(path));
|
|
156
|
-
}
|
|
157
|
-
finally {
|
|
158
|
-
lock.release();
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
verifyGrant(grant, key) {
|
|
162
|
-
const { signature, ...unsigned } = grant;
|
|
163
|
-
const expected = sign(unsigned, key);
|
|
164
|
-
const actualBytes = Buffer.from(signature, "hex");
|
|
165
|
-
const expectedBytes = Buffer.from(expected, "hex");
|
|
166
|
-
return (actualBytes.length === expectedBytes.length &&
|
|
167
|
-
timingSafeEqual(actualBytes, expectedBytes));
|
|
168
|
-
}
|
|
169
|
-
async readSigningKey() {
|
|
170
|
-
try {
|
|
171
|
-
const value = (await readFile(this.signingKeyPath, "utf8")).trim();
|
|
172
|
-
return value ? Buffer.from(value, "hex") : undefined;
|
|
173
|
-
}
|
|
174
|
-
catch (error) {
|
|
175
|
-
if (error.code === "ENOENT")
|
|
176
|
-
return undefined;
|
|
177
|
-
throw error;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
async getOrCreateSigningKey() {
|
|
181
|
-
const existing = await this.readSigningKey();
|
|
182
|
-
if (existing)
|
|
183
|
-
return existing;
|
|
184
|
-
await mkdir(dirname(this.signingKeyPath), { recursive: true, mode: 0o700 });
|
|
185
|
-
await chmod(dirname(this.signingKeyPath), 0o700);
|
|
186
|
-
const key = randomBytes(32);
|
|
187
|
-
try {
|
|
188
|
-
await writeFile(this.signingKeyPath, key.toString("hex"), {
|
|
189
|
-
encoding: "utf8",
|
|
190
|
-
mode: 0o600,
|
|
191
|
-
flag: "wx",
|
|
192
|
-
});
|
|
193
|
-
return key;
|
|
194
|
-
}
|
|
195
|
-
catch (error) {
|
|
196
|
-
if (error.code !== "EEXIST")
|
|
197
|
-
throw error;
|
|
198
|
-
const concurrent = await this.readSigningKey();
|
|
199
|
-
if (!concurrent)
|
|
200
|
-
throw error;
|
|
201
|
-
return concurrent;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
function sign(value, key) {
|
|
206
|
-
return createHmac("sha256", key).update(stableStringify(value)).digest("hex");
|
|
207
|
-
}
|
|
208
|
-
function stableStringify(value) {
|
|
209
|
-
if (Array.isArray(value)) {
|
|
210
|
-
return `[${value.map(stableStringify).join(",")}]`;
|
|
211
|
-
}
|
|
212
|
-
if (value && typeof value === "object") {
|
|
213
|
-
const record = value;
|
|
214
|
-
return `{${Object.keys(record)
|
|
215
|
-
.sort()
|
|
216
|
-
.map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`)
|
|
217
|
-
.join(",")}}`;
|
|
218
|
-
}
|
|
219
|
-
return JSON.stringify(value);
|
|
220
|
-
}
|
|
221
|
-
function isAuthorizationDocument(value) {
|
|
222
|
-
if (!value || typeof value !== "object")
|
|
223
|
-
return false;
|
|
224
|
-
const document = value;
|
|
225
|
-
if (document.version !== DOCUMENT_VERSION ||
|
|
226
|
-
!Array.isArray(document.grants)) {
|
|
227
|
-
return false;
|
|
228
|
-
}
|
|
229
|
-
return document.grants.every(isWorkspaceGrant);
|
|
230
|
-
}
|
|
231
|
-
function isWorkspaceGrant(value) {
|
|
232
|
-
if (!value || typeof value !== "object")
|
|
233
|
-
return false;
|
|
234
|
-
const grant = value;
|
|
235
|
-
return (grant.version === DOCUMENT_VERSION &&
|
|
236
|
-
grant.capability === REMOTE_EMBEDDING_CAPABILITY &&
|
|
237
|
-
grant.scope === "workspace" &&
|
|
238
|
-
Array.isArray(grant.workspaceRoots) &&
|
|
239
|
-
grant.workspaceRoots.every((root) => typeof root === "string") &&
|
|
240
|
-
[
|
|
241
|
-
"id",
|
|
242
|
-
"workspaceFingerprint",
|
|
243
|
-
"provider",
|
|
244
|
-
"model",
|
|
245
|
-
"endpoint",
|
|
246
|
-
"targetFingerprint",
|
|
247
|
-
"signature",
|
|
248
|
-
].every((key) => typeof grant[key] === "string") &&
|
|
249
|
-
typeof grant.grantedAt === "number");
|
|
250
|
-
}
|
|
251
|
-
//# sourceMappingURL=store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/authorization/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { RemoteEmbeddingTarget } from "./types.js";
|
|
2
|
-
export declare function canonicalizeWorkspaceRoots(roots: readonly string[]): Promise<string[]>;
|
|
3
|
-
export declare function workspaceFingerprint(roots: readonly string[]): string;
|
|
4
|
-
export declare function remoteEmbeddingTargetFingerprint(input: {
|
|
5
|
-
workspaceFingerprint: string;
|
|
6
|
-
provider: string;
|
|
7
|
-
model: string;
|
|
8
|
-
endpoint: string;
|
|
9
|
-
}): string;
|
|
10
|
-
export declare function createRemoteEmbeddingTarget(input: {
|
|
11
|
-
roots: readonly string[];
|
|
12
|
-
provider: string;
|
|
13
|
-
model: string;
|
|
14
|
-
endpoint: string;
|
|
15
|
-
}): Promise<RemoteEmbeddingTarget>;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
import { realpath } from "node:fs/promises";
|
|
3
|
-
import { resolve } from "node:path";
|
|
4
|
-
export async function canonicalizeWorkspaceRoots(roots) {
|
|
5
|
-
const canonical = await Promise.all(roots.map(async (root) => {
|
|
6
|
-
const absolute = resolve(root);
|
|
7
|
-
return await realpath(absolute).catch(() => absolute);
|
|
8
|
-
}));
|
|
9
|
-
return [...new Set(canonical)].sort();
|
|
10
|
-
}
|
|
11
|
-
export function workspaceFingerprint(roots) {
|
|
12
|
-
return sha256(JSON.stringify([...roots]));
|
|
13
|
-
}
|
|
14
|
-
export function remoteEmbeddingTargetFingerprint(input) {
|
|
15
|
-
return sha256(JSON.stringify([
|
|
16
|
-
input.workspaceFingerprint,
|
|
17
|
-
input.provider,
|
|
18
|
-
input.model,
|
|
19
|
-
input.endpoint,
|
|
20
|
-
]));
|
|
21
|
-
}
|
|
22
|
-
export async function createRemoteEmbeddingTarget(input) {
|
|
23
|
-
const workspaceRoots = await canonicalizeWorkspaceRoots(input.roots);
|
|
24
|
-
if (workspaceRoots.length === 0) {
|
|
25
|
-
throw new Error("Remote Embedding authorization requires a workspace root.");
|
|
26
|
-
}
|
|
27
|
-
const endpoint = input.endpoint.trim();
|
|
28
|
-
if (endpoint.length === 0) {
|
|
29
|
-
throw new Error("Remote Embedding authorization requires an endpoint.");
|
|
30
|
-
}
|
|
31
|
-
const rootFingerprint = workspaceFingerprint(workspaceRoots);
|
|
32
|
-
return {
|
|
33
|
-
workspaceRoots,
|
|
34
|
-
workspaceFingerprint: rootFingerprint,
|
|
35
|
-
provider: input.provider,
|
|
36
|
-
model: input.model,
|
|
37
|
-
endpoint,
|
|
38
|
-
targetFingerprint: remoteEmbeddingTargetFingerprint({
|
|
39
|
-
workspaceFingerprint: rootFingerprint,
|
|
40
|
-
provider: input.provider,
|
|
41
|
-
model: input.model,
|
|
42
|
-
endpoint,
|
|
43
|
-
}),
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
function sha256(value) {
|
|
47
|
-
return createHash("sha256").update(value).digest("hex");
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=target.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/authorization/target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,KAAwB;IAExB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC,CAAC,CACH,CAAC;IACF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAwB;IAC3D,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAKhD;IACC,OAAO,MAAM,CACX,IAAI,CAAC,SAAS,CAAC;QACb,KAAK,CAAC,oBAAoB;QAC1B,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,KAAK;QACX,KAAK,CAAC,QAAQ;KACf,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,KAKjD;IACC,MAAM,cAAc,GAAG,MAAM,0BAA0B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,eAAe,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAC7D,OAAO;QACL,cAAc;QACd,oBAAoB,EAAE,eAAe;QACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ;QACR,iBAAiB,EAAE,gCAAgC,CAAC;YAClD,oBAAoB,EAAE,eAAe;YACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ;SACT,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
export declare const REMOTE_EMBEDDING_CAPABILITY: "remote_embedding";
|
|
2
|
-
export type RemoteEmbeddingAuthorizationScope = "once" | "workspace";
|
|
3
|
-
export type RemoteEmbeddingOperation = "query" | "index" | "query_and_index";
|
|
4
|
-
export type RemoteEmbeddingDataDisclosure = {
|
|
5
|
-
queryText: boolean;
|
|
6
|
-
workspaceContent: "none" | "selected" | "changed" | "full";
|
|
7
|
-
};
|
|
8
|
-
export type RemoteEmbeddingTarget = {
|
|
9
|
-
workspaceRoots: readonly string[];
|
|
10
|
-
workspaceFingerprint: string;
|
|
11
|
-
provider: string;
|
|
12
|
-
model: string;
|
|
13
|
-
endpoint: string;
|
|
14
|
-
targetFingerprint: string;
|
|
15
|
-
};
|
|
16
|
-
export type RemoteEmbeddingRequest = {
|
|
17
|
-
provider: string;
|
|
18
|
-
model: string;
|
|
19
|
-
endpoint: string;
|
|
20
|
-
purpose: "document" | "query";
|
|
21
|
-
contentKinds: readonly ("text" | "image")[];
|
|
22
|
-
contentCount: number;
|
|
23
|
-
};
|
|
24
|
-
export type RemoteEmbeddingAuthorizationPlan = {
|
|
25
|
-
operation: RemoteEmbeddingOperation;
|
|
26
|
-
target: RemoteEmbeddingTarget;
|
|
27
|
-
disclosure: RemoteEmbeddingDataDisclosure;
|
|
28
|
-
reason: "query" | "index_create" | "index_update" | "index_rebuild";
|
|
29
|
-
grantPath: string;
|
|
30
|
-
};
|
|
31
|
-
export type RemoteEmbeddingOperationPermit = {
|
|
32
|
-
capability: typeof REMOTE_EMBEDDING_CAPABILITY;
|
|
33
|
-
scope: RemoteEmbeddingAuthorizationScope;
|
|
34
|
-
target: RemoteEmbeddingTarget;
|
|
35
|
-
issuedAt: number;
|
|
36
|
-
operationId: string;
|
|
37
|
-
};
|
|
38
|
-
export type RemoteEmbeddingWorkspaceGrant = {
|
|
39
|
-
version: 1;
|
|
40
|
-
id: string;
|
|
41
|
-
capability: typeof REMOTE_EMBEDDING_CAPABILITY;
|
|
42
|
-
scope: "workspace";
|
|
43
|
-
workspaceRoots: string[];
|
|
44
|
-
workspaceFingerprint: string;
|
|
45
|
-
provider: string;
|
|
46
|
-
model: string;
|
|
47
|
-
endpoint: string;
|
|
48
|
-
targetFingerprint: string;
|
|
49
|
-
grantedAt: number;
|
|
50
|
-
signature: string;
|
|
51
|
-
};
|
|
52
|
-
export type RemoteEmbeddingAuthorizationDocument = {
|
|
53
|
-
version: 1;
|
|
54
|
-
grants: RemoteEmbeddingWorkspaceGrant[];
|
|
55
|
-
};
|
|
56
|
-
export type RemoteEmbeddingAuthorizationStatus = {
|
|
57
|
-
path: string;
|
|
58
|
-
grants: Array<Omit<RemoteEmbeddingWorkspaceGrant, "signature"> & {
|
|
59
|
-
valid: boolean;
|
|
60
|
-
}>;
|
|
61
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/authorization/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAA2B,CAAC"}
|
package/dist/cli/args.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { ParsedArgs } from "./types.js";
|
|
2
|
-
export declare function parseArgs(args: readonly string[]): ParsedArgs;
|
|
3
|
-
export declare function parseDevice(value: string): "auto" | "cpu" | "metal" | "vulkan" | "cuda";
|
|
4
|
-
export declare function splitPathFilters(value: string): string[];
|
|
5
|
-
export declare function parseModifiedTime(value: string, option: string): number;
|