@zvec/zvec-grep 0.1.4 → 0.1.6
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 +86 -162
- package/README_CN.md +80 -162
- package/dist/authorization/index.d.ts +7 -0
- package/dist/authorization/index.js +7 -0
- package/dist/authorization/index.js.map +1 -0
- package/dist/authorization/manager.d.ts +8 -0
- package/dist/authorization/manager.js +19 -0
- package/dist/authorization/manager.js.map +1 -0
- package/dist/authorization/operation.d.ts +7 -0
- package/dist/authorization/operation.js +50 -0
- package/dist/authorization/operation.js.map +1 -0
- package/dist/authorization/planner.d.ts +21 -0
- package/dist/authorization/planner.js +97 -0
- package/dist/authorization/planner.js.map +1 -0
- package/dist/authorization/prompt.d.ts +11 -0
- package/dist/authorization/prompt.js +62 -0
- package/dist/authorization/prompt.js.map +1 -0
- package/dist/authorization/store.d.ts +20 -0
- package/dist/authorization/store.js +251 -0
- package/dist/authorization/store.js.map +1 -0
- package/dist/authorization/target.d.ts +15 -0
- package/dist/authorization/target.js +49 -0
- package/dist/authorization/target.js.map +1 -0
- package/dist/authorization/types.d.ts +61 -0
- package/dist/authorization/types.js +2 -0
- package/dist/authorization/types.js.map +1 -0
- package/dist/cli/args.d.ts +3 -0
- package/dist/cli/args.js +749 -201
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/auth.d.ts +21 -0
- package/dist/cli/auth.js +212 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/commands.d.ts +3 -1
- package/dist/cli/commands.js +529 -180
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/errors.js +7 -6
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/format/context.d.ts +1 -0
- package/dist/cli/format/context.js +270 -70
- package/dist/cli/format/context.js.map +1 -1
- package/dist/cli/format/debug.js +14 -16
- package/dist/cli/format/debug.js.map +1 -1
- package/dist/cli/format/highlight.js.map +1 -1
- package/dist/cli/format/progress.d.ts +4 -0
- package/dist/cli/format/progress.js +222 -44
- package/dist/cli/format/progress.js.map +1 -1
- package/dist/cli/format/range.js.map +1 -1
- package/dist/cli/format/status.d.ts +77 -6
- package/dist/cli/format/status.js +343 -114
- package/dist/cli/format/status.js.map +1 -1
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.js +368 -84
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.js +4 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/install.d.ts +4 -0
- package/dist/cli/install.js +845 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/managed-rg.d.ts +10 -0
- package/dist/cli/managed-rg.js +329 -0
- package/dist/cli/managed-rg.js.map +1 -0
- package/dist/cli/types.d.ts +40 -13
- package/dist/cli/types.js.map +1 -1
- package/dist/cli/version.js +3 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/client/daemon-client.d.ts +19 -0
- package/dist/client/daemon-client.js +180 -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 +76 -0
- package/dist/daemon/backend.js +1049 -0
- package/dist/daemon/backend.js.map +1 -0
- package/dist/daemon/change-set.d.ts +25 -0
- package/dist/daemon/change-set.js +101 -0
- package/dist/daemon/change-set.js.map +1 -0
- package/dist/daemon/config.d.ts +24 -0
- package/dist/daemon/config.js +88 -0
- package/dist/daemon/config.js.map +1 -0
- package/dist/daemon/errors.d.ts +5 -0
- package/dist/daemon/errors.js +11 -0
- package/dist/daemon/errors.js.map +1 -0
- package/dist/daemon/http-server.d.ts +30 -0
- package/dist/daemon/http-server.js +287 -0
- package/dist/daemon/http-server.js.map +1 -0
- package/dist/daemon/index-coordinator.d.ts +23 -0
- package/dist/daemon/index-coordinator.js +68 -0
- package/dist/daemon/index-coordinator.js.map +1 -0
- package/dist/daemon/job-scheduler.d.ts +70 -0
- package/dist/daemon/job-scheduler.js +366 -0
- package/dist/daemon/job-scheduler.js.map +1 -0
- package/dist/daemon/logger.d.ts +9 -0
- package/dist/daemon/logger.js +53 -0
- package/dist/daemon/logger.js.map +1 -0
- package/dist/daemon/model-pool.d.ts +45 -0
- package/dist/daemon/model-pool.js +187 -0
- package/dist/daemon/model-pool.js.map +1 -0
- package/dist/daemon/root-lease.d.ts +14 -0
- package/dist/daemon/root-lease.js +188 -0
- package/dist/daemon/root-lease.js.map +1 -0
- package/dist/daemon/root-runtime.d.ts +78 -0
- package/dist/daemon/root-runtime.js +333 -0
- package/dist/daemon/root-runtime.js.map +1 -0
- package/dist/daemon/runtime-manager.d.ts +45 -0
- package/dist/daemon/runtime-manager.js +243 -0
- package/dist/daemon/runtime-manager.js.map +1 -0
- package/dist/daemon/runtime.d.ts +12 -0
- package/dist/daemon/runtime.js +102 -0
- package/dist/daemon/runtime.js.map +1 -0
- package/dist/daemon/server-controller.d.ts +39 -0
- package/dist/daemon/server-controller.js +203 -0
- package/dist/daemon/server-controller.js.map +1 -0
- package/dist/daemon/watch-manager.d.ts +50 -0
- package/dist/daemon/watch-manager.js +293 -0
- package/dist/daemon/watch-manager.js.map +1 -0
- package/dist/daemon/workspace-read-session-cache.d.ts +31 -0
- package/dist/daemon/workspace-read-session-cache.js +115 -0
- package/dist/daemon/workspace-read-session-cache.js.map +1 -0
- package/dist/engine/config.d.ts +50 -0
- package/dist/engine/config.js +321 -0
- package/dist/engine/config.js.map +1 -0
- package/dist/engine/{errors/index.d.ts → errors.d.ts} +6 -1
- package/dist/engine/{errors/details.js → errors.js} +17 -4
- package/dist/engine/errors.js.map +1 -0
- package/dist/engine/extraction/code/adapter.d.ts +1 -1
- package/dist/engine/extraction/code/adapter.js.map +1 -1
- package/dist/engine/extraction/code/extractor.d.ts +5 -11
- package/dist/engine/extraction/code/extractor.js +184 -109
- package/dist/engine/extraction/code/extractor.js.map +1 -1
- package/dist/engine/extraction/code/families/c-family.js +13 -7
- package/dist/engine/extraction/code/families/c-family.js.map +1 -1
- package/dist/engine/extraction/code/families/js-ts.d.ts +1 -1
- package/dist/engine/extraction/code/families/js-ts.js +24 -18
- package/dist/engine/extraction/code/families/js-ts.js.map +1 -1
- package/dist/engine/extraction/code/families/metadata.d.ts +1 -1
- package/dist/engine/extraction/code/families/metadata.js +11 -8
- package/dist/engine/extraction/code/families/metadata.js.map +1 -1
- package/dist/engine/extraction/code/families/name-field.js +5 -5
- package/dist/engine/extraction/code/families/name-field.js.map +1 -1
- package/dist/engine/extraction/code/languages/c.js +1 -4
- package/dist/engine/extraction/code/languages/c.js.map +1 -1
- package/dist/engine/extraction/code/languages/cpp.js.map +1 -1
- package/dist/engine/extraction/code/languages/go.js +1 -3
- package/dist/engine/extraction/code/languages/go.js.map +1 -1
- package/dist/engine/extraction/code/languages/java.js.map +1 -1
- package/dist/engine/extraction/code/languages/javascript.js +1 -3
- package/dist/engine/extraction/code/languages/javascript.js.map +1 -1
- package/dist/engine/extraction/code/languages/python.js +5 -6
- package/dist/engine/extraction/code/languages/python.js.map +1 -1
- package/dist/engine/extraction/code/languages/rust.js +1 -5
- package/dist/engine/extraction/code/languages/rust.js.map +1 -1
- package/dist/engine/extraction/code/languages/typescript.js.map +1 -1
- package/dist/engine/extraction/code/tree-sitter/grammar.js.map +1 -0
- package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/nodes.js +2 -1
- package/dist/engine/extraction/code/tree-sitter/nodes.js.map +1 -0
- package/dist/engine/extraction/code/tree-sitter/parser.js.map +1 -0
- package/dist/engine/extraction/ids.js.map +1 -1
- 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 +3 -44
- package/dist/engine/extraction/index.js +1 -280
- package/dist/engine/extraction/index.js.map +1 -1
- package/dist/engine/extraction/markdown/extractor.d.ts +5 -11
- package/dist/engine/extraction/markdown/extractor.js +37 -16
- package/dist/engine/extraction/markdown/extractor.js.map +1 -1
- package/dist/engine/extraction/runtime.d.ts +4 -0
- package/dist/engine/extraction/runtime.js +26 -0
- package/dist/engine/extraction/runtime.js.map +1 -0
- package/dist/engine/extraction/source.d.ts +18 -0
- package/dist/engine/extraction/source.js +22 -0
- package/dist/engine/extraction/source.js.map +1 -0
- package/dist/engine/extraction/text/extractor.d.ts +7 -0
- package/dist/engine/extraction/text/extractor.js +168 -0
- package/dist/engine/extraction/text/extractor.js.map +1 -0
- package/dist/engine/extraction/types.d.ts +4 -0
- package/dist/engine/{models → extraction}/types.js.map +1 -1
- package/dist/engine/{files/file-type.d.ts → file-type.d.ts} +1 -1
- 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 +12 -0
- package/dist/engine/manifest.js +120 -0
- package/dist/engine/manifest.js.map +1 -0
- package/dist/engine/models/{providers/llama-cpp/embedding.d.ts → backends/llama-cpp.d.ts} +25 -20
- package/dist/engine/models/{providers/llama-cpp/embedding.js → backends/llama-cpp.js} +165 -113
- package/dist/engine/models/backends/llama-cpp.js.map +1 -0
- package/dist/engine/models/backends/model2vec.d.ts +57 -0
- package/dist/engine/models/backends/model2vec.js +332 -0
- package/dist/engine/models/backends/model2vec.js.map +1 -0
- package/dist/engine/models/backends/qwen.d.ts +44 -0
- package/dist/engine/models/{providers/qwen/embedding.js → backends/qwen.js} +168 -102
- package/dist/engine/models/backends/qwen.js.map +1 -0
- package/dist/engine/models/backends/transformers-js.d.ts +87 -0
- package/dist/engine/models/backends/transformers-js.js +316 -0
- package/dist/engine/models/backends/transformers-js.js.map +1 -0
- package/dist/engine/models/catalog.d.ts +188 -23
- package/dist/engine/models/catalog.js +172 -41
- package/dist/engine/models/catalog.js.map +1 -1
- package/dist/engine/models/download-progress.d.ts +15 -0
- package/dist/engine/models/download-progress.js +48 -0
- package/dist/engine/models/download-progress.js.map +1 -0
- package/dist/engine/models/embeddings.d.ts +58 -18
- package/dist/engine/models/embeddings.js +53 -29
- package/dist/engine/models/embeddings.js.map +1 -1
- package/dist/engine/models/factory.d.ts +2 -5
- package/dist/engine/models/factory.js +41 -56
- package/dist/engine/models/factory.js.map +1 -1
- package/dist/engine/models/index.d.ts +4 -6
- package/dist/engine/models/index.js +4 -4
- package/dist/engine/models/index.js.map +1 -1
- package/dist/engine/models/ranking.d.ts +7 -3
- package/dist/engine/models/resolution.d.ts +8 -0
- package/dist/engine/models/resolution.js +22 -0
- package/dist/engine/models/resolution.js.map +1 -0
- package/dist/engine/pipeline/indexing/index.d.ts +9 -7
- package/dist/engine/pipeline/indexing/index.js +399 -147
- package/dist/engine/pipeline/indexing/index.js.map +1 -1
- package/dist/engine/pipeline/indexing/root-paths.js +16 -19
- package/dist/engine/pipeline/indexing/root-paths.js.map +1 -1
- package/dist/engine/pipeline/indexing/scanner/index.d.ts +6 -1
- package/dist/engine/pipeline/indexing/scanner/index.js +318 -66
- package/dist/engine/pipeline/indexing/scanner/index.js.map +1 -1
- package/dist/engine/pipeline/search/index.d.ts +6 -6
- package/dist/engine/pipeline/search/index.js +76 -34
- package/dist/engine/pipeline/search/index.js.map +1 -1
- package/dist/engine/service/index.d.ts +3 -2
- package/dist/engine/service/index.js +1 -1
- package/dist/engine/service/index.js.map +1 -1
- package/dist/engine/service/lexical.d.ts +14 -15
- package/dist/engine/service/lexical.js +78 -119
- package/dist/engine/service/lexical.js.map +1 -1
- package/dist/engine/service/root.d.ts +13 -12
- package/dist/engine/service/root.js +35 -24
- package/dist/engine/service/root.js.map +1 -1
- package/dist/engine/service/structure-enrichment.js +29 -25
- package/dist/engine/service/structure-enrichment.js.map +1 -1
- package/dist/engine/service/types.d.ts +61 -35
- package/dist/engine/service/workspace-index.d.ts +24 -0
- package/dist/engine/service/workspace-index.js +151 -0
- package/dist/engine/service/workspace-index.js.map +1 -0
- package/dist/engine/service/zvec-grep.d.ts +12 -1
- package/dist/engine/service/zvec-grep.js +878 -544
- package/dist/engine/service/zvec-grep.js.map +1 -1
- package/dist/engine/storage/index.d.ts +8 -4
- package/dist/engine/storage/index.js +1 -1
- package/dist/engine/storage/index.js.map +1 -1
- package/dist/engine/storage/zvec.d.ts +10 -33
- package/dist/engine/storage/zvec.js +110 -49
- package/dist/engine/storage/zvec.js.map +1 -1
- package/dist/engine/types.d.ts +29 -23
- package/dist/engine/types.js +1 -1
- package/dist/engine/types.js.map +1 -1
- package/dist/engine/utils/daemon-lease.d.ts +17 -0
- package/dist/engine/utils/daemon-lease.js +175 -0
- package/dist/engine/utils/daemon-lease.js.map +1 -0
- package/dist/engine/utils/file-selection.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 +3 -0
- package/dist/engine/utils/glob.js +116 -18
- package/dist/engine/utils/glob.js.map +1 -1
- package/dist/engine/utils/hash.js.map +1 -1
- package/dist/engine/utils/json.d.ts +6 -2
- package/dist/engine/utils/json.js +50 -12
- package/dist/engine/utils/json.js.map +1 -1
- package/dist/engine/utils/lock.js +7 -7
- package/dist/engine/utils/lock.js.map +1 -1
- package/dist/engine/utils/path.js +2 -2
- package/dist/engine/utils/path.js.map +1 -1
- package/dist/engine/utils/timing.js.map +1 -1
- package/dist/index-progress.d.ts +10 -0
- package/dist/index-progress.js +159 -0
- package/dist/index-progress.js.map +1 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/http-transport.d.ts +27 -0
- package/dist/mcp/http-transport.js +182 -0
- package/dist/mcp/http-transport.js.map +1 -0
- package/dist/mcp/input-normalization.d.ts +38 -0
- package/dist/mcp/input-normalization.js +95 -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 +430 -0
- package/dist/mcp/schemas.js +447 -0
- package/dist/mcp/schemas.js.map +1 -0
- package/dist/mcp/tools.d.ts +150 -0
- package/dist/mcp/tools.js +448 -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/docs/01-agents.md +111 -0
- package/docs/02-cli.md +229 -0
- package/docs/03-mcp.md +167 -0
- package/docs/04-pipeline.md +218 -0
- package/docs/05-architecture.md +86 -0
- package/docs/06-server.md +210 -0
- package/docs/07-embedding.md +179 -0
- package/docs/08-roadmap.md +85 -0
- package/docs/README.md +53 -0
- package/package.json +43 -7
- package/skills/zvec-grep/SKILL.md +43 -123
- package/skills/zvec-grep/agents/openai.yaml +2 -2
- package/skills/zvec-grep/references/cli-fallback.md +85 -0
- package/dist/engine/collection/index.d.ts +0 -55
- package/dist/engine/collection/index.js +0 -710
- package/dist/engine/collection/index.js.map +0 -1
- package/dist/engine/errors/details.d.ts +0 -6
- package/dist/engine/errors/details.js.map +0 -1
- package/dist/engine/errors/index.js +0 -16
- package/dist/engine/errors/index.js.map +0 -1
- package/dist/engine/extraction/tree-sitter/grammar.js.map +0 -1
- package/dist/engine/extraction/tree-sitter/nodes.js.map +0 -1
- package/dist/engine/extraction/tree-sitter/parser.js.map +0 -1
- package/dist/engine/files/file-type.js.map +0 -1
- package/dist/engine/models/providers/index.d.ts +0 -2
- package/dist/engine/models/providers/index.js +0 -3
- package/dist/engine/models/providers/index.js.map +0 -1
- package/dist/engine/models/providers/llama-cpp/embedding.js.map +0 -1
- package/dist/engine/models/providers/llama-cpp/index.d.ts +0 -1
- package/dist/engine/models/providers/llama-cpp/index.js +0 -2
- package/dist/engine/models/providers/llama-cpp/index.js.map +0 -1
- package/dist/engine/models/providers/qwen/embedding.d.ts +0 -42
- package/dist/engine/models/providers/qwen/embedding.js.map +0 -1
- package/dist/engine/models/providers/qwen/index.d.ts +0 -1
- package/dist/engine/models/providers/qwen/index.js +0 -2
- package/dist/engine/models/providers/qwen/index.js.map +0 -1
- package/dist/engine/models/types.d.ts +0 -30
- /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/grammar.d.ts +0 -0
- /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/grammar.js +0 -0
- /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/nodes.d.ts +0 -0
- /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/parser.d.ts +0 -0
- /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/parser.js +0 -0
- /package/dist/engine/{models → extraction}/types.js +0 -0
- /package/dist/engine/{files/file-type.js → file-type.js} +0 -0
|
@@ -1,8 +1,79 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { WorkspaceIndexInfo, IndexResult, ZvecGrepInfoResult } from "../../index.js";
|
|
2
|
+
import type { RemoteEmbeddingAuthorizationStatus } from "../../authorization/types.js";
|
|
2
3
|
import type { CliOptions } from "../types.js";
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
export type WorkspaceIndexState = "ready" | "indexing" | "stale" | "failed" | "cancelled" | "disabled" | "unindexed" | "undecided";
|
|
5
|
+
type ServerRootPath = {
|
|
6
|
+
absolute_path: string;
|
|
7
|
+
recursive: boolean;
|
|
8
|
+
include?: string[];
|
|
9
|
+
exclude?: string[];
|
|
10
|
+
globs?: string[];
|
|
11
|
+
insensitive_globs?: string[];
|
|
12
|
+
file_types?: string[];
|
|
13
|
+
excluded_file_types?: string[];
|
|
14
|
+
hidden?: boolean;
|
|
15
|
+
no_ignore?: boolean;
|
|
16
|
+
ignore_files?: string[];
|
|
17
|
+
max_depth?: number;
|
|
18
|
+
max_file_size_bytes?: number;
|
|
19
|
+
follow?: boolean;
|
|
20
|
+
};
|
|
21
|
+
type ServerIndexInfo = {
|
|
22
|
+
root: string;
|
|
23
|
+
indexed: boolean;
|
|
24
|
+
index_policy: "enabled" | "disabled" | "undecided";
|
|
25
|
+
source: "index" | "unindexed";
|
|
26
|
+
persistent: {
|
|
27
|
+
home: string;
|
|
28
|
+
index_path: string;
|
|
29
|
+
workspace_index?: {
|
|
30
|
+
root_paths: ServerRootPath[];
|
|
31
|
+
embedding?: {
|
|
32
|
+
provider: string;
|
|
33
|
+
model: string;
|
|
34
|
+
dimension: number;
|
|
35
|
+
metric: string;
|
|
36
|
+
} | null;
|
|
37
|
+
};
|
|
38
|
+
files?: {
|
|
39
|
+
stored: number;
|
|
40
|
+
scanned?: number;
|
|
41
|
+
indexed: number;
|
|
42
|
+
pending: number;
|
|
43
|
+
failed: number;
|
|
44
|
+
added: number;
|
|
45
|
+
modified: number;
|
|
46
|
+
deleted: number;
|
|
47
|
+
unchanged: number;
|
|
48
|
+
entities: number;
|
|
49
|
+
truncated_fragments?: number;
|
|
50
|
+
};
|
|
51
|
+
suggestion?: string;
|
|
52
|
+
};
|
|
53
|
+
runtime?: {
|
|
54
|
+
watcher_active?: boolean;
|
|
55
|
+
dirty_revision?: number;
|
|
56
|
+
indexed_revision?: number;
|
|
57
|
+
active_job_id?: string;
|
|
58
|
+
job_state?: "queued" | "running" | "succeeded" | "failed" | "cancelled";
|
|
59
|
+
progress?: {
|
|
60
|
+
files_total?: number;
|
|
61
|
+
files_indexed?: number;
|
|
62
|
+
files_failed?: number;
|
|
63
|
+
};
|
|
64
|
+
completion?: {
|
|
65
|
+
completed: number;
|
|
66
|
+
total: number;
|
|
67
|
+
};
|
|
68
|
+
error?: {
|
|
69
|
+
code: string;
|
|
70
|
+
message: string;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
export declare function printRemoteEmbeddingAuthorizationStatus(root: string, status: RemoteEmbeddingAuthorizationStatus, options: CliOptions): void;
|
|
75
|
+
export declare function printWorkspaceInfo(info: ZvecGrepInfoResult, options: CliOptions): WorkspaceIndexState;
|
|
76
|
+
export declare function printServerIndexInfo(info: ServerIndexInfo, options: CliOptions): WorkspaceIndexState;
|
|
77
|
+
export declare function printIndexResult(label: string, result: IndexResult, options: CliOptions, rootPaths?: WorkspaceIndexInfo["rootPaths"]): void;
|
|
7
78
|
export declare function printIndexPathFilterTip(options: CliOptions): void;
|
|
8
|
-
export
|
|
79
|
+
export {};
|
|
@@ -1,80 +1,319 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { isAbsolute, relative, sep } from "node:path";
|
|
1
3
|
import { shouldUseColor } from "./highlight.js";
|
|
2
|
-
|
|
4
|
+
import { formatGreenProgressBar } from "./progress.js";
|
|
5
|
+
import { indexCompletionFromStatus, indexStatusNeedsRefresh as statusNeedsRefresh, } from "../../engine/index-status.js";
|
|
6
|
+
export function printRemoteEmbeddingAuthorizationStatus(root, status, options) {
|
|
3
7
|
const theme = createStatusTheme(options);
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
console.log(
|
|
8
|
+
const validGrants = status.grants.filter((grant) => grant.valid);
|
|
9
|
+
if (status.grants.length === 0) {
|
|
10
|
+
console.log(theme.warning("○ Remote Embedding is not authorized"));
|
|
7
11
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
printField(theme, "path", theme.path(info.path));
|
|
14
|
-
printField(theme, "policy", info.indexPolicy ?? "enabled");
|
|
15
|
-
if (info.embedding) {
|
|
16
|
-
printField(theme, "embedding", `${info.embedding.provider}/${info.embedding.model}`);
|
|
12
|
+
else if (validGrants.length === status.grants.length) {
|
|
13
|
+
console.log(theme.success("✓ Remote Embedding is authorized"));
|
|
14
|
+
}
|
|
15
|
+
else if (validGrants.length === 0) {
|
|
16
|
+
console.log(theme.danger("✗ Remote Embedding authorization is invalid"));
|
|
17
17
|
}
|
|
18
18
|
else {
|
|
19
|
-
|
|
19
|
+
console.log(theme.warning("! Remote Embedding authorization needs attention"));
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
if (status) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
console.log(` ${theme.path(formatDisplayPath(root))}`);
|
|
22
|
+
if (status.grants.length === 0) {
|
|
23
|
+
console.log("");
|
|
24
|
+
console.log(theme.accent("Run"));
|
|
25
|
+
console.log(` ${theme.path("zg auth grant --capability embedding --scope workspace")}`);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
console.log("");
|
|
29
|
+
console.log(theme.accent("Authorization"));
|
|
30
|
+
status.grants.forEach((grant, index) => {
|
|
31
|
+
if (index > 0)
|
|
32
|
+
console.log("");
|
|
33
|
+
for (const line of formatStatusField(theme, "Scope", grant.valid
|
|
34
|
+
? theme.success("Workspace")
|
|
35
|
+
: theme.danger("Invalid Workspace grant"))) {
|
|
36
|
+
console.log(line);
|
|
37
|
+
}
|
|
38
|
+
for (const line of formatStatusField(theme, "Target", `${grant.provider}/${grant.model}`)) {
|
|
39
|
+
console.log(line);
|
|
26
40
|
}
|
|
27
|
-
|
|
41
|
+
for (const line of formatStatusField(theme, "Endpoint", formatEndpointHost(grant.endpoint))) {
|
|
42
|
+
console.log(line);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
console.log("");
|
|
46
|
+
console.log(theme.accent("Storage"));
|
|
47
|
+
for (const line of formatStatusField(theme, "Grant", theme.path(formatStoragePath(status.path, root)))) {
|
|
48
|
+
console.log(line);
|
|
28
49
|
}
|
|
29
50
|
}
|
|
30
|
-
export function
|
|
51
|
+
export function printWorkspaceInfo(info, options) {
|
|
52
|
+
const theme = createStatusTheme(options);
|
|
53
|
+
const status = info.status ?? undefined;
|
|
54
|
+
const completion = indexCompletionFromStatus(status);
|
|
55
|
+
const suggestion = status && statusNeedsRefresh(status) ? "zg index" : info.suggestion;
|
|
56
|
+
const state = workspaceState(info);
|
|
57
|
+
printWorkspaceIndexStatus(theme, {
|
|
58
|
+
root: info.root,
|
|
59
|
+
indexPath: info.indexPath,
|
|
60
|
+
policy: info.indexPolicy,
|
|
61
|
+
state,
|
|
62
|
+
embedding: info.workspaceIndex?.embedding,
|
|
63
|
+
roots: info.workspaceIndex?.rootPaths,
|
|
64
|
+
files: status
|
|
65
|
+
? {
|
|
66
|
+
indexed: completion?.completed ?? 0,
|
|
67
|
+
total: completion?.total ?? 0,
|
|
68
|
+
entities: status.entitiesIndexed ?? 0,
|
|
69
|
+
truncated: status.fragmentsTruncated ?? 0,
|
|
70
|
+
pending: status.filesPending,
|
|
71
|
+
failed: status.filesFailed,
|
|
72
|
+
}
|
|
73
|
+
: undefined,
|
|
74
|
+
changes: status
|
|
75
|
+
? {
|
|
76
|
+
added: status.filesAdded,
|
|
77
|
+
modified: status.filesModified,
|
|
78
|
+
deleted: status.filesDeleted,
|
|
79
|
+
}
|
|
80
|
+
: undefined,
|
|
81
|
+
suggestion,
|
|
82
|
+
failedReasons: status
|
|
83
|
+
? summarizeFailedFileReasons(status.failedFiles, "zg index")
|
|
84
|
+
: undefined,
|
|
85
|
+
});
|
|
86
|
+
return state;
|
|
87
|
+
}
|
|
88
|
+
export function printServerIndexInfo(info, options) {
|
|
31
89
|
const theme = createStatusTheme(options);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
90
|
+
const state = serverIndexState(info);
|
|
91
|
+
const embedding = info.persistent.workspace_index?.embedding;
|
|
92
|
+
const roots = info.persistent.workspace_index?.root_paths.map(mapServerRootPath);
|
|
93
|
+
const files = info.persistent.files;
|
|
94
|
+
const completion = info.runtime?.completion;
|
|
95
|
+
printWorkspaceIndexStatus(theme, {
|
|
96
|
+
root: info.root,
|
|
97
|
+
indexPath: info.persistent.index_path,
|
|
98
|
+
policy: info.index_policy,
|
|
99
|
+
state,
|
|
100
|
+
embedding,
|
|
101
|
+
roots,
|
|
102
|
+
files: files
|
|
103
|
+
? {
|
|
104
|
+
indexed: completion?.completed ?? files.unchanged,
|
|
105
|
+
total: completion?.total ??
|
|
106
|
+
files.scanned ??
|
|
107
|
+
Math.max(0, files.stored + files.added - files.deleted),
|
|
108
|
+
entities: files.entities,
|
|
109
|
+
truncated: files.truncated_fragments ?? 0,
|
|
110
|
+
pending: files.pending,
|
|
111
|
+
failed: info.runtime?.progress?.files_failed ?? files.failed,
|
|
112
|
+
}
|
|
113
|
+
: undefined,
|
|
114
|
+
changes: files
|
|
115
|
+
? {
|
|
116
|
+
added: files.added,
|
|
117
|
+
modified: files.modified,
|
|
118
|
+
deleted: files.deleted,
|
|
119
|
+
}
|
|
120
|
+
: undefined,
|
|
121
|
+
suggestion: info.persistent.suggestion,
|
|
122
|
+
error: info.runtime?.error,
|
|
123
|
+
});
|
|
124
|
+
return state;
|
|
125
|
+
}
|
|
126
|
+
function printWorkspaceIndexStatus(theme, view) {
|
|
127
|
+
console.log(formatWorkspaceStatusHeading(theme, view.state));
|
|
128
|
+
console.log(` ${theme.path(formatDisplayPath(view.root))}`);
|
|
129
|
+
const sections = [];
|
|
130
|
+
if (view.files) {
|
|
131
|
+
const { indexed, total, entities, truncated, pending, failed } = view.files;
|
|
132
|
+
const percent = total === 0
|
|
133
|
+
? 0
|
|
134
|
+
: Math.min(100, Math.round((Math.max(indexed, 0) / total) * 100));
|
|
135
|
+
const bar = formatGreenProgressBar(indexed, total, 20, theme.color);
|
|
136
|
+
const summary = [
|
|
137
|
+
...formatStatusField(theme, "Coverage", `${bar} ${String(percent).padStart(3)}% ${formatCount(indexed)} / ${formatCount(total)} files`),
|
|
138
|
+
...formatStatusField(theme, "Entities", formatCount(entities)),
|
|
139
|
+
...formatStatusField(theme, "Truncated", truncated > 0
|
|
140
|
+
? theme.warning(`${formatCount(truncated)} fragments`)
|
|
141
|
+
: theme.muted("0 fragments")),
|
|
142
|
+
...formatStatusField(theme, "Queue", `${statusCount(theme, pending, "pending", "warning")} ${theme.muted("·")} ${statusCount(theme, failed, "failed", "danger")}`),
|
|
143
|
+
];
|
|
144
|
+
if (view.changes && changedTotal(view.changes) > 0) {
|
|
145
|
+
summary.push(...formatStatusField(theme, "Changes", `${theme.warning(`${formatCount(view.changes.added)} added`)} ${theme.muted("·")} ${theme.warning(`${formatCount(view.changes.modified)} modified`)} ${theme.muted("·")} ${theme.warning(`${formatCount(view.changes.deleted)} deleted`)}`));
|
|
146
|
+
}
|
|
147
|
+
sections.push(summary);
|
|
148
|
+
}
|
|
149
|
+
if (view.embedding !== undefined) {
|
|
150
|
+
sections.push(formatStatusField(theme, "Embedding", view.embedding
|
|
151
|
+
? [
|
|
152
|
+
`${view.embedding.provider}/${view.embedding.model}`,
|
|
153
|
+
`${formatCount(view.embedding.dimension)} dimensions ${theme.muted("·")} ${view.embedding.metric}`,
|
|
154
|
+
]
|
|
155
|
+
: theme.warning("Not configured")));
|
|
43
156
|
}
|
|
44
|
-
|
|
45
|
-
|
|
157
|
+
const storage = formatStatusField(theme, "Storage", theme.path(formatStoragePath(view.indexPath, view.root)));
|
|
158
|
+
if (view.roots && shouldShowRoots(view.root, view.roots)) {
|
|
159
|
+
storage.push(...formatStatusField(theme, "Roots", view.roots.map((root) => theme.path(formatDisplayRootPath(root)))));
|
|
46
160
|
}
|
|
47
|
-
if (
|
|
48
|
-
|
|
161
|
+
if (view.policy !== "enabled") {
|
|
162
|
+
storage.push(...formatStatusField(theme, "Policy", view.policy === "disabled"
|
|
163
|
+
? theme.warning(view.policy)
|
|
164
|
+
: theme.muted(view.policy)));
|
|
49
165
|
}
|
|
50
|
-
|
|
51
|
-
|
|
166
|
+
sections.push(storage);
|
|
167
|
+
const diagnostics = [];
|
|
168
|
+
if (view.error) {
|
|
169
|
+
diagnostics.push(...formatStatusField(theme, "Error", [
|
|
170
|
+
theme.danger(view.error.code),
|
|
171
|
+
theme.danger(view.error.message),
|
|
172
|
+
]));
|
|
52
173
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
: info.suggestion;
|
|
56
|
-
if (suggestion) {
|
|
57
|
-
printField(theme, "suggestion", theme.accent(suggestion));
|
|
174
|
+
if (view.failedReasons) {
|
|
175
|
+
diagnostics.push(...formatStatusField(theme, "Problem", theme.danger(view.failedReasons)));
|
|
58
176
|
}
|
|
59
|
-
if (
|
|
60
|
-
|
|
177
|
+
if (view.suggestion) {
|
|
178
|
+
diagnostics.push(...formatStatusField(theme, "Next", theme.accent(view.suggestion)));
|
|
61
179
|
}
|
|
180
|
+
if (diagnostics.length > 0) {
|
|
181
|
+
sections.push(diagnostics);
|
|
182
|
+
}
|
|
183
|
+
for (const section of sections) {
|
|
184
|
+
if (section.length === 0)
|
|
185
|
+
continue;
|
|
186
|
+
console.log("");
|
|
187
|
+
for (const line of section)
|
|
188
|
+
console.log(line);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
function formatWorkspaceStatusHeading(theme, state) {
|
|
192
|
+
switch (state) {
|
|
193
|
+
case "ready":
|
|
194
|
+
return theme.success("✓ Workspace index is ready");
|
|
195
|
+
case "indexing":
|
|
196
|
+
return theme.warning("◐ Workspace index is updating");
|
|
197
|
+
case "stale":
|
|
198
|
+
return theme.warning("! Workspace index needs an update");
|
|
199
|
+
case "failed":
|
|
200
|
+
return theme.danger("✗ Workspace index failed");
|
|
201
|
+
case "cancelled":
|
|
202
|
+
return theme.warning("! Workspace index update was cancelled");
|
|
203
|
+
case "disabled":
|
|
204
|
+
return theme.warning("○ Workspace indexing is disabled");
|
|
205
|
+
case "unindexed":
|
|
206
|
+
return theme.warning("○ Workspace index is not created");
|
|
207
|
+
case "undecided":
|
|
208
|
+
return theme.warning("? Workspace index is not configured");
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function formatStatusField(theme, label, value) {
|
|
212
|
+
const values = typeof value === "string" ? [value] : value;
|
|
213
|
+
const labelWidth = 12;
|
|
214
|
+
const continuation = ` ${" ".repeat(labelWidth)}`;
|
|
215
|
+
return values.map((line, index) => index === 0
|
|
216
|
+
? ` ${theme.label(label.padEnd(labelWidth))}${line}`
|
|
217
|
+
: `${continuation}${line}`);
|
|
218
|
+
}
|
|
219
|
+
function statusCount(theme, count, label, tone) {
|
|
220
|
+
const value = `${formatCount(count)} ${label}`;
|
|
221
|
+
return count > 0 ? theme[tone](value) : theme.muted(value);
|
|
62
222
|
}
|
|
63
|
-
function
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
223
|
+
function changedTotal(changes) {
|
|
224
|
+
return changes.added + changes.modified + changes.deleted;
|
|
225
|
+
}
|
|
226
|
+
function serverIndexState(info) {
|
|
227
|
+
if (info.index_policy === "disabled")
|
|
228
|
+
return "disabled";
|
|
229
|
+
if (info.runtime?.job_state === "failed" || info.runtime?.error) {
|
|
230
|
+
return "failed";
|
|
67
231
|
}
|
|
68
|
-
if (
|
|
69
|
-
return
|
|
232
|
+
if (info.runtime?.job_state === "cancelled")
|
|
233
|
+
return "cancelled";
|
|
234
|
+
if (info.runtime?.job_state === "queued" ||
|
|
235
|
+
info.runtime?.job_state === "running") {
|
|
236
|
+
return "indexing";
|
|
70
237
|
}
|
|
71
|
-
|
|
238
|
+
if (info.runtime?.dirty_revision !== undefined &&
|
|
239
|
+
info.runtime.indexed_revision !== undefined &&
|
|
240
|
+
info.runtime.dirty_revision > info.runtime.indexed_revision) {
|
|
241
|
+
return "stale";
|
|
242
|
+
}
|
|
243
|
+
if ((info.persistent.files?.failed ?? 0) > 0)
|
|
244
|
+
return "failed";
|
|
245
|
+
if ((info.persistent.files?.pending ?? 0) > 0 ||
|
|
246
|
+
serverChangedTotal(info.persistent.files) > 0) {
|
|
247
|
+
return "stale";
|
|
248
|
+
}
|
|
249
|
+
if (info.indexed)
|
|
250
|
+
return "ready";
|
|
251
|
+
return info.index_policy === "undecided" ? "undecided" : "unindexed";
|
|
252
|
+
}
|
|
253
|
+
function serverChangedTotal(files) {
|
|
254
|
+
return (files?.added ?? 0) + (files?.modified ?? 0) + (files?.deleted ?? 0);
|
|
255
|
+
}
|
|
256
|
+
function mapServerRootPath(root) {
|
|
257
|
+
return {
|
|
258
|
+
absolutePath: root.absolute_path,
|
|
259
|
+
recursive: root.recursive,
|
|
260
|
+
include: root.include,
|
|
261
|
+
exclude: root.exclude,
|
|
262
|
+
globs: root.globs,
|
|
263
|
+
insensitiveGlobs: root.insensitive_globs,
|
|
264
|
+
fileTypes: root.file_types,
|
|
265
|
+
excludedFileTypes: root.excluded_file_types,
|
|
266
|
+
hidden: root.hidden,
|
|
267
|
+
noIgnore: root.no_ignore,
|
|
268
|
+
ignoreFiles: root.ignore_files,
|
|
269
|
+
maxDepth: root.max_depth,
|
|
270
|
+
maxFileSizeBytes: root.max_file_size_bytes,
|
|
271
|
+
follow: root.follow,
|
|
272
|
+
};
|
|
72
273
|
}
|
|
73
|
-
function
|
|
274
|
+
function shouldShowRoots(workspaceRoot, roots) {
|
|
275
|
+
return (roots.length > 1 ||
|
|
276
|
+
roots.some((root) => root.absolutePath !== workspaceRoot ||
|
|
277
|
+
formatRootPath(root) !== root.absolutePath));
|
|
278
|
+
}
|
|
279
|
+
function formatDisplayRootPath(root) {
|
|
280
|
+
const formatted = formatRootPath(root);
|
|
281
|
+
return `${formatDisplayPath(root.absolutePath)}${formatted.slice(root.absolutePath.length)}`;
|
|
282
|
+
}
|
|
283
|
+
function formatStoragePath(indexPath, workspaceRoot) {
|
|
284
|
+
const localPath = relative(workspaceRoot, indexPath);
|
|
285
|
+
if (localPath.length > 0 &&
|
|
286
|
+
!isAbsolute(localPath) &&
|
|
287
|
+
localPath !== ".." &&
|
|
288
|
+
!localPath.startsWith(`..${sep}`)) {
|
|
289
|
+
return localPath;
|
|
290
|
+
}
|
|
291
|
+
return formatDisplayPath(indexPath);
|
|
292
|
+
}
|
|
293
|
+
function formatDisplayPath(path) {
|
|
294
|
+
const home = homedir();
|
|
295
|
+
if (path === home)
|
|
296
|
+
return "~";
|
|
297
|
+
return path.startsWith(`${home}${sep}`)
|
|
298
|
+
? `~${path.slice(home.length)}`
|
|
299
|
+
: path;
|
|
300
|
+
}
|
|
301
|
+
function formatEndpointHost(endpoint) {
|
|
302
|
+
try {
|
|
303
|
+
return new URL(endpoint).host || endpoint;
|
|
304
|
+
}
|
|
305
|
+
catch {
|
|
306
|
+
return endpoint;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
function formatCount(value) {
|
|
310
|
+
return value.toLocaleString("en-US");
|
|
311
|
+
}
|
|
312
|
+
function workspaceState(info) {
|
|
74
313
|
if (info.indexPolicy === "disabled") {
|
|
75
314
|
return "disabled";
|
|
76
315
|
}
|
|
77
|
-
if (!info.
|
|
316
|
+
if (!info.workspaceIndex) {
|
|
78
317
|
return "undecided";
|
|
79
318
|
}
|
|
80
319
|
if (!info.indexed) {
|
|
@@ -91,13 +330,13 @@ function anonymousState(info) {
|
|
|
91
330
|
export function printIndexResult(label, result, options, rootPaths) {
|
|
92
331
|
const theme = createStatusTheme(options);
|
|
93
332
|
console.log(theme.accent(label));
|
|
94
|
-
printField(theme, "files", `${result.filesScanned} scanned, `
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
333
|
+
printField(theme, "files", `${result.filesScanned} scanned, ` +
|
|
334
|
+
`${theme.success(String(result.filesAdded))} added, ` +
|
|
335
|
+
`${theme.warning(String(result.filesModified))} modified, ` +
|
|
336
|
+
`${theme.warning(String(result.filesPending))} retried, ` +
|
|
337
|
+
`${theme.muted(String(result.filesUnchanged))} unchanged, ` +
|
|
338
|
+
`${theme.muted(String(result.filesDeleted))} deleted, ` +
|
|
339
|
+
failedCount(theme, result.filesFailed));
|
|
101
340
|
printField(theme, "entities", String(result.entitiesCreated));
|
|
102
341
|
printField(theme, "duration", `${formatDuration(result.durationMs)} ${theme.muted(`(${result.durationMs}ms)`)}`);
|
|
103
342
|
if (rootPaths && rootPaths.length > 0) {
|
|
@@ -106,53 +345,23 @@ export function printIndexResult(label, result, options, rootPaths) {
|
|
|
106
345
|
printQueryFilters(theme, options);
|
|
107
346
|
}
|
|
108
347
|
export function printIndexPathFilterTip(options) {
|
|
109
|
-
if (options.
|
|
348
|
+
if (options.globs !== undefined ||
|
|
349
|
+
options.insensitiveGlobs !== undefined ||
|
|
350
|
+
options.fileTypes !== undefined ||
|
|
351
|
+
options.excludedFileTypes !== undefined) {
|
|
110
352
|
return;
|
|
111
353
|
}
|
|
112
354
|
const theme = createStatusTheme(options);
|
|
113
|
-
printField(theme, "tip", theme.warning("Default indexing skips common noise. For large or remote-embedding indexes, inspect this long-lived workspace and choose
|
|
114
|
-
}
|
|
115
|
-
export function printCollectionRemoveResult(name, removed, options) {
|
|
116
|
-
const theme = createStatusTheme(options);
|
|
117
|
-
console.log(removed
|
|
118
|
-
? `${theme.success("Removed")} collection ${theme.accent(name)}`
|
|
119
|
-
: `${theme.warning("Collection not found")}: ${theme.accent(name)}`);
|
|
120
|
-
}
|
|
121
|
-
function printIndexStatus(theme, status) {
|
|
122
|
-
printField(theme, "files", `${status.filesIndexed}/${status.filesScanned} indexed`);
|
|
123
|
-
printField(theme, "entities", String(status.entitiesIndexed ?? 0));
|
|
124
|
-
printField(theme, "fresh", statusNeedsRefresh(status)
|
|
125
|
-
? theme.warning("no")
|
|
126
|
-
: theme.success("yes"));
|
|
127
|
-
printField(theme, "changed", changedCount(theme, status));
|
|
128
|
-
printField(theme, "pending", status.filesPending > 0
|
|
129
|
-
? theme.warning(String(status.filesPending))
|
|
130
|
-
: theme.success(String(status.filesPending)));
|
|
131
|
-
printField(theme, "failed", failedCount(theme, status.filesFailed));
|
|
132
|
-
}
|
|
133
|
-
function statusNeedsRefresh(status) {
|
|
134
|
-
return status.filesAdded > 0
|
|
135
|
-
|| status.filesModified > 0
|
|
136
|
-
|| status.filesDeleted > 0
|
|
137
|
-
|| status.filesPending > 0
|
|
138
|
-
|| status.filesFailed > 0;
|
|
139
|
-
}
|
|
140
|
-
function printFailedFilesNote(theme, status, retryCommand) {
|
|
141
|
-
if (status.filesFailed === 0) {
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
printField(theme, "note", theme.warning(`retry ${retryCommand}; if failures persist, fix failed files or embedding configuration`));
|
|
145
|
-
const reasons = summarizeFailedFileReasons(status.failedFiles, retryCommand);
|
|
146
|
-
if (reasons) {
|
|
147
|
-
printField(theme, "failed_reasons", theme.danger(reasons));
|
|
148
|
-
}
|
|
355
|
+
printField(theme, "tip", theme.warning("Default indexing skips common noise. For large or remote-embedding indexes, inspect this long-lived workspace and choose focused -g/--glob and -t/--type filters."));
|
|
149
356
|
}
|
|
150
357
|
function summarizeFailedFileReasons(files, retryCommand) {
|
|
151
358
|
const withReasons = files.filter((file) => file.indexStatus?.error);
|
|
152
359
|
if (withReasons.length === 0) {
|
|
153
360
|
return undefined;
|
|
154
361
|
}
|
|
155
|
-
const shown = withReasons
|
|
362
|
+
const shown = withReasons
|
|
363
|
+
.slice(0, 3)
|
|
364
|
+
.map((file) => `${file.relativePath}: ${clipReason(explainStoredFailureReason(file.indexStatus.error, retryCommand))}`);
|
|
156
365
|
const remaining = withReasons.length - shown.length;
|
|
157
366
|
return remaining > 0
|
|
158
367
|
? `${shown.join("; ")}; and ${remaining} more`
|
|
@@ -172,11 +381,6 @@ function clipReason(reason) {
|
|
|
172
381
|
? `${compact.slice(0, maxLength - 3)}...`
|
|
173
382
|
: compact;
|
|
174
383
|
}
|
|
175
|
-
function changedCount(theme, status) {
|
|
176
|
-
const count = status.filesAdded + status.filesModified + status.filesDeleted;
|
|
177
|
-
const value = `${status.filesAdded} added, ${status.filesModified} modified, ${status.filesDeleted} deleted`;
|
|
178
|
-
return count > 0 ? theme.warning(value) : theme.success(value);
|
|
179
|
-
}
|
|
180
384
|
function printQueryFilters(theme, options) {
|
|
181
385
|
if (options.modifiedAfter !== undefined) {
|
|
182
386
|
printField(theme, "modified_after", formatTimeFilter(options.modifiedAfter));
|
|
@@ -189,11 +393,15 @@ function printField(theme, label, value) {
|
|
|
189
393
|
console.log(`${theme.label(label)}\t${value}`);
|
|
190
394
|
}
|
|
191
395
|
function failedCount(theme, count) {
|
|
192
|
-
return count > 0
|
|
396
|
+
return count > 0
|
|
397
|
+
? theme.danger(`${count} failed`)
|
|
398
|
+
: theme.success(`${count} failed`);
|
|
193
399
|
}
|
|
194
400
|
function createStatusTheme(options) {
|
|
195
|
-
|
|
401
|
+
const color = shouldUseColor(options);
|
|
402
|
+
if (!color) {
|
|
196
403
|
return {
|
|
404
|
+
color,
|
|
197
405
|
label: identity,
|
|
198
406
|
path: identity,
|
|
199
407
|
success: identity,
|
|
@@ -204,6 +412,7 @@ function createStatusTheme(options) {
|
|
|
204
412
|
};
|
|
205
413
|
}
|
|
206
414
|
return {
|
|
415
|
+
color,
|
|
207
416
|
label: (value) => `\x1b[2m${value}\x1b[0m`,
|
|
208
417
|
path: (value) => `\x1b[36m${value}\x1b[0m`,
|
|
209
418
|
success: (value) => `\x1b[32m${value}\x1b[0m`,
|
|
@@ -215,8 +424,34 @@ function createStatusTheme(options) {
|
|
|
215
424
|
}
|
|
216
425
|
function formatRootPath(root) {
|
|
217
426
|
const filters = [
|
|
218
|
-
root.include && root.include.length > 0
|
|
219
|
-
|
|
427
|
+
root.include && root.include.length > 0
|
|
428
|
+
? `include=${root.include.join("|")}`
|
|
429
|
+
: undefined,
|
|
430
|
+
root.exclude && root.exclude.length > 0
|
|
431
|
+
? `exclude=${root.exclude.join("|")}`
|
|
432
|
+
: undefined,
|
|
433
|
+
root.globs && root.globs.length > 0
|
|
434
|
+
? `glob=${root.globs.join("|")}`
|
|
435
|
+
: undefined,
|
|
436
|
+
root.insensitiveGlobs && root.insensitiveGlobs.length > 0
|
|
437
|
+
? `iglob=${root.insensitiveGlobs.join("|")}`
|
|
438
|
+
: undefined,
|
|
439
|
+
root.fileTypes && root.fileTypes.length > 0
|
|
440
|
+
? `type=${root.fileTypes.join("|")}`
|
|
441
|
+
: undefined,
|
|
442
|
+
root.excludedFileTypes && root.excludedFileTypes.length > 0
|
|
443
|
+
? `type-not=${root.excludedFileTypes.join("|")}`
|
|
444
|
+
: undefined,
|
|
445
|
+
root.hidden ? "hidden" : undefined,
|
|
446
|
+
root.noIgnore ? "no-ignore" : undefined,
|
|
447
|
+
root.ignoreFiles && root.ignoreFiles.length > 0
|
|
448
|
+
? `ignore-file=${root.ignoreFiles.join("|")}`
|
|
449
|
+
: undefined,
|
|
450
|
+
root.maxDepth !== undefined ? `max-depth=${root.maxDepth}` : undefined,
|
|
451
|
+
root.maxFileSizeBytes !== undefined
|
|
452
|
+
? `max-filesize=${root.maxFileSizeBytes}`
|
|
453
|
+
: undefined,
|
|
454
|
+
root.follow ? "follow" : undefined,
|
|
220
455
|
].filter((part) => part !== undefined);
|
|
221
456
|
return filters.length > 0
|
|
222
457
|
? `${root.absolutePath} (${filters.join(" ")})`
|
|
@@ -240,10 +475,4 @@ function formatTimeFilter(value) {
|
|
|
240
475
|
function identity(value) {
|
|
241
476
|
return value;
|
|
242
477
|
}
|
|
243
|
-
function shellArg(value) {
|
|
244
|
-
if (/^[A-Za-z0-9_./:=@+-]+$/.test(value)) {
|
|
245
|
-
return value;
|
|
246
|
-
}
|
|
247
|
-
return `'${value.replaceAll("'", "'\\''")}'`;
|
|
248
|
-
}
|
|
249
478
|
//# sourceMappingURL=status.js.map
|